From cc0b9b204c4bf5d0362621c64d1bacd6db8209d1 Mon Sep 17 00:00:00 2001 From: Sheldon Kwok Date: Tue, 17 Jul 2018 02:35:43 -0700 Subject: [PATCH] Update Godeps --- cluster-autoscaler/Godeps/Godeps.json | 3181 ++-- .../github.com/Microsoft/hcsshim/README.md | 33 +- .../github.com/Microsoft/hcsshim/baselayer.go | 54 +- .../github.com/Microsoft/hcsshim/container.go | 6 + .../github.com/Microsoft/hcsshim/errors.go | 22 + .../github.com/Microsoft/hcsshim/hcsshim.go | 2 +- .../Microsoft/hcsshim/hnsendpoint.go | 641 +- .../Microsoft/hcsshim/hnsnetwork.go | 283 +- .../github.com/Microsoft/hcsshim/hnspolicy.go | 189 +- .../Microsoft/hcsshim/hnspolicylist.go | 400 +- .../Microsoft/hcsshim/importlayer.go | 40 +- .../github.com/Microsoft/hcsshim/interface.go | 11 +- .../github.com/Microsoft/hcsshim/legacy.go | 306 +- .../github.com/Microsoft/hcsshim/legacy18.go | 7 + .../github.com/Microsoft/hcsshim/legacy19.go | 7 + .../github.com/Microsoft/hcsshim/safeopen.go | 427 + .../github.com/Microsoft/hcsshim/zhcsshim.go | 38 + .../github.com/abbot/go-http-auth/.gitignore | 5 - .../github.com/abbot/go-http-auth/LICENSE | 178 - .../github.com/abbot/go-http-auth/Makefile | 12 - .../github.com/abbot/go-http-auth/README.md | 70 - .../github.com/abbot/go-http-auth/auth.go | 48 - .../github.com/abbot/go-http-auth/basic.go | 88 - .../github.com/abbot/go-http-auth/digest.go | 226 - .../github.com/abbot/go-http-auth/md5crypt.go | 92 - .../github.com/abbot/go-http-auth/misc.go | 30 - .../abbot/go-http-auth/test.htdigest | 1 - .../abbot/go-http-auth/test.htpasswd | 2 - .../github.com/abbot/go-http-auth/users.go | 136 - .../aws/aws-sdk-go/aws/client/client.go | 10 +- .../aws-sdk-go/aws/client/default_retryer.go | 76 +- .../aws/aws-sdk-go/aws/client/logger.go | 106 +- .../aws/client/metadata/client_info.go | 1 + .../github.com/aws/aws-sdk-go/aws/config.go | 24 +- .../aws-sdk-go/aws/corehandlers/handlers.go | 28 +- .../aws-sdk-go/aws/corehandlers/user_agent.go | 37 + .../aws-sdk-go/aws/credentials/credentials.go | 18 +- .../github.com/aws/aws-sdk-go/aws/csm/doc.go | 46 + .../aws/aws-sdk-go/aws/csm/enable.go | 67 + .../aws/aws-sdk-go/aws/csm/metric.go | 51 + .../aws/aws-sdk-go/aws/csm/metricChan.go | 54 + .../aws/aws-sdk-go/aws/csm/reporter.go | 230 + .../aws/aws-sdk-go/aws/defaults/defaults.go | 35 +- .../aws/aws-sdk-go/aws/ec2metadata/service.go | 24 + .../aws/aws-sdk-go/aws/endpoints/defaults.go | 835 +- .../aws/aws-sdk-go/aws/endpoints/endpoints.go | 22 +- .../aws/aws-sdk-go/aws/endpoints/v3model.go | 12 +- .../github.com/aws/aws-sdk-go/aws/logger.go | 6 + .../aws/aws-sdk-go/aws/request/handlers.go | 18 + .../aws-sdk-go/aws/request/offset_reader.go | 4 +- .../aws/aws-sdk-go/aws/request/request.go | 202 +- .../aws/aws-sdk-go/aws/request/request_1_7.go | 2 +- .../aws/aws-sdk-go/aws/request/request_1_8.go | 2 +- .../aws/request/request_pagination.go | 40 +- .../aws/aws-sdk-go/aws/session/env_config.go | 28 + .../aws/aws-sdk-go/aws/session/session.go | 64 +- .../aws/aws-sdk-go/aws/signer/v4/v4.go | 52 +- .../github.com/aws/aws-sdk-go/aws/types.go | 83 + .../github.com/aws/aws-sdk-go/aws/version.go | 2 +- .../aws/aws-sdk-go/internal/sdkio/io_go1.6.go | 10 + .../aws/aws-sdk-go/internal/sdkio/io_go1.7.go | 12 + .../internal/sdkrand/locked_source.go | 29 + .../private/protocol/ec2query/build.go | 2 +- .../private/protocol/json/jsonutil/build.go | 21 +- .../protocol/json/jsonutil/unmarshal.go | 15 +- .../aws-sdk-go/private/protocol/jsonvalue.go | 76 + .../aws-sdk-go/private/protocol/payload.go | 81 + .../private/protocol/query/build.go | 2 +- .../aws-sdk-go/private/protocol/rest/build.go | 29 +- .../private/protocol/rest/unmarshal.go | 16 +- .../private/protocol/xml/xmlutil/unmarshal.go | 10 +- .../aws/aws-sdk-go/service/autoscaling/api.go | 824 +- .../aws/aws-sdk-go/service/autoscaling/doc.go | 9 +- .../aws-sdk-go/service/autoscaling/errors.go | 6 + .../aws-sdk-go/service/autoscaling/service.go | 6 +- .../aws/aws-sdk-go/service/ec2/api.go | 14561 +++++++++++++--- .../aws-sdk-go/service/ec2/customizations.go | 53 + .../aws/aws-sdk-go/service/ec2/doc.go | 7 +- .../aws/aws-sdk-go/service/ec2/service.go | 6 +- .../aws/aws-sdk-go/service/ecr/api.go | 1420 +- .../aws/aws-sdk-go/service/ecr/doc.go | 6 +- .../aws/aws-sdk-go/service/ecr/errors.go | 25 +- .../aws/aws-sdk-go/service/ecr/service.go | 6 +- .../aws/aws-sdk-go/service/elb/api.go | 261 +- .../aws/aws-sdk-go/service/elb/doc.go | 33 +- .../aws/aws-sdk-go/service/elb/errors.go | 6 + .../aws/aws-sdk-go/service/elb/service.go | 6 +- .../aws/aws-sdk-go/service/elbv2/api.go | 1545 +- .../aws/aws-sdk-go/service/elbv2/doc.go | 2 +- .../aws/aws-sdk-go/service/elbv2/errors.go | 18 +- .../aws/aws-sdk-go/service/elbv2/service.go | 6 +- .../aws/aws-sdk-go/service/kms/api.go | 1227 +- .../aws/aws-sdk-go/service/kms/doc.go | 2 +- .../aws/aws-sdk-go/service/kms/errors.go | 18 +- .../aws/aws-sdk-go/service/kms/service.go | 6 +- .../aws/aws-sdk-go/service/sts/api.go | 196 +- .../aws/aws-sdk-go/service/sts/doc.go | 2 +- .../aws/aws-sdk-go/service/sts/service.go | 6 +- .../google/cadvisor/accelerators/nvidia.go | 51 +- .../github.com/google/cadvisor/api/handler.go | 250 - .../google/cadvisor/api/versions.go | 559 - .../google/cadvisor/container/crio/handler.go | 12 +- .../cadvisor/container/docker/handler.go | 12 +- .../github.com/google/cadvisor/fs/fs.go | 15 + .../google/cadvisor/healthz/healthz.go | 32 - .../google/cadvisor/http/handlers.go | 112 - .../google/cadvisor/http/mux/mux.go | 26 - .../cadvisor/manager/watcher/raw/raw.go | 5 + .../google/cadvisor/pages/containers.go | 253 - .../google/cadvisor/pages/docker.go | 162 - .../github.com/google/cadvisor/pages/pages.go | 163 - .../google/cadvisor/pages/static/assets.go | 442 - .../google/cadvisor/pages/static/static.go | 77 - .../google/cadvisor/pages/templates.go | 256 - .../google/cadvisor/validate/validate.go | 324 - .../github.com/json-iterator/go/Gopkg.lock | 8 +- .../github.com/json-iterator/go/config.go | 8 +- .../json-iterator/go/iter_object.go | 12 +- .../github.com/json-iterator/go/reflect.go | 11 +- .../json-iterator/go/reflect_native.go | 14 +- .../go/reflect_struct_decoder.go | 38 +- .../vendor/github.com/quobyte/api/quobyte.go | 33 + .../github.com/quobyte/api/rpc_client.go | 4 + .../vendor/github.com/quobyte/api/types.go | 8 + .../github.com/satori/go.uuid/.travis.yml | 8 + .../vendor/github.com/satori/go.uuid/LICENSE | 2 +- .../github.com/satori/go.uuid/README.md | 2 +- .../vendor/github.com/satori/go.uuid/codec.go | 206 + .../github.com/satori/go.uuid/generator.go | 239 + .../vendor/github.com/satori/go.uuid/sql.go | 78 + .../vendor/github.com/satori/go.uuid/uuid.go | 441 +- .../vendor/google.golang.org/api/CONTRIBUTORS | 1 + .../api/compute/v0.alpha/compute-api.json | 294 +- .../api/compute/v0.alpha/compute-gen.go | 577 +- .../api/compute/v0.beta/compute-api.json | 1301 +- .../api/compute/v0.beta/compute-gen.go | 3332 +++- .../api/compute/v1/compute-api.json | 291 +- .../api/compute/v1/compute-gen.go | 885 +- .../api/container/v1/container-api.json | 13 +- .../api/container/v1beta1/container-gen.go | 2 +- .../api/googleapi/googleapi.go | 9 + .../vendor/k8s.io/api/admission/v1beta1/BUILD | 17 +- .../v1beta1/zz_generated.deepcopy.go | 32 +- .../api/admissionregistration/v1alpha1/BUILD | 13 +- .../api/admissionregistration/v1beta1/BUILD | 13 +- .../v1beta1/zz_generated.deepcopy.go | 40 +- .../vendor/k8s.io/api/apps/v1/BUILD | 17 +- .../api/apps/v1/zz_generated.deepcopy.go | 174 +- .../vendor/k8s.io/api/apps/v1beta1/BUILD | 17 +- .../api/apps/v1beta1/zz_generated.deepcopy.go | 132 +- .../vendor/k8s.io/api/apps/v1beta2/BUILD | 17 +- .../api/apps/v1beta2/zz_generated.deepcopy.go | 172 +- .../vendor/k8s.io/api/authentication/v1/BUILD | 15 +- .../v1/zz_generated.deepcopy.go | 23 +- .../k8s.io/api/authentication/v1beta1/BUILD | 13 +- .../v1beta1/zz_generated.deepcopy.go | 7 +- .../vendor/k8s.io/api/authorization/v1/BUILD | 13 +- .../authorization/v1/zz_generated.deepcopy.go | 39 +- .../k8s.io/api/authorization/v1beta1/BUILD | 13 +- .../v1beta1/zz_generated.deepcopy.go | 39 +- .../vendor/k8s.io/api/autoscaling/v1/BUILD | 17 +- .../autoscaling/v1/zz_generated.deepcopy.go | 168 +- .../k8s.io/api/autoscaling/v2beta1/BUILD | 17 +- .../v2beta1/zz_generated.deepcopy.go | 150 +- .../vendor/k8s.io/api/batch/v1/BUILD | 15 +- .../api/batch/v1/zz_generated.deepcopy.go | 62 +- .../vendor/k8s.io/api/batch/v1beta1/BUILD | 17 +- .../batch/v1beta1/zz_generated.deepcopy.go | 38 +- .../vendor/k8s.io/api/batch/v2alpha1/BUILD | 17 +- .../batch/v2alpha1/zz_generated.deepcopy.go | 38 +- .../k8s.io/api/certificates/v1beta1/BUILD | 13 +- .../v1beta1/zz_generated.deepcopy.go | 7 +- .../k8s.io/api/coordination/v1beta1/BUILD | 42 + .../k8s.io/api/coordination/v1beta1/doc.go | 21 + .../api/coordination/v1beta1/generated.pb.go | 886 + .../api/coordination/v1beta1/generated.proto | 83 + .../api/coordination/v1beta1/register.go | 53 + .../k8s.io/api/coordination/v1beta1/types.go | 74 + .../v1beta1/types_swagger_doc_generated.go | 63 + .../v1beta1/zz_generated.deepcopy.go | 124 + .../vendor/k8s.io/api/core/v1/BUILD | 19 +- .../vendor/k8s.io/api/core/v1/generated.proto | 12 +- .../vendor/k8s.io/api/core/v1/types.go | 12 +- .../core/v1/types_swagger_doc_generated.go | 12 +- .../api/core/v1/zz_generated.deepcopy.go | 1426 +- .../vendor/k8s.io/api/events/v1beta1/BUILD | 15 +- .../events/v1beta1/zz_generated.deepcopy.go | 16 +- .../k8s.io/api/extensions/v1beta1/BUILD | 21 +- .../v1beta1/zz_generated.deepcopy.go | 216 +- .../k8s.io/api/imagepolicy/v1alpha1/BUILD | 13 +- .../vendor/k8s.io/api/networking/v1/BUILD | 17 +- .../networking/v1/zz_generated.deepcopy.go | 44 +- .../vendor/k8s.io/api/policy/v1beta1/BUILD | 17 +- .../policy/v1beta1/zz_generated.deepcopy.go | 64 +- .../vendor/k8s.io/api/rbac/v1/BUILD | 13 +- .../api/rbac/v1/zz_generated.deepcopy.go | 12 +- .../vendor/k8s.io/api/rbac/v1alpha1/BUILD | 13 +- .../rbac/v1alpha1/zz_generated.deepcopy.go | 8 +- .../vendor/k8s.io/api/rbac/v1beta1/BUILD | 13 +- .../api/rbac/v1beta1/zz_generated.deepcopy.go | 8 +- .../k8s.io/api/scheduling/v1alpha1/BUILD | 13 +- .../k8s.io/api/scheduling/v1beta1/BUILD | 13 +- .../vendor/k8s.io/api/settings/v1alpha1/BUILD | 15 +- .../vendor/k8s.io/api/storage/v1/BUILD | 15 +- .../api/storage/v1/zz_generated.deepcopy.go | 28 +- .../vendor/k8s.io/api/storage/v1alpha1/BUILD | 13 +- .../storage/v1alpha1/zz_generated.deepcopy.go | 24 +- .../vendor/k8s.io/api/storage/v1beta1/BUILD | 15 +- .../storage/v1beta1/zz_generated.deepcopy.go | 48 +- .../pkg/features/BUILD | 3 +- .../apimachinery/pkg/api/equality/BUILD | 11 +- .../k8s.io/apimachinery/pkg/api/errors/BUILD | 17 +- .../k8s.io/apimachinery/pkg/api/meta/BUILD | 25 +- .../apimachinery/pkg/api/resource/BUILD | 14 +- .../pkg/api/resource/generated.proto | 5 - .../apimachinery/pkg/api/resource/quantity.go | 11 +- .../apimachinery/pkg/api/validation/BUILD | 21 +- .../pkg/api/validation/path/BUILD | 1 + .../pkg/apis/meta/internalversion/BUILD | 27 +- .../pkg/apis/meta/internalversion/register.go | 12 +- .../internalversion/zz_generated.deepcopy.go | 20 +- .../apimachinery/pkg/apis/meta/v1/BUILD | 45 +- .../pkg/apis/meta/v1/generated.pb.go | 735 +- .../pkg/apis/meta/v1/generated.proto | 31 + .../apimachinery/pkg/apis/meta/v1/meta.go | 54 +- .../apimachinery/pkg/apis/meta/v1/register.go | 16 +- .../apimachinery/pkg/apis/meta/v1/types.go | 39 + .../meta/v1/types_swagger_doc_generated.go | 20 + .../pkg/apis/meta/v1/unstructured/BUILD | 15 +- .../v1/unstructured/unstructuredscheme/BUILD | 13 +- .../pkg/apis/meta/v1/validation/BUILD | 9 +- .../pkg/apis/meta/v1/zz_generated.deepcopy.go | 171 +- .../apimachinery/pkg/apis/meta/v1beta1/BUILD | 15 +- .../meta/v1beta1/zz_generated.deepcopy.go | 9 +- .../k8s.io/apimachinery/pkg/conversion/BUILD | 5 +- .../pkg/conversion/queryparams/BUILD | 9 +- .../k8s.io/apimachinery/pkg/fields/BUILD | 3 +- .../k8s.io/apimachinery/pkg/labels/BUILD | 11 +- .../k8s.io/apimachinery/pkg/runtime/BUILD | 66 +- .../k8s.io/apimachinery/pkg/runtime/codec.go | 18 - .../apimachinery/pkg/runtime/conversion.go | 4 +- .../k8s.io/apimachinery/pkg/runtime/doc.go | 1 - .../apimachinery/pkg/runtime/embedded.go | 28 +- .../k8s.io/apimachinery/pkg/runtime/error.go | 35 +- .../apimachinery/pkg/runtime/extension.go | 2 +- .../k8s.io/apimachinery/pkg/runtime/helper.go | 2 +- .../apimachinery/pkg/runtime/interfaces.go | 8 +- .../apimachinery/pkg/runtime/schema/BUILD | 7 +- .../pkg/runtime/schema/group_version.go | 5 +- .../k8s.io/apimachinery/pkg/runtime/scheme.go | 61 +- .../apimachinery/pkg/runtime/serializer/BUILD | 27 +- .../pkg/runtime/serializer/json/BUILD | 33 +- .../pkg/runtime/serializer/json/json.go | 88 +- .../pkg/runtime/serializer/protobuf/BUILD | 9 +- .../pkg/runtime/serializer/recognizer/BUILD | 5 +- .../pkg/runtime/serializer/streaming/BUILD | 11 +- .../pkg/runtime/serializer/versioning/BUILD | 13 +- .../serializer/versioning/versioning.go | 22 +- .../pkg/runtime/zz_generated.deepcopy.go | 8 +- .../k8s.io/apimachinery/pkg/selection/BUILD | 1 + .../k8s.io/apimachinery/pkg/types/BUILD | 1 + .../k8s.io/apimachinery/pkg/util/cache/BUILD | 3 +- .../k8s.io/apimachinery/pkg/util/clock/BUILD | 1 + .../k8s.io/apimachinery/pkg/util/diff/BUILD | 3 +- .../k8s.io/apimachinery/pkg/util/diff/diff.go | 8 + .../apimachinery/pkg/util/duration/BUILD | 9 +- .../pkg/util/duration/duration.go | 34 + .../k8s.io/apimachinery/pkg/util/errors/BUILD | 1 + .../k8s.io/apimachinery/pkg/util/framer/BUILD | 1 + .../apimachinery/pkg/util/httpstream/BUILD | 1 + .../pkg/util/httpstream/spdy/BUILD | 19 +- .../k8s.io/apimachinery/pkg/util/intstr/BUILD | 7 +- .../k8s.io/apimachinery/pkg/util/json/BUILD | 1 + .../apimachinery/pkg/util/mergepatch/BUILD | 1 + .../apimachinery/pkg/util/mergepatch/util.go | 2 +- .../k8s.io/apimachinery/pkg/util/naming/BUILD | 29 + .../pkg/util/naming/from_stack.go | 93 + .../k8s.io/apimachinery/pkg/util/net/BUILD | 3 +- .../k8s.io/apimachinery/pkg/util/net/http.go | 22 +- .../k8s.io/apimachinery/pkg/util/proxy/BUILD | 19 +- .../k8s.io/apimachinery/pkg/util/rand/BUILD | 1 + .../apimachinery/pkg/util/remotecommand/BUILD | 3 +- .../apimachinery/pkg/util/runtime/BUILD | 1 + .../k8s.io/apimachinery/pkg/util/sets/BUILD | 6 +- .../pkg/util/strategicpatch/BUILD | 19 +- .../pkg/util/strategicpatch/OWNERS | 1 + .../pkg/util/strategicpatch/patch.go | 2 +- .../k8s.io/apimachinery/pkg/util/uuid/BUILD | 3 +- .../apimachinery/pkg/util/validation/BUILD | 5 +- .../pkg/util/validation/field/BUILD | 5 +- .../pkg/util/validation/field/errors.go | 2 +- .../k8s.io/apimachinery/pkg/util/wait/BUILD | 5 +- .../k8s.io/apimachinery/pkg/util/wait/wait.go | 4 +- .../k8s.io/apimachinery/pkg/util/yaml/BUILD | 1 + .../k8s.io/apimachinery/pkg/version/BUILD | 1 + .../k8s.io/apimachinery/pkg/watch/BUILD | 41 +- .../pkg/watch/zz_generated.deepcopy.go | 4 +- .../third_party/forked/golang/json/BUILD | 1 + .../third_party/forked/golang/netutil/BUILD | 1 + .../third_party/forked/golang/reflect/BUILD | 1 + .../k8s.io/apiserver/pkg/admission/BUILD | 41 +- .../k8s.io/apiserver/pkg/apis/apiserver/BUILD | 7 +- .../pkg/apis/apiserver/v1alpha1/BUILD | 11 +- .../v1alpha1/zz_generated.deepcopy.go | 8 +- .../apis/apiserver/zz_generated.deepcopy.go | 8 +- .../k8s.io/apiserver/pkg/apis/audit/BUILD | 9 +- .../k8s.io/apiserver/pkg/apis/audit/types.go | 4 + .../apiserver/pkg/apis/audit/v1alpha1/BUILD | 29 +- .../pkg/apis/audit/v1alpha1/generated.pb.go | 199 +- .../pkg/apis/audit/v1alpha1/generated.proto | 5 + .../pkg/apis/audit/v1alpha1/types.go | 4 + .../audit/v1alpha1/zz_generated.conversion.go | 6 +- .../audit/v1alpha1/zz_generated.deepcopy.go | 42 +- .../apiserver/pkg/apis/audit/v1beta1/BUILD | 29 +- .../pkg/apis/audit/v1beta1/generated.pb.go | 203 +- .../pkg/apis/audit/v1beta1/generated.proto | 5 + .../apiserver/pkg/apis/audit/v1beta1/types.go | 4 + .../audit/v1beta1/zz_generated.conversion.go | 6 +- .../audit/v1beta1/zz_generated.deepcopy.go | 42 +- .../pkg/apis/audit/zz_generated.deepcopy.go | 47 +- .../vendor/k8s.io/apiserver/pkg/audit/BUILD | 30 +- .../k8s.io/apiserver/pkg/audit/request.go | 19 +- .../k8s.io/apiserver/pkg/audit/scheme.go | 5 +- .../pkg/authentication/authenticator/BUILD | 3 +- .../authentication/authenticatorfactory/BUILD | 27 +- .../apiserver/pkg/authentication/group/BUILD | 9 +- .../authentication/request/anonymous/BUILD | 11 +- .../authentication/request/bearertoken/BUILD | 9 +- .../request/headerrequest/BUILD | 13 +- .../pkg/authentication/request/union/BUILD | 9 +- .../authentication/request/websocket/BUILD | 11 +- .../pkg/authentication/request/x509/BUILD | 15 +- .../pkg/authentication/request/x509/x509.go | 23 - .../pkg/authentication/serviceaccount/BUILD | 3 +- .../pkg/authentication/token/tokenfile/BUILD | 5 +- .../apiserver/pkg/authentication/user/BUILD | 1 + .../pkg/authorization/authorizer/BUILD | 3 +- .../pkg/authorization/authorizerfactory/BUILD | 13 +- .../pkg/endpoints/handlers/negotiation/BUILD | 11 +- .../endpoints/handlers/responsewriters/BUILD | 45 +- .../apiserver/pkg/endpoints/metrics/BUILD | 5 +- .../pkg/endpoints/metrics/metrics.go | 4 +- .../apiserver/pkg/endpoints/request/BUILD | 19 +- .../k8s.io/apiserver/pkg/features/BUILD | 3 +- .../k8s.io/apiserver/pkg/registry/rest/BUILD | 45 +- .../apiserver/pkg/registry/rest/rest.go | 8 +- .../registry/rest/zz_generated.deepcopy.go | 4 +- .../k8s.io/apiserver/pkg/server/healthz/BUILD | 6 +- .../apiserver/pkg/server/healthz/healthz.go | 32 + .../k8s.io/apiserver/pkg/server/httplog/BUILD | 1 + .../apiserver/pkg/server/httplog/httplog.go | 11 +- .../k8s.io/apiserver/pkg/server/mux/BUILD | 5 +- .../k8s.io/apiserver/pkg/server/routes/BUILD | 17 +- .../pkg/server/routes/data/swagger/BUILD | 1 + .../vendor/k8s.io/apiserver/pkg/storage/BUILD | 53 +- .../k8s.io/apiserver/pkg/storage/cacher.go | 989 -- .../k8s.io/apiserver/pkg/storage/errors.go | 2 +- .../k8s.io/apiserver/pkg/storage/etcd/BUILD | 62 +- .../pkg/storage/etcd/api_object_versioner.go | 25 +- .../apiserver/pkg/storage/etcd/etcd_helper.go | 4 +- .../pkg/storage/etcd/etcd_watcher.go | 4 - .../apiserver/pkg/storage/etcd/metrics/BUILD | 1 + .../apiserver/pkg/storage/etcd/util/BUILD | 1 + .../apiserver/pkg/storage/interfaces.go | 10 +- .../k8s.io/apiserver/pkg/storage/names/BUILD | 3 +- .../apiserver/pkg/storage/time_budget.go | 95 - .../k8s.io/apiserver/pkg/storage/util.go | 26 - .../apiserver/pkg/storage/watch_cache.go | 484 - .../k8s.io/apiserver/pkg/util/feature/BUILD | 1 + .../pkg/util/feature/feature_gate.go | 4 +- .../k8s.io/apiserver/pkg/util/flag/BUILD | 3 +- .../apiserver/pkg/util/flushwriter/BUILD | 1 + .../k8s.io/apiserver/pkg/util/logs/BUILD | 3 +- .../k8s.io/apiserver/pkg/util/trace/BUILD | 1 + .../k8s.io/apiserver/pkg/util/webhook/BUILD | 29 +- .../k8s.io/apiserver/pkg/util/wsstream/BUILD | 3 +- .../pkg/authenticator/token/webhook/BUILD | 29 +- .../plugin/pkg/authorizer/webhook/BUILD | 31 +- .../vendor/k8s.io/client-go/discovery/BUILD | 59 +- .../vendor/k8s.io/client-go/discovery/doc.go | 19 + .../k8s.io/client-go/discovery/fake/BUILD | 21 +- .../client-go/discovery/round_tripper.go | 1 - .../client-go/discovery/unstructured.go | 81 - .../vendor/k8s.io/client-go/dynamic/BUILD | 43 +- .../vendor/k8s.io/client-go/informers/BUILD | 94 +- .../informers/admissionregistration/BUILD | 7 +- .../admissionregistration/v1alpha1/BUILD | 17 +- .../v1alpha1/initializerconfiguration.go | 6 +- .../admissionregistration/v1beta1/BUILD | 17 +- .../v1beta1/mutatingwebhookconfiguration.go | 6 +- .../v1beta1/validatingwebhookconfiguration.go | 6 +- .../k8s.io/client-go/informers/apps/BUILD | 9 +- .../k8s.io/client-go/informers/apps/v1/BUILD | 17 +- .../informers/apps/v1/controllerrevision.go | 12 +- .../client-go/informers/apps/v1/daemonset.go | 12 +- .../client-go/informers/apps/v1/deployment.go | 12 +- .../client-go/informers/apps/v1/replicaset.go | 12 +- .../informers/apps/v1/statefulset.go | 12 +- .../client-go/informers/apps/v1beta1/BUILD | 17 +- .../apps/v1beta1/controllerrevision.go | 6 +- .../informers/apps/v1beta1/deployment.go | 6 +- .../informers/apps/v1beta1/statefulset.go | 6 +- .../client-go/informers/apps/v1beta2/BUILD | 17 +- .../apps/v1beta2/controllerrevision.go | 6 +- .../informers/apps/v1beta2/daemonset.go | 6 +- .../informers/apps/v1beta2/deployment.go | 6 +- .../informers/apps/v1beta2/replicaset.go | 6 +- .../informers/apps/v1beta2/statefulset.go | 6 +- .../client-go/informers/autoscaling/BUILD | 7 +- .../client-go/informers/autoscaling/v1/BUILD | 17 +- .../autoscaling/v1/horizontalpodautoscaler.go | 12 +- .../informers/autoscaling/v2beta1/BUILD | 17 +- .../v2beta1/horizontalpodautoscaler.go | 6 +- .../k8s.io/client-go/informers/batch/BUILD | 9 +- .../k8s.io/client-go/informers/batch/v1/BUILD | 17 +- .../client-go/informers/batch/v1/job.go | 12 +- .../client-go/informers/batch/v1beta1/BUILD | 17 +- .../informers/batch/v1beta1/cronjob.go | 6 +- .../client-go/informers/batch/v2alpha1/BUILD | 17 +- .../informers/batch/v2alpha1/cronjob.go | 6 +- .../client-go/informers/certificates/BUILD | 5 +- .../informers/certificates/v1beta1/BUILD | 17 +- .../v1beta1/certificatesigningrequest.go | 6 +- .../client-go/informers/coordination/BUILD | 30 + .../informers/coordination/interface.go | 46 + .../informers/coordination/v1beta1/BUILD | 36 + .../coordination/v1beta1/interface.go | 45 + .../informers/coordination/v1beta1/lease.go | 89 + .../k8s.io/client-go/informers/core/BUILD | 5 +- .../k8s.io/client-go/informers/core/v1/BUILD | 17 +- .../informers/core/v1/componentstatus.go | 12 +- .../client-go/informers/core/v1/configmap.go | 12 +- .../client-go/informers/core/v1/endpoints.go | 12 +- .../client-go/informers/core/v1/event.go | 12 +- .../client-go/informers/core/v1/limitrange.go | 12 +- .../client-go/informers/core/v1/namespace.go | 12 +- .../client-go/informers/core/v1/node.go | 12 +- .../informers/core/v1/persistentvolume.go | 12 +- .../core/v1/persistentvolumeclaim.go | 12 +- .../k8s.io/client-go/informers/core/v1/pod.go | 12 +- .../informers/core/v1/podtemplate.go | 12 +- .../core/v1/replicationcontroller.go | 12 +- .../informers/core/v1/resourcequota.go | 12 +- .../client-go/informers/core/v1/secret.go | 12 +- .../client-go/informers/core/v1/service.go | 12 +- .../informers/core/v1/serviceaccount.go | 12 +- .../k8s.io/client-go/informers/events/BUILD | 5 +- .../client-go/informers/events/v1beta1/BUILD | 17 +- .../informers/events/v1beta1/event.go | 6 +- .../client-go/informers/extensions/BUILD | 5 +- .../informers/extensions/v1beta1/BUILD | 17 +- .../informers/extensions/v1beta1/daemonset.go | 6 +- .../extensions/v1beta1/deployment.go | 6 +- .../informers/extensions/v1beta1/ingress.go | 6 +- .../extensions/v1beta1/podsecuritypolicy.go | 6 +- .../extensions/v1beta1/replicaset.go | 6 +- .../k8s.io/client-go/informers/factory.go | 6 + .../k8s.io/client-go/informers/generic.go | 145 +- .../informers/internalinterfaces/BUILD | 9 +- .../client-go/informers/networking/BUILD | 5 +- .../client-go/informers/networking/v1/BUILD | 17 +- .../informers/networking/v1/networkpolicy.go | 12 +- .../k8s.io/client-go/informers/policy/BUILD | 5 +- .../client-go/informers/policy/v1beta1/BUILD | 17 +- .../policy/v1beta1/poddisruptionbudget.go | 6 +- .../policy/v1beta1/podsecuritypolicy.go | 6 +- .../k8s.io/client-go/informers/rbac/BUILD | 9 +- .../k8s.io/client-go/informers/rbac/v1/BUILD | 17 +- .../informers/rbac/v1/clusterrole.go | 12 +- .../informers/rbac/v1/clusterrolebinding.go | 12 +- .../client-go/informers/rbac/v1/role.go | 12 +- .../informers/rbac/v1/rolebinding.go | 12 +- .../client-go/informers/rbac/v1alpha1/BUILD | 17 +- .../informers/rbac/v1alpha1/clusterrole.go | 6 +- .../rbac/v1alpha1/clusterrolebinding.go | 6 +- .../client-go/informers/rbac/v1alpha1/role.go | 6 +- .../informers/rbac/v1alpha1/rolebinding.go | 6 +- .../client-go/informers/rbac/v1beta1/BUILD | 17 +- .../informers/rbac/v1beta1/clusterrole.go | 6 +- .../rbac/v1beta1/clusterrolebinding.go | 6 +- .../client-go/informers/rbac/v1beta1/role.go | 6 +- .../informers/rbac/v1beta1/rolebinding.go | 6 +- .../client-go/informers/scheduling/BUILD | 7 +- .../informers/scheduling/v1alpha1/BUILD | 17 +- .../scheduling/v1alpha1/priorityclass.go | 6 +- .../informers/scheduling/v1beta1/BUILD | 17 +- .../scheduling/v1beta1/priorityclass.go | 6 +- .../k8s.io/client-go/informers/settings/BUILD | 5 +- .../informers/settings/v1alpha1/BUILD | 17 +- .../informers/settings/v1alpha1/podpreset.go | 6 +- .../k8s.io/client-go/informers/storage/BUILD | 9 +- .../client-go/informers/storage/v1/BUILD | 17 +- .../informers/storage/v1/storageclass.go | 12 +- .../informers/storage/v1alpha1/BUILD | 17 +- .../storage/v1alpha1/volumeattachment.go | 6 +- .../client-go/informers/storage/v1beta1/BUILD | 17 +- .../informers/storage/v1beta1/storageclass.go | 6 +- .../storage/v1beta1/volumeattachment.go | 6 +- .../vendor/k8s.io/client-go/kubernetes/BUILD | 67 +- .../k8s.io/client-go/kubernetes/clientset.go | 22 + .../k8s.io/client-go/kubernetes/fake/BUILD | 197 +- .../kubernetes/fake/clientset_generated.go | 12 + .../client-go/kubernetes/fake/register.go | 74 +- .../k8s.io/client-go/kubernetes/scheme/BUILD | 69 +- .../client-go/kubernetes/scheme/register.go | 74 +- .../admissionregistration/v1alpha1/BUILD | 15 +- .../admissionregistration/v1alpha1/fake/BUILD | 19 +- .../typed/admissionregistration/v1beta1/BUILD | 15 +- .../admissionregistration/v1beta1/fake/BUILD | 19 +- .../client-go/kubernetes/typed/apps/v1/BUILD | 15 +- .../typed/apps/v1/controllerrevision.go | 22 +- .../kubernetes/typed/apps/v1/daemonset.go | 22 +- .../kubernetes/typed/apps/v1/deployment.go | 22 +- .../kubernetes/typed/apps/v1/fake/BUILD | 19 +- .../apps/v1/fake/fake_controllerrevision.go | 38 +- .../typed/apps/v1/fake/fake_daemonset.go | 44 +- .../typed/apps/v1/fake/fake_deployment.go | 44 +- .../typed/apps/v1/fake/fake_replicaset.go | 44 +- .../typed/apps/v1/fake/fake_statefulset.go | 44 +- .../kubernetes/typed/apps/v1/replicaset.go | 22 +- .../kubernetes/typed/apps/v1/statefulset.go | 22 +- .../kubernetes/typed/apps/v1beta1/BUILD | 15 +- .../kubernetes/typed/apps/v1beta1/fake/BUILD | 19 +- .../kubernetes/typed/apps/v1beta2/BUILD | 15 +- .../kubernetes/typed/apps/v1beta2/fake/BUILD | 19 +- .../kubernetes/typed/authentication/v1/BUILD | 9 +- .../typed/authentication/v1/fake/BUILD | 9 +- .../typed/authentication/v1beta1/BUILD | 9 +- .../typed/authentication/v1beta1/fake/BUILD | 9 +- .../kubernetes/typed/authorization/v1/BUILD | 9 +- .../typed/authorization/v1/fake/BUILD | 9 +- .../typed/authorization/v1beta1/BUILD | 9 +- .../typed/authorization/v1beta1/fake/BUILD | 9 +- .../kubernetes/typed/autoscaling/v1/BUILD | 15 +- .../typed/autoscaling/v1/fake/BUILD | 19 +- .../v1/fake/fake_horizontalpodautoscaler.go | 44 +- .../autoscaling/v1/horizontalpodautoscaler.go | 22 +- .../typed/autoscaling/v2beta1/BUILD | 15 +- .../typed/autoscaling/v2beta1/fake/BUILD | 19 +- .../client-go/kubernetes/typed/batch/v1/BUILD | 15 +- .../kubernetes/typed/batch/v1/fake/BUILD | 19 +- .../typed/batch/v1/fake/fake_job.go | 44 +- .../kubernetes/typed/batch/v1/job.go | 22 +- .../kubernetes/typed/batch/v1beta1/BUILD | 15 +- .../kubernetes/typed/batch/v1beta1/fake/BUILD | 19 +- .../kubernetes/typed/batch/v2alpha1/BUILD | 15 +- .../typed/batch/v2alpha1/fake/BUILD | 19 +- .../typed/certificates/v1beta1/BUILD | 15 +- .../typed/certificates/v1beta1/fake/BUILD | 19 +- .../typed/coordination/v1beta1/BUILD | 40 + .../v1beta1/coordination_client.go | 90 + .../typed/coordination/v1beta1/doc.go | 20 + .../typed/coordination/v1beta1/fake/BUILD | 38 + .../typed/coordination/v1beta1/fake/doc.go | 20 + .../v1beta1/fake/fake_coordination_client.go | 40 + .../coordination/v1beta1/fake/fake_lease.go | 128 + .../v1beta1/generated_expansion.go | 21 + .../typed/coordination/v1beta1/lease.go | 157 + .../client-go/kubernetes/typed/core/v1/BUILD | 29 +- .../typed/core/v1/componentstatus.go | 22 +- .../kubernetes/typed/core/v1/configmap.go | 22 +- .../kubernetes/typed/core/v1/endpoints.go | 22 +- .../kubernetes/typed/core/v1/event.go | 22 +- .../kubernetes/typed/core/v1/fake/BUILD | 29 +- .../core/v1/fake/fake_componentstatus.go | 38 +- .../typed/core/v1/fake/fake_configmap.go | 38 +- .../typed/core/v1/fake/fake_endpoints.go | 38 +- .../typed/core/v1/fake/fake_event.go | 38 +- .../typed/core/v1/fake/fake_limitrange.go | 38 +- .../typed/core/v1/fake/fake_namespace.go | 42 +- .../typed/core/v1/fake/fake_node.go | 44 +- .../core/v1/fake/fake_persistentvolume.go | 44 +- .../v1/fake/fake_persistentvolumeclaim.go | 44 +- .../kubernetes/typed/core/v1/fake/fake_pod.go | 44 +- .../typed/core/v1/fake/fake_podtemplate.go | 38 +- .../v1/fake/fake_replicationcontroller.go | 44 +- .../typed/core/v1/fake/fake_resourcequota.go | 44 +- .../typed/core/v1/fake/fake_secret.go | 38 +- .../typed/core/v1/fake/fake_service.go | 42 +- .../typed/core/v1/fake/fake_serviceaccount.go | 38 +- .../kubernetes/typed/core/v1/limitrange.go | 22 +- .../kubernetes/typed/core/v1/namespace.go | 18 +- .../kubernetes/typed/core/v1/node.go | 22 +- .../typed/core/v1/persistentvolume.go | 22 +- .../typed/core/v1/persistentvolumeclaim.go | 22 +- .../client-go/kubernetes/typed/core/v1/pod.go | 22 +- .../kubernetes/typed/core/v1/podtemplate.go | 22 +- .../typed/core/v1/replicationcontroller.go | 26 +- .../kubernetes/typed/core/v1/resourcequota.go | 22 +- .../kubernetes/typed/core/v1/secret.go | 22 +- .../kubernetes/typed/core/v1/service.go | 18 +- .../typed/core/v1/serviceaccount.go | 22 +- .../kubernetes/typed/events/v1beta1/BUILD | 15 +- .../typed/events/v1beta1/fake/BUILD | 19 +- .../kubernetes/typed/extensions/v1beta1/BUILD | 19 +- .../typed/extensions/v1beta1/fake/BUILD | 19 +- .../kubernetes/typed/networking/v1/BUILD | 15 +- .../kubernetes/typed/networking/v1/fake/BUILD | 19 +- .../networking/v1/fake/fake_networkpolicy.go | 38 +- .../typed/networking/v1/networkpolicy.go | 22 +- .../kubernetes/typed/policy/v1beta1/BUILD | 15 +- .../typed/policy/v1beta1/fake/BUILD | 19 +- .../client-go/kubernetes/typed/rbac/v1/BUILD | 15 +- .../kubernetes/typed/rbac/v1/clusterrole.go | 22 +- .../typed/rbac/v1/clusterrolebinding.go | 22 +- .../kubernetes/typed/rbac/v1/fake/BUILD | 19 +- .../typed/rbac/v1/fake/fake_clusterrole.go | 38 +- .../rbac/v1/fake/fake_clusterrolebinding.go | 38 +- .../typed/rbac/v1/fake/fake_role.go | 38 +- .../typed/rbac/v1/fake/fake_rolebinding.go | 38 +- .../kubernetes/typed/rbac/v1/role.go | 22 +- .../kubernetes/typed/rbac/v1/rolebinding.go | 22 +- .../kubernetes/typed/rbac/v1alpha1/BUILD | 15 +- .../kubernetes/typed/rbac/v1alpha1/fake/BUILD | 19 +- .../kubernetes/typed/rbac/v1beta1/BUILD | 15 +- .../kubernetes/typed/rbac/v1beta1/fake/BUILD | 19 +- .../typed/scheduling/v1alpha1/BUILD | 15 +- .../typed/scheduling/v1alpha1/fake/BUILD | 19 +- .../kubernetes/typed/scheduling/v1beta1/BUILD | 15 +- .../typed/scheduling/v1beta1/fake/BUILD | 19 +- .../kubernetes/typed/settings/v1alpha1/BUILD | 15 +- .../typed/settings/v1alpha1/fake/BUILD | 19 +- .../kubernetes/typed/storage/v1/BUILD | 15 +- .../kubernetes/typed/storage/v1/fake/BUILD | 19 +- .../storage/v1/fake/fake_storageclass.go | 38 +- .../typed/storage/v1/storageclass.go | 22 +- .../kubernetes/typed/storage/v1alpha1/BUILD | 15 +- .../typed/storage/v1alpha1/fake/BUILD | 19 +- .../kubernetes/typed/storage/v1beta1/BUILD | 15 +- .../typed/storage/v1beta1/fake/BUILD | 19 +- .../admissionregistration/v1alpha1/BUILD | 9 +- .../admissionregistration/v1beta1/BUILD | 9 +- .../k8s.io/client-go/listers/apps/v1/BUILD | 13 +- .../client-go/listers/apps/v1beta1/BUILD | 13 +- .../client-go/listers/apps/v1beta2/BUILD | 13 +- .../client-go/listers/autoscaling/v1/BUILD | 9 +- .../listers/autoscaling/v2beta1/BUILD | 9 +- .../k8s.io/client-go/listers/batch/v1/BUILD | 13 +- .../client-go/listers/batch/v1beta1/BUILD | 9 +- .../client-go/listers/batch/v2alpha1/BUILD | 9 +- .../listers/certificates/v1beta1/BUILD | 9 +- .../listers/coordination/v1beta1/BUILD | 32 + .../v1beta1/expansion_generated.go | 27 + .../listers/coordination/v1beta1/lease.go | 94 + .../k8s.io/client-go/listers/core/v1/BUILD | 9 +- .../client-go/listers/events/v1beta1/BUILD | 9 +- .../listers/extensions/v1beta1/BUILD | 27 +- .../client-go/listers/networking/v1/BUILD | 9 +- .../client-go/listers/policy/v1beta1/BUILD | 13 +- .../k8s.io/client-go/listers/rbac/v1/BUILD | 9 +- .../client-go/listers/rbac/v1alpha1/BUILD | 9 +- .../client-go/listers/rbac/v1beta1/BUILD | 9 +- .../listers/scheduling/v1alpha1/BUILD | 9 +- .../listers/scheduling/v1beta1/BUILD | 9 +- .../client-go/listers/settings/v1alpha1/BUILD | 9 +- .../k8s.io/client-go/listers/storage/v1/BUILD | 9 +- .../client-go/listers/storage/v1alpha1/BUILD | 9 +- .../client-go/listers/storage/v1beta1/BUILD | 9 +- .../pkg/apis/clientauthentication/BUILD | 7 +- .../apis/clientauthentication/v1alpha1/BUILD | 11 +- .../v1alpha1/zz_generated.deepcopy.go | 29 +- .../apis/clientauthentication/v1beta1/BUILD | 11 +- .../v1beta1/zz_generated.deepcopy.go | 14 +- .../zz_generated.deepcopy.go | 29 +- .../vendor/k8s.io/client-go/pkg/version/BUILD | 3 +- .../plugin/pkg/client/auth/exec/BUILD | 32 +- .../plugin/pkg/client/auth/exec/exec.go | 7 +- .../vendor/k8s.io/client-go/rest/BUILD | 75 +- .../vendor/k8s.io/client-go/rest/request.go | 2 +- .../vendor/k8s.io/client-go/rest/watch/BUILD | 33 +- .../vendor/k8s.io/client-go/restmapper/BUILD | 25 +- .../vendor/k8s.io/client-go/scale/BUILD | 62 +- .../k8s.io/client-go/scale/scheme/BUILD | 9 +- .../client-go/scale/scheme/appsint/BUILD | 9 +- .../client-go/scale/scheme/appsv1beta1/BUILD | 13 +- .../client-go/scale/scheme/appsv1beta2/BUILD | 13 +- .../scale/scheme/autoscalingv1/BUILD | 13 +- .../scale/scheme/extensionsint/BUILD | 9 +- .../scale/scheme/extensionsv1beta1/BUILD | 13 +- .../scale/scheme/zz_generated.deepcopy.go | 8 +- .../vendor/k8s.io/client-go/scale/util.go | 15 +- .../vendor/k8s.io/client-go/testing/BUILD | 39 +- .../third_party/forked/golang/template/BUILD | 1 + .../vendor/k8s.io/client-go/tools/auth/BUILD | 7 +- .../vendor/k8s.io/client-go/tools/cache/BUILD | 56 +- .../k8s.io/client-go/tools/cache/reflector.go | 77 +- .../k8s.io/client-go/tools/clientcmd/BUILD | 29 +- .../client-go/tools/clientcmd/api/BUILD | 5 +- .../tools/clientcmd/api/latest/BUILD | 14 +- .../tools/clientcmd/api/latest/latest.go | 11 +- .../client-go/tools/clientcmd/api/v1/BUILD | 9 +- .../clientcmd/api/v1/zz_generated.deepcopy.go | 23 +- .../clientcmd/api/zz_generated.deepcopy.go | 44 +- .../client-go/tools/leaderelection/BUILD | 27 +- .../tools/leaderelection/leaderelection.go | 86 +- .../tools/leaderelection/resourcelock/BUILD | 9 +- .../k8s.io/client-go/tools/metrics/BUILD | 1 + .../vendor/k8s.io/client-go/tools/pager/BUILD | 21 +- .../k8s.io/client-go/tools/record/BUILD | 45 +- .../k8s.io/client-go/tools/reference/BUILD | 15 +- .../client-go/tools/remotecommand/BUILD | 23 +- .../tools/remotecommand/remotecommand.go | 4 +- .../vendor/k8s.io/client-go/transport/BUILD | 3 +- .../k8s.io/client-go/transport/spdy/BUILD | 7 +- .../vendor/k8s.io/client-go/util/buffer/BUILD | 1 + .../vendor/k8s.io/client-go/util/cert/BUILD | 1 + .../vendor/k8s.io/client-go/util/cert/cert.go | 60 +- .../k8s.io/client-go/util/certificate/BUILD | 32 +- .../util/certificate/certificate_manager.go | 122 +- .../client-go/util/certificate/csr/BUILD | 33 +- .../k8s.io/client-go/util/connrotation/BUILD | 1 + .../vendor/k8s.io/client-go/util/exec/BUILD | 1 + .../k8s.io/client-go/util/flowcontrol/BUILD | 7 +- .../k8s.io/client-go/util/homedir/BUILD | 1 + .../k8s.io/client-go/util/integer/BUILD | 1 + .../k8s.io/client-go/util/jsonpath/BUILD | 3 +- .../k8s.io/client-go/util/jsonpath/node.go | 8 +- .../k8s.io/client-go/util/jsonpath/parser.go | 6 +- .../vendor/k8s.io/client-go/util/retry/BUILD | 11 +- .../k8s.io/client-go/util/workqueue/BUILD | 16 +- .../kube-openapi/pkg/builder/openapi.go | 40 +- .../kubernetes/cmd/kube-proxy/app/BUILD | 171 +- .../cmd/kube-proxy/app/server_others.go | 21 +- .../k8s.io/kubernetes/cmd/kubelet/app/BUILD | 102 +- .../kubernetes/cmd/kubelet/app/options/BUILD | 65 +- .../kubelet/app/options/container_runtime.go | 4 + .../cmd/kubelet/app/options/options.go | 14 +- .../kubernetes/cmd/kubelet/app/plugins.go | 20 +- .../kubernetes/cmd/kubelet/app/server.go | 30 +- .../k8s.io/kubernetes/pkg/api/events/BUILD | 2 +- .../kubernetes/pkg/api/legacyscheme/BUILD | 4 +- .../k8s.io/kubernetes/pkg/api/pod/BUILD | 10 +- .../k8s.io/kubernetes/pkg/api/ref/BUILD | 13 +- .../k8s.io/kubernetes/pkg/api/resource/BUILD | 6 +- .../k8s.io/kubernetes/pkg/api/testapi/BUILD | 12 +- .../kubernetes/pkg/api/testapi/testapi.go | 8 + .../k8s.io/kubernetes/pkg/api/v1/pod/BUILD | 16 +- .../kubernetes/pkg/api/v1/resource/BUILD | 8 +- .../kubernetes/pkg/api/v1/service/BUILD | 4 +- .../kubernetes/pkg/apis/admission/BUILD | 8 +- .../pkg/apis/admission/install/BUILD | 4 +- .../pkg/apis/admission/v1beta1/BUILD | 12 +- .../apis/admission/zz_generated.deepcopy.go | 40 +- .../pkg/apis/admissionregistration/BUILD | 6 +- .../apis/admissionregistration/install/BUILD | 4 +- .../apis/admissionregistration/v1alpha1/BUILD | 8 +- .../apis/admissionregistration/v1beta1/BUILD | 10 +- .../zz_generated.deepcopy.go | 40 +- .../k8s.io/kubernetes/pkg/apis/apps/BUILD | 6 +- .../kubernetes/pkg/apis/apps/install/BUILD | 4 +- .../k8s.io/kubernetes/pkg/apis/apps/v1/BUILD | 32 +- .../apis/apps/v1/zz_generated.conversion.go | 68 +- .../pkg/apis/apps/v1/zz_generated.defaults.go | 298 +- .../kubernetes/pkg/apis/apps/v1beta1/BUILD | 30 +- .../pkg/apis/apps/v1beta1/conversion.go | 2 +- .../apps/v1beta1/zz_generated.conversion.go | 32 +- .../kubernetes/pkg/apis/apps/v1beta2/BUILD | 34 +- .../pkg/apis/apps/v1beta2/conversion.go | 2 +- .../apps/v1beta2/zz_generated.conversion.go | 56 +- .../pkg/apis/apps/zz_generated.deepcopy.go | 44 +- .../kubernetes/pkg/apis/authentication/BUILD | 8 +- .../pkg/apis/authentication/install/BUILD | 4 +- .../pkg/apis/authentication/v1/BUILD | 12 +- .../v1/zz_generated.conversion.go | 6 +- .../pkg/apis/authentication/v1beta1/BUILD | 8 +- .../authentication/zz_generated.deepcopy.go | 15 +- .../kubernetes/pkg/apis/authorization/BUILD | 6 +- .../pkg/apis/authorization/install/BUILD | 4 +- .../pkg/apis/authorization/v1/BUILD | 8 +- .../pkg/apis/authorization/v1beta1/BUILD | 8 +- .../authorization/zz_generated.deepcopy.go | 39 +- .../kubernetes/pkg/apis/autoscaling/BUILD | 8 +- .../pkg/apis/autoscaling/install/BUILD | 4 +- .../kubernetes/pkg/apis/autoscaling/v1/BUILD | 22 +- .../autoscaling/v1/zz_generated.conversion.go | 22 +- .../pkg/apis/autoscaling/v2beta1/BUILD | 26 +- .../v2beta1/zz_generated.conversion.go | 8 +- .../apis/autoscaling/zz_generated.deepcopy.go | 150 +- .../k8s.io/kubernetes/pkg/apis/batch/BUILD | 6 +- .../kubernetes/pkg/apis/batch/install/BUILD | 4 +- .../k8s.io/kubernetes/pkg/apis/batch/v1/BUILD | 24 +- .../pkg/apis/batch/v1/conversion.go | 2 +- .../apis/batch/v1/zz_generated.conversion.go | 24 +- .../apis/batch/v1/zz_generated.defaults.go | 74 +- .../kubernetes/pkg/apis/batch/v1beta1/BUILD | 20 +- .../pkg/apis/batch/v1beta1/conversion.go | 2 +- .../kubernetes/pkg/apis/batch/v1beta1/doc.go | 1 + .../batch/v1beta1/zz_generated.conversion.go | 10 +- .../kubernetes/pkg/apis/batch/v2alpha1/BUILD | 20 +- .../pkg/apis/batch/v2alpha1/conversion.go | 2 +- .../kubernetes/pkg/apis/batch/v2alpha1/doc.go | 1 + .../batch/v2alpha1/zz_generated.conversion.go | 10 +- .../pkg/apis/batch/zz_generated.deepcopy.go | 98 +- .../kubernetes/pkg/apis/certificates/BUILD | 6 +- .../pkg/apis/certificates/install/BUILD | 4 +- .../pkg/apis/certificates/v1beta1/BUILD | 8 +- .../certificates/zz_generated.deepcopy.go | 7 +- .../kubernetes/pkg/apis/componentconfig/BUILD | 10 +- .../pkg/apis/componentconfig/install/BUILD | 4 +- .../pkg/apis/componentconfig/types.go | 6 +- .../pkg/apis/componentconfig/v1alpha1/BUILD | 8 +- .../apis/componentconfig/v1alpha1/types.go | 6 +- .../v1alpha1/zz_generated.conversion.go | 4 +- .../v1alpha1/zz_generated.deepcopy.go | 88 +- .../componentconfig/zz_generated.deepcopy.go | 56 +- .../kubernetes/pkg/apis/coordination/BUILD | 37 + .../kubernetes/pkg/apis/coordination/doc.go | 20 + .../pkg/apis/coordination/install/BUILD | 29 + .../pkg/apis/coordination/install/install.go | 38 + .../pkg/apis/coordination/register.go | 53 + .../kubernetes/pkg/apis/coordination/types.go | 70 + .../pkg/apis/coordination/v1beta1/BUILD | 35 + .../pkg/apis/coordination/v1beta1/doc.go | 23 + .../pkg/apis/coordination/v1beta1/register.go | 45 + .../v1beta1/zz_generated.conversion.go | 124 + .../v1beta1/zz_generated.defaults.go | 32 + .../coordination/zz_generated.deepcopy.go | 124 + .../k8s.io/kubernetes/pkg/apis/core/BUILD | 14 +- .../kubernetes/pkg/apis/core/helper/BUILD | 20 +- .../kubernetes/pkg/apis/core/helper/qos/BUILD | 4 +- .../kubernetes/pkg/apis/core/install/BUILD | 12 +- .../k8s.io/kubernetes/pkg/apis/core/types.go | 12 +- .../k8s.io/kubernetes/pkg/apis/core/v1/BUILD | 46 +- .../kubernetes/pkg/apis/core/v1/conversion.go | 12 +- .../kubernetes/pkg/apis/core/v1/helper/BUILD | 24 +- .../pkg/apis/core/v1/helper/helpers.go | 14 + .../pkg/apis/core/v1/helper/qos/BUILD | 12 +- .../pkg/apis/core/v1/validation/BUILD | 20 +- .../apis/core/v1/zz_generated.conversion.go | 34 +- .../kubernetes/pkg/apis/core/validation/BUILD | 42 +- .../pkg/apis/core/zz_generated.deepcopy.go | 1412 +- .../k8s.io/kubernetes/pkg/apis/events/BUILD | 4 +- .../kubernetes/pkg/apis/events/install/BUILD | 4 +- .../kubernetes/pkg/apis/events/v1beta1/BUILD | 10 +- .../kubernetes/pkg/apis/extensions/BUILD | 10 +- .../pkg/apis/extensions/install/BUILD | 4 +- .../pkg/apis/extensions/v1beta1/BUILD | 34 +- .../v1beta1/zz_generated.conversion.go | 40 +- .../pkg/apis/extensions/validation/BUILD | 20 +- .../apis/extensions/zz_generated.deepcopy.go | 104 +- .../kubernetes/pkg/apis/imagepolicy/BUILD | 6 +- .../pkg/apis/imagepolicy/install/BUILD | 4 +- .../pkg/apis/imagepolicy/v1alpha1/BUILD | 8 +- .../kubernetes/pkg/apis/networking/BUILD | 8 +- .../pkg/apis/networking/install/BUILD | 4 +- .../kubernetes/pkg/apis/networking/v1/BUILD | 26 +- .../networking/v1/zz_generated.conversion.go | 14 +- .../apis/networking/zz_generated.deepcopy.go | 40 +- .../k8s.io/kubernetes/pkg/apis/policy/BUILD | 8 +- .../kubernetes/pkg/apis/policy/install/BUILD | 4 +- .../kubernetes/pkg/apis/policy/v1beta1/BUILD | 14 +- .../policy/v1beta1/zz_generated.conversion.go | 10 +- .../pkg/apis/policy/validation/BUILD | 14 +- .../pkg/apis/policy/zz_generated.deepcopy.go | 48 +- .../k8s.io/kubernetes/pkg/apis/rbac/BUILD | 16 +- .../kubernetes/pkg/apis/rbac/install/BUILD | 4 +- .../k8s.io/kubernetes/pkg/apis/rbac/v1/BUILD | 10 +- .../apis/rbac/v1/zz_generated.conversion.go | 6 +- .../kubernetes/pkg/apis/rbac/v1alpha1/BUILD | 15 +- .../kubernetes/pkg/apis/rbac/v1beta1/BUILD | 10 +- .../pkg/apis/rbac/zz_generated.deepcopy.go | 8 +- .../kubernetes/pkg/apis/scheduling/BUILD | 8 +- .../pkg/apis/scheduling/install/BUILD | 4 +- .../pkg/apis/scheduling/v1alpha1/BUILD | 8 +- .../pkg/apis/scheduling/v1beta1/BUILD | 8 +- .../k8s.io/kubernetes/pkg/apis/settings/BUILD | 6 +- .../pkg/apis/settings/install/BUILD | 4 +- .../pkg/apis/settings/v1alpha1/BUILD | 10 +- .../k8s.io/kubernetes/pkg/apis/storage/BUILD | 6 +- .../kubernetes/pkg/apis/storage/install/BUILD | 4 +- .../kubernetes/pkg/apis/storage/util/BUILD | 6 +- .../kubernetes/pkg/apis/storage/v1/BUILD | 21 +- .../storage/v1/zz_generated.conversion.go | 6 +- .../pkg/apis/storage/v1alpha1/BUILD | 8 +- .../kubernetes/pkg/apis/storage/v1beta1/BUILD | 21 +- .../pkg/apis/storage/zz_generated.deepcopy.go | 48 +- .../kubernetes/pkg/client/chaosclient/BUILD | 2 +- .../internalclientset/BUILD | 8 +- .../internalclientset/clientset.go | 14 + .../internalclientset/scheme/BUILD | 9 +- .../internalclientset/scheme/register.go | 2 + .../internalversion/BUILD | 8 +- .../typed/apps/internalversion/BUILD | 8 +- .../authentication/internalversion/BUILD | 2 +- .../typed/authorization/internalversion/BUILD | 2 +- .../typed/autoscaling/internalversion/BUILD | 8 +- .../typed/batch/internalversion/BUILD | 8 +- .../typed/certificates/internalversion/BUILD | 8 +- .../typed/coordination/internalversion/BUILD | 38 + .../internalversion/coordination_client.go | 96 + .../typed/coordination/internalversion/doc.go | 20 + .../internalversion/generated_expansion.go | 21 + .../coordination/internalversion/lease.go | 157 + .../typed/core/internalversion/BUILD | 16 +- .../typed/events/internalversion/BUILD | 2 +- .../typed/extensions/internalversion/BUILD | 8 +- .../typed/networking/internalversion/BUILD | 8 +- .../typed/policy/internalversion/BUILD | 8 +- .../typed/rbac/internalversion/BUILD | 8 +- .../typed/scheduling/internalversion/BUILD | 8 +- .../typed/settings/internalversion/BUILD | 8 +- .../typed/storage/internalversion/BUILD | 8 +- .../informers_generated/internalversion/BUILD | 11 +- .../internalversion/BUILD | 8 +- .../apps/internalversion/BUILD | 8 +- .../autoscaling/internalversion/BUILD | 8 +- .../batch/internalversion/BUILD | 8 +- .../certificates/internalversion/BUILD | 8 +- .../internalversion/coordination/BUILD | 29 + .../internalversion/coordination/interface.go | 46 + .../coordination/internalversion/BUILD | 35 + .../coordination/internalversion/interface.go | 45 + .../coordination/internalversion/lease.go | 89 + .../core/internalversion/BUILD | 8 +- .../extensions/internalversion/BUILD | 8 +- .../internalversion/factory.go | 6 + .../internalversion/generic.go | 5 + .../internalversion/internalinterfaces/BUILD | 6 +- .../networking/internalversion/BUILD | 8 +- .../policy/internalversion/BUILD | 8 +- .../rbac/internalversion/BUILD | 8 +- .../scheduling/internalversion/BUILD | 8 +- .../settings/internalversion/BUILD | 8 +- .../storage/internalversion/BUILD | 8 +- .../internalversion/BUILD | 6 +- .../client/listers/apps/internalversion/BUILD | 8 +- .../listers/autoscaling/internalversion/BUILD | 6 +- .../listers/batch/internalversion/BUILD | 16 +- .../certificates/internalversion/BUILD | 6 +- .../coordination/internalversion/BUILD | 31 + .../internalversion/expansion_generated.go | 27 + .../coordination/internalversion/lease.go | 94 + .../client/listers/core/internalversion/BUILD | 7 +- .../internalversion/expansion_generated.go | 4 + .../core/internalversion/node_expansion.go | 48 - .../listers/extensions/internalversion/BUILD | 16 +- .../listers/networking/internalversion/BUILD | 6 +- .../listers/policy/internalversion/BUILD | 8 +- .../client/listers/rbac/internalversion/BUILD | 6 +- .../listers/scheduling/internalversion/BUILD | 6 +- .../listers/settings/internalversion/BUILD | 6 +- .../listers/storage/internalversion/BUILD | 6 +- .../k8s.io/kubernetes/pkg/cloudprovider/BUILD | 6 +- .../kubernetes/pkg/cloudprovider/OWNERS | 1 + .../pkg/cloudprovider/providers/aws/BUILD | 28 +- .../pkg/cloudprovider/providers/aws/aws.go | 79 +- .../cloudprovider/providers/aws/volumes.go | 2 +- .../pkg/cloudprovider/providers/azure/BUILD | 24 +- .../providers/azure/azure_client.go | 96 +- .../providers/azure/azure_loadbalancer.go | 44 +- .../providers/azure/azure_loadbalancer.md | 77 - .../azure/azure_managedDiskController.go | 46 +- .../providers/azure/azure_standard.go | 8 +- .../providers/azure/azure_storageaccount.go | 5 +- .../providers/azure/azure_vmss.go | 4 +- .../providers/azure/azure_vmss_cache.go | 2 +- .../cloudprovider/providers/cloudstack/BUILD | 47 +- .../pkg/cloudprovider/providers/gce/BUILD | 48 +- .../cloudprovider/providers/gce/cloud/BUILD | 3 + .../providers/gce/cloud/errors.go | 48 + .../cloudprovider/providers/gce/cloud/gen.go | 1034 ++ .../providers/gce/cloud/meta/meta.go | 26 + .../cloudprovider/providers/gce/cloud/op.go | 52 +- .../providers/gce/cloud/ratelimit.go | 62 +- .../providers/gce/cloud/service.go | 51 +- .../pkg/cloudprovider/providers/gce/gce.go | 4 +- .../providers/gce/gce_address_manager.go | 2 +- .../providers/gce/gce_addresses.go | 61 +- .../cloudprovider/providers/gce/gce_alpha.go | 2 - .../providers/gce/gce_backendservice.go | 116 +- .../cloudprovider/providers/gce/gce_cert.go | 23 +- .../cloudprovider/providers/gce/gce_disks.go | 4 +- .../providers/gce/gce_firewall.go | 23 +- .../providers/gce/gce_forwardingrule.go | 62 +- .../providers/gce/gce_healthchecks.go | 122 +- .../providers/gce/gce_instancegroup.go | 43 +- .../providers/gce/gce_instances.go | 59 +- .../providers/gce/gce_loadbalancer_naming.go | 7 +- .../providers/gce/gce_networkendpointgroup.go | 93 +- .../cloudprovider/providers/gce/gce_routes.go | 16 +- .../providers/gce/gce_securitypolicy.go | 48 +- .../providers/gce/gce_targetpool.go | 28 +- .../providers/gce/gce_targetproxy.go | 66 +- .../cloudprovider/providers/gce/gce_urlmap.go | 28 +- .../cloudprovider/providers/gce/gce_zones.go | 6 +- .../cloudprovider/providers/gce/support.go | 18 +- .../cloudprovider/providers/openstack/BUILD | 26 +- .../providers/openstack/openstack.go | 6 + .../openstack/openstack_loadbalancer.go | 24 +- .../providers/openstack/openstack_volumes.go | 10 +- .../pkg/cloudprovider/providers/ovirt/BUILD | 4 +- .../pkg/cloudprovider/providers/photon/BUILD | 8 +- .../pkg/cloudprovider/providers/vsphere/BUILD | 27 +- .../cloudprovider/providers/vsphere/OWNERS | 2 + .../providers/vsphere/nodemanager.go | 15 +- .../providers/vsphere/vclib/BUILD | 4 + .../providers/vsphere/vclib/connection.go | 37 +- .../vsphere/vclib/diskmanagers/vmdm.go | 6 +- .../providers/vsphere/vsphere.go | 40 +- .../providers/vsphere/vsphere_util.go | 2 +- .../k8s.io/kubernetes/pkg/controller/BUILD | 89 +- .../pkg/controller/controller_utils.go | 9 +- .../pkg/controller/deployment/util/BUILD | 52 +- .../pkg/controller/volume/expand/cache/BUILD | 20 +- .../controller/volume/persistentvolume/BUILD | 91 +- .../controller/volume/persistentvolume/OWNERS | 6 + .../volume/persistentvolume/metrics/BUILD | 2 +- .../volume/persistentvolume/volume_host.go | 5 - .../kubernetes/pkg/credentialprovider/BUILD | 2 +- .../pkg/credentialprovider/gcp/BUILD | 4 +- .../pkg/credentialprovider/secrets/BUILD | 2 +- .../k8s.io/kubernetes/pkg/features/BUILD | 6 +- .../k8s.io/kubernetes/pkg/fieldpath/BUILD | 9 +- .../kubernetes/pkg/fieldpath/fieldpath.go | 10 +- .../k8s.io/kubernetes/pkg/kubectl/BUILD | 130 +- .../k8s.io/kubernetes/pkg/kubectl/apps/BUILD | 6 +- .../pkg/kubectl/genericclioptions/BUILD | 27 +- .../genericclioptions}/jsonpath_flags.go | 12 +- .../genericclioptions}/kube_template_flags.go | 23 +- .../kubectl/genericclioptions/print_flags.go | 45 +- .../kubectl/genericclioptions/printers/BUILD | 20 +- .../genericclioptions}/printers/jsonpath.go | 24 +- .../printers/sourcechecker.go | 2 +- .../genericclioptions}/printers/template.go | 5 +- .../kubectl/genericclioptions/resource/BUILD | 77 +- .../genericclioptions/resource/builder.go | 147 +- .../genericclioptions/resource/helper.go | 6 +- .../genericclioptions/resource/interfaces.go | 3 + .../genericclioptions/resource/mapper.go | 19 +- .../genericclioptions/resource/visitor.go | 24 +- .../genericclioptions}/template_flags.go | 12 +- .../kubernetes/pkg/kubectl/priorityclass.go | 2 +- .../kubernetes/pkg/kubectl/rollout_status.go | 2 +- .../k8s.io/kubernetes/pkg/kubectl/run.go | 15 +- .../kubernetes/pkg/kubectl/scheme/BUILD | 82 +- .../k8s.io/kubernetes/pkg/kubectl/util/BUILD | 47 +- .../kubernetes/pkg/kubectl/util/hash/BUILD | 4 +- .../k8s.io/kubernetes/pkg/kubelet/BUILD | 108 +- .../k8s.io/kubernetes/pkg/kubelet/apis/BUILD | 10 +- .../kubelet/apis/cri/runtime/v1alpha2/BUILD | 5 - .../kubelet/apis/deviceplugin/v1beta1/BUILD | 5 - .../pkg/kubelet/apis/kubeletconfig/BUILD | 12 +- .../kubelet/apis/kubeletconfig/scheme/BUILD | 6 +- .../pkg/kubelet/apis/kubeletconfig/types.go | 19 + .../kubelet/apis/kubeletconfig/v1beta1/BUILD | 10 +- .../apis/kubeletconfig/v1beta1/defaults.go | 3 + .../apis/kubeletconfig/v1beta1/types.go | 22 + .../v1beta1/zz_generated.conversion.go | 2 + .../v1beta1/zz_generated.deepcopy.go | 167 +- .../apis/kubeletconfig/validation/BUILD | 47 +- .../kubeletconfig/validation/validation.go | 2 +- .../kubeletconfig/zz_generated.deepcopy.go | 7 +- .../apis/pluginregistration/v1alpha1/BUILD | 6 - .../pkg/kubelet/apis/stats/v1alpha1/BUILD | 2 +- .../kubernetes/pkg/kubelet/cadvisor/BUILD | 78 +- .../pkg/kubelet/cadvisor/cadvisor_linux.go | 46 +- .../kubelet/cadvisor/cadvisor_unsupported.go | 2 +- .../pkg/kubelet/cadvisor/cadvisor_windows.go | 2 +- .../kubernetes/pkg/kubelet/certificate/BUILD | 33 +- .../pkg/kubelet/certificate/bootstrap/BUILD | 24 +- .../pkg/kubelet/certificate/kubelet.go | 59 +- .../kubernetes/pkg/kubelet/checkpoint/BUILD | 6 +- .../pkg/kubelet/cloud_request_manager.go | 116 + .../k8s.io/kubernetes/pkg/kubelet/cm/BUILD | 144 +- .../pkg/kubelet/cm/container_manager_linux.go | 14 +- .../pkg/kubelet/cm/cpumanager/BUILD | 12 +- .../pkg/kubelet/cm/cpumanager/cpu_manager.go | 14 +- .../kubelet/cm/cpumanager/policy_static.go | 2 - .../pkg/kubelet/cm/cpumanager/state/BUILD | 22 +- .../kubelet/cm/cpumanager/state/checkpoint.go | 67 + .../cm/cpumanager/state/state_checkpoint.go | 194 + .../pkg/kubelet/cm/devicemanager/BUILD | 16 +- .../pkg/kubelet/cm/devicemanager/manager.go | 1 - .../kubernetes/pkg/kubelet/cm/util/BUILD | 40 +- .../kubernetes/pkg/kubelet/config/BUILD | 93 +- .../kubernetes/pkg/kubelet/config/file.go | 8 +- .../kubernetes/pkg/kubelet/config/flags.go | 6 +- .../kubernetes/pkg/kubelet/configmap/BUILD | 26 +- .../kubelet/configmap/configmap_manager.go | 24 + .../kubernetes/pkg/kubelet/container/BUILD | 37 +- .../pkg/kubelet/container/testing/BUILD | 8 +- .../kubernetes/pkg/kubelet/dockershim/BUILD | 103 +- .../pkg/kubelet/dockershim/cm/BUILD | 42 +- .../pkg/kubelet/dockershim/libdocker/BUILD | 4 +- .../pkg/kubelet/dockershim/network/BUILD | 8 +- .../pkg/kubelet/dockershim/network/cni/BUILD | 53 +- .../pkg/kubelet/dockershim/network/cni/cni.go | 61 +- .../dockershim/network/cni/cni_windows.go | 2 +- .../kubelet/dockershim/network/hostport/BUILD | 8 +- .../network/hostport/hostport_manager.go | 2 +- .../network/hostport/hostport_syncer.go | 13 +- .../kubelet/dockershim/network/kubenet/BUILD | 52 +- .../kubernetes/pkg/kubelet/envvars/BUILD | 10 +- .../kubernetes/pkg/kubelet/eviction/BUILD | 65 +- .../kubernetes/pkg/kubelet/eviction/api/BUILD | 2 +- .../kubernetes/pkg/kubelet/images/BUILD | 22 +- .../k8s.io/kubernetes/pkg/kubelet/kubelet.go | 139 +- .../pkg/kubelet/kubelet_node_status.go | 88 +- .../kubernetes/pkg/kubelet/kubelet_pods.go | 2 +- .../pkg/kubelet/kubeletconfig/BUILD | 22 +- .../kubelet/kubeletconfig/checkpoint/BUILD | 28 +- .../kubeletconfig/checkpoint/store/BUILD | 6 +- .../kubelet/kubeletconfig/configfiles/BUILD | 4 +- .../pkg/kubelet/kubeletconfig/status/BUILD | 8 +- .../kubelet/kubeletconfig/util/codec/BUILD | 6 +- .../kubelet/kubeletconfig/util/panic/BUILD | 2 +- .../kubernetes/pkg/kubelet/kuberuntime/BUILD | 98 +- .../kuberuntime/kuberuntime_manager.go | 18 - .../kuberuntime/kuberuntime_sandbox.go | 3 + .../pkg/kubelet/kuberuntime/logs/BUILD | 6 +- .../kubelet/kuberuntime/security_context.go | 3 + .../kubernetes/pkg/kubelet/lifecycle/BUILD | 12 +- .../k8s.io/kubernetes/pkg/kubelet/logs/BUILD | 8 +- .../pkg/kubelet/logs/container_log_manager.go | 2 +- .../kubernetes/pkg/kubelet/metrics/BUILD | 4 +- .../pkg/kubelet/metrics/collectors/BUILD | 4 +- .../kubernetes/pkg/kubelet/metrics/metrics.go | 2 +- .../kubernetes/pkg/kubelet/mountpod/BUILD | 8 +- .../kubernetes/pkg/kubelet/network/dns/BUILD | 18 +- .../kubernetes/pkg/kubelet/network/dns/dns.go | 8 +- .../k8s.io/kubernetes/pkg/kubelet/pleg/BUILD | 14 +- .../k8s.io/kubernetes/pkg/kubelet/pod/BUILD | 16 +- .../kubernetes/pkg/kubelet/pod_workers.go | 2 +- .../kubernetes/pkg/kubelet/preemption/BUILD | 14 +- .../kubernetes/pkg/kubelet/prober/BUILD | 30 +- .../pkg/kubelet/prober/results/BUILD | 10 +- .../k8s.io/kubernetes/pkg/kubelet/qos/BUILD | 6 +- .../kubernetes/pkg/kubelet/remote/utils.go | 4 +- .../k8s.io/kubernetes/pkg/kubelet/runtime.go | 6 - .../kubernetes/pkg/kubelet/secret/BUILD | 26 +- .../pkg/kubelet/secret/secret_manager.go | 24 + .../kubernetes/pkg/kubelet/server/BUILD | 46 +- .../pkg/kubelet/server/portforward/BUILD | 14 +- .../pkg/kubelet/server/remotecommand/BUILD | 20 +- .../kubernetes/pkg/kubelet/server/server.go | 1 + .../kubernetes/pkg/kubelet/server/stats/BUILD | 14 +- .../pkg/kubelet/server/streaming/BUILD | 16 +- .../k8s.io/kubernetes/pkg/kubelet/stats/BUILD | 49 +- .../kubernetes/pkg/kubelet/status/BUILD | 32 +- .../k8s.io/kubernetes/pkg/kubelet/token/BUILD | 14 +- .../k8s.io/kubernetes/pkg/kubelet/types/BUILD | 10 +- .../k8s.io/kubernetes/pkg/kubelet/util/BUILD | 46 +- .../kubernetes/pkg/kubelet/util/cache/BUILD | 6 +- .../kubernetes/pkg/kubelet/util/format/BUILD | 8 +- .../kubernetes/pkg/kubelet/util/manager/BUILD | 46 +- .../pkg/kubelet/util/pluginwatcher/BUILD | 7 +- .../pkg/kubelet/util/pluginwatcher/README | 13 +- .../util/pluginwatcher/example_handler.go | 105 + .../util/pluginwatcher/example_plugin.go | 19 +- .../example_plugin_apis/v1beta1/BUILD | 6 - .../example_plugin_apis/v1beta2/BUILD | 6 - .../util/pluginwatcher/plugin_watcher.go | 163 +- .../kubernetes/pkg/kubelet/util/queue/BUILD | 10 +- .../pkg/kubelet/util/sliceutils/BUILD | 6 +- .../kubernetes/pkg/kubelet/volume_host.go | 5 - .../pkg/kubelet/volumemanager/BUILD | 28 +- .../pkg/kubelet/volumemanager/cache/BUILD | 10 +- .../pkg/kubelet/volumemanager/populator/BUILD | 28 +- .../desired_state_of_world_populator.go | 2 +- .../kubelet/volumemanager/reconciler/BUILD | 32 +- .../kubernetes/pkg/kubelet/winstats/BUILD | 23 +- .../k8s.io/kubernetes/pkg/kubemark/BUILD | 25 +- .../kubernetes/pkg/kubemark/hollow_kubelet.go | 2 - .../kubernetes/pkg/kubemark/hollow_proxy.go | 6 +- .../k8s.io/kubernetes/pkg/printers/BUILD | 34 +- .../kubernetes/pkg/printers/customcolumn.go | 2 +- .../kubernetes/pkg/printers/humanreadable.go | 27 +- .../pkg/printers/internalversion/BUILD | 85 +- .../pkg/printers/internalversion/describe.go | 124 +- .../pkg/printers/internalversion/printers.go | 133 +- .../k8s.io/kubernetes/pkg/probe/http/BUILD | 2 +- .../vendor/k8s.io/kubernetes/pkg/proxy/BUILD | 14 +- .../pkg/proxy/apis/kubeproxyconfig/BUILD | 6 +- .../proxy/apis/kubeproxyconfig/scheme/BUILD | 7 +- .../apis/kubeproxyconfig/scheme/scheme.go | 5 +- .../proxy/apis/kubeproxyconfig/v1alpha1/BUILD | 8 +- .../apis/kubeproxyconfig/v1alpha1/types.go | 2 +- .../v1alpha1/zz_generated.deepcopy.go | 56 +- .../apis/kubeproxyconfig/validation/BUILD | 10 +- .../kubeproxyconfig/validation/validation.go | 4 +- .../kubeproxyconfig/zz_generated.deepcopy.go | 56 +- .../k8s.io/kubernetes/pkg/proxy/config/BUILD | 14 +- .../kubernetes/pkg/proxy/healthcheck/BUILD | 16 +- .../kubernetes/pkg/proxy/iptables/BUILD | 18 +- .../kubernetes/pkg/proxy/iptables/proxier.go | 91 +- .../k8s.io/kubernetes/pkg/proxy/ipvs/BUILD | 57 +- .../k8s.io/kubernetes/pkg/proxy/ipvs/OWNERS | 1 + .../kubernetes/pkg/proxy/ipvs/README.md | 336 +- .../kubernetes/pkg/proxy/ipvs/netlink.go | 2 + .../pkg/proxy/ipvs/netlink_linux.go | 17 + .../pkg/proxy/ipvs/netlink_unsupported.go | 5 + .../kubernetes/pkg/proxy/ipvs/proxier.go | 137 +- .../kubernetes/pkg/proxy/userspace/BUILD | 61 +- .../k8s.io/kubernetes/pkg/proxy/util/BUILD | 14 +- .../kubernetes/pkg/proxy/winkernel/BUILD | 16 +- .../kubernetes/pkg/proxy/winuserspace/BUILD | 12 +- .../vendor/k8s.io/kubernetes/pkg/quota/BUILD | 16 +- .../k8s.io/kubernetes/pkg/quota/resources.go | 28 +- .../pkg/registry/rbac/validation/BUILD | 20 +- .../pkg/registry/rbac/validation/rule.go | 21 +- .../k8s.io/kubernetes/pkg/scheduler/BUILD | 37 +- .../kubernetes/pkg/scheduler/algorithm/BUILD | 12 +- .../pkg/scheduler/algorithm/predicates/BUILD | 40 +- .../pkg/scheduler/algorithm/priorities/BUILD | 26 +- .../balanced_resource_allocation.go | 2 +- .../algorithm/priorities/image_locality.go | 66 +- .../algorithm/priorities/least_requested.go | 2 +- .../algorithm/priorities/metadata.go | 2 + .../algorithm/priorities/most_requested.go | 4 +- .../algorithm/priorities/resource_limits.go | 2 +- .../scheduler/algorithm/priorities/util/BUILD | 20 +- .../pkg/scheduler/algorithmprovider/BUILD | 2 +- .../algorithmprovider/defaults/BUILD | 20 +- .../k8s.io/kubernetes/pkg/scheduler/api/BUILD | 12 +- .../pkg/scheduler/api/validation/BUILD | 8 +- .../scheduler/api/zz_generated.deepcopy.go | 163 +- .../kubernetes/pkg/scheduler/cache/BUILD | 34 +- .../kubernetes/pkg/scheduler/cache/cache.go | 90 + .../pkg/scheduler/cache/node_info.go | 30 +- .../kubernetes/pkg/scheduler/cache/util.go | 43 +- .../kubernetes/pkg/scheduler/core/BUILD | 50 +- .../pkg/scheduler/core/equivalence/BUILD | 47 + .../eqivalence.go} | 240 +- .../pkg/scheduler/core/generic_scheduler.go | 66 +- .../pkg/scheduler/core/scheduling_queue.go | 4 +- .../kubernetes/pkg/scheduler/factory/BUILD | 110 +- .../pkg/scheduler/factory/factory.go | 46 +- .../pkg/scheduler/metrics/metrics.go | 48 +- .../kubernetes/pkg/scheduler/scheduler.go | 14 +- .../kubernetes/pkg/scheduler/util/BUILD | 10 +- .../pkg/scheduler/volumebinder/BUILD | 12 +- .../kubernetes/pkg/security/apparmor/BUILD | 43 +- .../security/podsecuritypolicy/seccomp/BUILD | 4 +- .../security/podsecuritypolicy/sysctl/BUILD | 2 +- .../pkg/security/podsecuritypolicy/util/BUILD | 2 +- .../kubernetes/pkg/securitycontext/BUILD | 6 +- .../kubernetes/pkg/serviceaccount/BUILD | 33 +- .../kubernetes/pkg/serviceaccount/claims.go | 2 +- .../k8s.io/kubernetes/pkg/util/async/BUILD | 2 +- .../kubernetes/pkg/util/bandwidth/BUILD | 55 +- .../k8s.io/kubernetes/pkg/util/config/BUILD | 2 +- .../kubernetes/pkg/util/conntrack/BUILD | 12 +- .../k8s.io/kubernetes/pkg/util/flock/BUILD | 40 +- .../kubernetes/pkg/util/goroutinemap/BUILD | 4 +- .../k8s.io/kubernetes/pkg/util/io/BUILD | 9 +- .../k8s.io/kubernetes/pkg/util/io/writer.go | 87 - .../k8s.io/kubernetes/pkg/util/ipset/BUILD | 2 +- .../k8s.io/kubernetes/pkg/util/ipset/OWNERS | 1 + .../k8s.io/kubernetes/pkg/util/ipset/ipset.go | 5 +- .../k8s.io/kubernetes/pkg/util/iptables/BUILD | 58 +- .../kubernetes/pkg/util/iptables/iptables.go | 23 +- .../pkg/util/iptables/save_restore.go | 40 +- .../k8s.io/kubernetes/pkg/util/ipvs/BUILD | 64 +- .../k8s.io/kubernetes/pkg/util/labels/BUILD | 4 +- .../k8s.io/kubernetes/pkg/util/mount/BUILD | 84 +- .../kubernetes/pkg/util/mount/exec_mount.go | 4 + .../pkg/util/mount/exec_mount_unsupported.go | 4 + .../k8s.io/kubernetes/pkg/util/mount/fake.go | 13 +- .../k8s.io/kubernetes/pkg/util/mount/mount.go | 3 + .../kubernetes/pkg/util/mount/mount_linux.go | 43 +- .../pkg/util/mount/mount_unsupported.go | 10 +- .../pkg/util/mount/mount_windows.go | 39 +- .../pkg/util/mount/nsenter_mount.go | 4 + .../util/mount/nsenter_mount_unsupported.go | 4 + .../k8s.io/kubernetes/pkg/util/node/BUILD | 16 +- .../k8s.io/kubernetes/pkg/util/node/node.go | 7 - .../k8s.io/kubernetes/pkg/util/nsenter/BUILD | 49 +- .../k8s.io/kubernetes/pkg/util/nsenter/OWNERS | 8 + .../kubernetes/pkg/util/nsenter/exec.go | 67 + .../pkg/util/nsenter/exec_unsupported.go | 58 + .../k8s.io/kubernetes/pkg/util/oom/BUILD | 46 +- .../k8s.io/kubernetes/pkg/util/pod/BUILD | 14 +- .../k8s.io/kubernetes/pkg/util/procfs/BUILD | 48 +- .../kubernetes/pkg/util/removeall/BUILD | 2 +- .../k8s.io/kubernetes/pkg/util/resizefs/BUILD | 40 +- .../pkg/util/resourcecontainer/BUILD | 40 +- .../k8s.io/kubernetes/pkg/util/rlimit/BUILD | 40 +- .../k8s.io/kubernetes/pkg/util/selinux/BUILD | 39 +- .../k8s.io/kubernetes/pkg/util/slice/BUILD | 2 +- .../k8s.io/kubernetes/pkg/util/taints/BUILD | 10 +- .../k8s.io/kubernetes/pkg/version/BUILD | 2 +- .../k8s.io/kubernetes/pkg/version/def.bzl | 45 +- .../vendor/k8s.io/kubernetes/pkg/volume/BUILD | 83 +- .../kubernetes/pkg/volume/aws_ebs/BUILD | 22 +- .../kubernetes/pkg/volume/aws_ebs/attacher.go | 2 +- .../kubernetes/pkg/volume/aws_ebs/aws_ebs.go | 14 +- .../kubernetes/pkg/volume/azure_dd/BUILD | 62 +- .../pkg/volume/azure_dd/azure_dd.go | 9 +- .../pkg/volume/azure_dd/azure_provision.go | 28 +- .../kubernetes/pkg/volume/azure_file/BUILD | 18 +- .../k8s.io/kubernetes/pkg/volume/cephfs/BUILD | 12 +- .../kubernetes/pkg/volume/cephfs/OWNERS | 2 + .../k8s.io/kubernetes/pkg/volume/cinder/BUILD | 28 +- .../kubernetes/pkg/volume/cinder/attacher.go | 2 +- .../kubernetes/pkg/volume/cinder/cinder.go | 22 +- .../pkg/volume/cinder/cinder_block.go | 167 + .../pkg/volume/cinder/cinder_util.go | 9 +- .../kubernetes/pkg/volume/configmap/BUILD | 19 +- .../pkg/volume/configmap/configmap.go | 4 - .../k8s.io/kubernetes/pkg/volume/csi/BUILD | 41 +- .../kubernetes/pkg/volume/csi/csi_attacher.go | 92 +- .../kubernetes/pkg/volume/csi/csi_block.go | 77 +- .../kubernetes/pkg/volume/csi/csi_mounter.go | 5 - .../kubernetes/pkg/volume/csi/csi_plugin.go | 10 +- .../pkg/volume/csi/labelmanager/BUILD | 10 +- .../kubernetes/pkg/volume/downwardapi/BUILD | 18 +- .../pkg/volume/downwardapi/downwardapi.go | 14 +- .../kubernetes/pkg/volume/empty_dir/BUILD | 64 +- .../k8s.io/kubernetes/pkg/volume/fc/BUILD | 18 +- .../kubernetes/pkg/volume/fc/attacher.go | 2 +- .../k8s.io/kubernetes/pkg/volume/fc/fc.go | 2 +- .../kubernetes/pkg/volume/fc/fc_util.go | 2 +- .../kubernetes/pkg/volume/flexvolume/BUILD | 14 +- .../volume/flexvolume/attacher-defaults.go | 6 +- .../pkg/volume/flexvolume/plugin.go | 8 +- .../kubernetes/pkg/volume/flexvolume/probe.go | 12 +- .../kubernetes/pkg/volume/flocker/BUILD | 18 +- .../k8s.io/kubernetes/pkg/volume/gce_pd/BUILD | 26 +- .../kubernetes/pkg/volume/gce_pd/attacher.go | 3 +- .../kubernetes/pkg/volume/gce_pd/gce_pd.go | 16 +- .../kubernetes/pkg/volume/gce_pd/gce_util.go | 4 +- .../kubernetes/pkg/volume/git_repo/BUILD | 10 +- .../kubernetes/pkg/volume/glusterfs/BUILD | 32 +- .../kubernetes/pkg/volume/host_path/BUILD | 20 +- .../k8s.io/kubernetes/pkg/volume/iscsi/BUILD | 18 +- .../kubernetes/pkg/volume/iscsi/attacher.go | 2 +- .../kubernetes/pkg/volume/iscsi/iscsi.go | 2 +- .../kubernetes/pkg/volume/iscsi/iscsi_util.go | 2 +- .../k8s.io/kubernetes/pkg/volume/local/BUILD | 49 +- .../kubernetes/pkg/volume/local/local.go | 2 + .../k8s.io/kubernetes/pkg/volume/nfs/BUILD | 16 +- .../kubernetes/pkg/volume/photon_pd/BUILD | 14 +- .../pkg/volume/photon_pd/attacher.go | 2 +- .../k8s.io/kubernetes/pkg/volume/plugins.go | 7 +- .../kubernetes/pkg/volume/portworx/BUILD | 16 +- .../pkg/volume/portworx/portworx_util.go | 11 +- .../kubernetes/pkg/volume/projected/BUILD | 24 +- .../pkg/volume/projected/projected.go | 16 +- .../kubernetes/pkg/volume/quobyte/BUILD | 18 +- .../k8s.io/kubernetes/pkg/volume/rbd/BUILD | 34 +- .../k8s.io/kubernetes/pkg/volume/rbd/OWNERS | 2 + .../kubernetes/pkg/volume/rbd/attacher.go | 2 +- .../k8s.io/kubernetes/pkg/volume/rbd/rbd.go | 21 +- .../kubernetes/pkg/volume/rbd/rbd_util.go | 4 + .../kubernetes/pkg/volume/scaleio/BUILD | 22 +- .../k8s.io/kubernetes/pkg/volume/secret/BUILD | 19 +- .../kubernetes/pkg/volume/secret/secret.go | 4 - .../kubernetes/pkg/volume/storageos/BUILD | 20 +- .../k8s.io/kubernetes/pkg/volume/util/BUILD | 83 +- .../kubernetes/pkg/volume/util/fs/BUILD | 63 +- .../volume/util/nestedpendingoperations/BUILD | 8 +- .../pkg/volume/util/operationexecutor/BUILD | 22 +- .../operationexecutor/operation_executor.go | 2 +- .../operationexecutor/operation_generator.go | 11 + .../pkg/volume/util/recyclerclient/BUILD | 20 +- .../kubernetes/pkg/volume/util/types/BUILD | 2 +- .../k8s.io/kubernetes/pkg/volume/util/util.go | 4 +- .../pkg/volume/util/volumepathhandler/BUILD | 41 +- .../kubernetes/pkg/volume/validation/BUILD | 6 +- .../pkg/volume/vsphere_volume/BUILD | 14 +- .../pkg/volume/vsphere_volume/attacher.go | 2 +- .../kubernetes/pkg/windows/service/BUILD | 7 +- .../vendor/k8s.io/kubernetes/test/utils/BUILD | 44 +- 1363 files changed, 48397 insertions(+), 28132 deletions(-) create mode 100644 cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/legacy18.go create mode 100644 cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/legacy19.go create mode 100644 cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/safeopen.go delete mode 100644 cluster-autoscaler/vendor/github.com/abbot/go-http-auth/.gitignore delete mode 100644 cluster-autoscaler/vendor/github.com/abbot/go-http-auth/LICENSE delete mode 100644 cluster-autoscaler/vendor/github.com/abbot/go-http-auth/Makefile delete mode 100644 cluster-autoscaler/vendor/github.com/abbot/go-http-auth/README.md delete mode 100644 cluster-autoscaler/vendor/github.com/abbot/go-http-auth/auth.go delete mode 100644 cluster-autoscaler/vendor/github.com/abbot/go-http-auth/basic.go delete mode 100644 cluster-autoscaler/vendor/github.com/abbot/go-http-auth/digest.go delete mode 100644 cluster-autoscaler/vendor/github.com/abbot/go-http-auth/md5crypt.go delete mode 100644 cluster-autoscaler/vendor/github.com/abbot/go-http-auth/misc.go delete mode 100644 cluster-autoscaler/vendor/github.com/abbot/go-http-auth/test.htdigest delete mode 100644 cluster-autoscaler/vendor/github.com/abbot/go-http-auth/test.htpasswd delete mode 100644 cluster-autoscaler/vendor/github.com/abbot/go-http-auth/users.go create mode 100644 cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/corehandlers/user_agent.go create mode 100644 cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/csm/doc.go create mode 100644 cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/csm/enable.go create mode 100644 cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/csm/metric.go create mode 100644 cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/csm/metricChan.go create mode 100644 cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/csm/reporter.go create mode 100644 cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/internal/sdkio/io_go1.6.go create mode 100644 cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/internal/sdkio/io_go1.7.go create mode 100644 cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/internal/sdkrand/locked_source.go create mode 100644 cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/private/protocol/jsonvalue.go create mode 100644 cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/private/protocol/payload.go delete mode 100644 cluster-autoscaler/vendor/github.com/google/cadvisor/api/handler.go delete mode 100644 cluster-autoscaler/vendor/github.com/google/cadvisor/api/versions.go delete mode 100644 cluster-autoscaler/vendor/github.com/google/cadvisor/healthz/healthz.go delete mode 100644 cluster-autoscaler/vendor/github.com/google/cadvisor/http/handlers.go delete mode 100644 cluster-autoscaler/vendor/github.com/google/cadvisor/http/mux/mux.go delete mode 100644 cluster-autoscaler/vendor/github.com/google/cadvisor/pages/containers.go delete mode 100644 cluster-autoscaler/vendor/github.com/google/cadvisor/pages/docker.go delete mode 100644 cluster-autoscaler/vendor/github.com/google/cadvisor/pages/pages.go delete mode 100644 cluster-autoscaler/vendor/github.com/google/cadvisor/pages/static/assets.go delete mode 100644 cluster-autoscaler/vendor/github.com/google/cadvisor/pages/static/static.go delete mode 100644 cluster-autoscaler/vendor/github.com/google/cadvisor/pages/templates.go delete mode 100644 cluster-autoscaler/vendor/github.com/google/cadvisor/validate/validate.go create mode 100644 cluster-autoscaler/vendor/github.com/satori/go.uuid/codec.go create mode 100644 cluster-autoscaler/vendor/github.com/satori/go.uuid/generator.go create mode 100644 cluster-autoscaler/vendor/github.com/satori/go.uuid/sql.go create mode 100644 cluster-autoscaler/vendor/k8s.io/api/coordination/v1beta1/BUILD create mode 100644 cluster-autoscaler/vendor/k8s.io/api/coordination/v1beta1/doc.go create mode 100644 cluster-autoscaler/vendor/k8s.io/api/coordination/v1beta1/generated.pb.go create mode 100644 cluster-autoscaler/vendor/k8s.io/api/coordination/v1beta1/generated.proto create mode 100644 cluster-autoscaler/vendor/k8s.io/api/coordination/v1beta1/register.go create mode 100644 cluster-autoscaler/vendor/k8s.io/api/coordination/v1beta1/types.go create mode 100644 cluster-autoscaler/vendor/k8s.io/api/coordination/v1beta1/types_swagger_doc_generated.go create mode 100644 cluster-autoscaler/vendor/k8s.io/api/coordination/v1beta1/zz_generated.deepcopy.go create mode 100644 cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/naming/BUILD create mode 100644 cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/naming/from_stack.go delete mode 100644 cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/cacher.go delete mode 100644 cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/time_budget.go delete mode 100644 cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/watch_cache.go create mode 100644 cluster-autoscaler/vendor/k8s.io/client-go/discovery/doc.go delete mode 100644 cluster-autoscaler/vendor/k8s.io/client-go/discovery/unstructured.go create mode 100644 cluster-autoscaler/vendor/k8s.io/client-go/informers/coordination/BUILD create mode 100644 cluster-autoscaler/vendor/k8s.io/client-go/informers/coordination/interface.go create mode 100644 cluster-autoscaler/vendor/k8s.io/client-go/informers/coordination/v1beta1/BUILD create mode 100644 cluster-autoscaler/vendor/k8s.io/client-go/informers/coordination/v1beta1/interface.go create mode 100644 cluster-autoscaler/vendor/k8s.io/client-go/informers/coordination/v1beta1/lease.go create mode 100644 cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/BUILD create mode 100644 cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/coordination_client.go create mode 100644 cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/doc.go create mode 100644 cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake/BUILD create mode 100644 cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake/doc.go create mode 100644 cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake/fake_coordination_client.go create mode 100644 cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake/fake_lease.go create mode 100644 cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/generated_expansion.go create mode 100644 cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/lease.go create mode 100644 cluster-autoscaler/vendor/k8s.io/client-go/listers/coordination/v1beta1/BUILD create mode 100644 cluster-autoscaler/vendor/k8s.io/client-go/listers/coordination/v1beta1/expansion_generated.go create mode 100644 cluster-autoscaler/vendor/k8s.io/client-go/listers/coordination/v1beta1/lease.go create mode 100644 cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/BUILD create mode 100644 cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/doc.go create mode 100644 cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/install/BUILD create mode 100644 cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/install/install.go create mode 100644 cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/register.go create mode 100644 cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/types.go create mode 100644 cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/v1beta1/BUILD create mode 100644 cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/v1beta1/doc.go create mode 100644 cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/v1beta1/register.go create mode 100644 cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/v1beta1/zz_generated.conversion.go create mode 100644 cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/v1beta1/zz_generated.defaults.go create mode 100644 cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/zz_generated.deepcopy.go create mode 100644 cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/coordination/internalversion/BUILD create mode 100644 cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/coordination/internalversion/coordination_client.go create mode 100644 cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/coordination/internalversion/doc.go create mode 100644 cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/coordination/internalversion/generated_expansion.go create mode 100644 cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/coordination/internalversion/lease.go create mode 100644 cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/coordination/BUILD create mode 100644 cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/coordination/interface.go create mode 100644 cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/coordination/internalversion/BUILD create mode 100644 cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/coordination/internalversion/interface.go create mode 100644 cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/coordination/internalversion/lease.go create mode 100644 cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/coordination/internalversion/BUILD create mode 100644 cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/coordination/internalversion/expansion_generated.go create mode 100644 cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/coordination/internalversion/lease.go delete mode 100644 cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/core/internalversion/node_expansion.go delete mode 100644 cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/azure/azure_loadbalancer.md create mode 100644 cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/errors.go rename cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/{printers => kubectl/genericclioptions}/jsonpath_flags.go (89%) rename cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/{printers => kubectl/genericclioptions}/kube_template_flags.go (85%) rename cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/{ => kubectl/genericclioptions}/printers/jsonpath.go (88%) rename cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/{ => kubectl/genericclioptions}/printers/template.go (93%) rename cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/{printers => kubectl/genericclioptions}/template_flags.go (91%) create mode 100644 cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cloud_request_manager.go create mode 100644 cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state/checkpoint.go create mode 100644 cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state/state_checkpoint.go create mode 100644 cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/pluginwatcher/example_handler.go create mode 100644 cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/core/equivalence/BUILD rename cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/core/{equivalence_cache.go => equivalence/eqivalence.go} (53%) delete mode 100644 cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/io/writer.go create mode 100644 cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/nsenter/OWNERS create mode 100644 cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/nsenter/exec.go create mode 100644 cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/nsenter/exec_unsupported.go create mode 100644 cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/cinder/cinder_block.go diff --git a/cluster-autoscaler/Godeps/Godeps.json b/cluster-autoscaler/Godeps/Godeps.json index 646da530a6..ef76435b15 100644 --- a/cluster-autoscaler/Godeps/Godeps.json +++ b/cluster-autoscaler/Godeps/Godeps.json @@ -1,7 +1,7 @@ { "ImportPath": "k8s.io/autoscaler/cluster-autoscaler", - "GoVersion": "go1.9", - "GodepVersion": "v79", + "GoVersion": "go1.10", + "GodepVersion": "v80", "Packages": [ "./..." ], @@ -23,43 +23,43 @@ }, { "ImportPath": "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute", - "Comment": "v14.6.0-1-g8b2f7712", - "Rev": "8b2f771246f47b03a3a53d586cc3ab9bf6c77d91" + "Comment": "v14.6.0-1-g925867aa", + "Rev": "925867aa958c240707f9f937687cefc67f6cd86d" }, { "ImportPath": "github.com/Azure/azure-sdk-for-go/services/containerregistry/mgmt/2017-10-01/containerregistry", - "Comment": "v14.6.0-1-g8b2f7712", - "Rev": "8b2f771246f47b03a3a53d586cc3ab9bf6c77d91" + "Comment": "v14.6.0-1-g925867aa", + "Rev": "925867aa958c240707f9f937687cefc67f6cd86d" }, { "ImportPath": "github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2017-09-30/containerservice", - "Comment": "v14.6.0-1-g8b2f7712", - "Rev": "8b2f771246f47b03a3a53d586cc3ab9bf6c77d91" + "Comment": "v14.6.0-1-g925867aa", + "Rev": "925867aa958c240707f9f937687cefc67f6cd86d" }, { "ImportPath": "github.com/Azure/azure-sdk-for-go/services/network/mgmt/2017-09-01/network", - "Comment": "v14.6.0-1-g8b2f7712", - "Rev": "8b2f771246f47b03a3a53d586cc3ab9bf6c77d91" + "Comment": "v14.6.0-1-g925867aa", + "Rev": "925867aa958c240707f9f937687cefc67f6cd86d" }, { "ImportPath": "github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources", - "Comment": "v14.6.0-1-g8b2f7712", - "Rev": "8b2f771246f47b03a3a53d586cc3ab9bf6c77d91" + "Comment": "v14.6.0-1-g925867aa", + "Rev": "925867aa958c240707f9f937687cefc67f6cd86d" }, { "ImportPath": "github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2017-10-01/storage", - "Comment": "v14.6.0-1-g8b2f7712", - "Rev": "8b2f771246f47b03a3a53d586cc3ab9bf6c77d91" + "Comment": "v14.6.0-1-g925867aa", + "Rev": "925867aa958c240707f9f937687cefc67f6cd86d" }, { "ImportPath": "github.com/Azure/azure-sdk-for-go/storage", - "Comment": "v14.6.0-1-g8b2f7712", - "Rev": "8b2f771246f47b03a3a53d586cc3ab9bf6c77d91" + "Comment": "v14.6.0-1-g925867aa", + "Rev": "925867aa958c240707f9f937687cefc67f6cd86d" }, { "ImportPath": "github.com/Azure/azure-sdk-for-go/version", - "Comment": "v14.6.0-1-g8b2f7712", - "Rev": "8b2f771246f47b03a3a53d586cc3ab9bf6c77d91" + "Comment": "v14.6.0-1-g925867aa", + "Rev": "925867aa958c240707f9f937687cefc67f6cd86d" }, { "ImportPath": "github.com/Azure/go-ansiterm", @@ -110,8 +110,8 @@ }, { "ImportPath": "github.com/Microsoft/hcsshim", - "Comment": "V0.6.3", - "Rev": "6ea7fe54f719d95721e7d9b26ac0add224c9b923" + "Comment": "v0.6.11", + "Rev": "800683ae704ac360b2f3f47fa88f3a6c8c9091b5" }, { "ImportPath": "github.com/NYTimes/gziphandler", @@ -130,173 +130,184 @@ "ImportPath": "github.com/PuerkitoBio/urlesc", "Rev": "5bd2802263f21d8788851d5305584c82a5c75d7e" }, - { - "ImportPath": "github.com/abbot/go-http-auth", - "Rev": "c0ef4539dfab4d21c8ef20ba2924f9fc6f186d35" - }, { "ImportPath": "github.com/armon/circbuf", "Rev": "bbbad097214e2918d8543d5201d12bfd7bca254d" }, { "ImportPath": "github.com/aws/aws-sdk-go/aws", - "Comment": "v1.12.7-2-g35b3dd92", - "Rev": "35b3dd923175c53ba42bd0dd19915318cc2fc456" + "Comment": "v1.14.12-2-gcf4e3e02", + "Rev": "cf4e3e0222723fcf50743bc20f10a3285559508e" }, { "ImportPath": "github.com/aws/aws-sdk-go/aws/awserr", - "Comment": "v1.12.7-2-g35b3dd92", - "Rev": "35b3dd923175c53ba42bd0dd19915318cc2fc456" + "Comment": "v1.14.12-2-gcf4e3e02", + "Rev": "cf4e3e0222723fcf50743bc20f10a3285559508e" }, { "ImportPath": "github.com/aws/aws-sdk-go/aws/awsutil", - "Comment": "v1.12.7-2-g35b3dd92", - "Rev": "35b3dd923175c53ba42bd0dd19915318cc2fc456" + "Comment": "v1.14.12-2-gcf4e3e02", + "Rev": "cf4e3e0222723fcf50743bc20f10a3285559508e" }, { "ImportPath": "github.com/aws/aws-sdk-go/aws/client", - "Comment": "v1.12.7-2-g35b3dd92", - "Rev": "35b3dd923175c53ba42bd0dd19915318cc2fc456" + "Comment": "v1.14.12-2-gcf4e3e02", + "Rev": "cf4e3e0222723fcf50743bc20f10a3285559508e" }, { "ImportPath": "github.com/aws/aws-sdk-go/aws/client/metadata", - "Comment": "v1.12.7-2-g35b3dd92", - "Rev": "35b3dd923175c53ba42bd0dd19915318cc2fc456" + "Comment": "v1.14.12-2-gcf4e3e02", + "Rev": "cf4e3e0222723fcf50743bc20f10a3285559508e" }, { "ImportPath": "github.com/aws/aws-sdk-go/aws/corehandlers", - "Comment": "v1.12.7-2-g35b3dd92", - "Rev": "35b3dd923175c53ba42bd0dd19915318cc2fc456" + "Comment": "v1.14.12-2-gcf4e3e02", + "Rev": "cf4e3e0222723fcf50743bc20f10a3285559508e" }, { "ImportPath": "github.com/aws/aws-sdk-go/aws/credentials", - "Comment": "v1.12.7-2-g35b3dd92", - "Rev": "35b3dd923175c53ba42bd0dd19915318cc2fc456" + "Comment": "v1.14.12-2-gcf4e3e02", + "Rev": "cf4e3e0222723fcf50743bc20f10a3285559508e" }, { "ImportPath": "github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds", - "Comment": "v1.12.7-2-g35b3dd92", - "Rev": "35b3dd923175c53ba42bd0dd19915318cc2fc456" + "Comment": "v1.14.12-2-gcf4e3e02", + "Rev": "cf4e3e0222723fcf50743bc20f10a3285559508e" }, { "ImportPath": "github.com/aws/aws-sdk-go/aws/credentials/endpointcreds", - "Comment": "v1.12.7-2-g35b3dd92", - "Rev": "35b3dd923175c53ba42bd0dd19915318cc2fc456" + "Comment": "v1.14.12-2-gcf4e3e02", + "Rev": "cf4e3e0222723fcf50743bc20f10a3285559508e" }, { "ImportPath": "github.com/aws/aws-sdk-go/aws/credentials/stscreds", - "Comment": "v1.12.7-2-g35b3dd92", - "Rev": "35b3dd923175c53ba42bd0dd19915318cc2fc456" + "Comment": "v1.14.12-2-gcf4e3e02", + "Rev": "cf4e3e0222723fcf50743bc20f10a3285559508e" + }, + { + "ImportPath": "github.com/aws/aws-sdk-go/aws/csm", + "Comment": "v1.14.12-2-gcf4e3e02", + "Rev": "cf4e3e0222723fcf50743bc20f10a3285559508e" }, { "ImportPath": "github.com/aws/aws-sdk-go/aws/defaults", - "Comment": "v1.12.7-2-g35b3dd92", - "Rev": "35b3dd923175c53ba42bd0dd19915318cc2fc456" + "Comment": "v1.14.12-2-gcf4e3e02", + "Rev": "cf4e3e0222723fcf50743bc20f10a3285559508e" }, { "ImportPath": "github.com/aws/aws-sdk-go/aws/ec2metadata", - "Comment": "v1.12.7-2-g35b3dd92", - "Rev": "35b3dd923175c53ba42bd0dd19915318cc2fc456" + "Comment": "v1.14.12-2-gcf4e3e02", + "Rev": "cf4e3e0222723fcf50743bc20f10a3285559508e" }, { "ImportPath": "github.com/aws/aws-sdk-go/aws/endpoints", - "Comment": "v1.12.7-2-g35b3dd92", - "Rev": "35b3dd923175c53ba42bd0dd19915318cc2fc456" + "Comment": "v1.14.12-2-gcf4e3e02", + "Rev": "cf4e3e0222723fcf50743bc20f10a3285559508e" }, { "ImportPath": "github.com/aws/aws-sdk-go/aws/request", - "Comment": "v1.12.7-2-g35b3dd92", - "Rev": "35b3dd923175c53ba42bd0dd19915318cc2fc456" + "Comment": "v1.14.12-2-gcf4e3e02", + "Rev": "cf4e3e0222723fcf50743bc20f10a3285559508e" }, { "ImportPath": "github.com/aws/aws-sdk-go/aws/session", - "Comment": "v1.12.7-2-g35b3dd92", - "Rev": "35b3dd923175c53ba42bd0dd19915318cc2fc456" + "Comment": "v1.14.12-2-gcf4e3e02", + "Rev": "cf4e3e0222723fcf50743bc20f10a3285559508e" }, { "ImportPath": "github.com/aws/aws-sdk-go/aws/signer/v4", - "Comment": "v1.12.7-2-g35b3dd92", - "Rev": "35b3dd923175c53ba42bd0dd19915318cc2fc456" + "Comment": "v1.14.12-2-gcf4e3e02", + "Rev": "cf4e3e0222723fcf50743bc20f10a3285559508e" + }, + { + "ImportPath": "github.com/aws/aws-sdk-go/internal/sdkio", + "Comment": "v1.14.12-2-gcf4e3e02", + "Rev": "cf4e3e0222723fcf50743bc20f10a3285559508e" + }, + { + "ImportPath": "github.com/aws/aws-sdk-go/internal/sdkrand", + "Comment": "v1.14.12-2-gcf4e3e02", + "Rev": "cf4e3e0222723fcf50743bc20f10a3285559508e" }, { "ImportPath": "github.com/aws/aws-sdk-go/internal/shareddefaults", - "Comment": "v1.12.7-2-g35b3dd92", - "Rev": "35b3dd923175c53ba42bd0dd19915318cc2fc456" + "Comment": "v1.14.12-2-gcf4e3e02", + "Rev": "cf4e3e0222723fcf50743bc20f10a3285559508e" }, { "ImportPath": "github.com/aws/aws-sdk-go/private/protocol", - "Comment": "v1.12.7-2-g35b3dd92", - "Rev": "35b3dd923175c53ba42bd0dd19915318cc2fc456" + "Comment": "v1.14.12-2-gcf4e3e02", + "Rev": "cf4e3e0222723fcf50743bc20f10a3285559508e" }, { "ImportPath": "github.com/aws/aws-sdk-go/private/protocol/ec2query", - "Comment": "v1.12.7-2-g35b3dd92", - "Rev": "35b3dd923175c53ba42bd0dd19915318cc2fc456" + "Comment": "v1.14.12-2-gcf4e3e02", + "Rev": "cf4e3e0222723fcf50743bc20f10a3285559508e" }, { "ImportPath": "github.com/aws/aws-sdk-go/private/protocol/json/jsonutil", - "Comment": "v1.12.7-2-g35b3dd92", - "Rev": "35b3dd923175c53ba42bd0dd19915318cc2fc456" + "Comment": "v1.14.12-2-gcf4e3e02", + "Rev": "cf4e3e0222723fcf50743bc20f10a3285559508e" }, { "ImportPath": "github.com/aws/aws-sdk-go/private/protocol/jsonrpc", - "Comment": "v1.12.7-2-g35b3dd92", - "Rev": "35b3dd923175c53ba42bd0dd19915318cc2fc456" + "Comment": "v1.14.12-2-gcf4e3e02", + "Rev": "cf4e3e0222723fcf50743bc20f10a3285559508e" }, { "ImportPath": "github.com/aws/aws-sdk-go/private/protocol/query", - "Comment": "v1.12.7-2-g35b3dd92", - "Rev": "35b3dd923175c53ba42bd0dd19915318cc2fc456" + "Comment": "v1.14.12-2-gcf4e3e02", + "Rev": "cf4e3e0222723fcf50743bc20f10a3285559508e" }, { "ImportPath": "github.com/aws/aws-sdk-go/private/protocol/query/queryutil", - "Comment": "v1.12.7-2-g35b3dd92", - "Rev": "35b3dd923175c53ba42bd0dd19915318cc2fc456" + "Comment": "v1.14.12-2-gcf4e3e02", + "Rev": "cf4e3e0222723fcf50743bc20f10a3285559508e" }, { "ImportPath": "github.com/aws/aws-sdk-go/private/protocol/rest", - "Comment": "v1.12.7-2-g35b3dd92", - "Rev": "35b3dd923175c53ba42bd0dd19915318cc2fc456" + "Comment": "v1.14.12-2-gcf4e3e02", + "Rev": "cf4e3e0222723fcf50743bc20f10a3285559508e" }, { "ImportPath": "github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil", - "Comment": "v1.12.7-2-g35b3dd92", - "Rev": "35b3dd923175c53ba42bd0dd19915318cc2fc456" + "Comment": "v1.14.12-2-gcf4e3e02", + "Rev": "cf4e3e0222723fcf50743bc20f10a3285559508e" }, { "ImportPath": "github.com/aws/aws-sdk-go/service/autoscaling", - "Comment": "v1.12.7-2-g35b3dd92", - "Rev": "35b3dd923175c53ba42bd0dd19915318cc2fc456" + "Comment": "v1.14.12-2-gcf4e3e02", + "Rev": "cf4e3e0222723fcf50743bc20f10a3285559508e" }, { "ImportPath": "github.com/aws/aws-sdk-go/service/ec2", - "Comment": "v1.12.7-2-g35b3dd92", - "Rev": "35b3dd923175c53ba42bd0dd19915318cc2fc456" + "Comment": "v1.14.12-2-gcf4e3e02", + "Rev": "cf4e3e0222723fcf50743bc20f10a3285559508e" }, { "ImportPath": "github.com/aws/aws-sdk-go/service/ecr", - "Comment": "v1.12.7-2-g35b3dd92", - "Rev": "35b3dd923175c53ba42bd0dd19915318cc2fc456" + "Comment": "v1.14.12-2-gcf4e3e02", + "Rev": "cf4e3e0222723fcf50743bc20f10a3285559508e" }, { "ImportPath": "github.com/aws/aws-sdk-go/service/elb", - "Comment": "v1.12.7-2-g35b3dd92", - "Rev": "35b3dd923175c53ba42bd0dd19915318cc2fc456" + "Comment": "v1.14.12-2-gcf4e3e02", + "Rev": "cf4e3e0222723fcf50743bc20f10a3285559508e" }, { "ImportPath": "github.com/aws/aws-sdk-go/service/elbv2", - "Comment": "v1.12.7-2-g35b3dd92", - "Rev": "35b3dd923175c53ba42bd0dd19915318cc2fc456" + "Comment": "v1.14.12-2-gcf4e3e02", + "Rev": "cf4e3e0222723fcf50743bc20f10a3285559508e" }, { "ImportPath": "github.com/aws/aws-sdk-go/service/kms", - "Comment": "v1.12.7-2-g35b3dd92", - "Rev": "35b3dd923175c53ba42bd0dd19915318cc2fc456" + "Comment": "v1.14.12-2-gcf4e3e02", + "Rev": "cf4e3e0222723fcf50743bc20f10a3285559508e" }, { "ImportPath": "github.com/aws/aws-sdk-go/service/sts", - "Comment": "v1.12.7-2-g35b3dd92", - "Rev": "35b3dd923175c53ba42bd0dd19915318cc2fc456" + "Comment": "v1.14.12-2-gcf4e3e02", + "Rev": "cf4e3e0222723fcf50743bc20f10a3285559508e" }, { "ImportPath": "github.com/beorn7/perks/quantile", @@ -330,103 +341,103 @@ }, { "ImportPath": "github.com/containerd/containerd/api/services/containers/v1", - "Comment": "v1.0.2-1-g8bce421f", - "Rev": "8bce421fa1a7405350d3c7e9e9a42363b14bfd79" + "Comment": "v1.0.2-1-ge88f88cb", + "Rev": "e88f88cb5dd00c4db18b1b889aa8f6ce726097fe" }, { "ImportPath": "github.com/containerd/containerd/api/services/tasks/v1", - "Comment": "v1.0.2-1-g8bce421f", - "Rev": "8bce421fa1a7405350d3c7e9e9a42363b14bfd79" + "Comment": "v1.0.2-1-ge88f88cb", + "Rev": "e88f88cb5dd00c4db18b1b889aa8f6ce726097fe" }, { "ImportPath": "github.com/containerd/containerd/api/services/version/v1", - "Comment": "v1.0.2-1-g8bce421f", - "Rev": "8bce421fa1a7405350d3c7e9e9a42363b14bfd79" + "Comment": "v1.0.2-1-ge88f88cb", + "Rev": "e88f88cb5dd00c4db18b1b889aa8f6ce726097fe" }, { "ImportPath": "github.com/containerd/containerd/api/types", - "Comment": "v1.0.2-1-g8bce421f", - "Rev": "8bce421fa1a7405350d3c7e9e9a42363b14bfd79" + "Comment": "v1.0.2-1-ge88f88cb", + "Rev": "e88f88cb5dd00c4db18b1b889aa8f6ce726097fe" }, { "ImportPath": "github.com/containerd/containerd/api/types/task", - "Comment": "v1.0.2-1-g8bce421f", - "Rev": "8bce421fa1a7405350d3c7e9e9a42363b14bfd79" + "Comment": "v1.0.2-1-ge88f88cb", + "Rev": "e88f88cb5dd00c4db18b1b889aa8f6ce726097fe" }, { "ImportPath": "github.com/containerd/containerd/containers", - "Comment": "v1.0.2-1-g8bce421f", - "Rev": "8bce421fa1a7405350d3c7e9e9a42363b14bfd79" + "Comment": "v1.0.2-1-ge88f88cb", + "Rev": "e88f88cb5dd00c4db18b1b889aa8f6ce726097fe" }, { "ImportPath": "github.com/containerd/containerd/dialer", - "Comment": "v1.0.2-1-g8bce421f", - "Rev": "8bce421fa1a7405350d3c7e9e9a42363b14bfd79" + "Comment": "v1.0.2-1-ge88f88cb", + "Rev": "e88f88cb5dd00c4db18b1b889aa8f6ce726097fe" }, { "ImportPath": "github.com/containerd/containerd/errdefs", - "Comment": "v1.0.2-1-g8bce421f", - "Rev": "8bce421fa1a7405350d3c7e9e9a42363b14bfd79" + "Comment": "v1.0.2-1-ge88f88cb", + "Rev": "e88f88cb5dd00c4db18b1b889aa8f6ce726097fe" }, { "ImportPath": "github.com/containerd/containerd/namespaces", - "Comment": "v1.0.2-1-g8bce421f", - "Rev": "8bce421fa1a7405350d3c7e9e9a42363b14bfd79" + "Comment": "v1.0.2-1-ge88f88cb", + "Rev": "e88f88cb5dd00c4db18b1b889aa8f6ce726097fe" }, { "ImportPath": "github.com/containernetworking/cni/libcni", - "Comment": "v0.6.0-1-g2dc4eb6", - "Rev": "2dc4eb6646b973bd5c5f3afad1b600517639a272" + "Comment": "v0.6.0-1-gb707caa", + "Rev": "b707caaf26034cdcd199440a0ce7c44f53c4e52d" }, { "ImportPath": "github.com/containernetworking/cni/pkg/invoke", - "Comment": "v0.6.0-1-g2dc4eb6", - "Rev": "2dc4eb6646b973bd5c5f3afad1b600517639a272" + "Comment": "v0.6.0-1-gb707caa", + "Rev": "b707caaf26034cdcd199440a0ce7c44f53c4e52d" }, { "ImportPath": "github.com/containernetworking/cni/pkg/types", - "Comment": "v0.6.0-1-g2dc4eb6", - "Rev": "2dc4eb6646b973bd5c5f3afad1b600517639a272" + "Comment": "v0.6.0-1-gb707caa", + "Rev": "b707caaf26034cdcd199440a0ce7c44f53c4e52d" }, { "ImportPath": "github.com/containernetworking/cni/pkg/types/020", - "Comment": "v0.6.0-1-g2dc4eb6", - "Rev": "2dc4eb6646b973bd5c5f3afad1b600517639a272" + "Comment": "v0.6.0-1-gb707caa", + "Rev": "b707caaf26034cdcd199440a0ce7c44f53c4e52d" }, { "ImportPath": "github.com/containernetworking/cni/pkg/types/current", - "Comment": "v0.6.0-1-g2dc4eb6", - "Rev": "2dc4eb6646b973bd5c5f3afad1b600517639a272" + "Comment": "v0.6.0-1-gb707caa", + "Rev": "b707caaf26034cdcd199440a0ce7c44f53c4e52d" }, { "ImportPath": "github.com/containernetworking/cni/pkg/version", - "Comment": "v0.6.0-1-g2dc4eb6", - "Rev": "2dc4eb6646b973bd5c5f3afad1b600517639a272" + "Comment": "v0.6.0-1-gb707caa", + "Rev": "b707caaf26034cdcd199440a0ce7c44f53c4e52d" }, { "ImportPath": "github.com/coreos/etcd/client", - "Comment": "v3.2.13-1-g17885ac37", - "Rev": "17885ac37e151715a7ccaedb1708328ac2bbfb64" + "Comment": "v3.2.13-1-g7a1359075", + "Rev": "7a1359075793cc952b58e5371816cd33a68ebeeb" }, { "ImportPath": "github.com/coreos/etcd/pkg/pathutil", - "Comment": "v3.2.13-1-g17885ac37", - "Rev": "17885ac37e151715a7ccaedb1708328ac2bbfb64" + "Comment": "v3.2.13-1-g7a1359075", + "Rev": "7a1359075793cc952b58e5371816cd33a68ebeeb" }, { "ImportPath": "github.com/coreos/etcd/pkg/srv", - "Comment": "v3.2.13-1-g17885ac37", - "Rev": "17885ac37e151715a7ccaedb1708328ac2bbfb64" + "Comment": "v3.2.13-1-g7a1359075", + "Rev": "7a1359075793cc952b58e5371816cd33a68ebeeb" }, { "ImportPath": "github.com/coreos/etcd/pkg/types", - "Comment": "v3.2.13-1-g17885ac37", - "Rev": "17885ac37e151715a7ccaedb1708328ac2bbfb64" + "Comment": "v3.2.13-1-g7a1359075", + "Rev": "7a1359075793cc952b58e5371816cd33a68ebeeb" }, { "ImportPath": "github.com/coreos/etcd/version", - "Comment": "v3.2.13-1-g17885ac37", - "Rev": "17885ac37e151715a7ccaedb1708328ac2bbfb64" + "Comment": "v3.2.13-1-g7a1359075", + "Rev": "7a1359075793cc952b58e5371816cd33a68ebeeb" }, { "ImportPath": "github.com/coreos/go-semver/semver", @@ -454,13 +465,13 @@ }, { "ImportPath": "github.com/coreos/rkt/api/v1alpha", - "Comment": "v1.25.0-1-gfe1aae79", - "Rev": "fe1aae7954719881d10eb05403d433c7195f1ce4" + "Comment": "v1.25.0-1-gc91eb9bf", + "Rev": "c91eb9bf9a7bc953df7a154941f20574f679c838" }, { "ImportPath": "github.com/cyphar/filepath-securejoin", - "Comment": "v0.2.1-2-g2f174fd", - "Rev": "2f174fd3e5611c0cb2288eacdb6a1f33353aa182" + "Comment": "v0.2.1-2-ga2be2d9", + "Rev": "a2be2d929edc15f7794ea6a9af6f19de5aad6a06" }, { "ImportPath": "github.com/d2g/dhcp4", @@ -482,163 +493,163 @@ }, { "ImportPath": "github.com/docker/distribution/digestset", - "Comment": "v2.6.0-rc.1-210-gda1dd8ba", - "Rev": "da1dd8ba8fa3c1d13727bccd04281120350c4f20" + "Comment": "v2.6.0-rc.1-210-gc2aafae8", + "Rev": "c2aafae8c0c69cc579802e1ab46fee1f4c130089" }, { "ImportPath": "github.com/docker/distribution/reference", - "Comment": "v2.6.0-rc.1-210-gda1dd8ba", - "Rev": "da1dd8ba8fa3c1d13727bccd04281120350c4f20" + "Comment": "v2.6.0-rc.1-210-gc2aafae8", + "Rev": "c2aafae8c0c69cc579802e1ab46fee1f4c130089" }, { "ImportPath": "github.com/docker/docker/api", - "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf55858e82", - "Rev": "f55858e82bc45dd6b8227880f7adce9cfd6e8bb6" + "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf8163b939", + "Rev": "f8163b9399997c409290bbf67173382b18953682" }, { "ImportPath": "github.com/docker/docker/api/types", - "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf55858e82", - "Rev": "f55858e82bc45dd6b8227880f7adce9cfd6e8bb6" + "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf8163b939", + "Rev": "f8163b9399997c409290bbf67173382b18953682" }, { "ImportPath": "github.com/docker/docker/api/types/blkiodev", - "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf55858e82", - "Rev": "f55858e82bc45dd6b8227880f7adce9cfd6e8bb6" + "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf8163b939", + "Rev": "f8163b9399997c409290bbf67173382b18953682" }, { "ImportPath": "github.com/docker/docker/api/types/container", - "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf55858e82", - "Rev": "f55858e82bc45dd6b8227880f7adce9cfd6e8bb6" + "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf8163b939", + "Rev": "f8163b9399997c409290bbf67173382b18953682" }, { "ImportPath": "github.com/docker/docker/api/types/events", - "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf55858e82", - "Rev": "f55858e82bc45dd6b8227880f7adce9cfd6e8bb6" + "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf8163b939", + "Rev": "f8163b9399997c409290bbf67173382b18953682" }, { "ImportPath": "github.com/docker/docker/api/types/filters", - "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf55858e82", - "Rev": "f55858e82bc45dd6b8227880f7adce9cfd6e8bb6" + "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf8163b939", + "Rev": "f8163b9399997c409290bbf67173382b18953682" }, { "ImportPath": "github.com/docker/docker/api/types/image", - "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf55858e82", - "Rev": "f55858e82bc45dd6b8227880f7adce9cfd6e8bb6" + "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf8163b939", + "Rev": "f8163b9399997c409290bbf67173382b18953682" }, { "ImportPath": "github.com/docker/docker/api/types/mount", - "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf55858e82", - "Rev": "f55858e82bc45dd6b8227880f7adce9cfd6e8bb6" + "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf8163b939", + "Rev": "f8163b9399997c409290bbf67173382b18953682" }, { "ImportPath": "github.com/docker/docker/api/types/network", - "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf55858e82", - "Rev": "f55858e82bc45dd6b8227880f7adce9cfd6e8bb6" + "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf8163b939", + "Rev": "f8163b9399997c409290bbf67173382b18953682" }, { "ImportPath": "github.com/docker/docker/api/types/registry", - "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf55858e82", - "Rev": "f55858e82bc45dd6b8227880f7adce9cfd6e8bb6" + "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf8163b939", + "Rev": "f8163b9399997c409290bbf67173382b18953682" }, { "ImportPath": "github.com/docker/docker/api/types/strslice", - "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf55858e82", - "Rev": "f55858e82bc45dd6b8227880f7adce9cfd6e8bb6" + "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf8163b939", + "Rev": "f8163b9399997c409290bbf67173382b18953682" }, { "ImportPath": "github.com/docker/docker/api/types/swarm", - "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf55858e82", - "Rev": "f55858e82bc45dd6b8227880f7adce9cfd6e8bb6" + "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf8163b939", + "Rev": "f8163b9399997c409290bbf67173382b18953682" }, { "ImportPath": "github.com/docker/docker/api/types/swarm/runtime", - "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf55858e82", - "Rev": "f55858e82bc45dd6b8227880f7adce9cfd6e8bb6" + "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf8163b939", + "Rev": "f8163b9399997c409290bbf67173382b18953682" }, { "ImportPath": "github.com/docker/docker/api/types/time", - "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf55858e82", - "Rev": "f55858e82bc45dd6b8227880f7adce9cfd6e8bb6" + "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf8163b939", + "Rev": "f8163b9399997c409290bbf67173382b18953682" }, { "ImportPath": "github.com/docker/docker/api/types/versions", - "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf55858e82", - "Rev": "f55858e82bc45dd6b8227880f7adce9cfd6e8bb6" + "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf8163b939", + "Rev": "f8163b9399997c409290bbf67173382b18953682" }, { "ImportPath": "github.com/docker/docker/api/types/volume", - "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf55858e82", - "Rev": "f55858e82bc45dd6b8227880f7adce9cfd6e8bb6" + "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf8163b939", + "Rev": "f8163b9399997c409290bbf67173382b18953682" }, { "ImportPath": "github.com/docker/docker/client", - "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf55858e82", - "Rev": "f55858e82bc45dd6b8227880f7adce9cfd6e8bb6" + "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf8163b939", + "Rev": "f8163b9399997c409290bbf67173382b18953682" }, { "ImportPath": "github.com/docker/docker/pkg/ioutils", - "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf55858e82", - "Rev": "f55858e82bc45dd6b8227880f7adce9cfd6e8bb6" + "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf8163b939", + "Rev": "f8163b9399997c409290bbf67173382b18953682" }, { "ImportPath": "github.com/docker/docker/pkg/jsonlog", - "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf55858e82", - "Rev": "f55858e82bc45dd6b8227880f7adce9cfd6e8bb6" + "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf8163b939", + "Rev": "f8163b9399997c409290bbf67173382b18953682" }, { "ImportPath": "github.com/docker/docker/pkg/jsonmessage", - "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf55858e82", - "Rev": "f55858e82bc45dd6b8227880f7adce9cfd6e8bb6" + "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf8163b939", + "Rev": "f8163b9399997c409290bbf67173382b18953682" }, { "ImportPath": "github.com/docker/docker/pkg/longpath", - "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf55858e82", - "Rev": "f55858e82bc45dd6b8227880f7adce9cfd6e8bb6" + "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf8163b939", + "Rev": "f8163b9399997c409290bbf67173382b18953682" }, { "ImportPath": "github.com/docker/docker/pkg/mount", - "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf55858e82", - "Rev": "f55858e82bc45dd6b8227880f7adce9cfd6e8bb6" + "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf8163b939", + "Rev": "f8163b9399997c409290bbf67173382b18953682" }, { "ImportPath": "github.com/docker/docker/pkg/parsers", - "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf55858e82", - "Rev": "f55858e82bc45dd6b8227880f7adce9cfd6e8bb6" + "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf8163b939", + "Rev": "f8163b9399997c409290bbf67173382b18953682" }, { "ImportPath": "github.com/docker/docker/pkg/parsers/operatingsystem", - "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf55858e82", - "Rev": "f55858e82bc45dd6b8227880f7adce9cfd6e8bb6" + "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf8163b939", + "Rev": "f8163b9399997c409290bbf67173382b18953682" }, { "ImportPath": "github.com/docker/docker/pkg/stdcopy", - "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf55858e82", - "Rev": "f55858e82bc45dd6b8227880f7adce9cfd6e8bb6" + "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf8163b939", + "Rev": "f8163b9399997c409290bbf67173382b18953682" }, { "ImportPath": "github.com/docker/docker/pkg/sysinfo", - "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf55858e82", - "Rev": "f55858e82bc45dd6b8227880f7adce9cfd6e8bb6" + "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf8163b939", + "Rev": "f8163b9399997c409290bbf67173382b18953682" }, { "ImportPath": "github.com/docker/docker/pkg/system", - "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf55858e82", - "Rev": "f55858e82bc45dd6b8227880f7adce9cfd6e8bb6" + "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf8163b939", + "Rev": "f8163b9399997c409290bbf67173382b18953682" }, { "ImportPath": "github.com/docker/docker/pkg/term", - "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf55858e82", - "Rev": "f55858e82bc45dd6b8227880f7adce9cfd6e8bb6" + "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf8163b939", + "Rev": "f8163b9399997c409290bbf67173382b18953682" }, { "ImportPath": "github.com/docker/docker/pkg/term/windows", - "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf55858e82", - "Rev": "f55858e82bc45dd6b8227880f7adce9cfd6e8bb6" + "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf8163b939", + "Rev": "f8163b9399997c409290bbf67173382b18953682" }, { "ImportPath": "github.com/docker/docker/pkg/tlsconfig", - "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf55858e82", - "Rev": "f55858e82bc45dd6b8227880f7adce9cfd6e8bb6" + "Comment": "docs-v1.12.0-rc4-2016-07-15-7403-gf8163b939", + "Rev": "f8163b9399997c409290bbf67173382b18953682" }, { "ImportPath": "github.com/docker/go-connections/nat", @@ -662,8 +673,8 @@ }, { "ImportPath": "github.com/docker/libnetwork/ipvs", - "Comment": "v0.8.0-dev.2-911-g5d8c30f3", - "Rev": "5d8c30f3e8f5d68eca550f17a0aff09c18eb5f43" + "Comment": "v0.8.0-dev.2-911-g16630f89", + "Rev": "16630f89a3dae19c73b75a67077267d7ed23c943" }, { "ImportPath": "github.com/docker/libtrust", @@ -818,213 +829,178 @@ }, { "ImportPath": "github.com/google/cadvisor/accelerators", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" - }, - { - "ImportPath": "github.com/google/cadvisor/api", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" + "Comment": "v0.30.2-1-g293623ad", + "Rev": "293623add09ff73712d077f3f5817dfaa1190aaf" }, { "ImportPath": "github.com/google/cadvisor/cache/memory", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" + "Comment": "v0.30.2-1-g293623ad", + "Rev": "293623add09ff73712d077f3f5817dfaa1190aaf" }, { "ImportPath": "github.com/google/cadvisor/collector", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" + "Comment": "v0.30.2-1-g293623ad", + "Rev": "293623add09ff73712d077f3f5817dfaa1190aaf" }, { "ImportPath": "github.com/google/cadvisor/container", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" + "Comment": "v0.30.2-1-g293623ad", + "Rev": "293623add09ff73712d077f3f5817dfaa1190aaf" }, { "ImportPath": "github.com/google/cadvisor/container/common", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" + "Comment": "v0.30.2-1-g293623ad", + "Rev": "293623add09ff73712d077f3f5817dfaa1190aaf" }, { "ImportPath": "github.com/google/cadvisor/container/containerd", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" + "Comment": "v0.30.2-1-g293623ad", + "Rev": "293623add09ff73712d077f3f5817dfaa1190aaf" }, { "ImportPath": "github.com/google/cadvisor/container/crio", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" + "Comment": "v0.30.2-1-g293623ad", + "Rev": "293623add09ff73712d077f3f5817dfaa1190aaf" }, { "ImportPath": "github.com/google/cadvisor/container/docker", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" + "Comment": "v0.30.2-1-g293623ad", + "Rev": "293623add09ff73712d077f3f5817dfaa1190aaf" }, { "ImportPath": "github.com/google/cadvisor/container/libcontainer", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" + "Comment": "v0.30.2-1-g293623ad", + "Rev": "293623add09ff73712d077f3f5817dfaa1190aaf" }, { "ImportPath": "github.com/google/cadvisor/container/raw", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" + "Comment": "v0.30.2-1-g293623ad", + "Rev": "293623add09ff73712d077f3f5817dfaa1190aaf" }, { "ImportPath": "github.com/google/cadvisor/container/rkt", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" + "Comment": "v0.30.2-1-g293623ad", + "Rev": "293623add09ff73712d077f3f5817dfaa1190aaf" }, { "ImportPath": "github.com/google/cadvisor/container/systemd", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" + "Comment": "v0.30.2-1-g293623ad", + "Rev": "293623add09ff73712d077f3f5817dfaa1190aaf" }, { "ImportPath": "github.com/google/cadvisor/devicemapper", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" + "Comment": "v0.30.2-1-g293623ad", + "Rev": "293623add09ff73712d077f3f5817dfaa1190aaf" }, { "ImportPath": "github.com/google/cadvisor/events", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" + "Comment": "v0.30.2-1-g293623ad", + "Rev": "293623add09ff73712d077f3f5817dfaa1190aaf" }, { "ImportPath": "github.com/google/cadvisor/fs", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" - }, - { - "ImportPath": "github.com/google/cadvisor/healthz", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" - }, - { - "ImportPath": "github.com/google/cadvisor/http", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" - }, - { - "ImportPath": "github.com/google/cadvisor/http/mux", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" + "Comment": "v0.30.2-1-g293623ad", + "Rev": "293623add09ff73712d077f3f5817dfaa1190aaf" }, { "ImportPath": "github.com/google/cadvisor/info/v1", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" + "Comment": "v0.30.2-1-g293623ad", + "Rev": "293623add09ff73712d077f3f5817dfaa1190aaf" }, { "ImportPath": "github.com/google/cadvisor/info/v2", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" + "Comment": "v0.30.2-1-g293623ad", + "Rev": "293623add09ff73712d077f3f5817dfaa1190aaf" }, { "ImportPath": "github.com/google/cadvisor/machine", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" + "Comment": "v0.30.2-1-g293623ad", + "Rev": "293623add09ff73712d077f3f5817dfaa1190aaf" }, { "ImportPath": "github.com/google/cadvisor/manager", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" + "Comment": "v0.30.2-1-g293623ad", + "Rev": "293623add09ff73712d077f3f5817dfaa1190aaf" }, { "ImportPath": "github.com/google/cadvisor/manager/watcher", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" + "Comment": "v0.30.2-1-g293623ad", + "Rev": "293623add09ff73712d077f3f5817dfaa1190aaf" }, { "ImportPath": "github.com/google/cadvisor/manager/watcher/raw", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" + "Comment": "v0.30.2-1-g293623ad", + "Rev": "293623add09ff73712d077f3f5817dfaa1190aaf" }, { "ImportPath": "github.com/google/cadvisor/manager/watcher/rkt", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" + "Comment": "v0.30.2-1-g293623ad", + "Rev": "293623add09ff73712d077f3f5817dfaa1190aaf" }, { "ImportPath": "github.com/google/cadvisor/metrics", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" - }, - { - "ImportPath": "github.com/google/cadvisor/pages", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" - }, - { - "ImportPath": "github.com/google/cadvisor/pages/static", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" + "Comment": "v0.30.2-1-g293623ad", + "Rev": "293623add09ff73712d077f3f5817dfaa1190aaf" }, { "ImportPath": "github.com/google/cadvisor/storage", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" + "Comment": "v0.30.2-1-g293623ad", + "Rev": "293623add09ff73712d077f3f5817dfaa1190aaf" }, { "ImportPath": "github.com/google/cadvisor/summary", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" + "Comment": "v0.30.2-1-g293623ad", + "Rev": "293623add09ff73712d077f3f5817dfaa1190aaf" }, { "ImportPath": "github.com/google/cadvisor/utils", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" + "Comment": "v0.30.2-1-g293623ad", + "Rev": "293623add09ff73712d077f3f5817dfaa1190aaf" }, { "ImportPath": "github.com/google/cadvisor/utils/cloudinfo", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" + "Comment": "v0.30.2-1-g293623ad", + "Rev": "293623add09ff73712d077f3f5817dfaa1190aaf" }, { "ImportPath": "github.com/google/cadvisor/utils/cpuload", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" + "Comment": "v0.30.2-1-g293623ad", + "Rev": "293623add09ff73712d077f3f5817dfaa1190aaf" }, { "ImportPath": "github.com/google/cadvisor/utils/cpuload/netlink", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" + "Comment": "v0.30.2-1-g293623ad", + "Rev": "293623add09ff73712d077f3f5817dfaa1190aaf" }, { "ImportPath": "github.com/google/cadvisor/utils/docker", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" + "Comment": "v0.30.2-1-g293623ad", + "Rev": "293623add09ff73712d077f3f5817dfaa1190aaf" }, { "ImportPath": "github.com/google/cadvisor/utils/oomparser", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" + "Comment": "v0.30.2-1-g293623ad", + "Rev": "293623add09ff73712d077f3f5817dfaa1190aaf" }, { "ImportPath": "github.com/google/cadvisor/utils/sysfs", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" + "Comment": "v0.30.2-1-g293623ad", + "Rev": "293623add09ff73712d077f3f5817dfaa1190aaf" }, { "ImportPath": "github.com/google/cadvisor/utils/sysinfo", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" - }, - { - "ImportPath": "github.com/google/cadvisor/validate", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" + "Comment": "v0.30.2-1-g293623ad", + "Rev": "293623add09ff73712d077f3f5817dfaa1190aaf" }, { "ImportPath": "github.com/google/cadvisor/version", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" + "Comment": "v0.30.2-1-g293623ad", + "Rev": "293623add09ff73712d077f3f5817dfaa1190aaf" }, { "ImportPath": "github.com/google/cadvisor/zfs", - "Comment": "v0.30.1-1-gfaec4aa1", - "Rev": "faec4aa11dfd3af0b6105c428fbc5089cfad79bd" + "Comment": "v0.30.2-1-g293623ad", + "Rev": "293623add09ff73712d077f3f5817dfaa1190aaf" }, { "ImportPath": "github.com/google/gofuzz", @@ -1219,8 +1195,8 @@ }, { "ImportPath": "github.com/json-iterator/go", - "Comment": "1.1.3-16-g2ddf6d7", - "Rev": "2ddf6d758266fcb080a4f9e054b9f292c85e6798" + "Comment": "1.1.3-22-gf2b4162", + "Rev": "f2b4162afba35581b6d4a50d3b8f34e33c144682" }, { "ImportPath": "github.com/kardianos/osext", @@ -1232,31 +1208,31 @@ }, { "ImportPath": "github.com/libopenstorage/openstorage/api", - "Rev": "80af67fc8d9faabb92b4f1712ea4072c89133f33" + "Rev": "56e005d06bfab32e8cb1e3da00d3d9d4777894f3" }, { "ImportPath": "github.com/libopenstorage/openstorage/api/client", - "Rev": "80af67fc8d9faabb92b4f1712ea4072c89133f33" + "Rev": "56e005d06bfab32e8cb1e3da00d3d9d4777894f3" }, { "ImportPath": "github.com/libopenstorage/openstorage/api/client/volume", - "Rev": "80af67fc8d9faabb92b4f1712ea4072c89133f33" + "Rev": "56e005d06bfab32e8cb1e3da00d3d9d4777894f3" }, { "ImportPath": "github.com/libopenstorage/openstorage/api/spec", - "Rev": "80af67fc8d9faabb92b4f1712ea4072c89133f33" + "Rev": "56e005d06bfab32e8cb1e3da00d3d9d4777894f3" }, { "ImportPath": "github.com/libopenstorage/openstorage/pkg/parser", - "Rev": "80af67fc8d9faabb92b4f1712ea4072c89133f33" + "Rev": "56e005d06bfab32e8cb1e3da00d3d9d4777894f3" }, { "ImportPath": "github.com/libopenstorage/openstorage/pkg/units", - "Rev": "80af67fc8d9faabb92b4f1712ea4072c89133f33" + "Rev": "56e005d06bfab32e8cb1e3da00d3d9d4777894f3" }, { "ImportPath": "github.com/libopenstorage/openstorage/volume", - "Rev": "80af67fc8d9faabb92b4f1712ea4072c89133f33" + "Rev": "56e005d06bfab32e8cb1e3da00d3d9d4777894f3" }, { "ImportPath": "github.com/lpabon/godbc", @@ -1344,83 +1320,83 @@ }, { "ImportPath": "github.com/opencontainers/runc/libcontainer", - "Comment": "v1.0.0-rc5-47-g37ac1b8a", - "Rev": "37ac1b8a46936770aa5d2e3c61dbaf916df4c62f" + "Comment": "v1.0.0-rc5-47-g0aac4700", + "Rev": "0aac4700b3ca6137df3bc64518a404f5e876ff97" }, { "ImportPath": "github.com/opencontainers/runc/libcontainer/apparmor", - "Comment": "v1.0.0-rc5-47-g37ac1b8a", - "Rev": "37ac1b8a46936770aa5d2e3c61dbaf916df4c62f" + "Comment": "v1.0.0-rc5-47-g0aac4700", + "Rev": "0aac4700b3ca6137df3bc64518a404f5e876ff97" }, { "ImportPath": "github.com/opencontainers/runc/libcontainer/cgroups", - "Comment": "v1.0.0-rc5-47-g37ac1b8a", - "Rev": "37ac1b8a46936770aa5d2e3c61dbaf916df4c62f" + "Comment": "v1.0.0-rc5-47-g0aac4700", + "Rev": "0aac4700b3ca6137df3bc64518a404f5e876ff97" }, { "ImportPath": "github.com/opencontainers/runc/libcontainer/cgroups/fs", - "Comment": "v1.0.0-rc5-47-g37ac1b8a", - "Rev": "37ac1b8a46936770aa5d2e3c61dbaf916df4c62f" + "Comment": "v1.0.0-rc5-47-g0aac4700", + "Rev": "0aac4700b3ca6137df3bc64518a404f5e876ff97" }, { "ImportPath": "github.com/opencontainers/runc/libcontainer/cgroups/systemd", - "Comment": "v1.0.0-rc5-47-g37ac1b8a", - "Rev": "37ac1b8a46936770aa5d2e3c61dbaf916df4c62f" + "Comment": "v1.0.0-rc5-47-g0aac4700", + "Rev": "0aac4700b3ca6137df3bc64518a404f5e876ff97" }, { "ImportPath": "github.com/opencontainers/runc/libcontainer/configs", - "Comment": "v1.0.0-rc5-47-g37ac1b8a", - "Rev": "37ac1b8a46936770aa5d2e3c61dbaf916df4c62f" + "Comment": "v1.0.0-rc5-47-g0aac4700", + "Rev": "0aac4700b3ca6137df3bc64518a404f5e876ff97" }, { "ImportPath": "github.com/opencontainers/runc/libcontainer/configs/validate", - "Comment": "v1.0.0-rc5-47-g37ac1b8a", - "Rev": "37ac1b8a46936770aa5d2e3c61dbaf916df4c62f" + "Comment": "v1.0.0-rc5-47-g0aac4700", + "Rev": "0aac4700b3ca6137df3bc64518a404f5e876ff97" }, { "ImportPath": "github.com/opencontainers/runc/libcontainer/criurpc", - "Comment": "v1.0.0-rc5-47-g37ac1b8a", - "Rev": "37ac1b8a46936770aa5d2e3c61dbaf916df4c62f" + "Comment": "v1.0.0-rc5-47-g0aac4700", + "Rev": "0aac4700b3ca6137df3bc64518a404f5e876ff97" }, { "ImportPath": "github.com/opencontainers/runc/libcontainer/intelrdt", - "Comment": "v1.0.0-rc5-47-g37ac1b8a", - "Rev": "37ac1b8a46936770aa5d2e3c61dbaf916df4c62f" + "Comment": "v1.0.0-rc5-47-g0aac4700", + "Rev": "0aac4700b3ca6137df3bc64518a404f5e876ff97" }, { "ImportPath": "github.com/opencontainers/runc/libcontainer/keys", - "Comment": "v1.0.0-rc5-47-g37ac1b8a", - "Rev": "37ac1b8a46936770aa5d2e3c61dbaf916df4c62f" + "Comment": "v1.0.0-rc5-47-g0aac4700", + "Rev": "0aac4700b3ca6137df3bc64518a404f5e876ff97" }, { "ImportPath": "github.com/opencontainers/runc/libcontainer/mount", - "Comment": "v1.0.0-rc5-47-g37ac1b8a", - "Rev": "37ac1b8a46936770aa5d2e3c61dbaf916df4c62f" + "Comment": "v1.0.0-rc5-47-g0aac4700", + "Rev": "0aac4700b3ca6137df3bc64518a404f5e876ff97" }, { "ImportPath": "github.com/opencontainers/runc/libcontainer/seccomp", - "Comment": "v1.0.0-rc5-47-g37ac1b8a", - "Rev": "37ac1b8a46936770aa5d2e3c61dbaf916df4c62f" + "Comment": "v1.0.0-rc5-47-g0aac4700", + "Rev": "0aac4700b3ca6137df3bc64518a404f5e876ff97" }, { "ImportPath": "github.com/opencontainers/runc/libcontainer/stacktrace", - "Comment": "v1.0.0-rc5-47-g37ac1b8a", - "Rev": "37ac1b8a46936770aa5d2e3c61dbaf916df4c62f" + "Comment": "v1.0.0-rc5-47-g0aac4700", + "Rev": "0aac4700b3ca6137df3bc64518a404f5e876ff97" }, { "ImportPath": "github.com/opencontainers/runc/libcontainer/system", - "Comment": "v1.0.0-rc5-47-g37ac1b8a", - "Rev": "37ac1b8a46936770aa5d2e3c61dbaf916df4c62f" + "Comment": "v1.0.0-rc5-47-g0aac4700", + "Rev": "0aac4700b3ca6137df3bc64518a404f5e876ff97" }, { "ImportPath": "github.com/opencontainers/runc/libcontainer/user", - "Comment": "v1.0.0-rc5-47-g37ac1b8a", - "Rev": "37ac1b8a46936770aa5d2e3c61dbaf916df4c62f" + "Comment": "v1.0.0-rc5-47-g0aac4700", + "Rev": "0aac4700b3ca6137df3bc64518a404f5e876ff97" }, { "ImportPath": "github.com/opencontainers/runc/libcontainer/utils", - "Comment": "v1.0.0-rc5-47-g37ac1b8a", - "Rev": "37ac1b8a46936770aa5d2e3c61dbaf916df4c62f" + "Comment": "v1.0.0-rc5-47-g0aac4700", + "Rev": "0aac4700b3ca6137df3bc64518a404f5e876ff97" }, { "ImportPath": "github.com/opencontainers/runtime-spec/specs-go", @@ -1496,12 +1472,13 @@ }, { "ImportPath": "github.com/quobyte/api", - "Rev": "f2b94aa4aa4f8fcf279fe667ccd916abe6a064d5" + "Comment": "v0.1.1-4-g206ef83", + "Rev": "206ef832283c1a0144bbc762be2634d49987b5ff" }, { "ImportPath": "github.com/rancher/go-rancher/client", - "Comment": "v0.1.0-197-g986bf71", - "Rev": "986bf7167441260ebdb9c9ef54958dc3c5f626de" + "Comment": "v0.1.0-197-gf37292f", + "Rev": "f37292fefdf967fc14e9bf6e36d12b87b078e130" }, { "ImportPath": "github.com/renstrom/dedent", @@ -1510,12 +1487,12 @@ }, { "ImportPath": "github.com/rubiojr/go-vhd/vhd", - "Rev": "b90edfc01a790d34bf3b05e0514e266599c4a261" + "Rev": "3db3aae539db1fc5652829a847d2d6bda4c6f8ce" }, { "ImportPath": "github.com/satori/go.uuid", - "Comment": "v1.1.0", - "Rev": "879c5887cd475cd7864858769793b2ceb0d44feb" + "Comment": "v1.2.0", + "Rev": "f58768cc1a7a7e77a3bd49e98cdd21419399b6a3" }, { "ImportPath": "github.com/seccomp/libseccomp-golang", @@ -1574,13 +1551,13 @@ }, { "ImportPath": "github.com/stretchr/testify/assert", - "Comment": "v1.2.1-15-gdab2423", - "Rev": "dab24236fae3c1b230290cf944aa7e537caa65fb" + "Comment": "v1.2.1-15-gd224004", + "Rev": "d22400480258381be6c426832eaf33f0db9ff8ed" }, { "ImportPath": "github.com/stretchr/testify/mock", - "Comment": "v1.2.1-15-gdab2423", - "Rev": "dab24236fae3c1b230290cf944aa7e537caa65fb" + "Comment": "v1.2.1-15-gd224004", + "Rev": "d22400480258381be6c426832eaf33f0db9ff8ed" }, { "ImportPath": "github.com/syndtr/gocapability/capability", @@ -1604,118 +1581,118 @@ }, { "ImportPath": "github.com/vmware/govmomi/find", - "Comment": "v0.17.1-48-gab75eb9", - "Rev": "ab75eb9f5198b7617821623cf009f29a2d8dc489" + "Comment": "v0.17.1-48-g643779d", + "Rev": "643779df2ed4e3a11c92dce76e58bd271371ef63" }, { "ImportPath": "github.com/vmware/govmomi/list", - "Comment": "v0.17.1-48-gab75eb9", - "Rev": "ab75eb9f5198b7617821623cf009f29a2d8dc489" + "Comment": "v0.17.1-48-g643779d", + "Rev": "643779df2ed4e3a11c92dce76e58bd271371ef63" }, { "ImportPath": "github.com/vmware/govmomi/lookup", - "Comment": "v0.17.1-48-gab75eb9", - "Rev": "ab75eb9f5198b7617821623cf009f29a2d8dc489" + "Comment": "v0.17.1-48-g643779d", + "Rev": "643779df2ed4e3a11c92dce76e58bd271371ef63" }, { "ImportPath": "github.com/vmware/govmomi/lookup/methods", - "Comment": "v0.17.1-48-gab75eb9", - "Rev": "ab75eb9f5198b7617821623cf009f29a2d8dc489" + "Comment": "v0.17.1-48-g643779d", + "Rev": "643779df2ed4e3a11c92dce76e58bd271371ef63" }, { "ImportPath": "github.com/vmware/govmomi/lookup/types", - "Comment": "v0.17.1-48-gab75eb9", - "Rev": "ab75eb9f5198b7617821623cf009f29a2d8dc489" + "Comment": "v0.17.1-48-g643779d", + "Rev": "643779df2ed4e3a11c92dce76e58bd271371ef63" }, { "ImportPath": "github.com/vmware/govmomi/nfc", - "Comment": "v0.17.1-48-gab75eb9", - "Rev": "ab75eb9f5198b7617821623cf009f29a2d8dc489" + "Comment": "v0.17.1-48-g643779d", + "Rev": "643779df2ed4e3a11c92dce76e58bd271371ef63" }, { "ImportPath": "github.com/vmware/govmomi/object", - "Comment": "v0.17.1-48-gab75eb9", - "Rev": "ab75eb9f5198b7617821623cf009f29a2d8dc489" + "Comment": "v0.17.1-48-g643779d", + "Rev": "643779df2ed4e3a11c92dce76e58bd271371ef63" }, { "ImportPath": "github.com/vmware/govmomi/pbm", - "Comment": "v0.17.1-48-gab75eb9", - "Rev": "ab75eb9f5198b7617821623cf009f29a2d8dc489" + "Comment": "v0.17.1-48-g643779d", + "Rev": "643779df2ed4e3a11c92dce76e58bd271371ef63" }, { "ImportPath": "github.com/vmware/govmomi/pbm/methods", - "Comment": "v0.17.1-48-gab75eb9", - "Rev": "ab75eb9f5198b7617821623cf009f29a2d8dc489" + "Comment": "v0.17.1-48-g643779d", + "Rev": "643779df2ed4e3a11c92dce76e58bd271371ef63" }, { "ImportPath": "github.com/vmware/govmomi/pbm/types", - "Comment": "v0.17.1-48-gab75eb9", - "Rev": "ab75eb9f5198b7617821623cf009f29a2d8dc489" + "Comment": "v0.17.1-48-g643779d", + "Rev": "643779df2ed4e3a11c92dce76e58bd271371ef63" }, { "ImportPath": "github.com/vmware/govmomi/property", - "Comment": "v0.17.1-48-gab75eb9", - "Rev": "ab75eb9f5198b7617821623cf009f29a2d8dc489" + "Comment": "v0.17.1-48-g643779d", + "Rev": "643779df2ed4e3a11c92dce76e58bd271371ef63" }, { "ImportPath": "github.com/vmware/govmomi/session", - "Comment": "v0.17.1-48-gab75eb9", - "Rev": "ab75eb9f5198b7617821623cf009f29a2d8dc489" + "Comment": "v0.17.1-48-g643779d", + "Rev": "643779df2ed4e3a11c92dce76e58bd271371ef63" }, { "ImportPath": "github.com/vmware/govmomi/sts", - "Comment": "v0.17.1-48-gab75eb9", - "Rev": "ab75eb9f5198b7617821623cf009f29a2d8dc489" + "Comment": "v0.17.1-48-g643779d", + "Rev": "643779df2ed4e3a11c92dce76e58bd271371ef63" }, { "ImportPath": "github.com/vmware/govmomi/sts/internal", - "Comment": "v0.17.1-48-gab75eb9", - "Rev": "ab75eb9f5198b7617821623cf009f29a2d8dc489" + "Comment": "v0.17.1-48-g643779d", + "Rev": "643779df2ed4e3a11c92dce76e58bd271371ef63" }, { "ImportPath": "github.com/vmware/govmomi/task", - "Comment": "v0.17.1-48-gab75eb9", - "Rev": "ab75eb9f5198b7617821623cf009f29a2d8dc489" + "Comment": "v0.17.1-48-g643779d", + "Rev": "643779df2ed4e3a11c92dce76e58bd271371ef63" }, { "ImportPath": "github.com/vmware/govmomi/vim25", - "Comment": "v0.17.1-48-gab75eb9", - "Rev": "ab75eb9f5198b7617821623cf009f29a2d8dc489" + "Comment": "v0.17.1-48-g643779d", + "Rev": "643779df2ed4e3a11c92dce76e58bd271371ef63" }, { "ImportPath": "github.com/vmware/govmomi/vim25/debug", - "Comment": "v0.17.1-48-gab75eb9", - "Rev": "ab75eb9f5198b7617821623cf009f29a2d8dc489" + "Comment": "v0.17.1-48-g643779d", + "Rev": "643779df2ed4e3a11c92dce76e58bd271371ef63" }, { "ImportPath": "github.com/vmware/govmomi/vim25/methods", - "Comment": "v0.17.1-48-gab75eb9", - "Rev": "ab75eb9f5198b7617821623cf009f29a2d8dc489" + "Comment": "v0.17.1-48-g643779d", + "Rev": "643779df2ed4e3a11c92dce76e58bd271371ef63" }, { "ImportPath": "github.com/vmware/govmomi/vim25/mo", - "Comment": "v0.17.1-48-gab75eb9", - "Rev": "ab75eb9f5198b7617821623cf009f29a2d8dc489" + "Comment": "v0.17.1-48-g643779d", + "Rev": "643779df2ed4e3a11c92dce76e58bd271371ef63" }, { "ImportPath": "github.com/vmware/govmomi/vim25/progress", - "Comment": "v0.17.1-48-gab75eb9", - "Rev": "ab75eb9f5198b7617821623cf009f29a2d8dc489" + "Comment": "v0.17.1-48-g643779d", + "Rev": "643779df2ed4e3a11c92dce76e58bd271371ef63" }, { "ImportPath": "github.com/vmware/govmomi/vim25/soap", - "Comment": "v0.17.1-48-gab75eb9", - "Rev": "ab75eb9f5198b7617821623cf009f29a2d8dc489" + "Comment": "v0.17.1-48-g643779d", + "Rev": "643779df2ed4e3a11c92dce76e58bd271371ef63" }, { "ImportPath": "github.com/vmware/govmomi/vim25/types", - "Comment": "v0.17.1-48-gab75eb9", - "Rev": "ab75eb9f5198b7617821623cf009f29a2d8dc489" + "Comment": "v0.17.1-48-g643779d", + "Rev": "643779df2ed4e3a11c92dce76e58bd271371ef63" }, { "ImportPath": "github.com/vmware/govmomi/vim25/xml", - "Comment": "v0.17.1-48-gab75eb9", - "Rev": "ab75eb9f5198b7617821623cf009f29a2d8dc489" + "Comment": "v0.17.1-48-g643779d", + "Rev": "643779df2ed4e3a11c92dce76e58bd271371ef63" }, { "ImportPath": "github.com/vmware/photon-controller-go-sdk/SSPI", @@ -1775,7 +1752,7 @@ }, { "ImportPath": "golang.org/x/exp/inotify", - "Rev": "0fa1309f99c4d44ca62bfbadf2a9c57aa6f902b3" + "Rev": "c511d6d9cffa6a734fb79c72da2e767c186628b7" }, { "ImportPath": "golang.org/x/net/context", @@ -1927,43 +1904,39 @@ }, { "ImportPath": "google.golang.org/api/compute/v0.alpha", - "Rev": "0067b6ee5387956333249e58893f6ba8f39d5df3" + "Rev": "bd4835e7993c4dd7eb6e9aac2cee75a4d6669edb" }, { "ImportPath": "google.golang.org/api/compute/v0.beta", - "Rev": "0067b6ee5387956333249e58893f6ba8f39d5df3" + "Rev": "bd4835e7993c4dd7eb6e9aac2cee75a4d6669edb" }, { "ImportPath": "google.golang.org/api/compute/v1", - "Rev": "0067b6ee5387956333249e58893f6ba8f39d5df3" + "Rev": "bd4835e7993c4dd7eb6e9aac2cee75a4d6669edb" }, { "ImportPath": "google.golang.org/api/container/v1", - "Rev": "0067b6ee5387956333249e58893f6ba8f39d5df3" - }, - { - "ImportPath": "google.golang.org/api/container/v1alpha1", - "Rev": "0067b6ee5387956333249e58893f6ba8f39d5df3" + "Rev": "bd4835e7993c4dd7eb6e9aac2cee75a4d6669edb" }, { "ImportPath": "google.golang.org/api/container/v1beta1", - "Rev": "0067b6ee5387956333249e58893f6ba8f39d5df3" + "Rev": "bd4835e7993c4dd7eb6e9aac2cee75a4d6669edb" }, { "ImportPath": "google.golang.org/api/gensupport", - "Rev": "0067b6ee5387956333249e58893f6ba8f39d5df3" + "Rev": "bd4835e7993c4dd7eb6e9aac2cee75a4d6669edb" }, { "ImportPath": "google.golang.org/api/googleapi", - "Rev": "0067b6ee5387956333249e58893f6ba8f39d5df3" + "Rev": "bd4835e7993c4dd7eb6e9aac2cee75a4d6669edb" }, { "ImportPath": "google.golang.org/api/googleapi/internal/uritemplates", - "Rev": "0067b6ee5387956333249e58893f6ba8f39d5df3" + "Rev": "bd4835e7993c4dd7eb6e9aac2cee75a4d6669edb" }, { "ImportPath": "google.golang.org/api/tpu/v1", - "Rev": "0067b6ee5387956333249e58893f6ba8f39d5df3" + "Rev": "bd4835e7993c4dd7eb6e9aac2cee75a4d6669edb" }, { "ImportPath": "google.golang.org/genproto/googleapis/rpc/status", @@ -2110,3361 +2083,3429 @@ }, { "ImportPath": "k8s.io/api/admission/v1beta1", - "Rev": "82d8e33c4b91b4d944357466ceafa8fadb5b8039" + "Rev": "9057e2e81982cebe29e587438c5eb4a51fe596ff" }, { "ImportPath": "k8s.io/api/admissionregistration/v1alpha1", - "Rev": "82d8e33c4b91b4d944357466ceafa8fadb5b8039" + "Rev": "9057e2e81982cebe29e587438c5eb4a51fe596ff" }, { "ImportPath": "k8s.io/api/admissionregistration/v1beta1", - "Rev": "82d8e33c4b91b4d944357466ceafa8fadb5b8039" + "Rev": "9057e2e81982cebe29e587438c5eb4a51fe596ff" }, { "ImportPath": "k8s.io/api/apps/v1", - "Rev": "82d8e33c4b91b4d944357466ceafa8fadb5b8039" + "Rev": "9057e2e81982cebe29e587438c5eb4a51fe596ff" }, { "ImportPath": "k8s.io/api/apps/v1beta1", - "Rev": "82d8e33c4b91b4d944357466ceafa8fadb5b8039" + "Rev": "9057e2e81982cebe29e587438c5eb4a51fe596ff" }, { "ImportPath": "k8s.io/api/apps/v1beta2", - "Rev": "82d8e33c4b91b4d944357466ceafa8fadb5b8039" + "Rev": "9057e2e81982cebe29e587438c5eb4a51fe596ff" }, { "ImportPath": "k8s.io/api/authentication/v1", - "Rev": "82d8e33c4b91b4d944357466ceafa8fadb5b8039" + "Rev": "9057e2e81982cebe29e587438c5eb4a51fe596ff" }, { "ImportPath": "k8s.io/api/authentication/v1beta1", - "Rev": "82d8e33c4b91b4d944357466ceafa8fadb5b8039" + "Rev": "9057e2e81982cebe29e587438c5eb4a51fe596ff" }, { "ImportPath": "k8s.io/api/authorization/v1", - "Rev": "82d8e33c4b91b4d944357466ceafa8fadb5b8039" + "Rev": "9057e2e81982cebe29e587438c5eb4a51fe596ff" }, { "ImportPath": "k8s.io/api/authorization/v1beta1", - "Rev": "82d8e33c4b91b4d944357466ceafa8fadb5b8039" + "Rev": "9057e2e81982cebe29e587438c5eb4a51fe596ff" }, { "ImportPath": "k8s.io/api/autoscaling/v1", - "Rev": "82d8e33c4b91b4d944357466ceafa8fadb5b8039" + "Rev": "9057e2e81982cebe29e587438c5eb4a51fe596ff" }, { "ImportPath": "k8s.io/api/autoscaling/v2beta1", - "Rev": "82d8e33c4b91b4d944357466ceafa8fadb5b8039" + "Rev": "9057e2e81982cebe29e587438c5eb4a51fe596ff" }, { "ImportPath": "k8s.io/api/batch/v1", - "Rev": "82d8e33c4b91b4d944357466ceafa8fadb5b8039" + "Rev": "9057e2e81982cebe29e587438c5eb4a51fe596ff" }, { "ImportPath": "k8s.io/api/batch/v1beta1", - "Rev": "82d8e33c4b91b4d944357466ceafa8fadb5b8039" + "Rev": "9057e2e81982cebe29e587438c5eb4a51fe596ff" }, { "ImportPath": "k8s.io/api/batch/v2alpha1", - "Rev": "82d8e33c4b91b4d944357466ceafa8fadb5b8039" + "Rev": "9057e2e81982cebe29e587438c5eb4a51fe596ff" }, { "ImportPath": "k8s.io/api/certificates/v1beta1", - "Rev": "82d8e33c4b91b4d944357466ceafa8fadb5b8039" + "Rev": "9057e2e81982cebe29e587438c5eb4a51fe596ff" + }, + { + "ImportPath": "k8s.io/api/coordination/v1beta1", + "Rev": "9057e2e81982cebe29e587438c5eb4a51fe596ff" }, { "ImportPath": "k8s.io/api/core/v1", - "Rev": "82d8e33c4b91b4d944357466ceafa8fadb5b8039" + "Rev": "9057e2e81982cebe29e587438c5eb4a51fe596ff" }, { "ImportPath": "k8s.io/api/events/v1beta1", - "Rev": "82d8e33c4b91b4d944357466ceafa8fadb5b8039" + "Rev": "9057e2e81982cebe29e587438c5eb4a51fe596ff" }, { "ImportPath": "k8s.io/api/extensions/v1beta1", - "Rev": "82d8e33c4b91b4d944357466ceafa8fadb5b8039" + "Rev": "9057e2e81982cebe29e587438c5eb4a51fe596ff" }, { "ImportPath": "k8s.io/api/imagepolicy/v1alpha1", - "Rev": "82d8e33c4b91b4d944357466ceafa8fadb5b8039" + "Rev": "9057e2e81982cebe29e587438c5eb4a51fe596ff" }, { "ImportPath": "k8s.io/api/networking/v1", - "Rev": "82d8e33c4b91b4d944357466ceafa8fadb5b8039" + "Rev": "9057e2e81982cebe29e587438c5eb4a51fe596ff" }, { "ImportPath": "k8s.io/api/policy/v1beta1", - "Rev": "82d8e33c4b91b4d944357466ceafa8fadb5b8039" + "Rev": "9057e2e81982cebe29e587438c5eb4a51fe596ff" }, { "ImportPath": "k8s.io/api/rbac/v1", - "Rev": "82d8e33c4b91b4d944357466ceafa8fadb5b8039" + "Rev": "9057e2e81982cebe29e587438c5eb4a51fe596ff" }, { "ImportPath": "k8s.io/api/rbac/v1alpha1", - "Rev": "82d8e33c4b91b4d944357466ceafa8fadb5b8039" + "Rev": "9057e2e81982cebe29e587438c5eb4a51fe596ff" }, { "ImportPath": "k8s.io/api/rbac/v1beta1", - "Rev": "82d8e33c4b91b4d944357466ceafa8fadb5b8039" + "Rev": "9057e2e81982cebe29e587438c5eb4a51fe596ff" }, { "ImportPath": "k8s.io/api/scheduling/v1alpha1", - "Rev": "82d8e33c4b91b4d944357466ceafa8fadb5b8039" + "Rev": "9057e2e81982cebe29e587438c5eb4a51fe596ff" }, { "ImportPath": "k8s.io/api/scheduling/v1beta1", - "Rev": "82d8e33c4b91b4d944357466ceafa8fadb5b8039" + "Rev": "9057e2e81982cebe29e587438c5eb4a51fe596ff" }, { "ImportPath": "k8s.io/api/settings/v1alpha1", - "Rev": "82d8e33c4b91b4d944357466ceafa8fadb5b8039" + "Rev": "9057e2e81982cebe29e587438c5eb4a51fe596ff" }, { "ImportPath": "k8s.io/api/storage/v1", - "Rev": "82d8e33c4b91b4d944357466ceafa8fadb5b8039" + "Rev": "9057e2e81982cebe29e587438c5eb4a51fe596ff" }, { "ImportPath": "k8s.io/api/storage/v1alpha1", - "Rev": "82d8e33c4b91b4d944357466ceafa8fadb5b8039" + "Rev": "9057e2e81982cebe29e587438c5eb4a51fe596ff" }, { "ImportPath": "k8s.io/api/storage/v1beta1", - "Rev": "82d8e33c4b91b4d944357466ceafa8fadb5b8039" + "Rev": "9057e2e81982cebe29e587438c5eb4a51fe596ff" }, { "ImportPath": "k8s.io/apiextensions-apiserver/pkg/features", - "Rev": "8e143eab8ddac267444d164333ccf9730a3c7dcb" + "Rev": "0b01016c6cedb7b3800a5fe0ae021053050a2f0c" }, { "ImportPath": "k8s.io/apimachinery/pkg/api/equality", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/api/errors", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/api/meta", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/api/resource", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/api/validation", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/api/validation/path", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/internalversion", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructuredscheme", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1/validation", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1beta1", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/conversion", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/conversion/queryparams", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/fields", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/labels", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/schema", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/json", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/protobuf", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/recognizer", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/streaming", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/versioning", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/selection", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/types", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/cache", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/clock", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/diff", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/duration", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/errors", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/framer", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/httpstream", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/httpstream/spdy", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/intstr", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/json", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/mergepatch", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/naming", + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/net", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/proxy", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/rand", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/remotecommand", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/runtime", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/sets", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/strategicpatch", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/uuid", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/validation", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/validation/field", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/wait", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/yaml", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/version", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/pkg/watch", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/third_party/forked/golang/json", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/third_party/forked/golang/netutil", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apimachinery/third_party/forked/golang/reflect", - "Rev": "22be3fd94d4a59d5516c05efe9ccec0b73c52ec2" + "Rev": "3e7ca323274ad60146c53f2affed40fb9f8374c5" }, { "ImportPath": "k8s.io/apiserver/pkg/admission", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/apis/apiserver", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/apis/apiserver/v1alpha1", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/apis/audit", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/apis/audit/v1alpha1", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/apis/audit/v1beta1", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/audit", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/authentication/authenticator", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/authentication/authenticatorfactory", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/authentication/group", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/authentication/request/anonymous", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/authentication/request/bearertoken", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/authentication/request/headerrequest", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/authentication/request/union", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/authentication/request/websocket", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/authentication/request/x509", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/authentication/serviceaccount", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/authentication/token/tokenfile", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/authentication/user", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/authorization/authorizer", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/authorization/authorizerfactory", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/endpoints/handlers/negotiation", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/endpoints/handlers/responsewriters", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/endpoints/metrics", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/endpoints/request", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/features", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/registry/rest", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/server/healthz", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/server/httplog", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/server/mux", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/server/routes", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/server/routes/data/swagger", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/storage", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/storage/etcd", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/storage/etcd/metrics", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/storage/etcd/util", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/storage/names", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/util/feature", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/util/flag", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/util/flushwriter", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/util/logs", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/util/trace", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/util/webhook", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/pkg/util/wsstream", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/plugin/pkg/authenticator/token/webhook", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/apiserver/plugin/pkg/authorizer/webhook", - "Rev": "e07f76c01015abf6d7bc2393cc45be7e7068530f" + "Rev": "03f1fd0637b2944a6d508c9941cbb58b42767dab" }, { "ImportPath": "k8s.io/client-go/discovery", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/discovery/fake", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/dynamic", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers/admissionregistration", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers/admissionregistration/v1alpha1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers/admissionregistration/v1beta1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers/apps", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers/apps/v1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers/apps/v1beta1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers/apps/v1beta2", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers/autoscaling", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers/autoscaling/v1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers/autoscaling/v2beta1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers/batch", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers/batch/v1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers/batch/v1beta1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers/batch/v2alpha1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers/certificates", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers/certificates/v1beta1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" + }, + { + "ImportPath": "k8s.io/client-go/informers/coordination", + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" + }, + { + "ImportPath": "k8s.io/client-go/informers/coordination/v1beta1", + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers/core", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers/core/v1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers/events", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers/events/v1beta1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers/extensions", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers/extensions/v1beta1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers/internalinterfaces", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers/networking", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers/networking/v1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers/policy", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers/policy/v1beta1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers/rbac", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers/rbac/v1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers/rbac/v1alpha1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers/rbac/v1beta1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers/scheduling", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers/scheduling/v1alpha1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers/scheduling/v1beta1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers/settings", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers/settings/v1alpha1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers/storage", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers/storage/v1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers/storage/v1alpha1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/informers/storage/v1beta1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/fake", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/scheme", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/apps/v1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/apps/v1/fake", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/apps/v1beta1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/apps/v1beta2", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/authentication/v1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/authentication/v1/fake", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/authentication/v1beta1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/authorization/v1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/authorization/v1/fake", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/authorization/v1beta1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/autoscaling/v1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/fake", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/batch/v1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/batch/v1/fake", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/batch/v1beta1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/batch/v1beta1/fake", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/batch/v2alpha1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/certificates/v1beta1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" + }, + { + "ImportPath": "k8s.io/client-go/kubernetes/typed/coordination/v1beta1", + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" + }, + { + "ImportPath": "k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake", + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/core/v1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/core/v1/fake", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/events/v1beta1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/events/v1beta1/fake", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/extensions/v1beta1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/networking/v1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/networking/v1/fake", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/policy/v1beta1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/rbac/v1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/rbac/v1/fake", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/rbac/v1alpha1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/rbac/v1beta1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/fake", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/scheduling/v1beta1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/fake", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/settings/v1alpha1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/storage/v1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/storage/v1/fake", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/storage/v1alpha1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/storage/v1beta1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/listers/admissionregistration/v1alpha1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/listers/admissionregistration/v1beta1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/listers/apps/v1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/listers/apps/v1beta1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/listers/apps/v1beta2", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/listers/autoscaling/v1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/listers/autoscaling/v2beta1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/listers/batch/v1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/listers/batch/v1beta1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/listers/batch/v2alpha1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/listers/certificates/v1beta1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" + }, + { + "ImportPath": "k8s.io/client-go/listers/coordination/v1beta1", + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/listers/core/v1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/listers/events/v1beta1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/listers/extensions/v1beta1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/listers/networking/v1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/listers/policy/v1beta1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/listers/rbac/v1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/listers/rbac/v1alpha1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/listers/rbac/v1beta1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/listers/scheduling/v1alpha1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/listers/scheduling/v1beta1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/listers/settings/v1alpha1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/listers/storage/v1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/listers/storage/v1alpha1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/listers/storage/v1beta1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/pkg/apis/clientauthentication", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/pkg/apis/clientauthentication/v1beta1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/pkg/version", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/plugin/pkg/client/auth/exec", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/rest", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/rest/watch", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/restmapper", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/scale", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/scale/scheme", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/scale/scheme/appsint", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/scale/scheme/appsv1beta1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/scale/scheme/appsv1beta2", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/scale/scheme/autoscalingv1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/scale/scheme/extensionsint", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/scale/scheme/extensionsv1beta1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/testing", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/third_party/forked/golang/template", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/tools/auth", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/tools/cache", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/tools/clientcmd", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/tools/clientcmd/api", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/tools/clientcmd/api/latest", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/tools/clientcmd/api/v1", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/tools/leaderelection", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/tools/leaderelection/resourcelock", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/tools/metrics", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/tools/pager", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/tools/record", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/tools/reference", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/tools/remotecommand", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/transport", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/transport/spdy", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/util/buffer", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/util/cert", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/util/certificate", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/util/certificate/csr", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/util/connrotation", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/util/exec", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/util/flowcontrol", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/util/homedir", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/util/integer", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/util/jsonpath", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/util/retry", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/client-go/util/workqueue", - "Rev": "c2747511ead76b51ddbe48aafb8d54246c9bb8f6" + "Rev": "56c14b0004262d62096ee85bdb40550fd5532f1c" }, { "ImportPath": "k8s.io/kube-openapi/pkg/builder", - "Rev": "8a9b82f00b3a86eac24681da3f9fe6c34c01cea2" + "Rev": "0cf8f7e6ed1d2e3d47d02e3b6e559369af24d803" }, { "ImportPath": "k8s.io/kube-openapi/pkg/common", - "Rev": "8a9b82f00b3a86eac24681da3f9fe6c34c01cea2" + "Rev": "0cf8f7e6ed1d2e3d47d02e3b6e559369af24d803" }, { "ImportPath": "k8s.io/kube-openapi/pkg/handler", - "Rev": "8a9b82f00b3a86eac24681da3f9fe6c34c01cea2" + "Rev": "0cf8f7e6ed1d2e3d47d02e3b6e559369af24d803" }, { "ImportPath": "k8s.io/kube-openapi/pkg/util", - "Rev": "8a9b82f00b3a86eac24681da3f9fe6c34c01cea2" + "Rev": "0cf8f7e6ed1d2e3d47d02e3b6e559369af24d803" }, { "ImportPath": "k8s.io/kube-openapi/pkg/util/proto", - "Rev": "8a9b82f00b3a86eac24681da3f9fe6c34c01cea2" + "Rev": "0cf8f7e6ed1d2e3d47d02e3b6e559369af24d803" }, { "ImportPath": "k8s.io/kubernetes/cmd/kube-proxy/app", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/cmd/kubelet/app", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/cmd/kubelet/app/options", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/api/events", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/api/legacyscheme", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/api/pod", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/api/ref", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/api/resource", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/api/service", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/api/testapi", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/api/v1/pod", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/api/v1/resource", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/api/v1/service", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/admission", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/admission/install", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/admission/v1beta1", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/admissionregistration", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/admissionregistration/install", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/admissionregistration/v1alpha1", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/admissionregistration/v1beta1", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/apps", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/apps/install", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/apps/v1", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/apps/v1beta1", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/apps/v1beta2", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/authentication", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/authentication/install", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/authentication/v1", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/authentication/v1beta1", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/authorization", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/authorization/install", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/authorization/v1", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/authorization/v1beta1", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/autoscaling", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/autoscaling/install", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/autoscaling/v1", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/autoscaling/v2beta1", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/batch", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/batch/install", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/batch/v1", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/batch/v1beta1", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/batch/v2alpha1", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/certificates", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/certificates/install", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/certificates/v1beta1", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/componentconfig", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/componentconfig/install", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/componentconfig/v1alpha1", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" + }, + { + "ImportPath": "k8s.io/kubernetes/pkg/apis/coordination", + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" + }, + { + "ImportPath": "k8s.io/kubernetes/pkg/apis/coordination/install", + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" + }, + { + "ImportPath": "k8s.io/kubernetes/pkg/apis/coordination/v1beta1", + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/core", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/core/helper", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/core/helper/qos", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/core/install", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/core/pods", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/core/v1", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/core/v1/helper", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/core/v1/helper/qos", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/core/v1/validation", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/core/validation", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/events", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/events/install", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/events/v1beta1", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/extensions", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/extensions/install", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/extensions/v1beta1", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/extensions/validation", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/imagepolicy", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/imagepolicy/install", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/imagepolicy/v1alpha1", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/networking", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/networking/install", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/networking/v1", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/policy", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/policy/install", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/policy/v1beta1", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/policy/validation", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/rbac", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/rbac/install", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/rbac/v1", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/rbac/v1alpha1", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/rbac/v1beta1", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/scheduling", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/scheduling/install", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/scheduling/v1alpha1", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/scheduling/v1beta1", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/settings", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/settings/install", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/settings/v1alpha1", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/storage", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/storage/install", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/storage/util", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/storage/v1", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/storage/v1alpha1", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/apis/storage/v1beta1", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/capabilities", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/chaosclient", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/scheme", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/apps/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/authentication/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/authorization/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/autoscaling/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/batch/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/certificates/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" + }, + { + "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/coordination/internalversion", + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/events/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/networking/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/policy/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/rbac/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/scheduling/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/settings/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/storage/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/admissionregistration", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/admissionregistration/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/apps", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/apps/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/autoscaling", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/autoscaling/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/batch", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/batch/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/certificates", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/certificates/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" + }, + { + "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/coordination", + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" + }, + { + "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/coordination/internalversion", + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/core", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/core/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/extensions", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/extensions/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/internalinterfaces", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/networking", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/networking/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/policy", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/policy/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/rbac", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/rbac/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/scheduling", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/scheduling/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/settings", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/settings/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/storage", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/storage/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/admissionregistration/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/apps/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/autoscaling/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/batch/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/certificates/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" + }, + { + "ImportPath": "k8s.io/kubernetes/pkg/client/listers/coordination/internalversion", + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/core/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/extensions/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/networking/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/policy/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/rbac/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/scheduling/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/settings/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/client/listers/storage/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/cloudprovider", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers/aws", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers/azure", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers/azure/auth", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers/cloudstack", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers/gce", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/filter", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/meta", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers/openstack", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers/ovirt", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers/photon", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vclib", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vclib/diskmanagers", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/deployment/util", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/volume/events", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/volume/expand/cache", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/volume/persistentvolume", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/controller/volume/persistentvolume/metrics", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/credentialprovider", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/credentialprovider/aws", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/credentialprovider/azure", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/credentialprovider/gcp", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/credentialprovider/rancher", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/credentialprovider/secrets", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/features", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/fieldpath", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubectl", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubectl/apps", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubectl/genericclioptions", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubectl/scheme", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubectl/util", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubectl/util/hash", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubectl/util/slice", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/apis", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/apis/cri", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/apis/cri/runtime/v1alpha2", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/apis/deviceplugin/v1beta1", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/scheme", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1beta1", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/validation", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/apis/pluginregistration/v1alpha1", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/cadvisor", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/certificate", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/certificate/bootstrap", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/checkpoint", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/checkpointmanager", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/checkpointmanager/checksum", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/checkpointmanager/errors", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/cm", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/topology", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/cm/cpuset", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/cm/devicemanager", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/cm/devicemanager/checkpoint", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/cm/util", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/config", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/configmap", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/container", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/container/testing", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/dockershim", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/dockershim/cm", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/dockershim/libdocker", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/dockershim/metrics", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/dockershim/network", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/dockershim/network/cni", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/dockershim/network/hostport", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/dockershim/network/kubenet", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/dockershim/network/metrics", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/dockershim/remote", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/envvars", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/events", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/eviction", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/eviction/api", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/images", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/kubeletconfig", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/kubeletconfig/checkpoint", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/kubeletconfig/checkpoint/store", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/kubeletconfig/configfiles", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/kubeletconfig/status", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/kubeletconfig/util/codec", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/kubeletconfig/util/files", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/kubeletconfig/util/log", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/kubeletconfig/util/panic", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/kuberuntime", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/kuberuntime/logs", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/leaky", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/lifecycle", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/logs", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/metrics", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/metrics/collectors", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/mountpod", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/network/dns", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/pleg", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/pod", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/preemption", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/prober", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/prober/results", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/qos", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/remote", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/secret", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/server", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/server/portforward", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/server/remotecommand", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/server/stats", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/server/streaming", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/stats", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/status", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/sysctl", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/token", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/types", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/util", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/util/cache", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/util/format", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/util/ioutils", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/util/manager", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/util/pluginwatcher", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/util/pluginwatcher/example_plugin_apis/v1beta1", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/util/pluginwatcher/example_plugin_apis/v1beta2", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/util/queue", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/util/sliceutils", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/util/store", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/volumemanager", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/volumemanager/cache", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/volumemanager/populator", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/volumemanager/reconciler", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubelet/winstats", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/kubemark", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/master/ports", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/printers", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/printers/internalversion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/probe", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/probe/exec", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/probe/http", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/probe/tcp", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/proxy", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/scheme", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/v1alpha1", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/validation", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/proxy/config", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/proxy/healthcheck", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/proxy/iptables", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/proxy/ipvs", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/proxy/metrics", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/proxy/userspace", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/proxy/util", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/proxy/winkernel", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/proxy/winuserspace", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/quota", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/registry/rbac/validation", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/scheduler", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/scheduler/algorithm", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/scheduler/algorithm/predicates", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/scheduler/algorithm/priorities", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/util", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/scheduler/algorithmprovider", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/scheduler/algorithmprovider/defaults", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/scheduler/api", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/scheduler/api/validation", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/scheduler/cache", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/scheduler/core", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" + }, + { + "ImportPath": "k8s.io/kubernetes/pkg/scheduler/core/equivalence", + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/scheduler/factory", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/scheduler/metrics", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/scheduler/util", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/scheduler/volumebinder", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/security/apparmor", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/security/podsecuritypolicy/seccomp", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/security/podsecuritypolicy/sysctl", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/security/podsecuritypolicy/util", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/securitycontext", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/serviceaccount", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/async", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/bandwidth", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/config", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/configz", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/conntrack", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/dbus", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/ebtables", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/env", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/file", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/filesystem", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/flag", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/flock", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/goroutinemap", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/goroutinemap/exponentialbackoff", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/hash", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/io", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/ipconfig", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/ipset", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/iptables", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/ipvs", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/keymutex", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/labels", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/mount", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/net", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/net/sets", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/netsh", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/node", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/nsenter", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/oom", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/parsers", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/pod", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/pointer", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/procfs", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/removeall", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/resizefs", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/resourcecontainer", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/rlimit", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/selinux", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/slice", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/strings", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/sysctl", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/tail", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/taints", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/util/version", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/version", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/version/verflag", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/aws_ebs", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/azure_dd", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/azure_file", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/cephfs", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/cinder", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/configmap", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/csi", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/csi/labelmanager", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/downwardapi", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/empty_dir", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/fc", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/flexvolume", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/flocker", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/gce_pd", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/git_repo", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/glusterfs", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/host_path", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/iscsi", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/local", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/nfs", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/photon_pd", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/portworx", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/projected", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/quobyte", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/rbd", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/scaleio", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/secret", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/storageos", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/util", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/util/fs", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/util/nestedpendingoperations", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/util/operationexecutor", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/util/recyclerclient", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/util/types", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/util/volumepathhandler", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/validation", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/volume/vsphere_volume", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/pkg/windows/service", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/test/utils", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/kubernetes/third_party/forked/golang/expansion", - "Comment": "v1.12.0-alpha.0-1035-g2f62c2be19", - "Rev": "2f62c2be19798515581373afbc03d51ac3953ad6" + "Comment": "v1.12.0-alpha.0-2228-g30efb8f20f", + "Rev": "30efb8f20fff369e3a948247c6b4970316ffcda6" }, { "ImportPath": "k8s.io/utils/clock", diff --git a/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/README.md b/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/README.md index 30991a12e4..deca9a97e3 100644 --- a/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/README.md +++ b/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/README.md @@ -4,9 +4,30 @@ This package supports launching Windows Server containers from Go. It is primarily used in the [Docker Engine](https://github.com/docker/docker) project, but it can be freely used by other projects as well. -This project has adopted the [Microsoft Open Source Code of -Conduct](https://opensource.microsoft.com/codeofconduct/). For more information -see the [Code of Conduct -FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact -[opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional -questions or comments. + +## Contributing +--------------- +This project welcomes contributions and suggestions. Most contributions require you to agree to a +Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us +the rights to use your contribution. For details, visit https://cla.microsoft.com. + +When you submit a pull request, a CLA-bot will automatically determine whether you need to provide +a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions +provided by the bot. You will only need to do this once across all repos using our CLA. + +This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). +For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or +contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. + + +## Reporting Security Issues + +Security issues and bugs should be reported privately, via email, to the Microsoft Security +Response Center (MSRC) at [secure@microsoft.com](mailto:secure@microsoft.com). You should +receive a response within 24 hours. If for some reason you do not, please follow up via +email to ensure we received your original message. Further information, including the +[MSRC PGP](https://technet.microsoft.com/en-us/security/dn606155) key, can be found in +the [Security TechCenter](https://technet.microsoft.com/en-us/security/default). + +------------------------------------------- +Copyright (c) 2018 Microsoft Corp. All rights reserved. diff --git a/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/baselayer.go b/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/baselayer.go index 9babd4e18a..860185c357 100644 --- a/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/baselayer.go +++ b/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/baselayer.go @@ -10,7 +10,7 @@ import ( ) type baseLayerWriter struct { - root string + root *os.File f *os.File bw *winio.BackupFileWriter err error @@ -26,10 +26,10 @@ type dirInfo struct { // reapplyDirectoryTimes reapplies directory modification, creation, etc. times // after processing of the directory tree has completed. The times are expected // to be ordered such that parent directories come before child directories. -func reapplyDirectoryTimes(dis []dirInfo) error { +func reapplyDirectoryTimes(root *os.File, dis []dirInfo) error { for i := range dis { di := &dis[len(dis)-i-1] // reverse order: process child directories first - f, err := winio.OpenForBackup(di.path, syscall.GENERIC_READ|syscall.GENERIC_WRITE, syscall.FILE_SHARE_READ, syscall.OPEN_EXISTING) + f, err := openRelative(di.path, root, syscall.GENERIC_READ|syscall.GENERIC_WRITE, syscall.FILE_SHARE_READ, _FILE_OPEN, _FILE_DIRECTORY_FILE) if err != nil { return err } @@ -75,12 +75,6 @@ func (w *baseLayerWriter) Add(name string, fileInfo *winio.FileBasicInfo) (err e w.hasUtilityVM = true } - path := filepath.Join(w.root, name) - path, err = makeLongAbsPath(path) - if err != nil { - return err - } - var f *os.File defer func() { if f != nil { @@ -88,27 +82,23 @@ func (w *baseLayerWriter) Add(name string, fileInfo *winio.FileBasicInfo) (err e } }() - createmode := uint32(syscall.CREATE_NEW) + extraFlags := uint32(0) if fileInfo.FileAttributes&syscall.FILE_ATTRIBUTE_DIRECTORY != 0 { - err := os.Mkdir(path, 0) - if err != nil && !os.IsExist(err) { - return err - } - createmode = syscall.OPEN_EXISTING + extraFlags |= _FILE_DIRECTORY_FILE if fileInfo.FileAttributes&syscall.FILE_ATTRIBUTE_REPARSE_POINT == 0 { - w.dirInfo = append(w.dirInfo, dirInfo{path, *fileInfo}) + w.dirInfo = append(w.dirInfo, dirInfo{name, *fileInfo}) } } mode := uint32(syscall.GENERIC_READ | syscall.GENERIC_WRITE | winio.WRITE_DAC | winio.WRITE_OWNER | winio.ACCESS_SYSTEM_SECURITY) - f, err = winio.OpenForBackup(path, mode, syscall.FILE_SHARE_READ, createmode) + f, err = openRelative(name, w.root, mode, syscall.FILE_SHARE_READ, _FILE_CREATE, extraFlags) if err != nil { - return makeError(err, "Failed to OpenForBackup", path) + return makeError(err, "Failed to openRelative", name) } err = winio.SetFileBasicInfo(f, fileInfo) if err != nil { - return makeError(err, "Failed to SetFileBasicInfo", path) + return makeError(err, "Failed to SetFileBasicInfo", name) } w.f = f @@ -129,17 +119,7 @@ func (w *baseLayerWriter) AddLink(name string, target string) (err error) { return err } - linkpath, err := makeLongAbsPath(filepath.Join(w.root, name)) - if err != nil { - return err - } - - linktarget, err := makeLongAbsPath(filepath.Join(w.root, target)) - if err != nil { - return err - } - - return os.Link(linktarget, linkpath) + return linkRelative(target, w.root, name, w.root) } func (w *baseLayerWriter) Remove(name string) error { @@ -155,6 +135,10 @@ func (w *baseLayerWriter) Write(b []byte) (int, error) { } func (w *baseLayerWriter) Close() error { + defer func() { + w.root.Close() + w.root = nil + }() err := w.closeCurrentFile() if err != nil { return err @@ -162,18 +146,22 @@ func (w *baseLayerWriter) Close() error { if w.err == nil { // Restore the file times of all the directories, since they may have // been modified by creating child directories. - err = reapplyDirectoryTimes(w.dirInfo) + err = reapplyDirectoryTimes(w.root, w.dirInfo) if err != nil { return err } - err = ProcessBaseLayer(w.root) + err = ProcessBaseLayer(w.root.Name()) if err != nil { return err } if w.hasUtilityVM { - err = ProcessUtilityVMImage(filepath.Join(w.root, "UtilityVM")) + err := ensureNotReparsePointRelative("UtilityVM", w.root) + if err != nil { + return err + } + err = ProcessUtilityVMImage(filepath.Join(w.root.Name(), "UtilityVM")) if err != nil { return err } diff --git a/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/container.go b/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/container.go index b924d39f46..3354f70efc 100644 --- a/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/container.go +++ b/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/container.go @@ -201,12 +201,18 @@ func createContainerWithJSON(id string, c *ContainerConfig, additionalJSON strin if createError == nil || IsPending(createError) { if err := container.registerCallback(); err != nil { + // Terminate the container if it still exists. We're okay to ignore a failure here. + container.Terminate() return nil, makeContainerError(container, operation, "", err) } } err = processAsyncHcsResult(createError, resultp, container.callbackNumber, hcsNotificationSystemCreateCompleted, &defaultTimeout) if err != nil { + if err == ErrTimeout { + // Terminate the container if it still exists. We're okay to ignore a failure here. + container.Terminate() + } return nil, makeContainerError(container, operation, configuration, err) } diff --git a/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/errors.go b/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/errors.go index d2f9cc8bd2..c0c6cac87c 100644 --- a/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/errors.go +++ b/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/errors.go @@ -72,6 +72,22 @@ var ( ErrPlatformNotSupported = errors.New("unsupported platform request") ) +type EndpointNotFoundError struct { + EndpointName string +} + +func (e EndpointNotFoundError) Error() string { + return fmt.Sprintf("Endpoint %s not found", e.EndpointName) +} + +type NetworkNotFoundError struct { + NetworkName string +} + +func (e NetworkNotFoundError) Error() string { + return fmt.Sprintf("Network %s not found", e.NetworkName) +} + // ProcessError is an error encountered in HCS during an operation on a Process object type ProcessError struct { Process *process @@ -174,6 +190,12 @@ func makeProcessError(process *process, operation string, extraInfo string, err // will currently return true when the error is ErrElementNotFound or ErrProcNotFound. func IsNotExist(err error) bool { err = getInnerError(err) + if _, ok := err.(EndpointNotFoundError); ok { + return true + } + if _, ok := err.(NetworkNotFoundError); ok { + return true + } return err == ErrComputeSystemDoesNotExist || err == ErrElementNotFound || err == ErrProcNotFound diff --git a/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/hcsshim.go b/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/hcsshim.go index 236ba1fa30..b65953191c 100644 --- a/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/hcsshim.go +++ b/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/hcsshim.go @@ -11,7 +11,7 @@ import ( "github.com/sirupsen/logrus" ) -//go:generate go run mksyscall_windows.go -output zhcsshim.go hcsshim.go +//go:generate go run mksyscall_windows.go -output zhcsshim.go hcsshim.go safeopen.go //sys coTaskMemFree(buffer unsafe.Pointer) = ole32.CoTaskMemFree //sys SetCurrentThreadCompartmentId(compartmentId uint32) (hr error) = iphlpapi.SetCurrentThreadCompartmentId diff --git a/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/hnsendpoint.go b/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/hnsendpoint.go index 92afc0c249..90689cb1ee 100644 --- a/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/hnsendpoint.go +++ b/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/hnsendpoint.go @@ -1,318 +1,323 @@ -package hcsshim - -import ( - "encoding/json" - "fmt" - "net" - - "github.com/sirupsen/logrus" -) - -// HNSEndpoint represents a network endpoint in HNS -type HNSEndpoint struct { - Id string `json:"ID,omitempty"` - Name string `json:",omitempty"` - VirtualNetwork string `json:",omitempty"` - VirtualNetworkName string `json:",omitempty"` - Policies []json.RawMessage `json:",omitempty"` - MacAddress string `json:",omitempty"` - IPAddress net.IP `json:",omitempty"` - DNSSuffix string `json:",omitempty"` - DNSServerList string `json:",omitempty"` - GatewayAddress string `json:",omitempty"` - EnableInternalDNS bool `json:",omitempty"` - DisableICC bool `json:",omitempty"` - PrefixLength uint8 `json:",omitempty"` - IsRemoteEndpoint bool `json:",omitempty"` -} - -//SystemType represents the type of the system on which actions are done -type SystemType string - -// SystemType const -const ( - ContainerType SystemType = "Container" - VirtualMachineType SystemType = "VirtualMachine" - HostType SystemType = "Host" -) - -// EndpointAttachDetachRequest is the structure used to send request to the container to modify the system -// Supported resource types are Network and Request Types are Add/Remove -type EndpointAttachDetachRequest struct { - ContainerID string `json:"ContainerId,omitempty"` - SystemType SystemType `json:"SystemType"` - CompartmentID uint16 `json:"CompartmentId,omitempty"` - VirtualNICName string `json:"VirtualNicName,omitempty"` -} - -// EndpointResquestResponse is object to get the endpoint request response -type EndpointResquestResponse struct { - Success bool - Error string -} - -// HNSEndpointRequest makes a HNS call to modify/query a network endpoint -func HNSEndpointRequest(method, path, request string) (*HNSEndpoint, error) { - endpoint := &HNSEndpoint{} - err := hnsCall(method, "/endpoints/"+path, request, &endpoint) - if err != nil { - return nil, err - } - - return endpoint, nil -} - -// HNSListEndpointRequest makes a HNS call to query the list of available endpoints -func HNSListEndpointRequest() ([]HNSEndpoint, error) { - var endpoint []HNSEndpoint - err := hnsCall("GET", "/endpoints/", "", &endpoint) - if err != nil { - return nil, err - } - - return endpoint, nil -} - -// HotAttachEndpoint makes a HCS Call to attach the endpoint to the container -func HotAttachEndpoint(containerID string, endpointID string) error { - return modifyNetworkEndpoint(containerID, endpointID, Add) -} - -// HotDetachEndpoint makes a HCS Call to detach the endpoint from the container -func HotDetachEndpoint(containerID string, endpointID string) error { - return modifyNetworkEndpoint(containerID, endpointID, Remove) -} - -// ModifyContainer corresponding to the container id, by sending a request -func modifyContainer(id string, request *ResourceModificationRequestResponse) error { - container, err := OpenContainer(id) - if err != nil { - if IsNotExist(err) { - return ErrComputeSystemDoesNotExist - } - return getInnerError(err) - } - defer container.Close() - err = container.Modify(request) - if err != nil { - if IsNotSupported(err) { - return ErrPlatformNotSupported - } - return getInnerError(err) - } - - return nil -} - -func modifyNetworkEndpoint(containerID string, endpointID string, request RequestType) error { - requestMessage := &ResourceModificationRequestResponse{ - Resource: Network, - Request: request, - Data: endpointID, - } - err := modifyContainer(containerID, requestMessage) - - if err != nil { - return err - } - - return nil -} - -// GetHNSEndpointByID get the Endpoint by ID -func GetHNSEndpointByID(endpointID string) (*HNSEndpoint, error) { - return HNSEndpointRequest("GET", endpointID, "") -} - -// GetHNSEndpointByName gets the endpoint filtered by Name -func GetHNSEndpointByName(endpointName string) (*HNSEndpoint, error) { - hnsResponse, err := HNSListEndpointRequest() - if err != nil { - return nil, err - } - for _, hnsEndpoint := range hnsResponse { - if hnsEndpoint.Name == endpointName { - return &hnsEndpoint, nil - } - } - return nil, fmt.Errorf("Endpoint %v not found", endpointName) -} - -// Create Endpoint by sending EndpointRequest to HNS. TODO: Create a separate HNS interface to place all these methods -func (endpoint *HNSEndpoint) Create() (*HNSEndpoint, error) { - operation := "Create" - title := "HCSShim::HNSEndpoint::" + operation - logrus.Debugf(title+" id=%s", endpoint.Id) - - jsonString, err := json.Marshal(endpoint) - if err != nil { - return nil, err - } - return HNSEndpointRequest("POST", "", string(jsonString)) -} - -// Delete Endpoint by sending EndpointRequest to HNS -func (endpoint *HNSEndpoint) Delete() (*HNSEndpoint, error) { - operation := "Delete" - title := "HCSShim::HNSEndpoint::" + operation - logrus.Debugf(title+" id=%s", endpoint.Id) - - return HNSEndpointRequest("DELETE", endpoint.Id, "") -} - -// Update Endpoint -func (endpoint *HNSEndpoint) Update() (*HNSEndpoint, error) { - operation := "Update" - title := "HCSShim::HNSEndpoint::" + operation - logrus.Debugf(title+" id=%s", endpoint.Id) - jsonString, err := json.Marshal(endpoint) - if err != nil { - return nil, err - } - err = hnsCall("POST", "/endpoints/"+endpoint.Id, string(jsonString), &endpoint) - - return endpoint, err -} - -// ContainerHotAttach attaches an endpoint to a running container -func (endpoint *HNSEndpoint) ContainerHotAttach(containerID string) error { - operation := "ContainerHotAttach" - title := "HCSShim::HNSEndpoint::" + operation - logrus.Debugf(title+" id=%s, containerId=%s", endpoint.Id, containerID) - - return modifyNetworkEndpoint(containerID, endpoint.Id, Add) -} - -// ContainerHotDetach detaches an endpoint from a running container -func (endpoint *HNSEndpoint) ContainerHotDetach(containerID string) error { - operation := "ContainerHotDetach" - title := "HCSShim::HNSEndpoint::" + operation - logrus.Debugf(title+" id=%s, containerId=%s", endpoint.Id, containerID) - - return modifyNetworkEndpoint(containerID, endpoint.Id, Remove) -} - -// ApplyACLPolicy applies Acl Policy on the Endpoint -func (endpoint *HNSEndpoint) ApplyACLPolicy(policy *ACLPolicy) error { - operation := "ApplyACLPolicy" - title := "HCSShim::HNSEndpoint::" + operation - logrus.Debugf(title+" id=%s", endpoint.Id) - - jsonString, err := json.Marshal(policy) - if err != nil { - return err - } - endpoint.Policies[0] = jsonString - _, err = endpoint.Update() - return err -} - -// ContainerAttach attaches an endpoint to container -func (endpoint *HNSEndpoint) ContainerAttach(containerID string, compartmentID uint16) error { - operation := "ContainerAttach" - title := "HCSShim::HNSEndpoint::" + operation - logrus.Debugf(title+" id=%s", endpoint.Id) - - requestMessage := &EndpointAttachDetachRequest{ - ContainerID: containerID, - CompartmentID: compartmentID, - SystemType: ContainerType, - } - response := &EndpointResquestResponse{} - jsonString, err := json.Marshal(requestMessage) - if err != nil { - return err - } - return hnsCall("POST", "/endpoints/"+endpoint.Id+"/attach", string(jsonString), &response) -} - -// ContainerDetach detaches an endpoint from container -func (endpoint *HNSEndpoint) ContainerDetach(containerID string) error { - operation := "ContainerDetach" - title := "HCSShim::HNSEndpoint::" + operation - logrus.Debugf(title+" id=%s", endpoint.Id) - - requestMessage := &EndpointAttachDetachRequest{ - ContainerID: containerID, - SystemType: ContainerType, - } - response := &EndpointResquestResponse{} - - jsonString, err := json.Marshal(requestMessage) - if err != nil { - return err - } - return hnsCall("POST", "/endpoints/"+endpoint.Id+"/detach", string(jsonString), &response) -} - -// HostAttach attaches a nic on the host -func (endpoint *HNSEndpoint) HostAttach(compartmentID uint16) error { - operation := "HostAttach" - title := "HCSShim::HNSEndpoint::" + operation - logrus.Debugf(title+" id=%s", endpoint.Id) - requestMessage := &EndpointAttachDetachRequest{ - CompartmentID: compartmentID, - SystemType: HostType, - } - response := &EndpointResquestResponse{} - - jsonString, err := json.Marshal(requestMessage) - if err != nil { - return err - } - return hnsCall("POST", "/endpoints/"+endpoint.Id+"/attach", string(jsonString), &response) - -} - -// HostDetach detaches a nic on the host -func (endpoint *HNSEndpoint) HostDetach() error { - operation := "HostDetach" - title := "HCSShim::HNSEndpoint::" + operation - logrus.Debugf(title+" id=%s", endpoint.Id) - requestMessage := &EndpointAttachDetachRequest{ - SystemType: HostType, - } - response := &EndpointResquestResponse{} - - jsonString, err := json.Marshal(requestMessage) - if err != nil { - return err - } - return hnsCall("POST", "/endpoints/"+endpoint.Id+"/detach", string(jsonString), &response) -} - -// VirtualMachineNICAttach attaches a endpoint to a virtual machine -func (endpoint *HNSEndpoint) VirtualMachineNICAttach(virtualMachineNICName string) error { - operation := "VirtualMachineNicAttach" - title := "HCSShim::HNSEndpoint::" + operation - logrus.Debugf(title+" id=%s", endpoint.Id) - requestMessage := &EndpointAttachDetachRequest{ - VirtualNICName: virtualMachineNICName, - SystemType: VirtualMachineType, - } - response := &EndpointResquestResponse{} - - jsonString, err := json.Marshal(requestMessage) - if err != nil { - return err - } - return hnsCall("POST", "/endpoints/"+endpoint.Id+"/attach", string(jsonString), &response) -} - -// VirtualMachineNICDetach detaches a endpoint from a virtual machine -func (endpoint *HNSEndpoint) VirtualMachineNICDetach() error { - operation := "VirtualMachineNicDetach" - title := "HCSShim::HNSEndpoint::" + operation - logrus.Debugf(title+" id=%s", endpoint.Id) - - requestMessage := &EndpointAttachDetachRequest{ - SystemType: VirtualMachineType, - } - response := &EndpointResquestResponse{} - - jsonString, err := json.Marshal(requestMessage) - if err != nil { - return err - } - return hnsCall("POST", "/endpoints/"+endpoint.Id+"/detach", string(jsonString), &response) -} +package hcsshim + +import ( + "encoding/json" + "net" + + "github.com/sirupsen/logrus" +) + +// HNSEndpoint represents a network endpoint in HNS +type HNSEndpoint struct { + Id string `json:"ID,omitempty"` + Name string `json:",omitempty"` + VirtualNetwork string `json:",omitempty"` + VirtualNetworkName string `json:",omitempty"` + Policies []json.RawMessage `json:",omitempty"` + MacAddress string `json:",omitempty"` + IPAddress net.IP `json:",omitempty"` + DNSSuffix string `json:",omitempty"` + DNSServerList string `json:",omitempty"` + GatewayAddress string `json:",omitempty"` + EnableInternalDNS bool `json:",omitempty"` + DisableICC bool `json:",omitempty"` + PrefixLength uint8 `json:",omitempty"` + IsRemoteEndpoint bool `json:",omitempty"` +} + +//SystemType represents the type of the system on which actions are done +type SystemType string + +// SystemType const +const ( + ContainerType SystemType = "Container" + VirtualMachineType SystemType = "VirtualMachine" + HostType SystemType = "Host" +) + +// EndpointAttachDetachRequest is the structure used to send request to the container to modify the system +// Supported resource types are Network and Request Types are Add/Remove +type EndpointAttachDetachRequest struct { + ContainerID string `json:"ContainerId,omitempty"` + SystemType SystemType `json:"SystemType"` + CompartmentID uint16 `json:"CompartmentId,omitempty"` + VirtualNICName string `json:"VirtualNicName,omitempty"` +} + +// EndpointResquestResponse is object to get the endpoint request response +type EndpointResquestResponse struct { + Success bool + Error string +} + +// HNSEndpointRequest makes a HNS call to modify/query a network endpoint +func HNSEndpointRequest(method, path, request string) (*HNSEndpoint, error) { + endpoint := &HNSEndpoint{} + err := hnsCall(method, "/endpoints/"+path, request, &endpoint) + if err != nil { + return nil, err + } + + return endpoint, nil +} + +// HNSListEndpointRequest makes a HNS call to query the list of available endpoints +func HNSListEndpointRequest() ([]HNSEndpoint, error) { + var endpoint []HNSEndpoint + err := hnsCall("GET", "/endpoints/", "", &endpoint) + if err != nil { + return nil, err + } + + return endpoint, nil +} + +// HotAttachEndpoint makes a HCS Call to attach the endpoint to the container +func HotAttachEndpoint(containerID string, endpointID string) error { + return modifyNetworkEndpoint(containerID, endpointID, Add) +} + +// HotDetachEndpoint makes a HCS Call to detach the endpoint from the container +func HotDetachEndpoint(containerID string, endpointID string) error { + return modifyNetworkEndpoint(containerID, endpointID, Remove) +} + +// ModifyContainer corresponding to the container id, by sending a request +func modifyContainer(id string, request *ResourceModificationRequestResponse) error { + container, err := OpenContainer(id) + if err != nil { + if IsNotExist(err) { + return ErrComputeSystemDoesNotExist + } + return getInnerError(err) + } + defer container.Close() + err = container.Modify(request) + if err != nil { + if IsNotSupported(err) { + return ErrPlatformNotSupported + } + return getInnerError(err) + } + + return nil +} + +func modifyNetworkEndpoint(containerID string, endpointID string, request RequestType) error { + requestMessage := &ResourceModificationRequestResponse{ + Resource: Network, + Request: request, + Data: endpointID, + } + err := modifyContainer(containerID, requestMessage) + + if err != nil { + return err + } + + return nil +} + +// GetHNSEndpointByID get the Endpoint by ID +func GetHNSEndpointByID(endpointID string) (*HNSEndpoint, error) { + return HNSEndpointRequest("GET", endpointID, "") +} + +// GetHNSEndpointByName gets the endpoint filtered by Name +func GetHNSEndpointByName(endpointName string) (*HNSEndpoint, error) { + hnsResponse, err := HNSListEndpointRequest() + if err != nil { + return nil, err + } + for _, hnsEndpoint := range hnsResponse { + if hnsEndpoint.Name == endpointName { + return &hnsEndpoint, nil + } + } + return nil, EndpointNotFoundError{EndpointName: endpointName} +} + +// Create Endpoint by sending EndpointRequest to HNS. TODO: Create a separate HNS interface to place all these methods +func (endpoint *HNSEndpoint) Create() (*HNSEndpoint, error) { + operation := "Create" + title := "HCSShim::HNSEndpoint::" + operation + logrus.Debugf(title+" id=%s", endpoint.Id) + + jsonString, err := json.Marshal(endpoint) + if err != nil { + return nil, err + } + return HNSEndpointRequest("POST", "", string(jsonString)) +} + +// Delete Endpoint by sending EndpointRequest to HNS +func (endpoint *HNSEndpoint) Delete() (*HNSEndpoint, error) { + operation := "Delete" + title := "HCSShim::HNSEndpoint::" + operation + logrus.Debugf(title+" id=%s", endpoint.Id) + + return HNSEndpointRequest("DELETE", endpoint.Id, "") +} + +// Update Endpoint +func (endpoint *HNSEndpoint) Update() (*HNSEndpoint, error) { + operation := "Update" + title := "HCSShim::HNSEndpoint::" + operation + logrus.Debugf(title+" id=%s", endpoint.Id) + jsonString, err := json.Marshal(endpoint) + if err != nil { + return nil, err + } + err = hnsCall("POST", "/endpoints/"+endpoint.Id, string(jsonString), &endpoint) + + return endpoint, err +} + +// ContainerHotAttach attaches an endpoint to a running container +func (endpoint *HNSEndpoint) ContainerHotAttach(containerID string) error { + operation := "ContainerHotAttach" + title := "HCSShim::HNSEndpoint::" + operation + logrus.Debugf(title+" id=%s, containerId=%s", endpoint.Id, containerID) + + return modifyNetworkEndpoint(containerID, endpoint.Id, Add) +} + +// ContainerHotDetach detaches an endpoint from a running container +func (endpoint *HNSEndpoint) ContainerHotDetach(containerID string) error { + operation := "ContainerHotDetach" + title := "HCSShim::HNSEndpoint::" + operation + logrus.Debugf(title+" id=%s, containerId=%s", endpoint.Id, containerID) + + return modifyNetworkEndpoint(containerID, endpoint.Id, Remove) +} + +// ApplyACLPolicy applies a set of ACL Policies on the Endpoint +func (endpoint *HNSEndpoint) ApplyACLPolicy(policies ...*ACLPolicy) error { + operation := "ApplyACLPolicy" + title := "HCSShim::HNSEndpoint::" + operation + logrus.Debugf(title+" id=%s", endpoint.Id) + + for _, policy := range policies { + if policy == nil { + continue + } + jsonString, err := json.Marshal(policy) + if err != nil { + return err + } + endpoint.Policies = append(endpoint.Policies, jsonString) + } + + _, err := endpoint.Update() + return err +} + +// ContainerAttach attaches an endpoint to container +func (endpoint *HNSEndpoint) ContainerAttach(containerID string, compartmentID uint16) error { + operation := "ContainerAttach" + title := "HCSShim::HNSEndpoint::" + operation + logrus.Debugf(title+" id=%s", endpoint.Id) + + requestMessage := &EndpointAttachDetachRequest{ + ContainerID: containerID, + CompartmentID: compartmentID, + SystemType: ContainerType, + } + response := &EndpointResquestResponse{} + jsonString, err := json.Marshal(requestMessage) + if err != nil { + return err + } + return hnsCall("POST", "/endpoints/"+endpoint.Id+"/attach", string(jsonString), &response) +} + +// ContainerDetach detaches an endpoint from container +func (endpoint *HNSEndpoint) ContainerDetach(containerID string) error { + operation := "ContainerDetach" + title := "HCSShim::HNSEndpoint::" + operation + logrus.Debugf(title+" id=%s", endpoint.Id) + + requestMessage := &EndpointAttachDetachRequest{ + ContainerID: containerID, + SystemType: ContainerType, + } + response := &EndpointResquestResponse{} + + jsonString, err := json.Marshal(requestMessage) + if err != nil { + return err + } + return hnsCall("POST", "/endpoints/"+endpoint.Id+"/detach", string(jsonString), &response) +} + +// HostAttach attaches a nic on the host +func (endpoint *HNSEndpoint) HostAttach(compartmentID uint16) error { + operation := "HostAttach" + title := "HCSShim::HNSEndpoint::" + operation + logrus.Debugf(title+" id=%s", endpoint.Id) + requestMessage := &EndpointAttachDetachRequest{ + CompartmentID: compartmentID, + SystemType: HostType, + } + response := &EndpointResquestResponse{} + + jsonString, err := json.Marshal(requestMessage) + if err != nil { + return err + } + return hnsCall("POST", "/endpoints/"+endpoint.Id+"/attach", string(jsonString), &response) + +} + +// HostDetach detaches a nic on the host +func (endpoint *HNSEndpoint) HostDetach() error { + operation := "HostDetach" + title := "HCSShim::HNSEndpoint::" + operation + logrus.Debugf(title+" id=%s", endpoint.Id) + requestMessage := &EndpointAttachDetachRequest{ + SystemType: HostType, + } + response := &EndpointResquestResponse{} + + jsonString, err := json.Marshal(requestMessage) + if err != nil { + return err + } + return hnsCall("POST", "/endpoints/"+endpoint.Id+"/detach", string(jsonString), &response) +} + +// VirtualMachineNICAttach attaches a endpoint to a virtual machine +func (endpoint *HNSEndpoint) VirtualMachineNICAttach(virtualMachineNICName string) error { + operation := "VirtualMachineNicAttach" + title := "HCSShim::HNSEndpoint::" + operation + logrus.Debugf(title+" id=%s", endpoint.Id) + requestMessage := &EndpointAttachDetachRequest{ + VirtualNICName: virtualMachineNICName, + SystemType: VirtualMachineType, + } + response := &EndpointResquestResponse{} + + jsonString, err := json.Marshal(requestMessage) + if err != nil { + return err + } + return hnsCall("POST", "/endpoints/"+endpoint.Id+"/attach", string(jsonString), &response) +} + +// VirtualMachineNICDetach detaches a endpoint from a virtual machine +func (endpoint *HNSEndpoint) VirtualMachineNICDetach() error { + operation := "VirtualMachineNicDetach" + title := "HCSShim::HNSEndpoint::" + operation + logrus.Debugf(title+" id=%s", endpoint.Id) + + requestMessage := &EndpointAttachDetachRequest{ + SystemType: VirtualMachineType, + } + response := &EndpointResquestResponse{} + + jsonString, err := json.Marshal(requestMessage) + if err != nil { + return err + } + return hnsCall("POST", "/endpoints/"+endpoint.Id+"/detach", string(jsonString), &response) +} diff --git a/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/hnsnetwork.go b/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/hnsnetwork.go index 3345bfa3f2..398583a4e4 100644 --- a/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/hnsnetwork.go +++ b/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/hnsnetwork.go @@ -1,142 +1,141 @@ -package hcsshim - -import ( - "encoding/json" - "fmt" - "net" - - "github.com/sirupsen/logrus" -) - -// Subnet is assoicated with a network and represents a list -// of subnets available to the network -type Subnet struct { - AddressPrefix string `json:",omitempty"` - GatewayAddress string `json:",omitempty"` - Policies []json.RawMessage `json:",omitempty"` -} - -// MacPool is assoicated with a network and represents a list -// of macaddresses available to the network -type MacPool struct { - StartMacAddress string `json:",omitempty"` - EndMacAddress string `json:",omitempty"` -} - -// HNSNetwork represents a network in HNS -type HNSNetwork struct { - Id string `json:"ID,omitempty"` - Name string `json:",omitempty"` - Type string `json:",omitempty"` - NetworkAdapterName string `json:",omitempty"` - SourceMac string `json:",omitempty"` - Policies []json.RawMessage `json:",omitempty"` - MacPools []MacPool `json:",omitempty"` - Subnets []Subnet `json:",omitempty"` - DNSSuffix string `json:",omitempty"` - DNSServerList string `json:",omitempty"` - DNSServerCompartment uint32 `json:",omitempty"` - ManagementIP string `json:",omitempty"` - AutomaticDNS bool `json:",omitempty"` -} - -type hnsNetworkResponse struct { - Success bool - Error string - Output HNSNetwork -} - -type hnsResponse struct { - Success bool - Error string - Output json.RawMessage -} - -// HNSNetworkRequest makes a call into HNS to update/query a single network -func HNSNetworkRequest(method, path, request string) (*HNSNetwork, error) { - var network HNSNetwork - err := hnsCall(method, "/networks/"+path, request, &network) - if err != nil { - return nil, err - } - - return &network, nil -} - -// HNSListNetworkRequest makes a HNS call to query the list of available networks -func HNSListNetworkRequest(method, path, request string) ([]HNSNetwork, error) { - var network []HNSNetwork - err := hnsCall(method, "/networks/"+path, request, &network) - if err != nil { - return nil, err - } - - return network, nil -} - -// GetHNSNetworkByID -func GetHNSNetworkByID(networkID string) (*HNSNetwork, error) { - return HNSNetworkRequest("GET", networkID, "") -} - -// GetHNSNetworkName filtered by Name -func GetHNSNetworkByName(networkName string) (*HNSNetwork, error) { - hsnnetworks, err := HNSListNetworkRequest("GET", "", "") - if err != nil { - return nil, err - } - for _, hnsnetwork := range hsnnetworks { - if hnsnetwork.Name == networkName { - return &hnsnetwork, nil - } - } - return nil, fmt.Errorf("Network %v not found", networkName) -} - -// Create Network by sending NetworkRequest to HNS. -func (network *HNSNetwork) Create() (*HNSNetwork, error) { - operation := "Create" - title := "HCSShim::HNSNetwork::" + operation - logrus.Debugf(title+" id=%s", network.Id) - - jsonString, err := json.Marshal(network) - if err != nil { - return nil, err - } - return HNSNetworkRequest("POST", "", string(jsonString)) -} - -// Delete Network by sending NetworkRequest to HNS -func (network *HNSNetwork) Delete() (*HNSNetwork, error) { - operation := "Delete" - title := "HCSShim::HNSNetwork::" + operation - logrus.Debugf(title+" id=%s", network.Id) - - return HNSNetworkRequest("DELETE", network.Id, "") -} - -// Creates an endpoint on the Network. -func (network *HNSNetwork) NewEndpoint(ipAddress net.IP, macAddress net.HardwareAddr) *HNSEndpoint { - return &HNSEndpoint{ - VirtualNetwork: network.Id, - IPAddress: ipAddress, - MacAddress: string(macAddress), - } -} - -func (network *HNSNetwork) CreateEndpoint(endpoint *HNSEndpoint) (*HNSEndpoint, error) { - operation := "CreateEndpoint" - title := "HCSShim::HNSNetwork::" + operation - logrus.Debugf(title+" id=%s, endpointId=%s", network.Id, endpoint.Id) - - endpoint.VirtualNetwork = network.Id - return endpoint.Create() -} - -func (network *HNSNetwork) CreateRemoteEndpoint(endpoint *HNSEndpoint) (*HNSEndpoint, error) { - operation := "CreateRemoteEndpoint" - title := "HCSShim::HNSNetwork::" + operation - logrus.Debugf(title+" id=%s", network.Id) - endpoint.IsRemoteEndpoint = true - return network.CreateEndpoint(endpoint) -} +package hcsshim + +import ( + "encoding/json" + "net" + + "github.com/sirupsen/logrus" +) + +// Subnet is assoicated with a network and represents a list +// of subnets available to the network +type Subnet struct { + AddressPrefix string `json:",omitempty"` + GatewayAddress string `json:",omitempty"` + Policies []json.RawMessage `json:",omitempty"` +} + +// MacPool is assoicated with a network and represents a list +// of macaddresses available to the network +type MacPool struct { + StartMacAddress string `json:",omitempty"` + EndMacAddress string `json:",omitempty"` +} + +// HNSNetwork represents a network in HNS +type HNSNetwork struct { + Id string `json:"ID,omitempty"` + Name string `json:",omitempty"` + Type string `json:",omitempty"` + NetworkAdapterName string `json:",omitempty"` + SourceMac string `json:",omitempty"` + Policies []json.RawMessage `json:",omitempty"` + MacPools []MacPool `json:",omitempty"` + Subnets []Subnet `json:",omitempty"` + DNSSuffix string `json:",omitempty"` + DNSServerList string `json:",omitempty"` + DNSServerCompartment uint32 `json:",omitempty"` + ManagementIP string `json:",omitempty"` + AutomaticDNS bool `json:",omitempty"` +} + +type hnsNetworkResponse struct { + Success bool + Error string + Output HNSNetwork +} + +type hnsResponse struct { + Success bool + Error string + Output json.RawMessage +} + +// HNSNetworkRequest makes a call into HNS to update/query a single network +func HNSNetworkRequest(method, path, request string) (*HNSNetwork, error) { + var network HNSNetwork + err := hnsCall(method, "/networks/"+path, request, &network) + if err != nil { + return nil, err + } + + return &network, nil +} + +// HNSListNetworkRequest makes a HNS call to query the list of available networks +func HNSListNetworkRequest(method, path, request string) ([]HNSNetwork, error) { + var network []HNSNetwork + err := hnsCall(method, "/networks/"+path, request, &network) + if err != nil { + return nil, err + } + + return network, nil +} + +// GetHNSNetworkByID +func GetHNSNetworkByID(networkID string) (*HNSNetwork, error) { + return HNSNetworkRequest("GET", networkID, "") +} + +// GetHNSNetworkName filtered by Name +func GetHNSNetworkByName(networkName string) (*HNSNetwork, error) { + hsnnetworks, err := HNSListNetworkRequest("GET", "", "") + if err != nil { + return nil, err + } + for _, hnsnetwork := range hsnnetworks { + if hnsnetwork.Name == networkName { + return &hnsnetwork, nil + } + } + return nil, NetworkNotFoundError{NetworkName: networkName} +} + +// Create Network by sending NetworkRequest to HNS. +func (network *HNSNetwork) Create() (*HNSNetwork, error) { + operation := "Create" + title := "HCSShim::HNSNetwork::" + operation + logrus.Debugf(title+" id=%s", network.Id) + + jsonString, err := json.Marshal(network) + if err != nil { + return nil, err + } + return HNSNetworkRequest("POST", "", string(jsonString)) +} + +// Delete Network by sending NetworkRequest to HNS +func (network *HNSNetwork) Delete() (*HNSNetwork, error) { + operation := "Delete" + title := "HCSShim::HNSNetwork::" + operation + logrus.Debugf(title+" id=%s", network.Id) + + return HNSNetworkRequest("DELETE", network.Id, "") +} + +// Creates an endpoint on the Network. +func (network *HNSNetwork) NewEndpoint(ipAddress net.IP, macAddress net.HardwareAddr) *HNSEndpoint { + return &HNSEndpoint{ + VirtualNetwork: network.Id, + IPAddress: ipAddress, + MacAddress: string(macAddress), + } +} + +func (network *HNSNetwork) CreateEndpoint(endpoint *HNSEndpoint) (*HNSEndpoint, error) { + operation := "CreateEndpoint" + title := "HCSShim::HNSNetwork::" + operation + logrus.Debugf(title+" id=%s, endpointId=%s", network.Id, endpoint.Id) + + endpoint.VirtualNetwork = network.Id + return endpoint.Create() +} + +func (network *HNSNetwork) CreateRemoteEndpoint(endpoint *HNSEndpoint) (*HNSEndpoint, error) { + operation := "CreateRemoteEndpoint" + title := "HCSShim::HNSNetwork::" + operation + logrus.Debugf(title+" id=%s", network.Id) + endpoint.IsRemoteEndpoint = true + return network.CreateEndpoint(endpoint) +} diff --git a/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/hnspolicy.go b/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/hnspolicy.go index ecfbf0eda3..bf860e9387 100644 --- a/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/hnspolicy.go +++ b/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/hnspolicy.go @@ -1,95 +1,94 @@ -package hcsshim - -// Type of Request Support in ModifySystem -type PolicyType string - -// RequestType const -const ( - Nat PolicyType = "NAT" - ACL PolicyType = "ACL" - PA PolicyType = "PA" - VLAN PolicyType = "VLAN" - VSID PolicyType = "VSID" - VNet PolicyType = "VNET" - L2Driver PolicyType = "L2Driver" - Isolation PolicyType = "Isolation" - QOS PolicyType = "QOS" - OutboundNat PolicyType = "OutBoundNAT" - ExternalLoadBalancer PolicyType = "ELB" - Route PolicyType = "ROUTE" -) - -type NatPolicy struct { - Type PolicyType `json:"Type"` - Protocol string - InternalPort uint16 - ExternalPort uint16 -} - -type QosPolicy struct { - Type PolicyType `json:"Type"` - MaximumOutgoingBandwidthInBytes uint64 -} - -type IsolationPolicy struct { - Type PolicyType `json:"Type"` - VLAN uint - VSID uint - InDefaultIsolation bool -} - -type VlanPolicy struct { - Type PolicyType `json:"Type"` - VLAN uint -} - -type VsidPolicy struct { - Type PolicyType `json:"Type"` - VSID uint -} - -type PaPolicy struct { - Type PolicyType `json:"Type"` - PA string `json:"PA"` -} - -type OutboundNatPolicy struct { - Policy - VIP string `json:"VIP,omitempty"` - Exceptions []string `json:"ExceptionList,omitempty"` -} - -type ActionType string -type DirectionType string -type RuleType string - -const ( - Allow ActionType = "Allow" - Block ActionType = "Block" - - In DirectionType = "In" - Out DirectionType = "Out" - - Host RuleType = "Host" - Switch RuleType = "Switch" -) - -type ACLPolicy struct { - Type PolicyType `json:"Type"` - Protocol uint16 - InternalPort uint16 - Action ActionType - Direction DirectionType - LocalAddress string - RemoteAddress string - LocalPort uint16 - RemotePort uint16 - RuleType RuleType `json:"RuleType,omitempty"` - - Priority uint16 - ServiceName string -} - -type Policy struct { - Type PolicyType `json:"Type"` -} +package hcsshim + +// Type of Request Support in ModifySystem +type PolicyType string + +// RequestType const +const ( + Nat PolicyType = "NAT" + ACL PolicyType = "ACL" + PA PolicyType = "PA" + VLAN PolicyType = "VLAN" + VSID PolicyType = "VSID" + VNet PolicyType = "VNET" + L2Driver PolicyType = "L2Driver" + Isolation PolicyType = "Isolation" + QOS PolicyType = "QOS" + OutboundNat PolicyType = "OutBoundNAT" + ExternalLoadBalancer PolicyType = "ELB" + Route PolicyType = "ROUTE" +) + +type NatPolicy struct { + Type PolicyType `json:"Type"` + Protocol string + InternalPort uint16 + ExternalPort uint16 +} + +type QosPolicy struct { + Type PolicyType `json:"Type"` + MaximumOutgoingBandwidthInBytes uint64 +} + +type IsolationPolicy struct { + Type PolicyType `json:"Type"` + VLAN uint + VSID uint + InDefaultIsolation bool +} + +type VlanPolicy struct { + Type PolicyType `json:"Type"` + VLAN uint +} + +type VsidPolicy struct { + Type PolicyType `json:"Type"` + VSID uint +} + +type PaPolicy struct { + Type PolicyType `json:"Type"` + PA string `json:"PA"` +} + +type OutboundNatPolicy struct { + Policy + VIP string `json:"VIP,omitempty"` + Exceptions []string `json:"ExceptionList,omitempty"` +} + +type ActionType string +type DirectionType string +type RuleType string + +const ( + Allow ActionType = "Allow" + Block ActionType = "Block" + + In DirectionType = "In" + Out DirectionType = "Out" + + Host RuleType = "Host" + Switch RuleType = "Switch" +) + +type ACLPolicy struct { + Type PolicyType `json:"Type"` + Protocol uint16 + InternalPort uint16 + Action ActionType + Direction DirectionType + LocalAddresses string + RemoteAddresses string + LocalPort uint16 + RemotePort uint16 + RuleType RuleType `json:"RuleType,omitempty"` + Priority uint16 + ServiceName string +} + +type Policy struct { + Type PolicyType `json:"Type"` +} diff --git a/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/hnspolicylist.go b/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/hnspolicylist.go index bbd7e1edb0..ef1ccab16e 100644 --- a/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/hnspolicylist.go +++ b/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/hnspolicylist.go @@ -1,200 +1,200 @@ -package hcsshim - -import ( - "encoding/json" - - "github.com/sirupsen/logrus" -) - -// RoutePolicy is a structure defining schema for Route based Policy -type RoutePolicy struct { - Policy - DestinationPrefix string `json:"DestinationPrefix,omitempty"` - NextHop string `json:"NextHop,omitempty"` - EncapEnabled bool `json:"NeedEncap,omitempty"` -} - -// ELBPolicy is a structure defining schema for ELB LoadBalancing based Policy -type ELBPolicy struct { - LBPolicy - SourceVIP string `json:"SourceVIP,omitempty"` - VIPs []string `json:"VIPs,omitempty"` - ILB bool `json:"ILB,omitempty"` -} - -// LBPolicy is a structure defining schema for LoadBalancing based Policy -type LBPolicy struct { - Policy - Protocol uint16 `json:"Protocol,omitempty"` - InternalPort uint16 - ExternalPort uint16 -} - -// PolicyList is a structure defining schema for Policy list request -type PolicyList struct { - ID string `json:"ID,omitempty"` - EndpointReferences []string `json:"References,omitempty"` - Policies []json.RawMessage `json:"Policies,omitempty"` -} - -// HNSPolicyListRequest makes a call into HNS to update/query a single network -func HNSPolicyListRequest(method, path, request string) (*PolicyList, error) { - var policy PolicyList - err := hnsCall(method, "/policylists/"+path, request, &policy) - if err != nil { - return nil, err - } - - return &policy, nil -} - -// HNSListPolicyListRequest gets all the policy list -func HNSListPolicyListRequest() ([]PolicyList, error) { - var plist []PolicyList - err := hnsCall("GET", "/policylists/", "", &plist) - if err != nil { - return nil, err - } - - return plist, nil -} - -// PolicyListRequest makes a HNS call to modify/query a network policy list -func PolicyListRequest(method, path, request string) (*PolicyList, error) { - policylist := &PolicyList{} - err := hnsCall(method, "/policylists/"+path, request, &policylist) - if err != nil { - return nil, err - } - - return policylist, nil -} - -// GetPolicyListByID get the policy list by ID -func GetPolicyListByID(policyListID string) (*PolicyList, error) { - return PolicyListRequest("GET", policyListID, "") -} - -// Create PolicyList by sending PolicyListRequest to HNS. -func (policylist *PolicyList) Create() (*PolicyList, error) { - operation := "Create" - title := "HCSShim::PolicyList::" + operation - logrus.Debugf(title+" id=%s", policylist.ID) - jsonString, err := json.Marshal(policylist) - if err != nil { - return nil, err - } - return PolicyListRequest("POST", "", string(jsonString)) -} - -// Delete deletes PolicyList -func (policylist *PolicyList) Delete() (*PolicyList, error) { - operation := "Delete" - title := "HCSShim::PolicyList::" + operation - logrus.Debugf(title+" id=%s", policylist.ID) - - return PolicyListRequest("DELETE", policylist.ID, "") -} - -// AddEndpoint add an endpoint to a Policy List -func (policylist *PolicyList) AddEndpoint(endpoint *HNSEndpoint) (*PolicyList, error) { - operation := "AddEndpoint" - title := "HCSShim::PolicyList::" + operation - logrus.Debugf(title+" id=%s, endpointId:%s", policylist.ID, endpoint.Id) - - _, err := policylist.Delete() - if err != nil { - return nil, err - } - - // Add Endpoint to the Existing List - policylist.EndpointReferences = append(policylist.EndpointReferences, "/endpoints/"+endpoint.Id) - - return policylist.Create() -} - -// RemoveEndpoint removes an endpoint from the Policy List -func (policylist *PolicyList) RemoveEndpoint(endpoint *HNSEndpoint) (*PolicyList, error) { - operation := "RemoveEndpoint" - title := "HCSShim::PolicyList::" + operation - logrus.Debugf(title+" id=%s, endpointId:%s", policylist.ID, endpoint.Id) - - _, err := policylist.Delete() - if err != nil { - return nil, err - } - - elementToRemove := "/endpoints/" + endpoint.Id - - var references []string - - for _, endpointReference := range policylist.EndpointReferences { - if endpointReference == elementToRemove { - continue - } - references = append(references, endpointReference) - } - policylist.EndpointReferences = references - return policylist.Create() -} - -// AddLoadBalancer policy list for the specified endpoints -func AddLoadBalancer(endpoints []HNSEndpoint, isILB bool, sourceVIP, vip string, protocol uint16, internalPort uint16, externalPort uint16) (*PolicyList, error) { - operation := "AddLoadBalancer" - title := "HCSShim::PolicyList::" + operation - logrus.Debugf(title+" endpointId=%v, isILB=%v, sourceVIP=%s, vip=%s, protocol=%v, internalPort=%v, externalPort=%v", endpoints, isILB, sourceVIP, vip, protocol, internalPort, externalPort) - - policylist := &PolicyList{} - - elbPolicy := &ELBPolicy{ - SourceVIP: sourceVIP, - ILB: isILB, - } - - if len(vip) > 0 { - elbPolicy.VIPs = []string{vip} - } - elbPolicy.Type = ExternalLoadBalancer - elbPolicy.Protocol = protocol - elbPolicy.InternalPort = internalPort - elbPolicy.ExternalPort = externalPort - - for _, endpoint := range endpoints { - policylist.EndpointReferences = append(policylist.EndpointReferences, "/endpoints/"+endpoint.Id) - } - - jsonString, err := json.Marshal(elbPolicy) - if err != nil { - return nil, err - } - policylist.Policies = append(policylist.Policies, jsonString) - return policylist.Create() -} - -// AddRoute adds route policy list for the specified endpoints -func AddRoute(endpoints []HNSEndpoint, destinationPrefix string, nextHop string, encapEnabled bool) (*PolicyList, error) { - operation := "AddRoute" - title := "HCSShim::PolicyList::" + operation - logrus.Debugf(title+" destinationPrefix:%s", destinationPrefix) - - policylist := &PolicyList{} - - rPolicy := &RoutePolicy{ - DestinationPrefix: destinationPrefix, - NextHop: nextHop, - EncapEnabled: encapEnabled, - } - rPolicy.Type = Route - - for _, endpoint := range endpoints { - policylist.EndpointReferences = append(policylist.EndpointReferences, "/endpoints/"+endpoint.Id) - } - - jsonString, err := json.Marshal(rPolicy) - if err != nil { - return nil, err - } - - policylist.Policies = append(policylist.Policies, jsonString) - return policylist.Create() -} +package hcsshim + +import ( + "encoding/json" + + "github.com/sirupsen/logrus" +) + +// RoutePolicy is a structure defining schema for Route based Policy +type RoutePolicy struct { + Policy + DestinationPrefix string `json:"DestinationPrefix,omitempty"` + NextHop string `json:"NextHop,omitempty"` + EncapEnabled bool `json:"NeedEncap,omitempty"` +} + +// ELBPolicy is a structure defining schema for ELB LoadBalancing based Policy +type ELBPolicy struct { + LBPolicy + SourceVIP string `json:"SourceVIP,omitempty"` + VIPs []string `json:"VIPs,omitempty"` + ILB bool `json:"ILB,omitempty"` +} + +// LBPolicy is a structure defining schema for LoadBalancing based Policy +type LBPolicy struct { + Policy + Protocol uint16 `json:"Protocol,omitempty"` + InternalPort uint16 + ExternalPort uint16 +} + +// PolicyList is a structure defining schema for Policy list request +type PolicyList struct { + ID string `json:"ID,omitempty"` + EndpointReferences []string `json:"References,omitempty"` + Policies []json.RawMessage `json:"Policies,omitempty"` +} + +// HNSPolicyListRequest makes a call into HNS to update/query a single network +func HNSPolicyListRequest(method, path, request string) (*PolicyList, error) { + var policy PolicyList + err := hnsCall(method, "/policylists/"+path, request, &policy) + if err != nil { + return nil, err + } + + return &policy, nil +} + +// HNSListPolicyListRequest gets all the policy list +func HNSListPolicyListRequest() ([]PolicyList, error) { + var plist []PolicyList + err := hnsCall("GET", "/policylists/", "", &plist) + if err != nil { + return nil, err + } + + return plist, nil +} + +// PolicyListRequest makes a HNS call to modify/query a network policy list +func PolicyListRequest(method, path, request string) (*PolicyList, error) { + policylist := &PolicyList{} + err := hnsCall(method, "/policylists/"+path, request, &policylist) + if err != nil { + return nil, err + } + + return policylist, nil +} + +// GetPolicyListByID get the policy list by ID +func GetPolicyListByID(policyListID string) (*PolicyList, error) { + return PolicyListRequest("GET", policyListID, "") +} + +// Create PolicyList by sending PolicyListRequest to HNS. +func (policylist *PolicyList) Create() (*PolicyList, error) { + operation := "Create" + title := "HCSShim::PolicyList::" + operation + logrus.Debugf(title+" id=%s", policylist.ID) + jsonString, err := json.Marshal(policylist) + if err != nil { + return nil, err + } + return PolicyListRequest("POST", "", string(jsonString)) +} + +// Delete deletes PolicyList +func (policylist *PolicyList) Delete() (*PolicyList, error) { + operation := "Delete" + title := "HCSShim::PolicyList::" + operation + logrus.Debugf(title+" id=%s", policylist.ID) + + return PolicyListRequest("DELETE", policylist.ID, "") +} + +// AddEndpoint add an endpoint to a Policy List +func (policylist *PolicyList) AddEndpoint(endpoint *HNSEndpoint) (*PolicyList, error) { + operation := "AddEndpoint" + title := "HCSShim::PolicyList::" + operation + logrus.Debugf(title+" id=%s, endpointId:%s", policylist.ID, endpoint.Id) + + _, err := policylist.Delete() + if err != nil { + return nil, err + } + + // Add Endpoint to the Existing List + policylist.EndpointReferences = append(policylist.EndpointReferences, "/endpoints/"+endpoint.Id) + + return policylist.Create() +} + +// RemoveEndpoint removes an endpoint from the Policy List +func (policylist *PolicyList) RemoveEndpoint(endpoint *HNSEndpoint) (*PolicyList, error) { + operation := "RemoveEndpoint" + title := "HCSShim::PolicyList::" + operation + logrus.Debugf(title+" id=%s, endpointId:%s", policylist.ID, endpoint.Id) + + _, err := policylist.Delete() + if err != nil { + return nil, err + } + + elementToRemove := "/endpoints/" + endpoint.Id + + var references []string + + for _, endpointReference := range policylist.EndpointReferences { + if endpointReference == elementToRemove { + continue + } + references = append(references, endpointReference) + } + policylist.EndpointReferences = references + return policylist.Create() +} + +// AddLoadBalancer policy list for the specified endpoints +func AddLoadBalancer(endpoints []HNSEndpoint, isILB bool, sourceVIP, vip string, protocol uint16, internalPort uint16, externalPort uint16) (*PolicyList, error) { + operation := "AddLoadBalancer" + title := "HCSShim::PolicyList::" + operation + logrus.Debugf(title+" endpointId=%v, isILB=%v, sourceVIP=%s, vip=%s, protocol=%v, internalPort=%v, externalPort=%v", endpoints, isILB, sourceVIP, vip, protocol, internalPort, externalPort) + + policylist := &PolicyList{} + + elbPolicy := &ELBPolicy{ + SourceVIP: sourceVIP, + ILB: isILB, + } + + if len(vip) > 0 { + elbPolicy.VIPs = []string{vip} + } + elbPolicy.Type = ExternalLoadBalancer + elbPolicy.Protocol = protocol + elbPolicy.InternalPort = internalPort + elbPolicy.ExternalPort = externalPort + + for _, endpoint := range endpoints { + policylist.EndpointReferences = append(policylist.EndpointReferences, "/endpoints/"+endpoint.Id) + } + + jsonString, err := json.Marshal(elbPolicy) + if err != nil { + return nil, err + } + policylist.Policies = append(policylist.Policies, jsonString) + return policylist.Create() +} + +// AddRoute adds route policy list for the specified endpoints +func AddRoute(endpoints []HNSEndpoint, destinationPrefix string, nextHop string, encapEnabled bool) (*PolicyList, error) { + operation := "AddRoute" + title := "HCSShim::PolicyList::" + operation + logrus.Debugf(title+" destinationPrefix:%s", destinationPrefix) + + policylist := &PolicyList{} + + rPolicy := &RoutePolicy{ + DestinationPrefix: destinationPrefix, + NextHop: nextHop, + EncapEnabled: encapEnabled, + } + rPolicy.Type = Route + + for _, endpoint := range endpoints { + policylist.EndpointReferences = append(policylist.EndpointReferences, "/endpoints/"+endpoint.Id) + } + + jsonString, err := json.Marshal(rPolicy) + if err != nil { + return nil, err + } + + policylist.Policies = append(policylist.Policies, jsonString) + return policylist.Create() +} diff --git a/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/importlayer.go b/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/importlayer.go index 3aed14376a..2742b9f750 100644 --- a/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/importlayer.go +++ b/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/importlayer.go @@ -129,37 +129,39 @@ type legacyLayerWriterWrapper struct { } func (r *legacyLayerWriterWrapper) Close() error { - defer os.RemoveAll(r.root) + defer os.RemoveAll(r.root.Name()) + defer r.legacyLayerWriter.CloseRoots() err := r.legacyLayerWriter.Close() if err != nil { return err } - // Use the original path here because ImportLayer does not support long paths for the source in TP5. - // But do use a long path for the destination to work around another bug with directories - // with MAX_PATH - 12 < length < MAX_PATH. info := r.info - fullPath, err := makeLongAbsPath(filepath.Join(info.HomeDir, r.layerID)) - if err != nil { + info.HomeDir = "" + if err = ImportLayer(info, r.destRoot.Name(), r.path, r.parentLayerPaths); err != nil { return err } - - info.HomeDir = "" - if err = ImportLayer(info, fullPath, r.path, r.parentLayerPaths); err != nil { - return err + for _, name := range r.Tombstones { + if err = removeRelative(name, r.destRoot); err != nil && !os.IsNotExist(err) { + return err + } } // Add any hard links that were collected. for _, lnk := range r.PendingLinks { - if err = os.Remove(lnk.Path); err != nil && !os.IsNotExist(err) { + if err = removeRelative(lnk.Path, r.destRoot); err != nil && !os.IsNotExist(err) { return err } - if err = os.Link(lnk.Target, lnk.Path); err != nil { + if err = linkRelative(lnk.Target, lnk.TargetRoot, lnk.Path, r.destRoot); err != nil { return err } } // Prepare the utility VM for use if one is present in the layer. if r.HasUtilityVM { - err = ProcessUtilityVMImage(filepath.Join(fullPath, "UtilityVM")) + err := ensureNotReparsePointRelative("UtilityVM", r.destRoot) + if err != nil { + return err + } + err = ProcessUtilityVMImage(filepath.Join(r.destRoot.Name(), "UtilityVM")) if err != nil { return err } @@ -173,8 +175,12 @@ func (r *legacyLayerWriterWrapper) Close() error { func NewLayerWriter(info DriverInfo, layerID string, parentLayerPaths []string) (LayerWriter, error) { if len(parentLayerPaths) == 0 { // This is a base layer. It gets imported differently. + f, err := openRoot(filepath.Join(info.HomeDir, layerID)) + if err != nil { + return nil, err + } return &baseLayerWriter{ - root: filepath.Join(info.HomeDir, layerID), + root: f, }, nil } @@ -185,8 +191,12 @@ func NewLayerWriter(info DriverInfo, layerID string, parentLayerPaths []string) if err != nil { return nil, err } + w, err := newLegacyLayerWriter(path, parentLayerPaths, filepath.Join(info.HomeDir, layerID)) + if err != nil { + return nil, err + } return &legacyLayerWriterWrapper{ - legacyLayerWriter: newLegacyLayerWriter(path, parentLayerPaths, filepath.Join(info.HomeDir, layerID)), + legacyLayerWriter: w, info: info, layerID: layerID, path: path, diff --git a/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/interface.go b/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/interface.go index 9fc7852e41..e21f30025a 100644 --- a/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/interface.go +++ b/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/interface.go @@ -30,11 +30,12 @@ type Layer struct { } type MappedDir struct { - HostPath string - ContainerPath string - ReadOnly bool - BandwidthMaximum uint64 - IOPSMaximum uint64 + HostPath string + ContainerPath string + ReadOnly bool + BandwidthMaximum uint64 + IOPSMaximum uint64 + CreateInUtilityVM bool } type MappedPipe struct { diff --git a/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/legacy.go b/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/legacy.go index c7f6073ac3..0b23b6c4d0 100644 --- a/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/legacy.go +++ b/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/legacy.go @@ -121,6 +121,16 @@ func (r *legacyLayerReader) walkUntilCancelled() error { if err != nil { return err } + + // Indirect fix for https://github.com/moby/moby/issues/32838#issuecomment-343610048. + // Handle failure from what may be a golang bug in the conversion of + // UTF16 to UTF8 in files which are left in the recycle bin. Os.Lstat + // which is called by filepath.Walk will fail when a filename contains + // unicode characters. Skip the recycle bin regardless which is goodness. + if strings.EqualFold(path, filepath.Join(r.root, `Files\$Recycle.Bin`)) && info.IsDir() { + return filepath.SkipDir + } + if path == r.root || path == filepath.Join(r.root, "tombstones.txt") || strings.HasSuffix(path, ".$wcidirs$") { return nil } @@ -326,59 +336,79 @@ func (r *legacyLayerReader) Close() error { type pendingLink struct { Path, Target string + TargetRoot *os.File +} + +type pendingDir struct { + Path string + Root *os.File } type legacyLayerWriter struct { - root string - parentRoots []string - destRoot string - currentFile *os.File - backupWriter *winio.BackupFileWriter - tombstones []string - pathFixed bool - HasUtilityVM bool - uvmDi []dirInfo - addedFiles map[string]bool - PendingLinks []pendingLink + root *os.File + destRoot *os.File + parentRoots []*os.File + currentFile *os.File + currentFileName string + currentFileRoot *os.File + backupWriter *winio.BackupFileWriter + Tombstones []string + HasUtilityVM bool + uvmDi []dirInfo + addedFiles map[string]bool + PendingLinks []pendingLink + pendingDirs []pendingDir + currentIsDir bool } // newLegacyLayerWriter returns a LayerWriter that can write the contaler layer // transport format to disk. -func newLegacyLayerWriter(root string, parentRoots []string, destRoot string) *legacyLayerWriter { - return &legacyLayerWriter{ - root: root, - parentRoots: parentRoots, - destRoot: destRoot, - addedFiles: make(map[string]bool), +func newLegacyLayerWriter(root string, parentRoots []string, destRoot string) (w *legacyLayerWriter, err error) { + w = &legacyLayerWriter{ + addedFiles: make(map[string]bool), } + defer func() { + if err != nil { + w.CloseRoots() + w = nil + } + }() + w.root, err = openRoot(root) + if err != nil { + return + } + w.destRoot, err = openRoot(destRoot) + if err != nil { + return + } + for _, r := range parentRoots { + f, err := openRoot(r) + if err != nil { + return w, err + } + w.parentRoots = append(w.parentRoots, f) + } + return } -func (w *legacyLayerWriter) init() error { - if !w.pathFixed { - path, err := makeLongAbsPath(w.root) - if err != nil { - return err - } - for i, p := range w.parentRoots { - w.parentRoots[i], err = makeLongAbsPath(p) - if err != nil { - return err - } - } - destPath, err := makeLongAbsPath(w.destRoot) - if err != nil { - return err - } - w.root = path - w.destRoot = destPath - w.pathFixed = true +func (w *legacyLayerWriter) CloseRoots() { + if w.root != nil { + w.root.Close() + w.root = nil } - return nil + if w.destRoot != nil { + w.destRoot.Close() + w.destRoot = nil + } + for i := range w.parentRoots { + w.parentRoots[i].Close() + } + w.parentRoots = nil } func (w *legacyLayerWriter) initUtilityVM() error { if !w.HasUtilityVM { - err := os.Mkdir(filepath.Join(w.destRoot, utilityVMPath), 0) + err := mkdirRelative(utilityVMPath, w.destRoot) if err != nil { return err } @@ -386,7 +416,7 @@ func (w *legacyLayerWriter) initUtilityVM() error { // clone the utility VM from the parent layer into this layer. Use hard // links to avoid unnecessary copying, since most of the files are // immutable. - err = cloneTree(filepath.Join(w.parentRoots[0], utilityVMFilesPath), filepath.Join(w.destRoot, utilityVMFilesPath), mutatedUtilityVMFiles) + err = cloneTree(w.parentRoots[0], w.destRoot, utilityVMFilesPath, mutatedUtilityVMFiles) if err != nil { return fmt.Errorf("cloning the parent utility VM image failed: %s", err) } @@ -395,7 +425,40 @@ func (w *legacyLayerWriter) initUtilityVM() error { return nil } -func (w *legacyLayerWriter) reset() { +func (w *legacyLayerWriter) reset() error { + if w.currentIsDir { + r := w.currentFile + br := winio.NewBackupStreamReader(r) + // Seek to the beginning of the backup stream, skipping the fileattrs + if _, err := r.Seek(4, io.SeekStart); err != nil { + return err + } + + for { + bhdr, err := br.Next() + if err == io.EOF { + // end of backupstream data + break + } + if err != nil { + return err + } + switch bhdr.Id { + case winio.BackupReparseData: + // The current file is a `.$wcidirs$` metadata file that + // describes a directory reparse point. Delete the placeholder + // directory to prevent future files being added into the + // destination of the reparse point during the ImportLayer call + if err := removeRelative(w.currentFileName, w.currentFileRoot); err != nil { + return err + } + w.pendingDirs = append(w.pendingDirs, pendingDir{Path: w.currentFileName, Root: w.currentFileRoot}) + default: + // ignore all other stream types, as we only care about directory reparse points + } + } + w.currentIsDir = false + } if w.backupWriter != nil { w.backupWriter.Close() w.backupWriter = nil @@ -403,21 +466,21 @@ func (w *legacyLayerWriter) reset() { if w.currentFile != nil { w.currentFile.Close() w.currentFile = nil + w.currentFileName = "" + w.currentFileRoot = nil } + return nil } // copyFileWithMetadata copies a file using the backup/restore APIs in order to preserve metadata -func copyFileWithMetadata(srcPath, destPath string, isDir bool) (fileInfo *winio.FileBasicInfo, err error) { - createDisposition := uint32(syscall.CREATE_NEW) - if isDir { - err = os.Mkdir(destPath, 0) - if err != nil { - return nil, err - } - createDisposition = syscall.OPEN_EXISTING - } - - src, err := openFileOrDir(srcPath, syscall.GENERIC_READ|winio.ACCESS_SYSTEM_SECURITY, syscall.OPEN_EXISTING) +func copyFileWithMetadata(srcRoot, destRoot *os.File, subPath string, isDir bool) (fileInfo *winio.FileBasicInfo, err error) { + src, err := openRelative( + subPath, + srcRoot, + syscall.GENERIC_READ|winio.ACCESS_SYSTEM_SECURITY, + syscall.FILE_SHARE_READ, + _FILE_OPEN, + _FILE_OPEN_REPARSE_POINT) if err != nil { return nil, err } @@ -430,7 +493,17 @@ func copyFileWithMetadata(srcPath, destPath string, isDir bool) (fileInfo *winio return nil, err } - dest, err := openFileOrDir(destPath, syscall.GENERIC_READ|syscall.GENERIC_WRITE|winio.WRITE_DAC|winio.WRITE_OWNER|winio.ACCESS_SYSTEM_SECURITY, createDisposition) + extraFlags := uint32(0) + if isDir { + extraFlags |= _FILE_DIRECTORY_FILE + } + dest, err := openRelative( + subPath, + destRoot, + syscall.GENERIC_READ|syscall.GENERIC_WRITE|winio.WRITE_DAC|winio.WRITE_OWNER|winio.ACCESS_SYSTEM_SECURITY, + syscall.FILE_SHARE_READ, + _FILE_CREATE, + extraFlags) if err != nil { return nil, err } @@ -459,39 +532,49 @@ func copyFileWithMetadata(srcPath, destPath string, isDir bool) (fileInfo *winio // cloneTree clones a directory tree using hard links. It skips hard links for // the file names in the provided map and just copies those files. -func cloneTree(srcPath, destPath string, mutatedFiles map[string]bool) error { +func cloneTree(srcRoot *os.File, destRoot *os.File, subPath string, mutatedFiles map[string]bool) error { var di []dirInfo - err := filepath.Walk(srcPath, func(srcFilePath string, info os.FileInfo, err error) error { + err := ensureNotReparsePointRelative(subPath, srcRoot) + if err != nil { + return err + } + err = filepath.Walk(filepath.Join(srcRoot.Name(), subPath), func(srcFilePath string, info os.FileInfo, err error) error { if err != nil { return err } - relPath, err := filepath.Rel(srcPath, srcFilePath) + relPath, err := filepath.Rel(srcRoot.Name(), srcFilePath) if err != nil { return err } - destFilePath := filepath.Join(destPath, relPath) + fileAttributes := info.Sys().(*syscall.Win32FileAttributeData).FileAttributes // Directories, reparse points, and files that will be mutated during // utility VM import must be copied. All other files can be hard linked. - isReparsePoint := info.Sys().(*syscall.Win32FileAttributeData).FileAttributes&syscall.FILE_ATTRIBUTE_REPARSE_POINT != 0 - if info.IsDir() || isReparsePoint || mutatedFiles[relPath] { - fi, err := copyFileWithMetadata(srcFilePath, destFilePath, info.IsDir()) + isReparsePoint := fileAttributes&syscall.FILE_ATTRIBUTE_REPARSE_POINT != 0 + // In go1.9, FileInfo.IsDir() returns false if the directory is also a symlink. + // See: https://github.com/golang/go/commit/1989921aef60c83e6f9127a8448fb5ede10e9acc + // Fixes the problem by checking syscall.FILE_ATTRIBUTE_DIRECTORY directly + isDir := fileAttributes&syscall.FILE_ATTRIBUTE_DIRECTORY != 0 + + if isDir || isReparsePoint || mutatedFiles[relPath] { + fi, err := copyFileWithMetadata(srcRoot, destRoot, relPath, isDir) if err != nil { return err } - if info.IsDir() && !isReparsePoint { - di = append(di, dirInfo{path: destFilePath, fileInfo: *fi}) + if isDir && !isReparsePoint { + di = append(di, dirInfo{path: relPath, fileInfo: *fi}) } } else { - err = os.Link(srcFilePath, destFilePath) + err = linkRelative(relPath, srcRoot, relPath, destRoot) if err != nil { return err } } - // Don't recurse on reparse points. - if info.IsDir() && isReparsePoint { + // Don't recurse on reparse points in go1.8 and older. Filepath.Walk + // handles this in go1.9 and newer. + if isDir && isReparsePoint && shouldSkipDirectoryReparse { return filepath.SkipDir } @@ -501,13 +584,11 @@ func cloneTree(srcPath, destPath string, mutatedFiles map[string]bool) error { return err } - return reapplyDirectoryTimes(di) + return reapplyDirectoryTimes(destRoot, di) } func (w *legacyLayerWriter) Add(name string, fileInfo *winio.FileBasicInfo) error { - w.reset() - err := w.init() - if err != nil { + if err := w.reset(); err != nil { return err } @@ -515,6 +596,7 @@ func (w *legacyLayerWriter) Add(name string, fileInfo *winio.FileBasicInfo) erro return w.initUtilityVM() } + name = filepath.Clean(name) if hasPathPrefix(name, utilityVMPath) { if !w.HasUtilityVM { return errors.New("missing UtilityVM directory") @@ -522,10 +604,9 @@ func (w *legacyLayerWriter) Add(name string, fileInfo *winio.FileBasicInfo) erro if !hasPathPrefix(name, utilityVMFilesPath) && name != utilityVMFilesPath { return errors.New("invalid UtilityVM layer") } - path := filepath.Join(w.destRoot, name) - createDisposition := uint32(syscall.OPEN_EXISTING) + createDisposition := uint32(_FILE_OPEN) if (fileInfo.FileAttributes & syscall.FILE_ATTRIBUTE_DIRECTORY) != 0 { - st, err := os.Lstat(path) + st, err := lstatRelative(name, w.destRoot) if err != nil && !os.IsNotExist(err) { return err } @@ -533,37 +614,44 @@ func (w *legacyLayerWriter) Add(name string, fileInfo *winio.FileBasicInfo) erro // Delete the existing file/directory if it is not the same type as this directory. existingAttr := st.Sys().(*syscall.Win32FileAttributeData).FileAttributes if (uint32(fileInfo.FileAttributes)^existingAttr)&(syscall.FILE_ATTRIBUTE_DIRECTORY|syscall.FILE_ATTRIBUTE_REPARSE_POINT) != 0 { - if err = os.RemoveAll(path); err != nil { + if err = removeAllRelative(name, w.destRoot); err != nil { return err } st = nil } } if st == nil { - if err = os.Mkdir(path, 0); err != nil { + if err = mkdirRelative(name, w.destRoot); err != nil { return err } } if fileInfo.FileAttributes&syscall.FILE_ATTRIBUTE_REPARSE_POINT == 0 { - w.uvmDi = append(w.uvmDi, dirInfo{path: path, fileInfo: *fileInfo}) + w.uvmDi = append(w.uvmDi, dirInfo{path: name, fileInfo: *fileInfo}) } } else { // Overwrite any existing hard link. - err = os.Remove(path) + err := removeRelative(name, w.destRoot) if err != nil && !os.IsNotExist(err) { return err } - createDisposition = syscall.CREATE_NEW + createDisposition = _FILE_CREATE } - f, err := openFileOrDir(path, syscall.GENERIC_READ|syscall.GENERIC_WRITE|winio.WRITE_DAC|winio.WRITE_OWNER|winio.ACCESS_SYSTEM_SECURITY, createDisposition) + f, err := openRelative( + name, + w.destRoot, + syscall.GENERIC_READ|syscall.GENERIC_WRITE|winio.WRITE_DAC|winio.WRITE_OWNER|winio.ACCESS_SYSTEM_SECURITY, + syscall.FILE_SHARE_READ, + createDisposition, + _FILE_OPEN_REPARSE_POINT, + ) if err != nil { return err } defer func() { if f != nil { f.Close() - os.Remove(path) + removeRelative(name, w.destRoot) } }() @@ -574,28 +662,31 @@ func (w *legacyLayerWriter) Add(name string, fileInfo *winio.FileBasicInfo) erro w.backupWriter = winio.NewBackupFileWriter(f, true) w.currentFile = f + w.currentFileName = name + w.currentFileRoot = w.destRoot w.addedFiles[name] = true f = nil return nil } - path := filepath.Join(w.root, name) + fname := name if (fileInfo.FileAttributes & syscall.FILE_ATTRIBUTE_DIRECTORY) != 0 { - err := os.Mkdir(path, 0) + err := mkdirRelative(name, w.root) if err != nil { return err } - path += ".$wcidirs$" + fname += ".$wcidirs$" + w.currentIsDir = true } - f, err := openFileOrDir(path, syscall.GENERIC_READ|syscall.GENERIC_WRITE, syscall.CREATE_NEW) + f, err := openRelative(fname, w.root, syscall.GENERIC_READ|syscall.GENERIC_WRITE, syscall.FILE_SHARE_READ, _FILE_CREATE, 0) if err != nil { return err } defer func() { if f != nil { f.Close() - os.Remove(path) + removeRelative(fname, w.root) } }() @@ -617,19 +708,20 @@ func (w *legacyLayerWriter) Add(name string, fileInfo *winio.FileBasicInfo) erro } w.currentFile = f + w.currentFileName = name + w.currentFileRoot = w.root w.addedFiles[name] = true f = nil return nil } func (w *legacyLayerWriter) AddLink(name string, target string) error { - w.reset() - err := w.init() - if err != nil { + if err := w.reset(); err != nil { return err } - var roots []string + target = filepath.Clean(target) + var roots []*os.File if hasPathPrefix(target, filesPath) { // Look for cross-layer hard link targets in the parent layers, since // nothing is in the destination path yet. @@ -638,7 +730,7 @@ func (w *legacyLayerWriter) AddLink(name string, target string) error { // Since the utility VM is fully cloned into the destination path // already, look for cross-layer hard link targets directly in the // destination path. - roots = []string{w.destRoot} + roots = []*os.File{w.destRoot} } if roots == nil || (!hasPathPrefix(name, filesPath) && !hasPathPrefix(name, utilityVMFilesPath)) { @@ -647,12 +739,12 @@ func (w *legacyLayerWriter) AddLink(name string, target string) error { // Find to try the target of the link in a previously added file. If that // fails, search in parent layers. - var selectedRoot string + var selectedRoot *os.File if _, ok := w.addedFiles[target]; ok { selectedRoot = w.destRoot } else { for _, r := range roots { - if _, err = os.Lstat(filepath.Join(r, target)); err != nil { + if _, err := lstatRelative(target, r); err != nil { if !os.IsNotExist(err) { return err } @@ -661,22 +753,25 @@ func (w *legacyLayerWriter) AddLink(name string, target string) error { break } } - if selectedRoot == "" { + if selectedRoot == nil { return fmt.Errorf("failed to find link target for '%s' -> '%s'", name, target) } } + // The link can't be written until after the ImportLayer call. w.PendingLinks = append(w.PendingLinks, pendingLink{ - Path: filepath.Join(w.destRoot, name), - Target: filepath.Join(selectedRoot, target), + Path: name, + Target: target, + TargetRoot: selectedRoot, }) w.addedFiles[name] = true return nil } func (w *legacyLayerWriter) Remove(name string) error { + name = filepath.Clean(name) if hasPathPrefix(name, filesPath) { - w.tombstones = append(w.tombstones, name[len(filesPath)+1:]) + w.Tombstones = append(w.Tombstones, name) } else if hasPathPrefix(name, utilityVMFilesPath) { err := w.initUtilityVM() if err != nil { @@ -685,11 +780,10 @@ func (w *legacyLayerWriter) Remove(name string) error { // Make sure the path exists; os.RemoveAll will not fail if the file is // already gone, and this needs to be a fatal error for diagnostics // purposes. - path := filepath.Join(w.destRoot, name) - if _, err := os.Lstat(path); err != nil { + if _, err := lstatRelative(name, w.destRoot); err != nil { return err } - err = os.RemoveAll(path) + err = removeAllRelative(name, w.destRoot) if err != nil { return err } @@ -711,28 +805,20 @@ func (w *legacyLayerWriter) Write(b []byte) (int, error) { } func (w *legacyLayerWriter) Close() error { - w.reset() - err := w.init() - if err != nil { + if err := w.reset(); err != nil { return err } - tf, err := os.Create(filepath.Join(w.root, "tombstones.txt")) - if err != nil { + if err := removeRelative("tombstones.txt", w.root); err != nil && !os.IsNotExist(err) { return err } - defer tf.Close() - _, err = tf.Write([]byte("\xef\xbb\xbfVersion 1.0\n")) - if err != nil { - return err - } - for _, t := range w.tombstones { - _, err = tf.Write([]byte(filepath.Join(`\`, t) + "\n")) + for _, pd := range w.pendingDirs { + err := mkdirRelative(pd.Path, pd.Root) if err != nil { return err } } if w.HasUtilityVM { - err = reapplyDirectoryTimes(w.uvmDi) + err := reapplyDirectoryTimes(w.destRoot, w.uvmDi) if err != nil { return err } diff --git a/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/legacy18.go b/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/legacy18.go new file mode 100644 index 0000000000..0f593e8aba --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/legacy18.go @@ -0,0 +1,7 @@ +// +build !go1.9 + +package hcsshim + +// Due to a bug in go1.8 and before, directory reparse points need to be skipped +// during filepath.Walk. This is fixed in go1.9 +var shouldSkipDirectoryReparse = true diff --git a/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/legacy19.go b/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/legacy19.go new file mode 100644 index 0000000000..fb0b7644fb --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/legacy19.go @@ -0,0 +1,7 @@ +// +build go1.9 + +package hcsshim + +// Due to a bug in go1.8 and before, directory reparse points need to be skipped +// during filepath.Walk. This is fixed in go1.9 +var shouldSkipDirectoryReparse = false diff --git a/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/safeopen.go b/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/safeopen.go new file mode 100644 index 0000000000..5356456b90 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/safeopen.go @@ -0,0 +1,427 @@ +package hcsshim + +import ( + "errors" + "io" + "os" + "path/filepath" + "strings" + "syscall" + "unicode/utf16" + "unsafe" + + winio "github.com/Microsoft/go-winio" +) + +//sys ntCreateFile(handle *uintptr, accessMask uint32, oa *objectAttributes, iosb *ioStatusBlock, allocationSize *uint64, fileAttributes uint32, shareAccess uint32, createDisposition uint32, createOptions uint32, eaBuffer *byte, eaLength uint32) (status uint32) = ntdll.NtCreateFile +//sys ntSetInformationFile(handle uintptr, iosb *ioStatusBlock, information uintptr, length uint32, class uint32) (status uint32) = ntdll.NtSetInformationFile +//sys rtlNtStatusToDosError(status uint32) (winerr error) = ntdll.RtlNtStatusToDosErrorNoTeb +//sys localAlloc(flags uint32, size int) (ptr uintptr) = kernel32.LocalAlloc +//sys localFree(ptr uintptr) = kernel32.LocalFree + +type ioStatusBlock struct { + Status, Information uintptr +} + +type objectAttributes struct { + Length uintptr + RootDirectory uintptr + ObjectName uintptr + Attributes uintptr + SecurityDescriptor uintptr + SecurityQoS uintptr +} + +type unicodeString struct { + Length uint16 + MaximumLength uint16 + Buffer uintptr +} + +type fileLinkInformation struct { + ReplaceIfExists bool + RootDirectory uintptr + FileNameLength uint32 + FileName [1]uint16 +} + +type fileDispositionInformationEx struct { + Flags uintptr +} + +const ( + _FileLinkInformation = 11 + _FileDispositionInformationEx = 64 + + _FILE_READ_ATTRIBUTES = 0x0080 + _FILE_WRITE_ATTRIBUTES = 0x0100 + _DELETE = 0x10000 + + _FILE_OPEN = 1 + _FILE_CREATE = 2 + + _FILE_DIRECTORY_FILE = 0x00000001 + _FILE_SYNCHRONOUS_IO_NONALERT = 0x00000020 + _FILE_DELETE_ON_CLOSE = 0x00001000 + _FILE_OPEN_FOR_BACKUP_INTENT = 0x00004000 + _FILE_OPEN_REPARSE_POINT = 0x00200000 + + _FILE_DISPOSITION_DELETE = 0x00000001 + + _OBJ_DONT_REPARSE = 0x1000 + + _STATUS_REPARSE_POINT_ENCOUNTERED = 0xC000050B +) + +func openRoot(path string) (*os.File, error) { + longpath, err := makeLongAbsPath(path) + if err != nil { + return nil, err + } + return winio.OpenForBackup(longpath, syscall.GENERIC_READ, syscall.FILE_SHARE_READ|syscall.FILE_SHARE_WRITE|syscall.FILE_SHARE_DELETE, syscall.OPEN_EXISTING) +} + +func ntRelativePath(path string) ([]uint16, error) { + path = filepath.Clean(path) + if strings.Contains(":", path) { + // Since alternate data streams must follow the file they + // are attached to, finding one here (out of order) is invalid. + return nil, errors.New("path contains invalid character `:`") + } + fspath := filepath.FromSlash(path) + if len(fspath) > 0 && fspath[0] == '\\' { + return nil, errors.New("expected relative path") + } + + path16 := utf16.Encode(([]rune)(fspath)) + if len(path16) > 32767 { + return nil, syscall.ENAMETOOLONG + } + + return path16, nil +} + +// openRelativeInternal opens a relative path from the given root, failing if +// any of the intermediate path components are reparse points. +func openRelativeInternal(path string, root *os.File, accessMask uint32, shareFlags uint32, createDisposition uint32, flags uint32) (*os.File, error) { + var ( + h uintptr + iosb ioStatusBlock + oa objectAttributes + ) + + path16, err := ntRelativePath(path) + if err != nil { + return nil, err + } + + if root == nil || root.Fd() == 0 { + return nil, errors.New("missing root directory") + } + + upathBuffer := localAlloc(0, int(unsafe.Sizeof(unicodeString{}))+len(path16)*2) + defer localFree(upathBuffer) + + upath := (*unicodeString)(unsafe.Pointer(upathBuffer)) + upath.Length = uint16(len(path16) * 2) + upath.MaximumLength = upath.Length + upath.Buffer = upathBuffer + unsafe.Sizeof(*upath) + copy((*[32768]uint16)(unsafe.Pointer(upath.Buffer))[:], path16) + + oa.Length = unsafe.Sizeof(oa) + oa.ObjectName = upathBuffer + oa.RootDirectory = uintptr(root.Fd()) + oa.Attributes = _OBJ_DONT_REPARSE + status := ntCreateFile( + &h, + accessMask|syscall.SYNCHRONIZE, + &oa, + &iosb, + nil, + 0, + shareFlags, + createDisposition, + _FILE_OPEN_FOR_BACKUP_INTENT|_FILE_SYNCHRONOUS_IO_NONALERT|flags, + nil, + 0, + ) + if status != 0 { + return nil, rtlNtStatusToDosError(status) + } + + fullPath, err := makeLongAbsPath(filepath.Join(root.Name(), path)) + if err != nil { + syscall.Close(syscall.Handle(h)) + return nil, err + } + + return os.NewFile(h, fullPath), nil +} + +// openRelative opens a relative path from the given root, failing if +// any of the intermediate path components are reparse points. +func openRelative(path string, root *os.File, accessMask uint32, shareFlags uint32, createDisposition uint32, flags uint32) (*os.File, error) { + f, err := openRelativeInternal(path, root, accessMask, shareFlags, createDisposition, flags) + if err != nil { + err = &os.PathError{Op: "open", Path: filepath.Join(root.Name(), path), Err: err} + } + return f, err +} + +// linkRelative creates a hard link from oldname to newname (relative to oldroot +// and newroot), failing if any of the intermediate path components are reparse +// points. +func linkRelative(oldname string, oldroot *os.File, newname string, newroot *os.File) error { + // Open the old file. + oldf, err := openRelativeInternal( + oldname, + oldroot, + syscall.FILE_WRITE_ATTRIBUTES, + syscall.FILE_SHARE_READ|syscall.FILE_SHARE_WRITE|syscall.FILE_SHARE_DELETE, + _FILE_OPEN, + 0, + ) + if err != nil { + return &os.LinkError{Op: "link", Old: filepath.Join(oldroot.Name(), oldname), New: filepath.Join(newroot.Name(), newname), Err: err} + } + defer oldf.Close() + + // Open the parent of the new file. + var parent *os.File + parentPath := filepath.Dir(newname) + if parentPath != "." { + parent, err = openRelativeInternal( + parentPath, + newroot, + syscall.GENERIC_READ, + syscall.FILE_SHARE_READ|syscall.FILE_SHARE_WRITE|syscall.FILE_SHARE_DELETE, + _FILE_OPEN, + _FILE_DIRECTORY_FILE) + if err != nil { + return &os.LinkError{Op: "link", Old: oldf.Name(), New: filepath.Join(newroot.Name(), newname), Err: err} + } + defer parent.Close() + + fi, err := winio.GetFileBasicInfo(parent) + if err != nil { + return err + } + if (fi.FileAttributes & syscall.FILE_ATTRIBUTE_REPARSE_POINT) != 0 { + return &os.LinkError{Op: "link", Old: oldf.Name(), New: filepath.Join(newroot.Name(), newname), Err: rtlNtStatusToDosError(_STATUS_REPARSE_POINT_ENCOUNTERED)} + } + + } else { + parent = newroot + } + + // Issue an NT call to create the link. This will be safe because NT will + // not open any more directories to create the link, so it cannot walk any + // more reparse points. + newbase := filepath.Base(newname) + newbase16, err := ntRelativePath(newbase) + if err != nil { + return err + } + + size := int(unsafe.Offsetof(fileLinkInformation{}.FileName)) + len(newbase16)*2 + linkinfoBuffer := localAlloc(0, size) + defer localFree(linkinfoBuffer) + linkinfo := (*fileLinkInformation)(unsafe.Pointer(linkinfoBuffer)) + linkinfo.RootDirectory = parent.Fd() + linkinfo.FileNameLength = uint32(len(newbase16) * 2) + copy((*[32768]uint16)(unsafe.Pointer(&linkinfo.FileName[0]))[:], newbase16) + + var iosb ioStatusBlock + status := ntSetInformationFile( + oldf.Fd(), + &iosb, + linkinfoBuffer, + uint32(size), + _FileLinkInformation, + ) + if status != 0 { + return &os.LinkError{Op: "link", Old: oldf.Name(), New: filepath.Join(parent.Name(), newbase), Err: rtlNtStatusToDosError(status)} + } + + return nil +} + +// deleteOnClose marks a file to be deleted when the handle is closed. +func deleteOnClose(f *os.File) error { + disposition := fileDispositionInformationEx{Flags: _FILE_DISPOSITION_DELETE} + var iosb ioStatusBlock + status := ntSetInformationFile( + f.Fd(), + &iosb, + uintptr(unsafe.Pointer(&disposition)), + uint32(unsafe.Sizeof(disposition)), + _FileDispositionInformationEx, + ) + if status != 0 { + return rtlNtStatusToDosError(status) + } + return nil +} + +// clearReadOnly clears the readonly attribute on a file. +func clearReadOnly(f *os.File) error { + bi, err := winio.GetFileBasicInfo(f) + if err != nil { + return err + } + if bi.FileAttributes&syscall.FILE_ATTRIBUTE_READONLY == 0 { + return nil + } + sbi := winio.FileBasicInfo{ + FileAttributes: bi.FileAttributes &^ syscall.FILE_ATTRIBUTE_READONLY, + } + if sbi.FileAttributes == 0 { + sbi.FileAttributes = syscall.FILE_ATTRIBUTE_NORMAL + } + return winio.SetFileBasicInfo(f, &sbi) +} + +// removeRelative removes a file or directory relative to a root, failing if any +// intermediate path components are reparse points. +func removeRelative(path string, root *os.File) error { + f, err := openRelativeInternal( + path, + root, + _FILE_READ_ATTRIBUTES|_FILE_WRITE_ATTRIBUTES|_DELETE, + syscall.FILE_SHARE_READ|syscall.FILE_SHARE_WRITE|syscall.FILE_SHARE_DELETE, + _FILE_OPEN, + _FILE_OPEN_REPARSE_POINT) + if err == nil { + defer f.Close() + err = deleteOnClose(f) + if err == syscall.ERROR_ACCESS_DENIED { + // Maybe the file is marked readonly. Clear the bit and retry. + clearReadOnly(f) + err = deleteOnClose(f) + } + } + if err != nil { + return &os.PathError{Op: "remove", Path: filepath.Join(root.Name(), path), Err: err} + } + return nil +} + +// removeAllRelative removes a directory tree relative to a root, failing if any +// intermediate path components are reparse points. +func removeAllRelative(path string, root *os.File) error { + fi, err := lstatRelative(path, root) + if err != nil { + if os.IsNotExist(err) { + return nil + } + return err + } + fileAttributes := fi.Sys().(*syscall.Win32FileAttributeData).FileAttributes + if fileAttributes&syscall.FILE_ATTRIBUTE_DIRECTORY == 0 || fileAttributes&syscall.FILE_ATTRIBUTE_REPARSE_POINT != 0 { + // If this is a reparse point, it can't have children. Simple remove will do. + err := removeRelative(path, root) + if err == nil || os.IsNotExist(err) { + return nil + } + return err + } + + // It is necessary to use os.Open as Readdirnames does not work with + // openRelative. This is safe because the above lstatrelative fails + // if the target is outside the root, and we know this is not a + // symlink from the above FILE_ATTRIBUTE_REPARSE_POINT check. + fd, err := os.Open(filepath.Join(root.Name(), path)) + if err != nil { + if os.IsNotExist(err) { + // Race. It was deleted between the Lstat and Open. + // Return nil per RemoveAll's docs. + return nil + } + return err + } + + // Remove contents & return first error. + for { + names, err1 := fd.Readdirnames(100) + for _, name := range names { + err1 := removeAllRelative(path+string(os.PathSeparator)+name, root) + if err == nil { + err = err1 + } + } + if err1 == io.EOF { + break + } + // If Readdirnames returned an error, use it. + if err == nil { + err = err1 + } + if len(names) == 0 { + break + } + } + fd.Close() + + // Remove directory. + err1 := removeRelative(path, root) + if err1 == nil || os.IsNotExist(err1) { + return nil + } + if err == nil { + err = err1 + } + return err +} + +// mkdirRelative creates a directory relative to a root, failing if any +// intermediate path components are reparse points. +func mkdirRelative(path string, root *os.File) error { + f, err := openRelativeInternal( + path, + root, + 0, + syscall.FILE_SHARE_READ|syscall.FILE_SHARE_WRITE|syscall.FILE_SHARE_DELETE, + _FILE_CREATE, + _FILE_DIRECTORY_FILE) + if err == nil { + f.Close() + } else { + err = &os.PathError{Op: "mkdir", Path: filepath.Join(root.Name(), path), Err: err} + } + return err +} + +// lstatRelative performs a stat operation on a file relative to a root, failing +// if any intermediate path components are reparse points. +func lstatRelative(path string, root *os.File) (os.FileInfo, error) { + f, err := openRelativeInternal( + path, + root, + _FILE_READ_ATTRIBUTES, + syscall.FILE_SHARE_READ|syscall.FILE_SHARE_WRITE|syscall.FILE_SHARE_DELETE, + _FILE_OPEN, + _FILE_OPEN_REPARSE_POINT) + if err != nil { + return nil, &os.PathError{Op: "stat", Path: filepath.Join(root.Name(), path), Err: err} + } + defer f.Close() + return f.Stat() +} + +// ensureNotReparsePointRelative validates that a given file (relative to a +// root) and all intermediate path components are not a reparse points. +func ensureNotReparsePointRelative(path string, root *os.File) error { + // Perform an open with OBJ_DONT_REPARSE but without specifying FILE_OPEN_REPARSE_POINT. + f, err := openRelative( + path, + root, + 0, + syscall.FILE_SHARE_READ|syscall.FILE_SHARE_WRITE|syscall.FILE_SHARE_DELETE, + _FILE_OPEN, + 0) + if err != nil { + return err + } + f.Close() + return nil +} diff --git a/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/zhcsshim.go b/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/zhcsshim.go index 5d1a851ae8..5123e8d8e8 100644 --- a/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/zhcsshim.go +++ b/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/zhcsshim.go @@ -41,6 +41,8 @@ var ( modole32 = windows.NewLazySystemDLL("ole32.dll") modiphlpapi = windows.NewLazySystemDLL("iphlpapi.dll") modvmcompute = windows.NewLazySystemDLL("vmcompute.dll") + modntdll = windows.NewLazySystemDLL("ntdll.dll") + modkernel32 = windows.NewLazySystemDLL("kernel32.dll") procCoTaskMemFree = modole32.NewProc("CoTaskMemFree") procSetCurrentThreadCompartmentId = modiphlpapi.NewProc("SetCurrentThreadCompartmentId") @@ -94,6 +96,11 @@ var ( procHcsUnregisterProcessCallback = modvmcompute.NewProc("HcsUnregisterProcessCallback") procHcsModifyServiceSettings = modvmcompute.NewProc("HcsModifyServiceSettings") procHNSCall = modvmcompute.NewProc("HNSCall") + procNtCreateFile = modntdll.NewProc("NtCreateFile") + procNtSetInformationFile = modntdll.NewProc("NtSetInformationFile") + procRtlNtStatusToDosErrorNoTeb = modntdll.NewProc("RtlNtStatusToDosErrorNoTeb") + procLocalAlloc = modkernel32.NewProc("LocalAlloc") + procLocalFree = modkernel32.NewProc("LocalFree") ) func coTaskMemFree(buffer unsafe.Pointer) { @@ -1040,3 +1047,34 @@ func __hnsCall(method *uint16, path *uint16, object *uint16, response **uint16) } return } + +func ntCreateFile(handle *uintptr, accessMask uint32, oa *objectAttributes, iosb *ioStatusBlock, allocationSize *uint64, fileAttributes uint32, shareAccess uint32, createDisposition uint32, createOptions uint32, eaBuffer *byte, eaLength uint32) (status uint32) { + r0, _, _ := syscall.Syscall12(procNtCreateFile.Addr(), 11, uintptr(unsafe.Pointer(handle)), uintptr(accessMask), uintptr(unsafe.Pointer(oa)), uintptr(unsafe.Pointer(iosb)), uintptr(unsafe.Pointer(allocationSize)), uintptr(fileAttributes), uintptr(shareAccess), uintptr(createDisposition), uintptr(createOptions), uintptr(unsafe.Pointer(eaBuffer)), uintptr(eaLength), 0) + status = uint32(r0) + return +} + +func ntSetInformationFile(handle uintptr, iosb *ioStatusBlock, information uintptr, length uint32, class uint32) (status uint32) { + r0, _, _ := syscall.Syscall6(procNtSetInformationFile.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(iosb)), uintptr(information), uintptr(length), uintptr(class), 0) + status = uint32(r0) + return +} + +func rtlNtStatusToDosError(status uint32) (winerr error) { + r0, _, _ := syscall.Syscall(procRtlNtStatusToDosErrorNoTeb.Addr(), 1, uintptr(status), 0, 0) + if r0 != 0 { + winerr = syscall.Errno(r0) + } + return +} + +func localAlloc(flags uint32, size int) (ptr uintptr) { + r0, _, _ := syscall.Syscall(procLocalAlloc.Addr(), 2, uintptr(flags), uintptr(size), 0) + ptr = uintptr(r0) + return +} + +func localFree(ptr uintptr) { + syscall.Syscall(procLocalFree.Addr(), 1, uintptr(ptr), 0, 0) + return +} diff --git a/cluster-autoscaler/vendor/github.com/abbot/go-http-auth/.gitignore b/cluster-autoscaler/vendor/github.com/abbot/go-http-auth/.gitignore deleted file mode 100644 index 112ea3951c..0000000000 --- a/cluster-autoscaler/vendor/github.com/abbot/go-http-auth/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -*~ -*.a -*.6 -*.out -_testmain.go diff --git a/cluster-autoscaler/vendor/github.com/abbot/go-http-auth/LICENSE b/cluster-autoscaler/vendor/github.com/abbot/go-http-auth/LICENSE deleted file mode 100644 index e454a52586..0000000000 --- a/cluster-autoscaler/vendor/github.com/abbot/go-http-auth/LICENSE +++ /dev/null @@ -1,178 +0,0 @@ - - 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 - diff --git a/cluster-autoscaler/vendor/github.com/abbot/go-http-auth/Makefile b/cluster-autoscaler/vendor/github.com/abbot/go-http-auth/Makefile deleted file mode 100644 index 25f208da07..0000000000 --- a/cluster-autoscaler/vendor/github.com/abbot/go-http-auth/Makefile +++ /dev/null @@ -1,12 +0,0 @@ -include $(GOROOT)/src/Make.inc - -TARG=auth_digest -GOFILES=\ - auth.go\ - digest.go\ - basic.go\ - misc.go\ - md5crypt.go\ - users.go\ - -include $(GOROOT)/src/Make.pkg diff --git a/cluster-autoscaler/vendor/github.com/abbot/go-http-auth/README.md b/cluster-autoscaler/vendor/github.com/abbot/go-http-auth/README.md deleted file mode 100644 index 8a26f10f6d..0000000000 --- a/cluster-autoscaler/vendor/github.com/abbot/go-http-auth/README.md +++ /dev/null @@ -1,70 +0,0 @@ -HTTP Authentication implementation in Go -======================================== - -This is an implementation of HTTP Basic and HTTP Digest authentication -in Go language. It is designed as a simple wrapper for -http.RequestHandler functions. - -Features --------- - - * Supports HTTP Basic and HTTP Digest authentication. - * Supports htpasswd and htdigest formatted files. - * Automatic reloading of password files. - * Pluggable interface for user/password storage. - * Supports MD5 and SHA1 for Basic authentication password storage. - * Configurable Digest nonce cache size with expiration. - * Wrapper for legacy http handlers (http.HandlerFunc interface) - -Example usage -------------- - -This is a complete working example for Basic auth: - - package main - - import ( - auth "github.com/abbot/go-http-auth" - "fmt" - "net/http" - ) - - func Secret(user, realm string) string { - if user == "john" { - // password is "hello" - return "$1$dlPL2MqE$oQmn16q49SqdmhenQuNgs1" - } - return "" - } - - func handle(w http.ResponseWriter, r *auth.AuthenticatedRequest) { - fmt.Fprintf(w, "

Hello, %s!

", r.Username) - } - - func main() { - authenticator := auth.NewBasicAuthenticator("example.com", Secret) - http.HandleFunc("/", authenticator.Wrap(handle)) - http.ListenAndServe(":8080", nil) - } - -See more examples in the "examples" directory. - -Legal ------ - -This module is developed under Apache 2.0 license, and can be used for -open and proprietary projects. - -Copyright 2012-2013 Lev Shamardin - -Licensed under the Apache License, Version 2.0 (the "License"); you -may not use this file or any other part of this project except in -compliance with the License. You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT 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/cluster-autoscaler/vendor/github.com/abbot/go-http-auth/auth.go b/cluster-autoscaler/vendor/github.com/abbot/go-http-auth/auth.go deleted file mode 100644 index c4eb563933..0000000000 --- a/cluster-autoscaler/vendor/github.com/abbot/go-http-auth/auth.go +++ /dev/null @@ -1,48 +0,0 @@ -package auth - -import "net/http" - -/* - Request handlers must take AuthenticatedRequest instead of http.Request -*/ -type AuthenticatedRequest struct { - http.Request - /* - Authenticated user name. Current API implies that Username is - never empty, which means that authentication is always done - before calling the request handler. - */ - Username string -} - -/* - AuthenticatedHandlerFunc is like http.HandlerFunc, but takes - AuthenticatedRequest instead of http.Request -*/ -type AuthenticatedHandlerFunc func(http.ResponseWriter, *AuthenticatedRequest) - -/* - Authenticator wraps an AuthenticatedHandlerFunc with - authentication-checking code. - - Typical Authenticator usage is something like: - - authenticator := SomeAuthenticator(...) - http.HandleFunc("/", authenticator(my_handler)) - - Authenticator wrapper checks the user authentication and calls the - wrapped function only after authentication has succeeded. Otherwise, - it returns a handler which initiates the authentication procedure. -*/ -type Authenticator func(AuthenticatedHandlerFunc) http.HandlerFunc - -type AuthenticatorInterface interface { - Wrap(AuthenticatedHandlerFunc) http.HandlerFunc -} - -func JustCheck(auth AuthenticatorInterface, wrapped http.HandlerFunc) http.HandlerFunc { - return auth.Wrap(func(w http.ResponseWriter, ar *AuthenticatedRequest) { - ar.Header.Set("X-Authenticated-Username", ar.Username) - wrapped(w, &ar.Request) - }) -} diff --git a/cluster-autoscaler/vendor/github.com/abbot/go-http-auth/basic.go b/cluster-autoscaler/vendor/github.com/abbot/go-http-auth/basic.go deleted file mode 100644 index b705c83e15..0000000000 --- a/cluster-autoscaler/vendor/github.com/abbot/go-http-auth/basic.go +++ /dev/null @@ -1,88 +0,0 @@ -package auth - -import ( - "crypto/sha1" - "encoding/base64" - "net/http" - "strings" -) - -type BasicAuth struct { - Realm string - Secrets SecretProvider -} - -/* - Checks the username/password combination from the request. Returns - either an empty string (authentication failed) or the name of the - authenticated user. - - Supports MD5 and SHA1 password entries -*/ -func (a *BasicAuth) CheckAuth(r *http.Request) string { - s := strings.SplitN(r.Header.Get("Authorization"), " ", 2) - if len(s) != 2 || s[0] != "Basic" { - return "" - } - - b, err := base64.StdEncoding.DecodeString(s[1]) - if err != nil { - return "" - } - pair := strings.SplitN(string(b), ":", 2) - if len(pair) != 2 { - return "" - } - passwd := a.Secrets(pair[0], a.Realm) - if passwd == "" { - return "" - } - if strings.HasPrefix(passwd, "{SHA}") { - d := sha1.New() - d.Write([]byte(pair[1])) - if passwd[5:] != base64.StdEncoding.EncodeToString(d.Sum(nil)) { - return "" - } - } else { - e := NewMD5Entry(passwd) - if e == nil { - return "" - } - if passwd != string(MD5Crypt([]byte(pair[1]), e.Salt, e.Magic)) { - return "" - } - } - return pair[0] -} - -/* - http.Handler for BasicAuth which initiates the authentication process - (or requires reauthentication). -*/ -func (a *BasicAuth) RequireAuth(w http.ResponseWriter, r *http.Request) { - w.Header().Set("WWW-Authenticate", `Basic realm="`+a.Realm+`"`) - w.WriteHeader(401) - w.Write([]byte("401 Unauthorized\n")) -} - -/* - BasicAuthenticator returns a function, which wraps an - AuthenticatedHandlerFunc converting it to http.HandlerFunc. This - wrapper function checks the authentication and either sends back - required authentication headers, or calls the wrapped function with - authenticated username in the AuthenticatedRequest. -*/ -func (a *BasicAuth) Wrap(wrapped AuthenticatedHandlerFunc) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - if username := a.CheckAuth(r); username == "" { - a.RequireAuth(w, r) - } else { - ar := &AuthenticatedRequest{Request: *r, Username: username} - wrapped(w, ar) - } - } -} - -func NewBasicAuthenticator(realm string, secrets SecretProvider) *BasicAuth { - return &BasicAuth{Realm: realm, Secrets: secrets} -} diff --git a/cluster-autoscaler/vendor/github.com/abbot/go-http-auth/digest.go b/cluster-autoscaler/vendor/github.com/abbot/go-http-auth/digest.go deleted file mode 100644 index b3225ee496..0000000000 --- a/cluster-autoscaler/vendor/github.com/abbot/go-http-auth/digest.go +++ /dev/null @@ -1,226 +0,0 @@ -package auth - -import ( - "fmt" - "net/http" - "net/url" - "sort" - "strconv" - "strings" - "sync" - "time" -) - -type digest_client struct { - nc uint64 - last_seen int64 -} - -type DigestAuth struct { - Realm string - Opaque string - Secrets SecretProvider - PlainTextSecrets bool - - /* - Approximate size of Client's Cache. When actual number of - tracked client nonces exceeds - ClientCacheSize+ClientCacheTolerance, ClientCacheTolerance*2 - older entries are purged. - */ - ClientCacheSize int - ClientCacheTolerance int - - clients map[string]*digest_client - mutex sync.Mutex -} - -type digest_cache_entry struct { - nonce string - last_seen int64 -} - -type digest_cache []digest_cache_entry - -func (c digest_cache) Less(i, j int) bool { - return c[i].last_seen < c[j].last_seen -} - -func (c digest_cache) Len() int { - return len(c) -} - -func (c digest_cache) Swap(i, j int) { - c[i], c[j] = c[j], c[i] -} - -/* - Remove count oldest entries from DigestAuth.clients -*/ -func (a *DigestAuth) Purge(count int) { - entries := make([]digest_cache_entry, 0, len(a.clients)) - for nonce, client := range a.clients { - entries = append(entries, digest_cache_entry{nonce, client.last_seen}) - } - cache := digest_cache(entries) - sort.Sort(cache) - for _, client := range cache[:count] { - delete(a.clients, client.nonce) - } -} - -/* - http.Handler for DigestAuth which initiates the authentication process - (or requires reauthentication). -*/ -func (a *DigestAuth) RequireAuth(w http.ResponseWriter, r *http.Request) { - if len(a.clients) > a.ClientCacheSize+a.ClientCacheTolerance { - a.Purge(a.ClientCacheTolerance * 2) - } - nonce := RandomKey() - a.clients[nonce] = &digest_client{nc: 0, last_seen: time.Now().UnixNano()} - w.Header().Set("WWW-Authenticate", - fmt.Sprintf(`Digest realm="%s", nonce="%s", opaque="%s", algorithm="MD5", qop="auth"`, - a.Realm, nonce, a.Opaque)) - w.WriteHeader(401) - w.Write([]byte("401 Unauthorized\n")) -} - -/* - Parse Authorization header from the http.Request. Returns a map of - auth parameters or nil if the header is not a valid parsable Digest - auth header. -*/ -func DigestAuthParams(r *http.Request) map[string]string { - s := strings.SplitN(r.Header.Get("Authorization"), " ", 2) - if len(s) != 2 || s[0] != "Digest" { - return nil - } - - result := map[string]string{} - for _, kv := range strings.Split(s[1], ",") { - parts := strings.SplitN(kv, "=", 2) - if len(parts) != 2 { - continue - } - result[strings.Trim(parts[0], "\" ")] = strings.Trim(parts[1], "\" ") - } - return result -} - -/* - Check if request contains valid authentication data. Returns a pair - of username, authinfo where username is the name of the authenticated - user or an empty string and authinfo is the contents for the optional - Authentication-Info response header. -*/ -func (da *DigestAuth) CheckAuth(r *http.Request) (username string, authinfo *string) { - da.mutex.Lock() - defer da.mutex.Unlock() - username = "" - authinfo = nil - auth := DigestAuthParams(r) - if auth == nil || da.Opaque != auth["opaque"] || auth["algorithm"] != "MD5" || auth["qop"] != "auth" { - return - } - - // Check if the requested URI matches auth header - switch u, err := url.Parse(auth["uri"]); { - case err != nil: - return - case r.URL == nil: - return - case len(u.Path) > len(r.URL.Path): - return - case !strings.HasPrefix(r.URL.Path, u.Path): - return - } - - HA1 := da.Secrets(auth["username"], da.Realm) - if da.PlainTextSecrets { - HA1 = H(auth["username"] + ":" + da.Realm + ":" + HA1) - } - HA2 := H(r.Method + ":" + auth["uri"]) - KD := H(strings.Join([]string{HA1, auth["nonce"], auth["nc"], auth["cnonce"], auth["qop"], HA2}, ":")) - - if KD != auth["response"] { - return - } - - // At this point crypto checks are completed and validated. - // Now check if the session is valid. - - nc, err := strconv.ParseUint(auth["nc"], 16, 64) - if err != nil { - return - } - - if client, ok := da.clients[auth["nonce"]]; !ok { - return - } else { - if client.nc != 0 && client.nc >= nc { - return - } - client.nc = nc - client.last_seen = time.Now().UnixNano() - } - - resp_HA2 := H(":" + auth["uri"]) - rspauth := H(strings.Join([]string{HA1, auth["nonce"], auth["nc"], auth["cnonce"], auth["qop"], resp_HA2}, ":")) - - info := fmt.Sprintf(`qop="auth", rspauth="%s", cnonce="%s", nc="%s"`, rspauth, auth["cnonce"], auth["nc"]) - return auth["username"], &info -} - -/* - Default values for ClientCacheSize and ClientCacheTolerance for DigestAuth -*/ -const DefaultClientCacheSize = 1000 -const DefaultClientCacheTolerance = 100 - -/* - Wrap returns an Authenticator which uses HTTP Digest - authentication. Arguments: - - realm: The authentication realm. - - secrets: SecretProvider which must return HA1 digests for the same - realm as above. -*/ -func (a *DigestAuth) Wrap(wrapped AuthenticatedHandlerFunc) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - if username, authinfo := a.CheckAuth(r); username == "" { - a.RequireAuth(w, r) - } else { - ar := &AuthenticatedRequest{Request: *r, Username: username} - if authinfo != nil { - w.Header().Set("Authentication-Info", *authinfo) - } - wrapped(w, ar) - } - } -} - -/* - JustCheck returns function which converts an http.HandlerFunc into a - http.HandlerFunc which requires authentication. Username is passed as - an extra X-Authenticated-Username header. -*/ -func (a *DigestAuth) JustCheck(wrapped http.HandlerFunc) http.HandlerFunc { - return a.Wrap(func(w http.ResponseWriter, ar *AuthenticatedRequest) { - ar.Header.Set("X-Authenticated-Username", ar.Username) - wrapped(w, &ar.Request) - }) -} - -func NewDigestAuthenticator(realm string, secrets SecretProvider) *DigestAuth { - da := &DigestAuth{ - Opaque: RandomKey(), - Realm: realm, - Secrets: secrets, - PlainTextSecrets: false, - ClientCacheSize: DefaultClientCacheSize, - ClientCacheTolerance: DefaultClientCacheTolerance, - clients: map[string]*digest_client{}} - return da -} diff --git a/cluster-autoscaler/vendor/github.com/abbot/go-http-auth/md5crypt.go b/cluster-autoscaler/vendor/github.com/abbot/go-http-auth/md5crypt.go deleted file mode 100644 index a7a031c414..0000000000 --- a/cluster-autoscaler/vendor/github.com/abbot/go-http-auth/md5crypt.go +++ /dev/null @@ -1,92 +0,0 @@ -package auth - -import "crypto/md5" -import "strings" - -const itoa64 = "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" - -var md5_crypt_swaps = [16]int{12, 6, 0, 13, 7, 1, 14, 8, 2, 15, 9, 3, 5, 10, 4, 11} - -type MD5Entry struct { - Magic, Salt, Hash []byte -} - -func NewMD5Entry(e string) *MD5Entry { - parts := strings.SplitN(e, "$", 4) - if len(parts) != 4 { - return nil - } - return &MD5Entry{ - Magic: []byte("$" + parts[1] + "$"), - Salt: []byte(parts[2]), - Hash: []byte(parts[3]), - } -} - -/* - MD5 password crypt implementation -*/ -func MD5Crypt(password, salt, magic []byte) []byte { - d := md5.New() - - d.Write(password) - d.Write(magic) - d.Write(salt) - - d2 := md5.New() - d2.Write(password) - d2.Write(salt) - d2.Write(password) - - for i, mixin := 0, d2.Sum(nil); i < len(password); i++ { - d.Write([]byte{mixin[i%16]}) - } - - for i := len(password); i != 0; i >>= 1 { - if i&1 == 0 { - d.Write([]byte{password[0]}) - } else { - d.Write([]byte{0}) - } - } - - final := d.Sum(nil) - - for i := 0; i < 1000; i++ { - d2 := md5.New() - if i&1 == 0 { - d2.Write(final) - } else { - d2.Write(password) - } - - if i%3 != 0 { - d2.Write(salt) - } - - if i%7 != 0 { - d2.Write(password) - } - - if i&1 == 0 { - d2.Write(password) - } else { - d2.Write(final) - } - final = d2.Sum(nil) - } - - result := make([]byte, 0, 22) - v := uint(0) - bits := uint(0) - for _, i := range md5_crypt_swaps { - v |= (uint(final[i]) << bits) - for bits = bits + 8; bits > 6; bits -= 6 { - result = append(result, itoa64[v&0x3f]) - v >>= 6 - } - } - result = append(result, itoa64[v&0x3f]) - - return append(append(append(magic, salt...), '$'), result...) -} diff --git a/cluster-autoscaler/vendor/github.com/abbot/go-http-auth/misc.go b/cluster-autoscaler/vendor/github.com/abbot/go-http-auth/misc.go deleted file mode 100644 index 277a6859de..0000000000 --- a/cluster-autoscaler/vendor/github.com/abbot/go-http-auth/misc.go +++ /dev/null @@ -1,30 +0,0 @@ -package auth - -import "encoding/base64" -import "crypto/md5" -import "crypto/rand" -import "fmt" - -/* - Return a random 16-byte base64 alphabet string -*/ -func RandomKey() string { - k := make([]byte, 12) - for bytes := 0; bytes < len(k); { - n, err := rand.Read(k[bytes:]) - if err != nil { - panic("rand.Read() failed") - } - bytes += n - } - return base64.StdEncoding.EncodeToString(k) -} - -/* - H function for MD5 algorithm (returns a lower-case hex MD5 digest) -*/ -func H(data string) string { - digest := md5.New() - digest.Write([]byte(data)) - return fmt.Sprintf("%x", digest.Sum(nil)) -} diff --git a/cluster-autoscaler/vendor/github.com/abbot/go-http-auth/test.htdigest b/cluster-autoscaler/vendor/github.com/abbot/go-http-auth/test.htdigest deleted file mode 100644 index 6c8c75b4e0..0000000000 --- a/cluster-autoscaler/vendor/github.com/abbot/go-http-auth/test.htdigest +++ /dev/null @@ -1 +0,0 @@ -test:example.com:aa78524fceb0e50fd8ca96dd818b8cf9 diff --git a/cluster-autoscaler/vendor/github.com/abbot/go-http-auth/test.htpasswd b/cluster-autoscaler/vendor/github.com/abbot/go-http-auth/test.htpasswd deleted file mode 100644 index 7b069898ad..0000000000 --- a/cluster-autoscaler/vendor/github.com/abbot/go-http-auth/test.htpasswd +++ /dev/null @@ -1,2 +0,0 @@ -test:{SHA}qvTGHdzF6KLavt4PO0gs2a6pQ00= -test2:$apr1$a0j62R97$mYqFkloXH0/UOaUnAiV2b0 diff --git a/cluster-autoscaler/vendor/github.com/abbot/go-http-auth/users.go b/cluster-autoscaler/vendor/github.com/abbot/go-http-auth/users.go deleted file mode 100644 index 5e7d0b8d8f..0000000000 --- a/cluster-autoscaler/vendor/github.com/abbot/go-http-auth/users.go +++ /dev/null @@ -1,136 +0,0 @@ -package auth - -import "encoding/csv" -import "os" - -/* - SecretProvider is used by authenticators. Takes user name and realm - as an argument, returns secret required for authentication (HA1 for - digest authentication, properly encrypted password for basic). -*/ -type SecretProvider func(user, realm string) string - -/* - Common functions for file auto-reloading -*/ -type File struct { - Path string - Info os.FileInfo - /* must be set in inherited types during initialization */ - Reload func() -} - -func (f *File) ReloadIfNeeded() { - info, err := os.Stat(f.Path) - if err != nil { - panic(err) - } - if f.Info == nil || f.Info.ModTime() != info.ModTime() { - f.Info = info - f.Reload() - } -} - -/* - Structure used for htdigest file authentication. Users map realms to - maps of users to their HA1 digests. -*/ -type HtdigestFile struct { - File - Users map[string]map[string]string -} - -func reload_htdigest(hf *HtdigestFile) { - r, err := os.Open(hf.Path) - if err != nil { - panic(err) - } - csv_reader := csv.NewReader(r) - csv_reader.Comma = ':' - csv_reader.Comment = '#' - csv_reader.TrimLeadingSpace = true - - records, err := csv_reader.ReadAll() - if err != nil { - panic(err) - } - - hf.Users = make(map[string]map[string]string) - for _, record := range records { - _, exists := hf.Users[record[1]] - if !exists { - hf.Users[record[1]] = make(map[string]string) - } - hf.Users[record[1]][record[0]] = record[2] - } -} - -/* - SecretProvider implementation based on htdigest-formated files. Will - reload htdigest file on changes. Will panic on syntax errors in - htdigest files. -*/ -func HtdigestFileProvider(filename string) SecretProvider { - hf := &HtdigestFile{File: File{Path: filename}} - hf.Reload = func() { reload_htdigest(hf) } - return func(user, realm string) string { - hf.ReloadIfNeeded() - _, exists := hf.Users[realm] - if !exists { - return "" - } - digest, exists := hf.Users[realm][user] - if !exists { - return "" - } - return digest - } -} - -/* - Structure used for htdigest file authentication. Users map users to - their salted encrypted password -*/ -type HtpasswdFile struct { - File - Users map[string]string -} - -func reload_htpasswd(h *HtpasswdFile) { - r, err := os.Open(h.Path) - if err != nil { - panic(err) - } - csv_reader := csv.NewReader(r) - csv_reader.Comma = ':' - csv_reader.Comment = '#' - csv_reader.TrimLeadingSpace = true - - records, err := csv_reader.ReadAll() - if err != nil { - panic(err) - } - - h.Users = make(map[string]string) - for _, record := range records { - h.Users[record[0]] = record[1] - } -} - -/* - SecretProvider implementation based on htpasswd-formated files. Will - reload htpasswd file on changes. Will panic on syntax errors in - htpasswd files. Realm argument of the SecretProvider is ignored. -*/ -func HtpasswdFileProvider(filename string) SecretProvider { - h := &HtpasswdFile{File: File{Path: filename}} - h.Reload = func() { reload_htpasswd(h) } - return func(user, realm string) string { - h.ReloadIfNeeded() - password, exists := h.Users[user] - if !exists { - return "" - } - return password - } -} diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/client/client.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/client/client.go index 788fe6e279..212fe25e71 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/client/client.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/client/client.go @@ -15,6 +15,12 @@ type Config struct { Endpoint string SigningRegion string SigningName string + + // States that the signing name did not come from a modeled source but + // was derived based on other data. Used by service client constructors + // to determine if the signin name can be overriden based on metadata the + // service has. + SigningNameDerived bool } // ConfigProvider provides a generic way for a service client to receive @@ -85,6 +91,6 @@ func (c *Client) AddDebugHandlers() { return } - c.Handlers.Send.PushFrontNamed(request.NamedHandler{Name: "awssdk.client.LogRequest", Fn: logRequest}) - c.Handlers.Send.PushBackNamed(request.NamedHandler{Name: "awssdk.client.LogResponse", Fn: logResponse}) + c.Handlers.Send.PushFrontNamed(LogHTTPRequestHandler) + c.Handlers.Send.PushBackNamed(LogHTTPResponseHandler) } diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/client/default_retryer.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/client/default_retryer.go index e25a460fba..a397b0d044 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/client/default_retryer.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/client/default_retryer.go @@ -1,11 +1,11 @@ package client import ( - "math/rand" - "sync" + "strconv" "time" "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/internal/sdkrand" ) // DefaultRetryer implements basic retry logic using exponential backoff for @@ -30,25 +30,27 @@ func (d DefaultRetryer) MaxRetries() int { return d.NumMaxRetries } -var seededRand = rand.New(&lockedSource{src: rand.NewSource(time.Now().UnixNano())}) - // RetryRules returns the delay duration before retrying this request again func (d DefaultRetryer) RetryRules(r *request.Request) time.Duration { // Set the upper limit of delay in retrying at ~five minutes minTime := 30 throttle := d.shouldThrottle(r) if throttle { + if delay, ok := getRetryDelay(r); ok { + return delay + } + minTime = 500 } retryCount := r.RetryCount - if retryCount > 13 { - retryCount = 13 - } else if throttle && retryCount > 8 { + if throttle && retryCount > 8 { retryCount = 8 + } else if retryCount > 13 { + retryCount = 13 } - delay := (1 << uint(retryCount)) * (seededRand.Intn(minTime) + minTime) + delay := (1 << uint(retryCount)) * (sdkrand.SeededRand.Intn(minTime) + minTime) return time.Duration(delay) * time.Millisecond } @@ -60,7 +62,7 @@ func (d DefaultRetryer) ShouldRetry(r *request.Request) bool { return *r.Retryable } - if r.HTTPResponse.StatusCode >= 500 { + if r.HTTPResponse.StatusCode >= 500 && r.HTTPResponse.StatusCode != 501 { return true } return r.IsErrorRetryable() || d.shouldThrottle(r) @@ -68,29 +70,47 @@ func (d DefaultRetryer) ShouldRetry(r *request.Request) bool { // ShouldThrottle returns true if the request should be throttled. func (d DefaultRetryer) shouldThrottle(r *request.Request) bool { - if r.HTTPResponse.StatusCode == 502 || - r.HTTPResponse.StatusCode == 503 || - r.HTTPResponse.StatusCode == 504 { - return true + switch r.HTTPResponse.StatusCode { + case 429: + case 502: + case 503: + case 504: + default: + return r.IsErrorThrottle() } - return r.IsErrorThrottle() + + return true } -// lockedSource is a thread-safe implementation of rand.Source -type lockedSource struct { - lk sync.Mutex - src rand.Source +// This will look in the Retry-After header, RFC 7231, for how long +// it will wait before attempting another request +func getRetryDelay(r *request.Request) (time.Duration, bool) { + if !canUseRetryAfterHeader(r) { + return 0, false + } + + delayStr := r.HTTPResponse.Header.Get("Retry-After") + if len(delayStr) == 0 { + return 0, false + } + + delay, err := strconv.Atoi(delayStr) + if err != nil { + return 0, false + } + + return time.Duration(delay) * time.Second, true } -func (r *lockedSource) Int63() (n int64) { - r.lk.Lock() - n = r.src.Int63() - r.lk.Unlock() - return -} +// Will look at the status code to see if the retry header pertains to +// the status code. +func canUseRetryAfterHeader(r *request.Request) bool { + switch r.HTTPResponse.StatusCode { + case 429: + case 503: + default: + return false + } -func (r *lockedSource) Seed(seed int64) { - r.lk.Lock() - r.src.Seed(seed) - r.lk.Unlock() + return true } diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/client/logger.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/client/logger.go index 1f39c91f2e..ce9fb896d9 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/client/logger.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/client/logger.go @@ -44,22 +44,57 @@ func (reader *teeReaderCloser) Close() error { return reader.Source.Close() } +// LogHTTPRequestHandler is a SDK request handler to log the HTTP request sent +// to a service. Will include the HTTP request body if the LogLevel of the +// request matches LogDebugWithHTTPBody. +var LogHTTPRequestHandler = request.NamedHandler{ + Name: "awssdk.client.LogRequest", + Fn: logRequest, +} + func logRequest(r *request.Request) { logBody := r.Config.LogLevel.Matches(aws.LogDebugWithHTTPBody) - dumpedBody, err := httputil.DumpRequestOut(r.HTTPRequest, logBody) + bodySeekable := aws.IsReaderSeekable(r.Body) + + b, err := httputil.DumpRequestOut(r.HTTPRequest, logBody) if err != nil { - r.Config.Logger.Log(fmt.Sprintf(logReqErrMsg, r.ClientInfo.ServiceName, r.Operation.Name, err)) + r.Config.Logger.Log(fmt.Sprintf(logReqErrMsg, + r.ClientInfo.ServiceName, r.Operation.Name, err)) return } if logBody { + if !bodySeekable { + r.SetReaderBody(aws.ReadSeekCloser(r.HTTPRequest.Body)) + } // Reset the request body because dumpRequest will re-wrap the r.HTTPRequest's // Body as a NoOpCloser and will not be reset after read by the HTTP // client reader. r.ResetBody() } - r.Config.Logger.Log(fmt.Sprintf(logReqMsg, r.ClientInfo.ServiceName, r.Operation.Name, string(dumpedBody))) + r.Config.Logger.Log(fmt.Sprintf(logReqMsg, + r.ClientInfo.ServiceName, r.Operation.Name, string(b))) +} + +// LogHTTPRequestHeaderHandler is a SDK request handler to log the HTTP request sent +// to a service. Will only log the HTTP request's headers. The request payload +// will not be read. +var LogHTTPRequestHeaderHandler = request.NamedHandler{ + Name: "awssdk.client.LogRequestHeader", + Fn: logRequestHeader, +} + +func logRequestHeader(r *request.Request) { + b, err := httputil.DumpRequestOut(r.HTTPRequest, false) + if err != nil { + r.Config.Logger.Log(fmt.Sprintf(logReqErrMsg, + r.ClientInfo.ServiceName, r.Operation.Name, err)) + return + } + + r.Config.Logger.Log(fmt.Sprintf(logReqMsg, + r.ClientInfo.ServiceName, r.Operation.Name, string(b))) } const logRespMsg = `DEBUG: Response %s/%s Details: @@ -72,27 +107,44 @@ const logRespErrMsg = `DEBUG ERROR: Response %s/%s: %s -----------------------------------------------------` +// LogHTTPResponseHandler is a SDK request handler to log the HTTP response +// received from a service. Will include the HTTP response body if the LogLevel +// of the request matches LogDebugWithHTTPBody. +var LogHTTPResponseHandler = request.NamedHandler{ + Name: "awssdk.client.LogResponse", + Fn: logResponse, +} + func logResponse(r *request.Request) { lw := &logWriter{r.Config.Logger, bytes.NewBuffer(nil)} - r.HTTPResponse.Body = &teeReaderCloser{ - Reader: io.TeeReader(r.HTTPResponse.Body, lw), - Source: r.HTTPResponse.Body, + + logBody := r.Config.LogLevel.Matches(aws.LogDebugWithHTTPBody) + if logBody { + r.HTTPResponse.Body = &teeReaderCloser{ + Reader: io.TeeReader(r.HTTPResponse.Body, lw), + Source: r.HTTPResponse.Body, + } } handlerFn := func(req *request.Request) { - body, err := httputil.DumpResponse(req.HTTPResponse, false) + b, err := httputil.DumpResponse(req.HTTPResponse, false) if err != nil { - lw.Logger.Log(fmt.Sprintf(logRespErrMsg, req.ClientInfo.ServiceName, req.Operation.Name, err)) + lw.Logger.Log(fmt.Sprintf(logRespErrMsg, + req.ClientInfo.ServiceName, req.Operation.Name, err)) return } - b, err := ioutil.ReadAll(lw.buf) - if err != nil { - lw.Logger.Log(fmt.Sprintf(logRespErrMsg, req.ClientInfo.ServiceName, req.Operation.Name, err)) - return - } - lw.Logger.Log(fmt.Sprintf(logRespMsg, req.ClientInfo.ServiceName, req.Operation.Name, string(body))) - if req.Config.LogLevel.Matches(aws.LogDebugWithHTTPBody) { + lw.Logger.Log(fmt.Sprintf(logRespMsg, + req.ClientInfo.ServiceName, req.Operation.Name, string(b))) + + if logBody { + b, err := ioutil.ReadAll(lw.buf) + if err != nil { + lw.Logger.Log(fmt.Sprintf(logRespErrMsg, + req.ClientInfo.ServiceName, req.Operation.Name, err)) + return + } + lw.Logger.Log(string(b)) } } @@ -106,3 +158,27 @@ func logResponse(r *request.Request) { Name: handlerName, Fn: handlerFn, }) } + +// LogHTTPResponseHeaderHandler is a SDK request handler to log the HTTP +// response received from a service. Will only log the HTTP response's headers. +// The response payload will not be read. +var LogHTTPResponseHeaderHandler = request.NamedHandler{ + Name: "awssdk.client.LogResponseHeader", + Fn: logResponseHeader, +} + +func logResponseHeader(r *request.Request) { + if r.Config.Logger == nil { + return + } + + b, err := httputil.DumpResponse(r.HTTPResponse, false) + if err != nil { + r.Config.Logger.Log(fmt.Sprintf(logRespErrMsg, + r.ClientInfo.ServiceName, r.Operation.Name, err)) + return + } + + r.Config.Logger.Log(fmt.Sprintf(logRespMsg, + r.ClientInfo.ServiceName, r.Operation.Name, string(b))) +} diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/client/metadata/client_info.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/client/metadata/client_info.go index 4778056ddf..920e9fddf8 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/client/metadata/client_info.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/client/metadata/client_info.go @@ -3,6 +3,7 @@ package metadata // ClientInfo wraps immutable data from the client.Client structure. type ClientInfo struct { ServiceName string + ServiceID string APIVersion string Endpoint string SigningName string diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/config.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/config.go index ae3a286960..5421b5d4e9 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/config.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/config.go @@ -151,6 +151,15 @@ type Config struct { // with accelerate. S3UseAccelerate *bool + // S3DisableContentMD5Validation config option is temporarily disabled, + // For S3 GetObject API calls, #1837. + // + // Set this to `true` to disable the S3 service client from automatically + // adding the ContentMD5 to S3 Object Put and Upload API calls. This option + // will also disable the SDK from performing object ContentMD5 validation + // on GetObject API calls. + S3DisableContentMD5Validation *bool + // Set this to `true` to disable the EC2Metadata client from overriding the // default http.Client's Timeout. This is helpful if you do not want the // EC2Metadata client to create a new http.Client. This options is only @@ -168,7 +177,7 @@ type Config struct { // EC2MetadataDisableTimeoutOverride *bool - // Instructs the endpiont to be generated for a service client to + // Instructs the endpoint to be generated for a service client to // be the dual stack endpoint. The dual stack endpoint will support // both IPv4 and IPv6 addressing. // @@ -336,6 +345,15 @@ func (c *Config) WithS3Disable100Continue(disable bool) *Config { func (c *Config) WithS3UseAccelerate(enable bool) *Config { c.S3UseAccelerate = &enable return c + +} + +// WithS3DisableContentMD5Validation sets a config +// S3DisableContentMD5Validation value returning a Config pointer for chaining. +func (c *Config) WithS3DisableContentMD5Validation(enable bool) *Config { + c.S3DisableContentMD5Validation = &enable + return c + } // WithUseDualStack sets a config UseDualStack value returning a Config @@ -435,6 +453,10 @@ func mergeInConfig(dst *Config, other *Config) { dst.S3UseAccelerate = other.S3UseAccelerate } + if other.S3DisableContentMD5Validation != nil { + dst.S3DisableContentMD5Validation = other.S3DisableContentMD5Validation + } + if other.UseDualStack != nil { dst.UseDualStack = other.UseDualStack } diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/corehandlers/handlers.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/corehandlers/handlers.go index 495e3ef62c..cfcddf3dc5 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/corehandlers/handlers.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/corehandlers/handlers.go @@ -3,12 +3,10 @@ package corehandlers import ( "bytes" "fmt" - "io" "io/ioutil" "net/http" "net/url" "regexp" - "runtime" "strconv" "time" @@ -36,18 +34,13 @@ var BuildContentLengthHandler = request.NamedHandler{Name: "core.BuildContentLen if slength := r.HTTPRequest.Header.Get("Content-Length"); slength != "" { length, _ = strconv.ParseInt(slength, 10, 64) } else { - switch body := r.Body.(type) { - case nil: - length = 0 - case lener: - length = int64(body.Len()) - case io.Seeker: - r.BodyStart, _ = body.Seek(0, 1) - end, _ := body.Seek(0, 2) - body.Seek(r.BodyStart, 0) // make sure to seek back to original location - length = end - r.BodyStart - default: - panic("Cannot get length of body, must provide `ContentLength`") + if r.Body != nil { + var err error + length, err = aws.SeekerLen(r.Body) + if err != nil { + r.Error = awserr.New(request.ErrCodeSerialization, "failed to get request body's length", err) + return + } } } @@ -60,13 +53,6 @@ var BuildContentLengthHandler = request.NamedHandler{Name: "core.BuildContentLen } }} -// SDKVersionUserAgentHandler is a request handler for adding the SDK Version to the user agent. -var SDKVersionUserAgentHandler = request.NamedHandler{ - Name: "core.SDKVersionUserAgentHandler", - Fn: request.MakeAddToUserAgentHandler(aws.SDKName, aws.SDKVersion, - runtime.Version(), runtime.GOOS, runtime.GOARCH), -} - var reStatusCode = regexp.MustCompile(`^(\d{3})`) // ValidateReqSigHandler is a request handler to ensure that the request's diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/corehandlers/user_agent.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/corehandlers/user_agent.go new file mode 100644 index 0000000000..a15f496bc0 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/corehandlers/user_agent.go @@ -0,0 +1,37 @@ +package corehandlers + +import ( + "os" + "runtime" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/request" +) + +// SDKVersionUserAgentHandler is a request handler for adding the SDK Version +// to the user agent. +var SDKVersionUserAgentHandler = request.NamedHandler{ + Name: "core.SDKVersionUserAgentHandler", + Fn: request.MakeAddToUserAgentHandler(aws.SDKName, aws.SDKVersion, + runtime.Version(), runtime.GOOS, runtime.GOARCH), +} + +const execEnvVar = `AWS_EXECUTION_ENV` +const execEnvUAKey = `exec_env` + +// AddHostExecEnvUserAgentHander is a request handler appending the SDK's +// execution environment to the user agent. +// +// If the environment variable AWS_EXECUTION_ENV is set, its value will be +// appended to the user agent string. +var AddHostExecEnvUserAgentHander = request.NamedHandler{ + Name: "core.AddHostExecEnvUserAgentHander", + Fn: func(r *request.Request) { + v := os.Getenv(execEnvVar) + if len(v) == 0 { + return + } + + request.AddToUserAgent(r, execEnvUAKey+"/"+v) + }, +} diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/credentials/credentials.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/credentials/credentials.go index 42416fc2f0..ed086992f6 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/credentials/credentials.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/credentials/credentials.go @@ -178,7 +178,8 @@ func (e *Expiry) IsExpired() bool { type Credentials struct { creds Value forceRefresh bool - m sync.Mutex + + m sync.RWMutex provider Provider } @@ -201,6 +202,17 @@ func NewCredentials(provider Provider) *Credentials { // If Credentials.Expire() was called the credentials Value will be force // expired, and the next call to Get() will cause them to be refreshed. func (c *Credentials) Get() (Value, error) { + // Check the cached credentials first with just the read lock. + c.m.RLock() + if !c.isExpired() { + creds := c.creds + c.m.RUnlock() + return creds, nil + } + c.m.RUnlock() + + // Credentials are expired need to retrieve the credentials taking the full + // lock. c.m.Lock() defer c.m.Unlock() @@ -234,8 +246,8 @@ func (c *Credentials) Expire() { // If the Credentials were forced to be expired with Expire() this will // reflect that override. func (c *Credentials) IsExpired() bool { - c.m.Lock() - defer c.m.Unlock() + c.m.RLock() + defer c.m.RUnlock() return c.isExpired() } diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/csm/doc.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/csm/doc.go new file mode 100644 index 0000000000..152d785b36 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/csm/doc.go @@ -0,0 +1,46 @@ +// Package csm provides Client Side Monitoring (CSM) which enables sending metrics +// via UDP connection. Using the Start function will enable the reporting of +// metrics on a given port. If Start is called, with different parameters, again, +// a panic will occur. +// +// Pause can be called to pause any metrics publishing on a given port. Sessions +// that have had their handlers modified via InjectHandlers may still be used. +// However, the handlers will act as a no-op meaning no metrics will be published. +// +// Example: +// r, err := csm.Start("clientID", ":31000") +// if err != nil { +// panic(fmt.Errorf("failed starting CSM: %v", err)) +// } +// +// sess, err := session.NewSession(&aws.Config{}) +// if err != nil { +// panic(fmt.Errorf("failed loading session: %v", err)) +// } +// +// r.InjectHandlers(&sess.Handlers) +// +// client := s3.New(sess) +// resp, err := client.GetObject(&s3.GetObjectInput{ +// Bucket: aws.String("bucket"), +// Key: aws.String("key"), +// }) +// +// // Will pause monitoring +// r.Pause() +// resp, err = client.GetObject(&s3.GetObjectInput{ +// Bucket: aws.String("bucket"), +// Key: aws.String("key"), +// }) +// +// // Resume monitoring +// r.Continue() +// +// Start returns a Reporter that is used to enable or disable monitoring. If +// access to the Reporter is required later, calling Get will return the Reporter +// singleton. +// +// Example: +// r := csm.Get() +// r.Continue() +package csm diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/csm/enable.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/csm/enable.go new file mode 100644 index 0000000000..2f0c6eac9a --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/csm/enable.go @@ -0,0 +1,67 @@ +package csm + +import ( + "fmt" + "sync" +) + +var ( + lock sync.Mutex +) + +// Client side metric handler names +const ( + APICallMetricHandlerName = "awscsm.SendAPICallMetric" + APICallAttemptMetricHandlerName = "awscsm.SendAPICallAttemptMetric" +) + +// Start will start the a long running go routine to capture +// client side metrics. Calling start multiple time will only +// start the metric listener once and will panic if a different +// client ID or port is passed in. +// +// Example: +// r, err := csm.Start("clientID", "127.0.0.1:8094") +// if err != nil { +// panic(fmt.Errorf("expected no error, but received %v", err)) +// } +// sess := session.NewSession() +// r.InjectHandlers(sess.Handlers) +// +// svc := s3.New(sess) +// out, err := svc.GetObject(&s3.GetObjectInput{ +// Bucket: aws.String("bucket"), +// Key: aws.String("key"), +// }) +func Start(clientID string, url string) (*Reporter, error) { + lock.Lock() + defer lock.Unlock() + + if sender == nil { + sender = newReporter(clientID, url) + } else { + if sender.clientID != clientID { + panic(fmt.Errorf("inconsistent client IDs. %q was expected, but received %q", sender.clientID, clientID)) + } + + if sender.url != url { + panic(fmt.Errorf("inconsistent URLs. %q was expected, but received %q", sender.url, url)) + } + } + + if err := connect(url); err != nil { + sender = nil + return nil, err + } + + return sender, nil +} + +// Get will return a reporter if one exists, if one does not exist, nil will +// be returned. +func Get() *Reporter { + lock.Lock() + defer lock.Unlock() + + return sender +} diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/csm/metric.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/csm/metric.go new file mode 100644 index 0000000000..4b0d630e4c --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/csm/metric.go @@ -0,0 +1,51 @@ +package csm + +import ( + "strconv" + "time" +) + +type metricTime time.Time + +func (t metricTime) MarshalJSON() ([]byte, error) { + ns := time.Duration(time.Time(t).UnixNano()) + return []byte(strconv.FormatInt(int64(ns/time.Millisecond), 10)), nil +} + +type metric struct { + ClientID *string `json:"ClientId,omitempty"` + API *string `json:"Api,omitempty"` + Service *string `json:"Service,omitempty"` + Timestamp *metricTime `json:"Timestamp,omitempty"` + Type *string `json:"Type,omitempty"` + Version *int `json:"Version,omitempty"` + + AttemptCount *int `json:"AttemptCount,omitempty"` + Latency *int `json:"Latency,omitempty"` + + Fqdn *string `json:"Fqdn,omitempty"` + UserAgent *string `json:"UserAgent,omitempty"` + AttemptLatency *int `json:"AttemptLatency,omitempty"` + + SessionToken *string `json:"SessionToken,omitempty"` + Region *string `json:"Region,omitempty"` + AccessKey *string `json:"AccessKey,omitempty"` + HTTPStatusCode *int `json:"HttpStatusCode,omitempty"` + XAmzID2 *string `json:"XAmzId2,omitempty"` + XAmzRequestID *string `json:"XAmznRequestId,omitempty"` + + AWSException *string `json:"AwsException,omitempty"` + AWSExceptionMessage *string `json:"AwsExceptionMessage,omitempty"` + SDKException *string `json:"SdkException,omitempty"` + SDKExceptionMessage *string `json:"SdkExceptionMessage,omitempty"` + + DestinationIP *string `json:"DestinationIp,omitempty"` + ConnectionReused *int `json:"ConnectionReused,omitempty"` + + AcquireConnectionLatency *int `json:"AcquireConnectionLatency,omitempty"` + ConnectLatency *int `json:"ConnectLatency,omitempty"` + RequestLatency *int `json:"RequestLatency,omitempty"` + DNSLatency *int `json:"DnsLatency,omitempty"` + TCPLatency *int `json:"TcpLatency,omitempty"` + SSLLatency *int `json:"SslLatency,omitempty"` +} diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/csm/metricChan.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/csm/metricChan.go new file mode 100644 index 0000000000..514fc3739a --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/csm/metricChan.go @@ -0,0 +1,54 @@ +package csm + +import ( + "sync/atomic" +) + +const ( + runningEnum = iota + pausedEnum +) + +var ( + // MetricsChannelSize of metrics to hold in the channel + MetricsChannelSize = 100 +) + +type metricChan struct { + ch chan metric + paused int64 +} + +func newMetricChan(size int) metricChan { + return metricChan{ + ch: make(chan metric, size), + } +} + +func (ch *metricChan) Pause() { + atomic.StoreInt64(&ch.paused, pausedEnum) +} + +func (ch *metricChan) Continue() { + atomic.StoreInt64(&ch.paused, runningEnum) +} + +func (ch *metricChan) IsPaused() bool { + v := atomic.LoadInt64(&ch.paused) + return v == pausedEnum +} + +// Push will push metrics to the metric channel if the channel +// is not paused +func (ch *metricChan) Push(m metric) bool { + if ch.IsPaused() { + return false + } + + select { + case ch.ch <- m: + return true + default: + return false + } +} diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/csm/reporter.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/csm/reporter.go new file mode 100644 index 0000000000..1484c8fc5b --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/csm/reporter.go @@ -0,0 +1,230 @@ +package csm + +import ( + "encoding/json" + "net" + "time" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/request" +) + +const ( + // DefaultPort is used when no port is specified + DefaultPort = "31000" +) + +// Reporter will gather metrics of API requests made and +// send those metrics to the CSM endpoint. +type Reporter struct { + clientID string + url string + conn net.Conn + metricsCh metricChan + done chan struct{} +} + +var ( + sender *Reporter +) + +func connect(url string) error { + const network = "udp" + if err := sender.connect(network, url); err != nil { + return err + } + + if sender.done == nil { + sender.done = make(chan struct{}) + go sender.start() + } + + return nil +} + +func newReporter(clientID, url string) *Reporter { + return &Reporter{ + clientID: clientID, + url: url, + metricsCh: newMetricChan(MetricsChannelSize), + } +} + +func (rep *Reporter) sendAPICallAttemptMetric(r *request.Request) { + if rep == nil { + return + } + + now := time.Now() + creds, _ := r.Config.Credentials.Get() + + m := metric{ + ClientID: aws.String(rep.clientID), + API: aws.String(r.Operation.Name), + Service: aws.String(r.ClientInfo.ServiceID), + Timestamp: (*metricTime)(&now), + UserAgent: aws.String(r.HTTPRequest.Header.Get("User-Agent")), + Region: r.Config.Region, + Type: aws.String("ApiCallAttempt"), + Version: aws.Int(1), + + XAmzRequestID: aws.String(r.RequestID), + + AttemptCount: aws.Int(r.RetryCount + 1), + AttemptLatency: aws.Int(int(now.Sub(r.AttemptTime).Nanoseconds() / int64(time.Millisecond))), + AccessKey: aws.String(creds.AccessKeyID), + } + + if r.HTTPResponse != nil { + m.HTTPStatusCode = aws.Int(r.HTTPResponse.StatusCode) + } + + if r.Error != nil { + if awserr, ok := r.Error.(awserr.Error); ok { + setError(&m, awserr) + } + } + + rep.metricsCh.Push(m) +} + +func setError(m *metric, err awserr.Error) { + msg := err.Message() + code := err.Code() + + switch code { + case "RequestError", + "SerializationError", + request.CanceledErrorCode: + + m.SDKException = &code + m.SDKExceptionMessage = &msg + default: + m.AWSException = &code + m.AWSExceptionMessage = &msg + } +} + +func (rep *Reporter) sendAPICallMetric(r *request.Request) { + if rep == nil { + return + } + + now := time.Now() + m := metric{ + ClientID: aws.String(rep.clientID), + API: aws.String(r.Operation.Name), + Service: aws.String(r.ClientInfo.ServiceID), + Timestamp: (*metricTime)(&now), + Type: aws.String("ApiCall"), + AttemptCount: aws.Int(r.RetryCount + 1), + Latency: aws.Int(int(time.Now().Sub(r.Time) / time.Millisecond)), + XAmzRequestID: aws.String(r.RequestID), + } + + // TODO: Probably want to figure something out for logging dropped + // metrics + rep.metricsCh.Push(m) +} + +func (rep *Reporter) connect(network, url string) error { + if rep.conn != nil { + rep.conn.Close() + } + + conn, err := net.Dial(network, url) + if err != nil { + return awserr.New("UDPError", "Could not connect", err) + } + + rep.conn = conn + + return nil +} + +func (rep *Reporter) close() { + if rep.done != nil { + close(rep.done) + } + + rep.metricsCh.Pause() +} + +func (rep *Reporter) start() { + defer func() { + rep.metricsCh.Pause() + }() + + for { + select { + case <-rep.done: + rep.done = nil + return + case m := <-rep.metricsCh.ch: + // TODO: What to do with this error? Probably should just log + b, err := json.Marshal(m) + if err != nil { + continue + } + + rep.conn.Write(b) + } + } +} + +// Pause will pause the metric channel preventing any new metrics from +// being added. +func (rep *Reporter) Pause() { + lock.Lock() + defer lock.Unlock() + + if rep == nil { + return + } + + rep.close() +} + +// Continue will reopen the metric channel and allow for monitoring +// to be resumed. +func (rep *Reporter) Continue() { + lock.Lock() + defer lock.Unlock() + if rep == nil { + return + } + + if !rep.metricsCh.IsPaused() { + return + } + + rep.metricsCh.Continue() +} + +// InjectHandlers will will enable client side metrics and inject the proper +// handlers to handle how metrics are sent. +// +// Example: +// // Start must be called in order to inject the correct handlers +// r, err := csm.Start("clientID", "127.0.0.1:8094") +// if err != nil { +// panic(fmt.Errorf("expected no error, but received %v", err)) +// } +// +// sess := session.NewSession() +// r.InjectHandlers(&sess.Handlers) +// +// // create a new service client with our client side metric session +// svc := s3.New(sess) +func (rep *Reporter) InjectHandlers(handlers *request.Handlers) { + if rep == nil { + return + } + + apiCallHandler := request.NamedHandler{Name: APICallMetricHandlerName, Fn: rep.sendAPICallMetric} + handlers.Complete.PushFrontNamed(apiCallHandler) + + apiCallAttemptHandler := request.NamedHandler{Name: APICallAttemptMetricHandlerName, Fn: rep.sendAPICallAttemptMetric} + handlers.AfterRetry.PushFrontNamed(apiCallAttemptHandler) +} diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/defaults/defaults.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/defaults/defaults.go index 07afe3b8e6..3cf1036b62 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/defaults/defaults.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/defaults/defaults.go @@ -9,6 +9,7 @@ package defaults import ( "fmt" + "net" "net/http" "net/url" "os" @@ -72,6 +73,7 @@ func Handlers() request.Handlers { handlers.Validate.PushBackNamed(corehandlers.ValidateEndpointHandler) handlers.Validate.AfterEachFn = request.HandlerListStopOnError handlers.Build.PushBackNamed(corehandlers.SDKVersionUserAgentHandler) + handlers.Build.PushBackNamed(corehandlers.AddHostExecEnvUserAgentHander) handlers.Build.AfterEachFn = request.HandlerListStopOnError handlers.Sign.PushBackNamed(corehandlers.BuildContentLengthHandler) handlers.Send.PushBackNamed(corehandlers.ValidateReqSigHandler) @@ -118,14 +120,43 @@ func RemoteCredProvider(cfg aws.Config, handlers request.Handlers) credentials.P return ec2RoleProvider(cfg, handlers) } +var lookupHostFn = net.LookupHost + +func isLoopbackHost(host string) (bool, error) { + ip := net.ParseIP(host) + if ip != nil { + return ip.IsLoopback(), nil + } + + // Host is not an ip, perform lookup + addrs, err := lookupHostFn(host) + if err != nil { + return false, err + } + for _, addr := range addrs { + if !net.ParseIP(addr).IsLoopback() { + return false, nil + } + } + + return true, nil +} + func localHTTPCredProvider(cfg aws.Config, handlers request.Handlers, u string) credentials.Provider { var errMsg string parsed, err := url.Parse(u) if err != nil { errMsg = fmt.Sprintf("invalid URL, %v", err) - } else if host := aws.URLHostname(parsed); !(host == "localhost" || host == "127.0.0.1") { - errMsg = fmt.Sprintf("invalid host address, %q, only localhost and 127.0.0.1 are valid.", host) + } else { + host := aws.URLHostname(parsed) + if len(host) == 0 { + errMsg = "unable to parse host from local HTTP cred provider URL" + } else if isLoopback, loopbackErr := isLoopbackHost(host); loopbackErr != nil { + errMsg = fmt.Sprintf("failed to resolve host %q, %v", host, loopbackErr) + } else if !isLoopback { + errMsg = fmt.Sprintf("invalid endpoint host, %q, only loopback hosts are allowed.", host) + } } if len(errMsg) > 0 { diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/service.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/service.go index 5b4379dbd8..ef5f73292b 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/service.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/service.go @@ -1,5 +1,10 @@ // Package ec2metadata provides the client for making API calls to the // EC2 Metadata service. +// +// This package's client can be disabled completely by setting the environment +// variable "AWS_EC2_METADATA_DISABLED=true". This environment variable set to +// true instructs the SDK to disable the EC2 Metadata client. The client cannot +// be used while the environemnt variable is set to true, (case insensitive). package ec2metadata import ( @@ -7,17 +12,21 @@ import ( "errors" "io" "net/http" + "os" + "strings" "time" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/awserr" "github.com/aws/aws-sdk-go/aws/client" "github.com/aws/aws-sdk-go/aws/client/metadata" + "github.com/aws/aws-sdk-go/aws/corehandlers" "github.com/aws/aws-sdk-go/aws/request" ) // ServiceName is the name of the service. const ServiceName = "ec2metadata" +const disableServiceEnvVar = "AWS_EC2_METADATA_DISABLED" // A EC2Metadata is an EC2 Metadata service Client. type EC2Metadata struct { @@ -75,6 +84,21 @@ func NewClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegio svc.Handlers.Validate.Clear() svc.Handlers.Validate.PushBack(validateEndpointHandler) + // Disable the EC2 Metadata service if the environment variable is set. + // This shortcirctes the service's functionality to always fail to send + // requests. + if strings.ToLower(os.Getenv(disableServiceEnvVar)) == "true" { + svc.Handlers.Send.SwapNamed(request.NamedHandler{ + Name: corehandlers.SendHandler.Name, + Fn: func(r *request.Request) { + r.Error = awserr.New( + request.CanceledErrorCode, + "EC2 IMDS access disabled via "+disableServiceEnvVar+" env var", + nil) + }, + }) + } + // Add additional options to the service config for _, option := range opts { option(svc.Client) diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go index f468de00d9..c472a57fad 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go @@ -24,6 +24,7 @@ const ( EuCentral1RegionID = "eu-central-1" // EU (Frankfurt). EuWest1RegionID = "eu-west-1" // EU (Ireland). EuWest2RegionID = "eu-west-2" // EU (London). + EuWest3RegionID = "eu-west-3" // EU (Paris). SaEast1RegionID = "sa-east-1" // South America (Sao Paulo). UsEast1RegionID = "us-east-1" // US East (N. Virginia). UsEast2RegionID = "us-east-2" // US East (Ohio). @@ -33,7 +34,8 @@ const ( // AWS China partition's regions. const ( - CnNorth1RegionID = "cn-north-1" // China (Beijing). + CnNorth1RegionID = "cn-north-1" // China (Beijing). + CnNorthwest1RegionID = "cn-northwest-1" // China (Ningxia). ) // AWS GovCloud (US) partition's regions. @@ -43,14 +45,21 @@ const ( // Service identifiers const ( + A4bServiceID = "a4b" // A4b. AcmServiceID = "acm" // Acm. + AcmPcaServiceID = "acm-pca" // AcmPca. + ApiMediatailorServiceID = "api.mediatailor" // ApiMediatailor. + ApiPricingServiceID = "api.pricing" // ApiPricing. ApigatewayServiceID = "apigateway" // Apigateway. ApplicationAutoscalingServiceID = "application-autoscaling" // ApplicationAutoscaling. Appstream2ServiceID = "appstream2" // Appstream2. AthenaServiceID = "athena" // Athena. AutoscalingServiceID = "autoscaling" // Autoscaling. + AutoscalingPlansServiceID = "autoscaling-plans" // AutoscalingPlans. BatchServiceID = "batch" // Batch. BudgetsServiceID = "budgets" // Budgets. + CeServiceID = "ce" // Ce. + Cloud9ServiceID = "cloud9" // Cloud9. ClouddirectoryServiceID = "clouddirectory" // Clouddirectory. CloudformationServiceID = "cloudformation" // Cloudformation. CloudfrontServiceID = "cloudfront" // Cloudfront. @@ -66,9 +75,11 @@ const ( CognitoIdentityServiceID = "cognito-identity" // CognitoIdentity. CognitoIdpServiceID = "cognito-idp" // CognitoIdp. CognitoSyncServiceID = "cognito-sync" // CognitoSync. + ComprehendServiceID = "comprehend" // Comprehend. ConfigServiceID = "config" // Config. CurServiceID = "cur" // Cur. DatapipelineServiceID = "datapipeline" // Datapipeline. + DaxServiceID = "dax" // Dax. DevicefarmServiceID = "devicefarm" // Devicefarm. DirectconnectServiceID = "directconnect" // Directconnect. DiscoveryServiceID = "discovery" // Discovery. @@ -90,10 +101,12 @@ const ( EsServiceID = "es" // Es. EventsServiceID = "events" // Events. FirehoseServiceID = "firehose" // Firehose. + FmsServiceID = "fms" // Fms. GameliftServiceID = "gamelift" // Gamelift. GlacierServiceID = "glacier" // Glacier. GlueServiceID = "glue" // Glue. GreengrassServiceID = "greengrass" // Greengrass. + GuarddutyServiceID = "guardduty" // Guardduty. HealthServiceID = "health" // Health. IamServiceID = "iam" // Iam. ImportexportServiceID = "importexport" // Importexport. @@ -101,18 +114,24 @@ const ( IotServiceID = "iot" // Iot. KinesisServiceID = "kinesis" // Kinesis. KinesisanalyticsServiceID = "kinesisanalytics" // Kinesisanalytics. + KinesisvideoServiceID = "kinesisvideo" // Kinesisvideo. KmsServiceID = "kms" // Kms. LambdaServiceID = "lambda" // Lambda. LightsailServiceID = "lightsail" // Lightsail. LogsServiceID = "logs" // Logs. MachinelearningServiceID = "machinelearning" // Machinelearning. MarketplacecommerceanalyticsServiceID = "marketplacecommerceanalytics" // Marketplacecommerceanalytics. + MediaconvertServiceID = "mediaconvert" // Mediaconvert. + MedialiveServiceID = "medialive" // Medialive. + MediapackageServiceID = "mediapackage" // Mediapackage. + MediastoreServiceID = "mediastore" // Mediastore. MeteringMarketplaceServiceID = "metering.marketplace" // MeteringMarketplace. MghServiceID = "mgh" // Mgh. MobileanalyticsServiceID = "mobileanalytics" // Mobileanalytics. ModelsLexServiceID = "models.lex" // ModelsLex. MonitoringServiceID = "monitoring" // Monitoring. MturkRequesterServiceID = "mturk-requester" // MturkRequester. + NeptuneServiceID = "neptune" // Neptune. OpsworksServiceID = "opsworks" // Opsworks. OpsworksCmServiceID = "opsworks-cm" // OpsworksCm. OrganizationsServiceID = "organizations" // Organizations. @@ -121,12 +140,18 @@ const ( RdsServiceID = "rds" // Rds. RedshiftServiceID = "redshift" // Redshift. RekognitionServiceID = "rekognition" // Rekognition. + ResourceGroupsServiceID = "resource-groups" // ResourceGroups. Route53ServiceID = "route53" // Route53. Route53domainsServiceID = "route53domains" // Route53domains. RuntimeLexServiceID = "runtime.lex" // RuntimeLex. + RuntimeSagemakerServiceID = "runtime.sagemaker" // RuntimeSagemaker. S3ServiceID = "s3" // S3. + SagemakerServiceID = "sagemaker" // Sagemaker. SdbServiceID = "sdb" // Sdb. + SecretsmanagerServiceID = "secretsmanager" // Secretsmanager. + ServerlessrepoServiceID = "serverlessrepo" // Serverlessrepo. ServicecatalogServiceID = "servicecatalog" // Servicecatalog. + ServicediscoveryServiceID = "servicediscovery" // Servicediscovery. ShieldServiceID = "shield" // Shield. SmsServiceID = "sms" // Sms. SnowballServiceID = "snowball" // Snowball. @@ -140,9 +165,11 @@ const ( SupportServiceID = "support" // Support. SwfServiceID = "swf" // Swf. TaggingServiceID = "tagging" // Tagging. + TranslateServiceID = "translate" // Translate. WafServiceID = "waf" // Waf. WafRegionalServiceID = "waf-regional" // WafRegional. WorkdocsServiceID = "workdocs" // Workdocs. + WorkmailServiceID = "workmail" // Workmail. WorkspacesServiceID = "workspaces" // Workspaces. XrayServiceID = "xray" // Xray. ) @@ -220,6 +247,9 @@ var awsPartition = partition{ "eu-west-2": region{ Description: "EU (London)", }, + "eu-west-3": region{ + Description: "EU (Paris)", + }, "sa-east-1": region{ Description: "South America (Sao Paulo)", }, @@ -237,6 +267,12 @@ var awsPartition = partition{ }, }, Services: services{ + "a4b": service{ + + Endpoints: endpoints{ + "us-east-1": endpoint{}, + }, + }, "acm": service{ Endpoints: endpoints{ @@ -249,6 +285,7 @@ var awsPartition = partition{ "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, "sa-east-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, @@ -256,6 +293,43 @@ var awsPartition = partition{ "us-west-2": endpoint{}, }, }, + "acm-pca": service{ + Defaults: endpoint{ + Protocols: []string{"https"}, + }, + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "api.mediatailor": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + }, + }, + "api.pricing": service{ + Defaults: endpoint{ + CredentialScope: credentialScope{ + Service: "pricing", + }, + }, + Endpoints: endpoints{ + "ap-south-1": endpoint{}, + "us-east-1": endpoint{}, + }, + }, "apigateway": service{ Endpoints: endpoints{ @@ -268,6 +342,7 @@ var awsPartition = partition{ "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, "sa-east-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, @@ -293,6 +368,7 @@ var awsPartition = partition{ "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, "sa-east-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, @@ -319,6 +395,8 @@ var awsPartition = partition{ Endpoints: endpoints{ "ap-northeast-1": endpoint{}, "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, @@ -339,6 +417,7 @@ var awsPartition = partition{ "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, "sa-east-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, @@ -346,17 +425,37 @@ var awsPartition = partition{ "us-west-2": endpoint{}, }, }, + "autoscaling-plans": service{ + Defaults: endpoint{ + Hostname: "autoscaling.{region}.amazonaws.com", + Protocols: []string{"http", "https"}, + CredentialScope: credentialScope{ + Service: "autoscaling-plans", + }, + }, + Endpoints: endpoints{ + "ap-southeast-1": endpoint{}, + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-2": endpoint{}, + }, + }, "batch": service{ Endpoints: endpoints{ "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, + "us-west-1": endpoint{}, "us-west-2": endpoint{}, }, }, @@ -373,11 +472,35 @@ var awsPartition = partition{ }, }, }, + "ce": service{ + PartitionEndpoint: "aws-global", + IsRegionalized: boxedFalse, + + Endpoints: endpoints{ + "aws-global": endpoint{ + Hostname: "ce.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + }, + }, + "cloud9": service{ + + Endpoints: endpoints{ + "ap-southeast-1": endpoint{}, + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-2": endpoint{}, + }, + }, "clouddirectory": service{ Endpoints: endpoints{ "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, + "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, "us-east-1": endpoint{}, @@ -397,6 +520,7 @@ var awsPartition = partition{ "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, "sa-east-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, @@ -434,12 +558,23 @@ var awsPartition = partition{ }, }, "cloudhsmv2": service{ - + Defaults: endpoint{ + CredentialScope: credentialScope{ + Service: "cloudhsm", + }, + }, Endpoints: endpoints{ - "eu-west-1": endpoint{}, - "us-east-1": endpoint{}, - "us-east-2": endpoint{}, - "us-west-2": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, }, }, "cloudsearch": service{ @@ -469,6 +604,7 @@ var awsPartition = partition{ "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, "sa-east-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, @@ -480,16 +616,44 @@ var awsPartition = partition{ Endpoints: endpoints{ "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, "ca-central-1": endpoint{}, "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "sa-east-1": endpoint{}, "us-east-1": endpoint{}, - "us-east-2": endpoint{}, - "us-west-1": endpoint{}, - "us-west-2": endpoint{}, + "us-east-1-fips": endpoint{ + Hostname: "codebuild-fips.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + "us-east-2": endpoint{}, + "us-east-2-fips": endpoint{ + Hostname: "codebuild-fips.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + }, + "us-west-1": endpoint{}, + "us-west-1-fips": endpoint{ + Hostname: "codebuild-fips.us-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + }, + "us-west-2": endpoint{}, + "us-west-2-fips": endpoint{ + Hostname: "codebuild-fips.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + }, }, }, "codecommit": service{ @@ -504,6 +668,7 @@ var awsPartition = partition{ "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, "sa-east-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, @@ -523,6 +688,7 @@ var awsPartition = partition{ "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, "sa-east-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, @@ -542,6 +708,7 @@ var awsPartition = partition{ "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, "sa-east-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, @@ -552,8 +719,11 @@ var awsPartition = partition{ "codestar": service{ Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, @@ -611,6 +781,17 @@ var awsPartition = partition{ "us-west-2": endpoint{}, }, }, + "comprehend": service{ + Defaults: endpoint{ + Protocols: []string{"https"}, + }, + Endpoints: endpoints{ + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-2": endpoint{}, + }, + }, "config": service{ Endpoints: endpoints{ @@ -623,6 +804,7 @@ var awsPartition = partition{ "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, "sa-east-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, @@ -646,6 +828,21 @@ var awsPartition = partition{ "us-west-2": endpoint{}, }, }, + "dax": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-west-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, "devicefarm": service{ Endpoints: endpoints{ @@ -664,6 +861,7 @@ var awsPartition = partition{ "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, "sa-east-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, @@ -689,6 +887,7 @@ var awsPartition = partition{ "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, "sa-east-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, @@ -701,6 +900,7 @@ var awsPartition = partition{ Endpoints: endpoints{ "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, "ca-central-1": endpoint{}, @@ -710,6 +910,7 @@ var awsPartition = partition{ "sa-east-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, + "us-west-1": endpoint{}, "us-west-2": endpoint{}, }, }, @@ -727,6 +928,7 @@ var awsPartition = partition{ "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, "local": endpoint{ Hostname: "localhost:8000", Protocols: []string{"http"}, @@ -755,6 +957,7 @@ var awsPartition = partition{ "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, "sa-east-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, @@ -777,12 +980,16 @@ var awsPartition = partition{ Endpoints: endpoints{ "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, "ca-central-1": endpoint{}, "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "sa-east-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, "us-west-1": endpoint{}, @@ -793,12 +1000,16 @@ var awsPartition = partition{ Endpoints: endpoints{ "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, "ca-central-1": endpoint{}, "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "sa-east-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, "us-west-1": endpoint{}, @@ -817,6 +1028,7 @@ var awsPartition = partition{ "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, "sa-east-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, @@ -836,6 +1048,7 @@ var awsPartition = partition{ "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, "sa-east-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, @@ -846,11 +1059,13 @@ var awsPartition = partition{ "elasticfilesystem": service{ Endpoints: endpoints{ + "ap-northeast-2": endpoint{}, "ap-southeast-2": endpoint{}, "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, + "us-west-1": endpoint{}, "us-west-2": endpoint{}, }, }, @@ -868,6 +1083,7 @@ var awsPartition = partition{ "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, "sa-east-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, @@ -892,6 +1108,7 @@ var awsPartition = partition{ }, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, "sa-east-1": endpoint{}, "us-east-1": endpoint{ SSLCommonName: "{service}.{region}.{dnsSuffix}", @@ -944,6 +1161,7 @@ var awsPartition = partition{ "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, "sa-east-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, @@ -963,6 +1181,7 @@ var awsPartition = partition{ "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, "sa-east-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, @@ -974,13 +1193,25 @@ var awsPartition = partition{ Endpoints: endpoints{ "ap-northeast-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, + "us-west-1": endpoint{}, "us-west-2": endpoint{}, }, }, + "fms": service{ + Defaults: endpoint{ + Protocols: []string{"https"}, + }, + Endpoints: endpoints{ + "us-east-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, "gamelift": service{ Endpoints: endpoints{ @@ -1014,6 +1245,7 @@ var awsPartition = partition{ "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, "us-west-1": endpoint{}, @@ -1023,9 +1255,17 @@ var awsPartition = partition{ "glue": service{ Endpoints: endpoints{ - "us-east-1": endpoint{}, - "us-east-2": endpoint{}, - "us-west-2": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-2": endpoint{}, }, }, "greengrass": service{ @@ -1041,6 +1281,29 @@ var awsPartition = partition{ "us-west-2": endpoint{}, }, }, + "guardduty": service{ + IsRegionalized: boxedTrue, + Defaults: endpoint{ + Protocols: []string{"https"}, + }, + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, "health": service{ Endpoints: endpoints{ @@ -1082,8 +1345,10 @@ var awsPartition = partition{ "ap-northeast-2": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-2": endpoint{}, + "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "us-east-1": endpoint{}, + "us-east-2": endpoint{}, "us-west-1": endpoint{}, "us-west-2": endpoint{}, }, @@ -1097,6 +1362,7 @@ var awsPartition = partition{ Endpoints: endpoints{ "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, "eu-central-1": endpoint{}, @@ -1119,6 +1385,7 @@ var awsPartition = partition{ "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, "sa-east-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, @@ -1134,6 +1401,16 @@ var awsPartition = partition{ "us-west-2": endpoint{}, }, }, + "kinesisvideo": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, "kms": service{ Endpoints: endpoints{ @@ -1146,6 +1423,7 @@ var awsPartition = partition{ "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, "sa-east-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, @@ -1165,6 +1443,7 @@ var awsPartition = partition{ "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, "sa-east-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, @@ -1176,12 +1455,15 @@ var awsPartition = partition{ Endpoints: endpoints{ "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, "us-west-2": endpoint{}, @@ -1199,6 +1481,7 @@ var awsPartition = partition{ "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, "sa-east-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, @@ -1219,6 +1502,64 @@ var awsPartition = partition{ "us-east-1": endpoint{}, }, }, + "mediaconvert": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "medialive": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "mediapackage": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-3": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "mediastore": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, "metering.marketplace": service{ Defaults: endpoint{ CredentialScope: credentialScope{ @@ -1235,6 +1576,7 @@ var awsPartition = partition{ "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, "sa-east-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, @@ -1261,7 +1603,9 @@ var awsPartition = partition{ }, }, Endpoints: endpoints{ + "eu-west-1": endpoint{}, "us-east-1": endpoint{}, + "us-west-2": endpoint{}, }, }, "monitoring": service{ @@ -1278,6 +1622,7 @@ var awsPartition = partition{ "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, "sa-east-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, @@ -1295,6 +1640,35 @@ var awsPartition = partition{ "us-east-1": endpoint{}, }, }, + "neptune": service{ + + Endpoints: endpoints{ + "eu-west-1": endpoint{ + Hostname: "rds.eu-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "eu-west-1", + }, + }, + "us-east-1": endpoint{ + Hostname: "rds.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + "us-east-2": endpoint{ + Hostname: "rds.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + }, + "us-west-2": endpoint{ + Hostname: "rds.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + }, + }, + }, "opsworks": service{ Endpoints: endpoints{ @@ -1303,9 +1677,11 @@ var awsPartition = partition{ "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, "sa-east-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, @@ -1316,9 +1692,15 @@ var awsPartition = partition{ "opsworks-cm": service{ Endpoints: endpoints{ - "eu-west-1": endpoint{}, - "us-east-1": endpoint{}, - "us-west-2": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, }, }, "organizations": service{ @@ -1347,10 +1729,21 @@ var awsPartition = partition{ "polly": service{ Endpoints: endpoints{ - "eu-west-1": endpoint{}, - "us-east-1": endpoint{}, - "us-east-2": endpoint{}, - "us-west-2": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, }, }, "rds": service{ @@ -1365,6 +1758,7 @@ var awsPartition = partition{ "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, "sa-east-1": endpoint{}, "us-east-1": endpoint{ SSLCommonName: "{service}.{dnsSuffix}", @@ -1386,6 +1780,7 @@ var awsPartition = partition{ "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, "sa-east-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, @@ -1396,9 +1791,31 @@ var awsPartition = partition{ "rekognition": service{ Endpoints: endpoints{ - "eu-west-1": endpoint{}, - "us-east-1": endpoint{}, - "us-west-2": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "resource-groups": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, }, }, "route53": service{ @@ -1427,7 +1844,19 @@ var awsPartition = partition{ }, }, Endpoints: endpoints{ + "eu-west-1": endpoint{}, "us-east-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "runtime.sagemaker": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-2": endpoint{}, }, }, "s3": service{ @@ -1442,26 +1871,27 @@ var awsPartition = partition{ }, Endpoints: endpoints{ "ap-northeast-1": endpoint{ - Hostname: "s3-ap-northeast-1.amazonaws.com", + Hostname: "s3.ap-northeast-1.amazonaws.com", SignatureVersions: []string{"s3", "s3v4"}, }, "ap-northeast-2": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{ - Hostname: "s3-ap-southeast-1.amazonaws.com", + Hostname: "s3.ap-southeast-1.amazonaws.com", SignatureVersions: []string{"s3", "s3v4"}, }, "ap-southeast-2": endpoint{ - Hostname: "s3-ap-southeast-2.amazonaws.com", + Hostname: "s3.ap-southeast-2.amazonaws.com", SignatureVersions: []string{"s3", "s3v4"}, }, "ca-central-1": endpoint{}, "eu-central-1": endpoint{}, "eu-west-1": endpoint{ - Hostname: "s3-eu-west-1.amazonaws.com", + Hostname: "s3.eu-west-1.amazonaws.com", SignatureVersions: []string{"s3", "s3v4"}, }, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, "s3-external-1": endpoint{ Hostname: "s3-external-1.amazonaws.com", SignatureVersions: []string{"s3", "s3v4"}, @@ -1470,7 +1900,7 @@ var awsPartition = partition{ }, }, "sa-east-1": endpoint{ - Hostname: "s3-sa-east-1.amazonaws.com", + Hostname: "s3.sa-east-1.amazonaws.com", SignatureVersions: []string{"s3", "s3v4"}, }, "us-east-1": endpoint{ @@ -1479,15 +1909,25 @@ var awsPartition = partition{ }, "us-east-2": endpoint{}, "us-west-1": endpoint{ - Hostname: "s3-us-west-1.amazonaws.com", + Hostname: "s3.us-west-1.amazonaws.com", SignatureVersions: []string{"s3", "s3v4"}, }, "us-west-2": endpoint{ - Hostname: "s3-us-west-2.amazonaws.com", + Hostname: "s3.us-west-2.amazonaws.com", SignatureVersions: []string{"s3", "s3v4"}, }, }, }, + "sagemaker": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-2": endpoint{}, + }, + }, "sdb": service{ Defaults: endpoint{ Protocols: []string{"http", "https"}, @@ -1506,22 +1946,103 @@ var awsPartition = partition{ "us-west-2": endpoint{}, }, }, - "servicecatalog": service{ + "secretsmanager": service{ Endpoints: endpoints{ "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, "ca-central-1": endpoint{}, "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "sa-east-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, + "us-west-1": endpoint{}, "us-west-2": endpoint{}, }, }, + "serverlessrepo": service{ + Defaults: endpoint{ + Protocols: []string{"https"}, + }, + Endpoints: endpoints{ + "ap-northeast-1": endpoint{ + Protocols: []string{"https"}, + }, + "ap-northeast-2": endpoint{ + Protocols: []string{"https"}, + }, + "ap-south-1": endpoint{ + Protocols: []string{"https"}, + }, + "ap-southeast-1": endpoint{ + Protocols: []string{"https"}, + }, + "ap-southeast-2": endpoint{ + Protocols: []string{"https"}, + }, + "ca-central-1": endpoint{ + Protocols: []string{"https"}, + }, + "eu-central-1": endpoint{ + Protocols: []string{"https"}, + }, + "eu-west-1": endpoint{ + Protocols: []string{"https"}, + }, + "eu-west-2": endpoint{ + Protocols: []string{"https"}, + }, + "sa-east-1": endpoint{ + Protocols: []string{"https"}, + }, + "us-east-1": endpoint{ + Protocols: []string{"https"}, + }, + "us-east-2": endpoint{ + Protocols: []string{"https"}, + }, + "us-west-1": endpoint{ + Protocols: []string{"https"}, + }, + "us-west-2": endpoint{ + Protocols: []string{"https"}, + }, + }, + }, + "servicecatalog": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "servicediscovery": service{ + + Endpoints: endpoints{ + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-2": endpoint{}, + }, + }, "shield": service{ IsRegionalized: boxedFalse, Defaults: endpoint{ @@ -1538,11 +2059,17 @@ var awsPartition = partition{ "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "sa-east-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, + "us-west-1": endpoint{}, "us-west-2": endpoint{}, }, }, @@ -1551,10 +2078,13 @@ var awsPartition = partition{ Endpoints: endpoints{ "ap-northeast-1": endpoint{}, "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, "sa-east-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, @@ -1576,6 +2106,7 @@ var awsPartition = partition{ "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, "sa-east-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, @@ -1598,6 +2129,11 @@ var awsPartition = partition{ "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "fips-us-east-1": endpoint{}, + "fips-us-east-2": endpoint{}, + "fips-us-west-1": endpoint{}, + "fips-us-west-2": endpoint{}, "sa-east-1": endpoint{}, "us-east-1": endpoint{ SSLCommonName: "queue.{dnsSuffix}", @@ -1619,6 +2155,7 @@ var awsPartition = partition{ "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, "sa-east-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, @@ -1630,12 +2167,16 @@ var awsPartition = partition{ Endpoints: endpoints{ "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, + "us-west-1": endpoint{}, "us-west-2": endpoint{}, }, }, @@ -1651,6 +2192,7 @@ var awsPartition = partition{ "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, "sa-east-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, @@ -1675,6 +2217,7 @@ var awsPartition = partition{ "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, "local": endpoint{ Hostname: "localhost:8000", Protocols: []string{"http"}, @@ -1713,6 +2256,7 @@ var awsPartition = partition{ "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, "sa-east-1": endpoint{}, "us-east-1": endpoint{}, "us-east-1-fips": endpoint{ @@ -1762,6 +2306,7 @@ var awsPartition = partition{ "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, "sa-east-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, @@ -1781,6 +2326,7 @@ var awsPartition = partition{ "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, "sa-east-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, @@ -1788,6 +2334,17 @@ var awsPartition = partition{ "us-west-2": endpoint{}, }, }, + "translate": service{ + Defaults: endpoint{ + Protocols: []string{"https"}, + }, + Endpoints: endpoints{ + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-2": endpoint{}, + }, + }, "waf": service{ PartitionEndpoint: "aws-global", IsRegionalized: boxedFalse, @@ -1805,8 +2362,11 @@ var awsPartition = partition{ Endpoints: endpoints{ "ap-northeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "us-east-1": endpoint{}, + "us-east-2": endpoint{}, "us-west-1": endpoint{}, "us-west-2": endpoint{}, }, @@ -1822,15 +2382,28 @@ var awsPartition = partition{ "us-west-2": endpoint{}, }, }, + "workmail": service{ + Defaults: endpoint{ + Protocols: []string{"https"}, + }, + Endpoints: endpoints{ + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, "workspaces": service{ Endpoints: endpoints{ "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, + "sa-east-1": endpoint{}, "us-east-1": endpoint{}, "us-west-2": endpoint{}, }, @@ -1881,8 +2454,17 @@ var awscnPartition = partition{ "cn-north-1": region{ Description: "China (Beijing)", }, + "cn-northwest-1": region{ + Description: "China (Ningxia)", + }, }, Services: services{ + "apigateway": service{ + + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + }, + }, "application-autoscaling": service{ Defaults: endpoint{ Hostname: "autoscaling.{region}.amazonaws.com", @@ -1892,7 +2474,8 @@ var awscnPartition = partition{ }, }, Endpoints: endpoints{ - "cn-north-1": endpoint{}, + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, }, }, "autoscaling": service{ @@ -1900,23 +2483,33 @@ var awscnPartition = partition{ Protocols: []string{"http", "https"}, }, Endpoints: endpoints{ - "cn-north-1": endpoint{}, + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, }, }, "cloudformation": service{ Endpoints: endpoints{ - "cn-north-1": endpoint{}, + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, }, }, "cloudtrail": service{ Endpoints: endpoints{ - "cn-north-1": endpoint{}, + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, }, }, "codedeploy": service{ + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "cognito-identity": service{ + Endpoints: endpoints{ "cn-north-1": endpoint{}, }, @@ -1924,13 +2517,15 @@ var awscnPartition = partition{ "config": service{ Endpoints: endpoints{ - "cn-north-1": endpoint{}, + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, }, }, "directconnect": service{ Endpoints: endpoints{ - "cn-north-1": endpoint{}, + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, }, }, "dynamodb": service{ @@ -1938,7 +2533,8 @@ var awscnPartition = partition{ Protocols: []string{"http", "https"}, }, Endpoints: endpoints{ - "cn-north-1": endpoint{}, + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, }, }, "ec2": service{ @@ -1946,7 +2542,8 @@ var awscnPartition = partition{ Protocols: []string{"http", "https"}, }, Endpoints: endpoints{ - "cn-north-1": endpoint{}, + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, }, }, "ec2metadata": service{ @@ -1963,25 +2560,29 @@ var awscnPartition = partition{ "ecr": service{ Endpoints: endpoints{ - "cn-north-1": endpoint{}, + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, }, }, "ecs": service{ Endpoints: endpoints{ - "cn-north-1": endpoint{}, + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, }, }, "elasticache": service{ Endpoints: endpoints{ - "cn-north-1": endpoint{}, + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, }, }, "elasticbeanstalk": service{ Endpoints: endpoints{ - "cn-north-1": endpoint{}, + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, }, }, "elasticloadbalancing": service{ @@ -1989,7 +2590,8 @@ var awscnPartition = partition{ Protocols: []string{"https"}, }, Endpoints: endpoints{ - "cn-north-1": endpoint{}, + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, }, }, "elasticmapreduce": service{ @@ -1997,13 +2599,21 @@ var awscnPartition = partition{ Protocols: []string{"http", "https"}, }, Endpoints: endpoints{ - "cn-north-1": endpoint{}, + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "es": service{ + + Endpoints: endpoints{ + "cn-northwest-1": endpoint{}, }, }, "events": service{ Endpoints: endpoints{ - "cn-north-1": endpoint{}, + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, }, }, "glacier": service{ @@ -2011,7 +2621,8 @@ var awscnPartition = partition{ Protocols: []string{"http", "https"}, }, Endpoints: endpoints{ - "cn-north-1": endpoint{}, + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, }, }, "iam": service{ @@ -2039,6 +2650,13 @@ var awscnPartition = partition{ }, "kinesis": service{ + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "lambda": service{ + Endpoints: endpoints{ "cn-north-1": endpoint{}, }, @@ -2046,7 +2664,8 @@ var awscnPartition = partition{ "logs": service{ Endpoints: endpoints{ - "cn-north-1": endpoint{}, + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, }, }, "monitoring": service{ @@ -2054,19 +2673,22 @@ var awscnPartition = partition{ Protocols: []string{"http", "https"}, }, Endpoints: endpoints{ - "cn-north-1": endpoint{}, + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, }, }, "rds": service{ Endpoints: endpoints{ - "cn-north-1": endpoint{}, + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, }, }, "redshift": service{ Endpoints: endpoints{ - "cn-north-1": endpoint{}, + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, }, }, "s3": service{ @@ -2075,7 +2697,15 @@ var awscnPartition = partition{ SignatureVersions: []string{"s3v4"}, }, Endpoints: endpoints{ - "cn-north-1": endpoint{}, + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "sms": service{ + + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, }, }, "snowball": service{ @@ -2089,7 +2719,8 @@ var awscnPartition = partition{ Protocols: []string{"http", "https"}, }, Endpoints: endpoints{ - "cn-north-1": endpoint{}, + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, }, }, "sqs": service{ @@ -2098,13 +2729,15 @@ var awscnPartition = partition{ Protocols: []string{"http", "https"}, }, Endpoints: endpoints{ - "cn-north-1": endpoint{}, + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, }, }, "ssm": service{ Endpoints: endpoints{ - "cn-north-1": endpoint{}, + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, }, }, "storagegateway": service{ @@ -2121,25 +2754,29 @@ var awscnPartition = partition{ }, }, Endpoints: endpoints{ - "cn-north-1": endpoint{}, + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, }, }, "sts": service{ Endpoints: endpoints{ - "cn-north-1": endpoint{}, + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, }, }, "swf": service{ Endpoints: endpoints{ - "cn-north-1": endpoint{}, + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, }, }, "tagging": service{ Endpoints: endpoints{ - "cn-north-1": endpoint{}, + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, }, }, }, @@ -2203,6 +2840,16 @@ var awsusgovPartition = partition{ "us-gov-west-1": endpoint{}, }, }, + "cloudhsmv2": service{ + Defaults: endpoint{ + CredentialScope: credentialScope{ + Service: "cloudhsm", + }, + }, + Endpoints: endpoints{ + "us-gov-west-1": endpoint{}, + }, + }, "cloudtrail": service{ Endpoints: endpoints{ @@ -2227,10 +2874,22 @@ var awsusgovPartition = partition{ "us-gov-west-1": endpoint{}, }, }, + "dms": service{ + + Endpoints: endpoints{ + "us-gov-west-1": endpoint{}, + }, + }, "dynamodb": service{ Endpoints: endpoints{ "us-gov-west-1": endpoint{}, + "us-gov-west-1-fips": endpoint{ + Hostname: "dynamodb.us-gov-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-west-1", + }, + }, }, }, "ec2": service{ @@ -2250,12 +2909,30 @@ var awsusgovPartition = partition{ }, }, }, + "ecr": service{ + + Endpoints: endpoints{ + "us-gov-west-1": endpoint{}, + }, + }, + "ecs": service{ + + Endpoints: endpoints{ + "us-gov-west-1": endpoint{}, + }, + }, "elasticache": service{ Endpoints: endpoints{ "us-gov-west-1": endpoint{}, }, }, + "elasticbeanstalk": service{ + + Endpoints: endpoints{ + "us-gov-west-1": endpoint{}, + }, + }, "elasticloadbalancing": service{ Endpoints: endpoints{ @@ -2272,6 +2949,12 @@ var awsusgovPartition = partition{ }, }, }, + "es": service{ + + Endpoints: endpoints{ + "us-gov-west-1": endpoint{}, + }, + }, "events": service{ Endpoints: endpoints{ @@ -2323,12 +3006,28 @@ var awsusgovPartition = partition{ "us-gov-west-1": endpoint{}, }, }, + "metering.marketplace": service{ + Defaults: endpoint{ + CredentialScope: credentialScope{ + Service: "aws-marketplace", + }, + }, + Endpoints: endpoints{ + "us-gov-west-1": endpoint{}, + }, + }, "monitoring": service{ Endpoints: endpoints{ "us-gov-west-1": endpoint{}, }, }, + "polly": service{ + + Endpoints: endpoints{ + "us-gov-west-1": endpoint{}, + }, + }, "rds": service{ Endpoints: endpoints{ @@ -2359,7 +3058,7 @@ var awsusgovPartition = partition{ }, }, "us-gov-west-1": endpoint{ - Hostname: "s3-us-gov-west-1.amazonaws.com", + Hostname: "s3.us-gov-west-1.amazonaws.com", Protocols: []string{"http", "https"}, }, }, @@ -2399,6 +3098,12 @@ var awsusgovPartition = partition{ "us-gov-west-1": endpoint{}, }, }, + "storagegateway": service{ + + Endpoints: endpoints{ + "us-gov-west-1": endpoint{}, + }, + }, "streams.dynamodb": service{ Defaults: endpoint{ CredentialScope: credentialScope{ @@ -2407,6 +3112,12 @@ var awsusgovPartition = partition{ }, Endpoints: endpoints{ "us-gov-west-1": endpoint{}, + "us-gov-west-1-fips": endpoint{ + Hostname: "dynamodb.us-gov-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-west-1", + }, + }, }, }, "sts": service{ @@ -2417,6 +3128,12 @@ var awsusgovPartition = partition{ }, "swf": service{ + Endpoints: endpoints{ + "us-gov-west-1": endpoint{}, + }, + }, + "tagging": service{ + Endpoints: endpoints{ "us-gov-west-1": endpoint{}, }, diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/endpoints/endpoints.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/endpoints/endpoints.go index 9c3eedb48d..e29c095121 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/endpoints/endpoints.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/endpoints/endpoints.go @@ -206,10 +206,11 @@ func (p Partition) EndpointFor(service, region string, opts ...func(*Options)) ( // enumerating over the regions in a partition. func (p Partition) Regions() map[string]Region { rs := map[string]Region{} - for id := range p.p.Regions { + for id, r := range p.p.Regions { rs[id] = Region{ - id: id, - p: p.p, + id: id, + desc: r.Description, + p: p.p, } } @@ -240,6 +241,10 @@ type Region struct { // ID returns the region's identifier. func (r Region) ID() string { return r.id } +// Description returns the region's description. The region description +// is free text, it can be empty, and it may change between SDK releases. +func (r Region) Description() string { return r.desc } + // ResolveEndpoint resolves an endpoint from the context of the region given // a service. See Partition.EndpointFor for usage and errors that can be returned. func (r Region) ResolveEndpoint(service string, opts ...func(*Options)) (ResolvedEndpoint, error) { @@ -284,10 +289,11 @@ func (s Service) ResolveEndpoint(region string, opts ...func(*Options)) (Resolve func (s Service) Regions() map[string]Region { rs := map[string]Region{} for id := range s.p.Services[s.id].Endpoints { - if _, ok := s.p.Regions[id]; ok { + if r, ok := s.p.Regions[id]; ok { rs[id] = Region{ - id: id, - p: s.p, + id: id, + desc: r.Description, + p: s.p, } } } @@ -347,6 +353,10 @@ type ResolvedEndpoint struct { // The service name that should be used for signing requests. SigningName string + // States that the signing name for this endpoint was derived from metadata + // passed in, but was not explicitly modeled. + SigningNameDerived bool + // The signing method that should be used for signing requests. SigningMethod string } diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/endpoints/v3model.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/endpoints/v3model.go index 13d968a249..ff6f76db6e 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/endpoints/v3model.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/endpoints/v3model.go @@ -226,16 +226,20 @@ func (e endpoint) resolve(service, region, dnsSuffix string, defs []endpoint, op if len(signingRegion) == 0 { signingRegion = region } + signingName := e.CredentialScope.Service + var signingNameDerived bool if len(signingName) == 0 { signingName = service + signingNameDerived = true } return ResolvedEndpoint{ - URL: u, - SigningRegion: signingRegion, - SigningName: signingName, - SigningMethod: getByPriority(e.SignatureVersions, signerPriority, defaultSigner), + URL: u, + SigningRegion: signingRegion, + SigningName: signingName, + SigningNameDerived: signingNameDerived, + SigningMethod: getByPriority(e.SignatureVersions, signerPriority, defaultSigner), } } diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/logger.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/logger.go index 3babb5abdb..6ed15b2ecc 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/logger.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/logger.go @@ -71,6 +71,12 @@ const ( // LogDebugWithRequestErrors states the SDK should log when service requests fail // to build, send, validate, or unmarshal. LogDebugWithRequestErrors + + // LogDebugWithEventStreamBody states the SDK should log EventStream + // request and response bodys. This should be used to log the EventStream + // wire unmarshaled message content of requests and responses made while + // using the SDK Will also enable LogDebug. + LogDebugWithEventStreamBody ) // A Logger is a minimalistic interface for the SDK to log messages to. Should diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/request/handlers.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/request/handlers.go index 802ac88ad5..605a72d3c9 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/request/handlers.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/request/handlers.go @@ -14,6 +14,7 @@ type Handlers struct { Send HandlerList ValidateResponse HandlerList Unmarshal HandlerList + UnmarshalStream HandlerList UnmarshalMeta HandlerList UnmarshalError HandlerList Retry HandlerList @@ -30,6 +31,7 @@ func (h *Handlers) Copy() Handlers { Send: h.Send.copy(), ValidateResponse: h.ValidateResponse.copy(), Unmarshal: h.Unmarshal.copy(), + UnmarshalStream: h.UnmarshalStream.copy(), UnmarshalError: h.UnmarshalError.copy(), UnmarshalMeta: h.UnmarshalMeta.copy(), Retry: h.Retry.copy(), @@ -45,6 +47,7 @@ func (h *Handlers) Clear() { h.Send.Clear() h.Sign.Clear() h.Unmarshal.Clear() + h.UnmarshalStream.Clear() h.UnmarshalMeta.Clear() h.UnmarshalError.Clear() h.ValidateResponse.Clear() @@ -172,6 +175,21 @@ func (l *HandlerList) SwapNamed(n NamedHandler) (swapped bool) { return swapped } +// Swap will swap out all handlers matching the name passed in. The matched +// handlers will be swapped in. True is returned if the handlers were swapped. +func (l *HandlerList) Swap(name string, replace NamedHandler) bool { + var swapped bool + + for i := 0; i < len(l.list); i++ { + if l.list[i].Name == name { + l.list[i] = replace + swapped = true + } + } + + return swapped +} + // SetBackNamed will replace the named handler if it exists in the handler list. // If the handler does not exist the handler will be added to the end of the list. func (l *HandlerList) SetBackNamed(n NamedHandler) { diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/request/offset_reader.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/request/offset_reader.go index 02f07f4a46..b0c2ef4fe6 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/request/offset_reader.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/request/offset_reader.go @@ -3,6 +3,8 @@ package request import ( "io" "sync" + + "github.com/aws/aws-sdk-go/internal/sdkio" ) // offsetReader is a thread-safe io.ReadCloser to prevent racing @@ -15,7 +17,7 @@ type offsetReader struct { func newOffsetReader(buf io.ReadSeeker, offset int64) *offsetReader { reader := &offsetReader{} - buf.Seek(offset, 0) + buf.Seek(offset, sdkio.SeekStart) reader.buf = buf return reader diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/request/request.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/request/request.go index 911c058eef..75f0fe0778 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/request/request.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/request/request.go @@ -14,6 +14,7 @@ import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/awserr" "github.com/aws/aws-sdk-go/aws/client/metadata" + "github.com/aws/aws-sdk-go/internal/sdkio" ) const ( @@ -28,6 +29,10 @@ const ( // during body reads. ErrCodeResponseTimeout = "ResponseTimeout" + // ErrCodeInvalidPresignExpire is returned when the expire time provided to + // presign is invalid + ErrCodeInvalidPresignExpire = "InvalidPresignExpireError" + // CanceledErrorCode is the error code that will be returned by an // API request that was canceled. Requests given a aws.Context may // return this error when canceled. @@ -41,8 +46,8 @@ type Request struct { Handlers Handlers Retryer + AttemptTime time.Time Time time.Time - ExpireTime time.Duration Operation *Operation HTTPRequest *http.Request HTTPResponse *http.Response @@ -60,6 +65,11 @@ type Request struct { LastSignedAt time.Time DisableFollowRedirects bool + // A value greater than 0 instructs the request to be signed as Presigned URL + // You should not set this field directly. Instead use Request's + // Presign or PresignRequest methods. + ExpireTime time.Duration + context aws.Context built bool @@ -104,12 +114,15 @@ func New(cfg aws.Config, clientInfo metadata.ClientInfo, handlers Handlers, err = awserr.New("InvalidEndpointURL", "invalid endpoint uri", err) } + SanitizeHostForHeader(httpReq) + r := &Request{ Config: cfg, ClientInfo: clientInfo, Handlers: handlers.Copy(), Retryer: retryer, + AttemptTime: time.Now(), Time: time.Now(), ExpireTime: 0, Operation: operation, @@ -214,6 +227,9 @@ func (r *Request) SetContext(ctx aws.Context) { // WillRetry returns if the request's can be retried. func (r *Request) WillRetry() bool { + if !aws.IsReaderSeekable(r.Body) && r.HTTPRequest.Body != NoBody { + return false + } return r.Error != nil && aws.BoolValue(r.Retryable) && r.RetryCount < r.MaxRetries() } @@ -245,45 +261,70 @@ func (r *Request) SetStringBody(s string) { // SetReaderBody will set the request's body reader. func (r *Request) SetReaderBody(reader io.ReadSeeker) { r.Body = reader + r.BodyStart, _ = reader.Seek(0, sdkio.SeekCurrent) // Get the Bodies current offset. r.ResetBody() } // Presign returns the request's signed URL. Error will be returned // if the signing fails. -func (r *Request) Presign(expireTime time.Duration) (string, error) { - r.ExpireTime = expireTime +// +// It is invalid to create a presigned URL with a expire duration 0 or less. An +// error is returned if expire duration is 0 or less. +func (r *Request) Presign(expire time.Duration) (string, error) { + r = r.copy() + + // Presign requires all headers be hoisted. There is no way to retrieve + // the signed headers not hoisted without this. Making the presigned URL + // useless. r.NotHoist = false - if r.Operation.BeforePresignFn != nil { - r = r.copy() - err := r.Operation.BeforePresignFn(r) - if err != nil { - return "", err - } - } - - r.Sign() - if r.Error != nil { - return "", r.Error - } - return r.HTTPRequest.URL.String(), nil + u, _, err := getPresignedURL(r, expire) + return u, err } // PresignRequest behaves just like presign, with the addition of returning a // set of headers that were signed. // +// It is invalid to create a presigned URL with a expire duration 0 or less. An +// error is returned if expire duration is 0 or less. +// // Returns the URL string for the API operation with signature in the query string, // and the HTTP headers that were included in the signature. These headers must // be included in any HTTP request made with the presigned URL. // // To prevent hoisting any headers to the query string set NotHoist to true on // this Request value prior to calling PresignRequest. -func (r *Request) PresignRequest(expireTime time.Duration) (string, http.Header, error) { - r.ExpireTime = expireTime - r.Sign() - if r.Error != nil { - return "", nil, r.Error +func (r *Request) PresignRequest(expire time.Duration) (string, http.Header, error) { + r = r.copy() + return getPresignedURL(r, expire) +} + +// IsPresigned returns true if the request represents a presigned API url. +func (r *Request) IsPresigned() bool { + return r.ExpireTime != 0 +} + +func getPresignedURL(r *Request, expire time.Duration) (string, http.Header, error) { + if expire <= 0 { + return "", nil, awserr.New( + ErrCodeInvalidPresignExpire, + "presigned URL requires an expire duration greater than 0", + nil, + ) } + + r.ExpireTime = expire + + if r.Operation.BeforePresignFn != nil { + if err := r.Operation.BeforePresignFn(r); err != nil { + return "", nil, err + } + } + + if err := r.Sign(); err != nil { + return "", nil, err + } + return r.HTTPRequest.URL.String(), r.SignedHeaderVals, nil } @@ -303,7 +344,7 @@ func debugLogReqError(r *Request, stage string, retrying bool, err error) { // Build will build the request's object so it can be signed and sent // to the service. Build will also validate all the request's parameters. -// Anny additional build Handlers set on this request will be run +// Any additional build Handlers set on this request will be run // in the order they were set. // // The request will only be built once. Multiple calls to build will have @@ -329,9 +370,9 @@ func (r *Request) Build() error { return r.Error } -// Sign will sign the request returning error if errors are encountered. +// Sign will sign the request, returning error if errors are encountered. // -// Send will build the request prior to signing. All Sign Handlers will +// Sign will build the request prior to signing. All Sign Handlers will // be executed in the order they were set. func (r *Request) Sign() error { r.Build() @@ -364,7 +405,7 @@ func (r *Request) getNextRequestBody() (io.ReadCloser, error) { // of the SDK if they used that field. // // Related golang/go#18257 - l, err := computeBodyLength(r.Body) + l, err := aws.SeekerLen(r.Body) if err != nil { return nil, awserr.New(ErrCodeSerialization, "failed to compute request body size", err) } @@ -382,7 +423,8 @@ func (r *Request) getNextRequestBody() (io.ReadCloser, error) { // Transfer-Encoding: chunked bodies for these methods. // // This would only happen if a aws.ReaderSeekerCloser was used with - // a io.Reader that was not also an io.Seeker. + // a io.Reader that was not also an io.Seeker, or did not implement + // Len() method. switch r.Operation.HTTPMethod { case "GET", "HEAD", "DELETE": body = NoBody @@ -394,49 +436,13 @@ func (r *Request) getNextRequestBody() (io.ReadCloser, error) { return body, nil } -// Attempts to compute the length of the body of the reader using the -// io.Seeker interface. If the value is not seekable because of being -// a ReaderSeekerCloser without an unerlying Seeker -1 will be returned. -// If no error occurs the length of the body will be returned. -func computeBodyLength(r io.ReadSeeker) (int64, error) { - seekable := true - // Determine if the seeker is actually seekable. ReaderSeekerCloser - // hides the fact that a io.Readers might not actually be seekable. - switch v := r.(type) { - case aws.ReaderSeekerCloser: - seekable = v.IsSeeker() - case *aws.ReaderSeekerCloser: - seekable = v.IsSeeker() - } - if !seekable { - return -1, nil - } - - curOffset, err := r.Seek(0, 1) - if err != nil { - return 0, err - } - - endOffset, err := r.Seek(0, 2) - if err != nil { - return 0, err - } - - _, err = r.Seek(curOffset, 0) - if err != nil { - return 0, err - } - - return endOffset - curOffset, nil -} - // GetBody will return an io.ReadSeeker of the Request's underlying // input body with a concurrency safe wrapper. func (r *Request) GetBody() io.ReadSeeker { return r.safeBody } -// Send will send the request returning error if errors are encountered. +// Send will send the request, returning error if errors are encountered. // // Send will sign the request prior to sending. All Send Handlers will // be executed in the order they were set. @@ -457,6 +463,7 @@ func (r *Request) Send() error { }() for { + r.AttemptTime = time.Now() if aws.BoolValue(r.Retryable) { if r.Config.LogLevel.Matches(aws.LogDebugWithRequestRetries) { r.Config.Logger.Log(fmt.Sprintf("DEBUG: Retrying Request %s/%s, attempt %d", @@ -579,3 +586,72 @@ func shouldRetryCancel(r *Request) bool { errStr != "net/http: request canceled while waiting for connection") } + +// SanitizeHostForHeader removes default port from host and updates request.Host +func SanitizeHostForHeader(r *http.Request) { + host := getHost(r) + port := portOnly(host) + if port != "" && isDefaultPort(r.URL.Scheme, port) { + r.Host = stripPort(host) + } +} + +// Returns host from request +func getHost(r *http.Request) string { + if r.Host != "" { + return r.Host + } + + return r.URL.Host +} + +// Hostname returns u.Host, without any port number. +// +// If Host is an IPv6 literal with a port number, Hostname returns the +// IPv6 literal without the square brackets. IPv6 literals may include +// a zone identifier. +// +// Copied from the Go 1.8 standard library (net/url) +func stripPort(hostport string) string { + colon := strings.IndexByte(hostport, ':') + if colon == -1 { + return hostport + } + if i := strings.IndexByte(hostport, ']'); i != -1 { + return strings.TrimPrefix(hostport[:i], "[") + } + return hostport[:colon] +} + +// Port returns the port part of u.Host, without the leading colon. +// If u.Host doesn't contain a port, Port returns an empty string. +// +// Copied from the Go 1.8 standard library (net/url) +func portOnly(hostport string) string { + colon := strings.IndexByte(hostport, ':') + if colon == -1 { + return "" + } + if i := strings.Index(hostport, "]:"); i != -1 { + return hostport[i+len("]:"):] + } + if strings.Contains(hostport, "]") { + return "" + } + return hostport[colon+len(":"):] +} + +// Returns true if the specified URI is using the standard port +// (i.e. port 80 for HTTP URIs or 443 for HTTPS URIs) +func isDefaultPort(scheme, port string) bool { + if port == "" { + return true + } + + lowerCaseScheme := strings.ToLower(scheme) + if (lowerCaseScheme == "http" && port == "80") || (lowerCaseScheme == "https" && port == "443") { + return true + } + + return false +} diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/request/request_1_7.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/request/request_1_7.go index 869b97a1a0..e36e468b7c 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/request/request_1_7.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/request/request_1_7.go @@ -21,7 +21,7 @@ func (noBody) WriteTo(io.Writer) (int64, error) { return 0, nil } var NoBody = noBody{} // ResetBody rewinds the request body back to its starting position, and -// set's the HTTP Request body reference. When the body is read prior +// sets the HTTP Request body reference. When the body is read prior // to being sent in the HTTP request it will need to be rewound. // // ResetBody will automatically be called by the SDK's build handler, but if diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/request/request_1_8.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/request/request_1_8.go index c32fc69bc5..7c6a8000f6 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/request/request_1_8.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/request/request_1_8.go @@ -11,7 +11,7 @@ import ( var NoBody = http.NoBody // ResetBody rewinds the request body back to its starting position, and -// set's the HTTP Request body reference. When the body is read prior +// sets the HTTP Request body reference. When the body is read prior // to being sent in the HTTP request it will need to be rewound. // // ResetBody will automatically be called by the SDK's build handler, but if diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/request/request_pagination.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/request/request_pagination.go index 59de6736b6..a633ed5acf 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/request/request_pagination.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/request/request_pagination.go @@ -35,8 +35,12 @@ type Pagination struct { // NewRequest should always be built from the same API operations. It is // undefined if different API operations are returned on subsequent calls. NewRequest func() (*Request, error) + // EndPageOnSameToken, when enabled, will allow the paginator to stop on + // token that are the same as its previous tokens. + EndPageOnSameToken bool started bool + prevTokens []interface{} nextTokens []interface{} err error @@ -49,7 +53,15 @@ type Pagination struct { // // Will always return true if Next has not been called yet. func (p *Pagination) HasNextPage() bool { - return !(p.started && len(p.nextTokens) == 0) + if !p.started { + return true + } + + hasNextPage := len(p.nextTokens) != 0 + if p.EndPageOnSameToken { + return hasNextPage && !awsutil.DeepEqual(p.nextTokens, p.prevTokens) + } + return hasNextPage } // Err returns the error Pagination encountered when retrieving the next page. @@ -96,6 +108,7 @@ func (p *Pagination) Next() bool { return false } + p.prevTokens = p.nextTokens p.nextTokens = req.nextPageTokens() p.curPage = req.Data @@ -142,13 +155,28 @@ func (r *Request) nextPageTokens() []interface{} { tokens := []interface{}{} tokenAdded := false for _, outToken := range r.Operation.OutputTokens { - v, _ := awsutil.ValuesAtPath(r.Data, outToken) - if len(v) > 0 { - tokens = append(tokens, v[0]) - tokenAdded = true - } else { + vs, _ := awsutil.ValuesAtPath(r.Data, outToken) + if len(vs) == 0 { tokens = append(tokens, nil) + continue } + v := vs[0] + + switch tv := v.(type) { + case *string: + if len(aws.StringValue(tv)) == 0 { + tokens = append(tokens, nil) + continue + } + case string: + if len(tv) == 0 { + tokens = append(tokens, nil) + continue + } + } + + tokenAdded = true + tokens = append(tokens, v) } if !tokenAdded { return nil diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/session/env_config.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/session/env_config.go index f1adcf4819..82e04d76cd 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/session/env_config.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/session/env_config.go @@ -5,6 +5,7 @@ import ( "strconv" "github.com/aws/aws-sdk-go/aws/credentials" + "github.com/aws/aws-sdk-go/aws/defaults" ) // EnvProviderName provides a name of the provider when config is loaded from environment. @@ -95,9 +96,23 @@ type envConfig struct { // // AWS_CA_BUNDLE=$HOME/my_custom_ca_bundle CustomCABundle string + + csmEnabled string + CSMEnabled bool + CSMPort string + CSMClientID string } var ( + csmEnabledEnvKey = []string{ + "AWS_CSM_ENABLED", + } + csmPortEnvKey = []string{ + "AWS_CSM_PORT", + } + csmClientIDEnvKey = []string{ + "AWS_CSM_CLIENT_ID", + } credAccessEnvKey = []string{ "AWS_ACCESS_KEY_ID", "AWS_ACCESS_KEY", @@ -156,6 +171,12 @@ func envConfigLoad(enableSharedConfig bool) envConfig { setFromEnvVal(&cfg.Creds.SecretAccessKey, credSecretEnvKey) setFromEnvVal(&cfg.Creds.SessionToken, credSessionEnvKey) + // CSM environment variables + setFromEnvVal(&cfg.csmEnabled, csmEnabledEnvKey) + setFromEnvVal(&cfg.CSMPort, csmPortEnvKey) + setFromEnvVal(&cfg.CSMClientID, csmClientIDEnvKey) + cfg.CSMEnabled = len(cfg.csmEnabled) > 0 + // Require logical grouping of credentials if len(cfg.Creds.AccessKeyID) == 0 || len(cfg.Creds.SecretAccessKey) == 0 { cfg.Creds = credentials.Value{} @@ -176,6 +197,13 @@ func envConfigLoad(enableSharedConfig bool) envConfig { setFromEnvVal(&cfg.SharedCredentialsFile, sharedCredsFileEnvKey) setFromEnvVal(&cfg.SharedConfigFile, sharedConfigFileEnvKey) + if len(cfg.SharedCredentialsFile) == 0 { + cfg.SharedCredentialsFile = defaults.SharedCredentialsFilename() + } + if len(cfg.SharedConfigFile) == 0 { + cfg.SharedConfigFile = defaults.SharedConfigFilename() + } + cfg.CustomCABundle = os.Getenv("AWS_CA_BUNDLE") return cfg diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/session/session.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/session/session.go index 9f75d5ac58..51f3055630 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/session/session.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/session/session.go @@ -15,6 +15,7 @@ import ( "github.com/aws/aws-sdk-go/aws/corehandlers" "github.com/aws/aws-sdk-go/aws/credentials" "github.com/aws/aws-sdk-go/aws/credentials/stscreds" + "github.com/aws/aws-sdk-go/aws/csm" "github.com/aws/aws-sdk-go/aws/defaults" "github.com/aws/aws-sdk-go/aws/endpoints" "github.com/aws/aws-sdk-go/aws/request" @@ -26,7 +27,7 @@ import ( // Sessions are safe to create service clients concurrently, but it is not safe // to mutate the Session concurrently. // -// The Session satisfies the service client's client.ClientConfigProvider. +// The Session satisfies the service client's client.ConfigProvider. type Session struct { Config *aws.Config Handlers request.Handlers @@ -58,7 +59,12 @@ func New(cfgs ...*aws.Config) *Session { envCfg := loadEnvConfig() if envCfg.EnableSharedConfig { - s, err := newSession(Options{}, envCfg, cfgs...) + var cfg aws.Config + cfg.MergeIn(cfgs...) + s, err := NewSessionWithOptions(Options{ + Config: cfg, + SharedConfigState: SharedConfigEnable, + }) if err != nil { // Old session.New expected all errors to be discovered when // a request is made, and would report the errors then. This @@ -76,10 +82,16 @@ func New(cfgs ...*aws.Config) *Session { r.Error = err }) } + return s } - return deprecatedNewSession(cfgs...) + s := deprecatedNewSession(cfgs...) + if envCfg.CSMEnabled { + enableCSM(&s.Handlers, envCfg.CSMClientID, envCfg.CSMPort, s.Config.Logger) + } + + return s } // NewSession returns a new Session created from SDK defaults, config files, @@ -243,13 +255,6 @@ func NewSessionWithOptions(opts Options) (*Session, error) { envCfg.EnableSharedConfig = true } - if len(envCfg.SharedCredentialsFile) == 0 { - envCfg.SharedCredentialsFile = defaults.SharedCredentialsFilename() - } - if len(envCfg.SharedConfigFile) == 0 { - envCfg.SharedConfigFile = defaults.SharedConfigFilename() - } - // Only use AWS_CA_BUNDLE if session option is not provided. if len(envCfg.CustomCABundle) != 0 && opts.CustomCABundle == nil { f, err := os.Open(envCfg.CustomCABundle) @@ -302,10 +307,22 @@ func deprecatedNewSession(cfgs ...*aws.Config) *Session { } initHandlers(s) - return s } +func enableCSM(handlers *request.Handlers, clientID string, port string, logger aws.Logger) { + logger.Log("Enabling CSM") + if len(port) == 0 { + port = csm.DefaultPort + } + + r, err := csm.Start(clientID, "127.0.0.1:"+port) + if err != nil { + return + } + r.InjectHandlers(handlers) +} + func newSession(opts Options, envCfg envConfig, cfgs ...*aws.Config) (*Session, error) { cfg := defaults.Config() handlers := defaults.Handlers() @@ -345,6 +362,9 @@ func newSession(opts Options, envCfg envConfig, cfgs ...*aws.Config) (*Session, } initHandlers(s) + if envCfg.CSMEnabled { + enableCSM(&s.Handlers, envCfg.CSMClientID, envCfg.CSMPort, s.Config.Logger) + } // Setup HTTP client with custom cert bundle if enabled if opts.CustomCABundle != nil { @@ -573,11 +593,12 @@ func (s *Session) clientConfigWithErr(serviceName string, cfgs ...*aws.Config) ( } return client.Config{ - Config: s.Config, - Handlers: s.Handlers, - Endpoint: resolved.URL, - SigningRegion: resolved.SigningRegion, - SigningName: resolved.SigningName, + Config: s.Config, + Handlers: s.Handlers, + Endpoint: resolved.URL, + SigningRegion: resolved.SigningRegion, + SigningNameDerived: resolved.SigningNameDerived, + SigningName: resolved.SigningName, }, err } @@ -597,10 +618,11 @@ func (s *Session) ClientConfigNoResolveEndpoint(cfgs ...*aws.Config) client.Conf } return client.Config{ - Config: s.Config, - Handlers: s.Handlers, - Endpoint: resolved.URL, - SigningRegion: resolved.SigningRegion, - SigningName: resolved.SigningName, + Config: s.Config, + Handlers: s.Handlers, + Endpoint: resolved.URL, + SigningRegion: resolved.SigningRegion, + SigningNameDerived: resolved.SigningNameDerived, + SigningName: resolved.SigningName, } } diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/signer/v4/v4.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/signer/v4/v4.go index 15da57249a..f358613153 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/signer/v4/v4.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/signer/v4/v4.go @@ -71,6 +71,7 @@ import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/credentials" "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/internal/sdkio" "github.com/aws/aws-sdk-go/private/protocol/rest" ) @@ -134,6 +135,7 @@ var requiredSignedHeaders = rules{ "X-Amz-Server-Side-Encryption-Customer-Key-Md5": struct{}{}, "X-Amz-Storage-Class": struct{}{}, "X-Amz-Website-Redirect-Location": struct{}{}, + "X-Amz-Content-Sha256": struct{}{}, }, }, patterns{"X-Amz-Meta-"}, @@ -268,7 +270,7 @@ type signingCtx struct { // "X-Amz-Content-Sha256" header with a precomputed value. The signer will // only compute the hash if the request header value is empty. func (v4 Signer) Sign(r *http.Request, body io.ReadSeeker, service, region string, signTime time.Time) (http.Header, error) { - return v4.signWithBody(r, body, service, region, 0, signTime) + return v4.signWithBody(r, body, service, region, 0, false, signTime) } // Presign signs AWS v4 requests with the provided body, service name, region @@ -302,10 +304,10 @@ func (v4 Signer) Sign(r *http.Request, body io.ReadSeeker, service, region strin // presigned request's signature you can set the "X-Amz-Content-Sha256" // HTTP header and that will be included in the request's signature. func (v4 Signer) Presign(r *http.Request, body io.ReadSeeker, service, region string, exp time.Duration, signTime time.Time) (http.Header, error) { - return v4.signWithBody(r, body, service, region, exp, signTime) + return v4.signWithBody(r, body, service, region, exp, true, signTime) } -func (v4 Signer) signWithBody(r *http.Request, body io.ReadSeeker, service, region string, exp time.Duration, signTime time.Time) (http.Header, error) { +func (v4 Signer) signWithBody(r *http.Request, body io.ReadSeeker, service, region string, exp time.Duration, isPresign bool, signTime time.Time) (http.Header, error) { currentTimeFn := v4.currentTimeFn if currentTimeFn == nil { currentTimeFn = time.Now @@ -317,7 +319,7 @@ func (v4 Signer) signWithBody(r *http.Request, body io.ReadSeeker, service, regi Query: r.URL.Query(), Time: signTime, ExpireTime: exp, - isPresign: exp != 0, + isPresign: isPresign, ServiceName: service, Region: region, DisableURIPathEscaping: v4.DisableURIPathEscaping, @@ -339,8 +341,11 @@ func (v4 Signer) signWithBody(r *http.Request, body io.ReadSeeker, service, regi return http.Header{}, err } + ctx.sanitizeHostForHeader() ctx.assignAmzQueryValues() - ctx.build(v4.DisableHeaderHoisting) + if err := ctx.build(v4.DisableHeaderHoisting); err != nil { + return nil, err + } // If the request is not presigned the body should be attached to it. This // prevents the confusion of wanting to send a signed request without @@ -363,6 +368,10 @@ func (v4 Signer) signWithBody(r *http.Request, body io.ReadSeeker, service, regi return ctx.SignedHeaderVals, nil } +func (ctx *signingCtx) sanitizeHostForHeader() { + request.SanitizeHostForHeader(ctx.Request) +} + func (ctx *signingCtx) handlePresignRemoval() { if !ctx.isPresign { return @@ -467,7 +476,7 @@ func signSDKRequestWithCurrTime(req *request.Request, curTimeFn func() time.Time } signedHeaders, err := v4.signWithBody(req.HTTPRequest, req.GetBody(), - name, region, req.ExpireTime, signingTime, + name, region, req.ExpireTime, req.ExpireTime > 0, signingTime, ) if err != nil { req.Error = err @@ -498,11 +507,13 @@ func (v4 *Signer) logSigningInfo(ctx *signingCtx) { v4.Logger.Log(msg) } -func (ctx *signingCtx) build(disableHeaderHoisting bool) { +func (ctx *signingCtx) build(disableHeaderHoisting bool) error { ctx.buildTime() // no depends ctx.buildCredentialString() // no depends - ctx.buildBodyDigest() + if err := ctx.buildBodyDigest(); err != nil { + return err + } unsignedHeaders := ctx.Request.Header if ctx.isPresign { @@ -530,6 +541,8 @@ func (ctx *signingCtx) build(disableHeaderHoisting bool) { } ctx.Request.Header.Set("Authorization", strings.Join(parts, ", ")) } + + return nil } func (ctx *signingCtx) buildTime() { @@ -656,21 +669,34 @@ func (ctx *signingCtx) buildSignature() { ctx.signature = hex.EncodeToString(signature) } -func (ctx *signingCtx) buildBodyDigest() { +func (ctx *signingCtx) buildBodyDigest() error { hash := ctx.Request.Header.Get("X-Amz-Content-Sha256") if hash == "" { - if ctx.unsignedPayload || (ctx.isPresign && ctx.ServiceName == "s3") { + includeSHA256Header := ctx.unsignedPayload || + ctx.ServiceName == "s3" || + ctx.ServiceName == "glacier" + + s3Presign := ctx.isPresign && ctx.ServiceName == "s3" + + if ctx.unsignedPayload || s3Presign { hash = "UNSIGNED-PAYLOAD" + includeSHA256Header = !s3Presign } else if ctx.Body == nil { hash = emptyStringSHA256 } else { + if !aws.IsReaderSeekable(ctx.Body) { + return fmt.Errorf("cannot use unseekable request body %T, for signed request with body", ctx.Body) + } hash = hex.EncodeToString(makeSha256Reader(ctx.Body)) } - if ctx.unsignedPayload || ctx.ServiceName == "s3" || ctx.ServiceName == "glacier" { + + if includeSHA256Header { ctx.Request.Header.Set("X-Amz-Content-Sha256", hash) } } ctx.bodyDigest = hash + + return nil } // isRequestSigned returns if the request is currently signed or presigned @@ -710,8 +736,8 @@ func makeSha256(data []byte) []byte { func makeSha256Reader(reader io.ReadSeeker) []byte { hash := sha256.New() - start, _ := reader.Seek(0, 1) - defer reader.Seek(start, 0) + start, _ := reader.Seek(0, sdkio.SeekCurrent) + defer reader.Seek(start, sdkio.SeekStart) io.Copy(hash, reader) return hash.Sum(nil) diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/types.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/types.go index 0e2d864e10..8b6f23425a 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/types.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/types.go @@ -3,6 +3,8 @@ package aws import ( "io" "sync" + + "github.com/aws/aws-sdk-go/internal/sdkio" ) // ReadSeekCloser wraps a io.Reader returning a ReaderSeekerCloser. Should @@ -22,6 +24,22 @@ type ReaderSeekerCloser struct { r io.Reader } +// IsReaderSeekable returns if the underlying reader type can be seeked. A +// io.Reader might not actually be seekable if it is the ReaderSeekerCloser +// type. +func IsReaderSeekable(r io.Reader) bool { + switch v := r.(type) { + case ReaderSeekerCloser: + return v.IsSeeker() + case *ReaderSeekerCloser: + return v.IsSeeker() + case io.ReadSeeker: + return true + default: + return false + } +} + // Read reads from the reader up to size of p. The number of bytes read, and // error if it occurred will be returned. // @@ -56,6 +74,71 @@ func (r ReaderSeekerCloser) IsSeeker() bool { return ok } +// HasLen returns the length of the underlying reader if the value implements +// the Len() int method. +func (r ReaderSeekerCloser) HasLen() (int, bool) { + type lenner interface { + Len() int + } + + if lr, ok := r.r.(lenner); ok { + return lr.Len(), true + } + + return 0, false +} + +// GetLen returns the length of the bytes remaining in the underlying reader. +// Checks first for Len(), then io.Seeker to determine the size of the +// underlying reader. +// +// Will return -1 if the length cannot be determined. +func (r ReaderSeekerCloser) GetLen() (int64, error) { + if l, ok := r.HasLen(); ok { + return int64(l), nil + } + + if s, ok := r.r.(io.Seeker); ok { + return seekerLen(s) + } + + return -1, nil +} + +// SeekerLen attempts to get the number of bytes remaining at the seeker's +// current position. Returns the number of bytes remaining or error. +func SeekerLen(s io.Seeker) (int64, error) { + // Determine if the seeker is actually seekable. ReaderSeekerCloser + // hides the fact that a io.Readers might not actually be seekable. + switch v := s.(type) { + case ReaderSeekerCloser: + return v.GetLen() + case *ReaderSeekerCloser: + return v.GetLen() + } + + return seekerLen(s) +} + +func seekerLen(s io.Seeker) (int64, error) { + curOffset, err := s.Seek(0, sdkio.SeekCurrent) + if err != nil { + return 0, err + } + + endOffset, err := s.Seek(0, sdkio.SeekEnd) + if err != nil { + return 0, err + } + + _, err = s.Seek(curOffset, sdkio.SeekStart) + if err != nil { + return 0, err + } + + return endOffset - curOffset, nil +} + // Close closes the ReaderSeekerCloser. // // If the ReaderSeekerCloser is not an io.Closer nothing will be done. diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/version.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/version.go index 6c100863e1..c108466609 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/version.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/aws/version.go @@ -5,4 +5,4 @@ package aws const SDKName = "aws-sdk-go" // SDKVersion is the version of this SDK -const SDKVersion = "1.12.7" +const SDKVersion = "1.14.12" diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/internal/sdkio/io_go1.6.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/internal/sdkio/io_go1.6.go new file mode 100644 index 0000000000..5aa9137e0f --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/internal/sdkio/io_go1.6.go @@ -0,0 +1,10 @@ +// +build !go1.7 + +package sdkio + +// Copy of Go 1.7 io package's Seeker constants. +const ( + SeekStart = 0 // seek relative to the origin of the file + SeekCurrent = 1 // seek relative to the current offset + SeekEnd = 2 // seek relative to the end +) diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/internal/sdkio/io_go1.7.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/internal/sdkio/io_go1.7.go new file mode 100644 index 0000000000..e5f005613b --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/internal/sdkio/io_go1.7.go @@ -0,0 +1,12 @@ +// +build go1.7 + +package sdkio + +import "io" + +// Alias for Go 1.7 io package Seeker constants +const ( + SeekStart = io.SeekStart // seek relative to the origin of the file + SeekCurrent = io.SeekCurrent // seek relative to the current offset + SeekEnd = io.SeekEnd // seek relative to the end +) diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/internal/sdkrand/locked_source.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/internal/sdkrand/locked_source.go new file mode 100644 index 0000000000..0c9802d877 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/internal/sdkrand/locked_source.go @@ -0,0 +1,29 @@ +package sdkrand + +import ( + "math/rand" + "sync" + "time" +) + +// lockedSource is a thread-safe implementation of rand.Source +type lockedSource struct { + lk sync.Mutex + src rand.Source +} + +func (r *lockedSource) Int63() (n int64) { + r.lk.Lock() + n = r.src.Int63() + r.lk.Unlock() + return +} + +func (r *lockedSource) Seed(seed int64) { + r.lk.Lock() + r.src.Seed(seed) + r.lk.Unlock() +} + +// SeededRand is a new RNG using a thread safe implementation of rand.Source +var SeededRand = rand.New(&lockedSource{src: rand.NewSource(time.Now().UnixNano())}) diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/private/protocol/ec2query/build.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/private/protocol/ec2query/build.go index eedc5bd7d4..3104e6ce4c 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/private/protocol/ec2query/build.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/private/protocol/ec2query/build.go @@ -24,7 +24,7 @@ func Build(r *request.Request) { r.Error = awserr.New("SerializationError", "failed encoding EC2 Query request", err) } - if r.ExpireTime == 0 { + if !r.IsPresigned() { r.HTTPRequest.Method = "POST" r.HTTPRequest.Header.Set("Content-Type", "application/x-www-form-urlencoded; charset=utf-8") r.SetBufferBody([]byte(body.Encode())) diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/private/protocol/json/jsonutil/build.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/private/protocol/json/jsonutil/build.go index 6efe43d5f3..ec765ba257 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/private/protocol/json/jsonutil/build.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/private/protocol/json/jsonutil/build.go @@ -12,6 +12,7 @@ import ( "strconv" "time" + "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/private/protocol" ) @@ -49,7 +50,10 @@ func buildAny(value reflect.Value, buf *bytes.Buffer, tag reflect.StructTag) err t = "list" } case reflect.Map: - t = "map" + // cannot be a JSONValue map + if _, ok := value.Interface().(aws.JSONValue); !ok { + t = "map" + } } } @@ -210,14 +214,11 @@ func buildScalar(v reflect.Value, buf *bytes.Buffer, tag reflect.StructTag) erro } buf.Write(strconv.AppendFloat(scratch[:0], f, 'f', -1, 64)) default: - switch value.Type() { - case timeType: - converted := v.Interface().(*time.Time) - + switch converted := value.Interface().(type) { + case time.Time: buf.Write(strconv.AppendInt(scratch[:0], converted.UTC().Unix(), 10)) - case byteSliceType: + case []byte: if !value.IsNil() { - converted := value.Interface().([]byte) buf.WriteByte('"') if len(converted) < 1024 { // for small buffers, using Encode directly is much faster. @@ -233,6 +234,12 @@ func buildScalar(v reflect.Value, buf *bytes.Buffer, tag reflect.StructTag) erro } buf.WriteByte('"') } + case aws.JSONValue: + str, err := protocol.EncodeJSONValue(converted, protocol.QuotedEscape) + if err != nil { + return fmt.Errorf("unable to encode JSONValue, %v", err) + } + buf.WriteString(str) default: return fmt.Errorf("unsupported JSON value %v (%s)", value.Interface(), value.Type()) } diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/private/protocol/json/jsonutil/unmarshal.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/private/protocol/json/jsonutil/unmarshal.go index fea5356136..037e1e7be7 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/private/protocol/json/jsonutil/unmarshal.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/private/protocol/json/jsonutil/unmarshal.go @@ -8,6 +8,9 @@ import ( "io/ioutil" "reflect" "time" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/private/protocol" ) // UnmarshalJSON reads a stream and unmarshals the results in object v. @@ -50,7 +53,10 @@ func unmarshalAny(value reflect.Value, data interface{}, tag reflect.StructTag) t = "list" } case reflect.Map: - t = "map" + // cannot be a JSONValue map + if _, ok := value.Interface().(aws.JSONValue); !ok { + t = "map" + } } } @@ -183,6 +189,13 @@ func unmarshalScalar(value reflect.Value, data interface{}, tag reflect.StructTa return err } value.Set(reflect.ValueOf(b)) + case aws.JSONValue: + // No need to use escaping as the value is a non-quoted string. + v, err := protocol.DecodeJSONValue(d, protocol.NoEscape) + if err != nil { + return err + } + value.Set(reflect.ValueOf(v)) default: return errf() } diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/private/protocol/jsonvalue.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/private/protocol/jsonvalue.go new file mode 100644 index 0000000000..776d110184 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/private/protocol/jsonvalue.go @@ -0,0 +1,76 @@ +package protocol + +import ( + "encoding/base64" + "encoding/json" + "fmt" + "strconv" + + "github.com/aws/aws-sdk-go/aws" +) + +// EscapeMode is the mode that should be use for escaping a value +type EscapeMode uint + +// The modes for escaping a value before it is marshaled, and unmarshaled. +const ( + NoEscape EscapeMode = iota + Base64Escape + QuotedEscape +) + +// EncodeJSONValue marshals the value into a JSON string, and optionally base64 +// encodes the string before returning it. +// +// Will panic if the escape mode is unknown. +func EncodeJSONValue(v aws.JSONValue, escape EscapeMode) (string, error) { + b, err := json.Marshal(v) + if err != nil { + return "", err + } + + switch escape { + case NoEscape: + return string(b), nil + case Base64Escape: + return base64.StdEncoding.EncodeToString(b), nil + case QuotedEscape: + return strconv.Quote(string(b)), nil + } + + panic(fmt.Sprintf("EncodeJSONValue called with unknown EscapeMode, %v", escape)) +} + +// DecodeJSONValue will attempt to decode the string input as a JSONValue. +// Optionally decoding base64 the value first before JSON unmarshaling. +// +// Will panic if the escape mode is unknown. +func DecodeJSONValue(v string, escape EscapeMode) (aws.JSONValue, error) { + var b []byte + var err error + + switch escape { + case NoEscape: + b = []byte(v) + case Base64Escape: + b, err = base64.StdEncoding.DecodeString(v) + case QuotedEscape: + var u string + u, err = strconv.Unquote(v) + b = []byte(u) + default: + panic(fmt.Sprintf("DecodeJSONValue called with unknown EscapeMode, %v", escape)) + } + + if err != nil { + return nil, err + } + + m := aws.JSONValue{} + err = json.Unmarshal(b, &m) + if err != nil { + return nil, err + } + + return m, nil +} diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/private/protocol/payload.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/private/protocol/payload.go new file mode 100644 index 0000000000..e21614a125 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/private/protocol/payload.go @@ -0,0 +1,81 @@ +package protocol + +import ( + "io" + "io/ioutil" + "net/http" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/client/metadata" + "github.com/aws/aws-sdk-go/aws/request" +) + +// PayloadUnmarshaler provides the interface for unmarshaling a payload's +// reader into a SDK shape. +type PayloadUnmarshaler interface { + UnmarshalPayload(io.Reader, interface{}) error +} + +// HandlerPayloadUnmarshal implements the PayloadUnmarshaler from a +// HandlerList. This provides the support for unmarshaling a payload reader to +// a shape without needing a SDK request first. +type HandlerPayloadUnmarshal struct { + Unmarshalers request.HandlerList +} + +// UnmarshalPayload unmarshals the io.Reader payload into the SDK shape using +// the Unmarshalers HandlerList provided. Returns an error if unable +// unmarshaling fails. +func (h HandlerPayloadUnmarshal) UnmarshalPayload(r io.Reader, v interface{}) error { + req := &request.Request{ + HTTPRequest: &http.Request{}, + HTTPResponse: &http.Response{ + StatusCode: 200, + Header: http.Header{}, + Body: ioutil.NopCloser(r), + }, + Data: v, + } + + h.Unmarshalers.Run(req) + + return req.Error +} + +// PayloadMarshaler provides the interface for marshaling a SDK shape into and +// io.Writer. +type PayloadMarshaler interface { + MarshalPayload(io.Writer, interface{}) error +} + +// HandlerPayloadMarshal implements the PayloadMarshaler from a HandlerList. +// This provides support for marshaling a SDK shape into an io.Writer without +// needing a SDK request first. +type HandlerPayloadMarshal struct { + Marshalers request.HandlerList +} + +// MarshalPayload marshals the SDK shape into the io.Writer using the +// Marshalers HandlerList provided. Returns an error if unable if marshal +// fails. +func (h HandlerPayloadMarshal) MarshalPayload(w io.Writer, v interface{}) error { + req := request.New( + aws.Config{}, + metadata.ClientInfo{}, + request.Handlers{}, + nil, + &request.Operation{HTTPMethod: "GET"}, + v, + nil, + ) + + h.Marshalers.Run(req) + + if req.Error != nil { + return req.Error + } + + io.Copy(w, req.GetBody()) + + return nil +} diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/private/protocol/query/build.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/private/protocol/query/build.go index 18169f0f8c..60e5b09d54 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/private/protocol/query/build.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/private/protocol/query/build.go @@ -25,7 +25,7 @@ func Build(r *request.Request) { return } - if r.ExpireTime == 0 { + if !r.IsPresigned() { r.HTTPRequest.Method = "POST" r.HTTPRequest.Header.Set("Content-Type", "application/x-www-form-urlencoded; charset=utf-8") r.SetBufferBody([]byte(body.Encode())) diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/build.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/build.go index 7161835649..f761e0b3a5 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/build.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/build.go @@ -4,7 +4,6 @@ package rest import ( "bytes" "encoding/base64" - "encoding/json" "fmt" "io" "net/http" @@ -18,10 +17,13 @@ import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/awserr" "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/private/protocol" ) -// RFC822 returns an RFC822 formatted timestamp for AWS protocols -const RFC822 = "Mon, 2 Jan 2006 15:04:05 GMT" +// RFC1123GMT is a RFC1123 (RFC822) formated timestame. This format is not +// using the standard library's time.RFC1123 due to the desire to always use +// GMT as the timezone. +const RFC1123GMT = "Mon, 2 Jan 2006 15:04:05 GMT" // Whether the byte value can be sent without escaping in AWS URLs var noEscape [256]bool @@ -252,13 +254,12 @@ func EscapePath(path string, encodeSep bool) string { return buf.String() } -func convertType(v reflect.Value, tag reflect.StructTag) (string, error) { +func convertType(v reflect.Value, tag reflect.StructTag) (str string, err error) { v = reflect.Indirect(v) if !v.IsValid() { return "", errValueNotSet } - var str string switch value := v.Interface().(type) { case string: str = value @@ -271,19 +272,21 @@ func convertType(v reflect.Value, tag reflect.StructTag) (string, error) { case float64: str = strconv.FormatFloat(value, 'f', -1, 64) case time.Time: - str = value.UTC().Format(RFC822) + str = value.UTC().Format(RFC1123GMT) case aws.JSONValue: - b, err := json.Marshal(value) - if err != nil { - return "", err + if len(value) == 0 { + return "", errValueNotSet } + escaping := protocol.NoEscape if tag.Get("location") == "header" { - str = base64.StdEncoding.EncodeToString(b) - } else { - str = string(b) + escaping = protocol.Base64Escape + } + str, err = protocol.EncodeJSONValue(value, escaping) + if err != nil { + return "", fmt.Errorf("unable to encode JSONValue, %v", err) } default: - err := fmt.Errorf("Unsupported value for param %v (%s)", v.Interface(), v.Type()) + err := fmt.Errorf("unsupported value for param %v (%s)", v.Interface(), v.Type()) return "", err } return str, nil diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/unmarshal.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/unmarshal.go index 7a779ee226..9d4e762677 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/unmarshal.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/unmarshal.go @@ -3,7 +3,6 @@ package rest import ( "bytes" "encoding/base64" - "encoding/json" "fmt" "io" "io/ioutil" @@ -16,6 +15,7 @@ import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/awserr" "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/private/protocol" ) // UnmarshalHandler is a named request handler for unmarshaling rest protocol requests @@ -198,23 +198,17 @@ func unmarshalHeader(v reflect.Value, header string, tag reflect.StructTag) erro } v.Set(reflect.ValueOf(&f)) case *time.Time: - t, err := time.Parse(RFC822, header) + t, err := time.Parse(time.RFC1123, header) if err != nil { return err } v.Set(reflect.ValueOf(&t)) case aws.JSONValue: - b := []byte(header) - var err error + escaping := protocol.NoEscape if tag.Get("location") == "header" { - b, err = base64.StdEncoding.DecodeString(header) - if err != nil { - return err - } + escaping = protocol.Base64Escape } - - m := aws.JSONValue{} - err = json.Unmarshal(b, &m) + m, err := protocol.DecodeJSONValue(header, escaping) if err != nil { return err } diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/unmarshal.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/unmarshal.go index 87584628a2..a6c25ba377 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/unmarshal.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/unmarshal.go @@ -52,9 +52,15 @@ func parse(r reflect.Value, node *XMLNode, tag reflect.StructTag) error { if t == "" { switch rtype.Kind() { case reflect.Struct: - t = "structure" + // also it can't be a time object + if _, ok := r.Interface().(*time.Time); !ok { + t = "structure" + } case reflect.Slice: - t = "list" + // also it can't be a byte slice + if _, ok := r.Interface().([]byte); !ok { + t = "list" + } case reflect.Map: t = "map" } diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/autoscaling/api.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/autoscaling/api.go index 761d8ecee8..1f1826493b 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/autoscaling/api.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/autoscaling/api.go @@ -17,7 +17,7 @@ const opAttachInstances = "AttachInstances" // AttachInstancesRequest generates a "aws/request.Request" representing the // client's request for the AttachInstances operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -38,7 +38,7 @@ const opAttachInstances = "AttachInstances" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/AttachInstances +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/AttachInstances func (c *AutoScaling) AttachInstancesRequest(input *AttachInstancesInput) (req *request.Request, output *AttachInstancesOutput) { op := &request.Operation{ Name: opAttachInstances, @@ -87,7 +87,10 @@ func (c *AutoScaling) AttachInstancesRequest(input *AttachInstancesInput) (req * // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/AttachInstances +// * ErrCodeServiceLinkedRoleFailure "ServiceLinkedRoleFailure" +// The service-linked role is not yet ready for use. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/AttachInstances func (c *AutoScaling) AttachInstances(input *AttachInstancesInput) (*AttachInstancesOutput, error) { req, out := c.AttachInstancesRequest(input) return out, req.Send() @@ -113,7 +116,7 @@ const opAttachLoadBalancerTargetGroups = "AttachLoadBalancerTargetGroups" // AttachLoadBalancerTargetGroupsRequest generates a "aws/request.Request" representing the // client's request for the AttachLoadBalancerTargetGroups operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -134,7 +137,7 @@ const opAttachLoadBalancerTargetGroups = "AttachLoadBalancerTargetGroups" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/AttachLoadBalancerTargetGroups +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/AttachLoadBalancerTargetGroups func (c *AutoScaling) AttachLoadBalancerTargetGroupsRequest(input *AttachLoadBalancerTargetGroupsInput) (req *request.Request, output *AttachLoadBalancerTargetGroupsOutput) { op := &request.Operation{ Name: opAttachLoadBalancerTargetGroups, @@ -174,7 +177,10 @@ func (c *AutoScaling) AttachLoadBalancerTargetGroupsRequest(input *AttachLoadBal // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/AttachLoadBalancerTargetGroups +// * ErrCodeServiceLinkedRoleFailure "ServiceLinkedRoleFailure" +// The service-linked role is not yet ready for use. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/AttachLoadBalancerTargetGroups func (c *AutoScaling) AttachLoadBalancerTargetGroups(input *AttachLoadBalancerTargetGroupsInput) (*AttachLoadBalancerTargetGroupsOutput, error) { req, out := c.AttachLoadBalancerTargetGroupsRequest(input) return out, req.Send() @@ -200,7 +206,7 @@ const opAttachLoadBalancers = "AttachLoadBalancers" // AttachLoadBalancersRequest generates a "aws/request.Request" representing the // client's request for the AttachLoadBalancers operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -221,7 +227,7 @@ const opAttachLoadBalancers = "AttachLoadBalancers" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/AttachLoadBalancers +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/AttachLoadBalancers func (c *AutoScaling) AttachLoadBalancersRequest(input *AttachLoadBalancersInput) (req *request.Request, output *AttachLoadBalancersOutput) { op := &request.Operation{ Name: opAttachLoadBalancers, @@ -264,7 +270,10 @@ func (c *AutoScaling) AttachLoadBalancersRequest(input *AttachLoadBalancersInput // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/AttachLoadBalancers +// * ErrCodeServiceLinkedRoleFailure "ServiceLinkedRoleFailure" +// The service-linked role is not yet ready for use. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/AttachLoadBalancers func (c *AutoScaling) AttachLoadBalancers(input *AttachLoadBalancersInput) (*AttachLoadBalancersOutput, error) { req, out := c.AttachLoadBalancersRequest(input) return out, req.Send() @@ -290,7 +299,7 @@ const opCompleteLifecycleAction = "CompleteLifecycleAction" // CompleteLifecycleActionRequest generates a "aws/request.Request" representing the // client's request for the CompleteLifecycleAction operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -311,7 +320,7 @@ const opCompleteLifecycleAction = "CompleteLifecycleAction" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/CompleteLifecycleAction +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/CompleteLifecycleAction func (c *AutoScaling) CompleteLifecycleActionRequest(input *CompleteLifecycleActionInput) (req *request.Request, output *CompleteLifecycleActionOutput) { op := &request.Operation{ Name: opCompleteLifecycleAction, @@ -366,7 +375,7 @@ func (c *AutoScaling) CompleteLifecycleActionRequest(input *CompleteLifecycleAct // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/CompleteLifecycleAction +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/CompleteLifecycleAction func (c *AutoScaling) CompleteLifecycleAction(input *CompleteLifecycleActionInput) (*CompleteLifecycleActionOutput, error) { req, out := c.CompleteLifecycleActionRequest(input) return out, req.Send() @@ -392,7 +401,7 @@ const opCreateAutoScalingGroup = "CreateAutoScalingGroup" // CreateAutoScalingGroupRequest generates a "aws/request.Request" representing the // client's request for the CreateAutoScalingGroup operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -413,7 +422,7 @@ const opCreateAutoScalingGroup = "CreateAutoScalingGroup" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/CreateAutoScalingGroup +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/CreateAutoScalingGroup func (c *AutoScaling) CreateAutoScalingGroupRequest(input *CreateAutoScalingGroupInput) (req *request.Request, output *CreateAutoScalingGroupOutput) { op := &request.Operation{ Name: opCreateAutoScalingGroup, @@ -436,9 +445,10 @@ func (c *AutoScaling) CreateAutoScalingGroupRequest(input *CreateAutoScalingGrou // // Creates an Auto Scaling group with the specified name and attributes. // -// If you exceed your maximum limit of Auto Scaling groups, which by default -// is 20 per region, the call fails. For information about viewing and updating -// this limit, see DescribeAccountLimits. +// If you exceed your maximum limit of Auto Scaling groups, the call fails. +// For information about viewing this limit, see DescribeAccountLimits. For +// information about updating this limit, see Auto Scaling Limits (http://docs.aws.amazon.com/autoscaling/latest/userguide/as-account-limits.html) +// in the Auto Scaling User Guide. // // For more information, see Auto Scaling Groups (http://docs.aws.amazon.com/autoscaling/latest/userguide/AutoScalingGroup.html) // in the Auto Scaling User Guide. @@ -464,7 +474,10 @@ func (c *AutoScaling) CreateAutoScalingGroupRequest(input *CreateAutoScalingGrou // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/CreateAutoScalingGroup +// * ErrCodeServiceLinkedRoleFailure "ServiceLinkedRoleFailure" +// The service-linked role is not yet ready for use. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/CreateAutoScalingGroup func (c *AutoScaling) CreateAutoScalingGroup(input *CreateAutoScalingGroupInput) (*CreateAutoScalingGroupOutput, error) { req, out := c.CreateAutoScalingGroupRequest(input) return out, req.Send() @@ -490,7 +503,7 @@ const opCreateLaunchConfiguration = "CreateLaunchConfiguration" // CreateLaunchConfigurationRequest generates a "aws/request.Request" representing the // client's request for the CreateLaunchConfiguration operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -511,7 +524,7 @@ const opCreateLaunchConfiguration = "CreateLaunchConfiguration" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/CreateLaunchConfiguration +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/CreateLaunchConfiguration func (c *AutoScaling) CreateLaunchConfigurationRequest(input *CreateLaunchConfigurationInput) (req *request.Request, output *CreateLaunchConfigurationOutput) { op := &request.Operation{ Name: opCreateLaunchConfiguration, @@ -534,9 +547,10 @@ func (c *AutoScaling) CreateLaunchConfigurationRequest(input *CreateLaunchConfig // // Creates a launch configuration. // -// If you exceed your maximum limit of launch configurations, which by default -// is 100 per region, the call fails. For information about viewing and updating -// this limit, see DescribeAccountLimits. +// If you exceed your maximum limit of launch configurations, the call fails. +// For information about viewing this limit, see DescribeAccountLimits. For +// information about updating this limit, see Auto Scaling Limits (http://docs.aws.amazon.com/autoscaling/latest/userguide/as-account-limits.html) +// in the Auto Scaling User Guide. // // For more information, see Launch Configurations (http://docs.aws.amazon.com/autoscaling/latest/userguide/LaunchConfiguration.html) // in the Auto Scaling User Guide. @@ -562,7 +576,7 @@ func (c *AutoScaling) CreateLaunchConfigurationRequest(input *CreateLaunchConfig // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/CreateLaunchConfiguration +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/CreateLaunchConfiguration func (c *AutoScaling) CreateLaunchConfiguration(input *CreateLaunchConfigurationInput) (*CreateLaunchConfigurationOutput, error) { req, out := c.CreateLaunchConfigurationRequest(input) return out, req.Send() @@ -588,7 +602,7 @@ const opCreateOrUpdateTags = "CreateOrUpdateTags" // CreateOrUpdateTagsRequest generates a "aws/request.Request" representing the // client's request for the CreateOrUpdateTags operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -609,7 +623,7 @@ const opCreateOrUpdateTags = "CreateOrUpdateTags" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/CreateOrUpdateTags +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/CreateOrUpdateTags func (c *AutoScaling) CreateOrUpdateTagsRequest(input *CreateOrUpdateTagsInput) (req *request.Request, output *CreateOrUpdateTagsOutput) { op := &request.Operation{ Name: opCreateOrUpdateTags, @@ -662,7 +676,7 @@ func (c *AutoScaling) CreateOrUpdateTagsRequest(input *CreateOrUpdateTagsInput) // * ErrCodeResourceInUseFault "ResourceInUse" // The operation can't be performed because the resource is in use. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/CreateOrUpdateTags +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/CreateOrUpdateTags func (c *AutoScaling) CreateOrUpdateTags(input *CreateOrUpdateTagsInput) (*CreateOrUpdateTagsOutput, error) { req, out := c.CreateOrUpdateTagsRequest(input) return out, req.Send() @@ -688,7 +702,7 @@ const opDeleteAutoScalingGroup = "DeleteAutoScalingGroup" // DeleteAutoScalingGroupRequest generates a "aws/request.Request" representing the // client's request for the DeleteAutoScalingGroup operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -709,7 +723,7 @@ const opDeleteAutoScalingGroup = "DeleteAutoScalingGroup" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeleteAutoScalingGroup +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeleteAutoScalingGroup func (c *AutoScaling) DeleteAutoScalingGroupRequest(input *DeleteAutoScalingGroupInput) (req *request.Request, output *DeleteAutoScalingGroupOutput) { op := &request.Operation{ Name: opDeleteAutoScalingGroup, @@ -765,7 +779,7 @@ func (c *AutoScaling) DeleteAutoScalingGroupRequest(input *DeleteAutoScalingGrou // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeleteAutoScalingGroup +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeleteAutoScalingGroup func (c *AutoScaling) DeleteAutoScalingGroup(input *DeleteAutoScalingGroupInput) (*DeleteAutoScalingGroupOutput, error) { req, out := c.DeleteAutoScalingGroupRequest(input) return out, req.Send() @@ -791,7 +805,7 @@ const opDeleteLaunchConfiguration = "DeleteLaunchConfiguration" // DeleteLaunchConfigurationRequest generates a "aws/request.Request" representing the // client's request for the DeleteLaunchConfiguration operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -812,7 +826,7 @@ const opDeleteLaunchConfiguration = "DeleteLaunchConfiguration" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeleteLaunchConfiguration +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeleteLaunchConfiguration func (c *AutoScaling) DeleteLaunchConfigurationRequest(input *DeleteLaunchConfigurationInput) (req *request.Request, output *DeleteLaunchConfigurationOutput) { op := &request.Operation{ Name: opDeleteLaunchConfiguration, @@ -854,7 +868,7 @@ func (c *AutoScaling) DeleteLaunchConfigurationRequest(input *DeleteLaunchConfig // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeleteLaunchConfiguration +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeleteLaunchConfiguration func (c *AutoScaling) DeleteLaunchConfiguration(input *DeleteLaunchConfigurationInput) (*DeleteLaunchConfigurationOutput, error) { req, out := c.DeleteLaunchConfigurationRequest(input) return out, req.Send() @@ -880,7 +894,7 @@ const opDeleteLifecycleHook = "DeleteLifecycleHook" // DeleteLifecycleHookRequest generates a "aws/request.Request" representing the // client's request for the DeleteLifecycleHook operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -901,7 +915,7 @@ const opDeleteLifecycleHook = "DeleteLifecycleHook" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeleteLifecycleHook +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeleteLifecycleHook func (c *AutoScaling) DeleteLifecycleHookRequest(input *DeleteLifecycleHookInput) (req *request.Request, output *DeleteLifecycleHookOutput) { op := &request.Operation{ Name: opDeleteLifecycleHook, @@ -937,7 +951,7 @@ func (c *AutoScaling) DeleteLifecycleHookRequest(input *DeleteLifecycleHookInput // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeleteLifecycleHook +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeleteLifecycleHook func (c *AutoScaling) DeleteLifecycleHook(input *DeleteLifecycleHookInput) (*DeleteLifecycleHookOutput, error) { req, out := c.DeleteLifecycleHookRequest(input) return out, req.Send() @@ -963,7 +977,7 @@ const opDeleteNotificationConfiguration = "DeleteNotificationConfiguration" // DeleteNotificationConfigurationRequest generates a "aws/request.Request" representing the // client's request for the DeleteNotificationConfiguration operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -984,7 +998,7 @@ const opDeleteNotificationConfiguration = "DeleteNotificationConfiguration" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeleteNotificationConfiguration +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeleteNotificationConfiguration func (c *AutoScaling) DeleteNotificationConfigurationRequest(input *DeleteNotificationConfigurationInput) (req *request.Request, output *DeleteNotificationConfigurationOutput) { op := &request.Operation{ Name: opDeleteNotificationConfiguration, @@ -1019,7 +1033,7 @@ func (c *AutoScaling) DeleteNotificationConfigurationRequest(input *DeleteNotifi // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeleteNotificationConfiguration +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeleteNotificationConfiguration func (c *AutoScaling) DeleteNotificationConfiguration(input *DeleteNotificationConfigurationInput) (*DeleteNotificationConfigurationOutput, error) { req, out := c.DeleteNotificationConfigurationRequest(input) return out, req.Send() @@ -1045,7 +1059,7 @@ const opDeletePolicy = "DeletePolicy" // DeletePolicyRequest generates a "aws/request.Request" representing the // client's request for the DeletePolicy operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1066,7 +1080,7 @@ const opDeletePolicy = "DeletePolicy" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeletePolicy +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeletePolicy func (c *AutoScaling) DeletePolicyRequest(input *DeletePolicyInput) (req *request.Request, output *DeletePolicyOutput) { op := &request.Operation{ Name: opDeletePolicy, @@ -1104,7 +1118,10 @@ func (c *AutoScaling) DeletePolicyRequest(input *DeletePolicyInput) (req *reques // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeletePolicy +// * ErrCodeServiceLinkedRoleFailure "ServiceLinkedRoleFailure" +// The service-linked role is not yet ready for use. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeletePolicy func (c *AutoScaling) DeletePolicy(input *DeletePolicyInput) (*DeletePolicyOutput, error) { req, out := c.DeletePolicyRequest(input) return out, req.Send() @@ -1130,7 +1147,7 @@ const opDeleteScheduledAction = "DeleteScheduledAction" // DeleteScheduledActionRequest generates a "aws/request.Request" representing the // client's request for the DeleteScheduledAction operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1151,7 +1168,7 @@ const opDeleteScheduledAction = "DeleteScheduledAction" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeleteScheduledAction +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeleteScheduledAction func (c *AutoScaling) DeleteScheduledActionRequest(input *DeleteScheduledActionInput) (req *request.Request, output *DeleteScheduledActionOutput) { op := &request.Operation{ Name: opDeleteScheduledAction, @@ -1186,7 +1203,7 @@ func (c *AutoScaling) DeleteScheduledActionRequest(input *DeleteScheduledActionI // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeleteScheduledAction +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeleteScheduledAction func (c *AutoScaling) DeleteScheduledAction(input *DeleteScheduledActionInput) (*DeleteScheduledActionOutput, error) { req, out := c.DeleteScheduledActionRequest(input) return out, req.Send() @@ -1212,7 +1229,7 @@ const opDeleteTags = "DeleteTags" // DeleteTagsRequest generates a "aws/request.Request" representing the // client's request for the DeleteTags operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1233,7 +1250,7 @@ const opDeleteTags = "DeleteTags" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeleteTags +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeleteTags func (c *AutoScaling) DeleteTagsRequest(input *DeleteTagsInput) (req *request.Request, output *DeleteTagsOutput) { op := &request.Operation{ Name: opDeleteTags, @@ -1271,7 +1288,7 @@ func (c *AutoScaling) DeleteTagsRequest(input *DeleteTagsInput) (req *request.Re // * ErrCodeResourceInUseFault "ResourceInUse" // The operation can't be performed because the resource is in use. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeleteTags +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeleteTags func (c *AutoScaling) DeleteTags(input *DeleteTagsInput) (*DeleteTagsOutput, error) { req, out := c.DeleteTagsRequest(input) return out, req.Send() @@ -1297,7 +1314,7 @@ const opDescribeAccountLimits = "DescribeAccountLimits" // DescribeAccountLimitsRequest generates a "aws/request.Request" representing the // client's request for the DescribeAccountLimits operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1318,7 +1335,7 @@ const opDescribeAccountLimits = "DescribeAccountLimits" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeAccountLimits +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeAccountLimits func (c *AutoScaling) DescribeAccountLimitsRequest(input *DescribeAccountLimitsInput) (req *request.Request, output *DescribeAccountLimitsOutput) { op := &request.Operation{ Name: opDescribeAccountLimits, @@ -1339,9 +1356,9 @@ func (c *AutoScaling) DescribeAccountLimitsRequest(input *DescribeAccountLimitsI // // Describes the current Auto Scaling resource limits for your AWS account. // -// For information about requesting an increase in these limits, see AWS Service -// Limits (http://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) -// in the Amazon Web Services General Reference. +// For information about requesting an increase in these limits, see Auto Scaling +// Limits (http://docs.aws.amazon.com/autoscaling/latest/userguide/as-account-limits.html) +// in the Auto Scaling User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -1355,7 +1372,7 @@ func (c *AutoScaling) DescribeAccountLimitsRequest(input *DescribeAccountLimitsI // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeAccountLimits +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeAccountLimits func (c *AutoScaling) DescribeAccountLimits(input *DescribeAccountLimitsInput) (*DescribeAccountLimitsOutput, error) { req, out := c.DescribeAccountLimitsRequest(input) return out, req.Send() @@ -1381,7 +1398,7 @@ const opDescribeAdjustmentTypes = "DescribeAdjustmentTypes" // DescribeAdjustmentTypesRequest generates a "aws/request.Request" representing the // client's request for the DescribeAdjustmentTypes operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1402,7 +1419,7 @@ const opDescribeAdjustmentTypes = "DescribeAdjustmentTypes" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeAdjustmentTypes +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeAdjustmentTypes func (c *AutoScaling) DescribeAdjustmentTypesRequest(input *DescribeAdjustmentTypesInput) (req *request.Request, output *DescribeAdjustmentTypesOutput) { op := &request.Operation{ Name: opDescribeAdjustmentTypes, @@ -1435,7 +1452,7 @@ func (c *AutoScaling) DescribeAdjustmentTypesRequest(input *DescribeAdjustmentTy // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeAdjustmentTypes +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeAdjustmentTypes func (c *AutoScaling) DescribeAdjustmentTypes(input *DescribeAdjustmentTypesInput) (*DescribeAdjustmentTypesOutput, error) { req, out := c.DescribeAdjustmentTypesRequest(input) return out, req.Send() @@ -1461,7 +1478,7 @@ const opDescribeAutoScalingGroups = "DescribeAutoScalingGroups" // DescribeAutoScalingGroupsRequest generates a "aws/request.Request" representing the // client's request for the DescribeAutoScalingGroups operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1482,7 +1499,7 @@ const opDescribeAutoScalingGroups = "DescribeAutoScalingGroups" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeAutoScalingGroups +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeAutoScalingGroups func (c *AutoScaling) DescribeAutoScalingGroupsRequest(input *DescribeAutoScalingGroupsInput) (req *request.Request, output *DescribeAutoScalingGroupsOutput) { op := &request.Operation{ Name: opDescribeAutoScalingGroups, @@ -1524,7 +1541,7 @@ func (c *AutoScaling) DescribeAutoScalingGroupsRequest(input *DescribeAutoScalin // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeAutoScalingGroups +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeAutoScalingGroups func (c *AutoScaling) DescribeAutoScalingGroups(input *DescribeAutoScalingGroupsInput) (*DescribeAutoScalingGroupsOutput, error) { req, out := c.DescribeAutoScalingGroupsRequest(input) return out, req.Send() @@ -1600,7 +1617,7 @@ const opDescribeAutoScalingInstances = "DescribeAutoScalingInstances" // DescribeAutoScalingInstancesRequest generates a "aws/request.Request" representing the // client's request for the DescribeAutoScalingInstances operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1621,7 +1638,7 @@ const opDescribeAutoScalingInstances = "DescribeAutoScalingInstances" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeAutoScalingInstances +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeAutoScalingInstances func (c *AutoScaling) DescribeAutoScalingInstancesRequest(input *DescribeAutoScalingInstancesInput) (req *request.Request, output *DescribeAutoScalingInstancesOutput) { op := &request.Operation{ Name: opDescribeAutoScalingInstances, @@ -1663,7 +1680,7 @@ func (c *AutoScaling) DescribeAutoScalingInstancesRequest(input *DescribeAutoSca // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeAutoScalingInstances +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeAutoScalingInstances func (c *AutoScaling) DescribeAutoScalingInstances(input *DescribeAutoScalingInstancesInput) (*DescribeAutoScalingInstancesOutput, error) { req, out := c.DescribeAutoScalingInstancesRequest(input) return out, req.Send() @@ -1739,7 +1756,7 @@ const opDescribeAutoScalingNotificationTypes = "DescribeAutoScalingNotificationT // DescribeAutoScalingNotificationTypesRequest generates a "aws/request.Request" representing the // client's request for the DescribeAutoScalingNotificationTypes operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1760,7 +1777,7 @@ const opDescribeAutoScalingNotificationTypes = "DescribeAutoScalingNotificationT // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeAutoScalingNotificationTypes +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeAutoScalingNotificationTypes func (c *AutoScaling) DescribeAutoScalingNotificationTypesRequest(input *DescribeAutoScalingNotificationTypesInput) (req *request.Request, output *DescribeAutoScalingNotificationTypesOutput) { op := &request.Operation{ Name: opDescribeAutoScalingNotificationTypes, @@ -1793,7 +1810,7 @@ func (c *AutoScaling) DescribeAutoScalingNotificationTypesRequest(input *Describ // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeAutoScalingNotificationTypes +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeAutoScalingNotificationTypes func (c *AutoScaling) DescribeAutoScalingNotificationTypes(input *DescribeAutoScalingNotificationTypesInput) (*DescribeAutoScalingNotificationTypesOutput, error) { req, out := c.DescribeAutoScalingNotificationTypesRequest(input) return out, req.Send() @@ -1819,7 +1836,7 @@ const opDescribeLaunchConfigurations = "DescribeLaunchConfigurations" // DescribeLaunchConfigurationsRequest generates a "aws/request.Request" representing the // client's request for the DescribeLaunchConfigurations operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1840,7 +1857,7 @@ const opDescribeLaunchConfigurations = "DescribeLaunchConfigurations" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeLaunchConfigurations +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeLaunchConfigurations func (c *AutoScaling) DescribeLaunchConfigurationsRequest(input *DescribeLaunchConfigurationsInput) (req *request.Request, output *DescribeLaunchConfigurationsOutput) { op := &request.Operation{ Name: opDescribeLaunchConfigurations, @@ -1882,7 +1899,7 @@ func (c *AutoScaling) DescribeLaunchConfigurationsRequest(input *DescribeLaunchC // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeLaunchConfigurations +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeLaunchConfigurations func (c *AutoScaling) DescribeLaunchConfigurations(input *DescribeLaunchConfigurationsInput) (*DescribeLaunchConfigurationsOutput, error) { req, out := c.DescribeLaunchConfigurationsRequest(input) return out, req.Send() @@ -1958,7 +1975,7 @@ const opDescribeLifecycleHookTypes = "DescribeLifecycleHookTypes" // DescribeLifecycleHookTypesRequest generates a "aws/request.Request" representing the // client's request for the DescribeLifecycleHookTypes operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1979,7 +1996,7 @@ const opDescribeLifecycleHookTypes = "DescribeLifecycleHookTypes" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeLifecycleHookTypes +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeLifecycleHookTypes func (c *AutoScaling) DescribeLifecycleHookTypesRequest(input *DescribeLifecycleHookTypesInput) (req *request.Request, output *DescribeLifecycleHookTypesOutput) { op := &request.Operation{ Name: opDescribeLifecycleHookTypes, @@ -2012,7 +2029,7 @@ func (c *AutoScaling) DescribeLifecycleHookTypesRequest(input *DescribeLifecycle // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeLifecycleHookTypes +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeLifecycleHookTypes func (c *AutoScaling) DescribeLifecycleHookTypes(input *DescribeLifecycleHookTypesInput) (*DescribeLifecycleHookTypesOutput, error) { req, out := c.DescribeLifecycleHookTypesRequest(input) return out, req.Send() @@ -2038,7 +2055,7 @@ const opDescribeLifecycleHooks = "DescribeLifecycleHooks" // DescribeLifecycleHooksRequest generates a "aws/request.Request" representing the // client's request for the DescribeLifecycleHooks operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2059,7 +2076,7 @@ const opDescribeLifecycleHooks = "DescribeLifecycleHooks" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeLifecycleHooks +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeLifecycleHooks func (c *AutoScaling) DescribeLifecycleHooksRequest(input *DescribeLifecycleHooksInput) (req *request.Request, output *DescribeLifecycleHooksOutput) { op := &request.Operation{ Name: opDescribeLifecycleHooks, @@ -2092,7 +2109,7 @@ func (c *AutoScaling) DescribeLifecycleHooksRequest(input *DescribeLifecycleHook // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeLifecycleHooks +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeLifecycleHooks func (c *AutoScaling) DescribeLifecycleHooks(input *DescribeLifecycleHooksInput) (*DescribeLifecycleHooksOutput, error) { req, out := c.DescribeLifecycleHooksRequest(input) return out, req.Send() @@ -2118,7 +2135,7 @@ const opDescribeLoadBalancerTargetGroups = "DescribeLoadBalancerTargetGroups" // DescribeLoadBalancerTargetGroupsRequest generates a "aws/request.Request" representing the // client's request for the DescribeLoadBalancerTargetGroups operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2139,7 +2156,7 @@ const opDescribeLoadBalancerTargetGroups = "DescribeLoadBalancerTargetGroups" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeLoadBalancerTargetGroups +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeLoadBalancerTargetGroups func (c *AutoScaling) DescribeLoadBalancerTargetGroupsRequest(input *DescribeLoadBalancerTargetGroupsInput) (req *request.Request, output *DescribeLoadBalancerTargetGroupsOutput) { op := &request.Operation{ Name: opDescribeLoadBalancerTargetGroups, @@ -2172,7 +2189,7 @@ func (c *AutoScaling) DescribeLoadBalancerTargetGroupsRequest(input *DescribeLoa // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeLoadBalancerTargetGroups +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeLoadBalancerTargetGroups func (c *AutoScaling) DescribeLoadBalancerTargetGroups(input *DescribeLoadBalancerTargetGroupsInput) (*DescribeLoadBalancerTargetGroupsOutput, error) { req, out := c.DescribeLoadBalancerTargetGroupsRequest(input) return out, req.Send() @@ -2198,7 +2215,7 @@ const opDescribeLoadBalancers = "DescribeLoadBalancers" // DescribeLoadBalancersRequest generates a "aws/request.Request" representing the // client's request for the DescribeLoadBalancers operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2219,7 +2236,7 @@ const opDescribeLoadBalancers = "DescribeLoadBalancers" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeLoadBalancers +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeLoadBalancers func (c *AutoScaling) DescribeLoadBalancersRequest(input *DescribeLoadBalancersInput) (req *request.Request, output *DescribeLoadBalancersOutput) { op := &request.Operation{ Name: opDescribeLoadBalancers, @@ -2255,7 +2272,7 @@ func (c *AutoScaling) DescribeLoadBalancersRequest(input *DescribeLoadBalancersI // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeLoadBalancers +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeLoadBalancers func (c *AutoScaling) DescribeLoadBalancers(input *DescribeLoadBalancersInput) (*DescribeLoadBalancersOutput, error) { req, out := c.DescribeLoadBalancersRequest(input) return out, req.Send() @@ -2281,7 +2298,7 @@ const opDescribeMetricCollectionTypes = "DescribeMetricCollectionTypes" // DescribeMetricCollectionTypesRequest generates a "aws/request.Request" representing the // client's request for the DescribeMetricCollectionTypes operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2302,7 +2319,7 @@ const opDescribeMetricCollectionTypes = "DescribeMetricCollectionTypes" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeMetricCollectionTypes +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeMetricCollectionTypes func (c *AutoScaling) DescribeMetricCollectionTypesRequest(input *DescribeMetricCollectionTypesInput) (req *request.Request, output *DescribeMetricCollectionTypesOutput) { op := &request.Operation{ Name: opDescribeMetricCollectionTypes, @@ -2338,7 +2355,7 @@ func (c *AutoScaling) DescribeMetricCollectionTypesRequest(input *DescribeMetric // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeMetricCollectionTypes +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeMetricCollectionTypes func (c *AutoScaling) DescribeMetricCollectionTypes(input *DescribeMetricCollectionTypesInput) (*DescribeMetricCollectionTypesOutput, error) { req, out := c.DescribeMetricCollectionTypesRequest(input) return out, req.Send() @@ -2364,7 +2381,7 @@ const opDescribeNotificationConfigurations = "DescribeNotificationConfigurations // DescribeNotificationConfigurationsRequest generates a "aws/request.Request" representing the // client's request for the DescribeNotificationConfigurations operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2385,7 +2402,7 @@ const opDescribeNotificationConfigurations = "DescribeNotificationConfigurations // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeNotificationConfigurations +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeNotificationConfigurations func (c *AutoScaling) DescribeNotificationConfigurationsRequest(input *DescribeNotificationConfigurationsInput) (req *request.Request, output *DescribeNotificationConfigurationsOutput) { op := &request.Operation{ Name: opDescribeNotificationConfigurations, @@ -2428,7 +2445,7 @@ func (c *AutoScaling) DescribeNotificationConfigurationsRequest(input *DescribeN // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeNotificationConfigurations +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeNotificationConfigurations func (c *AutoScaling) DescribeNotificationConfigurations(input *DescribeNotificationConfigurationsInput) (*DescribeNotificationConfigurationsOutput, error) { req, out := c.DescribeNotificationConfigurationsRequest(input) return out, req.Send() @@ -2504,7 +2521,7 @@ const opDescribePolicies = "DescribePolicies" // DescribePoliciesRequest generates a "aws/request.Request" representing the // client's request for the DescribePolicies operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2525,7 +2542,7 @@ const opDescribePolicies = "DescribePolicies" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribePolicies +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribePolicies func (c *AutoScaling) DescribePoliciesRequest(input *DescribePoliciesInput) (req *request.Request, output *DescribePoliciesOutput) { op := &request.Operation{ Name: opDescribePolicies, @@ -2567,7 +2584,10 @@ func (c *AutoScaling) DescribePoliciesRequest(input *DescribePoliciesInput) (req // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribePolicies +// * ErrCodeServiceLinkedRoleFailure "ServiceLinkedRoleFailure" +// The service-linked role is not yet ready for use. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribePolicies func (c *AutoScaling) DescribePolicies(input *DescribePoliciesInput) (*DescribePoliciesOutput, error) { req, out := c.DescribePoliciesRequest(input) return out, req.Send() @@ -2643,7 +2663,7 @@ const opDescribeScalingActivities = "DescribeScalingActivities" // DescribeScalingActivitiesRequest generates a "aws/request.Request" representing the // client's request for the DescribeScalingActivities operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2664,7 +2684,7 @@ const opDescribeScalingActivities = "DescribeScalingActivities" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeScalingActivities +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeScalingActivities func (c *AutoScaling) DescribeScalingActivitiesRequest(input *DescribeScalingActivitiesInput) (req *request.Request, output *DescribeScalingActivitiesOutput) { op := &request.Operation{ Name: opDescribeScalingActivities, @@ -2706,7 +2726,7 @@ func (c *AutoScaling) DescribeScalingActivitiesRequest(input *DescribeScalingAct // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeScalingActivities +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeScalingActivities func (c *AutoScaling) DescribeScalingActivities(input *DescribeScalingActivitiesInput) (*DescribeScalingActivitiesOutput, error) { req, out := c.DescribeScalingActivitiesRequest(input) return out, req.Send() @@ -2782,7 +2802,7 @@ const opDescribeScalingProcessTypes = "DescribeScalingProcessTypes" // DescribeScalingProcessTypesRequest generates a "aws/request.Request" representing the // client's request for the DescribeScalingProcessTypes operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2803,7 +2823,7 @@ const opDescribeScalingProcessTypes = "DescribeScalingProcessTypes" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeScalingProcessTypes +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeScalingProcessTypes func (c *AutoScaling) DescribeScalingProcessTypesRequest(input *DescribeScalingProcessTypesInput) (req *request.Request, output *DescribeScalingProcessTypesOutput) { op := &request.Operation{ Name: opDescribeScalingProcessTypes, @@ -2836,7 +2856,7 @@ func (c *AutoScaling) DescribeScalingProcessTypesRequest(input *DescribeScalingP // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeScalingProcessTypes +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeScalingProcessTypes func (c *AutoScaling) DescribeScalingProcessTypes(input *DescribeScalingProcessTypesInput) (*DescribeScalingProcessTypesOutput, error) { req, out := c.DescribeScalingProcessTypesRequest(input) return out, req.Send() @@ -2862,7 +2882,7 @@ const opDescribeScheduledActions = "DescribeScheduledActions" // DescribeScheduledActionsRequest generates a "aws/request.Request" representing the // client's request for the DescribeScheduledActions operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2883,7 +2903,7 @@ const opDescribeScheduledActions = "DescribeScheduledActions" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeScheduledActions +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeScheduledActions func (c *AutoScaling) DescribeScheduledActionsRequest(input *DescribeScheduledActionsInput) (req *request.Request, output *DescribeScheduledActionsOutput) { op := &request.Operation{ Name: opDescribeScheduledActions, @@ -2926,7 +2946,7 @@ func (c *AutoScaling) DescribeScheduledActionsRequest(input *DescribeScheduledAc // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeScheduledActions +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeScheduledActions func (c *AutoScaling) DescribeScheduledActions(input *DescribeScheduledActionsInput) (*DescribeScheduledActionsOutput, error) { req, out := c.DescribeScheduledActionsRequest(input) return out, req.Send() @@ -3002,7 +3022,7 @@ const opDescribeTags = "DescribeTags" // DescribeTagsRequest generates a "aws/request.Request" representing the // client's request for the DescribeTags operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -3023,7 +3043,7 @@ const opDescribeTags = "DescribeTags" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeTags +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeTags func (c *AutoScaling) DescribeTagsRequest(input *DescribeTagsInput) (req *request.Request, output *DescribeTagsOutput) { op := &request.Operation{ Name: opDescribeTags, @@ -3074,7 +3094,7 @@ func (c *AutoScaling) DescribeTagsRequest(input *DescribeTagsInput) (req *reques // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeTags +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeTags func (c *AutoScaling) DescribeTags(input *DescribeTagsInput) (*DescribeTagsOutput, error) { req, out := c.DescribeTagsRequest(input) return out, req.Send() @@ -3150,7 +3170,7 @@ const opDescribeTerminationPolicyTypes = "DescribeTerminationPolicyTypes" // DescribeTerminationPolicyTypesRequest generates a "aws/request.Request" representing the // client's request for the DescribeTerminationPolicyTypes operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -3171,7 +3191,7 @@ const opDescribeTerminationPolicyTypes = "DescribeTerminationPolicyTypes" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeTerminationPolicyTypes +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeTerminationPolicyTypes func (c *AutoScaling) DescribeTerminationPolicyTypesRequest(input *DescribeTerminationPolicyTypesInput) (req *request.Request, output *DescribeTerminationPolicyTypesOutput) { op := &request.Operation{ Name: opDescribeTerminationPolicyTypes, @@ -3204,7 +3224,7 @@ func (c *AutoScaling) DescribeTerminationPolicyTypesRequest(input *DescribeTermi // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeTerminationPolicyTypes +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeTerminationPolicyTypes func (c *AutoScaling) DescribeTerminationPolicyTypes(input *DescribeTerminationPolicyTypesInput) (*DescribeTerminationPolicyTypesOutput, error) { req, out := c.DescribeTerminationPolicyTypesRequest(input) return out, req.Send() @@ -3230,7 +3250,7 @@ const opDetachInstances = "DetachInstances" // DetachInstancesRequest generates a "aws/request.Request" representing the // client's request for the DetachInstances operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -3251,7 +3271,7 @@ const opDetachInstances = "DetachInstances" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DetachInstances +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DetachInstances func (c *AutoScaling) DetachInstancesRequest(input *DetachInstancesInput) (req *request.Request, output *DetachInstancesOutput) { op := &request.Operation{ Name: opDetachInstances, @@ -3299,7 +3319,7 @@ func (c *AutoScaling) DetachInstancesRequest(input *DetachInstancesInput) (req * // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DetachInstances +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DetachInstances func (c *AutoScaling) DetachInstances(input *DetachInstancesInput) (*DetachInstancesOutput, error) { req, out := c.DetachInstancesRequest(input) return out, req.Send() @@ -3325,7 +3345,7 @@ const opDetachLoadBalancerTargetGroups = "DetachLoadBalancerTargetGroups" // DetachLoadBalancerTargetGroupsRequest generates a "aws/request.Request" representing the // client's request for the DetachLoadBalancerTargetGroups operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -3346,7 +3366,7 @@ const opDetachLoadBalancerTargetGroups = "DetachLoadBalancerTargetGroups" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DetachLoadBalancerTargetGroups +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DetachLoadBalancerTargetGroups func (c *AutoScaling) DetachLoadBalancerTargetGroupsRequest(input *DetachLoadBalancerTargetGroupsInput) (req *request.Request, output *DetachLoadBalancerTargetGroupsOutput) { op := &request.Operation{ Name: opDetachLoadBalancerTargetGroups, @@ -3379,7 +3399,7 @@ func (c *AutoScaling) DetachLoadBalancerTargetGroupsRequest(input *DetachLoadBal // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DetachLoadBalancerTargetGroups +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DetachLoadBalancerTargetGroups func (c *AutoScaling) DetachLoadBalancerTargetGroups(input *DetachLoadBalancerTargetGroupsInput) (*DetachLoadBalancerTargetGroupsOutput, error) { req, out := c.DetachLoadBalancerTargetGroupsRequest(input) return out, req.Send() @@ -3405,7 +3425,7 @@ const opDetachLoadBalancers = "DetachLoadBalancers" // DetachLoadBalancersRequest generates a "aws/request.Request" representing the // client's request for the DetachLoadBalancers operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -3426,7 +3446,7 @@ const opDetachLoadBalancers = "DetachLoadBalancers" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DetachLoadBalancers +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DetachLoadBalancers func (c *AutoScaling) DetachLoadBalancersRequest(input *DetachLoadBalancersInput) (req *request.Request, output *DetachLoadBalancersOutput) { op := &request.Operation{ Name: opDetachLoadBalancers, @@ -3468,7 +3488,7 @@ func (c *AutoScaling) DetachLoadBalancersRequest(input *DetachLoadBalancersInput // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DetachLoadBalancers +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DetachLoadBalancers func (c *AutoScaling) DetachLoadBalancers(input *DetachLoadBalancersInput) (*DetachLoadBalancersOutput, error) { req, out := c.DetachLoadBalancersRequest(input) return out, req.Send() @@ -3494,7 +3514,7 @@ const opDisableMetricsCollection = "DisableMetricsCollection" // DisableMetricsCollectionRequest generates a "aws/request.Request" representing the // client's request for the DisableMetricsCollection operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -3515,7 +3535,7 @@ const opDisableMetricsCollection = "DisableMetricsCollection" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DisableMetricsCollection +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DisableMetricsCollection func (c *AutoScaling) DisableMetricsCollectionRequest(input *DisableMetricsCollectionInput) (req *request.Request, output *DisableMetricsCollectionOutput) { op := &request.Operation{ Name: opDisableMetricsCollection, @@ -3550,7 +3570,7 @@ func (c *AutoScaling) DisableMetricsCollectionRequest(input *DisableMetricsColle // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DisableMetricsCollection +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DisableMetricsCollection func (c *AutoScaling) DisableMetricsCollection(input *DisableMetricsCollectionInput) (*DisableMetricsCollectionOutput, error) { req, out := c.DisableMetricsCollectionRequest(input) return out, req.Send() @@ -3576,7 +3596,7 @@ const opEnableMetricsCollection = "EnableMetricsCollection" // EnableMetricsCollectionRequest generates a "aws/request.Request" representing the // client's request for the EnableMetricsCollection operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -3597,7 +3617,7 @@ const opEnableMetricsCollection = "EnableMetricsCollection" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/EnableMetricsCollection +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/EnableMetricsCollection func (c *AutoScaling) EnableMetricsCollectionRequest(input *EnableMetricsCollectionInput) (req *request.Request, output *EnableMetricsCollectionOutput) { op := &request.Operation{ Name: opEnableMetricsCollection, @@ -3634,7 +3654,7 @@ func (c *AutoScaling) EnableMetricsCollectionRequest(input *EnableMetricsCollect // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/EnableMetricsCollection +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/EnableMetricsCollection func (c *AutoScaling) EnableMetricsCollection(input *EnableMetricsCollectionInput) (*EnableMetricsCollectionOutput, error) { req, out := c.EnableMetricsCollectionRequest(input) return out, req.Send() @@ -3660,7 +3680,7 @@ const opEnterStandby = "EnterStandby" // EnterStandbyRequest generates a "aws/request.Request" representing the // client's request for the EnterStandby operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -3681,7 +3701,7 @@ const opEnterStandby = "EnterStandby" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/EnterStandby +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/EnterStandby func (c *AutoScaling) EnterStandbyRequest(input *EnterStandbyInput) (req *request.Request, output *EnterStandbyOutput) { op := &request.Operation{ Name: opEnterStandby, @@ -3718,7 +3738,7 @@ func (c *AutoScaling) EnterStandbyRequest(input *EnterStandbyInput) (req *reques // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/EnterStandby +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/EnterStandby func (c *AutoScaling) EnterStandby(input *EnterStandbyInput) (*EnterStandbyOutput, error) { req, out := c.EnterStandbyRequest(input) return out, req.Send() @@ -3744,7 +3764,7 @@ const opExecutePolicy = "ExecutePolicy" // ExecutePolicyRequest generates a "aws/request.Request" representing the // client's request for the ExecutePolicy operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -3765,7 +3785,7 @@ const opExecutePolicy = "ExecutePolicy" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/ExecutePolicy +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/ExecutePolicy func (c *AutoScaling) ExecutePolicyRequest(input *ExecutePolicyInput) (req *request.Request, output *ExecutePolicyOutput) { op := &request.Operation{ Name: opExecutePolicy, @@ -3804,7 +3824,7 @@ func (c *AutoScaling) ExecutePolicyRequest(input *ExecutePolicyInput) (req *requ // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/ExecutePolicy +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/ExecutePolicy func (c *AutoScaling) ExecutePolicy(input *ExecutePolicyInput) (*ExecutePolicyOutput, error) { req, out := c.ExecutePolicyRequest(input) return out, req.Send() @@ -3830,7 +3850,7 @@ const opExitStandby = "ExitStandby" // ExitStandbyRequest generates a "aws/request.Request" representing the // client's request for the ExitStandby operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -3851,7 +3871,7 @@ const opExitStandby = "ExitStandby" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/ExitStandby +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/ExitStandby func (c *AutoScaling) ExitStandbyRequest(input *ExitStandbyInput) (req *request.Request, output *ExitStandbyOutput) { op := &request.Operation{ Name: opExitStandby, @@ -3888,7 +3908,7 @@ func (c *AutoScaling) ExitStandbyRequest(input *ExitStandbyInput) (req *request. // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/ExitStandby +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/ExitStandby func (c *AutoScaling) ExitStandby(input *ExitStandbyInput) (*ExitStandbyOutput, error) { req, out := c.ExitStandbyRequest(input) return out, req.Send() @@ -3914,7 +3934,7 @@ const opPutLifecycleHook = "PutLifecycleHook" // PutLifecycleHookRequest generates a "aws/request.Request" representing the // client's request for the PutLifecycleHook operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -3935,7 +3955,7 @@ const opPutLifecycleHook = "PutLifecycleHook" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/PutLifecycleHook +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/PutLifecycleHook func (c *AutoScaling) PutLifecycleHookRequest(input *PutLifecycleHookInput) (req *request.Request, output *PutLifecycleHookOutput) { op := &request.Operation{ Name: opPutLifecycleHook, @@ -4003,7 +4023,7 @@ func (c *AutoScaling) PutLifecycleHookRequest(input *PutLifecycleHookInput) (req // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/PutLifecycleHook +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/PutLifecycleHook func (c *AutoScaling) PutLifecycleHook(input *PutLifecycleHookInput) (*PutLifecycleHookOutput, error) { req, out := c.PutLifecycleHookRequest(input) return out, req.Send() @@ -4029,7 +4049,7 @@ const opPutNotificationConfiguration = "PutNotificationConfiguration" // PutNotificationConfigurationRequest generates a "aws/request.Request" representing the // client's request for the PutNotificationConfiguration operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -4050,7 +4070,7 @@ const opPutNotificationConfiguration = "PutNotificationConfiguration" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/PutNotificationConfiguration +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/PutNotificationConfiguration func (c *AutoScaling) PutNotificationConfigurationRequest(input *PutNotificationConfigurationInput) (req *request.Request, output *PutNotificationConfigurationOutput) { op := &request.Operation{ Name: opPutNotificationConfiguration, @@ -4098,7 +4118,10 @@ func (c *AutoScaling) PutNotificationConfigurationRequest(input *PutNotification // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/PutNotificationConfiguration +// * ErrCodeServiceLinkedRoleFailure "ServiceLinkedRoleFailure" +// The service-linked role is not yet ready for use. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/PutNotificationConfiguration func (c *AutoScaling) PutNotificationConfiguration(input *PutNotificationConfigurationInput) (*PutNotificationConfigurationOutput, error) { req, out := c.PutNotificationConfigurationRequest(input) return out, req.Send() @@ -4124,7 +4147,7 @@ const opPutScalingPolicy = "PutScalingPolicy" // PutScalingPolicyRequest generates a "aws/request.Request" representing the // client's request for the PutScalingPolicy operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -4145,7 +4168,7 @@ const opPutScalingPolicy = "PutScalingPolicy" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/PutScalingPolicy +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/PutScalingPolicy func (c *AutoScaling) PutScalingPolicyRequest(input *PutScalingPolicyInput) (req *request.Request, output *PutScalingPolicyOutput) { op := &request.Operation{ Name: opPutScalingPolicy, @@ -4191,7 +4214,10 @@ func (c *AutoScaling) PutScalingPolicyRequest(input *PutScalingPolicyInput) (req // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/PutScalingPolicy +// * ErrCodeServiceLinkedRoleFailure "ServiceLinkedRoleFailure" +// The service-linked role is not yet ready for use. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/PutScalingPolicy func (c *AutoScaling) PutScalingPolicy(input *PutScalingPolicyInput) (*PutScalingPolicyOutput, error) { req, out := c.PutScalingPolicyRequest(input) return out, req.Send() @@ -4217,7 +4243,7 @@ const opPutScheduledUpdateGroupAction = "PutScheduledUpdateGroupAction" // PutScheduledUpdateGroupActionRequest generates a "aws/request.Request" representing the // client's request for the PutScheduledUpdateGroupAction operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -4238,7 +4264,7 @@ const opPutScheduledUpdateGroupAction = "PutScheduledUpdateGroupAction" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/PutScheduledUpdateGroupAction +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/PutScheduledUpdateGroupAction func (c *AutoScaling) PutScheduledUpdateGroupActionRequest(input *PutScheduledUpdateGroupActionInput) (req *request.Request, output *PutScheduledUpdateGroupActionOutput) { op := &request.Operation{ Name: opPutScheduledUpdateGroupAction, @@ -4287,7 +4313,7 @@ func (c *AutoScaling) PutScheduledUpdateGroupActionRequest(input *PutScheduledUp // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/PutScheduledUpdateGroupAction +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/PutScheduledUpdateGroupAction func (c *AutoScaling) PutScheduledUpdateGroupAction(input *PutScheduledUpdateGroupActionInput) (*PutScheduledUpdateGroupActionOutput, error) { req, out := c.PutScheduledUpdateGroupActionRequest(input) return out, req.Send() @@ -4313,7 +4339,7 @@ const opRecordLifecycleActionHeartbeat = "RecordLifecycleActionHeartbeat" // RecordLifecycleActionHeartbeatRequest generates a "aws/request.Request" representing the // client's request for the RecordLifecycleActionHeartbeat operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -4334,7 +4360,7 @@ const opRecordLifecycleActionHeartbeat = "RecordLifecycleActionHeartbeat" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/RecordLifecycleActionHeartbeat +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/RecordLifecycleActionHeartbeat func (c *AutoScaling) RecordLifecycleActionHeartbeatRequest(input *RecordLifecycleActionHeartbeatInput) (req *request.Request, output *RecordLifecycleActionHeartbeatOutput) { op := &request.Operation{ Name: opRecordLifecycleActionHeartbeat, @@ -4390,7 +4416,7 @@ func (c *AutoScaling) RecordLifecycleActionHeartbeatRequest(input *RecordLifecyc // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/RecordLifecycleActionHeartbeat +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/RecordLifecycleActionHeartbeat func (c *AutoScaling) RecordLifecycleActionHeartbeat(input *RecordLifecycleActionHeartbeatInput) (*RecordLifecycleActionHeartbeatOutput, error) { req, out := c.RecordLifecycleActionHeartbeatRequest(input) return out, req.Send() @@ -4416,7 +4442,7 @@ const opResumeProcesses = "ResumeProcesses" // ResumeProcessesRequest generates a "aws/request.Request" representing the // client's request for the ResumeProcesses operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -4437,7 +4463,7 @@ const opResumeProcesses = "ResumeProcesses" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/ResumeProcesses +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/ResumeProcesses func (c *AutoScaling) ResumeProcessesRequest(input *ScalingProcessQuery) (req *request.Request, output *ResumeProcessesOutput) { op := &request.Operation{ Name: opResumeProcesses, @@ -4480,7 +4506,7 @@ func (c *AutoScaling) ResumeProcessesRequest(input *ScalingProcessQuery) (req *r // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/ResumeProcesses +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/ResumeProcesses func (c *AutoScaling) ResumeProcesses(input *ScalingProcessQuery) (*ResumeProcessesOutput, error) { req, out := c.ResumeProcessesRequest(input) return out, req.Send() @@ -4506,7 +4532,7 @@ const opSetDesiredCapacity = "SetDesiredCapacity" // SetDesiredCapacityRequest generates a "aws/request.Request" representing the // client's request for the SetDesiredCapacity operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -4527,7 +4553,7 @@ const opSetDesiredCapacity = "SetDesiredCapacity" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/SetDesiredCapacity +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/SetDesiredCapacity func (c *AutoScaling) SetDesiredCapacityRequest(input *SetDesiredCapacityInput) (req *request.Request, output *SetDesiredCapacityOutput) { op := &request.Operation{ Name: opSetDesiredCapacity, @@ -4569,7 +4595,7 @@ func (c *AutoScaling) SetDesiredCapacityRequest(input *SetDesiredCapacityInput) // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/SetDesiredCapacity +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/SetDesiredCapacity func (c *AutoScaling) SetDesiredCapacity(input *SetDesiredCapacityInput) (*SetDesiredCapacityOutput, error) { req, out := c.SetDesiredCapacityRequest(input) return out, req.Send() @@ -4595,7 +4621,7 @@ const opSetInstanceHealth = "SetInstanceHealth" // SetInstanceHealthRequest generates a "aws/request.Request" representing the // client's request for the SetInstanceHealth operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -4616,7 +4642,7 @@ const opSetInstanceHealth = "SetInstanceHealth" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/SetInstanceHealth +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/SetInstanceHealth func (c *AutoScaling) SetInstanceHealthRequest(input *SetInstanceHealthInput) (req *request.Request, output *SetInstanceHealthOutput) { op := &request.Operation{ Name: opSetInstanceHealth, @@ -4654,7 +4680,7 @@ func (c *AutoScaling) SetInstanceHealthRequest(input *SetInstanceHealthInput) (r // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/SetInstanceHealth +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/SetInstanceHealth func (c *AutoScaling) SetInstanceHealth(input *SetInstanceHealthInput) (*SetInstanceHealthOutput, error) { req, out := c.SetInstanceHealthRequest(input) return out, req.Send() @@ -4680,7 +4706,7 @@ const opSetInstanceProtection = "SetInstanceProtection" // SetInstanceProtectionRequest generates a "aws/request.Request" representing the // client's request for the SetInstanceProtection operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -4701,7 +4727,7 @@ const opSetInstanceProtection = "SetInstanceProtection" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/SetInstanceProtection +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/SetInstanceProtection func (c *AutoScaling) SetInstanceProtectionRequest(input *SetInstanceProtectionInput) (req *request.Request, output *SetInstanceProtectionOutput) { op := &request.Operation{ Name: opSetInstanceProtection, @@ -4742,7 +4768,7 @@ func (c *AutoScaling) SetInstanceProtectionRequest(input *SetInstanceProtectionI // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/SetInstanceProtection +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/SetInstanceProtection func (c *AutoScaling) SetInstanceProtection(input *SetInstanceProtectionInput) (*SetInstanceProtectionOutput, error) { req, out := c.SetInstanceProtectionRequest(input) return out, req.Send() @@ -4768,7 +4794,7 @@ const opSuspendProcesses = "SuspendProcesses" // SuspendProcessesRequest generates a "aws/request.Request" representing the // client's request for the SuspendProcesses operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -4789,7 +4815,7 @@ const opSuspendProcesses = "SuspendProcesses" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/SuspendProcesses +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/SuspendProcesses func (c *AutoScaling) SuspendProcessesRequest(input *ScalingProcessQuery) (req *request.Request, output *SuspendProcessesOutput) { op := &request.Operation{ Name: opSuspendProcesses, @@ -4837,7 +4863,7 @@ func (c *AutoScaling) SuspendProcessesRequest(input *ScalingProcessQuery) (req * // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/SuspendProcesses +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/SuspendProcesses func (c *AutoScaling) SuspendProcesses(input *ScalingProcessQuery) (*SuspendProcessesOutput, error) { req, out := c.SuspendProcessesRequest(input) return out, req.Send() @@ -4863,7 +4889,7 @@ const opTerminateInstanceInAutoScalingGroup = "TerminateInstanceInAutoScalingGro // TerminateInstanceInAutoScalingGroupRequest generates a "aws/request.Request" representing the // client's request for the TerminateInstanceInAutoScalingGroup operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -4884,7 +4910,7 @@ const opTerminateInstanceInAutoScalingGroup = "TerminateInstanceInAutoScalingGro // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/TerminateInstanceInAutoScalingGroup +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/TerminateInstanceInAutoScalingGroup func (c *AutoScaling) TerminateInstanceInAutoScalingGroupRequest(input *TerminateInstanceInAutoScalingGroupInput) (req *request.Request, output *TerminateInstanceInAutoScalingGroupOutput) { op := &request.Operation{ Name: opTerminateInstanceInAutoScalingGroup, @@ -4925,7 +4951,7 @@ func (c *AutoScaling) TerminateInstanceInAutoScalingGroupRequest(input *Terminat // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/TerminateInstanceInAutoScalingGroup +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/TerminateInstanceInAutoScalingGroup func (c *AutoScaling) TerminateInstanceInAutoScalingGroup(input *TerminateInstanceInAutoScalingGroupInput) (*TerminateInstanceInAutoScalingGroupOutput, error) { req, out := c.TerminateInstanceInAutoScalingGroupRequest(input) return out, req.Send() @@ -4951,7 +4977,7 @@ const opUpdateAutoScalingGroup = "UpdateAutoScalingGroup" // UpdateAutoScalingGroupRequest generates a "aws/request.Request" representing the // client's request for the UpdateAutoScalingGroup operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -4972,7 +4998,7 @@ const opUpdateAutoScalingGroup = "UpdateAutoScalingGroup" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/UpdateAutoScalingGroup +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/UpdateAutoScalingGroup func (c *AutoScaling) UpdateAutoScalingGroupRequest(input *UpdateAutoScalingGroupInput) (req *request.Request, output *UpdateAutoScalingGroupOutput) { op := &request.Operation{ Name: opUpdateAutoScalingGroup, @@ -5033,7 +5059,10 @@ func (c *AutoScaling) UpdateAutoScalingGroupRequest(input *UpdateAutoScalingGrou // You already have a pending update to an Auto Scaling resource (for example, // a group, instance, or load balancer). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/UpdateAutoScalingGroup +// * ErrCodeServiceLinkedRoleFailure "ServiceLinkedRoleFailure" +// The service-linked role is not yet ready for use. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/UpdateAutoScalingGroup func (c *AutoScaling) UpdateAutoScalingGroup(input *UpdateAutoScalingGroupInput) (*UpdateAutoScalingGroupOutput, error) { req, out := c.UpdateAutoScalingGroupRequest(input) return out, req.Send() @@ -5058,7 +5087,6 @@ func (c *AutoScaling) UpdateAutoScalingGroupWithContext(ctx aws.Context, input * // Describes scaling activity, which is a long-running process that represents // a change to your Auto Scaling group, such as changing its size or replacing // an instance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/Activity type Activity struct { _ struct{} `type:"structure"` @@ -5177,7 +5205,6 @@ func (s *Activity) SetStatusMessage(v string) *Activity { // // For more information, see Dynamic Scaling (http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/as-scale-based-on-demand.html) // in the Auto Scaling User Guide. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/AdjustmentType type AdjustmentType struct { _ struct{} `type:"structure"` @@ -5203,7 +5230,6 @@ func (s *AdjustmentType) SetAdjustmentType(v string) *AdjustmentType { } // Describes an alarm. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/Alarm type Alarm struct { _ struct{} `type:"structure"` @@ -5236,16 +5262,15 @@ func (s *Alarm) SetAlarmName(v string) *Alarm { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/AttachInstancesQuery type AttachInstancesInput struct { _ struct{} `type:"structure"` - // The name of the group. + // The name of the Auto Scaling group. // // AutoScalingGroupName is a required field AutoScalingGroupName *string `min:"1" type:"string" required:"true"` - // One or more instance IDs. + // The IDs of the instances. You can specify up to 20 instances. InstanceIds []*string `type:"list"` } @@ -5287,7 +5312,6 @@ func (s *AttachInstancesInput) SetInstanceIds(v []*string) *AttachInstancesInput return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/AttachInstancesOutput type AttachInstancesOutput struct { _ struct{} `type:"structure"` } @@ -5302,7 +5326,6 @@ func (s AttachInstancesOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/AttachLoadBalancerTargetGroupsType type AttachLoadBalancerTargetGroupsInput struct { _ struct{} `type:"structure"` @@ -5311,7 +5334,8 @@ type AttachLoadBalancerTargetGroupsInput struct { // AutoScalingGroupName is a required field AutoScalingGroupName *string `min:"1" type:"string" required:"true"` - // The Amazon Resource Names (ARN) of the target groups. + // The Amazon Resource Names (ARN) of the target groups. You can specify up + // to 10 target groups. // // TargetGroupARNs is a required field TargetGroupARNs []*string `type:"list" required:"true"` @@ -5358,7 +5382,6 @@ func (s *AttachLoadBalancerTargetGroupsInput) SetTargetGroupARNs(v []*string) *A return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/AttachLoadBalancerTargetGroupsResultType type AttachLoadBalancerTargetGroupsOutput struct { _ struct{} `type:"structure"` } @@ -5373,16 +5396,15 @@ func (s AttachLoadBalancerTargetGroupsOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/AttachLoadBalancersType type AttachLoadBalancersInput struct { _ struct{} `type:"structure"` - // The name of the group. + // The name of the Auto Scaling group. // // AutoScalingGroupName is a required field AutoScalingGroupName *string `min:"1" type:"string" required:"true"` - // One or more load balancer names. + // The names of the load balancers. You can specify up to 10 load balancers. // // LoadBalancerNames is a required field LoadBalancerNames []*string `type:"list" required:"true"` @@ -5429,7 +5451,6 @@ func (s *AttachLoadBalancersInput) SetLoadBalancerNames(v []*string) *AttachLoad return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/AttachLoadBalancersResultType type AttachLoadBalancersOutput struct { _ struct{} `type:"structure"` } @@ -5445,7 +5466,6 @@ func (s AttachLoadBalancersOutput) GoString() string { } // Describes a block device mapping. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/BlockDeviceMapping type BlockDeviceMapping struct { _ struct{} `type:"structure"` @@ -5526,11 +5546,10 @@ func (s *BlockDeviceMapping) SetVirtualName(v string) *BlockDeviceMapping { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/CompleteLifecycleActionType type CompleteLifecycleActionInput struct { _ struct{} `type:"structure"` - // The name of the group for the lifecycle hook. + // The name of the Auto Scaling group. // // AutoScalingGroupName is a required field AutoScalingGroupName *string `min:"1" type:"string" required:"true"` @@ -5626,7 +5645,6 @@ func (s *CompleteLifecycleActionInput) SetLifecycleHookName(v string) *CompleteL return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/CompleteLifecycleActionAnswer type CompleteLifecycleActionOutput struct { _ struct{} `type:"structure"` } @@ -5641,12 +5659,11 @@ func (s CompleteLifecycleActionOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/CreateAutoScalingGroupType type CreateAutoScalingGroupInput struct { _ struct{} `type:"structure"` - // The name of the group. This name must be unique within the scope of your - // AWS account. + // The name of the Auto Scaling group. This name must be unique within the scope + // of your AWS account. // // AutoScalingGroupName is a required field AutoScalingGroupName *string `min:"1" type:"string" required:"true"` @@ -5687,7 +5704,8 @@ type CreateAutoScalingGroupInput struct { HealthCheckType *string `min:"1" type:"string"` // The ID of the instance used to create a launch configuration for the group. - // Alternatively, specify a launch configuration instead of an EC2 instance. + // You must specify one of the following: an EC2 instance, a launch configuration, + // or a launch template. // // When you specify an ID of an instance, Auto Scaling creates a new launch // configuration and associates it with the group. This launch configuration @@ -5699,10 +5717,14 @@ type CreateAutoScalingGroupInput struct { // in the Auto Scaling User Guide. InstanceId *string `min:"1" type:"string"` - // The name of the launch configuration. Alternatively, specify an EC2 instance - // instead of a launch configuration. + // The name of the launch configuration. You must specify one of the following: + // a launch configuration, a launch template, or an EC2 instance. LaunchConfigurationName *string `min:"1" type:"string"` + // The launch template to use to launch instances. You must specify one of the + // following: a launch template, a launch configuration, or an EC2 instance. + LaunchTemplate *LaunchTemplateSpecification `type:"structure"` + // One or more lifecycle hooks. LifecycleHookSpecificationList []*LifecycleHookSpecification `type:"list"` @@ -5733,6 +5755,12 @@ type CreateAutoScalingGroupInput struct { // in the Amazon Elastic Compute Cloud User Guide. PlacementGroup *string `min:"1" type:"string"` + // The Amazon Resource Name (ARN) of the service-linked role that the Auto Scaling + // group uses to call other AWS services on your behalf. By default, Auto Scaling + // uses a service-linked role named AWSServiceRoleForAutoScaling, which it creates + // if it does not exist. + ServiceLinkedRoleARN *string `min:"1" type:"string"` + // One or more tags. // // For more information, see Tagging Auto Scaling Groups and Instances (http://docs.aws.amazon.com/autoscaling/latest/userguide/autoscaling-tagging.html) @@ -5801,9 +5829,17 @@ func (s *CreateAutoScalingGroupInput) Validate() error { if s.PlacementGroup != nil && len(*s.PlacementGroup) < 1 { invalidParams.Add(request.NewErrParamMinLen("PlacementGroup", 1)) } + if s.ServiceLinkedRoleARN != nil && len(*s.ServiceLinkedRoleARN) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ServiceLinkedRoleARN", 1)) + } if s.VPCZoneIdentifier != nil && len(*s.VPCZoneIdentifier) < 1 { invalidParams.Add(request.NewErrParamMinLen("VPCZoneIdentifier", 1)) } + if s.LaunchTemplate != nil { + if err := s.LaunchTemplate.Validate(); err != nil { + invalidParams.AddNested("LaunchTemplate", err.(request.ErrInvalidParams)) + } + } if s.LifecycleHookSpecificationList != nil { for i, v := range s.LifecycleHookSpecificationList { if v == nil { @@ -5879,6 +5915,12 @@ func (s *CreateAutoScalingGroupInput) SetLaunchConfigurationName(v string) *Crea return s } +// SetLaunchTemplate sets the LaunchTemplate field's value. +func (s *CreateAutoScalingGroupInput) SetLaunchTemplate(v *LaunchTemplateSpecification) *CreateAutoScalingGroupInput { + s.LaunchTemplate = v + return s +} + // SetLifecycleHookSpecificationList sets the LifecycleHookSpecificationList field's value. func (s *CreateAutoScalingGroupInput) SetLifecycleHookSpecificationList(v []*LifecycleHookSpecification) *CreateAutoScalingGroupInput { s.LifecycleHookSpecificationList = v @@ -5915,6 +5957,12 @@ func (s *CreateAutoScalingGroupInput) SetPlacementGroup(v string) *CreateAutoSca return s } +// SetServiceLinkedRoleARN sets the ServiceLinkedRoleARN field's value. +func (s *CreateAutoScalingGroupInput) SetServiceLinkedRoleARN(v string) *CreateAutoScalingGroupInput { + s.ServiceLinkedRoleARN = &v + return s +} + // SetTags sets the Tags field's value. func (s *CreateAutoScalingGroupInput) SetTags(v []*Tag) *CreateAutoScalingGroupInput { s.Tags = v @@ -5939,7 +5987,6 @@ func (s *CreateAutoScalingGroupInput) SetVPCZoneIdentifier(v string) *CreateAuto return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/CreateAutoScalingGroupOutput type CreateAutoScalingGroupOutput struct { _ struct{} `type:"structure"` } @@ -5954,7 +6001,6 @@ func (s CreateAutoScalingGroupOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/CreateLaunchConfigurationType type CreateLaunchConfigurationInput struct { _ struct{} `type:"structure"` @@ -5967,9 +6013,8 @@ type CreateLaunchConfigurationInput struct { // you create your group. // // Default: If the instance is launched into a default subnet, the default is - // true. If the instance is launched into a nondefault subnet, the default is - // false. For more information, see Supported Platforms (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html) - // in the Amazon Elastic Compute Cloud User Guide. + // to assign a public IP address. If the instance is launched into a nondefault + // subnet, the default is not to assign a public IP address. AssociatePublicIpAddress *bool `type:"boolean"` // One or more mappings that specify how block devices are exposed to the instance. @@ -6276,7 +6321,6 @@ func (s *CreateLaunchConfigurationInput) SetUserData(v string) *CreateLaunchConf return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/CreateLaunchConfigurationOutput type CreateLaunchConfigurationOutput struct { _ struct{} `type:"structure"` } @@ -6291,7 +6335,6 @@ func (s CreateLaunchConfigurationOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/CreateOrUpdateTagsType type CreateOrUpdateTagsInput struct { _ struct{} `type:"structure"` @@ -6340,7 +6383,6 @@ func (s *CreateOrUpdateTagsInput) SetTags(v []*Tag) *CreateOrUpdateTagsInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/CreateOrUpdateTagsOutput type CreateOrUpdateTagsOutput struct { _ struct{} `type:"structure"` } @@ -6356,7 +6398,6 @@ func (s CreateOrUpdateTagsOutput) GoString() string { } // Configures a customized metric for a target tracking policy. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/CustomizedMetricSpecification type CustomizedMetricSpecification struct { _ struct{} `type:"structure"` @@ -6451,11 +6492,10 @@ func (s *CustomizedMetricSpecification) SetUnit(v string) *CustomizedMetricSpeci return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeleteAutoScalingGroupType type DeleteAutoScalingGroupInput struct { _ struct{} `type:"structure"` - // The name of the group to delete. + // The name of the Auto Scaling group. // // AutoScalingGroupName is a required field AutoScalingGroupName *string `min:"1" type:"string" required:"true"` @@ -6504,7 +6544,6 @@ func (s *DeleteAutoScalingGroupInput) SetForceDelete(v bool) *DeleteAutoScalingG return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeleteAutoScalingGroupOutput type DeleteAutoScalingGroupOutput struct { _ struct{} `type:"structure"` } @@ -6519,7 +6558,6 @@ func (s DeleteAutoScalingGroupOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/LaunchConfigurationNameType type DeleteLaunchConfigurationInput struct { _ struct{} `type:"structure"` @@ -6561,7 +6599,6 @@ func (s *DeleteLaunchConfigurationInput) SetLaunchConfigurationName(v string) *D return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeleteLaunchConfigurationOutput type DeleteLaunchConfigurationOutput struct { _ struct{} `type:"structure"` } @@ -6576,11 +6613,10 @@ func (s DeleteLaunchConfigurationOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeleteLifecycleHookType type DeleteLifecycleHookInput struct { _ struct{} `type:"structure"` - // The name of the Auto Scaling group for the lifecycle hook. + // The name of the Auto Scaling group. // // AutoScalingGroupName is a required field AutoScalingGroupName *string `min:"1" type:"string" required:"true"` @@ -6635,7 +6671,6 @@ func (s *DeleteLifecycleHookInput) SetLifecycleHookName(v string) *DeleteLifecyc return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeleteLifecycleHookAnswer type DeleteLifecycleHookOutput struct { _ struct{} `type:"structure"` } @@ -6650,7 +6685,6 @@ func (s DeleteLifecycleHookOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeleteNotificationConfigurationType type DeleteNotificationConfigurationInput struct { _ struct{} `type:"structure"` @@ -6710,7 +6744,6 @@ func (s *DeleteNotificationConfigurationInput) SetTopicARN(v string) *DeleteNoti return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeleteNotificationConfigurationOutput type DeleteNotificationConfigurationOutput struct { _ struct{} `type:"structure"` } @@ -6725,7 +6758,6 @@ func (s DeleteNotificationConfigurationOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeletePolicyType type DeletePolicyInput struct { _ struct{} `type:"structure"` @@ -6779,7 +6811,6 @@ func (s *DeletePolicyInput) SetPolicyName(v string) *DeletePolicyInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeletePolicyOutput type DeletePolicyOutput struct { _ struct{} `type:"structure"` } @@ -6794,7 +6825,6 @@ func (s DeletePolicyOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeleteScheduledActionType type DeleteScheduledActionInput struct { _ struct{} `type:"structure"` @@ -6853,7 +6883,6 @@ func (s *DeleteScheduledActionInput) SetScheduledActionName(v string) *DeleteSch return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeleteScheduledActionOutput type DeleteScheduledActionOutput struct { _ struct{} `type:"structure"` } @@ -6868,7 +6897,6 @@ func (s DeleteScheduledActionOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeleteTagsType type DeleteTagsInput struct { _ struct{} `type:"structure"` @@ -6917,7 +6945,6 @@ func (s *DeleteTagsInput) SetTags(v []*Tag) *DeleteTagsInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DeleteTagsOutput type DeleteTagsOutput struct { _ struct{} `type:"structure"` } @@ -6932,7 +6959,6 @@ func (s DeleteTagsOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeAccountLimitsInput type DescribeAccountLimitsInput struct { _ struct{} `type:"structure"` } @@ -6947,7 +6973,6 @@ func (s DescribeAccountLimitsInput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeAccountLimitsAnswer type DescribeAccountLimitsOutput struct { _ struct{} `type:"structure"` @@ -7000,7 +7025,6 @@ func (s *DescribeAccountLimitsOutput) SetNumberOfLaunchConfigurations(v int64) * return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeAdjustmentTypesInput type DescribeAdjustmentTypesInput struct { _ struct{} `type:"structure"` } @@ -7015,7 +7039,6 @@ func (s DescribeAdjustmentTypesInput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeAdjustmentTypesAnswer type DescribeAdjustmentTypesOutput struct { _ struct{} `type:"structure"` @@ -7039,12 +7062,11 @@ func (s *DescribeAdjustmentTypesOutput) SetAdjustmentTypes(v []*AdjustmentType) return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/GroupNamesType type DescribeAutoScalingGroupsInput struct { _ struct{} `type:"structure"` - // The group names. If you omit this parameter, all Auto Scaling groups are - // described. + // The names of the Auto Scaling groups. If you omit this parameter, all Auto + // Scaling groups are described. AutoScalingGroupNames []*string `type:"list"` // The maximum number of items to return with this call. The default value is @@ -7084,7 +7106,6 @@ func (s *DescribeAutoScalingGroupsInput) SetNextToken(v string) *DescribeAutoSca return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/GroupsType type DescribeAutoScalingGroupsOutput struct { _ struct{} `type:"structure"` @@ -7120,7 +7141,6 @@ func (s *DescribeAutoScalingGroupsOutput) SetNextToken(v string) *DescribeAutoSc return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeAutoScalingInstancesType type DescribeAutoScalingInstancesInput struct { _ struct{} `type:"structure"` @@ -7130,7 +7150,7 @@ type DescribeAutoScalingInstancesInput struct { InstanceIds []*string `type:"list"` // The maximum number of items to return with this call. The default value is - // 50 and the maximum value is 100. + // 50 and the maximum value is 50. MaxRecords *int64 `type:"integer"` // The token for the next set of items to return. (You received this token from @@ -7166,7 +7186,6 @@ func (s *DescribeAutoScalingInstancesInput) SetNextToken(v string) *DescribeAuto return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/InstancesType type DescribeAutoScalingInstancesOutput struct { _ struct{} `type:"structure"` @@ -7200,7 +7219,6 @@ func (s *DescribeAutoScalingInstancesOutput) SetNextToken(v string) *DescribeAut return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeAutoScalingNotificationTypesInput type DescribeAutoScalingNotificationTypesInput struct { _ struct{} `type:"structure"` } @@ -7215,7 +7233,6 @@ func (s DescribeAutoScalingNotificationTypesInput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeAutoScalingNotificationTypesAnswer type DescribeAutoScalingNotificationTypesOutput struct { _ struct{} `type:"structure"` @@ -7239,7 +7256,6 @@ func (s *DescribeAutoScalingNotificationTypesOutput) SetAutoScalingNotificationT return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/LaunchConfigurationNamesType type DescribeLaunchConfigurationsInput struct { _ struct{} `type:"structure"` @@ -7284,7 +7300,6 @@ func (s *DescribeLaunchConfigurationsInput) SetNextToken(v string) *DescribeLaun return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/LaunchConfigurationsType type DescribeLaunchConfigurationsOutput struct { _ struct{} `type:"structure"` @@ -7320,7 +7335,6 @@ func (s *DescribeLaunchConfigurationsOutput) SetNextToken(v string) *DescribeLau return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeLifecycleHookTypesInput type DescribeLifecycleHookTypesInput struct { _ struct{} `type:"structure"` } @@ -7335,7 +7349,6 @@ func (s DescribeLifecycleHookTypesInput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeLifecycleHookTypesAnswer type DescribeLifecycleHookTypesOutput struct { _ struct{} `type:"structure"` @@ -7359,11 +7372,10 @@ func (s *DescribeLifecycleHookTypesOutput) SetLifecycleHookTypes(v []*string) *D return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeLifecycleHooksType type DescribeLifecycleHooksInput struct { _ struct{} `type:"structure"` - // The name of the group. + // The name of the Auto Scaling group. // // AutoScalingGroupName is a required field AutoScalingGroupName *string `min:"1" type:"string" required:"true"` @@ -7411,7 +7423,6 @@ func (s *DescribeLifecycleHooksInput) SetLifecycleHookNames(v []*string) *Descri return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeLifecycleHooksAnswer type DescribeLifecycleHooksOutput struct { _ struct{} `type:"structure"` @@ -7435,7 +7446,6 @@ func (s *DescribeLifecycleHooksOutput) SetLifecycleHooks(v []*LifecycleHook) *De return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeLoadBalancerTargetGroupsRequest type DescribeLoadBalancerTargetGroupsInput struct { _ struct{} `type:"structure"` @@ -7445,7 +7455,7 @@ type DescribeLoadBalancerTargetGroupsInput struct { AutoScalingGroupName *string `min:"1" type:"string" required:"true"` // The maximum number of items to return with this call. The default value is - // 50 and the maximum value is 100. + // 100 and the maximum value is 100. MaxRecords *int64 `type:"integer"` // The token for the next set of items to return. (You received this token from @@ -7497,7 +7507,6 @@ func (s *DescribeLoadBalancerTargetGroupsInput) SetNextToken(v string) *Describe return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeLoadBalancerTargetGroupsResponse type DescribeLoadBalancerTargetGroupsOutput struct { _ struct{} `type:"structure"` @@ -7531,17 +7540,16 @@ func (s *DescribeLoadBalancerTargetGroupsOutput) SetNextToken(v string) *Describ return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeLoadBalancersRequest type DescribeLoadBalancersInput struct { _ struct{} `type:"structure"` - // The name of the group. + // The name of the Auto Scaling group. // // AutoScalingGroupName is a required field AutoScalingGroupName *string `min:"1" type:"string" required:"true"` // The maximum number of items to return with this call. The default value is - // 50 and the maximum value is 100. + // 100 and the maximum value is 100. MaxRecords *int64 `type:"integer"` // The token for the next set of items to return. (You received this token from @@ -7593,7 +7601,6 @@ func (s *DescribeLoadBalancersInput) SetNextToken(v string) *DescribeLoadBalance return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeLoadBalancersResponse type DescribeLoadBalancersOutput struct { _ struct{} `type:"structure"` @@ -7627,7 +7634,6 @@ func (s *DescribeLoadBalancersOutput) SetNextToken(v string) *DescribeLoadBalanc return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeMetricCollectionTypesInput type DescribeMetricCollectionTypesInput struct { _ struct{} `type:"structure"` } @@ -7642,7 +7648,6 @@ func (s DescribeMetricCollectionTypesInput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeMetricCollectionTypesAnswer type DescribeMetricCollectionTypesOutput struct { _ struct{} `type:"structure"` @@ -7675,11 +7680,10 @@ func (s *DescribeMetricCollectionTypesOutput) SetMetrics(v []*MetricCollectionTy return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeNotificationConfigurationsType type DescribeNotificationConfigurationsInput struct { _ struct{} `type:"structure"` - // The name of the group. + // The name of the Auto Scaling group. AutoScalingGroupNames []*string `type:"list"` // The maximum number of items to return with this call. The default value is @@ -7719,7 +7723,6 @@ func (s *DescribeNotificationConfigurationsInput) SetNextToken(v string) *Descri return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeNotificationConfigurationsAnswer type DescribeNotificationConfigurationsOutput struct { _ struct{} `type:"structure"` @@ -7755,11 +7758,10 @@ func (s *DescribeNotificationConfigurationsOutput) SetNotificationConfigurations return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribePoliciesType type DescribePoliciesInput struct { _ struct{} `type:"structure"` - // The name of the group. + // The name of the Auto Scaling group. AutoScalingGroupName *string `min:"1" type:"string"` // The maximum number of items to be returned with each call. The default value @@ -7770,10 +7772,10 @@ type DescribePoliciesInput struct { // a previous call.) NextToken *string `type:"string"` - // One or more policy names or policy ARNs to be described. If you omit this - // parameter, all policy names are described. If an group name is provided, - // the results are limited to that group. This list is limited to 50 items. - // If you specify an unknown policy name, it is ignored with no error. + // The names of one or more policies. If you omit this parameter, all policies + // are described. If an group name is provided, the results are limited to that + // group. This list is limited to 50 items. If you specify an unknown policy + // name, it is ignored with no error. PolicyNames []*string `type:"list"` // One or more policy types. Valid values are SimpleScaling and StepScaling. @@ -7833,7 +7835,6 @@ func (s *DescribePoliciesInput) SetPolicyTypes(v []*string) *DescribePoliciesInp return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/PoliciesType type DescribePoliciesOutput struct { _ struct{} `type:"structure"` @@ -7867,7 +7868,6 @@ func (s *DescribePoliciesOutput) SetScalingPolicies(v []*ScalingPolicy) *Describ return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeScalingActivitiesType type DescribeScalingActivitiesInput struct { _ struct{} `type:"structure"` @@ -7878,11 +7878,11 @@ type DescribeScalingActivitiesInput struct { // they are ignored with no error. ActivityIds []*string `type:"list"` - // The name of the group. + // The name of the Auto Scaling group. AutoScalingGroupName *string `min:"1" type:"string"` // The maximum number of items to return with this call. The default value is - // 100. + // 100 and the maximum value is 100. MaxRecords *int64 `type:"integer"` // The token for the next set of items to return. (You received this token from @@ -7937,7 +7937,6 @@ func (s *DescribeScalingActivitiesInput) SetNextToken(v string) *DescribeScaling return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/ActivitiesType type DescribeScalingActivitiesOutput struct { _ struct{} `type:"structure"` @@ -7974,7 +7973,6 @@ func (s *DescribeScalingActivitiesOutput) SetNextToken(v string) *DescribeScalin return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeScalingProcessTypesInput type DescribeScalingProcessTypesInput struct { _ struct{} `type:"structure"` } @@ -7989,7 +7987,6 @@ func (s DescribeScalingProcessTypesInput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/ProcessesType type DescribeScalingProcessTypesOutput struct { _ struct{} `type:"structure"` @@ -8013,11 +8010,10 @@ func (s *DescribeScalingProcessTypesOutput) SetProcesses(v []*ProcessType) *Desc return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeScheduledActionsType type DescribeScheduledActionsInput struct { _ struct{} `type:"structure"` - // The name of the group. + // The name of the Auto Scaling group. AutoScalingGroupName *string `min:"1" type:"string"` // The latest scheduled start time to return. If scheduled action names are @@ -8105,7 +8101,6 @@ func (s *DescribeScheduledActionsInput) SetStartTime(v time.Time) *DescribeSched return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/ScheduledActionsType type DescribeScheduledActionsOutput struct { _ struct{} `type:"structure"` @@ -8139,7 +8134,6 @@ func (s *DescribeScheduledActionsOutput) SetScheduledUpdateGroupActions(v []*Sch return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeTagsType type DescribeTagsInput struct { _ struct{} `type:"structure"` @@ -8183,7 +8177,6 @@ func (s *DescribeTagsInput) SetNextToken(v string) *DescribeTagsInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/TagsType type DescribeTagsOutput struct { _ struct{} `type:"structure"` @@ -8217,7 +8210,6 @@ func (s *DescribeTagsOutput) SetTags(v []*TagDescription) *DescribeTagsOutput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeTerminationPolicyTypesInput type DescribeTerminationPolicyTypesInput struct { _ struct{} `type:"structure"` } @@ -8232,7 +8224,6 @@ func (s DescribeTerminationPolicyTypesInput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DescribeTerminationPolicyTypesAnswer type DescribeTerminationPolicyTypesOutput struct { _ struct{} `type:"structure"` @@ -8257,20 +8248,19 @@ func (s *DescribeTerminationPolicyTypesOutput) SetTerminationPolicyTypes(v []*st return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DetachInstancesQuery type DetachInstancesInput struct { _ struct{} `type:"structure"` - // The name of the group. + // The name of the Auto Scaling group. // // AutoScalingGroupName is a required field AutoScalingGroupName *string `min:"1" type:"string" required:"true"` - // One or more instance IDs. + // The IDs of the instances. You can specify up to 20 instances. InstanceIds []*string `type:"list"` - // If True, the Auto Scaling group decrements the desired capacity value by - // the number of instances detached. + // Indicates whether the Auto Scaling group decrements the desired capacity + // value by the number of instances detached. // // ShouldDecrementDesiredCapacity is a required field ShouldDecrementDesiredCapacity *bool `type:"boolean" required:"true"` @@ -8323,7 +8313,6 @@ func (s *DetachInstancesInput) SetShouldDecrementDesiredCapacity(v bool) *Detach return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DetachInstancesAnswer type DetachInstancesOutput struct { _ struct{} `type:"structure"` @@ -8347,7 +8336,6 @@ func (s *DetachInstancesOutput) SetActivities(v []*Activity) *DetachInstancesOut return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DetachLoadBalancerTargetGroupsType type DetachLoadBalancerTargetGroupsInput struct { _ struct{} `type:"structure"` @@ -8356,7 +8344,8 @@ type DetachLoadBalancerTargetGroupsInput struct { // AutoScalingGroupName is a required field AutoScalingGroupName *string `min:"1" type:"string" required:"true"` - // The Amazon Resource Names (ARN) of the target groups. + // The Amazon Resource Names (ARN) of the target groups. You can specify up + // to 10 target groups. // // TargetGroupARNs is a required field TargetGroupARNs []*string `type:"list" required:"true"` @@ -8403,7 +8392,6 @@ func (s *DetachLoadBalancerTargetGroupsInput) SetTargetGroupARNs(v []*string) *D return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DetachLoadBalancerTargetGroupsResultType type DetachLoadBalancerTargetGroupsOutput struct { _ struct{} `type:"structure"` } @@ -8418,7 +8406,6 @@ func (s DetachLoadBalancerTargetGroupsOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DetachLoadBalancersType type DetachLoadBalancersInput struct { _ struct{} `type:"structure"` @@ -8427,7 +8414,7 @@ type DetachLoadBalancersInput struct { // AutoScalingGroupName is a required field AutoScalingGroupName *string `min:"1" type:"string" required:"true"` - // One or more load balancer names. + // The names of the load balancers. You can specify up to 10 load balancers. // // LoadBalancerNames is a required field LoadBalancerNames []*string `type:"list" required:"true"` @@ -8474,7 +8461,6 @@ func (s *DetachLoadBalancersInput) SetLoadBalancerNames(v []*string) *DetachLoad return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DetachLoadBalancersResultType type DetachLoadBalancersOutput struct { _ struct{} `type:"structure"` } @@ -8489,11 +8475,10 @@ func (s DetachLoadBalancersOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DisableMetricsCollectionQuery type DisableMetricsCollectionInput struct { _ struct{} `type:"structure"` - // The name or Amazon Resource Name (ARN) of the group. + // The name of the Auto Scaling group. // // AutoScalingGroupName is a required field AutoScalingGroupName *string `min:"1" type:"string" required:"true"` @@ -8557,7 +8542,6 @@ func (s *DisableMetricsCollectionInput) SetMetrics(v []*string) *DisableMetricsC return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/DisableMetricsCollectionOutput type DisableMetricsCollectionOutput struct { _ struct{} `type:"structure"` } @@ -8573,13 +8557,11 @@ func (s DisableMetricsCollectionOutput) GoString() string { } // Describes an Amazon EBS volume. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/Ebs type Ebs struct { _ struct{} `type:"structure"` - // Indicates whether the volume is deleted on instance termination. - // - // Default: true + // Indicates whether the volume is deleted on instance termination. The default + // is true. DeleteOnTermination *bool `type:"boolean"` // Indicates whether the volume should be encrypted. Encrypted EBS volumes must @@ -8685,11 +8667,10 @@ func (s *Ebs) SetVolumeType(v string) *Ebs { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/EnableMetricsCollectionQuery type EnableMetricsCollectionInput struct { _ struct{} `type:"structure"` - // The name or ARN of the Auto Scaling group. + // The name of the Auto Scaling group. // // AutoScalingGroupName is a required field AutoScalingGroupName *string `min:"1" type:"string" required:"true"` @@ -8771,7 +8752,6 @@ func (s *EnableMetricsCollectionInput) SetMetrics(v []*string) *EnableMetricsCol return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/EnableMetricsCollectionOutput type EnableMetricsCollectionOutput struct { _ struct{} `type:"structure"` } @@ -8787,7 +8767,6 @@ func (s EnableMetricsCollectionOutput) GoString() string { } // Describes an enabled metric. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/EnabledMetric type EnabledMetric struct { _ struct{} `type:"structure"` @@ -8836,7 +8815,6 @@ func (s *EnabledMetric) SetMetric(v string) *EnabledMetric { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/EnterStandbyQuery type EnterStandbyInput struct { _ struct{} `type:"structure"` @@ -8845,14 +8823,11 @@ type EnterStandbyInput struct { // AutoScalingGroupName is a required field AutoScalingGroupName *string `min:"1" type:"string" required:"true"` - // One or more instances to move into Standby mode. You must specify at least - // one instance ID. + // The IDs of the instances. You can specify up to 20 instances. InstanceIds []*string `type:"list"` - // Specifies whether the instances moved to Standby mode count as part of the - // Auto Scaling group's desired capacity. If set, the desired capacity for the - // Auto Scaling group decrements by the number of instances moved to Standby - // mode. + // Indicates whether to decrement the desired capacity of the Auto Scaling group + // by the number of instances moved to Standby mode. // // ShouldDecrementDesiredCapacity is a required field ShouldDecrementDesiredCapacity *bool `type:"boolean" required:"true"` @@ -8905,7 +8880,6 @@ func (s *EnterStandbyInput) SetShouldDecrementDesiredCapacity(v bool) *EnterStan return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/EnterStandbyAnswer type EnterStandbyOutput struct { _ struct{} `type:"structure"` @@ -8929,11 +8903,10 @@ func (s *EnterStandbyOutput) SetActivities(v []*Activity) *EnterStandbyOutput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/ExecutePolicyType type ExecutePolicyInput struct { _ struct{} `type:"structure"` - // The name or Amazon Resource Name (ARN) of the Auto Scaling group. + // The name of the Auto Scaling group. AutoScalingGroupName *string `min:"1" type:"string"` // The breach threshold for the alarm. @@ -8942,9 +8915,8 @@ type ExecutePolicyInput struct { // otherwise. BreachThreshold *float64 `type:"double"` - // If this parameter is true, Auto Scaling waits for the cooldown period to - // complete before executing the policy. Otherwise, Auto Scaling executes the - // policy without waiting for the cooldown period to complete. + // Indicates whether Auto Scaling waits for the cooldown period to complete + // before executing the policy. // // This parameter is not supported if the policy type is StepScaling. // @@ -9030,7 +9002,6 @@ func (s *ExecutePolicyInput) SetPolicyName(v string) *ExecutePolicyInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/ExecutePolicyOutput type ExecutePolicyOutput struct { _ struct{} `type:"structure"` } @@ -9045,7 +9016,6 @@ func (s ExecutePolicyOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/ExitStandbyQuery type ExitStandbyInput struct { _ struct{} `type:"structure"` @@ -9054,7 +9024,7 @@ type ExitStandbyInput struct { // AutoScalingGroupName is a required field AutoScalingGroupName *string `min:"1" type:"string" required:"true"` - // One or more instance IDs. You must specify at least one instance ID. + // The IDs of the instances. You can specify up to 20 instances. InstanceIds []*string `type:"list"` } @@ -9096,7 +9066,6 @@ func (s *ExitStandbyInput) SetInstanceIds(v []*string) *ExitStandbyInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/ExitStandbyAnswer type ExitStandbyOutput struct { _ struct{} `type:"structure"` @@ -9121,7 +9090,6 @@ func (s *ExitStandbyOutput) SetActivities(v []*Activity) *ExitStandbyOutput { } // Describes a filter. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/Filter type Filter struct { _ struct{} `type:"structure"` @@ -9156,14 +9124,13 @@ func (s *Filter) SetValues(v []*string) *Filter { } // Describes an Auto Scaling group. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/AutoScalingGroup type Group struct { _ struct{} `type:"structure"` - // The Amazon Resource Name (ARN) of the group. + // The Amazon Resource Name (ARN) of the Auto Scaling group. AutoScalingGroupARN *string `min:"1" type:"string"` - // The name of the group. + // The name of the Auto Scaling group. // // AutoScalingGroupName is a required field AutoScalingGroupName *string `min:"1" type:"string" required:"true"` @@ -9207,6 +9174,9 @@ type Group struct { // The name of the associated launch configuration. LaunchConfigurationName *string `min:"1" type:"string"` + // The launch template for the group. + LaunchTemplate *LaunchTemplateSpecification `type:"structure"` + // One or more load balancers associated with the group. LoadBalancerNames []*string `type:"list"` @@ -9229,6 +9199,10 @@ type Group struct { // in the Amazon Elastic Compute Cloud User Guide. PlacementGroup *string `min:"1" type:"string"` + // The Amazon Resource Name (ARN) of the service-linked role that the Auto Scaling + // group uses to call other AWS services on your behalf. + ServiceLinkedRoleARN *string `min:"1" type:"string"` + // The current state of the group when DeleteAutoScalingGroup is in progress. Status *string `min:"1" type:"string"` @@ -9327,6 +9301,12 @@ func (s *Group) SetLaunchConfigurationName(v string) *Group { return s } +// SetLaunchTemplate sets the LaunchTemplate field's value. +func (s *Group) SetLaunchTemplate(v *LaunchTemplateSpecification) *Group { + s.LaunchTemplate = v + return s +} + // SetLoadBalancerNames sets the LoadBalancerNames field's value. func (s *Group) SetLoadBalancerNames(v []*string) *Group { s.LoadBalancerNames = v @@ -9357,6 +9337,12 @@ func (s *Group) SetPlacementGroup(v string) *Group { return s } +// SetServiceLinkedRoleARN sets the ServiceLinkedRoleARN field's value. +func (s *Group) SetServiceLinkedRoleARN(v string) *Group { + s.ServiceLinkedRoleARN = &v + return s +} + // SetStatus sets the Status field's value. func (s *Group) SetStatus(v string) *Group { s.Status = &v @@ -9394,7 +9380,6 @@ func (s *Group) SetVPCZoneIdentifier(v string) *Group { } // Describes an EC2 instance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/Instance type Instance struct { _ struct{} `type:"structure"` @@ -9416,9 +9401,10 @@ type Instance struct { InstanceId *string `min:"1" type:"string" required:"true"` // The launch configuration associated with the instance. - // - // LaunchConfigurationName is a required field - LaunchConfigurationName *string `min:"1" type:"string" required:"true"` + LaunchConfigurationName *string `min:"1" type:"string"` + + // The launch template for the instance. + LaunchTemplate *LaunchTemplateSpecification `type:"structure"` // A description of the current lifecycle state. Note that the Quarantined state // is not used. @@ -9467,6 +9453,12 @@ func (s *Instance) SetLaunchConfigurationName(v string) *Instance { return s } +// SetLaunchTemplate sets the LaunchTemplate field's value. +func (s *Instance) SetLaunchTemplate(v *LaunchTemplateSpecification) *Instance { + s.LaunchTemplate = v + return s +} + // SetLifecycleState sets the LifecycleState field's value. func (s *Instance) SetLifecycleState(v string) *Instance { s.LifecycleState = &v @@ -9480,11 +9472,10 @@ func (s *Instance) SetProtectedFromScaleIn(v bool) *Instance { } // Describes an EC2 instance associated with an Auto Scaling group. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/AutoScalingInstanceDetails type InstanceDetails struct { _ struct{} `type:"structure"` - // The name of the Auto Scaling group associated with the instance. + // The name of the Auto Scaling group for the instance. // // AutoScalingGroupName is a required field AutoScalingGroupName *string `min:"1" type:"string" required:"true"` @@ -9508,9 +9499,10 @@ type InstanceDetails struct { // The launch configuration used to launch the instance. This value is not available // if you attached the instance to the Auto Scaling group. - // - // LaunchConfigurationName is a required field - LaunchConfigurationName *string `min:"1" type:"string" required:"true"` + LaunchConfigurationName *string `min:"1" type:"string"` + + // The launch template for the instance. + LaunchTemplate *LaunchTemplateSpecification `type:"structure"` // The lifecycle state for the instance. For more information, see Auto Scaling // Lifecycle (http://docs.aws.amazon.com/autoscaling/latest/userguide/AutoScalingGroupLifecycle.html) @@ -9566,6 +9558,12 @@ func (s *InstanceDetails) SetLaunchConfigurationName(v string) *InstanceDetails return s } +// SetLaunchTemplate sets the LaunchTemplate field's value. +func (s *InstanceDetails) SetLaunchTemplate(v *LaunchTemplateSpecification) *InstanceDetails { + s.LaunchTemplate = v + return s +} + // SetLifecycleState sets the LifecycleState field's value. func (s *InstanceDetails) SetLifecycleState(v string) *InstanceDetails { s.LifecycleState = &v @@ -9579,7 +9577,6 @@ func (s *InstanceDetails) SetProtectedFromScaleIn(v bool) *InstanceDetails { } // Describes whether detailed monitoring is enabled for the Auto Scaling instances. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/InstanceMonitoring type InstanceMonitoring struct { _ struct{} `type:"structure"` @@ -9604,7 +9601,6 @@ func (s *InstanceMonitoring) SetEnabled(v bool) *InstanceMonitoring { } // Describes a launch configuration. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/LaunchConfiguration type LaunchConfiguration struct { _ struct{} `type:"structure"` @@ -9808,12 +9804,77 @@ func (s *LaunchConfiguration) SetUserData(v string) *LaunchConfiguration { return s } +// Describes a launch template. +type LaunchTemplateSpecification struct { + _ struct{} `type:"structure"` + + // The ID of the launch template. You must specify either a template ID or a + // template name. + LaunchTemplateId *string `min:"1" type:"string"` + + // The name of the launch template. You must specify either a template name + // or a template ID. + LaunchTemplateName *string `min:"3" type:"string"` + + // The version number, $Latest, or $Default. If the value is $Latest, Auto Scaling + // selects the latest version of the launch template when launching instances. + // If the value is $Default, Auto Scaling selects the default version of the + // launch template when launching instances. The default value is $Default. + Version *string `min:"1" type:"string"` +} + +// String returns the string representation +func (s LaunchTemplateSpecification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateSpecification) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *LaunchTemplateSpecification) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "LaunchTemplateSpecification"} + if s.LaunchTemplateId != nil && len(*s.LaunchTemplateId) < 1 { + invalidParams.Add(request.NewErrParamMinLen("LaunchTemplateId", 1)) + } + if s.LaunchTemplateName != nil && len(*s.LaunchTemplateName) < 3 { + invalidParams.Add(request.NewErrParamMinLen("LaunchTemplateName", 3)) + } + if s.Version != nil && len(*s.Version) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Version", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetLaunchTemplateId sets the LaunchTemplateId field's value. +func (s *LaunchTemplateSpecification) SetLaunchTemplateId(v string) *LaunchTemplateSpecification { + s.LaunchTemplateId = &v + return s +} + +// SetLaunchTemplateName sets the LaunchTemplateName field's value. +func (s *LaunchTemplateSpecification) SetLaunchTemplateName(v string) *LaunchTemplateSpecification { + s.LaunchTemplateName = &v + return s +} + +// SetVersion sets the Version field's value. +func (s *LaunchTemplateSpecification) SetVersion(v string) *LaunchTemplateSpecification { + s.Version = &v + return s +} + // Describes a lifecycle hook, which tells Auto Scaling that you want to perform // an action whenever it launches instances or whenever it terminates instances. // // For more information, see Auto Scaling Lifecycle Hooks (http://docs.aws.amazon.com/autoscaling/latest/userguide/lifecycle-hooks.html) // in the Auto Scaling User Guide. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/LifecycleHook type LifecycleHook struct { _ struct{} `type:"structure"` @@ -9925,13 +9986,12 @@ func (s *LifecycleHook) SetRoleARN(v string) *LifecycleHook { // // For more information, see Auto Scaling Lifecycle Hooks (http://docs.aws.amazon.com/autoscaling/latest/userguide/lifecycle-hooks.html) // in the Auto Scaling User Guide. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/LifecycleHookSpecification type LifecycleHookSpecification struct { _ struct{} `type:"structure"` // Defines the action the Auto Scaling group should take when the lifecycle // hook timeout elapses or if an unexpected failure occurs. The valid values - // are CONTINUE and ABANDON. The default value is CONTINUE. + // are CONTINUE and ABANDON. DefaultResult *string `type:"string"` // The maximum time, in seconds, that can elapse before the lifecycle hook times @@ -9946,7 +10006,9 @@ type LifecycleHookSpecification struct { // The state of the EC2 instance to which you want to attach the lifecycle hook. // For a list of lifecycle hook types, see DescribeLifecycleHookTypes. - LifecycleTransition *string `type:"string"` + // + // LifecycleTransition is a required field + LifecycleTransition *string `type:"string" required:"true"` // Additional information that you want to include any time Auto Scaling sends // a message to the notification target. @@ -9981,6 +10043,9 @@ func (s *LifecycleHookSpecification) Validate() error { if s.LifecycleHookName != nil && len(*s.LifecycleHookName) < 1 { invalidParams.Add(request.NewErrParamMinLen("LifecycleHookName", 1)) } + if s.LifecycleTransition == nil { + invalidParams.Add(request.NewErrParamRequired("LifecycleTransition")) + } if s.NotificationMetadata != nil && len(*s.NotificationMetadata) < 1 { invalidParams.Add(request.NewErrParamMinLen("NotificationMetadata", 1)) } @@ -10047,7 +10112,6 @@ func (s *LifecycleHookSpecification) SetRoleARN(v string) *LifecycleHookSpecific // for the load balancer, the state transitions to InService after at least // one instance in the group passes the health check. If EC2 health checks are // enabled instead, the load balancer remains in the Added state. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/LoadBalancerState type LoadBalancerState struct { _ struct{} `type:"structure"` @@ -10103,7 +10167,6 @@ func (s *LoadBalancerState) SetState(v string) *LoadBalancerState { // state transitions to InService after at least one Auto Scaling instance passes // the health check. If EC2 health checks are enabled instead, the target group // remains in the Added state. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/LoadBalancerTargetGroupState type LoadBalancerTargetGroupState struct { _ struct{} `type:"structure"` @@ -10152,7 +10215,6 @@ func (s *LoadBalancerTargetGroupState) SetState(v string) *LoadBalancerTargetGro } // Describes a metric. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/MetricCollectionType type MetricCollectionType struct { _ struct{} `type:"structure"` @@ -10193,7 +10255,6 @@ func (s *MetricCollectionType) SetMetric(v string) *MetricCollectionType { } // Describes the dimension of a metric. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/MetricDimension type MetricDimension struct { _ struct{} `type:"structure"` @@ -10247,7 +10308,6 @@ func (s *MetricDimension) SetValue(v string) *MetricDimension { } // Describes a granularity of a metric. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/MetricGranularityType type MetricGranularityType struct { _ struct{} `type:"structure"` @@ -10272,11 +10332,10 @@ func (s *MetricGranularityType) SetGranularity(v string) *MetricGranularityType } // Describes a notification. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/NotificationConfiguration type NotificationConfiguration struct { _ struct{} `type:"structure"` - // The name of the group. + // The name of the Auto Scaling group. AutoScalingGroupName *string `min:"1" type:"string"` // One of the following event notification types: @@ -10326,7 +10385,6 @@ func (s *NotificationConfiguration) SetTopicARN(v string) *NotificationConfigura } // Configures a predefined metric for a target tracking policy. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/PredefinedMetricSpecification type PredefinedMetricSpecification struct { _ struct{} `type:"structure"` @@ -10350,7 +10408,7 @@ type PredefinedMetricSpecification struct { // * ALBRequestCountPerTarget - number of requests completed per target in // an Application Load Balancer target group // - // For predefined metric types ASGAverageCPUUtilization, ASGAverageNetworkIn + // For predefined metric types ASGAverageCPUUtilization, ASGAverageNetworkIn, // and ASGAverageNetworkOut, the parameter must not be specified as the resource // associated with the metric type is the Auto Scaling group. For predefined // metric type ALBRequestCountPerTarget, the parameter must be specified in @@ -10404,7 +10462,6 @@ func (s *PredefinedMetricSpecification) SetResourceLabel(v string) *PredefinedMe // // For more information, see Auto Scaling Processes (http://docs.aws.amazon.com/autoscaling/latest/userguide/as-suspend-resume-processes.html#process-types) // in the Auto Scaling User Guide. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/ProcessType type ProcessType struct { _ struct{} `type:"structure"` @@ -10446,12 +10503,10 @@ func (s *ProcessType) SetProcessName(v string) *ProcessType { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/PutLifecycleHookType type PutLifecycleHookInput struct { _ struct{} `type:"structure"` - // The name of the Auto Scaling group to which you want to assign the lifecycle - // hook. + // The name of the Auto Scaling group. // // AutoScalingGroupName is a required field AutoScalingGroupName *string `min:"1" type:"string" required:"true"` @@ -10593,7 +10648,6 @@ func (s *PutLifecycleHookInput) SetRoleARN(v string) *PutLifecycleHookInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/PutLifecycleHookAnswer type PutLifecycleHookOutput struct { _ struct{} `type:"structure"` } @@ -10608,7 +10662,6 @@ func (s PutLifecycleHookOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/PutNotificationConfigurationType type PutNotificationConfigurationInput struct { _ struct{} `type:"structure"` @@ -10683,7 +10736,6 @@ func (s *PutNotificationConfigurationInput) SetTopicARN(v string) *PutNotificati return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/PutNotificationConfigurationOutput type PutNotificationConfigurationOutput struct { _ struct{} `type:"structure"` } @@ -10698,7 +10750,6 @@ func (s PutNotificationConfigurationOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/PutScalingPolicyType type PutScalingPolicyInput struct { _ struct{} `type:"structure"` @@ -10711,7 +10762,7 @@ type PutScalingPolicyInput struct { // in the Auto Scaling User Guide. AdjustmentType *string `min:"1" type:"string"` - // The name or ARN of the group. + // The name of the Auto Scaling group. // // AutoScalingGroupName is a required field AutoScalingGroupName *string `min:"1" type:"string" required:"true"` @@ -10911,7 +10962,6 @@ func (s *PutScalingPolicyInput) SetTargetTrackingConfiguration(v *TargetTracking } // Contains the output of PutScalingPolicy. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/PolicyARNType type PutScalingPolicyOutput struct { _ struct{} `type:"structure"` @@ -10944,11 +10994,10 @@ func (s *PutScalingPolicyOutput) SetPolicyARN(v string) *PutScalingPolicyOutput return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/PutScheduledUpdateGroupActionType type PutScheduledUpdateGroupActionInput struct { _ struct{} `type:"structure"` - // The name or Amazon Resource Name (ARN) of the Auto Scaling group. + // The name of the Auto Scaling group. // // AutoScalingGroupName is a required field AutoScalingGroupName *string `min:"1" type:"string" required:"true"` @@ -11078,7 +11127,6 @@ func (s *PutScheduledUpdateGroupActionInput) SetTime(v time.Time) *PutScheduledU return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/PutScheduledUpdateGroupActionOutput type PutScheduledUpdateGroupActionOutput struct { _ struct{} `type:"structure"` } @@ -11093,11 +11141,10 @@ func (s PutScheduledUpdateGroupActionOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/RecordLifecycleActionHeartbeatType type RecordLifecycleActionHeartbeatInput struct { _ struct{} `type:"structure"` - // The name of the Auto Scaling group for the hook. + // The name of the Auto Scaling group. // // AutoScalingGroupName is a required field AutoScalingGroupName *string `min:"1" type:"string" required:"true"` @@ -11178,7 +11225,6 @@ func (s *RecordLifecycleActionHeartbeatInput) SetLifecycleHookName(v string) *Re return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/RecordLifecycleActionHeartbeatAnswer type RecordLifecycleActionHeartbeatOutput struct { _ struct{} `type:"structure"` } @@ -11193,7 +11239,6 @@ func (s RecordLifecycleActionHeartbeatOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/ResumeProcessesOutput type ResumeProcessesOutput struct { _ struct{} `type:"structure"` } @@ -11209,7 +11254,6 @@ func (s ResumeProcessesOutput) GoString() string { } // Describes a scaling policy. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/ScalingPolicy type ScalingPolicy struct { _ struct{} `type:"structure"` @@ -11220,7 +11264,7 @@ type ScalingPolicy struct { // The CloudWatch alarms related to the policy. Alarms []*Alarm `type:"list"` - // The name of the Auto Scaling group associated with this scaling policy. + // The name of the Auto Scaling group. AutoScalingGroupName *string `min:"1" type:"string"` // The amount of time, in seconds, after a scaling activity completes before @@ -11360,11 +11404,10 @@ func (s *ScalingPolicy) SetTargetTrackingConfiguration(v *TargetTrackingConfigur return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/ScalingProcessQuery type ScalingProcessQuery struct { _ struct{} `type:"structure"` - // The name or Amazon Resource Name (ARN) of the Auto Scaling group. + // The name of the Auto Scaling group. // // AutoScalingGroupName is a required field AutoScalingGroupName *string `min:"1" type:"string" required:"true"` @@ -11429,11 +11472,10 @@ func (s *ScalingProcessQuery) SetScalingProcesses(v []*string) *ScalingProcessQu } // Describes a scheduled update to an Auto Scaling group. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/ScheduledUpdateGroupAction type ScheduledUpdateGroupAction struct { _ struct{} `type:"structure"` - // The name of the group. + // The name of the Auto Scaling group. AutoScalingGroupName *string `min:"1" type:"string"` // The number of instances you prefer to maintain in the group. @@ -11539,7 +11581,6 @@ func (s *ScheduledUpdateGroupAction) SetTime(v time.Time) *ScheduledUpdateGroupA return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/SetDesiredCapacityType type SetDesiredCapacityInput struct { _ struct{} `type:"structure"` @@ -11553,10 +11594,10 @@ type SetDesiredCapacityInput struct { // DesiredCapacity is a required field DesiredCapacity *int64 `type:"integer" required:"true"` - // By default, SetDesiredCapacity overrides any cooldown period associated with - // the Auto Scaling group. Specify True to make Auto Scaling to wait for the - // cool-down period associated with the Auto Scaling group to complete before - // initiating a scaling activity to set your Auto Scaling group to its new capacity. + // Indicates whether Auto Scaling waits for the cooldown period to complete + // before initiating a scaling activity to set your Auto Scaling group to its + // new capacity. By default, Auto Scaling does not honor the cooldown period + // during manual scaling activities. HonorCooldown *bool `type:"boolean"` } @@ -11607,7 +11648,6 @@ func (s *SetDesiredCapacityInput) SetHonorCooldown(v bool) *SetDesiredCapacityIn return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/SetDesiredCapacityOutput type SetDesiredCapacityOutput struct { _ struct{} `type:"structure"` } @@ -11622,7 +11662,6 @@ func (s SetDesiredCapacityOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/SetInstanceHealthQuery type SetInstanceHealthInput struct { _ struct{} `type:"structure"` @@ -11698,7 +11737,6 @@ func (s *SetInstanceHealthInput) SetShouldRespectGracePeriod(v bool) *SetInstanc return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/SetInstanceHealthOutput type SetInstanceHealthOutput struct { _ struct{} `type:"structure"` } @@ -11713,11 +11751,10 @@ func (s SetInstanceHealthOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/SetInstanceProtectionQuery type SetInstanceProtectionInput struct { _ struct{} `type:"structure"` - // The name of the group. + // The name of the Auto Scaling group. // // AutoScalingGroupName is a required field AutoScalingGroupName *string `min:"1" type:"string" required:"true"` @@ -11784,7 +11821,6 @@ func (s *SetInstanceProtectionInput) SetProtectedFromScaleIn(v bool) *SetInstanc return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/SetInstanceProtectionAnswer type SetInstanceProtectionOutput struct { _ struct{} `type:"structure"` } @@ -11827,7 +11863,6 @@ func (s SetInstanceProtectionOutput) GoString() string { // with a null upper bound. // // * The upper and lower bound can't be null in the same step adjustment. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/StepAdjustment type StepAdjustment struct { _ struct{} `type:"structure"` @@ -11897,7 +11932,6 @@ func (s *StepAdjustment) SetScalingAdjustment(v int64) *StepAdjustment { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/SuspendProcessesOutput type SuspendProcessesOutput struct { _ struct{} `type:"structure"` } @@ -11914,7 +11948,6 @@ func (s SuspendProcessesOutput) GoString() string { // Describes an Auto Scaling process that has been suspended. For more information, // see ProcessType. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/SuspendedProcess type SuspendedProcess struct { _ struct{} `type:"structure"` @@ -11948,7 +11981,6 @@ func (s *SuspendedProcess) SetSuspensionReason(v string) *SuspendedProcess { } // Describes a tag for an Auto Scaling group. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/Tag type Tag struct { _ struct{} `type:"structure"` @@ -12028,7 +12060,6 @@ func (s *Tag) SetValue(v string) *Tag { } // Describes a tag for an Auto Scaling group. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/TagDescription type TagDescription struct { _ struct{} `type:"structure"` @@ -12090,7 +12121,6 @@ func (s *TagDescription) SetValue(v string) *TagDescription { } // Represents a target tracking policy configuration. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/TargetTrackingConfiguration type TargetTrackingConfiguration struct { _ struct{} `type:"structure"` @@ -12098,10 +12128,9 @@ type TargetTrackingConfiguration struct { CustomizedMetricSpecification *CustomizedMetricSpecification `type:"structure"` // Indicates whether scale in by the target tracking policy is disabled. If - // the value is true, scale in is disabled and the target tracking policy won't - // remove instances from the Auto Scaling group. Otherwise, scale in is enabled - // and the target tracking policy can remove instances from the Auto Scaling - // group. The default value is false. + // scale in is disabled, the target tracking policy won't remove instances from + // the Auto Scaling group. Otherwise, the target tracking policy can remove + // instances from the Auto Scaling group. The default is disabled. DisableScaleIn *bool `type:"boolean"` // A predefined metric. You can specify either a predefined metric or a customized @@ -12171,7 +12200,6 @@ func (s *TargetTrackingConfiguration) SetTargetValue(v float64) *TargetTrackingC return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/TerminateInstanceInAutoScalingGroupType type TerminateInstanceInAutoScalingGroupInput struct { _ struct{} `type:"structure"` @@ -12180,8 +12208,8 @@ type TerminateInstanceInAutoScalingGroupInput struct { // InstanceId is a required field InstanceId *string `min:"1" type:"string" required:"true"` - // If true, terminating the instance also decrements the size of the Auto Scaling - // group. + // Indicates whether terminating the instance also decrements the size of the + // Auto Scaling group. // // ShouldDecrementDesiredCapacity is a required field ShouldDecrementDesiredCapacity *bool `type:"boolean" required:"true"` @@ -12228,7 +12256,6 @@ func (s *TerminateInstanceInAutoScalingGroupInput) SetShouldDecrementDesiredCapa return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/ActivityType type TerminateInstanceInAutoScalingGroupOutput struct { _ struct{} `type:"structure"` @@ -12252,7 +12279,6 @@ func (s *TerminateInstanceInAutoScalingGroupOutput) SetActivity(v *Activity) *Te return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/UpdateAutoScalingGroupType type UpdateAutoScalingGroupInput struct { _ struct{} `type:"structure"` @@ -12287,9 +12313,14 @@ type UpdateAutoScalingGroupInput struct { // The service to use for the health checks. The valid values are EC2 and ELB. HealthCheckType *string `min:"1" type:"string"` - // The name of the launch configuration. + // The name of the launch configuration. If you specify a launch configuration, + // you can't specify a launch template. LaunchConfigurationName *string `min:"1" type:"string"` + // The launch template to use to specify the updates. If you specify a launch + // template, you can't specify a launch configuration. + LaunchTemplate *LaunchTemplateSpecification `type:"structure"` + // The maximum size of the Auto Scaling group. MaxSize *int64 `type:"integer"` @@ -12305,6 +12336,10 @@ type UpdateAutoScalingGroupInput struct { // in the Amazon Elastic Compute Cloud User Guide. PlacementGroup *string `min:"1" type:"string"` + // The Amazon Resource Name (ARN) of the service-linked role that the Auto Scaling + // group uses to call other AWS services on your behalf. + ServiceLinkedRoleARN *string `min:"1" type:"string"` + // A standalone termination policy or a list of termination policies used to // select the instance to terminate. The policies are executed in the order // that they are listed. @@ -12356,9 +12391,17 @@ func (s *UpdateAutoScalingGroupInput) Validate() error { if s.PlacementGroup != nil && len(*s.PlacementGroup) < 1 { invalidParams.Add(request.NewErrParamMinLen("PlacementGroup", 1)) } + if s.ServiceLinkedRoleARN != nil && len(*s.ServiceLinkedRoleARN) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ServiceLinkedRoleARN", 1)) + } if s.VPCZoneIdentifier != nil && len(*s.VPCZoneIdentifier) < 1 { invalidParams.Add(request.NewErrParamMinLen("VPCZoneIdentifier", 1)) } + if s.LaunchTemplate != nil { + if err := s.LaunchTemplate.Validate(); err != nil { + invalidParams.AddNested("LaunchTemplate", err.(request.ErrInvalidParams)) + } + } if invalidParams.Len() > 0 { return invalidParams @@ -12408,6 +12451,12 @@ func (s *UpdateAutoScalingGroupInput) SetLaunchConfigurationName(v string) *Upda return s } +// SetLaunchTemplate sets the LaunchTemplate field's value. +func (s *UpdateAutoScalingGroupInput) SetLaunchTemplate(v *LaunchTemplateSpecification) *UpdateAutoScalingGroupInput { + s.LaunchTemplate = v + return s +} + // SetMaxSize sets the MaxSize field's value. func (s *UpdateAutoScalingGroupInput) SetMaxSize(v int64) *UpdateAutoScalingGroupInput { s.MaxSize = &v @@ -12432,6 +12481,12 @@ func (s *UpdateAutoScalingGroupInput) SetPlacementGroup(v string) *UpdateAutoSca return s } +// SetServiceLinkedRoleARN sets the ServiceLinkedRoleARN field's value. +func (s *UpdateAutoScalingGroupInput) SetServiceLinkedRoleARN(v string) *UpdateAutoScalingGroupInput { + s.ServiceLinkedRoleARN = &v + return s +} + // SetTerminationPolicies sets the TerminationPolicies field's value. func (s *UpdateAutoScalingGroupInput) SetTerminationPolicies(v []*string) *UpdateAutoScalingGroupInput { s.TerminationPolicies = v @@ -12444,7 +12499,6 @@ func (s *UpdateAutoScalingGroupInput) SetVPCZoneIdentifier(v string) *UpdateAuto return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/UpdateAutoScalingGroupOutput type UpdateAutoScalingGroupOutput struct { _ struct{} `type:"structure"` } diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/autoscaling/doc.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/autoscaling/doc.go index e1b144e952..f431b8aa39 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/autoscaling/doc.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/autoscaling/doc.go @@ -3,9 +3,10 @@ // Package autoscaling provides the client and types for making API // requests to Auto Scaling. // -// Auto Scaling is designed to automatically launch or terminate EC2 instances -// based on user-defined policies, schedules, and health checks. Use this service -// in conjunction with the Amazon CloudWatch and Elastic Load Balancing services. +// Amazon EC2 Auto Scaling is designed to automatically launch or terminate +// EC2 instances based on user-defined policies, schedules, and health checks. +// Use this service in conjunction with the AWS Auto Scaling, Amazon CloudWatch, +// and Elastic Load Balancing services. // // See https://docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01 for more information on this service. // @@ -14,7 +15,7 @@ // // Using the Client // -// To Auto Scaling with the SDK use the New function to create +// To contact Auto Scaling with the SDK use the New function to create // a new service client. With that client you can make API requests to the service. // These clients are safe to use concurrently. // diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/autoscaling/errors.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/autoscaling/errors.go index 68ab1e3c12..be8b7e70b1 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/autoscaling/errors.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/autoscaling/errors.go @@ -44,4 +44,10 @@ const ( // The operation can't be performed because there are scaling activities in // progress. ErrCodeScalingActivityInProgressFault = "ScalingActivityInProgress" + + // ErrCodeServiceLinkedRoleFailure for service response error code + // "ServiceLinkedRoleFailure". + // + // The service-linked role is not yet ready for use. + ErrCodeServiceLinkedRoleFailure = "ServiceLinkedRoleFailure" ) diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/autoscaling/service.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/autoscaling/service.go index 5e63d1c031..e1da9fd754 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/autoscaling/service.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/autoscaling/service.go @@ -29,8 +29,9 @@ var initRequest func(*request.Request) // Service information constants const ( - ServiceName = "autoscaling" // Service endpoint prefix API calls made to. - EndpointsID = ServiceName // Service ID for Regions and Endpoints metadata. + ServiceName = "autoscaling" // Name of service. + EndpointsID = ServiceName // ID to lookup a service endpoint with. + ServiceID = "Auto Scaling" // ServiceID is a unique identifer of a specific service. ) // New creates a new instance of the AutoScaling client with a session. @@ -55,6 +56,7 @@ func newClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegio cfg, metadata.ClientInfo{ ServiceName: ServiceName, + ServiceID: ServiceID, SigningName: signingName, SigningRegion: signingRegion, Endpoint: endpoint, diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/ec2/api.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/ec2/api.go index 9d4570d6d8..b48e40e205 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/ec2/api.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/ec2/api.go @@ -17,7 +17,7 @@ const opAcceptReservedInstancesExchangeQuote = "AcceptReservedInstancesExchangeQ // AcceptReservedInstancesExchangeQuoteRequest generates a "aws/request.Request" representing the // client's request for the AcceptReservedInstancesExchangeQuote operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -38,7 +38,7 @@ const opAcceptReservedInstancesExchangeQuote = "AcceptReservedInstancesExchangeQ // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AcceptReservedInstancesExchangeQuote +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AcceptReservedInstancesExchangeQuote func (c *EC2) AcceptReservedInstancesExchangeQuoteRequest(input *AcceptReservedInstancesExchangeQuoteInput) (req *request.Request, output *AcceptReservedInstancesExchangeQuoteOutput) { op := &request.Operation{ Name: opAcceptReservedInstancesExchangeQuote, @@ -66,7 +66,7 @@ func (c *EC2) AcceptReservedInstancesExchangeQuoteRequest(input *AcceptReservedI // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation AcceptReservedInstancesExchangeQuote for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AcceptReservedInstancesExchangeQuote +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AcceptReservedInstancesExchangeQuote func (c *EC2) AcceptReservedInstancesExchangeQuote(input *AcceptReservedInstancesExchangeQuoteInput) (*AcceptReservedInstancesExchangeQuoteOutput, error) { req, out := c.AcceptReservedInstancesExchangeQuoteRequest(input) return out, req.Send() @@ -88,11 +88,86 @@ func (c *EC2) AcceptReservedInstancesExchangeQuoteWithContext(ctx aws.Context, i return out, req.Send() } +const opAcceptVpcEndpointConnections = "AcceptVpcEndpointConnections" + +// AcceptVpcEndpointConnectionsRequest generates a "aws/request.Request" representing the +// client's request for the AcceptVpcEndpointConnections operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See AcceptVpcEndpointConnections for more information on using the AcceptVpcEndpointConnections +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the AcceptVpcEndpointConnectionsRequest method. +// req, resp := client.AcceptVpcEndpointConnectionsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AcceptVpcEndpointConnections +func (c *EC2) AcceptVpcEndpointConnectionsRequest(input *AcceptVpcEndpointConnectionsInput) (req *request.Request, output *AcceptVpcEndpointConnectionsOutput) { + op := &request.Operation{ + Name: opAcceptVpcEndpointConnections, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &AcceptVpcEndpointConnectionsInput{} + } + + output = &AcceptVpcEndpointConnectionsOutput{} + req = c.newRequest(op, input, output) + return +} + +// AcceptVpcEndpointConnections API operation for Amazon Elastic Compute Cloud. +// +// Accepts one or more interface VPC endpoint connection requests to your VPC +// endpoint service. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation AcceptVpcEndpointConnections for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AcceptVpcEndpointConnections +func (c *EC2) AcceptVpcEndpointConnections(input *AcceptVpcEndpointConnectionsInput) (*AcceptVpcEndpointConnectionsOutput, error) { + req, out := c.AcceptVpcEndpointConnectionsRequest(input) + return out, req.Send() +} + +// AcceptVpcEndpointConnectionsWithContext is the same as AcceptVpcEndpointConnections with the addition of +// the ability to pass a context and additional request options. +// +// See AcceptVpcEndpointConnections for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) AcceptVpcEndpointConnectionsWithContext(ctx aws.Context, input *AcceptVpcEndpointConnectionsInput, opts ...request.Option) (*AcceptVpcEndpointConnectionsOutput, error) { + req, out := c.AcceptVpcEndpointConnectionsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opAcceptVpcPeeringConnection = "AcceptVpcPeeringConnection" // AcceptVpcPeeringConnectionRequest generates a "aws/request.Request" representing the // client's request for the AcceptVpcPeeringConnection operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -113,7 +188,7 @@ const opAcceptVpcPeeringConnection = "AcceptVpcPeeringConnection" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AcceptVpcPeeringConnection +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AcceptVpcPeeringConnection func (c *EC2) AcceptVpcPeeringConnectionRequest(input *AcceptVpcPeeringConnectionInput) (req *request.Request, output *AcceptVpcPeeringConnectionOutput) { op := &request.Operation{ Name: opAcceptVpcPeeringConnection, @@ -137,13 +212,16 @@ func (c *EC2) AcceptVpcPeeringConnectionRequest(input *AcceptVpcPeeringConnectio // of the peer VPC. Use DescribeVpcPeeringConnections to view your outstanding // VPC peering connection requests. // +// For an inter-region VPC peering connection request, you must accept the VPC +// peering connection in the region of the accepter VPC. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation AcceptVpcPeeringConnection for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AcceptVpcPeeringConnection +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AcceptVpcPeeringConnection func (c *EC2) AcceptVpcPeeringConnection(input *AcceptVpcPeeringConnectionInput) (*AcceptVpcPeeringConnectionOutput, error) { req, out := c.AcceptVpcPeeringConnectionRequest(input) return out, req.Send() @@ -169,7 +247,7 @@ const opAllocateAddress = "AllocateAddress" // AllocateAddressRequest generates a "aws/request.Request" representing the // client's request for the AllocateAddress operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -190,7 +268,7 @@ const opAllocateAddress = "AllocateAddress" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AllocateAddress +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AllocateAddress func (c *EC2) AllocateAddressRequest(input *AllocateAddressInput) (req *request.Request, output *AllocateAddressOutput) { op := &request.Operation{ Name: opAllocateAddress, @@ -229,7 +307,7 @@ func (c *EC2) AllocateAddressRequest(input *AllocateAddressInput) (req *request. // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation AllocateAddress for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AllocateAddress +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AllocateAddress func (c *EC2) AllocateAddress(input *AllocateAddressInput) (*AllocateAddressOutput, error) { req, out := c.AllocateAddressRequest(input) return out, req.Send() @@ -255,7 +333,7 @@ const opAllocateHosts = "AllocateHosts" // AllocateHostsRequest generates a "aws/request.Request" representing the // client's request for the AllocateHosts operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -276,7 +354,7 @@ const opAllocateHosts = "AllocateHosts" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AllocateHosts +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AllocateHosts func (c *EC2) AllocateHostsRequest(input *AllocateHostsInput) (req *request.Request, output *AllocateHostsOutput) { op := &request.Operation{ Name: opAllocateHosts, @@ -305,7 +383,7 @@ func (c *EC2) AllocateHostsRequest(input *AllocateHostsInput) (req *request.Requ // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation AllocateHosts for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AllocateHosts +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AllocateHosts func (c *EC2) AllocateHosts(input *AllocateHostsInput) (*AllocateHostsOutput, error) { req, out := c.AllocateHostsRequest(input) return out, req.Send() @@ -331,7 +409,7 @@ const opAssignIpv6Addresses = "AssignIpv6Addresses" // AssignIpv6AddressesRequest generates a "aws/request.Request" representing the // client's request for the AssignIpv6Addresses operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -352,7 +430,7 @@ const opAssignIpv6Addresses = "AssignIpv6Addresses" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssignIpv6Addresses +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssignIpv6Addresses func (c *EC2) AssignIpv6AddressesRequest(input *AssignIpv6AddressesInput) (req *request.Request, output *AssignIpv6AddressesOutput) { op := &request.Operation{ Name: opAssignIpv6Addresses, @@ -386,7 +464,7 @@ func (c *EC2) AssignIpv6AddressesRequest(input *AssignIpv6AddressesInput) (req * // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation AssignIpv6Addresses for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssignIpv6Addresses +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssignIpv6Addresses func (c *EC2) AssignIpv6Addresses(input *AssignIpv6AddressesInput) (*AssignIpv6AddressesOutput, error) { req, out := c.AssignIpv6AddressesRequest(input) return out, req.Send() @@ -412,7 +490,7 @@ const opAssignPrivateIpAddresses = "AssignPrivateIpAddresses" // AssignPrivateIpAddressesRequest generates a "aws/request.Request" representing the // client's request for the AssignPrivateIpAddresses operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -433,7 +511,7 @@ const opAssignPrivateIpAddresses = "AssignPrivateIpAddresses" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssignPrivateIpAddresses +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssignPrivateIpAddresses func (c *EC2) AssignPrivateIpAddressesRequest(input *AssignPrivateIpAddressesInput) (req *request.Request, output *AssignPrivateIpAddressesOutput) { op := &request.Operation{ Name: opAssignPrivateIpAddresses, @@ -472,7 +550,7 @@ func (c *EC2) AssignPrivateIpAddressesRequest(input *AssignPrivateIpAddressesInp // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation AssignPrivateIpAddresses for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssignPrivateIpAddresses +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssignPrivateIpAddresses func (c *EC2) AssignPrivateIpAddresses(input *AssignPrivateIpAddressesInput) (*AssignPrivateIpAddressesOutput, error) { req, out := c.AssignPrivateIpAddressesRequest(input) return out, req.Send() @@ -498,7 +576,7 @@ const opAssociateAddress = "AssociateAddress" // AssociateAddressRequest generates a "aws/request.Request" representing the // client's request for the AssociateAddress operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -519,7 +597,7 @@ const opAssociateAddress = "AssociateAddress" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateAddress +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateAddress func (c *EC2) AssociateAddressRequest(input *AssociateAddressInput) (req *request.Request, output *AssociateAddressOutput) { op := &request.Operation{ Name: opAssociateAddress, @@ -569,7 +647,7 @@ func (c *EC2) AssociateAddressRequest(input *AssociateAddressInput) (req *reques // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation AssociateAddress for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateAddress +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateAddress func (c *EC2) AssociateAddress(input *AssociateAddressInput) (*AssociateAddressOutput, error) { req, out := c.AssociateAddressRequest(input) return out, req.Send() @@ -595,7 +673,7 @@ const opAssociateDhcpOptions = "AssociateDhcpOptions" // AssociateDhcpOptionsRequest generates a "aws/request.Request" representing the // client's request for the AssociateDhcpOptions operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -616,7 +694,7 @@ const opAssociateDhcpOptions = "AssociateDhcpOptions" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateDhcpOptions +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateDhcpOptions func (c *EC2) AssociateDhcpOptionsRequest(input *AssociateDhcpOptionsInput) (req *request.Request, output *AssociateDhcpOptionsOutput) { op := &request.Operation{ Name: opAssociateDhcpOptions, @@ -656,7 +734,7 @@ func (c *EC2) AssociateDhcpOptionsRequest(input *AssociateDhcpOptionsInput) (req // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation AssociateDhcpOptions for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateDhcpOptions +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateDhcpOptions func (c *EC2) AssociateDhcpOptions(input *AssociateDhcpOptionsInput) (*AssociateDhcpOptionsOutput, error) { req, out := c.AssociateDhcpOptionsRequest(input) return out, req.Send() @@ -682,7 +760,7 @@ const opAssociateIamInstanceProfile = "AssociateIamInstanceProfile" // AssociateIamInstanceProfileRequest generates a "aws/request.Request" representing the // client's request for the AssociateIamInstanceProfile operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -703,7 +781,7 @@ const opAssociateIamInstanceProfile = "AssociateIamInstanceProfile" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateIamInstanceProfile +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateIamInstanceProfile func (c *EC2) AssociateIamInstanceProfileRequest(input *AssociateIamInstanceProfileInput) (req *request.Request, output *AssociateIamInstanceProfileOutput) { op := &request.Operation{ Name: opAssociateIamInstanceProfile, @@ -731,7 +809,7 @@ func (c *EC2) AssociateIamInstanceProfileRequest(input *AssociateIamInstanceProf // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation AssociateIamInstanceProfile for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateIamInstanceProfile +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateIamInstanceProfile func (c *EC2) AssociateIamInstanceProfile(input *AssociateIamInstanceProfileInput) (*AssociateIamInstanceProfileOutput, error) { req, out := c.AssociateIamInstanceProfileRequest(input) return out, req.Send() @@ -757,7 +835,7 @@ const opAssociateRouteTable = "AssociateRouteTable" // AssociateRouteTableRequest generates a "aws/request.Request" representing the // client's request for the AssociateRouteTable operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -778,7 +856,7 @@ const opAssociateRouteTable = "AssociateRouteTable" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateRouteTable +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateRouteTable func (c *EC2) AssociateRouteTableRequest(input *AssociateRouteTableInput) (req *request.Request, output *AssociateRouteTableOutput) { op := &request.Operation{ Name: opAssociateRouteTable, @@ -812,7 +890,7 @@ func (c *EC2) AssociateRouteTableRequest(input *AssociateRouteTableInput) (req * // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation AssociateRouteTable for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateRouteTable +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateRouteTable func (c *EC2) AssociateRouteTable(input *AssociateRouteTableInput) (*AssociateRouteTableOutput, error) { req, out := c.AssociateRouteTableRequest(input) return out, req.Send() @@ -838,7 +916,7 @@ const opAssociateSubnetCidrBlock = "AssociateSubnetCidrBlock" // AssociateSubnetCidrBlockRequest generates a "aws/request.Request" representing the // client's request for the AssociateSubnetCidrBlock operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -859,7 +937,7 @@ const opAssociateSubnetCidrBlock = "AssociateSubnetCidrBlock" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateSubnetCidrBlock +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateSubnetCidrBlock func (c *EC2) AssociateSubnetCidrBlockRequest(input *AssociateSubnetCidrBlockInput) (req *request.Request, output *AssociateSubnetCidrBlockOutput) { op := &request.Operation{ Name: opAssociateSubnetCidrBlock, @@ -888,7 +966,7 @@ func (c *EC2) AssociateSubnetCidrBlockRequest(input *AssociateSubnetCidrBlockInp // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation AssociateSubnetCidrBlock for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateSubnetCidrBlock +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateSubnetCidrBlock func (c *EC2) AssociateSubnetCidrBlock(input *AssociateSubnetCidrBlockInput) (*AssociateSubnetCidrBlockOutput, error) { req, out := c.AssociateSubnetCidrBlockRequest(input) return out, req.Send() @@ -914,7 +992,7 @@ const opAssociateVpcCidrBlock = "AssociateVpcCidrBlock" // AssociateVpcCidrBlockRequest generates a "aws/request.Request" representing the // client's request for the AssociateVpcCidrBlock operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -935,7 +1013,7 @@ const opAssociateVpcCidrBlock = "AssociateVpcCidrBlock" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateVpcCidrBlock +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateVpcCidrBlock func (c *EC2) AssociateVpcCidrBlockRequest(input *AssociateVpcCidrBlockInput) (req *request.Request, output *AssociateVpcCidrBlockOutput) { op := &request.Operation{ Name: opAssociateVpcCidrBlock, @@ -968,7 +1046,7 @@ func (c *EC2) AssociateVpcCidrBlockRequest(input *AssociateVpcCidrBlockInput) (r // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation AssociateVpcCidrBlock for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateVpcCidrBlock +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateVpcCidrBlock func (c *EC2) AssociateVpcCidrBlock(input *AssociateVpcCidrBlockInput) (*AssociateVpcCidrBlockOutput, error) { req, out := c.AssociateVpcCidrBlockRequest(input) return out, req.Send() @@ -994,7 +1072,7 @@ const opAttachClassicLinkVpc = "AttachClassicLinkVpc" // AttachClassicLinkVpcRequest generates a "aws/request.Request" representing the // client's request for the AttachClassicLinkVpc operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1015,7 +1093,7 @@ const opAttachClassicLinkVpc = "AttachClassicLinkVpc" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttachClassicLinkVpc +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttachClassicLinkVpc func (c *EC2) AttachClassicLinkVpcRequest(input *AttachClassicLinkVpcInput) (req *request.Request, output *AttachClassicLinkVpcOutput) { op := &request.Operation{ Name: opAttachClassicLinkVpc, @@ -1053,7 +1131,7 @@ func (c *EC2) AttachClassicLinkVpcRequest(input *AttachClassicLinkVpcInput) (req // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation AttachClassicLinkVpc for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttachClassicLinkVpc +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttachClassicLinkVpc func (c *EC2) AttachClassicLinkVpc(input *AttachClassicLinkVpcInput) (*AttachClassicLinkVpcOutput, error) { req, out := c.AttachClassicLinkVpcRequest(input) return out, req.Send() @@ -1079,7 +1157,7 @@ const opAttachInternetGateway = "AttachInternetGateway" // AttachInternetGatewayRequest generates a "aws/request.Request" representing the // client's request for the AttachInternetGateway operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1100,7 +1178,7 @@ const opAttachInternetGateway = "AttachInternetGateway" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttachInternetGateway +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttachInternetGateway func (c *EC2) AttachInternetGatewayRequest(input *AttachInternetGatewayInput) (req *request.Request, output *AttachInternetGatewayOutput) { op := &request.Operation{ Name: opAttachInternetGateway, @@ -1131,7 +1209,7 @@ func (c *EC2) AttachInternetGatewayRequest(input *AttachInternetGatewayInput) (r // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation AttachInternetGateway for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttachInternetGateway +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttachInternetGateway func (c *EC2) AttachInternetGateway(input *AttachInternetGatewayInput) (*AttachInternetGatewayOutput, error) { req, out := c.AttachInternetGatewayRequest(input) return out, req.Send() @@ -1157,7 +1235,7 @@ const opAttachNetworkInterface = "AttachNetworkInterface" // AttachNetworkInterfaceRequest generates a "aws/request.Request" representing the // client's request for the AttachNetworkInterface operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1178,7 +1256,7 @@ const opAttachNetworkInterface = "AttachNetworkInterface" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttachNetworkInterface +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttachNetworkInterface func (c *EC2) AttachNetworkInterfaceRequest(input *AttachNetworkInterfaceInput) (req *request.Request, output *AttachNetworkInterfaceOutput) { op := &request.Operation{ Name: opAttachNetworkInterface, @@ -1205,7 +1283,7 @@ func (c *EC2) AttachNetworkInterfaceRequest(input *AttachNetworkInterfaceInput) // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation AttachNetworkInterface for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttachNetworkInterface +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttachNetworkInterface func (c *EC2) AttachNetworkInterface(input *AttachNetworkInterfaceInput) (*AttachNetworkInterfaceOutput, error) { req, out := c.AttachNetworkInterfaceRequest(input) return out, req.Send() @@ -1231,7 +1309,7 @@ const opAttachVolume = "AttachVolume" // AttachVolumeRequest generates a "aws/request.Request" representing the // client's request for the AttachVolume operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1252,7 +1330,7 @@ const opAttachVolume = "AttachVolume" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttachVolume +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttachVolume func (c *EC2) AttachVolumeRequest(input *AttachVolumeInput) (req *request.Request, output *VolumeAttachment) { op := &request.Operation{ Name: opAttachVolume, @@ -1308,7 +1386,7 @@ func (c *EC2) AttachVolumeRequest(input *AttachVolumeInput) (req *request.Reques // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation AttachVolume for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttachVolume +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttachVolume func (c *EC2) AttachVolume(input *AttachVolumeInput) (*VolumeAttachment, error) { req, out := c.AttachVolumeRequest(input) return out, req.Send() @@ -1334,7 +1412,7 @@ const opAttachVpnGateway = "AttachVpnGateway" // AttachVpnGatewayRequest generates a "aws/request.Request" representing the // client's request for the AttachVpnGateway operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1355,7 +1433,7 @@ const opAttachVpnGateway = "AttachVpnGateway" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttachVpnGateway +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttachVpnGateway func (c *EC2) AttachVpnGatewayRequest(input *AttachVpnGatewayInput) (req *request.Request, output *AttachVpnGatewayOutput) { op := &request.Operation{ Name: opAttachVpnGateway, @@ -1377,8 +1455,7 @@ func (c *EC2) AttachVpnGatewayRequest(input *AttachVpnGatewayInput) (req *reques // Attaches a virtual private gateway to a VPC. You can attach one virtual private // gateway to one VPC at a time. // -// For more information, see Adding a Hardware Virtual Private Gateway to Your -// VPC (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html) +// For more information, see AWS Managed VPN Connections (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html) // in the Amazon Virtual Private Cloud User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -1387,7 +1464,7 @@ func (c *EC2) AttachVpnGatewayRequest(input *AttachVpnGatewayInput) (req *reques // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation AttachVpnGateway for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttachVpnGateway +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttachVpnGateway func (c *EC2) AttachVpnGateway(input *AttachVpnGatewayInput) (*AttachVpnGatewayOutput, error) { req, out := c.AttachVpnGatewayRequest(input) return out, req.Send() @@ -1413,7 +1490,7 @@ const opAuthorizeSecurityGroupEgress = "AuthorizeSecurityGroupEgress" // AuthorizeSecurityGroupEgressRequest generates a "aws/request.Request" representing the // client's request for the AuthorizeSecurityGroupEgress operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1434,7 +1511,7 @@ const opAuthorizeSecurityGroupEgress = "AuthorizeSecurityGroupEgress" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AuthorizeSecurityGroupEgress +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AuthorizeSecurityGroupEgress func (c *EC2) AuthorizeSecurityGroupEgressRequest(input *AuthorizeSecurityGroupEgressInput) (req *request.Request, output *AuthorizeSecurityGroupEgressOutput) { op := &request.Operation{ Name: opAuthorizeSecurityGroupEgress, @@ -1480,7 +1557,7 @@ func (c *EC2) AuthorizeSecurityGroupEgressRequest(input *AuthorizeSecurityGroupE // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation AuthorizeSecurityGroupEgress for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AuthorizeSecurityGroupEgress +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AuthorizeSecurityGroupEgress func (c *EC2) AuthorizeSecurityGroupEgress(input *AuthorizeSecurityGroupEgressInput) (*AuthorizeSecurityGroupEgressOutput, error) { req, out := c.AuthorizeSecurityGroupEgressRequest(input) return out, req.Send() @@ -1506,7 +1583,7 @@ const opAuthorizeSecurityGroupIngress = "AuthorizeSecurityGroupIngress" // AuthorizeSecurityGroupIngressRequest generates a "aws/request.Request" representing the // client's request for the AuthorizeSecurityGroupIngress operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1527,7 +1604,7 @@ const opAuthorizeSecurityGroupIngress = "AuthorizeSecurityGroupIngress" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AuthorizeSecurityGroupIngress +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AuthorizeSecurityGroupIngress func (c *EC2) AuthorizeSecurityGroupIngressRequest(input *AuthorizeSecurityGroupIngressInput) (req *request.Request, output *AuthorizeSecurityGroupIngressOutput) { op := &request.Operation{ Name: opAuthorizeSecurityGroupIngress, @@ -1574,7 +1651,7 @@ func (c *EC2) AuthorizeSecurityGroupIngressRequest(input *AuthorizeSecurityGroup // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation AuthorizeSecurityGroupIngress for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AuthorizeSecurityGroupIngress +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AuthorizeSecurityGroupIngress func (c *EC2) AuthorizeSecurityGroupIngress(input *AuthorizeSecurityGroupIngressInput) (*AuthorizeSecurityGroupIngressOutput, error) { req, out := c.AuthorizeSecurityGroupIngressRequest(input) return out, req.Send() @@ -1600,7 +1677,7 @@ const opBundleInstance = "BundleInstance" // BundleInstanceRequest generates a "aws/request.Request" representing the // client's request for the BundleInstance operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1621,7 +1698,7 @@ const opBundleInstance = "BundleInstance" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/BundleInstance +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/BundleInstance func (c *EC2) BundleInstanceRequest(input *BundleInstanceInput) (req *request.Request, output *BundleInstanceOutput) { op := &request.Operation{ Name: opBundleInstance, @@ -1656,7 +1733,7 @@ func (c *EC2) BundleInstanceRequest(input *BundleInstanceInput) (req *request.Re // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation BundleInstance for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/BundleInstance +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/BundleInstance func (c *EC2) BundleInstance(input *BundleInstanceInput) (*BundleInstanceOutput, error) { req, out := c.BundleInstanceRequest(input) return out, req.Send() @@ -1682,7 +1759,7 @@ const opCancelBundleTask = "CancelBundleTask" // CancelBundleTaskRequest generates a "aws/request.Request" representing the // client's request for the CancelBundleTask operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1703,7 +1780,7 @@ const opCancelBundleTask = "CancelBundleTask" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelBundleTask +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelBundleTask func (c *EC2) CancelBundleTaskRequest(input *CancelBundleTaskInput) (req *request.Request, output *CancelBundleTaskOutput) { op := &request.Operation{ Name: opCancelBundleTask, @@ -1730,7 +1807,7 @@ func (c *EC2) CancelBundleTaskRequest(input *CancelBundleTaskInput) (req *reques // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CancelBundleTask for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelBundleTask +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelBundleTask func (c *EC2) CancelBundleTask(input *CancelBundleTaskInput) (*CancelBundleTaskOutput, error) { req, out := c.CancelBundleTaskRequest(input) return out, req.Send() @@ -1756,7 +1833,7 @@ const opCancelConversionTask = "CancelConversionTask" // CancelConversionTaskRequest generates a "aws/request.Request" representing the // client's request for the CancelConversionTask operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1777,7 +1854,7 @@ const opCancelConversionTask = "CancelConversionTask" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelConversionTask +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelConversionTask func (c *EC2) CancelConversionTaskRequest(input *CancelConversionTaskInput) (req *request.Request, output *CancelConversionTaskOutput) { op := &request.Operation{ Name: opCancelConversionTask, @@ -1813,7 +1890,7 @@ func (c *EC2) CancelConversionTaskRequest(input *CancelConversionTaskInput) (req // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CancelConversionTask for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelConversionTask +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelConversionTask func (c *EC2) CancelConversionTask(input *CancelConversionTaskInput) (*CancelConversionTaskOutput, error) { req, out := c.CancelConversionTaskRequest(input) return out, req.Send() @@ -1839,7 +1916,7 @@ const opCancelExportTask = "CancelExportTask" // CancelExportTaskRequest generates a "aws/request.Request" representing the // client's request for the CancelExportTask operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1860,7 +1937,7 @@ const opCancelExportTask = "CancelExportTask" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelExportTask +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelExportTask func (c *EC2) CancelExportTaskRequest(input *CancelExportTaskInput) (req *request.Request, output *CancelExportTaskOutput) { op := &request.Operation{ Name: opCancelExportTask, @@ -1892,7 +1969,7 @@ func (c *EC2) CancelExportTaskRequest(input *CancelExportTaskInput) (req *reques // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CancelExportTask for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelExportTask +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelExportTask func (c *EC2) CancelExportTask(input *CancelExportTaskInput) (*CancelExportTaskOutput, error) { req, out := c.CancelExportTaskRequest(input) return out, req.Send() @@ -1918,7 +1995,7 @@ const opCancelImportTask = "CancelImportTask" // CancelImportTaskRequest generates a "aws/request.Request" representing the // client's request for the CancelImportTask operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1939,7 +2016,7 @@ const opCancelImportTask = "CancelImportTask" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelImportTask +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelImportTask func (c *EC2) CancelImportTaskRequest(input *CancelImportTaskInput) (req *request.Request, output *CancelImportTaskOutput) { op := &request.Operation{ Name: opCancelImportTask, @@ -1966,7 +2043,7 @@ func (c *EC2) CancelImportTaskRequest(input *CancelImportTaskInput) (req *reques // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CancelImportTask for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelImportTask +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelImportTask func (c *EC2) CancelImportTask(input *CancelImportTaskInput) (*CancelImportTaskOutput, error) { req, out := c.CancelImportTaskRequest(input) return out, req.Send() @@ -1992,7 +2069,7 @@ const opCancelReservedInstancesListing = "CancelReservedInstancesListing" // CancelReservedInstancesListingRequest generates a "aws/request.Request" representing the // client's request for the CancelReservedInstancesListing operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2013,7 +2090,7 @@ const opCancelReservedInstancesListing = "CancelReservedInstancesListing" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelReservedInstancesListing +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelReservedInstancesListing func (c *EC2) CancelReservedInstancesListingRequest(input *CancelReservedInstancesListingInput) (req *request.Request, output *CancelReservedInstancesListingOutput) { op := &request.Operation{ Name: opCancelReservedInstancesListing, @@ -2044,7 +2121,7 @@ func (c *EC2) CancelReservedInstancesListingRequest(input *CancelReservedInstanc // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CancelReservedInstancesListing for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelReservedInstancesListing +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelReservedInstancesListing func (c *EC2) CancelReservedInstancesListing(input *CancelReservedInstancesListingInput) (*CancelReservedInstancesListingOutput, error) { req, out := c.CancelReservedInstancesListingRequest(input) return out, req.Send() @@ -2070,7 +2147,7 @@ const opCancelSpotFleetRequests = "CancelSpotFleetRequests" // CancelSpotFleetRequestsRequest generates a "aws/request.Request" representing the // client's request for the CancelSpotFleetRequests operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2091,7 +2168,7 @@ const opCancelSpotFleetRequests = "CancelSpotFleetRequests" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelSpotFleetRequests +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelSpotFleetRequests func (c *EC2) CancelSpotFleetRequestsRequest(input *CancelSpotFleetRequestsInput) (req *request.Request, output *CancelSpotFleetRequestsOutput) { op := &request.Operation{ Name: opCancelSpotFleetRequests, @@ -2110,12 +2187,12 @@ func (c *EC2) CancelSpotFleetRequestsRequest(input *CancelSpotFleetRequestsInput // CancelSpotFleetRequests API operation for Amazon Elastic Compute Cloud. // -// Cancels the specified Spot fleet requests. +// Cancels the specified Spot Fleet requests. // -// After you cancel a Spot fleet request, the Spot fleet launches no new Spot -// instances. You must specify whether the Spot fleet should also terminate -// its Spot instances. If you terminate the instances, the Spot fleet request -// enters the cancelled_terminating state. Otherwise, the Spot fleet request +// After you cancel a Spot Fleet request, the Spot Fleet launches no new Spot +// Instances. You must specify whether the Spot Fleet should also terminate +// its Spot Instances. If you terminate the instances, the Spot Fleet request +// enters the cancelled_terminating state. Otherwise, the Spot Fleet request // enters the cancelled_running state and the instances continue to run until // they are interrupted or you terminate them manually. // @@ -2125,7 +2202,7 @@ func (c *EC2) CancelSpotFleetRequestsRequest(input *CancelSpotFleetRequestsInput // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CancelSpotFleetRequests for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelSpotFleetRequests +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelSpotFleetRequests func (c *EC2) CancelSpotFleetRequests(input *CancelSpotFleetRequestsInput) (*CancelSpotFleetRequestsOutput, error) { req, out := c.CancelSpotFleetRequestsRequest(input) return out, req.Send() @@ -2151,7 +2228,7 @@ const opCancelSpotInstanceRequests = "CancelSpotInstanceRequests" // CancelSpotInstanceRequestsRequest generates a "aws/request.Request" representing the // client's request for the CancelSpotInstanceRequests operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2172,7 +2249,7 @@ const opCancelSpotInstanceRequests = "CancelSpotInstanceRequests" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelSpotInstanceRequests +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelSpotInstanceRequests func (c *EC2) CancelSpotInstanceRequestsRequest(input *CancelSpotInstanceRequestsInput) (req *request.Request, output *CancelSpotInstanceRequestsOutput) { op := &request.Operation{ Name: opCancelSpotInstanceRequests, @@ -2191,14 +2268,9 @@ func (c *EC2) CancelSpotInstanceRequestsRequest(input *CancelSpotInstanceRequest // CancelSpotInstanceRequests API operation for Amazon Elastic Compute Cloud. // -// Cancels one or more Spot instance requests. Spot instances are instances -// that Amazon EC2 starts on your behalf when the bid price that you specify -// exceeds the current Spot price. Amazon EC2 periodically sets the Spot price -// based on available Spot instance capacity and current Spot instance requests. -// For more information, see Spot Instance Requests (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-requests.html) -// in the Amazon Elastic Compute Cloud User Guide. +// Cancels one or more Spot Instance requests. // -// Canceling a Spot instance request does not terminate running Spot instances +// Canceling a Spot Instance request does not terminate running Spot Instances // associated with the request. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -2207,7 +2279,7 @@ func (c *EC2) CancelSpotInstanceRequestsRequest(input *CancelSpotInstanceRequest // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CancelSpotInstanceRequests for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelSpotInstanceRequests +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelSpotInstanceRequests func (c *EC2) CancelSpotInstanceRequests(input *CancelSpotInstanceRequestsInput) (*CancelSpotInstanceRequestsOutput, error) { req, out := c.CancelSpotInstanceRequestsRequest(input) return out, req.Send() @@ -2233,7 +2305,7 @@ const opConfirmProductInstance = "ConfirmProductInstance" // ConfirmProductInstanceRequest generates a "aws/request.Request" representing the // client's request for the ConfirmProductInstance operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2254,7 +2326,7 @@ const opConfirmProductInstance = "ConfirmProductInstance" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ConfirmProductInstance +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ConfirmProductInstance func (c *EC2) ConfirmProductInstanceRequest(input *ConfirmProductInstanceInput) (req *request.Request, output *ConfirmProductInstanceOutput) { op := &request.Operation{ Name: opConfirmProductInstance, @@ -2283,7 +2355,7 @@ func (c *EC2) ConfirmProductInstanceRequest(input *ConfirmProductInstanceInput) // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation ConfirmProductInstance for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ConfirmProductInstance +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ConfirmProductInstance func (c *EC2) ConfirmProductInstance(input *ConfirmProductInstanceInput) (*ConfirmProductInstanceOutput, error) { req, out := c.ConfirmProductInstanceRequest(input) return out, req.Send() @@ -2309,7 +2381,7 @@ const opCopyFpgaImage = "CopyFpgaImage" // CopyFpgaImageRequest generates a "aws/request.Request" representing the // client's request for the CopyFpgaImage operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2330,7 +2402,7 @@ const opCopyFpgaImage = "CopyFpgaImage" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CopyFpgaImage +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CopyFpgaImage func (c *EC2) CopyFpgaImageRequest(input *CopyFpgaImageInput) (req *request.Request, output *CopyFpgaImageOutput) { op := &request.Operation{ Name: opCopyFpgaImage, @@ -2357,7 +2429,7 @@ func (c *EC2) CopyFpgaImageRequest(input *CopyFpgaImageInput) (req *request.Requ // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CopyFpgaImage for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CopyFpgaImage +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CopyFpgaImage func (c *EC2) CopyFpgaImage(input *CopyFpgaImageInput) (*CopyFpgaImageOutput, error) { req, out := c.CopyFpgaImageRequest(input) return out, req.Send() @@ -2383,7 +2455,7 @@ const opCopyImage = "CopyImage" // CopyImageRequest generates a "aws/request.Request" representing the // client's request for the CopyImage operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2404,7 +2476,7 @@ const opCopyImage = "CopyImage" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CopyImage +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CopyImage func (c *EC2) CopyImageRequest(input *CopyImageInput) (req *request.Request, output *CopyImageOutput) { op := &request.Operation{ Name: opCopyImage, @@ -2437,7 +2509,7 @@ func (c *EC2) CopyImageRequest(input *CopyImageInput) (req *request.Request, out // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CopyImage for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CopyImage +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CopyImage func (c *EC2) CopyImage(input *CopyImageInput) (*CopyImageOutput, error) { req, out := c.CopyImageRequest(input) return out, req.Send() @@ -2463,7 +2535,7 @@ const opCopySnapshot = "CopySnapshot" // CopySnapshotRequest generates a "aws/request.Request" representing the // client's request for the CopySnapshot operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2484,7 +2556,7 @@ const opCopySnapshot = "CopySnapshot" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CopySnapshot +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CopySnapshot func (c *EC2) CopySnapshotRequest(input *CopySnapshotInput) (req *request.Request, output *CopySnapshotOutput) { op := &request.Operation{ Name: opCopySnapshot, @@ -2530,7 +2602,7 @@ func (c *EC2) CopySnapshotRequest(input *CopySnapshotInput) (req *request.Reques // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CopySnapshot for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CopySnapshot +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CopySnapshot func (c *EC2) CopySnapshot(input *CopySnapshotInput) (*CopySnapshotOutput, error) { req, out := c.CopySnapshotRequest(input) return out, req.Send() @@ -2556,7 +2628,7 @@ const opCreateCustomerGateway = "CreateCustomerGateway" // CreateCustomerGatewayRequest generates a "aws/request.Request" representing the // client's request for the CreateCustomerGateway operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2577,7 +2649,7 @@ const opCreateCustomerGateway = "CreateCustomerGateway" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateCustomerGateway +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateCustomerGateway func (c *EC2) CreateCustomerGatewayRequest(input *CreateCustomerGatewayInput) (req *request.Request, output *CreateCustomerGatewayOutput) { op := &request.Operation{ Name: opCreateCustomerGateway, @@ -2612,9 +2684,9 @@ func (c *EC2) CreateCustomerGatewayRequest(input *CreateCustomerGatewayInput) (r // the exception of 7224, which is reserved in the us-east-1 region, and 9059, // which is reserved in the eu-west-1 region. // -// For more information about VPN customer gateways, see Adding a Hardware Virtual -// Private Gateway to Your VPC (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html) -// in the Amazon Virtual Private Cloud User Guide. +// For more information about VPN customer gateways, see AWS Managed VPN Connections +// (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html) in the +// Amazon Virtual Private Cloud User Guide. // // You cannot create more than one customer gateway with the same VPN type, // IP address, and BGP ASN parameter values. If you run an identical request @@ -2628,7 +2700,7 @@ func (c *EC2) CreateCustomerGatewayRequest(input *CreateCustomerGatewayInput) (r // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CreateCustomerGateway for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateCustomerGateway +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateCustomerGateway func (c *EC2) CreateCustomerGateway(input *CreateCustomerGatewayInput) (*CreateCustomerGatewayOutput, error) { req, out := c.CreateCustomerGatewayRequest(input) return out, req.Send() @@ -2650,11 +2722,89 @@ func (c *EC2) CreateCustomerGatewayWithContext(ctx aws.Context, input *CreateCus return out, req.Send() } +const opCreateDefaultSubnet = "CreateDefaultSubnet" + +// CreateDefaultSubnetRequest generates a "aws/request.Request" representing the +// client's request for the CreateDefaultSubnet operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateDefaultSubnet for more information on using the CreateDefaultSubnet +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateDefaultSubnetRequest method. +// req, resp := client.CreateDefaultSubnetRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateDefaultSubnet +func (c *EC2) CreateDefaultSubnetRequest(input *CreateDefaultSubnetInput) (req *request.Request, output *CreateDefaultSubnetOutput) { + op := &request.Operation{ + Name: opCreateDefaultSubnet, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateDefaultSubnetInput{} + } + + output = &CreateDefaultSubnetOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateDefaultSubnet API operation for Amazon Elastic Compute Cloud. +// +// Creates a default subnet with a size /20 IPv4 CIDR block in the specified +// Availability Zone in your default VPC. You can have only one default subnet +// per Availability Zone. For more information, see Creating a Default Subnet +// (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/default-vpc.html#create-default-subnet) +// in the Amazon Virtual Private Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateDefaultSubnet for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateDefaultSubnet +func (c *EC2) CreateDefaultSubnet(input *CreateDefaultSubnetInput) (*CreateDefaultSubnetOutput, error) { + req, out := c.CreateDefaultSubnetRequest(input) + return out, req.Send() +} + +// CreateDefaultSubnetWithContext is the same as CreateDefaultSubnet with the addition of +// the ability to pass a context and additional request options. +// +// See CreateDefaultSubnet for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateDefaultSubnetWithContext(ctx aws.Context, input *CreateDefaultSubnetInput, opts ...request.Option) (*CreateDefaultSubnetOutput, error) { + req, out := c.CreateDefaultSubnetRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opCreateDefaultVpc = "CreateDefaultVpc" // CreateDefaultVpcRequest generates a "aws/request.Request" representing the // client's request for the CreateDefaultVpc operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2675,7 +2825,7 @@ const opCreateDefaultVpc = "CreateDefaultVpc" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateDefaultVpc +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateDefaultVpc func (c *EC2) CreateDefaultVpcRequest(input *CreateDefaultVpcInput) (req *request.Request, output *CreateDefaultVpcOutput) { op := &request.Operation{ Name: opCreateDefaultVpc, @@ -2714,7 +2864,7 @@ func (c *EC2) CreateDefaultVpcRequest(input *CreateDefaultVpcInput) (req *reques // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CreateDefaultVpc for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateDefaultVpc +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateDefaultVpc func (c *EC2) CreateDefaultVpc(input *CreateDefaultVpcInput) (*CreateDefaultVpcOutput, error) { req, out := c.CreateDefaultVpcRequest(input) return out, req.Send() @@ -2740,7 +2890,7 @@ const opCreateDhcpOptions = "CreateDhcpOptions" // CreateDhcpOptionsRequest generates a "aws/request.Request" representing the // client's request for the CreateDhcpOptions operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2761,7 +2911,7 @@ const opCreateDhcpOptions = "CreateDhcpOptions" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateDhcpOptions +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateDhcpOptions func (c *EC2) CreateDhcpOptionsRequest(input *CreateDhcpOptionsInput) (req *request.Request, output *CreateDhcpOptionsOutput) { op := &request.Operation{ Name: opCreateDhcpOptions, @@ -2827,7 +2977,7 @@ func (c *EC2) CreateDhcpOptionsRequest(input *CreateDhcpOptionsInput) (req *requ // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CreateDhcpOptions for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateDhcpOptions +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateDhcpOptions func (c *EC2) CreateDhcpOptions(input *CreateDhcpOptionsInput) (*CreateDhcpOptionsOutput, error) { req, out := c.CreateDhcpOptionsRequest(input) return out, req.Send() @@ -2853,7 +3003,7 @@ const opCreateEgressOnlyInternetGateway = "CreateEgressOnlyInternetGateway" // CreateEgressOnlyInternetGatewayRequest generates a "aws/request.Request" representing the // client's request for the CreateEgressOnlyInternetGateway operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2874,7 +3024,7 @@ const opCreateEgressOnlyInternetGateway = "CreateEgressOnlyInternetGateway" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateEgressOnlyInternetGateway +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateEgressOnlyInternetGateway func (c *EC2) CreateEgressOnlyInternetGatewayRequest(input *CreateEgressOnlyInternetGatewayInput) (req *request.Request, output *CreateEgressOnlyInternetGatewayOutput) { op := &request.Operation{ Name: opCreateEgressOnlyInternetGateway, @@ -2904,7 +3054,7 @@ func (c *EC2) CreateEgressOnlyInternetGatewayRequest(input *CreateEgressOnlyInte // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CreateEgressOnlyInternetGateway for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateEgressOnlyInternetGateway +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateEgressOnlyInternetGateway func (c *EC2) CreateEgressOnlyInternetGateway(input *CreateEgressOnlyInternetGatewayInput) (*CreateEgressOnlyInternetGatewayOutput, error) { req, out := c.CreateEgressOnlyInternetGatewayRequest(input) return out, req.Send() @@ -2926,11 +3076,91 @@ func (c *EC2) CreateEgressOnlyInternetGatewayWithContext(ctx aws.Context, input return out, req.Send() } +const opCreateFleet = "CreateFleet" + +// CreateFleetRequest generates a "aws/request.Request" representing the +// client's request for the CreateFleet operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateFleet for more information on using the CreateFleet +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateFleetRequest method. +// req, resp := client.CreateFleetRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateFleet +func (c *EC2) CreateFleetRequest(input *CreateFleetInput) (req *request.Request, output *CreateFleetOutput) { + op := &request.Operation{ + Name: opCreateFleet, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateFleetInput{} + } + + output = &CreateFleetOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateFleet API operation for Amazon Elastic Compute Cloud. +// +// Launches an EC2 Fleet. +// +// You can create a single EC2 Fleet that includes multiple launch specifications +// that vary by instance type, AMI, Availability Zone, or subnet. +// +// For more information, see Launching an EC2 Fleet (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateFleet for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateFleet +func (c *EC2) CreateFleet(input *CreateFleetInput) (*CreateFleetOutput, error) { + req, out := c.CreateFleetRequest(input) + return out, req.Send() +} + +// CreateFleetWithContext is the same as CreateFleet with the addition of +// the ability to pass a context and additional request options. +// +// See CreateFleet for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateFleetWithContext(ctx aws.Context, input *CreateFleetInput, opts ...request.Option) (*CreateFleetOutput, error) { + req, out := c.CreateFleetRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opCreateFlowLogs = "CreateFlowLogs" // CreateFlowLogsRequest generates a "aws/request.Request" representing the // client's request for the CreateFlowLogs operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2951,7 +3181,7 @@ const opCreateFlowLogs = "CreateFlowLogs" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateFlowLogs +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateFlowLogs func (c *EC2) CreateFlowLogsRequest(input *CreateFlowLogsInput) (req *request.Request, output *CreateFlowLogsOutput) { op := &request.Operation{ Name: opCreateFlowLogs, @@ -2981,13 +3211,16 @@ func (c *EC2) CreateFlowLogsRequest(input *CreateFlowLogsInput) (req *request.Re // In your request, you must also specify an IAM role that has permission to // publish logs to CloudWatch Logs. // +// For more information, see VPC Flow Logs (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/flow-logs.html) +// in the Amazon Virtual Private Cloud User Guide. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CreateFlowLogs for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateFlowLogs +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateFlowLogs func (c *EC2) CreateFlowLogs(input *CreateFlowLogsInput) (*CreateFlowLogsOutput, error) { req, out := c.CreateFlowLogsRequest(input) return out, req.Send() @@ -3013,7 +3246,7 @@ const opCreateFpgaImage = "CreateFpgaImage" // CreateFpgaImageRequest generates a "aws/request.Request" representing the // client's request for the CreateFpgaImage operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -3034,7 +3267,7 @@ const opCreateFpgaImage = "CreateFpgaImage" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateFpgaImage +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateFpgaImage func (c *EC2) CreateFpgaImageRequest(input *CreateFpgaImageInput) (req *request.Request, output *CreateFpgaImageOutput) { op := &request.Operation{ Name: opCreateFpgaImage, @@ -3068,7 +3301,7 @@ func (c *EC2) CreateFpgaImageRequest(input *CreateFpgaImageInput) (req *request. // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CreateFpgaImage for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateFpgaImage +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateFpgaImage func (c *EC2) CreateFpgaImage(input *CreateFpgaImageInput) (*CreateFpgaImageOutput, error) { req, out := c.CreateFpgaImageRequest(input) return out, req.Send() @@ -3094,7 +3327,7 @@ const opCreateImage = "CreateImage" // CreateImageRequest generates a "aws/request.Request" representing the // client's request for the CreateImage operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -3115,7 +3348,7 @@ const opCreateImage = "CreateImage" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateImage +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateImage func (c *EC2) CreateImageRequest(input *CreateImageInput) (req *request.Request, output *CreateImageOutput) { op := &request.Operation{ Name: opCreateImage, @@ -3151,7 +3384,7 @@ func (c *EC2) CreateImageRequest(input *CreateImageInput) (req *request.Request, // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CreateImage for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateImage +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateImage func (c *EC2) CreateImage(input *CreateImageInput) (*CreateImageOutput, error) { req, out := c.CreateImageRequest(input) return out, req.Send() @@ -3177,7 +3410,7 @@ const opCreateInstanceExportTask = "CreateInstanceExportTask" // CreateInstanceExportTaskRequest generates a "aws/request.Request" representing the // client's request for the CreateInstanceExportTask operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -3198,7 +3431,7 @@ const opCreateInstanceExportTask = "CreateInstanceExportTask" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateInstanceExportTask +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateInstanceExportTask func (c *EC2) CreateInstanceExportTaskRequest(input *CreateInstanceExportTaskInput) (req *request.Request, output *CreateInstanceExportTaskOutput) { op := &request.Operation{ Name: opCreateInstanceExportTask, @@ -3230,7 +3463,7 @@ func (c *EC2) CreateInstanceExportTaskRequest(input *CreateInstanceExportTaskInp // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CreateInstanceExportTask for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateInstanceExportTask +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateInstanceExportTask func (c *EC2) CreateInstanceExportTask(input *CreateInstanceExportTaskInput) (*CreateInstanceExportTaskOutput, error) { req, out := c.CreateInstanceExportTaskRequest(input) return out, req.Send() @@ -3256,7 +3489,7 @@ const opCreateInternetGateway = "CreateInternetGateway" // CreateInternetGatewayRequest generates a "aws/request.Request" representing the // client's request for the CreateInternetGateway operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -3277,7 +3510,7 @@ const opCreateInternetGateway = "CreateInternetGateway" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateInternetGateway +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateInternetGateway func (c *EC2) CreateInternetGatewayRequest(input *CreateInternetGatewayInput) (req *request.Request, output *CreateInternetGatewayOutput) { op := &request.Operation{ Name: opCreateInternetGateway, @@ -3308,7 +3541,7 @@ func (c *EC2) CreateInternetGatewayRequest(input *CreateInternetGatewayInput) (r // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CreateInternetGateway for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateInternetGateway +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateInternetGateway func (c *EC2) CreateInternetGateway(input *CreateInternetGatewayInput) (*CreateInternetGatewayOutput, error) { req, out := c.CreateInternetGatewayRequest(input) return out, req.Send() @@ -3334,7 +3567,7 @@ const opCreateKeyPair = "CreateKeyPair" // CreateKeyPairRequest generates a "aws/request.Request" representing the // client's request for the CreateKeyPair operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -3355,7 +3588,7 @@ const opCreateKeyPair = "CreateKeyPair" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateKeyPair +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateKeyPair func (c *EC2) CreateKeyPairRequest(input *CreateKeyPairInput) (req *request.Request, output *CreateKeyPairOutput) { op := &request.Operation{ Name: opCreateKeyPair, @@ -3376,15 +3609,16 @@ func (c *EC2) CreateKeyPairRequest(input *CreateKeyPairInput) (req *request.Requ // // Creates a 2048-bit RSA key pair with the specified name. Amazon EC2 stores // the public key and displays the private key for you to save to a file. The -// private key is returned as an unencrypted PEM encoded PKCS#8 private key. +// private key is returned as an unencrypted PEM encoded PKCS#1 private key. // If a key with the specified name already exists, Amazon EC2 returns an error. // // You can have up to five thousand key pairs per region. // // The key pair returned to you is available only in the region in which you -// create it. To create a key pair that is available in all regions, use ImportKeyPair. +// create it. If you prefer, you can create your own key pair using a third-party +// tool and upload it to any region using ImportKeyPair. // -// For more information about key pairs, see Key Pairs (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) +// For more information, see Key Pairs (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) // in the Amazon Elastic Compute Cloud User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -3393,7 +3627,7 @@ func (c *EC2) CreateKeyPairRequest(input *CreateKeyPairInput) (req *request.Requ // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CreateKeyPair for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateKeyPair +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateKeyPair func (c *EC2) CreateKeyPair(input *CreateKeyPairInput) (*CreateKeyPairOutput, error) { req, out := c.CreateKeyPairRequest(input) return out, req.Send() @@ -3415,11 +3649,165 @@ func (c *EC2) CreateKeyPairWithContext(ctx aws.Context, input *CreateKeyPairInpu return out, req.Send() } +const opCreateLaunchTemplate = "CreateLaunchTemplate" + +// CreateLaunchTemplateRequest generates a "aws/request.Request" representing the +// client's request for the CreateLaunchTemplate operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateLaunchTemplate for more information on using the CreateLaunchTemplate +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateLaunchTemplateRequest method. +// req, resp := client.CreateLaunchTemplateRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateLaunchTemplate +func (c *EC2) CreateLaunchTemplateRequest(input *CreateLaunchTemplateInput) (req *request.Request, output *CreateLaunchTemplateOutput) { + op := &request.Operation{ + Name: opCreateLaunchTemplate, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateLaunchTemplateInput{} + } + + output = &CreateLaunchTemplateOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateLaunchTemplate API operation for Amazon Elastic Compute Cloud. +// +// Creates a launch template. A launch template contains the parameters to launch +// an instance. When you launch an instance using RunInstances, you can specify +// a launch template instead of providing the launch parameters in the request. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateLaunchTemplate for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateLaunchTemplate +func (c *EC2) CreateLaunchTemplate(input *CreateLaunchTemplateInput) (*CreateLaunchTemplateOutput, error) { + req, out := c.CreateLaunchTemplateRequest(input) + return out, req.Send() +} + +// CreateLaunchTemplateWithContext is the same as CreateLaunchTemplate with the addition of +// the ability to pass a context and additional request options. +// +// See CreateLaunchTemplate for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateLaunchTemplateWithContext(ctx aws.Context, input *CreateLaunchTemplateInput, opts ...request.Option) (*CreateLaunchTemplateOutput, error) { + req, out := c.CreateLaunchTemplateRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateLaunchTemplateVersion = "CreateLaunchTemplateVersion" + +// CreateLaunchTemplateVersionRequest generates a "aws/request.Request" representing the +// client's request for the CreateLaunchTemplateVersion operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateLaunchTemplateVersion for more information on using the CreateLaunchTemplateVersion +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateLaunchTemplateVersionRequest method. +// req, resp := client.CreateLaunchTemplateVersionRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateLaunchTemplateVersion +func (c *EC2) CreateLaunchTemplateVersionRequest(input *CreateLaunchTemplateVersionInput) (req *request.Request, output *CreateLaunchTemplateVersionOutput) { + op := &request.Operation{ + Name: opCreateLaunchTemplateVersion, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateLaunchTemplateVersionInput{} + } + + output = &CreateLaunchTemplateVersionOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateLaunchTemplateVersion API operation for Amazon Elastic Compute Cloud. +// +// Creates a new version for a launch template. You can specify an existing +// version of launch template from which to base the new version. +// +// Launch template versions are numbered in the order in which they are created. +// You cannot specify, change, or replace the numbering of launch template versions. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateLaunchTemplateVersion for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateLaunchTemplateVersion +func (c *EC2) CreateLaunchTemplateVersion(input *CreateLaunchTemplateVersionInput) (*CreateLaunchTemplateVersionOutput, error) { + req, out := c.CreateLaunchTemplateVersionRequest(input) + return out, req.Send() +} + +// CreateLaunchTemplateVersionWithContext is the same as CreateLaunchTemplateVersion with the addition of +// the ability to pass a context and additional request options. +// +// See CreateLaunchTemplateVersion for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateLaunchTemplateVersionWithContext(ctx aws.Context, input *CreateLaunchTemplateVersionInput, opts ...request.Option) (*CreateLaunchTemplateVersionOutput, error) { + req, out := c.CreateLaunchTemplateVersionRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opCreateNatGateway = "CreateNatGateway" // CreateNatGatewayRequest generates a "aws/request.Request" representing the // client's request for the CreateNatGateway operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -3440,7 +3828,7 @@ const opCreateNatGateway = "CreateNatGateway" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNatGateway +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNatGateway func (c *EC2) CreateNatGatewayRequest(input *CreateNatGatewayInput) (req *request.Request, output *CreateNatGatewayOutput) { op := &request.Operation{ Name: opCreateNatGateway, @@ -3459,11 +3847,12 @@ func (c *EC2) CreateNatGatewayRequest(input *CreateNatGatewayInput) (req *reques // CreateNatGateway API operation for Amazon Elastic Compute Cloud. // -// Creates a NAT gateway in the specified subnet. A NAT gateway can be used -// to enable instances in a private subnet to connect to the Internet. This -// action creates a network interface in the specified subnet with a private -// IP address from the IP address range of the subnet. For more information, -// see NAT Gateways (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-nat-gateway.html) +// Creates a NAT gateway in the specified public subnet. This action creates +// a network interface in the specified subnet with a private IP address from +// the IP address range of the subnet. Internet-bound traffic from a private +// subnet can be routed to the NAT gateway, therefore enabling instances in +// the private subnet to connect to the internet. For more information, see +// NAT Gateways (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-nat-gateway.html) // in the Amazon Virtual Private Cloud User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -3472,7 +3861,7 @@ func (c *EC2) CreateNatGatewayRequest(input *CreateNatGatewayInput) (req *reques // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CreateNatGateway for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNatGateway +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNatGateway func (c *EC2) CreateNatGateway(input *CreateNatGatewayInput) (*CreateNatGatewayOutput, error) { req, out := c.CreateNatGatewayRequest(input) return out, req.Send() @@ -3498,7 +3887,7 @@ const opCreateNetworkAcl = "CreateNetworkAcl" // CreateNetworkAclRequest generates a "aws/request.Request" representing the // client's request for the CreateNetworkAcl operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -3519,7 +3908,7 @@ const opCreateNetworkAcl = "CreateNetworkAcl" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNetworkAcl +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNetworkAcl func (c *EC2) CreateNetworkAclRequest(input *CreateNetworkAclInput) (req *request.Request, output *CreateNetworkAclOutput) { op := &request.Operation{ Name: opCreateNetworkAcl, @@ -3550,7 +3939,7 @@ func (c *EC2) CreateNetworkAclRequest(input *CreateNetworkAclInput) (req *reques // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CreateNetworkAcl for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNetworkAcl +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNetworkAcl func (c *EC2) CreateNetworkAcl(input *CreateNetworkAclInput) (*CreateNetworkAclOutput, error) { req, out := c.CreateNetworkAclRequest(input) return out, req.Send() @@ -3576,7 +3965,7 @@ const opCreateNetworkAclEntry = "CreateNetworkAclEntry" // CreateNetworkAclEntryRequest generates a "aws/request.Request" representing the // client's request for the CreateNetworkAclEntry operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -3597,7 +3986,7 @@ const opCreateNetworkAclEntry = "CreateNetworkAclEntry" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNetworkAclEntry +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNetworkAclEntry func (c *EC2) CreateNetworkAclEntryRequest(input *CreateNetworkAclEntryInput) (req *request.Request, output *CreateNetworkAclEntryOutput) { op := &request.Operation{ Name: opCreateNetworkAclEntry, @@ -3642,7 +4031,7 @@ func (c *EC2) CreateNetworkAclEntryRequest(input *CreateNetworkAclEntryInput) (r // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CreateNetworkAclEntry for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNetworkAclEntry +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNetworkAclEntry func (c *EC2) CreateNetworkAclEntry(input *CreateNetworkAclEntryInput) (*CreateNetworkAclEntryOutput, error) { req, out := c.CreateNetworkAclEntryRequest(input) return out, req.Send() @@ -3668,7 +4057,7 @@ const opCreateNetworkInterface = "CreateNetworkInterface" // CreateNetworkInterfaceRequest generates a "aws/request.Request" representing the // client's request for the CreateNetworkInterface operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -3689,7 +4078,7 @@ const opCreateNetworkInterface = "CreateNetworkInterface" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNetworkInterface +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNetworkInterface func (c *EC2) CreateNetworkInterfaceRequest(input *CreateNetworkInterfaceInput) (req *request.Request, output *CreateNetworkInterfaceOutput) { op := &request.Operation{ Name: opCreateNetworkInterface, @@ -3720,7 +4109,7 @@ func (c *EC2) CreateNetworkInterfaceRequest(input *CreateNetworkInterfaceInput) // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CreateNetworkInterface for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNetworkInterface +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNetworkInterface func (c *EC2) CreateNetworkInterface(input *CreateNetworkInterfaceInput) (*CreateNetworkInterfaceOutput, error) { req, out := c.CreateNetworkInterfaceRequest(input) return out, req.Send() @@ -3746,7 +4135,7 @@ const opCreateNetworkInterfacePermission = "CreateNetworkInterfacePermission" // CreateNetworkInterfacePermissionRequest generates a "aws/request.Request" representing the // client's request for the CreateNetworkInterfacePermission operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -3767,7 +4156,7 @@ const opCreateNetworkInterfacePermission = "CreateNetworkInterfacePermission" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNetworkInterfacePermission +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNetworkInterfacePermission func (c *EC2) CreateNetworkInterfacePermissionRequest(input *CreateNetworkInterfacePermissionInput) (req *request.Request, output *CreateNetworkInterfacePermissionOutput) { op := &request.Operation{ Name: opCreateNetworkInterfacePermission, @@ -3786,8 +4175,8 @@ func (c *EC2) CreateNetworkInterfacePermissionRequest(input *CreateNetworkInterf // CreateNetworkInterfacePermission API operation for Amazon Elastic Compute Cloud. // -// Grants an AWS authorized partner account permission to attach the specified -// network interface to an instance in their account. +// Grants an AWS-authorized account permission to attach the specified network +// interface to an instance in their account. // // You can grant permission to a single AWS account only, and only one account // at a time. @@ -3798,7 +4187,7 @@ func (c *EC2) CreateNetworkInterfacePermissionRequest(input *CreateNetworkInterf // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CreateNetworkInterfacePermission for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNetworkInterfacePermission +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNetworkInterfacePermission func (c *EC2) CreateNetworkInterfacePermission(input *CreateNetworkInterfacePermissionInput) (*CreateNetworkInterfacePermissionOutput, error) { req, out := c.CreateNetworkInterfacePermissionRequest(input) return out, req.Send() @@ -3824,7 +4213,7 @@ const opCreatePlacementGroup = "CreatePlacementGroup" // CreatePlacementGroupRequest generates a "aws/request.Request" representing the // client's request for the CreatePlacementGroup operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -3845,7 +4234,7 @@ const opCreatePlacementGroup = "CreatePlacementGroup" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreatePlacementGroup +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreatePlacementGroup func (c *EC2) CreatePlacementGroupRequest(input *CreatePlacementGroupInput) (req *request.Request, output *CreatePlacementGroupOutput) { op := &request.Operation{ Name: opCreatePlacementGroup, @@ -3866,11 +4255,14 @@ func (c *EC2) CreatePlacementGroupRequest(input *CreatePlacementGroupInput) (req // CreatePlacementGroup API operation for Amazon Elastic Compute Cloud. // -// Creates a placement group that you launch cluster instances into. Give the -// group a name that's unique within the scope of your account. +// Creates a placement group in which to launch instances. The strategy of the +// placement group determines how the instances are organized within the group. // -// For more information about placement groups and cluster instances, see Cluster -// Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using_cluster_computing.html) +// A cluster placement group is a logical grouping of instances within a single +// Availability Zone that benefit from low network latency, high network throughput. +// A spread placement group places instances on distinct hardware. +// +// For more information, see Placement Groups (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html) // in the Amazon Elastic Compute Cloud User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -3879,7 +4271,7 @@ func (c *EC2) CreatePlacementGroupRequest(input *CreatePlacementGroupInput) (req // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CreatePlacementGroup for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreatePlacementGroup +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreatePlacementGroup func (c *EC2) CreatePlacementGroup(input *CreatePlacementGroupInput) (*CreatePlacementGroupOutput, error) { req, out := c.CreatePlacementGroupRequest(input) return out, req.Send() @@ -3905,7 +4297,7 @@ const opCreateReservedInstancesListing = "CreateReservedInstancesListing" // CreateReservedInstancesListingRequest generates a "aws/request.Request" representing the // client's request for the CreateReservedInstancesListing operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -3926,7 +4318,7 @@ const opCreateReservedInstancesListing = "CreateReservedInstancesListing" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateReservedInstancesListing +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateReservedInstancesListing func (c *EC2) CreateReservedInstancesListingRequest(input *CreateReservedInstancesListingInput) (req *request.Request, output *CreateReservedInstancesListingOutput) { op := &request.Operation{ Name: opCreateReservedInstancesListing, @@ -3976,7 +4368,7 @@ func (c *EC2) CreateReservedInstancesListingRequest(input *CreateReservedInstanc // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CreateReservedInstancesListing for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateReservedInstancesListing +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateReservedInstancesListing func (c *EC2) CreateReservedInstancesListing(input *CreateReservedInstancesListingInput) (*CreateReservedInstancesListingOutput, error) { req, out := c.CreateReservedInstancesListingRequest(input) return out, req.Send() @@ -4002,7 +4394,7 @@ const opCreateRoute = "CreateRoute" // CreateRouteRequest generates a "aws/request.Request" representing the // client's request for the CreateRoute operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -4023,7 +4415,7 @@ const opCreateRoute = "CreateRoute" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateRoute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateRoute func (c *EC2) CreateRouteRequest(input *CreateRouteInput) (req *request.Request, output *CreateRouteOutput) { op := &request.Operation{ Name: opCreateRoute, @@ -4069,7 +4461,7 @@ func (c *EC2) CreateRouteRequest(input *CreateRouteInput) (req *request.Request, // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CreateRoute for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateRoute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateRoute func (c *EC2) CreateRoute(input *CreateRouteInput) (*CreateRouteOutput, error) { req, out := c.CreateRouteRequest(input) return out, req.Send() @@ -4095,7 +4487,7 @@ const opCreateRouteTable = "CreateRouteTable" // CreateRouteTableRequest generates a "aws/request.Request" representing the // client's request for the CreateRouteTable operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -4116,7 +4508,7 @@ const opCreateRouteTable = "CreateRouteTable" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateRouteTable +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateRouteTable func (c *EC2) CreateRouteTableRequest(input *CreateRouteTableInput) (req *request.Request, output *CreateRouteTableOutput) { op := &request.Operation{ Name: opCreateRouteTable, @@ -4147,7 +4539,7 @@ func (c *EC2) CreateRouteTableRequest(input *CreateRouteTableInput) (req *reques // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CreateRouteTable for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateRouteTable +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateRouteTable func (c *EC2) CreateRouteTable(input *CreateRouteTableInput) (*CreateRouteTableOutput, error) { req, out := c.CreateRouteTableRequest(input) return out, req.Send() @@ -4173,7 +4565,7 @@ const opCreateSecurityGroup = "CreateSecurityGroup" // CreateSecurityGroupRequest generates a "aws/request.Request" representing the // client's request for the CreateSecurityGroup operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -4194,7 +4586,7 @@ const opCreateSecurityGroup = "CreateSecurityGroup" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateSecurityGroup +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateSecurityGroup func (c *EC2) CreateSecurityGroupRequest(input *CreateSecurityGroupInput) (req *request.Request, output *CreateSecurityGroupOutput) { op := &request.Operation{ Name: opCreateSecurityGroup, @@ -4247,7 +4639,7 @@ func (c *EC2) CreateSecurityGroupRequest(input *CreateSecurityGroupInput) (req * // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CreateSecurityGroup for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateSecurityGroup +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateSecurityGroup func (c *EC2) CreateSecurityGroup(input *CreateSecurityGroupInput) (*CreateSecurityGroupOutput, error) { req, out := c.CreateSecurityGroupRequest(input) return out, req.Send() @@ -4273,7 +4665,7 @@ const opCreateSnapshot = "CreateSnapshot" // CreateSnapshotRequest generates a "aws/request.Request" representing the // client's request for the CreateSnapshot operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -4294,7 +4686,7 @@ const opCreateSnapshot = "CreateSnapshot" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateSnapshot +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateSnapshot func (c *EC2) CreateSnapshotRequest(input *CreateSnapshotInput) (req *request.Request, output *Snapshot) { op := &request.Operation{ Name: opCreateSnapshot, @@ -4338,6 +4730,9 @@ func (c *EC2) CreateSnapshotRequest(input *CreateSnapshotInput) (req *request.Re // encrypted. Your encrypted volumes and any associated snapshots always remain // protected. // +// You can tag your snapshots during creation. For more information, see Tagging +// Your Amazon EC2 Resources (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html). +// // For more information, see Amazon Elastic Block Store (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html) // and Amazon EBS Encryption (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html) // in the Amazon Elastic Compute Cloud User Guide. @@ -4348,7 +4743,7 @@ func (c *EC2) CreateSnapshotRequest(input *CreateSnapshotInput) (req *request.Re // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CreateSnapshot for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateSnapshot +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateSnapshot func (c *EC2) CreateSnapshot(input *CreateSnapshotInput) (*Snapshot, error) { req, out := c.CreateSnapshotRequest(input) return out, req.Send() @@ -4374,7 +4769,7 @@ const opCreateSpotDatafeedSubscription = "CreateSpotDatafeedSubscription" // CreateSpotDatafeedSubscriptionRequest generates a "aws/request.Request" representing the // client's request for the CreateSpotDatafeedSubscription operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -4395,7 +4790,7 @@ const opCreateSpotDatafeedSubscription = "CreateSpotDatafeedSubscription" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateSpotDatafeedSubscription +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateSpotDatafeedSubscription func (c *EC2) CreateSpotDatafeedSubscriptionRequest(input *CreateSpotDatafeedSubscriptionInput) (req *request.Request, output *CreateSpotDatafeedSubscriptionOutput) { op := &request.Operation{ Name: opCreateSpotDatafeedSubscription, @@ -4414,10 +4809,10 @@ func (c *EC2) CreateSpotDatafeedSubscriptionRequest(input *CreateSpotDatafeedSub // CreateSpotDatafeedSubscription API operation for Amazon Elastic Compute Cloud. // -// Creates a data feed for Spot instances, enabling you to view Spot instance +// Creates a data feed for Spot Instances, enabling you to view Spot Instance // usage logs. You can create one data feed per AWS account. For more information, // see Spot Instance Data Feed (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-data-feeds.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide for Linux Instances. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -4425,7 +4820,7 @@ func (c *EC2) CreateSpotDatafeedSubscriptionRequest(input *CreateSpotDatafeedSub // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CreateSpotDatafeedSubscription for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateSpotDatafeedSubscription +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateSpotDatafeedSubscription func (c *EC2) CreateSpotDatafeedSubscription(input *CreateSpotDatafeedSubscriptionInput) (*CreateSpotDatafeedSubscriptionOutput, error) { req, out := c.CreateSpotDatafeedSubscriptionRequest(input) return out, req.Send() @@ -4451,7 +4846,7 @@ const opCreateSubnet = "CreateSubnet" // CreateSubnetRequest generates a "aws/request.Request" representing the // client's request for the CreateSubnet operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -4472,7 +4867,7 @@ const opCreateSubnet = "CreateSubnet" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateSubnet +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateSubnet func (c *EC2) CreateSubnetRequest(input *CreateSubnetInput) (req *request.Request, output *CreateSubnetOutput) { op := &request.Operation{ Name: opCreateSubnet, @@ -4525,7 +4920,7 @@ func (c *EC2) CreateSubnetRequest(input *CreateSubnetInput) (req *request.Reques // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CreateSubnet for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateSubnet +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateSubnet func (c *EC2) CreateSubnet(input *CreateSubnetInput) (*CreateSubnetOutput, error) { req, out := c.CreateSubnetRequest(input) return out, req.Send() @@ -4551,7 +4946,7 @@ const opCreateTags = "CreateTags" // CreateTagsRequest generates a "aws/request.Request" representing the // client's request for the CreateTags operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -4572,7 +4967,7 @@ const opCreateTags = "CreateTags" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateTags +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateTags func (c *EC2) CreateTagsRequest(input *CreateTagsInput) (req *request.Request, output *CreateTagsOutput) { op := &request.Operation{ Name: opCreateTags, @@ -4609,7 +5004,7 @@ func (c *EC2) CreateTagsRequest(input *CreateTagsInput) (req *request.Request, o // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CreateTags for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateTags +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateTags func (c *EC2) CreateTags(input *CreateTagsInput) (*CreateTagsOutput, error) { req, out := c.CreateTagsRequest(input) return out, req.Send() @@ -4635,7 +5030,7 @@ const opCreateVolume = "CreateVolume" // CreateVolumeRequest generates a "aws/request.Request" representing the // client's request for the CreateVolume operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -4656,7 +5051,7 @@ const opCreateVolume = "CreateVolume" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVolume +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVolume func (c *EC2) CreateVolumeRequest(input *CreateVolumeInput) (req *request.Request, output *Volume) { op := &request.Operation{ Name: opCreateVolume, @@ -4701,7 +5096,7 @@ func (c *EC2) CreateVolumeRequest(input *CreateVolumeInput) (req *request.Reques // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CreateVolume for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVolume +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVolume func (c *EC2) CreateVolume(input *CreateVolumeInput) (*Volume, error) { req, out := c.CreateVolumeRequest(input) return out, req.Send() @@ -4727,7 +5122,7 @@ const opCreateVpc = "CreateVpc" // CreateVpcRequest generates a "aws/request.Request" representing the // client's request for the CreateVpc operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -4748,7 +5143,7 @@ const opCreateVpc = "CreateVpc" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpc +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpc func (c *EC2) CreateVpcRequest(input *CreateVpcInput) (req *request.Request, output *CreateVpcOutput) { op := &request.Operation{ Name: opCreateVpc, @@ -4793,7 +5188,7 @@ func (c *EC2) CreateVpcRequest(input *CreateVpcInput) (req *request.Request, out // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CreateVpc for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpc +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpc func (c *EC2) CreateVpc(input *CreateVpcInput) (*CreateVpcOutput, error) { req, out := c.CreateVpcRequest(input) return out, req.Send() @@ -4819,7 +5214,7 @@ const opCreateVpcEndpoint = "CreateVpcEndpoint" // CreateVpcEndpointRequest generates a "aws/request.Request" representing the // client's request for the CreateVpcEndpoint operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -4840,7 +5235,7 @@ const opCreateVpcEndpoint = "CreateVpcEndpoint" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpcEndpoint +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpcEndpoint func (c *EC2) CreateVpcEndpointRequest(input *CreateVpcEndpointInput) (req *request.Request, output *CreateVpcEndpointOutput) { op := &request.Operation{ Name: opCreateVpcEndpoint, @@ -4859,13 +5254,23 @@ func (c *EC2) CreateVpcEndpointRequest(input *CreateVpcEndpointInput) (req *requ // CreateVpcEndpoint API operation for Amazon Elastic Compute Cloud. // -// Creates a VPC endpoint for a specified AWS service. An endpoint enables you -// to create a private connection between your VPC and another AWS service in -// your account. You can specify an endpoint policy to attach to the endpoint -// that will control access to the service from your VPC. You can also specify -// the VPC route tables that use the endpoint. +// Creates a VPC endpoint for a specified service. An endpoint enables you to +// create a private connection between your VPC and the service. The service +// may be provided by AWS, an AWS Marketplace partner, or another AWS account. +// For more information, see VPC Endpoints (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-endpoints.html) +// in the Amazon Virtual Private Cloud User Guide. // -// Use DescribeVpcEndpointServices to get a list of supported AWS services. +// A gateway endpoint serves as a target for a route in your route table for +// traffic destined for the AWS service. You can specify an endpoint policy +// to attach to the endpoint that will control access to the service from your +// VPC. You can also specify the VPC route tables that use the endpoint. +// +// An interface endpoint is a network interface in your subnet that serves as +// an endpoint for communicating with the specified service. You can specify +// the subnets in which to create an endpoint, and the security groups to associate +// with the endpoint network interface. +// +// Use DescribeVpcEndpointServices to get a list of supported services. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -4873,7 +5278,7 @@ func (c *EC2) CreateVpcEndpointRequest(input *CreateVpcEndpointInput) (req *requ // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CreateVpcEndpoint for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpcEndpoint +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpcEndpoint func (c *EC2) CreateVpcEndpoint(input *CreateVpcEndpointInput) (*CreateVpcEndpointOutput, error) { req, out := c.CreateVpcEndpointRequest(input) return out, req.Send() @@ -4895,11 +5300,172 @@ func (c *EC2) CreateVpcEndpointWithContext(ctx aws.Context, input *CreateVpcEndp return out, req.Send() } +const opCreateVpcEndpointConnectionNotification = "CreateVpcEndpointConnectionNotification" + +// CreateVpcEndpointConnectionNotificationRequest generates a "aws/request.Request" representing the +// client's request for the CreateVpcEndpointConnectionNotification operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateVpcEndpointConnectionNotification for more information on using the CreateVpcEndpointConnectionNotification +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateVpcEndpointConnectionNotificationRequest method. +// req, resp := client.CreateVpcEndpointConnectionNotificationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpcEndpointConnectionNotification +func (c *EC2) CreateVpcEndpointConnectionNotificationRequest(input *CreateVpcEndpointConnectionNotificationInput) (req *request.Request, output *CreateVpcEndpointConnectionNotificationOutput) { + op := &request.Operation{ + Name: opCreateVpcEndpointConnectionNotification, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateVpcEndpointConnectionNotificationInput{} + } + + output = &CreateVpcEndpointConnectionNotificationOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateVpcEndpointConnectionNotification API operation for Amazon Elastic Compute Cloud. +// +// Creates a connection notification for a specified VPC endpoint or VPC endpoint +// service. A connection notification notifies you of specific endpoint events. +// You must create an SNS topic to receive notifications. For more information, +// see Create a Topic (http://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html) +// in the Amazon Simple Notification Service Developer Guide. +// +// You can create a connection notification for interface endpoints only. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateVpcEndpointConnectionNotification for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpcEndpointConnectionNotification +func (c *EC2) CreateVpcEndpointConnectionNotification(input *CreateVpcEndpointConnectionNotificationInput) (*CreateVpcEndpointConnectionNotificationOutput, error) { + req, out := c.CreateVpcEndpointConnectionNotificationRequest(input) + return out, req.Send() +} + +// CreateVpcEndpointConnectionNotificationWithContext is the same as CreateVpcEndpointConnectionNotification with the addition of +// the ability to pass a context and additional request options. +// +// See CreateVpcEndpointConnectionNotification for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateVpcEndpointConnectionNotificationWithContext(ctx aws.Context, input *CreateVpcEndpointConnectionNotificationInput, opts ...request.Option) (*CreateVpcEndpointConnectionNotificationOutput, error) { + req, out := c.CreateVpcEndpointConnectionNotificationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateVpcEndpointServiceConfiguration = "CreateVpcEndpointServiceConfiguration" + +// CreateVpcEndpointServiceConfigurationRequest generates a "aws/request.Request" representing the +// client's request for the CreateVpcEndpointServiceConfiguration operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateVpcEndpointServiceConfiguration for more information on using the CreateVpcEndpointServiceConfiguration +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateVpcEndpointServiceConfigurationRequest method. +// req, resp := client.CreateVpcEndpointServiceConfigurationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpcEndpointServiceConfiguration +func (c *EC2) CreateVpcEndpointServiceConfigurationRequest(input *CreateVpcEndpointServiceConfigurationInput) (req *request.Request, output *CreateVpcEndpointServiceConfigurationOutput) { + op := &request.Operation{ + Name: opCreateVpcEndpointServiceConfiguration, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateVpcEndpointServiceConfigurationInput{} + } + + output = &CreateVpcEndpointServiceConfigurationOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateVpcEndpointServiceConfiguration API operation for Amazon Elastic Compute Cloud. +// +// Creates a VPC endpoint service configuration to which service consumers (AWS +// accounts, IAM users, and IAM roles) can connect. Service consumers can create +// an interface VPC endpoint to connect to your service. +// +// To create an endpoint service configuration, you must first create a Network +// Load Balancer for your service. For more information, see VPC Endpoint Services +// (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/endpoint-service.html) +// in the Amazon Virtual Private Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateVpcEndpointServiceConfiguration for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpcEndpointServiceConfiguration +func (c *EC2) CreateVpcEndpointServiceConfiguration(input *CreateVpcEndpointServiceConfigurationInput) (*CreateVpcEndpointServiceConfigurationOutput, error) { + req, out := c.CreateVpcEndpointServiceConfigurationRequest(input) + return out, req.Send() +} + +// CreateVpcEndpointServiceConfigurationWithContext is the same as CreateVpcEndpointServiceConfiguration with the addition of +// the ability to pass a context and additional request options. +// +// See CreateVpcEndpointServiceConfiguration for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateVpcEndpointServiceConfigurationWithContext(ctx aws.Context, input *CreateVpcEndpointServiceConfigurationInput, opts ...request.Option) (*CreateVpcEndpointServiceConfigurationOutput, error) { + req, out := c.CreateVpcEndpointServiceConfigurationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opCreateVpcPeeringConnection = "CreateVpcPeeringConnection" // CreateVpcPeeringConnectionRequest generates a "aws/request.Request" representing the // client's request for the CreateVpcPeeringConnection operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -4920,7 +5486,7 @@ const opCreateVpcPeeringConnection = "CreateVpcPeeringConnection" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpcPeeringConnection +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpcPeeringConnection func (c *EC2) CreateVpcPeeringConnectionRequest(input *CreateVpcPeeringConnectionInput) (req *request.Request, output *CreateVpcPeeringConnectionOutput) { op := &request.Operation{ Name: opCreateVpcPeeringConnection, @@ -4940,16 +5506,21 @@ func (c *EC2) CreateVpcPeeringConnectionRequest(input *CreateVpcPeeringConnectio // CreateVpcPeeringConnection API operation for Amazon Elastic Compute Cloud. // // Requests a VPC peering connection between two VPCs: a requester VPC that -// you own and a peer VPC with which to create the connection. The peer VPC -// can belong to another AWS account. The requester VPC and peer VPC cannot -// have overlapping CIDR blocks. +// you own and an accepter VPC with which to create the connection. The accepter +// VPC can belong to another AWS account and can be in a different region to +// the requester VPC. The requester VPC and accepter VPC cannot have overlapping +// CIDR blocks. // -// The owner of the peer VPC must accept the peering request to activate the -// peering connection. The VPC peering connection request expires after 7 days, -// after which it cannot be accepted or rejected. +// Limitations and rules apply to a VPC peering connection. For more information, +// see the limitations (http://docs.aws.amazon.com/AmazonVPC/latest/PeeringGuide/vpc-peering-basics.html#vpc-peering-limitations) +// section in the VPC Peering Guide. // -// If you try to create a VPC peering connection between VPCs that have overlapping -// CIDR blocks, the VPC peering connection status goes to failed. +// The owner of the accepter VPC must accept the peering request to activate +// the peering connection. The VPC peering connection request expires after +// 7 days, after which it cannot be accepted or rejected. +// +// If you create a VPC peering connection request between VPCs with overlapping +// CIDR blocks, the VPC peering connection has a status of failed. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -4957,7 +5528,7 @@ func (c *EC2) CreateVpcPeeringConnectionRequest(input *CreateVpcPeeringConnectio // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CreateVpcPeeringConnection for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpcPeeringConnection +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpcPeeringConnection func (c *EC2) CreateVpcPeeringConnection(input *CreateVpcPeeringConnectionInput) (*CreateVpcPeeringConnectionOutput, error) { req, out := c.CreateVpcPeeringConnectionRequest(input) return out, req.Send() @@ -4983,7 +5554,7 @@ const opCreateVpnConnection = "CreateVpnConnection" // CreateVpnConnectionRequest generates a "aws/request.Request" representing the // client's request for the CreateVpnConnection operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -5004,7 +5575,7 @@ const opCreateVpnConnection = "CreateVpnConnection" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpnConnection +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpnConnection func (c *EC2) CreateVpnConnectionRequest(input *CreateVpnConnectionInput) (req *request.Request, output *CreateVpnConnectionOutput) { op := &request.Operation{ Name: opCreateVpnConnection, @@ -5049,7 +5620,7 @@ func (c *EC2) CreateVpnConnectionRequest(input *CreateVpnConnectionInput) (req * // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CreateVpnConnection for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpnConnection +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpnConnection func (c *EC2) CreateVpnConnection(input *CreateVpnConnectionInput) (*CreateVpnConnectionOutput, error) { req, out := c.CreateVpnConnectionRequest(input) return out, req.Send() @@ -5075,7 +5646,7 @@ const opCreateVpnConnectionRoute = "CreateVpnConnectionRoute" // CreateVpnConnectionRouteRequest generates a "aws/request.Request" representing the // client's request for the CreateVpnConnectionRoute operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -5096,7 +5667,7 @@ const opCreateVpnConnectionRoute = "CreateVpnConnectionRoute" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpnConnectionRoute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpnConnectionRoute func (c *EC2) CreateVpnConnectionRouteRequest(input *CreateVpnConnectionRouteInput) (req *request.Request, output *CreateVpnConnectionRouteOutput) { op := &request.Operation{ Name: opCreateVpnConnectionRoute, @@ -5122,9 +5693,9 @@ func (c *EC2) CreateVpnConnectionRouteRequest(input *CreateVpnConnectionRouteInp // traffic to be routed from the virtual private gateway to the VPN customer // gateway. // -// For more information about VPN connections, see Adding a Hardware Virtual -// Private Gateway to Your VPC (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html) -// in the Amazon Virtual Private Cloud User Guide. +// For more information about VPN connections, see AWS Managed VPN Connections +// (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html) in the +// Amazon Virtual Private Cloud User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -5132,7 +5703,7 @@ func (c *EC2) CreateVpnConnectionRouteRequest(input *CreateVpnConnectionRouteInp // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CreateVpnConnectionRoute for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpnConnectionRoute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpnConnectionRoute func (c *EC2) CreateVpnConnectionRoute(input *CreateVpnConnectionRouteInput) (*CreateVpnConnectionRouteOutput, error) { req, out := c.CreateVpnConnectionRouteRequest(input) return out, req.Send() @@ -5158,7 +5729,7 @@ const opCreateVpnGateway = "CreateVpnGateway" // CreateVpnGatewayRequest generates a "aws/request.Request" representing the // client's request for the CreateVpnGateway operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -5179,7 +5750,7 @@ const opCreateVpnGateway = "CreateVpnGateway" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpnGateway +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpnGateway func (c *EC2) CreateVpnGatewayRequest(input *CreateVpnGatewayInput) (req *request.Request, output *CreateVpnGatewayOutput) { op := &request.Operation{ Name: opCreateVpnGateway, @@ -5202,8 +5773,8 @@ func (c *EC2) CreateVpnGatewayRequest(input *CreateVpnGatewayInput) (req *reques // on the VPC side of your VPN connection. You can create a virtual private // gateway before creating the VPC itself. // -// For more information about virtual private gateways, see Adding a Hardware -// Virtual Private Gateway to Your VPC (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html) +// For more information about virtual private gateways, see AWS Managed VPN +// Connections (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html) // in the Amazon Virtual Private Cloud User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -5212,7 +5783,7 @@ func (c *EC2) CreateVpnGatewayRequest(input *CreateVpnGatewayInput) (req *reques // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation CreateVpnGateway for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpnGateway +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpnGateway func (c *EC2) CreateVpnGateway(input *CreateVpnGatewayInput) (*CreateVpnGatewayOutput, error) { req, out := c.CreateVpnGatewayRequest(input) return out, req.Send() @@ -5238,7 +5809,7 @@ const opDeleteCustomerGateway = "DeleteCustomerGateway" // DeleteCustomerGatewayRequest generates a "aws/request.Request" representing the // client's request for the DeleteCustomerGateway operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -5259,7 +5830,7 @@ const opDeleteCustomerGateway = "DeleteCustomerGateway" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteCustomerGateway +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteCustomerGateway func (c *EC2) DeleteCustomerGatewayRequest(input *DeleteCustomerGatewayInput) (req *request.Request, output *DeleteCustomerGatewayOutput) { op := &request.Operation{ Name: opDeleteCustomerGateway, @@ -5289,7 +5860,7 @@ func (c *EC2) DeleteCustomerGatewayRequest(input *DeleteCustomerGatewayInput) (r // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DeleteCustomerGateway for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteCustomerGateway +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteCustomerGateway func (c *EC2) DeleteCustomerGateway(input *DeleteCustomerGatewayInput) (*DeleteCustomerGatewayOutput, error) { req, out := c.DeleteCustomerGatewayRequest(input) return out, req.Send() @@ -5315,7 +5886,7 @@ const opDeleteDhcpOptions = "DeleteDhcpOptions" // DeleteDhcpOptionsRequest generates a "aws/request.Request" representing the // client's request for the DeleteDhcpOptions operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -5336,7 +5907,7 @@ const opDeleteDhcpOptions = "DeleteDhcpOptions" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteDhcpOptions +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteDhcpOptions func (c *EC2) DeleteDhcpOptionsRequest(input *DeleteDhcpOptionsInput) (req *request.Request, output *DeleteDhcpOptionsOutput) { op := &request.Operation{ Name: opDeleteDhcpOptions, @@ -5368,7 +5939,7 @@ func (c *EC2) DeleteDhcpOptionsRequest(input *DeleteDhcpOptionsInput) (req *requ // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DeleteDhcpOptions for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteDhcpOptions +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteDhcpOptions func (c *EC2) DeleteDhcpOptions(input *DeleteDhcpOptionsInput) (*DeleteDhcpOptionsOutput, error) { req, out := c.DeleteDhcpOptionsRequest(input) return out, req.Send() @@ -5394,7 +5965,7 @@ const opDeleteEgressOnlyInternetGateway = "DeleteEgressOnlyInternetGateway" // DeleteEgressOnlyInternetGatewayRequest generates a "aws/request.Request" representing the // client's request for the DeleteEgressOnlyInternetGateway operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -5415,7 +5986,7 @@ const opDeleteEgressOnlyInternetGateway = "DeleteEgressOnlyInternetGateway" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteEgressOnlyInternetGateway +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteEgressOnlyInternetGateway func (c *EC2) DeleteEgressOnlyInternetGatewayRequest(input *DeleteEgressOnlyInternetGatewayInput) (req *request.Request, output *DeleteEgressOnlyInternetGatewayOutput) { op := &request.Operation{ Name: opDeleteEgressOnlyInternetGateway, @@ -5442,7 +6013,7 @@ func (c *EC2) DeleteEgressOnlyInternetGatewayRequest(input *DeleteEgressOnlyInte // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DeleteEgressOnlyInternetGateway for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteEgressOnlyInternetGateway +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteEgressOnlyInternetGateway func (c *EC2) DeleteEgressOnlyInternetGateway(input *DeleteEgressOnlyInternetGatewayInput) (*DeleteEgressOnlyInternetGatewayOutput, error) { req, out := c.DeleteEgressOnlyInternetGatewayRequest(input) return out, req.Send() @@ -5464,11 +6035,92 @@ func (c *EC2) DeleteEgressOnlyInternetGatewayWithContext(ctx aws.Context, input return out, req.Send() } +const opDeleteFleets = "DeleteFleets" + +// DeleteFleetsRequest generates a "aws/request.Request" representing the +// client's request for the DeleteFleets operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteFleets for more information on using the DeleteFleets +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteFleetsRequest method. +// req, resp := client.DeleteFleetsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteFleets +func (c *EC2) DeleteFleetsRequest(input *DeleteFleetsInput) (req *request.Request, output *DeleteFleetsOutput) { + op := &request.Operation{ + Name: opDeleteFleets, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteFleetsInput{} + } + + output = &DeleteFleetsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteFleets API operation for Amazon Elastic Compute Cloud. +// +// Deletes the specified EC2 Fleet. +// +// After you delete an EC2 Fleet, the EC2 Fleet launches no new instances. You +// must specify whether the EC2 Fleet should also terminate its instances. If +// you terminate the instances, the EC2 Fleet enters the deleted_terminating +// state. Otherwise, the EC2 Fleet enters the deleted_running state, and the +// instances continue to run until they are interrupted or you terminate them +// manually. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteFleets for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteFleets +func (c *EC2) DeleteFleets(input *DeleteFleetsInput) (*DeleteFleetsOutput, error) { + req, out := c.DeleteFleetsRequest(input) + return out, req.Send() +} + +// DeleteFleetsWithContext is the same as DeleteFleets with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteFleets for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteFleetsWithContext(ctx aws.Context, input *DeleteFleetsInput, opts ...request.Option) (*DeleteFleetsOutput, error) { + req, out := c.DeleteFleetsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opDeleteFlowLogs = "DeleteFlowLogs" // DeleteFlowLogsRequest generates a "aws/request.Request" representing the // client's request for the DeleteFlowLogs operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -5489,7 +6141,7 @@ const opDeleteFlowLogs = "DeleteFlowLogs" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteFlowLogs +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteFlowLogs func (c *EC2) DeleteFlowLogsRequest(input *DeleteFlowLogsInput) (req *request.Request, output *DeleteFlowLogsOutput) { op := &request.Operation{ Name: opDeleteFlowLogs, @@ -5516,7 +6168,7 @@ func (c *EC2) DeleteFlowLogsRequest(input *DeleteFlowLogsInput) (req *request.Re // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DeleteFlowLogs for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteFlowLogs +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteFlowLogs func (c *EC2) DeleteFlowLogs(input *DeleteFlowLogsInput) (*DeleteFlowLogsOutput, error) { req, out := c.DeleteFlowLogsRequest(input) return out, req.Send() @@ -5542,7 +6194,7 @@ const opDeleteFpgaImage = "DeleteFpgaImage" // DeleteFpgaImageRequest generates a "aws/request.Request" representing the // client's request for the DeleteFpgaImage operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -5563,7 +6215,7 @@ const opDeleteFpgaImage = "DeleteFpgaImage" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteFpgaImage +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteFpgaImage func (c *EC2) DeleteFpgaImageRequest(input *DeleteFpgaImageInput) (req *request.Request, output *DeleteFpgaImageOutput) { op := &request.Operation{ Name: opDeleteFpgaImage, @@ -5590,7 +6242,7 @@ func (c *EC2) DeleteFpgaImageRequest(input *DeleteFpgaImageInput) (req *request. // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DeleteFpgaImage for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteFpgaImage +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteFpgaImage func (c *EC2) DeleteFpgaImage(input *DeleteFpgaImageInput) (*DeleteFpgaImageOutput, error) { req, out := c.DeleteFpgaImageRequest(input) return out, req.Send() @@ -5616,7 +6268,7 @@ const opDeleteInternetGateway = "DeleteInternetGateway" // DeleteInternetGatewayRequest generates a "aws/request.Request" representing the // client's request for the DeleteInternetGateway operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -5637,7 +6289,7 @@ const opDeleteInternetGateway = "DeleteInternetGateway" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteInternetGateway +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteInternetGateway func (c *EC2) DeleteInternetGatewayRequest(input *DeleteInternetGatewayInput) (req *request.Request, output *DeleteInternetGatewayOutput) { op := &request.Operation{ Name: opDeleteInternetGateway, @@ -5667,7 +6319,7 @@ func (c *EC2) DeleteInternetGatewayRequest(input *DeleteInternetGatewayInput) (r // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DeleteInternetGateway for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteInternetGateway +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteInternetGateway func (c *EC2) DeleteInternetGateway(input *DeleteInternetGatewayInput) (*DeleteInternetGatewayOutput, error) { req, out := c.DeleteInternetGatewayRequest(input) return out, req.Send() @@ -5693,7 +6345,7 @@ const opDeleteKeyPair = "DeleteKeyPair" // DeleteKeyPairRequest generates a "aws/request.Request" representing the // client's request for the DeleteKeyPair operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -5714,7 +6366,7 @@ const opDeleteKeyPair = "DeleteKeyPair" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteKeyPair +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteKeyPair func (c *EC2) DeleteKeyPairRequest(input *DeleteKeyPairInput) (req *request.Request, output *DeleteKeyPairOutput) { op := &request.Operation{ Name: opDeleteKeyPair, @@ -5743,7 +6395,7 @@ func (c *EC2) DeleteKeyPairRequest(input *DeleteKeyPairInput) (req *request.Requ // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DeleteKeyPair for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteKeyPair +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteKeyPair func (c *EC2) DeleteKeyPair(input *DeleteKeyPairInput) (*DeleteKeyPairOutput, error) { req, out := c.DeleteKeyPairRequest(input) return out, req.Send() @@ -5765,11 +6417,163 @@ func (c *EC2) DeleteKeyPairWithContext(ctx aws.Context, input *DeleteKeyPairInpu return out, req.Send() } +const opDeleteLaunchTemplate = "DeleteLaunchTemplate" + +// DeleteLaunchTemplateRequest generates a "aws/request.Request" representing the +// client's request for the DeleteLaunchTemplate operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteLaunchTemplate for more information on using the DeleteLaunchTemplate +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteLaunchTemplateRequest method. +// req, resp := client.DeleteLaunchTemplateRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteLaunchTemplate +func (c *EC2) DeleteLaunchTemplateRequest(input *DeleteLaunchTemplateInput) (req *request.Request, output *DeleteLaunchTemplateOutput) { + op := &request.Operation{ + Name: opDeleteLaunchTemplate, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteLaunchTemplateInput{} + } + + output = &DeleteLaunchTemplateOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteLaunchTemplate API operation for Amazon Elastic Compute Cloud. +// +// Deletes a launch template. Deleting a launch template deletes all of its +// versions. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteLaunchTemplate for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteLaunchTemplate +func (c *EC2) DeleteLaunchTemplate(input *DeleteLaunchTemplateInput) (*DeleteLaunchTemplateOutput, error) { + req, out := c.DeleteLaunchTemplateRequest(input) + return out, req.Send() +} + +// DeleteLaunchTemplateWithContext is the same as DeleteLaunchTemplate with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteLaunchTemplate for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteLaunchTemplateWithContext(ctx aws.Context, input *DeleteLaunchTemplateInput, opts ...request.Option) (*DeleteLaunchTemplateOutput, error) { + req, out := c.DeleteLaunchTemplateRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteLaunchTemplateVersions = "DeleteLaunchTemplateVersions" + +// DeleteLaunchTemplateVersionsRequest generates a "aws/request.Request" representing the +// client's request for the DeleteLaunchTemplateVersions operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteLaunchTemplateVersions for more information on using the DeleteLaunchTemplateVersions +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteLaunchTemplateVersionsRequest method. +// req, resp := client.DeleteLaunchTemplateVersionsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteLaunchTemplateVersions +func (c *EC2) DeleteLaunchTemplateVersionsRequest(input *DeleteLaunchTemplateVersionsInput) (req *request.Request, output *DeleteLaunchTemplateVersionsOutput) { + op := &request.Operation{ + Name: opDeleteLaunchTemplateVersions, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteLaunchTemplateVersionsInput{} + } + + output = &DeleteLaunchTemplateVersionsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteLaunchTemplateVersions API operation for Amazon Elastic Compute Cloud. +// +// Deletes one or more versions of a launch template. You cannot delete the +// default version of a launch template; you must first assign a different version +// as the default. If the default version is the only version for the launch +// template, you must delete the entire launch template using DeleteLaunchTemplate. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteLaunchTemplateVersions for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteLaunchTemplateVersions +func (c *EC2) DeleteLaunchTemplateVersions(input *DeleteLaunchTemplateVersionsInput) (*DeleteLaunchTemplateVersionsOutput, error) { + req, out := c.DeleteLaunchTemplateVersionsRequest(input) + return out, req.Send() +} + +// DeleteLaunchTemplateVersionsWithContext is the same as DeleteLaunchTemplateVersions with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteLaunchTemplateVersions for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteLaunchTemplateVersionsWithContext(ctx aws.Context, input *DeleteLaunchTemplateVersionsInput, opts ...request.Option) (*DeleteLaunchTemplateVersionsOutput, error) { + req, out := c.DeleteLaunchTemplateVersionsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opDeleteNatGateway = "DeleteNatGateway" // DeleteNatGatewayRequest generates a "aws/request.Request" representing the // client's request for the DeleteNatGateway operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -5790,7 +6594,7 @@ const opDeleteNatGateway = "DeleteNatGateway" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNatGateway +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNatGateway func (c *EC2) DeleteNatGatewayRequest(input *DeleteNatGatewayInput) (req *request.Request, output *DeleteNatGatewayOutput) { op := &request.Operation{ Name: opDeleteNatGateway, @@ -5819,7 +6623,7 @@ func (c *EC2) DeleteNatGatewayRequest(input *DeleteNatGatewayInput) (req *reques // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DeleteNatGateway for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNatGateway +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNatGateway func (c *EC2) DeleteNatGateway(input *DeleteNatGatewayInput) (*DeleteNatGatewayOutput, error) { req, out := c.DeleteNatGatewayRequest(input) return out, req.Send() @@ -5845,7 +6649,7 @@ const opDeleteNetworkAcl = "DeleteNetworkAcl" // DeleteNetworkAclRequest generates a "aws/request.Request" representing the // client's request for the DeleteNetworkAcl operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -5866,7 +6670,7 @@ const opDeleteNetworkAcl = "DeleteNetworkAcl" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNetworkAcl +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNetworkAcl func (c *EC2) DeleteNetworkAclRequest(input *DeleteNetworkAclInput) (req *request.Request, output *DeleteNetworkAclOutput) { op := &request.Operation{ Name: opDeleteNetworkAcl, @@ -5896,7 +6700,7 @@ func (c *EC2) DeleteNetworkAclRequest(input *DeleteNetworkAclInput) (req *reques // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DeleteNetworkAcl for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNetworkAcl +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNetworkAcl func (c *EC2) DeleteNetworkAcl(input *DeleteNetworkAclInput) (*DeleteNetworkAclOutput, error) { req, out := c.DeleteNetworkAclRequest(input) return out, req.Send() @@ -5922,7 +6726,7 @@ const opDeleteNetworkAclEntry = "DeleteNetworkAclEntry" // DeleteNetworkAclEntryRequest generates a "aws/request.Request" representing the // client's request for the DeleteNetworkAclEntry operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -5943,7 +6747,7 @@ const opDeleteNetworkAclEntry = "DeleteNetworkAclEntry" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNetworkAclEntry +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNetworkAclEntry func (c *EC2) DeleteNetworkAclEntryRequest(input *DeleteNetworkAclEntryInput) (req *request.Request, output *DeleteNetworkAclEntryOutput) { op := &request.Operation{ Name: opDeleteNetworkAclEntry, @@ -5973,7 +6777,7 @@ func (c *EC2) DeleteNetworkAclEntryRequest(input *DeleteNetworkAclEntryInput) (r // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DeleteNetworkAclEntry for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNetworkAclEntry +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNetworkAclEntry func (c *EC2) DeleteNetworkAclEntry(input *DeleteNetworkAclEntryInput) (*DeleteNetworkAclEntryOutput, error) { req, out := c.DeleteNetworkAclEntryRequest(input) return out, req.Send() @@ -5999,7 +6803,7 @@ const opDeleteNetworkInterface = "DeleteNetworkInterface" // DeleteNetworkInterfaceRequest generates a "aws/request.Request" representing the // client's request for the DeleteNetworkInterface operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -6020,7 +6824,7 @@ const opDeleteNetworkInterface = "DeleteNetworkInterface" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNetworkInterface +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNetworkInterface func (c *EC2) DeleteNetworkInterfaceRequest(input *DeleteNetworkInterfaceInput) (req *request.Request, output *DeleteNetworkInterfaceOutput) { op := &request.Operation{ Name: opDeleteNetworkInterface, @@ -6050,7 +6854,7 @@ func (c *EC2) DeleteNetworkInterfaceRequest(input *DeleteNetworkInterfaceInput) // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DeleteNetworkInterface for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNetworkInterface +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNetworkInterface func (c *EC2) DeleteNetworkInterface(input *DeleteNetworkInterfaceInput) (*DeleteNetworkInterfaceOutput, error) { req, out := c.DeleteNetworkInterfaceRequest(input) return out, req.Send() @@ -6076,7 +6880,7 @@ const opDeleteNetworkInterfacePermission = "DeleteNetworkInterfacePermission" // DeleteNetworkInterfacePermissionRequest generates a "aws/request.Request" representing the // client's request for the DeleteNetworkInterfacePermission operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -6097,7 +6901,7 @@ const opDeleteNetworkInterfacePermission = "DeleteNetworkInterfacePermission" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNetworkInterfacePermission +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNetworkInterfacePermission func (c *EC2) DeleteNetworkInterfacePermissionRequest(input *DeleteNetworkInterfacePermissionInput) (req *request.Request, output *DeleteNetworkInterfacePermissionOutput) { op := &request.Operation{ Name: opDeleteNetworkInterfacePermission, @@ -6127,7 +6931,7 @@ func (c *EC2) DeleteNetworkInterfacePermissionRequest(input *DeleteNetworkInterf // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DeleteNetworkInterfacePermission for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNetworkInterfacePermission +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNetworkInterfacePermission func (c *EC2) DeleteNetworkInterfacePermission(input *DeleteNetworkInterfacePermissionInput) (*DeleteNetworkInterfacePermissionOutput, error) { req, out := c.DeleteNetworkInterfacePermissionRequest(input) return out, req.Send() @@ -6153,7 +6957,7 @@ const opDeletePlacementGroup = "DeletePlacementGroup" // DeletePlacementGroupRequest generates a "aws/request.Request" representing the // client's request for the DeletePlacementGroup operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -6174,7 +6978,7 @@ const opDeletePlacementGroup = "DeletePlacementGroup" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeletePlacementGroup +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeletePlacementGroup func (c *EC2) DeletePlacementGroupRequest(input *DeletePlacementGroupInput) (req *request.Request, output *DeletePlacementGroupOutput) { op := &request.Operation{ Name: opDeletePlacementGroup, @@ -6196,8 +7000,8 @@ func (c *EC2) DeletePlacementGroupRequest(input *DeletePlacementGroupInput) (req // DeletePlacementGroup API operation for Amazon Elastic Compute Cloud. // // Deletes the specified placement group. You must terminate all instances in -// the placement group before you can delete the placement group. For more information -// about placement groups and cluster instances, see Cluster Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using_cluster_computing.html) +// the placement group before you can delete the placement group. For more information, +// see Placement Groups (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html) // in the Amazon Elastic Compute Cloud User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -6206,7 +7010,7 @@ func (c *EC2) DeletePlacementGroupRequest(input *DeletePlacementGroupInput) (req // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DeletePlacementGroup for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeletePlacementGroup +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeletePlacementGroup func (c *EC2) DeletePlacementGroup(input *DeletePlacementGroupInput) (*DeletePlacementGroupOutput, error) { req, out := c.DeletePlacementGroupRequest(input) return out, req.Send() @@ -6232,7 +7036,7 @@ const opDeleteRoute = "DeleteRoute" // DeleteRouteRequest generates a "aws/request.Request" representing the // client's request for the DeleteRoute operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -6253,7 +7057,7 @@ const opDeleteRoute = "DeleteRoute" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteRoute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteRoute func (c *EC2) DeleteRouteRequest(input *DeleteRouteInput) (req *request.Request, output *DeleteRouteOutput) { op := &request.Operation{ Name: opDeleteRoute, @@ -6282,7 +7086,7 @@ func (c *EC2) DeleteRouteRequest(input *DeleteRouteInput) (req *request.Request, // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DeleteRoute for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteRoute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteRoute func (c *EC2) DeleteRoute(input *DeleteRouteInput) (*DeleteRouteOutput, error) { req, out := c.DeleteRouteRequest(input) return out, req.Send() @@ -6308,7 +7112,7 @@ const opDeleteRouteTable = "DeleteRouteTable" // DeleteRouteTableRequest generates a "aws/request.Request" representing the // client's request for the DeleteRouteTable operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -6329,7 +7133,7 @@ const opDeleteRouteTable = "DeleteRouteTable" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteRouteTable +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteRouteTable func (c *EC2) DeleteRouteTableRequest(input *DeleteRouteTableInput) (req *request.Request, output *DeleteRouteTableOutput) { op := &request.Operation{ Name: opDeleteRouteTable, @@ -6360,7 +7164,7 @@ func (c *EC2) DeleteRouteTableRequest(input *DeleteRouteTableInput) (req *reques // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DeleteRouteTable for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteRouteTable +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteRouteTable func (c *EC2) DeleteRouteTable(input *DeleteRouteTableInput) (*DeleteRouteTableOutput, error) { req, out := c.DeleteRouteTableRequest(input) return out, req.Send() @@ -6386,7 +7190,7 @@ const opDeleteSecurityGroup = "DeleteSecurityGroup" // DeleteSecurityGroupRequest generates a "aws/request.Request" representing the // client's request for the DeleteSecurityGroup operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -6407,7 +7211,7 @@ const opDeleteSecurityGroup = "DeleteSecurityGroup" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteSecurityGroup +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteSecurityGroup func (c *EC2) DeleteSecurityGroupRequest(input *DeleteSecurityGroupInput) (req *request.Request, output *DeleteSecurityGroupOutput) { op := &request.Operation{ Name: opDeleteSecurityGroup, @@ -6440,7 +7244,7 @@ func (c *EC2) DeleteSecurityGroupRequest(input *DeleteSecurityGroupInput) (req * // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DeleteSecurityGroup for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteSecurityGroup +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteSecurityGroup func (c *EC2) DeleteSecurityGroup(input *DeleteSecurityGroupInput) (*DeleteSecurityGroupOutput, error) { req, out := c.DeleteSecurityGroupRequest(input) return out, req.Send() @@ -6466,7 +7270,7 @@ const opDeleteSnapshot = "DeleteSnapshot" // DeleteSnapshotRequest generates a "aws/request.Request" representing the // client's request for the DeleteSnapshot operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -6487,7 +7291,7 @@ const opDeleteSnapshot = "DeleteSnapshot" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteSnapshot +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteSnapshot func (c *EC2) DeleteSnapshotRequest(input *DeleteSnapshotInput) (req *request.Request, output *DeleteSnapshotOutput) { op := &request.Operation{ Name: opDeleteSnapshot, @@ -6530,7 +7334,7 @@ func (c *EC2) DeleteSnapshotRequest(input *DeleteSnapshotInput) (req *request.Re // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DeleteSnapshot for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteSnapshot +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteSnapshot func (c *EC2) DeleteSnapshot(input *DeleteSnapshotInput) (*DeleteSnapshotOutput, error) { req, out := c.DeleteSnapshotRequest(input) return out, req.Send() @@ -6556,7 +7360,7 @@ const opDeleteSpotDatafeedSubscription = "DeleteSpotDatafeedSubscription" // DeleteSpotDatafeedSubscriptionRequest generates a "aws/request.Request" representing the // client's request for the DeleteSpotDatafeedSubscription operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -6577,7 +7381,7 @@ const opDeleteSpotDatafeedSubscription = "DeleteSpotDatafeedSubscription" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteSpotDatafeedSubscription +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteSpotDatafeedSubscription func (c *EC2) DeleteSpotDatafeedSubscriptionRequest(input *DeleteSpotDatafeedSubscriptionInput) (req *request.Request, output *DeleteSpotDatafeedSubscriptionOutput) { op := &request.Operation{ Name: opDeleteSpotDatafeedSubscription, @@ -6598,7 +7402,7 @@ func (c *EC2) DeleteSpotDatafeedSubscriptionRequest(input *DeleteSpotDatafeedSub // DeleteSpotDatafeedSubscription API operation for Amazon Elastic Compute Cloud. // -// Deletes the data feed for Spot instances. +// Deletes the data feed for Spot Instances. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -6606,7 +7410,7 @@ func (c *EC2) DeleteSpotDatafeedSubscriptionRequest(input *DeleteSpotDatafeedSub // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DeleteSpotDatafeedSubscription for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteSpotDatafeedSubscription +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteSpotDatafeedSubscription func (c *EC2) DeleteSpotDatafeedSubscription(input *DeleteSpotDatafeedSubscriptionInput) (*DeleteSpotDatafeedSubscriptionOutput, error) { req, out := c.DeleteSpotDatafeedSubscriptionRequest(input) return out, req.Send() @@ -6632,7 +7436,7 @@ const opDeleteSubnet = "DeleteSubnet" // DeleteSubnetRequest generates a "aws/request.Request" representing the // client's request for the DeleteSubnet operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -6653,7 +7457,7 @@ const opDeleteSubnet = "DeleteSubnet" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteSubnet +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteSubnet func (c *EC2) DeleteSubnetRequest(input *DeleteSubnetInput) (req *request.Request, output *DeleteSubnetOutput) { op := &request.Operation{ Name: opDeleteSubnet, @@ -6683,7 +7487,7 @@ func (c *EC2) DeleteSubnetRequest(input *DeleteSubnetInput) (req *request.Reques // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DeleteSubnet for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteSubnet +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteSubnet func (c *EC2) DeleteSubnet(input *DeleteSubnetInput) (*DeleteSubnetOutput, error) { req, out := c.DeleteSubnetRequest(input) return out, req.Send() @@ -6709,7 +7513,7 @@ const opDeleteTags = "DeleteTags" // DeleteTagsRequest generates a "aws/request.Request" representing the // client's request for the DeleteTags operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -6730,7 +7534,7 @@ const opDeleteTags = "DeleteTags" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteTags +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteTags func (c *EC2) DeleteTagsRequest(input *DeleteTagsInput) (req *request.Request, output *DeleteTagsOutput) { op := &request.Operation{ Name: opDeleteTags, @@ -6763,7 +7567,7 @@ func (c *EC2) DeleteTagsRequest(input *DeleteTagsInput) (req *request.Request, o // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DeleteTags for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteTags +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteTags func (c *EC2) DeleteTags(input *DeleteTagsInput) (*DeleteTagsOutput, error) { req, out := c.DeleteTagsRequest(input) return out, req.Send() @@ -6789,7 +7593,7 @@ const opDeleteVolume = "DeleteVolume" // DeleteVolumeRequest generates a "aws/request.Request" representing the // client's request for the DeleteVolume operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -6810,7 +7614,7 @@ const opDeleteVolume = "DeleteVolume" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVolume +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVolume func (c *EC2) DeleteVolumeRequest(input *DeleteVolumeInput) (req *request.Request, output *DeleteVolumeOutput) { op := &request.Operation{ Name: opDeleteVolume, @@ -6845,7 +7649,7 @@ func (c *EC2) DeleteVolumeRequest(input *DeleteVolumeInput) (req *request.Reques // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DeleteVolume for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVolume +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVolume func (c *EC2) DeleteVolume(input *DeleteVolumeInput) (*DeleteVolumeOutput, error) { req, out := c.DeleteVolumeRequest(input) return out, req.Send() @@ -6871,7 +7675,7 @@ const opDeleteVpc = "DeleteVpc" // DeleteVpcRequest generates a "aws/request.Request" representing the // client's request for the DeleteVpc operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -6892,7 +7696,7 @@ const opDeleteVpc = "DeleteVpc" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpc +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpc func (c *EC2) DeleteVpcRequest(input *DeleteVpcInput) (req *request.Request, output *DeleteVpcOutput) { op := &request.Operation{ Name: opDeleteVpc, @@ -6925,7 +7729,7 @@ func (c *EC2) DeleteVpcRequest(input *DeleteVpcInput) (req *request.Request, out // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DeleteVpc for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpc +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpc func (c *EC2) DeleteVpc(input *DeleteVpcInput) (*DeleteVpcOutput, error) { req, out := c.DeleteVpcRequest(input) return out, req.Send() @@ -6947,11 +7751,162 @@ func (c *EC2) DeleteVpcWithContext(ctx aws.Context, input *DeleteVpcInput, opts return out, req.Send() } +const opDeleteVpcEndpointConnectionNotifications = "DeleteVpcEndpointConnectionNotifications" + +// DeleteVpcEndpointConnectionNotificationsRequest generates a "aws/request.Request" representing the +// client's request for the DeleteVpcEndpointConnectionNotifications operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteVpcEndpointConnectionNotifications for more information on using the DeleteVpcEndpointConnectionNotifications +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteVpcEndpointConnectionNotificationsRequest method. +// req, resp := client.DeleteVpcEndpointConnectionNotificationsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpcEndpointConnectionNotifications +func (c *EC2) DeleteVpcEndpointConnectionNotificationsRequest(input *DeleteVpcEndpointConnectionNotificationsInput) (req *request.Request, output *DeleteVpcEndpointConnectionNotificationsOutput) { + op := &request.Operation{ + Name: opDeleteVpcEndpointConnectionNotifications, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteVpcEndpointConnectionNotificationsInput{} + } + + output = &DeleteVpcEndpointConnectionNotificationsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteVpcEndpointConnectionNotifications API operation for Amazon Elastic Compute Cloud. +// +// Deletes one or more VPC endpoint connection notifications. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteVpcEndpointConnectionNotifications for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpcEndpointConnectionNotifications +func (c *EC2) DeleteVpcEndpointConnectionNotifications(input *DeleteVpcEndpointConnectionNotificationsInput) (*DeleteVpcEndpointConnectionNotificationsOutput, error) { + req, out := c.DeleteVpcEndpointConnectionNotificationsRequest(input) + return out, req.Send() +} + +// DeleteVpcEndpointConnectionNotificationsWithContext is the same as DeleteVpcEndpointConnectionNotifications with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteVpcEndpointConnectionNotifications for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteVpcEndpointConnectionNotificationsWithContext(ctx aws.Context, input *DeleteVpcEndpointConnectionNotificationsInput, opts ...request.Option) (*DeleteVpcEndpointConnectionNotificationsOutput, error) { + req, out := c.DeleteVpcEndpointConnectionNotificationsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteVpcEndpointServiceConfigurations = "DeleteVpcEndpointServiceConfigurations" + +// DeleteVpcEndpointServiceConfigurationsRequest generates a "aws/request.Request" representing the +// client's request for the DeleteVpcEndpointServiceConfigurations operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteVpcEndpointServiceConfigurations for more information on using the DeleteVpcEndpointServiceConfigurations +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteVpcEndpointServiceConfigurationsRequest method. +// req, resp := client.DeleteVpcEndpointServiceConfigurationsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpcEndpointServiceConfigurations +func (c *EC2) DeleteVpcEndpointServiceConfigurationsRequest(input *DeleteVpcEndpointServiceConfigurationsInput) (req *request.Request, output *DeleteVpcEndpointServiceConfigurationsOutput) { + op := &request.Operation{ + Name: opDeleteVpcEndpointServiceConfigurations, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteVpcEndpointServiceConfigurationsInput{} + } + + output = &DeleteVpcEndpointServiceConfigurationsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteVpcEndpointServiceConfigurations API operation for Amazon Elastic Compute Cloud. +// +// Deletes one or more VPC endpoint service configurations in your account. +// Before you delete the endpoint service configuration, you must reject any +// Available or PendingAcceptance interface endpoint connections that are attached +// to the service. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteVpcEndpointServiceConfigurations for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpcEndpointServiceConfigurations +func (c *EC2) DeleteVpcEndpointServiceConfigurations(input *DeleteVpcEndpointServiceConfigurationsInput) (*DeleteVpcEndpointServiceConfigurationsOutput, error) { + req, out := c.DeleteVpcEndpointServiceConfigurationsRequest(input) + return out, req.Send() +} + +// DeleteVpcEndpointServiceConfigurationsWithContext is the same as DeleteVpcEndpointServiceConfigurations with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteVpcEndpointServiceConfigurations for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteVpcEndpointServiceConfigurationsWithContext(ctx aws.Context, input *DeleteVpcEndpointServiceConfigurationsInput, opts ...request.Option) (*DeleteVpcEndpointServiceConfigurationsOutput, error) { + req, out := c.DeleteVpcEndpointServiceConfigurationsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opDeleteVpcEndpoints = "DeleteVpcEndpoints" // DeleteVpcEndpointsRequest generates a "aws/request.Request" representing the // client's request for the DeleteVpcEndpoints operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -6972,7 +7927,7 @@ const opDeleteVpcEndpoints = "DeleteVpcEndpoints" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpcEndpoints +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpcEndpoints func (c *EC2) DeleteVpcEndpointsRequest(input *DeleteVpcEndpointsInput) (req *request.Request, output *DeleteVpcEndpointsOutput) { op := &request.Operation{ Name: opDeleteVpcEndpoints, @@ -6991,8 +7946,10 @@ func (c *EC2) DeleteVpcEndpointsRequest(input *DeleteVpcEndpointsInput) (req *re // DeleteVpcEndpoints API operation for Amazon Elastic Compute Cloud. // -// Deletes one or more specified VPC endpoints. Deleting the endpoint also deletes -// the endpoint routes in the route tables that were associated with the endpoint. +// Deletes one or more specified VPC endpoints. Deleting a gateway endpoint +// also deletes the endpoint routes in the route tables that were associated +// with the endpoint. Deleting an interface endpoint deletes the endpoint network +// interfaces. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -7000,7 +7957,7 @@ func (c *EC2) DeleteVpcEndpointsRequest(input *DeleteVpcEndpointsInput) (req *re // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DeleteVpcEndpoints for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpcEndpoints +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpcEndpoints func (c *EC2) DeleteVpcEndpoints(input *DeleteVpcEndpointsInput) (*DeleteVpcEndpointsOutput, error) { req, out := c.DeleteVpcEndpointsRequest(input) return out, req.Send() @@ -7026,7 +7983,7 @@ const opDeleteVpcPeeringConnection = "DeleteVpcPeeringConnection" // DeleteVpcPeeringConnectionRequest generates a "aws/request.Request" representing the // client's request for the DeleteVpcPeeringConnection operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -7047,7 +8004,7 @@ const opDeleteVpcPeeringConnection = "DeleteVpcPeeringConnection" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpcPeeringConnection +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpcPeeringConnection func (c *EC2) DeleteVpcPeeringConnectionRequest(input *DeleteVpcPeeringConnectionInput) (req *request.Request, output *DeleteVpcPeeringConnectionOutput) { op := &request.Operation{ Name: opDeleteVpcPeeringConnection, @@ -7067,9 +8024,10 @@ func (c *EC2) DeleteVpcPeeringConnectionRequest(input *DeleteVpcPeeringConnectio // DeleteVpcPeeringConnection API operation for Amazon Elastic Compute Cloud. // // Deletes a VPC peering connection. Either the owner of the requester VPC or -// the owner of the peer VPC can delete the VPC peering connection if it's in -// the active state. The owner of the requester VPC can delete a VPC peering -// connection in the pending-acceptance state. +// the owner of the accepter VPC can delete the VPC peering connection if it's +// in the active state. The owner of the requester VPC can delete a VPC peering +// connection in the pending-acceptance state. You cannot delete a VPC peering +// connection that's in the failed state. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -7077,7 +8035,7 @@ func (c *EC2) DeleteVpcPeeringConnectionRequest(input *DeleteVpcPeeringConnectio // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DeleteVpcPeeringConnection for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpcPeeringConnection +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpcPeeringConnection func (c *EC2) DeleteVpcPeeringConnection(input *DeleteVpcPeeringConnectionInput) (*DeleteVpcPeeringConnectionOutput, error) { req, out := c.DeleteVpcPeeringConnectionRequest(input) return out, req.Send() @@ -7103,7 +8061,7 @@ const opDeleteVpnConnection = "DeleteVpnConnection" // DeleteVpnConnectionRequest generates a "aws/request.Request" representing the // client's request for the DeleteVpnConnection operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -7124,7 +8082,7 @@ const opDeleteVpnConnection = "DeleteVpnConnection" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpnConnection +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpnConnection func (c *EC2) DeleteVpnConnectionRequest(input *DeleteVpnConnectionInput) (req *request.Request, output *DeleteVpnConnectionOutput) { op := &request.Operation{ Name: opDeleteVpnConnection, @@ -7162,7 +8120,7 @@ func (c *EC2) DeleteVpnConnectionRequest(input *DeleteVpnConnectionInput) (req * // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DeleteVpnConnection for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpnConnection +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpnConnection func (c *EC2) DeleteVpnConnection(input *DeleteVpnConnectionInput) (*DeleteVpnConnectionOutput, error) { req, out := c.DeleteVpnConnectionRequest(input) return out, req.Send() @@ -7188,7 +8146,7 @@ const opDeleteVpnConnectionRoute = "DeleteVpnConnectionRoute" // DeleteVpnConnectionRouteRequest generates a "aws/request.Request" representing the // client's request for the DeleteVpnConnectionRoute operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -7209,7 +8167,7 @@ const opDeleteVpnConnectionRoute = "DeleteVpnConnectionRoute" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpnConnectionRoute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpnConnectionRoute func (c *EC2) DeleteVpnConnectionRouteRequest(input *DeleteVpnConnectionRouteInput) (req *request.Request, output *DeleteVpnConnectionRouteOutput) { op := &request.Operation{ Name: opDeleteVpnConnectionRoute, @@ -7241,7 +8199,7 @@ func (c *EC2) DeleteVpnConnectionRouteRequest(input *DeleteVpnConnectionRouteInp // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DeleteVpnConnectionRoute for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpnConnectionRoute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpnConnectionRoute func (c *EC2) DeleteVpnConnectionRoute(input *DeleteVpnConnectionRouteInput) (*DeleteVpnConnectionRouteOutput, error) { req, out := c.DeleteVpnConnectionRouteRequest(input) return out, req.Send() @@ -7267,7 +8225,7 @@ const opDeleteVpnGateway = "DeleteVpnGateway" // DeleteVpnGatewayRequest generates a "aws/request.Request" representing the // client's request for the DeleteVpnGateway operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -7288,7 +8246,7 @@ const opDeleteVpnGateway = "DeleteVpnGateway" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpnGateway +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpnGateway func (c *EC2) DeleteVpnGatewayRequest(input *DeleteVpnGatewayInput) (req *request.Request, output *DeleteVpnGatewayOutput) { op := &request.Operation{ Name: opDeleteVpnGateway, @@ -7321,7 +8279,7 @@ func (c *EC2) DeleteVpnGatewayRequest(input *DeleteVpnGatewayInput) (req *reques // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DeleteVpnGateway for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpnGateway +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpnGateway func (c *EC2) DeleteVpnGateway(input *DeleteVpnGatewayInput) (*DeleteVpnGatewayOutput, error) { req, out := c.DeleteVpnGatewayRequest(input) return out, req.Send() @@ -7347,7 +8305,7 @@ const opDeregisterImage = "DeregisterImage" // DeregisterImageRequest generates a "aws/request.Request" representing the // client's request for the DeregisterImage operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -7368,7 +8326,7 @@ const opDeregisterImage = "DeregisterImage" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeregisterImage +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeregisterImage func (c *EC2) DeregisterImageRequest(input *DeregisterImageInput) (req *request.Request, output *DeregisterImageOutput) { op := &request.Operation{ Name: opDeregisterImage, @@ -7405,7 +8363,7 @@ func (c *EC2) DeregisterImageRequest(input *DeregisterImageInput) (req *request. // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DeregisterImage for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeregisterImage +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeregisterImage func (c *EC2) DeregisterImage(input *DeregisterImageInput) (*DeregisterImageOutput, error) { req, out := c.DeregisterImageRequest(input) return out, req.Send() @@ -7431,7 +8389,7 @@ const opDescribeAccountAttributes = "DescribeAccountAttributes" // DescribeAccountAttributesRequest generates a "aws/request.Request" representing the // client's request for the DescribeAccountAttributes operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -7452,7 +8410,7 @@ const opDescribeAccountAttributes = "DescribeAccountAttributes" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeAccountAttributes +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeAccountAttributes func (c *EC2) DescribeAccountAttributesRequest(input *DescribeAccountAttributesInput) (req *request.Request, output *DescribeAccountAttributesOutput) { op := &request.Operation{ Name: opDescribeAccountAttributes, @@ -7479,7 +8437,7 @@ func (c *EC2) DescribeAccountAttributesRequest(input *DescribeAccountAttributesI // // * default-vpc: The ID of the default VPC for your account, or none. // -// * max-instances: The maximum number of On-Demand instances that you can +// * max-instances: The maximum number of On-Demand Instances that you can // run. // // * vpc-max-security-groups-per-interface: The maximum number of security @@ -7497,7 +8455,7 @@ func (c *EC2) DescribeAccountAttributesRequest(input *DescribeAccountAttributesI // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeAccountAttributes for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeAccountAttributes +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeAccountAttributes func (c *EC2) DescribeAccountAttributes(input *DescribeAccountAttributesInput) (*DescribeAccountAttributesOutput, error) { req, out := c.DescribeAccountAttributesRequest(input) return out, req.Send() @@ -7523,7 +8481,7 @@ const opDescribeAddresses = "DescribeAddresses" // DescribeAddressesRequest generates a "aws/request.Request" representing the // client's request for the DescribeAddresses operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -7544,7 +8502,7 @@ const opDescribeAddresses = "DescribeAddresses" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeAddresses +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeAddresses func (c *EC2) DescribeAddressesRequest(input *DescribeAddressesInput) (req *request.Request, output *DescribeAddressesOutput) { op := &request.Operation{ Name: opDescribeAddresses, @@ -7575,7 +8533,7 @@ func (c *EC2) DescribeAddressesRequest(input *DescribeAddressesInput) (req *requ // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeAddresses for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeAddresses +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeAddresses func (c *EC2) DescribeAddresses(input *DescribeAddressesInput) (*DescribeAddressesOutput, error) { req, out := c.DescribeAddressesRequest(input) return out, req.Send() @@ -7597,11 +8555,99 @@ func (c *EC2) DescribeAddressesWithContext(ctx aws.Context, input *DescribeAddre return out, req.Send() } +const opDescribeAggregateIdFormat = "DescribeAggregateIdFormat" + +// DescribeAggregateIdFormatRequest generates a "aws/request.Request" representing the +// client's request for the DescribeAggregateIdFormat operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeAggregateIdFormat for more information on using the DescribeAggregateIdFormat +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeAggregateIdFormatRequest method. +// req, resp := client.DescribeAggregateIdFormatRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeAggregateIdFormat +func (c *EC2) DescribeAggregateIdFormatRequest(input *DescribeAggregateIdFormatInput) (req *request.Request, output *DescribeAggregateIdFormatOutput) { + op := &request.Operation{ + Name: opDescribeAggregateIdFormat, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeAggregateIdFormatInput{} + } + + output = &DescribeAggregateIdFormatOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeAggregateIdFormat API operation for Amazon Elastic Compute Cloud. +// +// Describes the longer ID format settings for all resource types in a specific +// region. This request is useful for performing a quick audit to determine +// whether a specific region is fully opted in for longer IDs (17-character +// IDs). +// +// This request only returns information about resource types that support longer +// IDs. +// +// The following resource types support longer IDs: bundle | conversion-task +// | customer-gateway | dhcp-options | elastic-ip-allocation | elastic-ip-association +// | export-task | flow-log | image | import-task | instance | internet-gateway +// | network-acl | network-acl-association | network-interface | network-interface-attachment +// | prefix-list | reservation | route-table | route-table-association | security-group +// | snapshot | subnet | subnet-cidr-block-association | volume | vpc | vpc-cidr-block-association +// | vpc-endpoint | vpc-peering-connection | vpn-connection | vpn-gateway. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeAggregateIdFormat for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeAggregateIdFormat +func (c *EC2) DescribeAggregateIdFormat(input *DescribeAggregateIdFormatInput) (*DescribeAggregateIdFormatOutput, error) { + req, out := c.DescribeAggregateIdFormatRequest(input) + return out, req.Send() +} + +// DescribeAggregateIdFormatWithContext is the same as DescribeAggregateIdFormat with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeAggregateIdFormat for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeAggregateIdFormatWithContext(ctx aws.Context, input *DescribeAggregateIdFormatInput, opts ...request.Option) (*DescribeAggregateIdFormatOutput, error) { + req, out := c.DescribeAggregateIdFormatRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opDescribeAvailabilityZones = "DescribeAvailabilityZones" // DescribeAvailabilityZonesRequest generates a "aws/request.Request" representing the // client's request for the DescribeAvailabilityZones operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -7622,7 +8668,7 @@ const opDescribeAvailabilityZones = "DescribeAvailabilityZones" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeAvailabilityZones +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeAvailabilityZones func (c *EC2) DescribeAvailabilityZonesRequest(input *DescribeAvailabilityZonesInput) (req *request.Request, output *DescribeAvailabilityZonesOutput) { op := &request.Operation{ Name: opDescribeAvailabilityZones, @@ -7655,7 +8701,7 @@ func (c *EC2) DescribeAvailabilityZonesRequest(input *DescribeAvailabilityZonesI // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeAvailabilityZones for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeAvailabilityZones +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeAvailabilityZones func (c *EC2) DescribeAvailabilityZones(input *DescribeAvailabilityZonesInput) (*DescribeAvailabilityZonesOutput, error) { req, out := c.DescribeAvailabilityZonesRequest(input) return out, req.Send() @@ -7681,7 +8727,7 @@ const opDescribeBundleTasks = "DescribeBundleTasks" // DescribeBundleTasksRequest generates a "aws/request.Request" representing the // client's request for the DescribeBundleTasks operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -7702,7 +8748,7 @@ const opDescribeBundleTasks = "DescribeBundleTasks" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeBundleTasks +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeBundleTasks func (c *EC2) DescribeBundleTasksRequest(input *DescribeBundleTasksInput) (req *request.Request, output *DescribeBundleTasksOutput) { op := &request.Operation{ Name: opDescribeBundleTasks, @@ -7734,7 +8780,7 @@ func (c *EC2) DescribeBundleTasksRequest(input *DescribeBundleTasksInput) (req * // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeBundleTasks for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeBundleTasks +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeBundleTasks func (c *EC2) DescribeBundleTasks(input *DescribeBundleTasksInput) (*DescribeBundleTasksOutput, error) { req, out := c.DescribeBundleTasksRequest(input) return out, req.Send() @@ -7760,7 +8806,7 @@ const opDescribeClassicLinkInstances = "DescribeClassicLinkInstances" // DescribeClassicLinkInstancesRequest generates a "aws/request.Request" representing the // client's request for the DescribeClassicLinkInstances operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -7781,7 +8827,7 @@ const opDescribeClassicLinkInstances = "DescribeClassicLinkInstances" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeClassicLinkInstances +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeClassicLinkInstances func (c *EC2) DescribeClassicLinkInstancesRequest(input *DescribeClassicLinkInstancesInput) (req *request.Request, output *DescribeClassicLinkInstancesOutput) { op := &request.Operation{ Name: opDescribeClassicLinkInstances, @@ -7811,7 +8857,7 @@ func (c *EC2) DescribeClassicLinkInstancesRequest(input *DescribeClassicLinkInst // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeClassicLinkInstances for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeClassicLinkInstances +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeClassicLinkInstances func (c *EC2) DescribeClassicLinkInstances(input *DescribeClassicLinkInstancesInput) (*DescribeClassicLinkInstancesOutput, error) { req, out := c.DescribeClassicLinkInstancesRequest(input) return out, req.Send() @@ -7837,7 +8883,7 @@ const opDescribeConversionTasks = "DescribeConversionTasks" // DescribeConversionTasksRequest generates a "aws/request.Request" representing the // client's request for the DescribeConversionTasks operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -7858,7 +8904,7 @@ const opDescribeConversionTasks = "DescribeConversionTasks" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeConversionTasks +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeConversionTasks func (c *EC2) DescribeConversionTasksRequest(input *DescribeConversionTasksInput) (req *request.Request, output *DescribeConversionTasksOutput) { op := &request.Operation{ Name: opDescribeConversionTasks, @@ -7889,7 +8935,7 @@ func (c *EC2) DescribeConversionTasksRequest(input *DescribeConversionTasksInput // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeConversionTasks for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeConversionTasks +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeConversionTasks func (c *EC2) DescribeConversionTasks(input *DescribeConversionTasksInput) (*DescribeConversionTasksOutput, error) { req, out := c.DescribeConversionTasksRequest(input) return out, req.Send() @@ -7915,7 +8961,7 @@ const opDescribeCustomerGateways = "DescribeCustomerGateways" // DescribeCustomerGatewaysRequest generates a "aws/request.Request" representing the // client's request for the DescribeCustomerGateways operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -7936,7 +8982,7 @@ const opDescribeCustomerGateways = "DescribeCustomerGateways" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeCustomerGateways +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeCustomerGateways func (c *EC2) DescribeCustomerGatewaysRequest(input *DescribeCustomerGatewaysInput) (req *request.Request, output *DescribeCustomerGatewaysOutput) { op := &request.Operation{ Name: opDescribeCustomerGateways, @@ -7957,9 +9003,9 @@ func (c *EC2) DescribeCustomerGatewaysRequest(input *DescribeCustomerGatewaysInp // // Describes one or more of your VPN customer gateways. // -// For more information about VPN customer gateways, see Adding a Hardware Virtual -// Private Gateway to Your VPC (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html) -// in the Amazon Virtual Private Cloud User Guide. +// For more information about VPN customer gateways, see AWS Managed VPN Connections +// (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html) in the +// Amazon Virtual Private Cloud User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -7967,7 +9013,7 @@ func (c *EC2) DescribeCustomerGatewaysRequest(input *DescribeCustomerGatewaysInp // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeCustomerGateways for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeCustomerGateways +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeCustomerGateways func (c *EC2) DescribeCustomerGateways(input *DescribeCustomerGatewaysInput) (*DescribeCustomerGatewaysOutput, error) { req, out := c.DescribeCustomerGatewaysRequest(input) return out, req.Send() @@ -7993,7 +9039,7 @@ const opDescribeDhcpOptions = "DescribeDhcpOptions" // DescribeDhcpOptionsRequest generates a "aws/request.Request" representing the // client's request for the DescribeDhcpOptions operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -8014,7 +9060,7 @@ const opDescribeDhcpOptions = "DescribeDhcpOptions" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeDhcpOptions +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeDhcpOptions func (c *EC2) DescribeDhcpOptionsRequest(input *DescribeDhcpOptionsInput) (req *request.Request, output *DescribeDhcpOptionsOutput) { op := &request.Operation{ Name: opDescribeDhcpOptions, @@ -8044,7 +9090,7 @@ func (c *EC2) DescribeDhcpOptionsRequest(input *DescribeDhcpOptionsInput) (req * // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeDhcpOptions for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeDhcpOptions +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeDhcpOptions func (c *EC2) DescribeDhcpOptions(input *DescribeDhcpOptionsInput) (*DescribeDhcpOptionsOutput, error) { req, out := c.DescribeDhcpOptionsRequest(input) return out, req.Send() @@ -8070,7 +9116,7 @@ const opDescribeEgressOnlyInternetGateways = "DescribeEgressOnlyInternetGateways // DescribeEgressOnlyInternetGatewaysRequest generates a "aws/request.Request" representing the // client's request for the DescribeEgressOnlyInternetGateways operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -8091,7 +9137,7 @@ const opDescribeEgressOnlyInternetGateways = "DescribeEgressOnlyInternetGateways // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeEgressOnlyInternetGateways +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeEgressOnlyInternetGateways func (c *EC2) DescribeEgressOnlyInternetGatewaysRequest(input *DescribeEgressOnlyInternetGatewaysInput) (req *request.Request, output *DescribeEgressOnlyInternetGatewaysOutput) { op := &request.Operation{ Name: opDescribeEgressOnlyInternetGateways, @@ -8118,7 +9164,7 @@ func (c *EC2) DescribeEgressOnlyInternetGatewaysRequest(input *DescribeEgressOnl // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeEgressOnlyInternetGateways for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeEgressOnlyInternetGateways +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeEgressOnlyInternetGateways func (c *EC2) DescribeEgressOnlyInternetGateways(input *DescribeEgressOnlyInternetGatewaysInput) (*DescribeEgressOnlyInternetGatewaysOutput, error) { req, out := c.DescribeEgressOnlyInternetGatewaysRequest(input) return out, req.Send() @@ -8144,7 +9190,7 @@ const opDescribeElasticGpus = "DescribeElasticGpus" // DescribeElasticGpusRequest generates a "aws/request.Request" representing the // client's request for the DescribeElasticGpus operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -8165,7 +9211,7 @@ const opDescribeElasticGpus = "DescribeElasticGpus" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeElasticGpus +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeElasticGpus func (c *EC2) DescribeElasticGpusRequest(input *DescribeElasticGpusInput) (req *request.Request, output *DescribeElasticGpusOutput) { op := &request.Operation{ Name: opDescribeElasticGpus, @@ -8185,7 +9231,7 @@ func (c *EC2) DescribeElasticGpusRequest(input *DescribeElasticGpusInput) (req * // DescribeElasticGpus API operation for Amazon Elastic Compute Cloud. // // Describes the Elastic GPUs associated with your instances. For more information -// about Elastic GPUs, see Amazon EC2 Elastic GPUs (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-gpus.html). +// about Elastic GPUs, see Amazon EC2 Elastic GPUs (http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/elastic-gpus.html). // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -8193,7 +9239,7 @@ func (c *EC2) DescribeElasticGpusRequest(input *DescribeElasticGpusInput) (req * // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeElasticGpus for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeElasticGpus +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeElasticGpus func (c *EC2) DescribeElasticGpus(input *DescribeElasticGpusInput) (*DescribeElasticGpusOutput, error) { req, out := c.DescribeElasticGpusRequest(input) return out, req.Send() @@ -8219,7 +9265,7 @@ const opDescribeExportTasks = "DescribeExportTasks" // DescribeExportTasksRequest generates a "aws/request.Request" representing the // client's request for the DescribeExportTasks operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -8240,7 +9286,7 @@ const opDescribeExportTasks = "DescribeExportTasks" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeExportTasks +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeExportTasks func (c *EC2) DescribeExportTasksRequest(input *DescribeExportTasksInput) (req *request.Request, output *DescribeExportTasksOutput) { op := &request.Operation{ Name: opDescribeExportTasks, @@ -8267,7 +9313,7 @@ func (c *EC2) DescribeExportTasksRequest(input *DescribeExportTasksInput) (req * // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeExportTasks for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeExportTasks +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeExportTasks func (c *EC2) DescribeExportTasks(input *DescribeExportTasksInput) (*DescribeExportTasksOutput, error) { req, out := c.DescribeExportTasksRequest(input) return out, req.Send() @@ -8289,11 +9335,233 @@ func (c *EC2) DescribeExportTasksWithContext(ctx aws.Context, input *DescribeExp return out, req.Send() } +const opDescribeFleetHistory = "DescribeFleetHistory" + +// DescribeFleetHistoryRequest generates a "aws/request.Request" representing the +// client's request for the DescribeFleetHistory operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeFleetHistory for more information on using the DescribeFleetHistory +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeFleetHistoryRequest method. +// req, resp := client.DescribeFleetHistoryRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeFleetHistory +func (c *EC2) DescribeFleetHistoryRequest(input *DescribeFleetHistoryInput) (req *request.Request, output *DescribeFleetHistoryOutput) { + op := &request.Operation{ + Name: opDescribeFleetHistory, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeFleetHistoryInput{} + } + + output = &DescribeFleetHistoryOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeFleetHistory API operation for Amazon Elastic Compute Cloud. +// +// Describes the events for the specified EC2 Fleet during the specified time. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeFleetHistory for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeFleetHistory +func (c *EC2) DescribeFleetHistory(input *DescribeFleetHistoryInput) (*DescribeFleetHistoryOutput, error) { + req, out := c.DescribeFleetHistoryRequest(input) + return out, req.Send() +} + +// DescribeFleetHistoryWithContext is the same as DescribeFleetHistory with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeFleetHistory for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeFleetHistoryWithContext(ctx aws.Context, input *DescribeFleetHistoryInput, opts ...request.Option) (*DescribeFleetHistoryOutput, error) { + req, out := c.DescribeFleetHistoryRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeFleetInstances = "DescribeFleetInstances" + +// DescribeFleetInstancesRequest generates a "aws/request.Request" representing the +// client's request for the DescribeFleetInstances operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeFleetInstances for more information on using the DescribeFleetInstances +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeFleetInstancesRequest method. +// req, resp := client.DescribeFleetInstancesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeFleetInstances +func (c *EC2) DescribeFleetInstancesRequest(input *DescribeFleetInstancesInput) (req *request.Request, output *DescribeFleetInstancesOutput) { + op := &request.Operation{ + Name: opDescribeFleetInstances, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeFleetInstancesInput{} + } + + output = &DescribeFleetInstancesOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeFleetInstances API operation for Amazon Elastic Compute Cloud. +// +// Describes the running instances for the specified EC2 Fleet. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeFleetInstances for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeFleetInstances +func (c *EC2) DescribeFleetInstances(input *DescribeFleetInstancesInput) (*DescribeFleetInstancesOutput, error) { + req, out := c.DescribeFleetInstancesRequest(input) + return out, req.Send() +} + +// DescribeFleetInstancesWithContext is the same as DescribeFleetInstances with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeFleetInstances for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeFleetInstancesWithContext(ctx aws.Context, input *DescribeFleetInstancesInput, opts ...request.Option) (*DescribeFleetInstancesOutput, error) { + req, out := c.DescribeFleetInstancesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeFleets = "DescribeFleets" + +// DescribeFleetsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeFleets operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeFleets for more information on using the DescribeFleets +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeFleetsRequest method. +// req, resp := client.DescribeFleetsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeFleets +func (c *EC2) DescribeFleetsRequest(input *DescribeFleetsInput) (req *request.Request, output *DescribeFleetsOutput) { + op := &request.Operation{ + Name: opDescribeFleets, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeFleetsInput{} + } + + output = &DescribeFleetsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeFleets API operation for Amazon Elastic Compute Cloud. +// +// Describes the specified EC2 Fleet. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeFleets for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeFleets +func (c *EC2) DescribeFleets(input *DescribeFleetsInput) (*DescribeFleetsOutput, error) { + req, out := c.DescribeFleetsRequest(input) + return out, req.Send() +} + +// DescribeFleetsWithContext is the same as DescribeFleets with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeFleets for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeFleetsWithContext(ctx aws.Context, input *DescribeFleetsInput, opts ...request.Option) (*DescribeFleetsOutput, error) { + req, out := c.DescribeFleetsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opDescribeFlowLogs = "DescribeFlowLogs" // DescribeFlowLogsRequest generates a "aws/request.Request" representing the // client's request for the DescribeFlowLogs operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -8314,7 +9582,7 @@ const opDescribeFlowLogs = "DescribeFlowLogs" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeFlowLogs +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeFlowLogs func (c *EC2) DescribeFlowLogsRequest(input *DescribeFlowLogsInput) (req *request.Request, output *DescribeFlowLogsOutput) { op := &request.Operation{ Name: opDescribeFlowLogs, @@ -8343,7 +9611,7 @@ func (c *EC2) DescribeFlowLogsRequest(input *DescribeFlowLogsInput) (req *reques // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeFlowLogs for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeFlowLogs +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeFlowLogs func (c *EC2) DescribeFlowLogs(input *DescribeFlowLogsInput) (*DescribeFlowLogsOutput, error) { req, out := c.DescribeFlowLogsRequest(input) return out, req.Send() @@ -8369,7 +9637,7 @@ const opDescribeFpgaImageAttribute = "DescribeFpgaImageAttribute" // DescribeFpgaImageAttributeRequest generates a "aws/request.Request" representing the // client's request for the DescribeFpgaImageAttribute operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -8390,7 +9658,7 @@ const opDescribeFpgaImageAttribute = "DescribeFpgaImageAttribute" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeFpgaImageAttribute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeFpgaImageAttribute func (c *EC2) DescribeFpgaImageAttributeRequest(input *DescribeFpgaImageAttributeInput) (req *request.Request, output *DescribeFpgaImageAttributeOutput) { op := &request.Operation{ Name: opDescribeFpgaImageAttribute, @@ -8417,7 +9685,7 @@ func (c *EC2) DescribeFpgaImageAttributeRequest(input *DescribeFpgaImageAttribut // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeFpgaImageAttribute for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeFpgaImageAttribute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeFpgaImageAttribute func (c *EC2) DescribeFpgaImageAttribute(input *DescribeFpgaImageAttributeInput) (*DescribeFpgaImageAttributeOutput, error) { req, out := c.DescribeFpgaImageAttributeRequest(input) return out, req.Send() @@ -8443,7 +9711,7 @@ const opDescribeFpgaImages = "DescribeFpgaImages" // DescribeFpgaImagesRequest generates a "aws/request.Request" representing the // client's request for the DescribeFpgaImages operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -8464,7 +9732,7 @@ const opDescribeFpgaImages = "DescribeFpgaImages" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeFpgaImages +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeFpgaImages func (c *EC2) DescribeFpgaImagesRequest(input *DescribeFpgaImagesInput) (req *request.Request, output *DescribeFpgaImagesOutput) { op := &request.Operation{ Name: opDescribeFpgaImages, @@ -8493,7 +9761,7 @@ func (c *EC2) DescribeFpgaImagesRequest(input *DescribeFpgaImagesInput) (req *re // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeFpgaImages for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeFpgaImages +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeFpgaImages func (c *EC2) DescribeFpgaImages(input *DescribeFpgaImagesInput) (*DescribeFpgaImagesOutput, error) { req, out := c.DescribeFpgaImagesRequest(input) return out, req.Send() @@ -8519,7 +9787,7 @@ const opDescribeHostReservationOfferings = "DescribeHostReservationOfferings" // DescribeHostReservationOfferingsRequest generates a "aws/request.Request" representing the // client's request for the DescribeHostReservationOfferings operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -8540,7 +9808,7 @@ const opDescribeHostReservationOfferings = "DescribeHostReservationOfferings" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeHostReservationOfferings +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeHostReservationOfferings func (c *EC2) DescribeHostReservationOfferingsRequest(input *DescribeHostReservationOfferingsInput) (req *request.Request, output *DescribeHostReservationOfferingsOutput) { op := &request.Operation{ Name: opDescribeHostReservationOfferings, @@ -8575,7 +9843,7 @@ func (c *EC2) DescribeHostReservationOfferingsRequest(input *DescribeHostReserva // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeHostReservationOfferings for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeHostReservationOfferings +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeHostReservationOfferings func (c *EC2) DescribeHostReservationOfferings(input *DescribeHostReservationOfferingsInput) (*DescribeHostReservationOfferingsOutput, error) { req, out := c.DescribeHostReservationOfferingsRequest(input) return out, req.Send() @@ -8601,7 +9869,7 @@ const opDescribeHostReservations = "DescribeHostReservations" // DescribeHostReservationsRequest generates a "aws/request.Request" representing the // client's request for the DescribeHostReservations operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -8622,7 +9890,7 @@ const opDescribeHostReservations = "DescribeHostReservations" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeHostReservations +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeHostReservations func (c *EC2) DescribeHostReservationsRequest(input *DescribeHostReservationsInput) (req *request.Request, output *DescribeHostReservationsOutput) { op := &request.Operation{ Name: opDescribeHostReservations, @@ -8650,7 +9918,7 @@ func (c *EC2) DescribeHostReservationsRequest(input *DescribeHostReservationsInp // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeHostReservations for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeHostReservations +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeHostReservations func (c *EC2) DescribeHostReservations(input *DescribeHostReservationsInput) (*DescribeHostReservationsOutput, error) { req, out := c.DescribeHostReservationsRequest(input) return out, req.Send() @@ -8676,7 +9944,7 @@ const opDescribeHosts = "DescribeHosts" // DescribeHostsRequest generates a "aws/request.Request" representing the // client's request for the DescribeHosts operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -8697,7 +9965,7 @@ const opDescribeHosts = "DescribeHosts" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeHosts +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeHosts func (c *EC2) DescribeHostsRequest(input *DescribeHostsInput) (req *request.Request, output *DescribeHostsOutput) { op := &request.Operation{ Name: opDescribeHosts, @@ -8728,7 +9996,7 @@ func (c *EC2) DescribeHostsRequest(input *DescribeHostsInput) (req *request.Requ // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeHosts for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeHosts +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeHosts func (c *EC2) DescribeHosts(input *DescribeHostsInput) (*DescribeHostsOutput, error) { req, out := c.DescribeHostsRequest(input) return out, req.Send() @@ -8754,7 +10022,7 @@ const opDescribeIamInstanceProfileAssociations = "DescribeIamInstanceProfileAsso // DescribeIamInstanceProfileAssociationsRequest generates a "aws/request.Request" representing the // client's request for the DescribeIamInstanceProfileAssociations operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -8775,7 +10043,7 @@ const opDescribeIamInstanceProfileAssociations = "DescribeIamInstanceProfileAsso // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeIamInstanceProfileAssociations +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeIamInstanceProfileAssociations func (c *EC2) DescribeIamInstanceProfileAssociationsRequest(input *DescribeIamInstanceProfileAssociationsInput) (req *request.Request, output *DescribeIamInstanceProfileAssociationsOutput) { op := &request.Operation{ Name: opDescribeIamInstanceProfileAssociations, @@ -8802,7 +10070,7 @@ func (c *EC2) DescribeIamInstanceProfileAssociationsRequest(input *DescribeIamIn // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeIamInstanceProfileAssociations for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeIamInstanceProfileAssociations +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeIamInstanceProfileAssociations func (c *EC2) DescribeIamInstanceProfileAssociations(input *DescribeIamInstanceProfileAssociationsInput) (*DescribeIamInstanceProfileAssociationsOutput, error) { req, out := c.DescribeIamInstanceProfileAssociationsRequest(input) return out, req.Send() @@ -8828,7 +10096,7 @@ const opDescribeIdFormat = "DescribeIdFormat" // DescribeIdFormatRequest generates a "aws/request.Request" representing the // client's request for the DescribeIdFormat operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -8849,7 +10117,7 @@ const opDescribeIdFormat = "DescribeIdFormat" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeIdFormat +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeIdFormat func (c *EC2) DescribeIdFormatRequest(input *DescribeIdFormatInput) (req *request.Request, output *DescribeIdFormatOutput) { op := &request.Operation{ Name: opDescribeIdFormat, @@ -8873,8 +10141,13 @@ func (c *EC2) DescribeIdFormatRequest(input *DescribeIdFormatInput) (req *reques // request only returns information about resource types whose ID formats can // be modified; it does not return information about other resource types. // -// The following resource types support longer IDs: instance | reservation | -// snapshot | volume. +// The following resource types support longer IDs: bundle | conversion-task +// | customer-gateway | dhcp-options | elastic-ip-allocation | elastic-ip-association +// | export-task | flow-log | image | import-task | instance | internet-gateway +// | network-acl | network-acl-association | network-interface | network-interface-attachment +// | prefix-list | reservation | route-table | route-table-association | security-group +// | snapshot | subnet | subnet-cidr-block-association | volume | vpc | vpc-cidr-block-association +// | vpc-endpoint | vpc-peering-connection | vpn-connection | vpn-gateway. // // These settings apply to the IAM user who makes the request; they do not apply // to the entire AWS account. By default, an IAM user defaults to the same settings @@ -8889,7 +10162,7 @@ func (c *EC2) DescribeIdFormatRequest(input *DescribeIdFormatInput) (req *reques // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeIdFormat for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeIdFormat +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeIdFormat func (c *EC2) DescribeIdFormat(input *DescribeIdFormatInput) (*DescribeIdFormatOutput, error) { req, out := c.DescribeIdFormatRequest(input) return out, req.Send() @@ -8915,7 +10188,7 @@ const opDescribeIdentityIdFormat = "DescribeIdentityIdFormat" // DescribeIdentityIdFormatRequest generates a "aws/request.Request" representing the // client's request for the DescribeIdentityIdFormat operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -8936,7 +10209,7 @@ const opDescribeIdentityIdFormat = "DescribeIdentityIdFormat" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeIdentityIdFormat +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeIdentityIdFormat func (c *EC2) DescribeIdentityIdFormatRequest(input *DescribeIdentityIdFormatInput) (req *request.Request, output *DescribeIdentityIdFormatOutput) { op := &request.Operation{ Name: opDescribeIdentityIdFormat, @@ -8962,8 +10235,13 @@ func (c *EC2) DescribeIdentityIdFormatRequest(input *DescribeIdentityIdFormatInp // other resource types. For more information, see Resource IDs (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/resource-ids.html) // in the Amazon Elastic Compute Cloud User Guide. // -// The following resource types support longer IDs: instance | reservation | -// snapshot | volume. +// The following resource types support longer IDs: bundle | conversion-task +// | customer-gateway | dhcp-options | elastic-ip-allocation | elastic-ip-association +// | export-task | flow-log | image | import-task | instance | internet-gateway +// | network-acl | network-acl-association | network-interface | network-interface-attachment +// | prefix-list | reservation | route-table | route-table-association | security-group +// | snapshot | subnet | subnet-cidr-block-association | volume | vpc | vpc-cidr-block-association +// | vpc-endpoint | vpc-peering-connection | vpn-connection | vpn-gateway. // // These settings apply to the principal specified in the request. They do not // apply to the principal that makes the request. @@ -8974,7 +10252,7 @@ func (c *EC2) DescribeIdentityIdFormatRequest(input *DescribeIdentityIdFormatInp // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeIdentityIdFormat for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeIdentityIdFormat +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeIdentityIdFormat func (c *EC2) DescribeIdentityIdFormat(input *DescribeIdentityIdFormatInput) (*DescribeIdentityIdFormatOutput, error) { req, out := c.DescribeIdentityIdFormatRequest(input) return out, req.Send() @@ -9000,7 +10278,7 @@ const opDescribeImageAttribute = "DescribeImageAttribute" // DescribeImageAttributeRequest generates a "aws/request.Request" representing the // client's request for the DescribeImageAttribute operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -9021,7 +10299,7 @@ const opDescribeImageAttribute = "DescribeImageAttribute" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeImageAttribute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeImageAttribute func (c *EC2) DescribeImageAttributeRequest(input *DescribeImageAttributeInput) (req *request.Request, output *DescribeImageAttributeOutput) { op := &request.Operation{ Name: opDescribeImageAttribute, @@ -9049,7 +10327,7 @@ func (c *EC2) DescribeImageAttributeRequest(input *DescribeImageAttributeInput) // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeImageAttribute for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeImageAttribute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeImageAttribute func (c *EC2) DescribeImageAttribute(input *DescribeImageAttributeInput) (*DescribeImageAttributeOutput, error) { req, out := c.DescribeImageAttributeRequest(input) return out, req.Send() @@ -9075,7 +10353,7 @@ const opDescribeImages = "DescribeImages" // DescribeImagesRequest generates a "aws/request.Request" representing the // client's request for the DescribeImages operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -9096,7 +10374,7 @@ const opDescribeImages = "DescribeImages" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeImages +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeImages func (c *EC2) DescribeImagesRequest(input *DescribeImagesInput) (req *request.Request, output *DescribeImagesOutput) { op := &request.Operation{ Name: opDescribeImages, @@ -9129,7 +10407,7 @@ func (c *EC2) DescribeImagesRequest(input *DescribeImagesInput) (req *request.Re // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeImages for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeImages +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeImages func (c *EC2) DescribeImages(input *DescribeImagesInput) (*DescribeImagesOutput, error) { req, out := c.DescribeImagesRequest(input) return out, req.Send() @@ -9155,7 +10433,7 @@ const opDescribeImportImageTasks = "DescribeImportImageTasks" // DescribeImportImageTasksRequest generates a "aws/request.Request" representing the // client's request for the DescribeImportImageTasks operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -9176,7 +10454,7 @@ const opDescribeImportImageTasks = "DescribeImportImageTasks" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeImportImageTasks +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeImportImageTasks func (c *EC2) DescribeImportImageTasksRequest(input *DescribeImportImageTasksInput) (req *request.Request, output *DescribeImportImageTasksOutput) { op := &request.Operation{ Name: opDescribeImportImageTasks, @@ -9204,7 +10482,7 @@ func (c *EC2) DescribeImportImageTasksRequest(input *DescribeImportImageTasksInp // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeImportImageTasks for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeImportImageTasks +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeImportImageTasks func (c *EC2) DescribeImportImageTasks(input *DescribeImportImageTasksInput) (*DescribeImportImageTasksOutput, error) { req, out := c.DescribeImportImageTasksRequest(input) return out, req.Send() @@ -9230,7 +10508,7 @@ const opDescribeImportSnapshotTasks = "DescribeImportSnapshotTasks" // DescribeImportSnapshotTasksRequest generates a "aws/request.Request" representing the // client's request for the DescribeImportSnapshotTasks operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -9251,7 +10529,7 @@ const opDescribeImportSnapshotTasks = "DescribeImportSnapshotTasks" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeImportSnapshotTasks +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeImportSnapshotTasks func (c *EC2) DescribeImportSnapshotTasksRequest(input *DescribeImportSnapshotTasksInput) (req *request.Request, output *DescribeImportSnapshotTasksOutput) { op := &request.Operation{ Name: opDescribeImportSnapshotTasks, @@ -9278,7 +10556,7 @@ func (c *EC2) DescribeImportSnapshotTasksRequest(input *DescribeImportSnapshotTa // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeImportSnapshotTasks for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeImportSnapshotTasks +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeImportSnapshotTasks func (c *EC2) DescribeImportSnapshotTasks(input *DescribeImportSnapshotTasksInput) (*DescribeImportSnapshotTasksOutput, error) { req, out := c.DescribeImportSnapshotTasksRequest(input) return out, req.Send() @@ -9304,7 +10582,7 @@ const opDescribeInstanceAttribute = "DescribeInstanceAttribute" // DescribeInstanceAttributeRequest generates a "aws/request.Request" representing the // client's request for the DescribeInstanceAttribute operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -9325,7 +10603,7 @@ const opDescribeInstanceAttribute = "DescribeInstanceAttribute" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeInstanceAttribute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeInstanceAttribute func (c *EC2) DescribeInstanceAttributeRequest(input *DescribeInstanceAttributeInput) (req *request.Request, output *DescribeInstanceAttributeOutput) { op := &request.Operation{ Name: opDescribeInstanceAttribute, @@ -9356,7 +10634,7 @@ func (c *EC2) DescribeInstanceAttributeRequest(input *DescribeInstanceAttributeI // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeInstanceAttribute for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeInstanceAttribute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeInstanceAttribute func (c *EC2) DescribeInstanceAttribute(input *DescribeInstanceAttributeInput) (*DescribeInstanceAttributeOutput, error) { req, out := c.DescribeInstanceAttributeRequest(input) return out, req.Send() @@ -9378,11 +10656,103 @@ func (c *EC2) DescribeInstanceAttributeWithContext(ctx aws.Context, input *Descr return out, req.Send() } +const opDescribeInstanceCreditSpecifications = "DescribeInstanceCreditSpecifications" + +// DescribeInstanceCreditSpecificationsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeInstanceCreditSpecifications operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeInstanceCreditSpecifications for more information on using the DescribeInstanceCreditSpecifications +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeInstanceCreditSpecificationsRequest method. +// req, resp := client.DescribeInstanceCreditSpecificationsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeInstanceCreditSpecifications +func (c *EC2) DescribeInstanceCreditSpecificationsRequest(input *DescribeInstanceCreditSpecificationsInput) (req *request.Request, output *DescribeInstanceCreditSpecificationsOutput) { + op := &request.Operation{ + Name: opDescribeInstanceCreditSpecifications, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeInstanceCreditSpecificationsInput{} + } + + output = &DescribeInstanceCreditSpecificationsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeInstanceCreditSpecifications API operation for Amazon Elastic Compute Cloud. +// +// Describes the credit option for CPU usage of one or more of your T2 instances. +// The credit options are standard and unlimited. +// +// If you do not specify an instance ID, Amazon EC2 returns only the T2 instances +// with the unlimited credit option. If you specify one or more instance IDs, +// Amazon EC2 returns the credit option (standard or unlimited) of those instances. +// If you specify an instance ID that is not valid, such as an instance that +// is not a T2 instance, an error is returned. +// +// Recently terminated instances might appear in the returned results. This +// interval is usually less than one hour. +// +// If an Availability Zone is experiencing a service disruption and you specify +// instance IDs in the affected zone, or do not specify any instance IDs at +// all, the call fails. If you specify only instance IDs in an unaffected zone, +// the call works normally. +// +// For more information, see T2 Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/t2-instances.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeInstanceCreditSpecifications for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeInstanceCreditSpecifications +func (c *EC2) DescribeInstanceCreditSpecifications(input *DescribeInstanceCreditSpecificationsInput) (*DescribeInstanceCreditSpecificationsOutput, error) { + req, out := c.DescribeInstanceCreditSpecificationsRequest(input) + return out, req.Send() +} + +// DescribeInstanceCreditSpecificationsWithContext is the same as DescribeInstanceCreditSpecifications with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeInstanceCreditSpecifications for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeInstanceCreditSpecificationsWithContext(ctx aws.Context, input *DescribeInstanceCreditSpecificationsInput, opts ...request.Option) (*DescribeInstanceCreditSpecificationsOutput, error) { + req, out := c.DescribeInstanceCreditSpecificationsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opDescribeInstanceStatus = "DescribeInstanceStatus" // DescribeInstanceStatusRequest generates a "aws/request.Request" representing the // client's request for the DescribeInstanceStatus operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -9403,7 +10773,7 @@ const opDescribeInstanceStatus = "DescribeInstanceStatus" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeInstanceStatus +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeInstanceStatus func (c *EC2) DescribeInstanceStatusRequest(input *DescribeInstanceStatusInput) (req *request.Request, output *DescribeInstanceStatusOutput) { op := &request.Operation{ Name: opDescribeInstanceStatus, @@ -9457,7 +10827,7 @@ func (c *EC2) DescribeInstanceStatusRequest(input *DescribeInstanceStatusInput) // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeInstanceStatus for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeInstanceStatus +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeInstanceStatus func (c *EC2) DescribeInstanceStatus(input *DescribeInstanceStatusInput) (*DescribeInstanceStatusOutput, error) { req, out := c.DescribeInstanceStatusRequest(input) return out, req.Send() @@ -9533,7 +10903,7 @@ const opDescribeInstances = "DescribeInstances" // DescribeInstancesRequest generates a "aws/request.Request" representing the // client's request for the DescribeInstances operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -9554,7 +10924,7 @@ const opDescribeInstances = "DescribeInstances" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeInstances +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeInstances func (c *EC2) DescribeInstancesRequest(input *DescribeInstancesInput) (req *request.Request, output *DescribeInstancesOutput) { op := &request.Operation{ Name: opDescribeInstances, @@ -9602,7 +10972,7 @@ func (c *EC2) DescribeInstancesRequest(input *DescribeInstancesInput) (req *requ // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeInstances for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeInstances +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeInstances func (c *EC2) DescribeInstances(input *DescribeInstancesInput) (*DescribeInstancesOutput, error) { req, out := c.DescribeInstancesRequest(input) return out, req.Send() @@ -9678,7 +11048,7 @@ const opDescribeInternetGateways = "DescribeInternetGateways" // DescribeInternetGatewaysRequest generates a "aws/request.Request" representing the // client's request for the DescribeInternetGateways operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -9699,7 +11069,7 @@ const opDescribeInternetGateways = "DescribeInternetGateways" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeInternetGateways +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeInternetGateways func (c *EC2) DescribeInternetGatewaysRequest(input *DescribeInternetGatewaysInput) (req *request.Request, output *DescribeInternetGatewaysOutput) { op := &request.Operation{ Name: opDescribeInternetGateways, @@ -9726,7 +11096,7 @@ func (c *EC2) DescribeInternetGatewaysRequest(input *DescribeInternetGatewaysInp // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeInternetGateways for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeInternetGateways +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeInternetGateways func (c *EC2) DescribeInternetGateways(input *DescribeInternetGatewaysInput) (*DescribeInternetGatewaysOutput, error) { req, out := c.DescribeInternetGatewaysRequest(input) return out, req.Send() @@ -9752,7 +11122,7 @@ const opDescribeKeyPairs = "DescribeKeyPairs" // DescribeKeyPairsRequest generates a "aws/request.Request" representing the // client's request for the DescribeKeyPairs operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -9773,7 +11143,7 @@ const opDescribeKeyPairs = "DescribeKeyPairs" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeKeyPairs +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeKeyPairs func (c *EC2) DescribeKeyPairsRequest(input *DescribeKeyPairsInput) (req *request.Request, output *DescribeKeyPairsOutput) { op := &request.Operation{ Name: opDescribeKeyPairs, @@ -9803,7 +11173,7 @@ func (c *EC2) DescribeKeyPairsRequest(input *DescribeKeyPairsInput) (req *reques // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeKeyPairs for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeKeyPairs +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeKeyPairs func (c *EC2) DescribeKeyPairs(input *DescribeKeyPairsInput) (*DescribeKeyPairsOutput, error) { req, out := c.DescribeKeyPairsRequest(input) return out, req.Send() @@ -9825,11 +11195,160 @@ func (c *EC2) DescribeKeyPairsWithContext(ctx aws.Context, input *DescribeKeyPai return out, req.Send() } +const opDescribeLaunchTemplateVersions = "DescribeLaunchTemplateVersions" + +// DescribeLaunchTemplateVersionsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeLaunchTemplateVersions operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeLaunchTemplateVersions for more information on using the DescribeLaunchTemplateVersions +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeLaunchTemplateVersionsRequest method. +// req, resp := client.DescribeLaunchTemplateVersionsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeLaunchTemplateVersions +func (c *EC2) DescribeLaunchTemplateVersionsRequest(input *DescribeLaunchTemplateVersionsInput) (req *request.Request, output *DescribeLaunchTemplateVersionsOutput) { + op := &request.Operation{ + Name: opDescribeLaunchTemplateVersions, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeLaunchTemplateVersionsInput{} + } + + output = &DescribeLaunchTemplateVersionsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeLaunchTemplateVersions API operation for Amazon Elastic Compute Cloud. +// +// Describes one or more versions of a specified launch template. You can describe +// all versions, individual versions, or a range of versions. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeLaunchTemplateVersions for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeLaunchTemplateVersions +func (c *EC2) DescribeLaunchTemplateVersions(input *DescribeLaunchTemplateVersionsInput) (*DescribeLaunchTemplateVersionsOutput, error) { + req, out := c.DescribeLaunchTemplateVersionsRequest(input) + return out, req.Send() +} + +// DescribeLaunchTemplateVersionsWithContext is the same as DescribeLaunchTemplateVersions with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeLaunchTemplateVersions for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeLaunchTemplateVersionsWithContext(ctx aws.Context, input *DescribeLaunchTemplateVersionsInput, opts ...request.Option) (*DescribeLaunchTemplateVersionsOutput, error) { + req, out := c.DescribeLaunchTemplateVersionsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeLaunchTemplates = "DescribeLaunchTemplates" + +// DescribeLaunchTemplatesRequest generates a "aws/request.Request" representing the +// client's request for the DescribeLaunchTemplates operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeLaunchTemplates for more information on using the DescribeLaunchTemplates +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeLaunchTemplatesRequest method. +// req, resp := client.DescribeLaunchTemplatesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeLaunchTemplates +func (c *EC2) DescribeLaunchTemplatesRequest(input *DescribeLaunchTemplatesInput) (req *request.Request, output *DescribeLaunchTemplatesOutput) { + op := &request.Operation{ + Name: opDescribeLaunchTemplates, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeLaunchTemplatesInput{} + } + + output = &DescribeLaunchTemplatesOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeLaunchTemplates API operation for Amazon Elastic Compute Cloud. +// +// Describes one or more launch templates. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeLaunchTemplates for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeLaunchTemplates +func (c *EC2) DescribeLaunchTemplates(input *DescribeLaunchTemplatesInput) (*DescribeLaunchTemplatesOutput, error) { + req, out := c.DescribeLaunchTemplatesRequest(input) + return out, req.Send() +} + +// DescribeLaunchTemplatesWithContext is the same as DescribeLaunchTemplates with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeLaunchTemplates for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeLaunchTemplatesWithContext(ctx aws.Context, input *DescribeLaunchTemplatesInput, opts ...request.Option) (*DescribeLaunchTemplatesOutput, error) { + req, out := c.DescribeLaunchTemplatesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opDescribeMovingAddresses = "DescribeMovingAddresses" // DescribeMovingAddressesRequest generates a "aws/request.Request" representing the // client's request for the DescribeMovingAddresses operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -9850,7 +11369,7 @@ const opDescribeMovingAddresses = "DescribeMovingAddresses" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeMovingAddresses +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeMovingAddresses func (c *EC2) DescribeMovingAddressesRequest(input *DescribeMovingAddressesInput) (req *request.Request, output *DescribeMovingAddressesOutput) { op := &request.Operation{ Name: opDescribeMovingAddresses, @@ -9879,7 +11398,7 @@ func (c *EC2) DescribeMovingAddressesRequest(input *DescribeMovingAddressesInput // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeMovingAddresses for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeMovingAddresses +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeMovingAddresses func (c *EC2) DescribeMovingAddresses(input *DescribeMovingAddressesInput) (*DescribeMovingAddressesOutput, error) { req, out := c.DescribeMovingAddressesRequest(input) return out, req.Send() @@ -9905,7 +11424,7 @@ const opDescribeNatGateways = "DescribeNatGateways" // DescribeNatGatewaysRequest generates a "aws/request.Request" representing the // client's request for the DescribeNatGateways operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -9926,7 +11445,7 @@ const opDescribeNatGateways = "DescribeNatGateways" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNatGateways +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNatGateways func (c *EC2) DescribeNatGatewaysRequest(input *DescribeNatGatewaysInput) (req *request.Request, output *DescribeNatGatewaysOutput) { op := &request.Operation{ Name: opDescribeNatGateways, @@ -9959,7 +11478,7 @@ func (c *EC2) DescribeNatGatewaysRequest(input *DescribeNatGatewaysInput) (req * // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeNatGateways for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNatGateways +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNatGateways func (c *EC2) DescribeNatGateways(input *DescribeNatGatewaysInput) (*DescribeNatGatewaysOutput, error) { req, out := c.DescribeNatGatewaysRequest(input) return out, req.Send() @@ -10035,7 +11554,7 @@ const opDescribeNetworkAcls = "DescribeNetworkAcls" // DescribeNetworkAclsRequest generates a "aws/request.Request" representing the // client's request for the DescribeNetworkAcls operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -10056,7 +11575,7 @@ const opDescribeNetworkAcls = "DescribeNetworkAcls" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNetworkAcls +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNetworkAcls func (c *EC2) DescribeNetworkAclsRequest(input *DescribeNetworkAclsInput) (req *request.Request, output *DescribeNetworkAclsOutput) { op := &request.Operation{ Name: opDescribeNetworkAcls, @@ -10086,7 +11605,7 @@ func (c *EC2) DescribeNetworkAclsRequest(input *DescribeNetworkAclsInput) (req * // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeNetworkAcls for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNetworkAcls +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNetworkAcls func (c *EC2) DescribeNetworkAcls(input *DescribeNetworkAclsInput) (*DescribeNetworkAclsOutput, error) { req, out := c.DescribeNetworkAclsRequest(input) return out, req.Send() @@ -10112,7 +11631,7 @@ const opDescribeNetworkInterfaceAttribute = "DescribeNetworkInterfaceAttribute" // DescribeNetworkInterfaceAttributeRequest generates a "aws/request.Request" representing the // client's request for the DescribeNetworkInterfaceAttribute operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -10133,7 +11652,7 @@ const opDescribeNetworkInterfaceAttribute = "DescribeNetworkInterfaceAttribute" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNetworkInterfaceAttribute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNetworkInterfaceAttribute func (c *EC2) DescribeNetworkInterfaceAttributeRequest(input *DescribeNetworkInterfaceAttributeInput) (req *request.Request, output *DescribeNetworkInterfaceAttributeOutput) { op := &request.Operation{ Name: opDescribeNetworkInterfaceAttribute, @@ -10161,7 +11680,7 @@ func (c *EC2) DescribeNetworkInterfaceAttributeRequest(input *DescribeNetworkInt // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeNetworkInterfaceAttribute for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNetworkInterfaceAttribute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNetworkInterfaceAttribute func (c *EC2) DescribeNetworkInterfaceAttribute(input *DescribeNetworkInterfaceAttributeInput) (*DescribeNetworkInterfaceAttributeOutput, error) { req, out := c.DescribeNetworkInterfaceAttributeRequest(input) return out, req.Send() @@ -10187,7 +11706,7 @@ const opDescribeNetworkInterfacePermissions = "DescribeNetworkInterfacePermissio // DescribeNetworkInterfacePermissionsRequest generates a "aws/request.Request" representing the // client's request for the DescribeNetworkInterfacePermissions operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -10208,7 +11727,7 @@ const opDescribeNetworkInterfacePermissions = "DescribeNetworkInterfacePermissio // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNetworkInterfacePermissions +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNetworkInterfacePermissions func (c *EC2) DescribeNetworkInterfacePermissionsRequest(input *DescribeNetworkInterfacePermissionsInput) (req *request.Request, output *DescribeNetworkInterfacePermissionsOutput) { op := &request.Operation{ Name: opDescribeNetworkInterfacePermissions, @@ -10235,7 +11754,7 @@ func (c *EC2) DescribeNetworkInterfacePermissionsRequest(input *DescribeNetworkI // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeNetworkInterfacePermissions for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNetworkInterfacePermissions +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNetworkInterfacePermissions func (c *EC2) DescribeNetworkInterfacePermissions(input *DescribeNetworkInterfacePermissionsInput) (*DescribeNetworkInterfacePermissionsOutput, error) { req, out := c.DescribeNetworkInterfacePermissionsRequest(input) return out, req.Send() @@ -10261,7 +11780,7 @@ const opDescribeNetworkInterfaces = "DescribeNetworkInterfaces" // DescribeNetworkInterfacesRequest generates a "aws/request.Request" representing the // client's request for the DescribeNetworkInterfaces operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -10282,7 +11801,7 @@ const opDescribeNetworkInterfaces = "DescribeNetworkInterfaces" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNetworkInterfaces +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNetworkInterfaces func (c *EC2) DescribeNetworkInterfacesRequest(input *DescribeNetworkInterfacesInput) (req *request.Request, output *DescribeNetworkInterfacesOutput) { op := &request.Operation{ Name: opDescribeNetworkInterfaces, @@ -10309,7 +11828,7 @@ func (c *EC2) DescribeNetworkInterfacesRequest(input *DescribeNetworkInterfacesI // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeNetworkInterfaces for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNetworkInterfaces +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNetworkInterfaces func (c *EC2) DescribeNetworkInterfaces(input *DescribeNetworkInterfacesInput) (*DescribeNetworkInterfacesOutput, error) { req, out := c.DescribeNetworkInterfacesRequest(input) return out, req.Send() @@ -10335,7 +11854,7 @@ const opDescribePlacementGroups = "DescribePlacementGroups" // DescribePlacementGroupsRequest generates a "aws/request.Request" representing the // client's request for the DescribePlacementGroups operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -10356,7 +11875,7 @@ const opDescribePlacementGroups = "DescribePlacementGroups" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribePlacementGroups +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribePlacementGroups func (c *EC2) DescribePlacementGroupsRequest(input *DescribePlacementGroupsInput) (req *request.Request, output *DescribePlacementGroupsOutput) { op := &request.Operation{ Name: opDescribePlacementGroups, @@ -10375,8 +11894,8 @@ func (c *EC2) DescribePlacementGroupsRequest(input *DescribePlacementGroupsInput // DescribePlacementGroups API operation for Amazon Elastic Compute Cloud. // -// Describes one or more of your placement groups. For more information about -// placement groups and cluster instances, see Cluster Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using_cluster_computing.html) +// Describes one or more of your placement groups. For more information, see +// Placement Groups (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html) // in the Amazon Elastic Compute Cloud User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -10385,7 +11904,7 @@ func (c *EC2) DescribePlacementGroupsRequest(input *DescribePlacementGroupsInput // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribePlacementGroups for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribePlacementGroups +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribePlacementGroups func (c *EC2) DescribePlacementGroups(input *DescribePlacementGroupsInput) (*DescribePlacementGroupsOutput, error) { req, out := c.DescribePlacementGroupsRequest(input) return out, req.Send() @@ -10411,7 +11930,7 @@ const opDescribePrefixLists = "DescribePrefixLists" // DescribePrefixListsRequest generates a "aws/request.Request" representing the // client's request for the DescribePrefixLists operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -10432,7 +11951,7 @@ const opDescribePrefixLists = "DescribePrefixLists" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribePrefixLists +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribePrefixLists func (c *EC2) DescribePrefixListsRequest(input *DescribePrefixListsInput) (req *request.Request, output *DescribePrefixListsOutput) { op := &request.Operation{ Name: opDescribePrefixLists, @@ -10455,7 +11974,7 @@ func (c *EC2) DescribePrefixListsRequest(input *DescribePrefixListsInput) (req * // the prefix list name and prefix list ID of the service and the IP address // range for the service. A prefix list ID is required for creating an outbound // security group rule that allows traffic from a VPC to access an AWS service -// through a VPC endpoint. +// through a gateway VPC endpoint. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -10463,7 +11982,7 @@ func (c *EC2) DescribePrefixListsRequest(input *DescribePrefixListsInput) (req * // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribePrefixLists for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribePrefixLists +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribePrefixLists func (c *EC2) DescribePrefixLists(input *DescribePrefixListsInput) (*DescribePrefixListsOutput, error) { req, out := c.DescribePrefixListsRequest(input) return out, req.Send() @@ -10485,11 +12004,99 @@ func (c *EC2) DescribePrefixListsWithContext(ctx aws.Context, input *DescribePre return out, req.Send() } +const opDescribePrincipalIdFormat = "DescribePrincipalIdFormat" + +// DescribePrincipalIdFormatRequest generates a "aws/request.Request" representing the +// client's request for the DescribePrincipalIdFormat operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribePrincipalIdFormat for more information on using the DescribePrincipalIdFormat +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribePrincipalIdFormatRequest method. +// req, resp := client.DescribePrincipalIdFormatRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribePrincipalIdFormat +func (c *EC2) DescribePrincipalIdFormatRequest(input *DescribePrincipalIdFormatInput) (req *request.Request, output *DescribePrincipalIdFormatOutput) { + op := &request.Operation{ + Name: opDescribePrincipalIdFormat, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribePrincipalIdFormatInput{} + } + + output = &DescribePrincipalIdFormatOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribePrincipalIdFormat API operation for Amazon Elastic Compute Cloud. +// +// Describes the ID format settings for the root user and all IAM roles and +// IAM users that have explicitly specified a longer ID (17-character ID) preference. +// +// By default, all IAM roles and IAM users default to the same ID settings as +// the root user, unless they explicitly override the settings. This request +// is useful for identifying those IAM users and IAM roles that have overridden +// the default ID settings. +// +// The following resource types support longer IDs: bundle | conversion-task +// | customer-gateway | dhcp-options | elastic-ip-allocation | elastic-ip-association +// | export-task | flow-log | image | import-task | instance | internet-gateway +// | network-acl | network-acl-association | network-interface | network-interface-attachment +// | prefix-list | reservation | route-table | route-table-association | security-group +// | snapshot | subnet | subnet-cidr-block-association | volume | vpc | vpc-cidr-block-association +// | vpc-endpoint | vpc-peering-connection | vpn-connection | vpn-gateway. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribePrincipalIdFormat for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribePrincipalIdFormat +func (c *EC2) DescribePrincipalIdFormat(input *DescribePrincipalIdFormatInput) (*DescribePrincipalIdFormatOutput, error) { + req, out := c.DescribePrincipalIdFormatRequest(input) + return out, req.Send() +} + +// DescribePrincipalIdFormatWithContext is the same as DescribePrincipalIdFormat with the addition of +// the ability to pass a context and additional request options. +// +// See DescribePrincipalIdFormat for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribePrincipalIdFormatWithContext(ctx aws.Context, input *DescribePrincipalIdFormatInput, opts ...request.Option) (*DescribePrincipalIdFormatOutput, error) { + req, out := c.DescribePrincipalIdFormatRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opDescribeRegions = "DescribeRegions" // DescribeRegionsRequest generates a "aws/request.Request" representing the // client's request for the DescribeRegions operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -10510,7 +12117,7 @@ const opDescribeRegions = "DescribeRegions" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeRegions +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeRegions func (c *EC2) DescribeRegionsRequest(input *DescribeRegionsInput) (req *request.Request, output *DescribeRegionsOutput) { op := &request.Operation{ Name: opDescribeRegions, @@ -10540,7 +12147,7 @@ func (c *EC2) DescribeRegionsRequest(input *DescribeRegionsInput) (req *request. // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeRegions for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeRegions +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeRegions func (c *EC2) DescribeRegions(input *DescribeRegionsInput) (*DescribeRegionsOutput, error) { req, out := c.DescribeRegionsRequest(input) return out, req.Send() @@ -10566,7 +12173,7 @@ const opDescribeReservedInstances = "DescribeReservedInstances" // DescribeReservedInstancesRequest generates a "aws/request.Request" representing the // client's request for the DescribeReservedInstances operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -10587,7 +12194,7 @@ const opDescribeReservedInstances = "DescribeReservedInstances" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeReservedInstances +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeReservedInstances func (c *EC2) DescribeReservedInstancesRequest(input *DescribeReservedInstancesInput) (req *request.Request, output *DescribeReservedInstancesOutput) { op := &request.Operation{ Name: opDescribeReservedInstances, @@ -10617,7 +12224,7 @@ func (c *EC2) DescribeReservedInstancesRequest(input *DescribeReservedInstancesI // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeReservedInstances for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeReservedInstances +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeReservedInstances func (c *EC2) DescribeReservedInstances(input *DescribeReservedInstancesInput) (*DescribeReservedInstancesOutput, error) { req, out := c.DescribeReservedInstancesRequest(input) return out, req.Send() @@ -10643,7 +12250,7 @@ const opDescribeReservedInstancesListings = "DescribeReservedInstancesListings" // DescribeReservedInstancesListingsRequest generates a "aws/request.Request" representing the // client's request for the DescribeReservedInstancesListings operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -10664,7 +12271,7 @@ const opDescribeReservedInstancesListings = "DescribeReservedInstancesListings" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeReservedInstancesListings +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeReservedInstancesListings func (c *EC2) DescribeReservedInstancesListingsRequest(input *DescribeReservedInstancesListingsInput) (req *request.Request, output *DescribeReservedInstancesListingsOutput) { op := &request.Operation{ Name: opDescribeReservedInstancesListings, @@ -10712,7 +12319,7 @@ func (c *EC2) DescribeReservedInstancesListingsRequest(input *DescribeReservedIn // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeReservedInstancesListings for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeReservedInstancesListings +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeReservedInstancesListings func (c *EC2) DescribeReservedInstancesListings(input *DescribeReservedInstancesListingsInput) (*DescribeReservedInstancesListingsOutput, error) { req, out := c.DescribeReservedInstancesListingsRequest(input) return out, req.Send() @@ -10738,7 +12345,7 @@ const opDescribeReservedInstancesModifications = "DescribeReservedInstancesModif // DescribeReservedInstancesModificationsRequest generates a "aws/request.Request" representing the // client's request for the DescribeReservedInstancesModifications operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -10759,7 +12366,7 @@ const opDescribeReservedInstancesModifications = "DescribeReservedInstancesModif // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeReservedInstancesModifications +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeReservedInstancesModifications func (c *EC2) DescribeReservedInstancesModificationsRequest(input *DescribeReservedInstancesModificationsInput) (req *request.Request, output *DescribeReservedInstancesModificationsOutput) { op := &request.Operation{ Name: opDescribeReservedInstancesModifications, @@ -10798,7 +12405,7 @@ func (c *EC2) DescribeReservedInstancesModificationsRequest(input *DescribeReser // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeReservedInstancesModifications for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeReservedInstancesModifications +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeReservedInstancesModifications func (c *EC2) DescribeReservedInstancesModifications(input *DescribeReservedInstancesModificationsInput) (*DescribeReservedInstancesModificationsOutput, error) { req, out := c.DescribeReservedInstancesModificationsRequest(input) return out, req.Send() @@ -10874,7 +12481,7 @@ const opDescribeReservedInstancesOfferings = "DescribeReservedInstancesOfferings // DescribeReservedInstancesOfferingsRequest generates a "aws/request.Request" representing the // client's request for the DescribeReservedInstancesOfferings operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -10895,7 +12502,7 @@ const opDescribeReservedInstancesOfferings = "DescribeReservedInstancesOfferings // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeReservedInstancesOfferings +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeReservedInstancesOfferings func (c *EC2) DescribeReservedInstancesOfferingsRequest(input *DescribeReservedInstancesOfferingsInput) (req *request.Request, output *DescribeReservedInstancesOfferingsOutput) { op := &request.Operation{ Name: opDescribeReservedInstancesOfferings, @@ -10939,7 +12546,7 @@ func (c *EC2) DescribeReservedInstancesOfferingsRequest(input *DescribeReservedI // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeReservedInstancesOfferings for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeReservedInstancesOfferings +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeReservedInstancesOfferings func (c *EC2) DescribeReservedInstancesOfferings(input *DescribeReservedInstancesOfferingsInput) (*DescribeReservedInstancesOfferingsOutput, error) { req, out := c.DescribeReservedInstancesOfferingsRequest(input) return out, req.Send() @@ -11015,7 +12622,7 @@ const opDescribeRouteTables = "DescribeRouteTables" // DescribeRouteTablesRequest generates a "aws/request.Request" representing the // client's request for the DescribeRouteTables operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -11036,7 +12643,7 @@ const opDescribeRouteTables = "DescribeRouteTables" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeRouteTables +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeRouteTables func (c *EC2) DescribeRouteTablesRequest(input *DescribeRouteTablesInput) (req *request.Request, output *DescribeRouteTablesOutput) { op := &request.Operation{ Name: opDescribeRouteTables, @@ -11071,7 +12678,7 @@ func (c *EC2) DescribeRouteTablesRequest(input *DescribeRouteTablesInput) (req * // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeRouteTables for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeRouteTables +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeRouteTables func (c *EC2) DescribeRouteTables(input *DescribeRouteTablesInput) (*DescribeRouteTablesOutput, error) { req, out := c.DescribeRouteTablesRequest(input) return out, req.Send() @@ -11097,7 +12704,7 @@ const opDescribeScheduledInstanceAvailability = "DescribeScheduledInstanceAvaila // DescribeScheduledInstanceAvailabilityRequest generates a "aws/request.Request" representing the // client's request for the DescribeScheduledInstanceAvailability operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -11118,7 +12725,7 @@ const opDescribeScheduledInstanceAvailability = "DescribeScheduledInstanceAvaila // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeScheduledInstanceAvailability +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeScheduledInstanceAvailability func (c *EC2) DescribeScheduledInstanceAvailabilityRequest(input *DescribeScheduledInstanceAvailabilityInput) (req *request.Request, output *DescribeScheduledInstanceAvailabilityOutput) { op := &request.Operation{ Name: opDescribeScheduledInstanceAvailability, @@ -11153,7 +12760,7 @@ func (c *EC2) DescribeScheduledInstanceAvailabilityRequest(input *DescribeSchedu // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeScheduledInstanceAvailability for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeScheduledInstanceAvailability +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeScheduledInstanceAvailability func (c *EC2) DescribeScheduledInstanceAvailability(input *DescribeScheduledInstanceAvailabilityInput) (*DescribeScheduledInstanceAvailabilityOutput, error) { req, out := c.DescribeScheduledInstanceAvailabilityRequest(input) return out, req.Send() @@ -11179,7 +12786,7 @@ const opDescribeScheduledInstances = "DescribeScheduledInstances" // DescribeScheduledInstancesRequest generates a "aws/request.Request" representing the // client's request for the DescribeScheduledInstances operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -11200,7 +12807,7 @@ const opDescribeScheduledInstances = "DescribeScheduledInstances" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeScheduledInstances +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeScheduledInstances func (c *EC2) DescribeScheduledInstancesRequest(input *DescribeScheduledInstancesInput) (req *request.Request, output *DescribeScheduledInstancesOutput) { op := &request.Operation{ Name: opDescribeScheduledInstances, @@ -11227,7 +12834,7 @@ func (c *EC2) DescribeScheduledInstancesRequest(input *DescribeScheduledInstance // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeScheduledInstances for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeScheduledInstances +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeScheduledInstances func (c *EC2) DescribeScheduledInstances(input *DescribeScheduledInstancesInput) (*DescribeScheduledInstancesOutput, error) { req, out := c.DescribeScheduledInstancesRequest(input) return out, req.Send() @@ -11253,7 +12860,7 @@ const opDescribeSecurityGroupReferences = "DescribeSecurityGroupReferences" // DescribeSecurityGroupReferencesRequest generates a "aws/request.Request" representing the // client's request for the DescribeSecurityGroupReferences operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -11274,7 +12881,7 @@ const opDescribeSecurityGroupReferences = "DescribeSecurityGroupReferences" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSecurityGroupReferences +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSecurityGroupReferences func (c *EC2) DescribeSecurityGroupReferencesRequest(input *DescribeSecurityGroupReferencesInput) (req *request.Request, output *DescribeSecurityGroupReferencesOutput) { op := &request.Operation{ Name: opDescribeSecurityGroupReferences, @@ -11302,7 +12909,7 @@ func (c *EC2) DescribeSecurityGroupReferencesRequest(input *DescribeSecurityGrou // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeSecurityGroupReferences for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSecurityGroupReferences +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSecurityGroupReferences func (c *EC2) DescribeSecurityGroupReferences(input *DescribeSecurityGroupReferencesInput) (*DescribeSecurityGroupReferencesOutput, error) { req, out := c.DescribeSecurityGroupReferencesRequest(input) return out, req.Send() @@ -11328,7 +12935,7 @@ const opDescribeSecurityGroups = "DescribeSecurityGroups" // DescribeSecurityGroupsRequest generates a "aws/request.Request" representing the // client's request for the DescribeSecurityGroups operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -11349,7 +12956,7 @@ const opDescribeSecurityGroups = "DescribeSecurityGroups" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSecurityGroups +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSecurityGroups func (c *EC2) DescribeSecurityGroupsRequest(input *DescribeSecurityGroupsInput) (req *request.Request, output *DescribeSecurityGroupsOutput) { op := &request.Operation{ Name: opDescribeSecurityGroups, @@ -11383,7 +12990,7 @@ func (c *EC2) DescribeSecurityGroupsRequest(input *DescribeSecurityGroupsInput) // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeSecurityGroups for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSecurityGroups +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSecurityGroups func (c *EC2) DescribeSecurityGroups(input *DescribeSecurityGroupsInput) (*DescribeSecurityGroupsOutput, error) { req, out := c.DescribeSecurityGroupsRequest(input) return out, req.Send() @@ -11409,7 +13016,7 @@ const opDescribeSnapshotAttribute = "DescribeSnapshotAttribute" // DescribeSnapshotAttributeRequest generates a "aws/request.Request" representing the // client's request for the DescribeSnapshotAttribute operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -11430,7 +13037,7 @@ const opDescribeSnapshotAttribute = "DescribeSnapshotAttribute" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSnapshotAttribute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSnapshotAttribute func (c *EC2) DescribeSnapshotAttributeRequest(input *DescribeSnapshotAttributeInput) (req *request.Request, output *DescribeSnapshotAttributeOutput) { op := &request.Operation{ Name: opDescribeSnapshotAttribute, @@ -11461,7 +13068,7 @@ func (c *EC2) DescribeSnapshotAttributeRequest(input *DescribeSnapshotAttributeI // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeSnapshotAttribute for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSnapshotAttribute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSnapshotAttribute func (c *EC2) DescribeSnapshotAttribute(input *DescribeSnapshotAttributeInput) (*DescribeSnapshotAttributeOutput, error) { req, out := c.DescribeSnapshotAttributeRequest(input) return out, req.Send() @@ -11487,7 +13094,7 @@ const opDescribeSnapshots = "DescribeSnapshots" // DescribeSnapshotsRequest generates a "aws/request.Request" representing the // client's request for the DescribeSnapshots operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -11508,7 +13115,7 @@ const opDescribeSnapshots = "DescribeSnapshots" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSnapshots +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSnapshots func (c *EC2) DescribeSnapshotsRequest(input *DescribeSnapshotsInput) (req *request.Request, output *DescribeSnapshotsOutput) { op := &request.Operation{ Name: opDescribeSnapshots, @@ -11586,7 +13193,7 @@ func (c *EC2) DescribeSnapshotsRequest(input *DescribeSnapshotsInput) (req *requ // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeSnapshots for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSnapshots +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSnapshots func (c *EC2) DescribeSnapshots(input *DescribeSnapshotsInput) (*DescribeSnapshotsOutput, error) { req, out := c.DescribeSnapshotsRequest(input) return out, req.Send() @@ -11662,7 +13269,7 @@ const opDescribeSpotDatafeedSubscription = "DescribeSpotDatafeedSubscription" // DescribeSpotDatafeedSubscriptionRequest generates a "aws/request.Request" representing the // client's request for the DescribeSpotDatafeedSubscription operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -11683,7 +13290,7 @@ const opDescribeSpotDatafeedSubscription = "DescribeSpotDatafeedSubscription" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotDatafeedSubscription +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotDatafeedSubscription func (c *EC2) DescribeSpotDatafeedSubscriptionRequest(input *DescribeSpotDatafeedSubscriptionInput) (req *request.Request, output *DescribeSpotDatafeedSubscriptionOutput) { op := &request.Operation{ Name: opDescribeSpotDatafeedSubscription, @@ -11702,9 +13309,9 @@ func (c *EC2) DescribeSpotDatafeedSubscriptionRequest(input *DescribeSpotDatafee // DescribeSpotDatafeedSubscription API operation for Amazon Elastic Compute Cloud. // -// Describes the data feed for Spot instances. For more information, see Spot +// Describes the data feed for Spot Instances. For more information, see Spot // Instance Data Feed (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-data-feeds.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide for Linux Instances. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -11712,7 +13319,7 @@ func (c *EC2) DescribeSpotDatafeedSubscriptionRequest(input *DescribeSpotDatafee // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeSpotDatafeedSubscription for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotDatafeedSubscription +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotDatafeedSubscription func (c *EC2) DescribeSpotDatafeedSubscription(input *DescribeSpotDatafeedSubscriptionInput) (*DescribeSpotDatafeedSubscriptionOutput, error) { req, out := c.DescribeSpotDatafeedSubscriptionRequest(input) return out, req.Send() @@ -11738,7 +13345,7 @@ const opDescribeSpotFleetInstances = "DescribeSpotFleetInstances" // DescribeSpotFleetInstancesRequest generates a "aws/request.Request" representing the // client's request for the DescribeSpotFleetInstances operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -11759,7 +13366,7 @@ const opDescribeSpotFleetInstances = "DescribeSpotFleetInstances" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotFleetInstances +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotFleetInstances func (c *EC2) DescribeSpotFleetInstancesRequest(input *DescribeSpotFleetInstancesInput) (req *request.Request, output *DescribeSpotFleetInstancesOutput) { op := &request.Operation{ Name: opDescribeSpotFleetInstances, @@ -11778,7 +13385,7 @@ func (c *EC2) DescribeSpotFleetInstancesRequest(input *DescribeSpotFleetInstance // DescribeSpotFleetInstances API operation for Amazon Elastic Compute Cloud. // -// Describes the running instances for the specified Spot fleet. +// Describes the running instances for the specified Spot Fleet. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -11786,7 +13393,7 @@ func (c *EC2) DescribeSpotFleetInstancesRequest(input *DescribeSpotFleetInstance // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeSpotFleetInstances for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotFleetInstances +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotFleetInstances func (c *EC2) DescribeSpotFleetInstances(input *DescribeSpotFleetInstancesInput) (*DescribeSpotFleetInstancesOutput, error) { req, out := c.DescribeSpotFleetInstancesRequest(input) return out, req.Send() @@ -11812,7 +13419,7 @@ const opDescribeSpotFleetRequestHistory = "DescribeSpotFleetRequestHistory" // DescribeSpotFleetRequestHistoryRequest generates a "aws/request.Request" representing the // client's request for the DescribeSpotFleetRequestHistory operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -11833,7 +13440,7 @@ const opDescribeSpotFleetRequestHistory = "DescribeSpotFleetRequestHistory" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotFleetRequestHistory +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotFleetRequestHistory func (c *EC2) DescribeSpotFleetRequestHistoryRequest(input *DescribeSpotFleetRequestHistoryInput) (req *request.Request, output *DescribeSpotFleetRequestHistoryOutput) { op := &request.Operation{ Name: opDescribeSpotFleetRequestHistory, @@ -11852,10 +13459,10 @@ func (c *EC2) DescribeSpotFleetRequestHistoryRequest(input *DescribeSpotFleetReq // DescribeSpotFleetRequestHistory API operation for Amazon Elastic Compute Cloud. // -// Describes the events for the specified Spot fleet request during the specified +// Describes the events for the specified Spot Fleet request during the specified // time. // -// Spot fleet events are delayed by up to 30 seconds before they can be described. +// Spot Fleet events are delayed by up to 30 seconds before they can be described. // This ensures that you can query by the last evaluated time and not miss a // recorded event. // @@ -11865,7 +13472,7 @@ func (c *EC2) DescribeSpotFleetRequestHistoryRequest(input *DescribeSpotFleetReq // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeSpotFleetRequestHistory for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotFleetRequestHistory +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotFleetRequestHistory func (c *EC2) DescribeSpotFleetRequestHistory(input *DescribeSpotFleetRequestHistoryInput) (*DescribeSpotFleetRequestHistoryOutput, error) { req, out := c.DescribeSpotFleetRequestHistoryRequest(input) return out, req.Send() @@ -11891,7 +13498,7 @@ const opDescribeSpotFleetRequests = "DescribeSpotFleetRequests" // DescribeSpotFleetRequestsRequest generates a "aws/request.Request" representing the // client's request for the DescribeSpotFleetRequests operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -11912,7 +13519,7 @@ const opDescribeSpotFleetRequests = "DescribeSpotFleetRequests" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotFleetRequests +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotFleetRequests func (c *EC2) DescribeSpotFleetRequestsRequest(input *DescribeSpotFleetRequestsInput) (req *request.Request, output *DescribeSpotFleetRequestsOutput) { op := &request.Operation{ Name: opDescribeSpotFleetRequests, @@ -11937,9 +13544,9 @@ func (c *EC2) DescribeSpotFleetRequestsRequest(input *DescribeSpotFleetRequestsI // DescribeSpotFleetRequests API operation for Amazon Elastic Compute Cloud. // -// Describes your Spot fleet requests. +// Describes your Spot Fleet requests. // -// Spot fleet requests are deleted 48 hours after they are canceled and their +// Spot Fleet requests are deleted 48 hours after they are canceled and their // instances are terminated. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -11948,7 +13555,7 @@ func (c *EC2) DescribeSpotFleetRequestsRequest(input *DescribeSpotFleetRequestsI // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeSpotFleetRequests for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotFleetRequests +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotFleetRequests func (c *EC2) DescribeSpotFleetRequests(input *DescribeSpotFleetRequestsInput) (*DescribeSpotFleetRequestsOutput, error) { req, out := c.DescribeSpotFleetRequestsRequest(input) return out, req.Send() @@ -12024,7 +13631,7 @@ const opDescribeSpotInstanceRequests = "DescribeSpotInstanceRequests" // DescribeSpotInstanceRequestsRequest generates a "aws/request.Request" representing the // client's request for the DescribeSpotInstanceRequests operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -12045,7 +13652,7 @@ const opDescribeSpotInstanceRequests = "DescribeSpotInstanceRequests" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotInstanceRequests +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotInstanceRequests func (c *EC2) DescribeSpotInstanceRequestsRequest(input *DescribeSpotInstanceRequestsInput) (req *request.Request, output *DescribeSpotInstanceRequestsOutput) { op := &request.Operation{ Name: opDescribeSpotInstanceRequests, @@ -12064,21 +13671,16 @@ func (c *EC2) DescribeSpotInstanceRequestsRequest(input *DescribeSpotInstanceReq // DescribeSpotInstanceRequests API operation for Amazon Elastic Compute Cloud. // -// Describes the Spot instance requests that belong to your account. Spot instances -// are instances that Amazon EC2 launches when the bid price that you specify -// exceeds the current Spot price. Amazon EC2 periodically sets the Spot price -// based on available Spot instance capacity and current Spot instance requests. -// For more information, see Spot Instance Requests (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-requests.html) -// in the Amazon Elastic Compute Cloud User Guide. +// Describes the specified Spot Instance requests. // -// You can use DescribeSpotInstanceRequests to find a running Spot instance -// by examining the response. If the status of the Spot instance is fulfilled, +// You can use DescribeSpotInstanceRequests to find a running Spot Instance +// by examining the response. If the status of the Spot Instance is fulfilled, // the instance ID appears in the response and contains the identifier of the // instance. Alternatively, you can use DescribeInstances with a filter to look // for instances where the instance lifecycle is spot. // -// Spot instance requests are deleted 4 hours after they are canceled and their -// instances are terminated. +// Spot Instance requests are deleted four hours after they are canceled and +// their instances are terminated. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -12086,7 +13688,7 @@ func (c *EC2) DescribeSpotInstanceRequestsRequest(input *DescribeSpotInstanceReq // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeSpotInstanceRequests for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotInstanceRequests +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotInstanceRequests func (c *EC2) DescribeSpotInstanceRequests(input *DescribeSpotInstanceRequestsInput) (*DescribeSpotInstanceRequestsOutput, error) { req, out := c.DescribeSpotInstanceRequestsRequest(input) return out, req.Send() @@ -12112,7 +13714,7 @@ const opDescribeSpotPriceHistory = "DescribeSpotPriceHistory" // DescribeSpotPriceHistoryRequest generates a "aws/request.Request" representing the // client's request for the DescribeSpotPriceHistory operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -12133,7 +13735,7 @@ const opDescribeSpotPriceHistory = "DescribeSpotPriceHistory" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotPriceHistory +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotPriceHistory func (c *EC2) DescribeSpotPriceHistoryRequest(input *DescribeSpotPriceHistoryInput) (req *request.Request, output *DescribeSpotPriceHistoryOutput) { op := &request.Operation{ Name: opDescribeSpotPriceHistory, @@ -12160,7 +13762,7 @@ func (c *EC2) DescribeSpotPriceHistoryRequest(input *DescribeSpotPriceHistoryInp // // Describes the Spot price history. For more information, see Spot Instance // Pricing History (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-instances-history.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide for Linux Instances. // // When you specify a start and end time, this operation returns the prices // of the instance types within the time range that you specified and the time @@ -12173,7 +13775,7 @@ func (c *EC2) DescribeSpotPriceHistoryRequest(input *DescribeSpotPriceHistoryInp // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeSpotPriceHistory for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotPriceHistory +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotPriceHistory func (c *EC2) DescribeSpotPriceHistory(input *DescribeSpotPriceHistoryInput) (*DescribeSpotPriceHistoryOutput, error) { req, out := c.DescribeSpotPriceHistoryRequest(input) return out, req.Send() @@ -12249,7 +13851,7 @@ const opDescribeStaleSecurityGroups = "DescribeStaleSecurityGroups" // DescribeStaleSecurityGroupsRequest generates a "aws/request.Request" representing the // client's request for the DescribeStaleSecurityGroups operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -12270,7 +13872,7 @@ const opDescribeStaleSecurityGroups = "DescribeStaleSecurityGroups" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeStaleSecurityGroups +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeStaleSecurityGroups func (c *EC2) DescribeStaleSecurityGroupsRequest(input *DescribeStaleSecurityGroupsInput) (req *request.Request, output *DescribeStaleSecurityGroupsOutput) { op := &request.Operation{ Name: opDescribeStaleSecurityGroups, @@ -12300,7 +13902,7 @@ func (c *EC2) DescribeStaleSecurityGroupsRequest(input *DescribeStaleSecurityGro // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeStaleSecurityGroups for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeStaleSecurityGroups +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeStaleSecurityGroups func (c *EC2) DescribeStaleSecurityGroups(input *DescribeStaleSecurityGroupsInput) (*DescribeStaleSecurityGroupsOutput, error) { req, out := c.DescribeStaleSecurityGroupsRequest(input) return out, req.Send() @@ -12326,7 +13928,7 @@ const opDescribeSubnets = "DescribeSubnets" // DescribeSubnetsRequest generates a "aws/request.Request" representing the // client's request for the DescribeSubnets operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -12347,7 +13949,7 @@ const opDescribeSubnets = "DescribeSubnets" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSubnets +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSubnets func (c *EC2) DescribeSubnetsRequest(input *DescribeSubnetsInput) (req *request.Request, output *DescribeSubnetsOutput) { op := &request.Operation{ Name: opDescribeSubnets, @@ -12377,7 +13979,7 @@ func (c *EC2) DescribeSubnetsRequest(input *DescribeSubnetsInput) (req *request. // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeSubnets for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSubnets +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSubnets func (c *EC2) DescribeSubnets(input *DescribeSubnetsInput) (*DescribeSubnetsOutput, error) { req, out := c.DescribeSubnetsRequest(input) return out, req.Send() @@ -12403,7 +14005,7 @@ const opDescribeTags = "DescribeTags" // DescribeTagsRequest generates a "aws/request.Request" representing the // client's request for the DescribeTags operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -12424,7 +14026,7 @@ const opDescribeTags = "DescribeTags" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeTags +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeTags func (c *EC2) DescribeTagsRequest(input *DescribeTagsInput) (req *request.Request, output *DescribeTagsOutput) { op := &request.Operation{ Name: opDescribeTags, @@ -12460,7 +14062,7 @@ func (c *EC2) DescribeTagsRequest(input *DescribeTagsInput) (req *request.Reques // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeTags for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeTags +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeTags func (c *EC2) DescribeTags(input *DescribeTagsInput) (*DescribeTagsOutput, error) { req, out := c.DescribeTagsRequest(input) return out, req.Send() @@ -12536,7 +14138,7 @@ const opDescribeVolumeAttribute = "DescribeVolumeAttribute" // DescribeVolumeAttributeRequest generates a "aws/request.Request" representing the // client's request for the DescribeVolumeAttribute operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -12557,7 +14159,7 @@ const opDescribeVolumeAttribute = "DescribeVolumeAttribute" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVolumeAttribute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVolumeAttribute func (c *EC2) DescribeVolumeAttributeRequest(input *DescribeVolumeAttributeInput) (req *request.Request, output *DescribeVolumeAttributeOutput) { op := &request.Operation{ Name: opDescribeVolumeAttribute, @@ -12588,7 +14190,7 @@ func (c *EC2) DescribeVolumeAttributeRequest(input *DescribeVolumeAttributeInput // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeVolumeAttribute for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVolumeAttribute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVolumeAttribute func (c *EC2) DescribeVolumeAttribute(input *DescribeVolumeAttributeInput) (*DescribeVolumeAttributeOutput, error) { req, out := c.DescribeVolumeAttributeRequest(input) return out, req.Send() @@ -12614,7 +14216,7 @@ const opDescribeVolumeStatus = "DescribeVolumeStatus" // DescribeVolumeStatusRequest generates a "aws/request.Request" representing the // client's request for the DescribeVolumeStatus operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -12635,7 +14237,7 @@ const opDescribeVolumeStatus = "DescribeVolumeStatus" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVolumeStatus +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVolumeStatus func (c *EC2) DescribeVolumeStatusRequest(input *DescribeVolumeStatusInput) (req *request.Request, output *DescribeVolumeStatusOutput) { op := &request.Operation{ Name: opDescribeVolumeStatus, @@ -12702,7 +14304,7 @@ func (c *EC2) DescribeVolumeStatusRequest(input *DescribeVolumeStatusInput) (req // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeVolumeStatus for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVolumeStatus +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVolumeStatus func (c *EC2) DescribeVolumeStatus(input *DescribeVolumeStatusInput) (*DescribeVolumeStatusOutput, error) { req, out := c.DescribeVolumeStatusRequest(input) return out, req.Send() @@ -12778,7 +14380,7 @@ const opDescribeVolumes = "DescribeVolumes" // DescribeVolumesRequest generates a "aws/request.Request" representing the // client's request for the DescribeVolumes operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -12799,7 +14401,7 @@ const opDescribeVolumes = "DescribeVolumes" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVolumes +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVolumes func (c *EC2) DescribeVolumesRequest(input *DescribeVolumesInput) (req *request.Request, output *DescribeVolumesOutput) { op := &request.Operation{ Name: opDescribeVolumes, @@ -12842,7 +14444,7 @@ func (c *EC2) DescribeVolumesRequest(input *DescribeVolumesInput) (req *request. // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeVolumes for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVolumes +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVolumes func (c *EC2) DescribeVolumes(input *DescribeVolumesInput) (*DescribeVolumesOutput, error) { req, out := c.DescribeVolumesRequest(input) return out, req.Send() @@ -12918,7 +14520,7 @@ const opDescribeVolumesModifications = "DescribeVolumesModifications" // DescribeVolumesModificationsRequest generates a "aws/request.Request" representing the // client's request for the DescribeVolumesModifications operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -12939,7 +14541,7 @@ const opDescribeVolumesModifications = "DescribeVolumesModifications" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVolumesModifications +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVolumesModifications func (c *EC2) DescribeVolumesModificationsRequest(input *DescribeVolumesModificationsInput) (req *request.Request, output *DescribeVolumesModificationsOutput) { op := &request.Operation{ Name: opDescribeVolumesModifications, @@ -12978,7 +14580,7 @@ func (c *EC2) DescribeVolumesModificationsRequest(input *DescribeVolumesModifica // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeVolumesModifications for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVolumesModifications +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVolumesModifications func (c *EC2) DescribeVolumesModifications(input *DescribeVolumesModificationsInput) (*DescribeVolumesModificationsOutput, error) { req, out := c.DescribeVolumesModificationsRequest(input) return out, req.Send() @@ -13004,7 +14606,7 @@ const opDescribeVpcAttribute = "DescribeVpcAttribute" // DescribeVpcAttributeRequest generates a "aws/request.Request" representing the // client's request for the DescribeVpcAttribute operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -13025,7 +14627,7 @@ const opDescribeVpcAttribute = "DescribeVpcAttribute" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcAttribute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcAttribute func (c *EC2) DescribeVpcAttributeRequest(input *DescribeVpcAttributeInput) (req *request.Request, output *DescribeVpcAttributeOutput) { op := &request.Operation{ Name: opDescribeVpcAttribute, @@ -13053,7 +14655,7 @@ func (c *EC2) DescribeVpcAttributeRequest(input *DescribeVpcAttributeInput) (req // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeVpcAttribute for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcAttribute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcAttribute func (c *EC2) DescribeVpcAttribute(input *DescribeVpcAttributeInput) (*DescribeVpcAttributeOutput, error) { req, out := c.DescribeVpcAttributeRequest(input) return out, req.Send() @@ -13079,7 +14681,7 @@ const opDescribeVpcClassicLink = "DescribeVpcClassicLink" // DescribeVpcClassicLinkRequest generates a "aws/request.Request" representing the // client's request for the DescribeVpcClassicLink operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -13100,7 +14702,7 @@ const opDescribeVpcClassicLink = "DescribeVpcClassicLink" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcClassicLink +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcClassicLink func (c *EC2) DescribeVpcClassicLinkRequest(input *DescribeVpcClassicLinkInput) (req *request.Request, output *DescribeVpcClassicLinkOutput) { op := &request.Operation{ Name: opDescribeVpcClassicLink, @@ -13127,7 +14729,7 @@ func (c *EC2) DescribeVpcClassicLinkRequest(input *DescribeVpcClassicLinkInput) // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeVpcClassicLink for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcClassicLink +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcClassicLink func (c *EC2) DescribeVpcClassicLink(input *DescribeVpcClassicLinkInput) (*DescribeVpcClassicLinkOutput, error) { req, out := c.DescribeVpcClassicLinkRequest(input) return out, req.Send() @@ -13153,7 +14755,7 @@ const opDescribeVpcClassicLinkDnsSupport = "DescribeVpcClassicLinkDnsSupport" // DescribeVpcClassicLinkDnsSupportRequest generates a "aws/request.Request" representing the // client's request for the DescribeVpcClassicLinkDnsSupport operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -13174,7 +14776,7 @@ const opDescribeVpcClassicLinkDnsSupport = "DescribeVpcClassicLinkDnsSupport" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcClassicLinkDnsSupport +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcClassicLinkDnsSupport func (c *EC2) DescribeVpcClassicLinkDnsSupportRequest(input *DescribeVpcClassicLinkDnsSupportInput) (req *request.Request, output *DescribeVpcClassicLinkDnsSupportOutput) { op := &request.Operation{ Name: opDescribeVpcClassicLinkDnsSupport, @@ -13207,7 +14809,7 @@ func (c *EC2) DescribeVpcClassicLinkDnsSupportRequest(input *DescribeVpcClassicL // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeVpcClassicLinkDnsSupport for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcClassicLinkDnsSupport +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcClassicLinkDnsSupport func (c *EC2) DescribeVpcClassicLinkDnsSupport(input *DescribeVpcClassicLinkDnsSupportInput) (*DescribeVpcClassicLinkDnsSupportOutput, error) { req, out := c.DescribeVpcClassicLinkDnsSupportRequest(input) return out, req.Send() @@ -13229,11 +14831,310 @@ func (c *EC2) DescribeVpcClassicLinkDnsSupportWithContext(ctx aws.Context, input return out, req.Send() } +const opDescribeVpcEndpointConnectionNotifications = "DescribeVpcEndpointConnectionNotifications" + +// DescribeVpcEndpointConnectionNotificationsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeVpcEndpointConnectionNotifications operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeVpcEndpointConnectionNotifications for more information on using the DescribeVpcEndpointConnectionNotifications +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeVpcEndpointConnectionNotificationsRequest method. +// req, resp := client.DescribeVpcEndpointConnectionNotificationsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcEndpointConnectionNotifications +func (c *EC2) DescribeVpcEndpointConnectionNotificationsRequest(input *DescribeVpcEndpointConnectionNotificationsInput) (req *request.Request, output *DescribeVpcEndpointConnectionNotificationsOutput) { + op := &request.Operation{ + Name: opDescribeVpcEndpointConnectionNotifications, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeVpcEndpointConnectionNotificationsInput{} + } + + output = &DescribeVpcEndpointConnectionNotificationsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeVpcEndpointConnectionNotifications API operation for Amazon Elastic Compute Cloud. +// +// Describes the connection notifications for VPC endpoints and VPC endpoint +// services. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeVpcEndpointConnectionNotifications for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcEndpointConnectionNotifications +func (c *EC2) DescribeVpcEndpointConnectionNotifications(input *DescribeVpcEndpointConnectionNotificationsInput) (*DescribeVpcEndpointConnectionNotificationsOutput, error) { + req, out := c.DescribeVpcEndpointConnectionNotificationsRequest(input) + return out, req.Send() +} + +// DescribeVpcEndpointConnectionNotificationsWithContext is the same as DescribeVpcEndpointConnectionNotifications with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeVpcEndpointConnectionNotifications for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeVpcEndpointConnectionNotificationsWithContext(ctx aws.Context, input *DescribeVpcEndpointConnectionNotificationsInput, opts ...request.Option) (*DescribeVpcEndpointConnectionNotificationsOutput, error) { + req, out := c.DescribeVpcEndpointConnectionNotificationsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeVpcEndpointConnections = "DescribeVpcEndpointConnections" + +// DescribeVpcEndpointConnectionsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeVpcEndpointConnections operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeVpcEndpointConnections for more information on using the DescribeVpcEndpointConnections +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeVpcEndpointConnectionsRequest method. +// req, resp := client.DescribeVpcEndpointConnectionsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcEndpointConnections +func (c *EC2) DescribeVpcEndpointConnectionsRequest(input *DescribeVpcEndpointConnectionsInput) (req *request.Request, output *DescribeVpcEndpointConnectionsOutput) { + op := &request.Operation{ + Name: opDescribeVpcEndpointConnections, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeVpcEndpointConnectionsInput{} + } + + output = &DescribeVpcEndpointConnectionsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeVpcEndpointConnections API operation for Amazon Elastic Compute Cloud. +// +// Describes the VPC endpoint connections to your VPC endpoint services, including +// any endpoints that are pending your acceptance. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeVpcEndpointConnections for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcEndpointConnections +func (c *EC2) DescribeVpcEndpointConnections(input *DescribeVpcEndpointConnectionsInput) (*DescribeVpcEndpointConnectionsOutput, error) { + req, out := c.DescribeVpcEndpointConnectionsRequest(input) + return out, req.Send() +} + +// DescribeVpcEndpointConnectionsWithContext is the same as DescribeVpcEndpointConnections with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeVpcEndpointConnections for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeVpcEndpointConnectionsWithContext(ctx aws.Context, input *DescribeVpcEndpointConnectionsInput, opts ...request.Option) (*DescribeVpcEndpointConnectionsOutput, error) { + req, out := c.DescribeVpcEndpointConnectionsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeVpcEndpointServiceConfigurations = "DescribeVpcEndpointServiceConfigurations" + +// DescribeVpcEndpointServiceConfigurationsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeVpcEndpointServiceConfigurations operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeVpcEndpointServiceConfigurations for more information on using the DescribeVpcEndpointServiceConfigurations +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeVpcEndpointServiceConfigurationsRequest method. +// req, resp := client.DescribeVpcEndpointServiceConfigurationsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcEndpointServiceConfigurations +func (c *EC2) DescribeVpcEndpointServiceConfigurationsRequest(input *DescribeVpcEndpointServiceConfigurationsInput) (req *request.Request, output *DescribeVpcEndpointServiceConfigurationsOutput) { + op := &request.Operation{ + Name: opDescribeVpcEndpointServiceConfigurations, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeVpcEndpointServiceConfigurationsInput{} + } + + output = &DescribeVpcEndpointServiceConfigurationsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeVpcEndpointServiceConfigurations API operation for Amazon Elastic Compute Cloud. +// +// Describes the VPC endpoint service configurations in your account (your services). +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeVpcEndpointServiceConfigurations for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcEndpointServiceConfigurations +func (c *EC2) DescribeVpcEndpointServiceConfigurations(input *DescribeVpcEndpointServiceConfigurationsInput) (*DescribeVpcEndpointServiceConfigurationsOutput, error) { + req, out := c.DescribeVpcEndpointServiceConfigurationsRequest(input) + return out, req.Send() +} + +// DescribeVpcEndpointServiceConfigurationsWithContext is the same as DescribeVpcEndpointServiceConfigurations with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeVpcEndpointServiceConfigurations for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeVpcEndpointServiceConfigurationsWithContext(ctx aws.Context, input *DescribeVpcEndpointServiceConfigurationsInput, opts ...request.Option) (*DescribeVpcEndpointServiceConfigurationsOutput, error) { + req, out := c.DescribeVpcEndpointServiceConfigurationsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeVpcEndpointServicePermissions = "DescribeVpcEndpointServicePermissions" + +// DescribeVpcEndpointServicePermissionsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeVpcEndpointServicePermissions operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeVpcEndpointServicePermissions for more information on using the DescribeVpcEndpointServicePermissions +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeVpcEndpointServicePermissionsRequest method. +// req, resp := client.DescribeVpcEndpointServicePermissionsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcEndpointServicePermissions +func (c *EC2) DescribeVpcEndpointServicePermissionsRequest(input *DescribeVpcEndpointServicePermissionsInput) (req *request.Request, output *DescribeVpcEndpointServicePermissionsOutput) { + op := &request.Operation{ + Name: opDescribeVpcEndpointServicePermissions, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeVpcEndpointServicePermissionsInput{} + } + + output = &DescribeVpcEndpointServicePermissionsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeVpcEndpointServicePermissions API operation for Amazon Elastic Compute Cloud. +// +// Describes the principals (service consumers) that are permitted to discover +// your VPC endpoint service. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeVpcEndpointServicePermissions for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcEndpointServicePermissions +func (c *EC2) DescribeVpcEndpointServicePermissions(input *DescribeVpcEndpointServicePermissionsInput) (*DescribeVpcEndpointServicePermissionsOutput, error) { + req, out := c.DescribeVpcEndpointServicePermissionsRequest(input) + return out, req.Send() +} + +// DescribeVpcEndpointServicePermissionsWithContext is the same as DescribeVpcEndpointServicePermissions with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeVpcEndpointServicePermissions for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeVpcEndpointServicePermissionsWithContext(ctx aws.Context, input *DescribeVpcEndpointServicePermissionsInput, opts ...request.Option) (*DescribeVpcEndpointServicePermissionsOutput, error) { + req, out := c.DescribeVpcEndpointServicePermissionsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opDescribeVpcEndpointServices = "DescribeVpcEndpointServices" // DescribeVpcEndpointServicesRequest generates a "aws/request.Request" representing the // client's request for the DescribeVpcEndpointServices operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -13254,7 +15155,7 @@ const opDescribeVpcEndpointServices = "DescribeVpcEndpointServices" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcEndpointServices +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcEndpointServices func (c *EC2) DescribeVpcEndpointServicesRequest(input *DescribeVpcEndpointServicesInput) (req *request.Request, output *DescribeVpcEndpointServicesOutput) { op := &request.Operation{ Name: opDescribeVpcEndpointServices, @@ -13273,8 +15174,7 @@ func (c *EC2) DescribeVpcEndpointServicesRequest(input *DescribeVpcEndpointServi // DescribeVpcEndpointServices API operation for Amazon Elastic Compute Cloud. // -// Describes all supported AWS services that can be specified when creating -// a VPC endpoint. +// Describes available services to which you can create a VPC endpoint. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -13282,7 +15182,7 @@ func (c *EC2) DescribeVpcEndpointServicesRequest(input *DescribeVpcEndpointServi // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeVpcEndpointServices for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcEndpointServices +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcEndpointServices func (c *EC2) DescribeVpcEndpointServices(input *DescribeVpcEndpointServicesInput) (*DescribeVpcEndpointServicesOutput, error) { req, out := c.DescribeVpcEndpointServicesRequest(input) return out, req.Send() @@ -13308,7 +15208,7 @@ const opDescribeVpcEndpoints = "DescribeVpcEndpoints" // DescribeVpcEndpointsRequest generates a "aws/request.Request" representing the // client's request for the DescribeVpcEndpoints operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -13329,7 +15229,7 @@ const opDescribeVpcEndpoints = "DescribeVpcEndpoints" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcEndpoints +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcEndpoints func (c *EC2) DescribeVpcEndpointsRequest(input *DescribeVpcEndpointsInput) (req *request.Request, output *DescribeVpcEndpointsOutput) { op := &request.Operation{ Name: opDescribeVpcEndpoints, @@ -13356,7 +15256,7 @@ func (c *EC2) DescribeVpcEndpointsRequest(input *DescribeVpcEndpointsInput) (req // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeVpcEndpoints for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcEndpoints +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcEndpoints func (c *EC2) DescribeVpcEndpoints(input *DescribeVpcEndpointsInput) (*DescribeVpcEndpointsOutput, error) { req, out := c.DescribeVpcEndpointsRequest(input) return out, req.Send() @@ -13382,7 +15282,7 @@ const opDescribeVpcPeeringConnections = "DescribeVpcPeeringConnections" // DescribeVpcPeeringConnectionsRequest generates a "aws/request.Request" representing the // client's request for the DescribeVpcPeeringConnections operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -13403,7 +15303,7 @@ const opDescribeVpcPeeringConnections = "DescribeVpcPeeringConnections" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcPeeringConnections +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcPeeringConnections func (c *EC2) DescribeVpcPeeringConnectionsRequest(input *DescribeVpcPeeringConnectionsInput) (req *request.Request, output *DescribeVpcPeeringConnectionsOutput) { op := &request.Operation{ Name: opDescribeVpcPeeringConnections, @@ -13430,7 +15330,7 @@ func (c *EC2) DescribeVpcPeeringConnectionsRequest(input *DescribeVpcPeeringConn // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeVpcPeeringConnections for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcPeeringConnections +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcPeeringConnections func (c *EC2) DescribeVpcPeeringConnections(input *DescribeVpcPeeringConnectionsInput) (*DescribeVpcPeeringConnectionsOutput, error) { req, out := c.DescribeVpcPeeringConnectionsRequest(input) return out, req.Send() @@ -13456,7 +15356,7 @@ const opDescribeVpcs = "DescribeVpcs" // DescribeVpcsRequest generates a "aws/request.Request" representing the // client's request for the DescribeVpcs operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -13477,7 +15377,7 @@ const opDescribeVpcs = "DescribeVpcs" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcs +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcs func (c *EC2) DescribeVpcsRequest(input *DescribeVpcsInput) (req *request.Request, output *DescribeVpcsOutput) { op := &request.Operation{ Name: opDescribeVpcs, @@ -13504,7 +15404,7 @@ func (c *EC2) DescribeVpcsRequest(input *DescribeVpcsInput) (req *request.Reques // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeVpcs for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcs +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcs func (c *EC2) DescribeVpcs(input *DescribeVpcsInput) (*DescribeVpcsOutput, error) { req, out := c.DescribeVpcsRequest(input) return out, req.Send() @@ -13530,7 +15430,7 @@ const opDescribeVpnConnections = "DescribeVpnConnections" // DescribeVpnConnectionsRequest generates a "aws/request.Request" representing the // client's request for the DescribeVpnConnections operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -13551,7 +15451,7 @@ const opDescribeVpnConnections = "DescribeVpnConnections" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpnConnections +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpnConnections func (c *EC2) DescribeVpnConnectionsRequest(input *DescribeVpnConnectionsInput) (req *request.Request, output *DescribeVpnConnectionsOutput) { op := &request.Operation{ Name: opDescribeVpnConnections, @@ -13572,9 +15472,9 @@ func (c *EC2) DescribeVpnConnectionsRequest(input *DescribeVpnConnectionsInput) // // Describes one or more of your VPN connections. // -// For more information about VPN connections, see Adding a Hardware Virtual -// Private Gateway to Your VPC (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html) -// in the Amazon Virtual Private Cloud User Guide. +// For more information about VPN connections, see AWS Managed VPN Connections +// (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html) in the +// Amazon Virtual Private Cloud User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -13582,7 +15482,7 @@ func (c *EC2) DescribeVpnConnectionsRequest(input *DescribeVpnConnectionsInput) // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeVpnConnections for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpnConnections +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpnConnections func (c *EC2) DescribeVpnConnections(input *DescribeVpnConnectionsInput) (*DescribeVpnConnectionsOutput, error) { req, out := c.DescribeVpnConnectionsRequest(input) return out, req.Send() @@ -13608,7 +15508,7 @@ const opDescribeVpnGateways = "DescribeVpnGateways" // DescribeVpnGatewaysRequest generates a "aws/request.Request" representing the // client's request for the DescribeVpnGateways operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -13629,7 +15529,7 @@ const opDescribeVpnGateways = "DescribeVpnGateways" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpnGateways +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpnGateways func (c *EC2) DescribeVpnGatewaysRequest(input *DescribeVpnGatewaysInput) (req *request.Request, output *DescribeVpnGatewaysOutput) { op := &request.Operation{ Name: opDescribeVpnGateways, @@ -13650,8 +15550,8 @@ func (c *EC2) DescribeVpnGatewaysRequest(input *DescribeVpnGatewaysInput) (req * // // Describes one or more of your virtual private gateways. // -// For more information about virtual private gateways, see Adding an IPsec -// Hardware VPN to Your VPC (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html) +// For more information about virtual private gateways, see AWS Managed VPN +// Connections (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html) // in the Amazon Virtual Private Cloud User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -13660,7 +15560,7 @@ func (c *EC2) DescribeVpnGatewaysRequest(input *DescribeVpnGatewaysInput) (req * // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DescribeVpnGateways for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpnGateways +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpnGateways func (c *EC2) DescribeVpnGateways(input *DescribeVpnGatewaysInput) (*DescribeVpnGatewaysOutput, error) { req, out := c.DescribeVpnGatewaysRequest(input) return out, req.Send() @@ -13686,7 +15586,7 @@ const opDetachClassicLinkVpc = "DetachClassicLinkVpc" // DetachClassicLinkVpcRequest generates a "aws/request.Request" representing the // client's request for the DetachClassicLinkVpc operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -13707,7 +15607,7 @@ const opDetachClassicLinkVpc = "DetachClassicLinkVpc" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DetachClassicLinkVpc +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DetachClassicLinkVpc func (c *EC2) DetachClassicLinkVpcRequest(input *DetachClassicLinkVpcInput) (req *request.Request, output *DetachClassicLinkVpcOutput) { op := &request.Operation{ Name: opDetachClassicLinkVpc, @@ -13736,7 +15636,7 @@ func (c *EC2) DetachClassicLinkVpcRequest(input *DetachClassicLinkVpcInput) (req // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DetachClassicLinkVpc for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DetachClassicLinkVpc +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DetachClassicLinkVpc func (c *EC2) DetachClassicLinkVpc(input *DetachClassicLinkVpcInput) (*DetachClassicLinkVpcOutput, error) { req, out := c.DetachClassicLinkVpcRequest(input) return out, req.Send() @@ -13762,7 +15662,7 @@ const opDetachInternetGateway = "DetachInternetGateway" // DetachInternetGatewayRequest generates a "aws/request.Request" representing the // client's request for the DetachInternetGateway operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -13783,7 +15683,7 @@ const opDetachInternetGateway = "DetachInternetGateway" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DetachInternetGateway +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DetachInternetGateway func (c *EC2) DetachInternetGatewayRequest(input *DetachInternetGatewayInput) (req *request.Request, output *DetachInternetGatewayOutput) { op := &request.Operation{ Name: opDetachInternetGateway, @@ -13814,7 +15714,7 @@ func (c *EC2) DetachInternetGatewayRequest(input *DetachInternetGatewayInput) (r // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DetachInternetGateway for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DetachInternetGateway +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DetachInternetGateway func (c *EC2) DetachInternetGateway(input *DetachInternetGatewayInput) (*DetachInternetGatewayOutput, error) { req, out := c.DetachInternetGatewayRequest(input) return out, req.Send() @@ -13840,7 +15740,7 @@ const opDetachNetworkInterface = "DetachNetworkInterface" // DetachNetworkInterfaceRequest generates a "aws/request.Request" representing the // client's request for the DetachNetworkInterface operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -13861,7 +15761,7 @@ const opDetachNetworkInterface = "DetachNetworkInterface" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DetachNetworkInterface +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DetachNetworkInterface func (c *EC2) DetachNetworkInterfaceRequest(input *DetachNetworkInterfaceInput) (req *request.Request, output *DetachNetworkInterfaceOutput) { op := &request.Operation{ Name: opDetachNetworkInterface, @@ -13890,7 +15790,7 @@ func (c *EC2) DetachNetworkInterfaceRequest(input *DetachNetworkInterfaceInput) // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DetachNetworkInterface for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DetachNetworkInterface +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DetachNetworkInterface func (c *EC2) DetachNetworkInterface(input *DetachNetworkInterfaceInput) (*DetachNetworkInterfaceOutput, error) { req, out := c.DetachNetworkInterfaceRequest(input) return out, req.Send() @@ -13916,7 +15816,7 @@ const opDetachVolume = "DetachVolume" // DetachVolumeRequest generates a "aws/request.Request" representing the // client's request for the DetachVolume operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -13937,7 +15837,7 @@ const opDetachVolume = "DetachVolume" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DetachVolume +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DetachVolume func (c *EC2) DetachVolumeRequest(input *DetachVolumeInput) (req *request.Request, output *VolumeAttachment) { op := &request.Operation{ Name: opDetachVolume, @@ -13977,7 +15877,7 @@ func (c *EC2) DetachVolumeRequest(input *DetachVolumeInput) (req *request.Reques // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DetachVolume for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DetachVolume +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DetachVolume func (c *EC2) DetachVolume(input *DetachVolumeInput) (*VolumeAttachment, error) { req, out := c.DetachVolumeRequest(input) return out, req.Send() @@ -14003,7 +15903,7 @@ const opDetachVpnGateway = "DetachVpnGateway" // DetachVpnGatewayRequest generates a "aws/request.Request" representing the // client's request for the DetachVpnGateway operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -14024,7 +15924,7 @@ const opDetachVpnGateway = "DetachVpnGateway" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DetachVpnGateway +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DetachVpnGateway func (c *EC2) DetachVpnGatewayRequest(input *DetachVpnGatewayInput) (req *request.Request, output *DetachVpnGatewayOutput) { op := &request.Operation{ Name: opDetachVpnGateway, @@ -14060,7 +15960,7 @@ func (c *EC2) DetachVpnGatewayRequest(input *DetachVpnGatewayInput) (req *reques // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DetachVpnGateway for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DetachVpnGateway +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DetachVpnGateway func (c *EC2) DetachVpnGateway(input *DetachVpnGatewayInput) (*DetachVpnGatewayOutput, error) { req, out := c.DetachVpnGatewayRequest(input) return out, req.Send() @@ -14086,7 +15986,7 @@ const opDisableVgwRoutePropagation = "DisableVgwRoutePropagation" // DisableVgwRoutePropagationRequest generates a "aws/request.Request" representing the // client's request for the DisableVgwRoutePropagation operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -14107,7 +16007,7 @@ const opDisableVgwRoutePropagation = "DisableVgwRoutePropagation" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisableVgwRoutePropagation +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisableVgwRoutePropagation func (c *EC2) DisableVgwRoutePropagationRequest(input *DisableVgwRoutePropagationInput) (req *request.Request, output *DisableVgwRoutePropagationOutput) { op := &request.Operation{ Name: opDisableVgwRoutePropagation, @@ -14137,7 +16037,7 @@ func (c *EC2) DisableVgwRoutePropagationRequest(input *DisableVgwRoutePropagatio // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DisableVgwRoutePropagation for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisableVgwRoutePropagation +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisableVgwRoutePropagation func (c *EC2) DisableVgwRoutePropagation(input *DisableVgwRoutePropagationInput) (*DisableVgwRoutePropagationOutput, error) { req, out := c.DisableVgwRoutePropagationRequest(input) return out, req.Send() @@ -14163,7 +16063,7 @@ const opDisableVpcClassicLink = "DisableVpcClassicLink" // DisableVpcClassicLinkRequest generates a "aws/request.Request" representing the // client's request for the DisableVpcClassicLink operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -14184,7 +16084,7 @@ const opDisableVpcClassicLink = "DisableVpcClassicLink" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisableVpcClassicLink +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisableVpcClassicLink func (c *EC2) DisableVpcClassicLinkRequest(input *DisableVpcClassicLinkInput) (req *request.Request, output *DisableVpcClassicLinkOutput) { op := &request.Operation{ Name: opDisableVpcClassicLink, @@ -14212,7 +16112,7 @@ func (c *EC2) DisableVpcClassicLinkRequest(input *DisableVpcClassicLinkInput) (r // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DisableVpcClassicLink for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisableVpcClassicLink +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisableVpcClassicLink func (c *EC2) DisableVpcClassicLink(input *DisableVpcClassicLinkInput) (*DisableVpcClassicLinkOutput, error) { req, out := c.DisableVpcClassicLinkRequest(input) return out, req.Send() @@ -14238,7 +16138,7 @@ const opDisableVpcClassicLinkDnsSupport = "DisableVpcClassicLinkDnsSupport" // DisableVpcClassicLinkDnsSupportRequest generates a "aws/request.Request" representing the // client's request for the DisableVpcClassicLinkDnsSupport operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -14259,7 +16159,7 @@ const opDisableVpcClassicLinkDnsSupport = "DisableVpcClassicLinkDnsSupport" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisableVpcClassicLinkDnsSupport +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisableVpcClassicLinkDnsSupport func (c *EC2) DisableVpcClassicLinkDnsSupportRequest(input *DisableVpcClassicLinkDnsSupportInput) (req *request.Request, output *DisableVpcClassicLinkDnsSupportOutput) { op := &request.Operation{ Name: opDisableVpcClassicLinkDnsSupport, @@ -14290,7 +16190,7 @@ func (c *EC2) DisableVpcClassicLinkDnsSupportRequest(input *DisableVpcClassicLin // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DisableVpcClassicLinkDnsSupport for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisableVpcClassicLinkDnsSupport +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisableVpcClassicLinkDnsSupport func (c *EC2) DisableVpcClassicLinkDnsSupport(input *DisableVpcClassicLinkDnsSupportInput) (*DisableVpcClassicLinkDnsSupportOutput, error) { req, out := c.DisableVpcClassicLinkDnsSupportRequest(input) return out, req.Send() @@ -14316,7 +16216,7 @@ const opDisassociateAddress = "DisassociateAddress" // DisassociateAddressRequest generates a "aws/request.Request" representing the // client's request for the DisassociateAddress operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -14337,7 +16237,7 @@ const opDisassociateAddress = "DisassociateAddress" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateAddress +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateAddress func (c *EC2) DisassociateAddressRequest(input *DisassociateAddressInput) (req *request.Request, output *DisassociateAddressOutput) { op := &request.Operation{ Name: opDisassociateAddress, @@ -14374,7 +16274,7 @@ func (c *EC2) DisassociateAddressRequest(input *DisassociateAddressInput) (req * // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DisassociateAddress for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateAddress +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateAddress func (c *EC2) DisassociateAddress(input *DisassociateAddressInput) (*DisassociateAddressOutput, error) { req, out := c.DisassociateAddressRequest(input) return out, req.Send() @@ -14400,7 +16300,7 @@ const opDisassociateIamInstanceProfile = "DisassociateIamInstanceProfile" // DisassociateIamInstanceProfileRequest generates a "aws/request.Request" representing the // client's request for the DisassociateIamInstanceProfile operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -14421,7 +16321,7 @@ const opDisassociateIamInstanceProfile = "DisassociateIamInstanceProfile" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateIamInstanceProfile +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateIamInstanceProfile func (c *EC2) DisassociateIamInstanceProfileRequest(input *DisassociateIamInstanceProfileInput) (req *request.Request, output *DisassociateIamInstanceProfileOutput) { op := &request.Operation{ Name: opDisassociateIamInstanceProfile, @@ -14450,7 +16350,7 @@ func (c *EC2) DisassociateIamInstanceProfileRequest(input *DisassociateIamInstan // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DisassociateIamInstanceProfile for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateIamInstanceProfile +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateIamInstanceProfile func (c *EC2) DisassociateIamInstanceProfile(input *DisassociateIamInstanceProfileInput) (*DisassociateIamInstanceProfileOutput, error) { req, out := c.DisassociateIamInstanceProfileRequest(input) return out, req.Send() @@ -14476,7 +16376,7 @@ const opDisassociateRouteTable = "DisassociateRouteTable" // DisassociateRouteTableRequest generates a "aws/request.Request" representing the // client's request for the DisassociateRouteTable operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -14497,7 +16397,7 @@ const opDisassociateRouteTable = "DisassociateRouteTable" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateRouteTable +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateRouteTable func (c *EC2) DisassociateRouteTableRequest(input *DisassociateRouteTableInput) (req *request.Request, output *DisassociateRouteTableOutput) { op := &request.Operation{ Name: opDisassociateRouteTable, @@ -14531,7 +16431,7 @@ func (c *EC2) DisassociateRouteTableRequest(input *DisassociateRouteTableInput) // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DisassociateRouteTable for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateRouteTable +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateRouteTable func (c *EC2) DisassociateRouteTable(input *DisassociateRouteTableInput) (*DisassociateRouteTableOutput, error) { req, out := c.DisassociateRouteTableRequest(input) return out, req.Send() @@ -14557,7 +16457,7 @@ const opDisassociateSubnetCidrBlock = "DisassociateSubnetCidrBlock" // DisassociateSubnetCidrBlockRequest generates a "aws/request.Request" representing the // client's request for the DisassociateSubnetCidrBlock operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -14578,7 +16478,7 @@ const opDisassociateSubnetCidrBlock = "DisassociateSubnetCidrBlock" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateSubnetCidrBlock +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateSubnetCidrBlock func (c *EC2) DisassociateSubnetCidrBlockRequest(input *DisassociateSubnetCidrBlockInput) (req *request.Request, output *DisassociateSubnetCidrBlockOutput) { op := &request.Operation{ Name: opDisassociateSubnetCidrBlock, @@ -14607,7 +16507,7 @@ func (c *EC2) DisassociateSubnetCidrBlockRequest(input *DisassociateSubnetCidrBl // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DisassociateSubnetCidrBlock for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateSubnetCidrBlock +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateSubnetCidrBlock func (c *EC2) DisassociateSubnetCidrBlock(input *DisassociateSubnetCidrBlockInput) (*DisassociateSubnetCidrBlockOutput, error) { req, out := c.DisassociateSubnetCidrBlockRequest(input) return out, req.Send() @@ -14633,7 +16533,7 @@ const opDisassociateVpcCidrBlock = "DisassociateVpcCidrBlock" // DisassociateVpcCidrBlockRequest generates a "aws/request.Request" representing the // client's request for the DisassociateVpcCidrBlock operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -14654,7 +16554,7 @@ const opDisassociateVpcCidrBlock = "DisassociateVpcCidrBlock" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateVpcCidrBlock +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateVpcCidrBlock func (c *EC2) DisassociateVpcCidrBlockRequest(input *DisassociateVpcCidrBlockInput) (req *request.Request, output *DisassociateVpcCidrBlockOutput) { op := &request.Operation{ Name: opDisassociateVpcCidrBlock, @@ -14687,7 +16587,7 @@ func (c *EC2) DisassociateVpcCidrBlockRequest(input *DisassociateVpcCidrBlockInp // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation DisassociateVpcCidrBlock for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateVpcCidrBlock +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateVpcCidrBlock func (c *EC2) DisassociateVpcCidrBlock(input *DisassociateVpcCidrBlockInput) (*DisassociateVpcCidrBlockOutput, error) { req, out := c.DisassociateVpcCidrBlockRequest(input) return out, req.Send() @@ -14713,7 +16613,7 @@ const opEnableVgwRoutePropagation = "EnableVgwRoutePropagation" // EnableVgwRoutePropagationRequest generates a "aws/request.Request" representing the // client's request for the EnableVgwRoutePropagation operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -14734,7 +16634,7 @@ const opEnableVgwRoutePropagation = "EnableVgwRoutePropagation" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EnableVgwRoutePropagation +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EnableVgwRoutePropagation func (c *EC2) EnableVgwRoutePropagationRequest(input *EnableVgwRoutePropagationInput) (req *request.Request, output *EnableVgwRoutePropagationOutput) { op := &request.Operation{ Name: opEnableVgwRoutePropagation, @@ -14764,7 +16664,7 @@ func (c *EC2) EnableVgwRoutePropagationRequest(input *EnableVgwRoutePropagationI // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation EnableVgwRoutePropagation for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EnableVgwRoutePropagation +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EnableVgwRoutePropagation func (c *EC2) EnableVgwRoutePropagation(input *EnableVgwRoutePropagationInput) (*EnableVgwRoutePropagationOutput, error) { req, out := c.EnableVgwRoutePropagationRequest(input) return out, req.Send() @@ -14790,7 +16690,7 @@ const opEnableVolumeIO = "EnableVolumeIO" // EnableVolumeIORequest generates a "aws/request.Request" representing the // client's request for the EnableVolumeIO operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -14811,7 +16711,7 @@ const opEnableVolumeIO = "EnableVolumeIO" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EnableVolumeIO +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EnableVolumeIO func (c *EC2) EnableVolumeIORequest(input *EnableVolumeIOInput) (req *request.Request, output *EnableVolumeIOOutput) { op := &request.Operation{ Name: opEnableVolumeIO, @@ -14841,7 +16741,7 @@ func (c *EC2) EnableVolumeIORequest(input *EnableVolumeIOInput) (req *request.Re // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation EnableVolumeIO for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EnableVolumeIO +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EnableVolumeIO func (c *EC2) EnableVolumeIO(input *EnableVolumeIOInput) (*EnableVolumeIOOutput, error) { req, out := c.EnableVolumeIORequest(input) return out, req.Send() @@ -14867,7 +16767,7 @@ const opEnableVpcClassicLink = "EnableVpcClassicLink" // EnableVpcClassicLinkRequest generates a "aws/request.Request" representing the // client's request for the EnableVpcClassicLink operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -14888,7 +16788,7 @@ const opEnableVpcClassicLink = "EnableVpcClassicLink" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EnableVpcClassicLink +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EnableVpcClassicLink func (c *EC2) EnableVpcClassicLinkRequest(input *EnableVpcClassicLinkInput) (req *request.Request, output *EnableVpcClassicLinkOutput) { op := &request.Operation{ Name: opEnableVpcClassicLink, @@ -14921,7 +16821,7 @@ func (c *EC2) EnableVpcClassicLinkRequest(input *EnableVpcClassicLinkInput) (req // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation EnableVpcClassicLink for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EnableVpcClassicLink +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EnableVpcClassicLink func (c *EC2) EnableVpcClassicLink(input *EnableVpcClassicLinkInput) (*EnableVpcClassicLinkOutput, error) { req, out := c.EnableVpcClassicLinkRequest(input) return out, req.Send() @@ -14947,7 +16847,7 @@ const opEnableVpcClassicLinkDnsSupport = "EnableVpcClassicLinkDnsSupport" // EnableVpcClassicLinkDnsSupportRequest generates a "aws/request.Request" representing the // client's request for the EnableVpcClassicLinkDnsSupport operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -14968,7 +16868,7 @@ const opEnableVpcClassicLinkDnsSupport = "EnableVpcClassicLinkDnsSupport" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EnableVpcClassicLinkDnsSupport +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EnableVpcClassicLinkDnsSupport func (c *EC2) EnableVpcClassicLinkDnsSupportRequest(input *EnableVpcClassicLinkDnsSupportInput) (req *request.Request, output *EnableVpcClassicLinkDnsSupportOutput) { op := &request.Operation{ Name: opEnableVpcClassicLinkDnsSupport, @@ -15001,7 +16901,7 @@ func (c *EC2) EnableVpcClassicLinkDnsSupportRequest(input *EnableVpcClassicLinkD // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation EnableVpcClassicLinkDnsSupport for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EnableVpcClassicLinkDnsSupport +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EnableVpcClassicLinkDnsSupport func (c *EC2) EnableVpcClassicLinkDnsSupport(input *EnableVpcClassicLinkDnsSupportInput) (*EnableVpcClassicLinkDnsSupportOutput, error) { req, out := c.EnableVpcClassicLinkDnsSupportRequest(input) return out, req.Send() @@ -15027,7 +16927,7 @@ const opGetConsoleOutput = "GetConsoleOutput" // GetConsoleOutputRequest generates a "aws/request.Request" representing the // client's request for the GetConsoleOutput operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -15048,7 +16948,7 @@ const opGetConsoleOutput = "GetConsoleOutput" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetConsoleOutput +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetConsoleOutput func (c *EC2) GetConsoleOutputRequest(input *GetConsoleOutputInput) (req *request.Request, output *GetConsoleOutputOutput) { op := &request.Operation{ Name: opGetConsoleOutput, @@ -15067,24 +16967,23 @@ func (c *EC2) GetConsoleOutputRequest(input *GetConsoleOutputInput) (req *reques // GetConsoleOutput API operation for Amazon Elastic Compute Cloud. // -// Gets the console output for the specified instance. +// Gets the console output for the specified instance. For Linux instances, +// the instance console output displays the exact console output that would +// normally be displayed on a physical monitor attached to a computer. For Windows +// instances, the instance console output includes output from the EC2Config +// service. // -// Instances do not have a physical monitor through which you can view their -// console output. They also lack physical controls that allow you to power -// up, reboot, or shut them down. To allow these actions, we provide them through -// the Amazon EC2 API and command line interface. +// GetConsoleOutput returns up to 64 KB of console output shortly after it's +// generated by the instance. // -// Instance console output is buffered and posted shortly after instance boot, -// reboot, and termination. Amazon EC2 preserves the most recent 64 KB output, -// which is available for at least one hour after the most recent post. +// By default, the console output returns buffered information that was posted +// shortly after an instance transition state (start, stop, reboot, or terminate). +// This information is available for at least one hour after the most recent +// post. // -// For Linux instances, the instance console output displays the exact console -// output that would normally be displayed on a physical monitor attached to -// a computer. This output is buffered because the instance produces it and -// then posts it to a store where the instance's owner can retrieve it. -// -// For Windows instances, the instance console output includes output from the -// EC2Config service. +// You can optionally retrieve the latest serial console output at any time +// during the instance lifecycle. This option is only supported on C5, M5, and +// i3.metal instances. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -15092,7 +16991,7 @@ func (c *EC2) GetConsoleOutputRequest(input *GetConsoleOutputInput) (req *reques // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation GetConsoleOutput for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetConsoleOutput +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetConsoleOutput func (c *EC2) GetConsoleOutput(input *GetConsoleOutputInput) (*GetConsoleOutputOutput, error) { req, out := c.GetConsoleOutputRequest(input) return out, req.Send() @@ -15118,7 +17017,7 @@ const opGetConsoleScreenshot = "GetConsoleScreenshot" // GetConsoleScreenshotRequest generates a "aws/request.Request" representing the // client's request for the GetConsoleScreenshot operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -15139,7 +17038,7 @@ const opGetConsoleScreenshot = "GetConsoleScreenshot" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetConsoleScreenshot +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetConsoleScreenshot func (c *EC2) GetConsoleScreenshotRequest(input *GetConsoleScreenshotInput) (req *request.Request, output *GetConsoleScreenshotOutput) { op := &request.Operation{ Name: opGetConsoleScreenshot, @@ -15168,7 +17067,7 @@ func (c *EC2) GetConsoleScreenshotRequest(input *GetConsoleScreenshotInput) (req // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation GetConsoleScreenshot for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetConsoleScreenshot +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetConsoleScreenshot func (c *EC2) GetConsoleScreenshot(input *GetConsoleScreenshotInput) (*GetConsoleScreenshotOutput, error) { req, out := c.GetConsoleScreenshotRequest(input) return out, req.Send() @@ -15194,7 +17093,7 @@ const opGetHostReservationPurchasePreview = "GetHostReservationPurchasePreview" // GetHostReservationPurchasePreviewRequest generates a "aws/request.Request" representing the // client's request for the GetHostReservationPurchasePreview operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -15215,7 +17114,7 @@ const opGetHostReservationPurchasePreview = "GetHostReservationPurchasePreview" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetHostReservationPurchasePreview +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetHostReservationPurchasePreview func (c *EC2) GetHostReservationPurchasePreviewRequest(input *GetHostReservationPurchasePreviewInput) (req *request.Request, output *GetHostReservationPurchasePreviewOutput) { op := &request.Operation{ Name: opGetHostReservationPurchasePreview, @@ -15247,7 +17146,7 @@ func (c *EC2) GetHostReservationPurchasePreviewRequest(input *GetHostReservation // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation GetHostReservationPurchasePreview for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetHostReservationPurchasePreview +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetHostReservationPurchasePreview func (c *EC2) GetHostReservationPurchasePreview(input *GetHostReservationPurchasePreviewInput) (*GetHostReservationPurchasePreviewOutput, error) { req, out := c.GetHostReservationPurchasePreviewRequest(input) return out, req.Send() @@ -15269,11 +17168,86 @@ func (c *EC2) GetHostReservationPurchasePreviewWithContext(ctx aws.Context, inpu return out, req.Send() } +const opGetLaunchTemplateData = "GetLaunchTemplateData" + +// GetLaunchTemplateDataRequest generates a "aws/request.Request" representing the +// client's request for the GetLaunchTemplateData operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetLaunchTemplateData for more information on using the GetLaunchTemplateData +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetLaunchTemplateDataRequest method. +// req, resp := client.GetLaunchTemplateDataRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetLaunchTemplateData +func (c *EC2) GetLaunchTemplateDataRequest(input *GetLaunchTemplateDataInput) (req *request.Request, output *GetLaunchTemplateDataOutput) { + op := &request.Operation{ + Name: opGetLaunchTemplateData, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &GetLaunchTemplateDataInput{} + } + + output = &GetLaunchTemplateDataOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetLaunchTemplateData API operation for Amazon Elastic Compute Cloud. +// +// Retrieves the configuration data of the specified instance. You can use this +// data to create a launch template. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation GetLaunchTemplateData for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetLaunchTemplateData +func (c *EC2) GetLaunchTemplateData(input *GetLaunchTemplateDataInput) (*GetLaunchTemplateDataOutput, error) { + req, out := c.GetLaunchTemplateDataRequest(input) + return out, req.Send() +} + +// GetLaunchTemplateDataWithContext is the same as GetLaunchTemplateData with the addition of +// the ability to pass a context and additional request options. +// +// See GetLaunchTemplateData for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) GetLaunchTemplateDataWithContext(ctx aws.Context, input *GetLaunchTemplateDataInput, opts ...request.Option) (*GetLaunchTemplateDataOutput, error) { + req, out := c.GetLaunchTemplateDataRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opGetPasswordData = "GetPasswordData" // GetPasswordDataRequest generates a "aws/request.Request" representing the // client's request for the GetPasswordData operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -15294,7 +17268,7 @@ const opGetPasswordData = "GetPasswordData" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetPasswordData +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetPasswordData func (c *EC2) GetPasswordDataRequest(input *GetPasswordDataInput) (req *request.Request, output *GetPasswordDataOutput) { op := &request.Operation{ Name: opGetPasswordData, @@ -15338,7 +17312,7 @@ func (c *EC2) GetPasswordDataRequest(input *GetPasswordDataInput) (req *request. // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation GetPasswordData for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetPasswordData +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetPasswordData func (c *EC2) GetPasswordData(input *GetPasswordDataInput) (*GetPasswordDataOutput, error) { req, out := c.GetPasswordDataRequest(input) return out, req.Send() @@ -15364,7 +17338,7 @@ const opGetReservedInstancesExchangeQuote = "GetReservedInstancesExchangeQuote" // GetReservedInstancesExchangeQuoteRequest generates a "aws/request.Request" representing the // client's request for the GetReservedInstancesExchangeQuote operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -15385,7 +17359,7 @@ const opGetReservedInstancesExchangeQuote = "GetReservedInstancesExchangeQuote" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetReservedInstancesExchangeQuote +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetReservedInstancesExchangeQuote func (c *EC2) GetReservedInstancesExchangeQuoteRequest(input *GetReservedInstancesExchangeQuoteInput) (req *request.Request, output *GetReservedInstancesExchangeQuoteOutput) { op := &request.Operation{ Name: opGetReservedInstancesExchangeQuote, @@ -15404,9 +17378,10 @@ func (c *EC2) GetReservedInstancesExchangeQuoteRequest(input *GetReservedInstanc // GetReservedInstancesExchangeQuote API operation for Amazon Elastic Compute Cloud. // -// Returns details about the values and term of your specified Convertible Reserved -// Instances. When a target configuration is specified, it returns information -// about whether the exchange is valid and can be performed. +// Returns a quote and exchange information for exchanging one or more specified +// Convertible Reserved Instances for a new Convertible Reserved Instance. If +// the exchange cannot be performed, the reason is returned in the response. +// Use AcceptReservedInstancesExchangeQuote to perform the exchange. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -15414,7 +17389,7 @@ func (c *EC2) GetReservedInstancesExchangeQuoteRequest(input *GetReservedInstanc // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation GetReservedInstancesExchangeQuote for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetReservedInstancesExchangeQuote +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetReservedInstancesExchangeQuote func (c *EC2) GetReservedInstancesExchangeQuote(input *GetReservedInstancesExchangeQuoteInput) (*GetReservedInstancesExchangeQuoteOutput, error) { req, out := c.GetReservedInstancesExchangeQuoteRequest(input) return out, req.Send() @@ -15440,7 +17415,7 @@ const opImportImage = "ImportImage" // ImportImageRequest generates a "aws/request.Request" representing the // client's request for the ImportImage operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -15461,7 +17436,7 @@ const opImportImage = "ImportImage" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportImage +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportImage func (c *EC2) ImportImageRequest(input *ImportImageInput) (req *request.Request, output *ImportImageOutput) { op := &request.Operation{ Name: opImportImage, @@ -15491,7 +17466,7 @@ func (c *EC2) ImportImageRequest(input *ImportImageInput) (req *request.Request, // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation ImportImage for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportImage +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportImage func (c *EC2) ImportImage(input *ImportImageInput) (*ImportImageOutput, error) { req, out := c.ImportImageRequest(input) return out, req.Send() @@ -15517,7 +17492,7 @@ const opImportInstance = "ImportInstance" // ImportInstanceRequest generates a "aws/request.Request" representing the // client's request for the ImportInstance operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -15538,7 +17513,7 @@ const opImportInstance = "ImportInstance" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportInstance +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportInstance func (c *EC2) ImportInstanceRequest(input *ImportInstanceInput) (req *request.Request, output *ImportInstanceOutput) { op := &request.Operation{ Name: opImportInstance, @@ -15571,7 +17546,7 @@ func (c *EC2) ImportInstanceRequest(input *ImportInstanceInput) (req *request.Re // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation ImportInstance for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportInstance +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportInstance func (c *EC2) ImportInstance(input *ImportInstanceInput) (*ImportInstanceOutput, error) { req, out := c.ImportInstanceRequest(input) return out, req.Send() @@ -15597,7 +17572,7 @@ const opImportKeyPair = "ImportKeyPair" // ImportKeyPairRequest generates a "aws/request.Request" representing the // client's request for the ImportKeyPair operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -15618,7 +17593,7 @@ const opImportKeyPair = "ImportKeyPair" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportKeyPair +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportKeyPair func (c *EC2) ImportKeyPairRequest(input *ImportKeyPairInput) (req *request.Request, output *ImportKeyPairOutput) { op := &request.Operation{ Name: opImportKeyPair, @@ -15652,7 +17627,7 @@ func (c *EC2) ImportKeyPairRequest(input *ImportKeyPairInput) (req *request.Requ // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation ImportKeyPair for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportKeyPair +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportKeyPair func (c *EC2) ImportKeyPair(input *ImportKeyPairInput) (*ImportKeyPairOutput, error) { req, out := c.ImportKeyPairRequest(input) return out, req.Send() @@ -15678,7 +17653,7 @@ const opImportSnapshot = "ImportSnapshot" // ImportSnapshotRequest generates a "aws/request.Request" representing the // client's request for the ImportSnapshot operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -15699,7 +17674,7 @@ const opImportSnapshot = "ImportSnapshot" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportSnapshot +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportSnapshot func (c *EC2) ImportSnapshotRequest(input *ImportSnapshotInput) (req *request.Request, output *ImportSnapshotOutput) { op := &request.Operation{ Name: opImportSnapshot, @@ -15726,7 +17701,7 @@ func (c *EC2) ImportSnapshotRequest(input *ImportSnapshotInput) (req *request.Re // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation ImportSnapshot for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportSnapshot +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportSnapshot func (c *EC2) ImportSnapshot(input *ImportSnapshotInput) (*ImportSnapshotOutput, error) { req, out := c.ImportSnapshotRequest(input) return out, req.Send() @@ -15752,7 +17727,7 @@ const opImportVolume = "ImportVolume" // ImportVolumeRequest generates a "aws/request.Request" representing the // client's request for the ImportVolume operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -15773,7 +17748,7 @@ const opImportVolume = "ImportVolume" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportVolume +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportVolume func (c *EC2) ImportVolumeRequest(input *ImportVolumeInput) (req *request.Request, output *ImportVolumeOutput) { op := &request.Operation{ Name: opImportVolume, @@ -15804,7 +17779,7 @@ func (c *EC2) ImportVolumeRequest(input *ImportVolumeInput) (req *request.Reques // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation ImportVolume for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportVolume +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportVolume func (c *EC2) ImportVolume(input *ImportVolumeInput) (*ImportVolumeOutput, error) { req, out := c.ImportVolumeRequest(input) return out, req.Send() @@ -15826,11 +17801,87 @@ func (c *EC2) ImportVolumeWithContext(ctx aws.Context, input *ImportVolumeInput, return out, req.Send() } +const opModifyFleet = "ModifyFleet" + +// ModifyFleetRequest generates a "aws/request.Request" representing the +// client's request for the ModifyFleet operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyFleet for more information on using the ModifyFleet +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyFleetRequest method. +// req, resp := client.ModifyFleetRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyFleet +func (c *EC2) ModifyFleetRequest(input *ModifyFleetInput) (req *request.Request, output *ModifyFleetOutput) { + op := &request.Operation{ + Name: opModifyFleet, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyFleetInput{} + } + + output = &ModifyFleetOutput{} + req = c.newRequest(op, input, output) + return +} + +// ModifyFleet API operation for Amazon Elastic Compute Cloud. +// +// Modifies the specified EC2 Fleet. +// +// While the EC2 Fleet is being modified, it is in the modifying state. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyFleet for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyFleet +func (c *EC2) ModifyFleet(input *ModifyFleetInput) (*ModifyFleetOutput, error) { + req, out := c.ModifyFleetRequest(input) + return out, req.Send() +} + +// ModifyFleetWithContext is the same as ModifyFleet with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyFleet for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyFleetWithContext(ctx aws.Context, input *ModifyFleetInput, opts ...request.Option) (*ModifyFleetOutput, error) { + req, out := c.ModifyFleetRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opModifyFpgaImageAttribute = "ModifyFpgaImageAttribute" // ModifyFpgaImageAttributeRequest generates a "aws/request.Request" representing the // client's request for the ModifyFpgaImageAttribute operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -15851,7 +17902,7 @@ const opModifyFpgaImageAttribute = "ModifyFpgaImageAttribute" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyFpgaImageAttribute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyFpgaImageAttribute func (c *EC2) ModifyFpgaImageAttributeRequest(input *ModifyFpgaImageAttributeInput) (req *request.Request, output *ModifyFpgaImageAttributeOutput) { op := &request.Operation{ Name: opModifyFpgaImageAttribute, @@ -15878,7 +17929,7 @@ func (c *EC2) ModifyFpgaImageAttributeRequest(input *ModifyFpgaImageAttributeInp // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation ModifyFpgaImageAttribute for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyFpgaImageAttribute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyFpgaImageAttribute func (c *EC2) ModifyFpgaImageAttribute(input *ModifyFpgaImageAttributeInput) (*ModifyFpgaImageAttributeOutput, error) { req, out := c.ModifyFpgaImageAttributeRequest(input) return out, req.Send() @@ -15904,7 +17955,7 @@ const opModifyHosts = "ModifyHosts" // ModifyHostsRequest generates a "aws/request.Request" representing the // client's request for the ModifyHosts operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -15925,7 +17976,7 @@ const opModifyHosts = "ModifyHosts" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyHosts +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyHosts func (c *EC2) ModifyHostsRequest(input *ModifyHostsInput) (req *request.Request, output *ModifyHostsOutput) { op := &request.Operation{ Name: opModifyHosts, @@ -15958,7 +18009,7 @@ func (c *EC2) ModifyHostsRequest(input *ModifyHostsInput) (req *request.Request, // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation ModifyHosts for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyHosts +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyHosts func (c *EC2) ModifyHosts(input *ModifyHostsInput) (*ModifyHostsOutput, error) { req, out := c.ModifyHostsRequest(input) return out, req.Send() @@ -15984,7 +18035,7 @@ const opModifyIdFormat = "ModifyIdFormat" // ModifyIdFormatRequest generates a "aws/request.Request" representing the // client's request for the ModifyIdFormat operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -16005,7 +18056,7 @@ const opModifyIdFormat = "ModifyIdFormat" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyIdFormat +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyIdFormat func (c *EC2) ModifyIdFormatRequest(input *ModifyIdFormatInput) (req *request.Request, output *ModifyIdFormatOutput) { op := &request.Operation{ Name: opModifyIdFormat, @@ -16028,8 +18079,16 @@ func (c *EC2) ModifyIdFormatRequest(input *ModifyIdFormatInput) (req *request.Re // // Modifies the ID format for the specified resource on a per-region basis. // You can specify that resources should receive longer IDs (17-character IDs) -// when they are created. The following resource types support longer IDs: instance -// | reservation | snapshot | volume. +// when they are created. +// +// This request can only be used to modify longer ID settings for resource types +// that are within the opt-in period. Resources currently in their opt-in period +// include: bundle | conversion-task | customer-gateway | dhcp-options | elastic-ip-allocation +// | elastic-ip-association | export-task | flow-log | image | import-task | +// internet-gateway | network-acl | network-acl-association | network-interface +// | network-interface-attachment | prefix-list | route-table | route-table-association +// | security-group | subnet | subnet-cidr-block-association | vpc | vpc-cidr-block-association +// | vpc-endpoint | vpc-peering-connection | vpn-connection | vpn-gateway. // // This setting applies to the IAM user who makes the request; it does not apply // to the entire AWS account. By default, an IAM user defaults to the same settings @@ -16048,7 +18107,7 @@ func (c *EC2) ModifyIdFormatRequest(input *ModifyIdFormatInput) (req *request.Re // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation ModifyIdFormat for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyIdFormat +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyIdFormat func (c *EC2) ModifyIdFormat(input *ModifyIdFormatInput) (*ModifyIdFormatOutput, error) { req, out := c.ModifyIdFormatRequest(input) return out, req.Send() @@ -16074,7 +18133,7 @@ const opModifyIdentityIdFormat = "ModifyIdentityIdFormat" // ModifyIdentityIdFormatRequest generates a "aws/request.Request" representing the // client's request for the ModifyIdentityIdFormat operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -16095,7 +18154,7 @@ const opModifyIdentityIdFormat = "ModifyIdentityIdFormat" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyIdentityIdFormat +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyIdentityIdFormat func (c *EC2) ModifyIdentityIdFormatRequest(input *ModifyIdentityIdFormatInput) (req *request.Request, output *ModifyIdentityIdFormatOutput) { op := &request.Operation{ Name: opModifyIdentityIdFormat, @@ -16121,8 +18180,16 @@ func (c *EC2) ModifyIdentityIdFormatRequest(input *ModifyIdentityIdFormatInput) // user for an account. You can specify that resources should receive longer // IDs (17-character IDs) when they are created. // -// The following resource types support longer IDs: instance | reservation | -// snapshot | volume. For more information, see Resource IDs (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/resource-ids.html) +// This request can only be used to modify longer ID settings for resource types +// that are within the opt-in period. Resources currently in their opt-in period +// include: bundle | conversion-task | customer-gateway | dhcp-options | elastic-ip-allocation +// | elastic-ip-association | export-task | flow-log | image | import-task | +// internet-gateway | network-acl | network-acl-association | network-interface +// | network-interface-attachment | prefix-list | route-table | route-table-association +// | security-group | subnet | subnet-cidr-block-association | vpc | vpc-cidr-block-association +// | vpc-endpoint | vpc-peering-connection | vpn-connection | vpn-gateway. +// +// For more information, see Resource IDs (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/resource-ids.html) // in the Amazon Elastic Compute Cloud User Guide. // // This setting applies to the principal specified in the request; it does not @@ -16138,7 +18205,7 @@ func (c *EC2) ModifyIdentityIdFormatRequest(input *ModifyIdentityIdFormatInput) // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation ModifyIdentityIdFormat for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyIdentityIdFormat +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyIdentityIdFormat func (c *EC2) ModifyIdentityIdFormat(input *ModifyIdentityIdFormatInput) (*ModifyIdentityIdFormatOutput, error) { req, out := c.ModifyIdentityIdFormatRequest(input) return out, req.Send() @@ -16164,7 +18231,7 @@ const opModifyImageAttribute = "ModifyImageAttribute" // ModifyImageAttributeRequest generates a "aws/request.Request" representing the // client's request for the ModifyImageAttribute operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -16185,7 +18252,7 @@ const opModifyImageAttribute = "ModifyImageAttribute" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyImageAttribute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyImageAttribute func (c *EC2) ModifyImageAttributeRequest(input *ModifyImageAttributeInput) (req *request.Request, output *ModifyImageAttributeOutput) { op := &request.Operation{ Name: opModifyImageAttribute, @@ -16207,15 +18274,15 @@ func (c *EC2) ModifyImageAttributeRequest(input *ModifyImageAttributeInput) (req // ModifyImageAttribute API operation for Amazon Elastic Compute Cloud. // // Modifies the specified attribute of the specified AMI. You can specify only -// one attribute at a time. +// one attribute at a time. You can use the Attribute parameter to specify the +// attribute or one of the following parameters: Description, LaunchPermission, +// or ProductCode. // // AWS Marketplace product codes cannot be modified. Images with an AWS Marketplace // product code cannot be made public. // -// The SriovNetSupport enhanced networking attribute cannot be changed using -// this command. Instead, enable SriovNetSupport on an instance and create an -// AMI from the instance. This will result in an image with SriovNetSupport -// enabled. +// To enable the SriovNetSupport enhanced networking attribute of an image, +// enable SriovNetSupport on an instance and create an AMI from the instance. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -16223,7 +18290,7 @@ func (c *EC2) ModifyImageAttributeRequest(input *ModifyImageAttributeInput) (req // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation ModifyImageAttribute for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyImageAttribute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyImageAttribute func (c *EC2) ModifyImageAttribute(input *ModifyImageAttributeInput) (*ModifyImageAttributeOutput, error) { req, out := c.ModifyImageAttributeRequest(input) return out, req.Send() @@ -16249,7 +18316,7 @@ const opModifyInstanceAttribute = "ModifyInstanceAttribute" // ModifyInstanceAttributeRequest generates a "aws/request.Request" representing the // client's request for the ModifyInstanceAttribute operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -16270,7 +18337,7 @@ const opModifyInstanceAttribute = "ModifyInstanceAttribute" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyInstanceAttribute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyInstanceAttribute func (c *EC2) ModifyInstanceAttributeRequest(input *ModifyInstanceAttributeInput) (req *request.Request, output *ModifyInstanceAttributeOutput) { op := &request.Operation{ Name: opModifyInstanceAttribute, @@ -16294,6 +18361,12 @@ func (c *EC2) ModifyInstanceAttributeRequest(input *ModifyInstanceAttributeInput // Modifies the specified attribute of the specified instance. You can specify // only one attribute at a time. // +// Note: Using this action to change the security groups associated with an +// elastic network interface (ENI) attached to an instance in a VPC can result +// in an error if the instance has more than one ENI. To change the security +// groups associated with an ENI attached to an instance that has multiple ENIs, +// we recommend that you use the ModifyNetworkInterfaceAttribute action. +// // To modify some attributes, the instance must be stopped. For more information, // see Modifying Attributes of a Stopped Instance (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_ChangingAttributesWhileInstanceStopped.html) // in the Amazon Elastic Compute Cloud User Guide. @@ -16304,7 +18377,7 @@ func (c *EC2) ModifyInstanceAttributeRequest(input *ModifyInstanceAttributeInput // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation ModifyInstanceAttribute for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyInstanceAttribute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyInstanceAttribute func (c *EC2) ModifyInstanceAttribute(input *ModifyInstanceAttributeInput) (*ModifyInstanceAttributeOutput, error) { req, out := c.ModifyInstanceAttributeRequest(input) return out, req.Send() @@ -16326,11 +18399,89 @@ func (c *EC2) ModifyInstanceAttributeWithContext(ctx aws.Context, input *ModifyI return out, req.Send() } +const opModifyInstanceCreditSpecification = "ModifyInstanceCreditSpecification" + +// ModifyInstanceCreditSpecificationRequest generates a "aws/request.Request" representing the +// client's request for the ModifyInstanceCreditSpecification operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyInstanceCreditSpecification for more information on using the ModifyInstanceCreditSpecification +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyInstanceCreditSpecificationRequest method. +// req, resp := client.ModifyInstanceCreditSpecificationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyInstanceCreditSpecification +func (c *EC2) ModifyInstanceCreditSpecificationRequest(input *ModifyInstanceCreditSpecificationInput) (req *request.Request, output *ModifyInstanceCreditSpecificationOutput) { + op := &request.Operation{ + Name: opModifyInstanceCreditSpecification, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyInstanceCreditSpecificationInput{} + } + + output = &ModifyInstanceCreditSpecificationOutput{} + req = c.newRequest(op, input, output) + return +} + +// ModifyInstanceCreditSpecification API operation for Amazon Elastic Compute Cloud. +// +// Modifies the credit option for CPU usage on a running or stopped T2 instance. +// The credit options are standard and unlimited. +// +// For more information, see T2 Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/t2-instances.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyInstanceCreditSpecification for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyInstanceCreditSpecification +func (c *EC2) ModifyInstanceCreditSpecification(input *ModifyInstanceCreditSpecificationInput) (*ModifyInstanceCreditSpecificationOutput, error) { + req, out := c.ModifyInstanceCreditSpecificationRequest(input) + return out, req.Send() +} + +// ModifyInstanceCreditSpecificationWithContext is the same as ModifyInstanceCreditSpecification with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyInstanceCreditSpecification for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyInstanceCreditSpecificationWithContext(ctx aws.Context, input *ModifyInstanceCreditSpecificationInput, opts ...request.Option) (*ModifyInstanceCreditSpecificationOutput, error) { + req, out := c.ModifyInstanceCreditSpecificationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opModifyInstancePlacement = "ModifyInstancePlacement" // ModifyInstancePlacementRequest generates a "aws/request.Request" representing the // client's request for the ModifyInstancePlacement operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -16351,7 +18502,7 @@ const opModifyInstancePlacement = "ModifyInstancePlacement" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyInstancePlacement +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyInstancePlacement func (c *EC2) ModifyInstancePlacementRequest(input *ModifyInstancePlacementInput) (req *request.Request, output *ModifyInstancePlacementOutput) { op := &request.Operation{ Name: opModifyInstancePlacement, @@ -16370,25 +18521,28 @@ func (c *EC2) ModifyInstancePlacementRequest(input *ModifyInstancePlacementInput // ModifyInstancePlacement API operation for Amazon Elastic Compute Cloud. // -// Set the instance affinity value for a specific stopped instance and modify -// the instance tenancy setting. +// Modifies the placement attributes for a specified instance. You can do the +// following: // -// Instance affinity is disabled by default. When instance affinity is host -// and it is not associated with a specific Dedicated Host, the next time it -// is launched it will automatically be associated with the host it lands on. -// This relationship will persist if the instance is stopped/started, or rebooted. +// * Modify the affinity between an instance and a Dedicated Host (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-hosts-overview.html). +// When affinity is set to host and the instance is not associated with a +// specific Dedicated Host, the next time the instance is launched, it is +// automatically associated with the host on which it lands. If the instance +// is restarted or rebooted, this relationship persists. // -// You can modify the host ID associated with a stopped instance. If a stopped -// instance has a new host ID association, the instance will target that host -// when restarted. +// * Change the Dedicated Host with which an instance is associated. // -// You can modify the tenancy of a stopped instance with a tenancy of host or -// dedicated. +// * Change the instance tenancy of an instance from host to dedicated, or +// from dedicated to host. // -// Affinity, hostID, and tenancy are not required parameters, but at least one -// of them must be specified in the request. Affinity and tenancy can be modified -// in the same request, but tenancy can only be modified on instances that are -// stopped. +// * Move an instance to or from a placement group (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html). +// +// At least one attribute for affinity, host ID, tenancy, or placement group +// name must be specified in the request. Affinity and tenancy can be modified +// in the same request. +// +// To modify the host ID, tenancy, or placement group for an instance, the instance +// must be in the stopped state. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -16396,7 +18550,7 @@ func (c *EC2) ModifyInstancePlacementRequest(input *ModifyInstancePlacementInput // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation ModifyInstancePlacement for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyInstancePlacement +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyInstancePlacement func (c *EC2) ModifyInstancePlacement(input *ModifyInstancePlacementInput) (*ModifyInstancePlacementOutput, error) { req, out := c.ModifyInstancePlacementRequest(input) return out, req.Send() @@ -16418,11 +18572,87 @@ func (c *EC2) ModifyInstancePlacementWithContext(ctx aws.Context, input *ModifyI return out, req.Send() } +const opModifyLaunchTemplate = "ModifyLaunchTemplate" + +// ModifyLaunchTemplateRequest generates a "aws/request.Request" representing the +// client's request for the ModifyLaunchTemplate operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyLaunchTemplate for more information on using the ModifyLaunchTemplate +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyLaunchTemplateRequest method. +// req, resp := client.ModifyLaunchTemplateRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyLaunchTemplate +func (c *EC2) ModifyLaunchTemplateRequest(input *ModifyLaunchTemplateInput) (req *request.Request, output *ModifyLaunchTemplateOutput) { + op := &request.Operation{ + Name: opModifyLaunchTemplate, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyLaunchTemplateInput{} + } + + output = &ModifyLaunchTemplateOutput{} + req = c.newRequest(op, input, output) + return +} + +// ModifyLaunchTemplate API operation for Amazon Elastic Compute Cloud. +// +// Modifies a launch template. You can specify which version of the launch template +// to set as the default version. When launching an instance, the default version +// applies when a launch template version is not specified. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyLaunchTemplate for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyLaunchTemplate +func (c *EC2) ModifyLaunchTemplate(input *ModifyLaunchTemplateInput) (*ModifyLaunchTemplateOutput, error) { + req, out := c.ModifyLaunchTemplateRequest(input) + return out, req.Send() +} + +// ModifyLaunchTemplateWithContext is the same as ModifyLaunchTemplate with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyLaunchTemplate for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyLaunchTemplateWithContext(ctx aws.Context, input *ModifyLaunchTemplateInput, opts ...request.Option) (*ModifyLaunchTemplateOutput, error) { + req, out := c.ModifyLaunchTemplateRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opModifyNetworkInterfaceAttribute = "ModifyNetworkInterfaceAttribute" // ModifyNetworkInterfaceAttributeRequest generates a "aws/request.Request" representing the // client's request for the ModifyNetworkInterfaceAttribute operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -16443,7 +18673,7 @@ const opModifyNetworkInterfaceAttribute = "ModifyNetworkInterfaceAttribute" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyNetworkInterfaceAttribute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyNetworkInterfaceAttribute func (c *EC2) ModifyNetworkInterfaceAttributeRequest(input *ModifyNetworkInterfaceAttributeInput) (req *request.Request, output *ModifyNetworkInterfaceAttributeOutput) { op := &request.Operation{ Name: opModifyNetworkInterfaceAttribute, @@ -16473,7 +18703,7 @@ func (c *EC2) ModifyNetworkInterfaceAttributeRequest(input *ModifyNetworkInterfa // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation ModifyNetworkInterfaceAttribute for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyNetworkInterfaceAttribute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyNetworkInterfaceAttribute func (c *EC2) ModifyNetworkInterfaceAttribute(input *ModifyNetworkInterfaceAttributeInput) (*ModifyNetworkInterfaceAttributeOutput, error) { req, out := c.ModifyNetworkInterfaceAttributeRequest(input) return out, req.Send() @@ -16499,7 +18729,7 @@ const opModifyReservedInstances = "ModifyReservedInstances" // ModifyReservedInstancesRequest generates a "aws/request.Request" representing the // client's request for the ModifyReservedInstances operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -16520,7 +18750,7 @@ const opModifyReservedInstances = "ModifyReservedInstances" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyReservedInstances +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyReservedInstances func (c *EC2) ModifyReservedInstancesRequest(input *ModifyReservedInstancesInput) (req *request.Request, output *ModifyReservedInstancesOutput) { op := &request.Operation{ Name: opModifyReservedInstances, @@ -16540,9 +18770,9 @@ func (c *EC2) ModifyReservedInstancesRequest(input *ModifyReservedInstancesInput // ModifyReservedInstances API operation for Amazon Elastic Compute Cloud. // // Modifies the Availability Zone, instance count, instance type, or network -// platform (EC2-Classic or EC2-VPC) of your Standard Reserved Instances. The -// Reserved Instances to be modified must be identical, except for Availability -// Zone, network platform, and instance type. +// platform (EC2-Classic or EC2-VPC) of your Reserved Instances. The Reserved +// Instances to be modified must be identical, except for Availability Zone, +// network platform, and instance type. // // For more information, see Modifying Reserved Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-modifying.html) // in the Amazon Elastic Compute Cloud User Guide. @@ -16553,7 +18783,7 @@ func (c *EC2) ModifyReservedInstancesRequest(input *ModifyReservedInstancesInput // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation ModifyReservedInstances for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyReservedInstances +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyReservedInstances func (c *EC2) ModifyReservedInstances(input *ModifyReservedInstancesInput) (*ModifyReservedInstancesOutput, error) { req, out := c.ModifyReservedInstancesRequest(input) return out, req.Send() @@ -16579,7 +18809,7 @@ const opModifySnapshotAttribute = "ModifySnapshotAttribute" // ModifySnapshotAttributeRequest generates a "aws/request.Request" representing the // client's request for the ModifySnapshotAttribute operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -16600,7 +18830,7 @@ const opModifySnapshotAttribute = "ModifySnapshotAttribute" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifySnapshotAttribute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifySnapshotAttribute func (c *EC2) ModifySnapshotAttributeRequest(input *ModifySnapshotAttributeInput) (req *request.Request, output *ModifySnapshotAttributeOutput) { op := &request.Operation{ Name: opModifySnapshotAttribute, @@ -16641,7 +18871,7 @@ func (c *EC2) ModifySnapshotAttributeRequest(input *ModifySnapshotAttributeInput // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation ModifySnapshotAttribute for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifySnapshotAttribute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifySnapshotAttribute func (c *EC2) ModifySnapshotAttribute(input *ModifySnapshotAttributeInput) (*ModifySnapshotAttributeOutput, error) { req, out := c.ModifySnapshotAttributeRequest(input) return out, req.Send() @@ -16667,7 +18897,7 @@ const opModifySpotFleetRequest = "ModifySpotFleetRequest" // ModifySpotFleetRequestRequest generates a "aws/request.Request" representing the // client's request for the ModifySpotFleetRequest operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -16688,7 +18918,7 @@ const opModifySpotFleetRequest = "ModifySpotFleetRequest" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifySpotFleetRequest +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifySpotFleetRequest func (c *EC2) ModifySpotFleetRequestRequest(input *ModifySpotFleetRequestInput) (req *request.Request, output *ModifySpotFleetRequestOutput) { op := &request.Operation{ Name: opModifySpotFleetRequest, @@ -16707,26 +18937,29 @@ func (c *EC2) ModifySpotFleetRequestRequest(input *ModifySpotFleetRequestInput) // ModifySpotFleetRequest API operation for Amazon Elastic Compute Cloud. // -// Modifies the specified Spot fleet request. +// Modifies the specified Spot Fleet request. // -// While the Spot fleet request is being modified, it is in the modifying state. +// While the Spot Fleet request is being modified, it is in the modifying state. // -// To scale up your Spot fleet, increase its target capacity. The Spot fleet -// launches the additional Spot instances according to the allocation strategy -// for the Spot fleet request. If the allocation strategy is lowestPrice, the -// Spot fleet launches instances using the Spot pool with the lowest price. -// If the allocation strategy is diversified, the Spot fleet distributes the +// To scale up your Spot Fleet, increase its target capacity. The Spot Fleet +// launches the additional Spot Instances according to the allocation strategy +// for the Spot Fleet request. If the allocation strategy is lowestPrice, the +// Spot Fleet launches instances using the Spot pool with the lowest price. +// If the allocation strategy is diversified, the Spot Fleet distributes the // instances across the Spot pools. // -// To scale down your Spot fleet, decrease its target capacity. First, the Spot -// fleet cancels any open bids that exceed the new target capacity. You can -// request that the Spot fleet terminate Spot instances until the size of the -// fleet no longer exceeds the new target capacity. If the allocation strategy -// is lowestPrice, the Spot fleet terminates the instances with the highest -// price per unit. If the allocation strategy is diversified, the Spot fleet +// To scale down your Spot Fleet, decrease its target capacity. First, the Spot +// Fleet cancels any open requests that exceed the new target capacity. You +// can request that the Spot Fleet terminate Spot Instances until the size of +// the fleet no longer exceeds the new target capacity. If the allocation strategy +// is lowestPrice, the Spot Fleet terminates the instances with the highest +// price per unit. If the allocation strategy is diversified, the Spot Fleet // terminates instances across the Spot pools. Alternatively, you can request -// that the Spot fleet keep the fleet at its current size, but not replace any -// Spot instances that are interrupted or that you terminate manually. +// that the Spot Fleet keep the fleet at its current size, but not replace any +// Spot Instances that are interrupted or that you terminate manually. +// +// If you are finished with your Spot Fleet for now, but will use it again later, +// you can set the target capacity to 0. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -16734,7 +18967,7 @@ func (c *EC2) ModifySpotFleetRequestRequest(input *ModifySpotFleetRequestInput) // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation ModifySpotFleetRequest for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifySpotFleetRequest +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifySpotFleetRequest func (c *EC2) ModifySpotFleetRequest(input *ModifySpotFleetRequestInput) (*ModifySpotFleetRequestOutput, error) { req, out := c.ModifySpotFleetRequestRequest(input) return out, req.Send() @@ -16760,7 +18993,7 @@ const opModifySubnetAttribute = "ModifySubnetAttribute" // ModifySubnetAttributeRequest generates a "aws/request.Request" representing the // client's request for the ModifySubnetAttribute operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -16781,7 +19014,7 @@ const opModifySubnetAttribute = "ModifySubnetAttribute" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifySubnetAttribute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifySubnetAttribute func (c *EC2) ModifySubnetAttributeRequest(input *ModifySubnetAttributeInput) (req *request.Request, output *ModifySubnetAttributeOutput) { op := &request.Operation{ Name: opModifySubnetAttribute, @@ -16810,7 +19043,7 @@ func (c *EC2) ModifySubnetAttributeRequest(input *ModifySubnetAttributeInput) (r // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation ModifySubnetAttribute for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifySubnetAttribute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifySubnetAttribute func (c *EC2) ModifySubnetAttribute(input *ModifySubnetAttributeInput) (*ModifySubnetAttributeOutput, error) { req, out := c.ModifySubnetAttributeRequest(input) return out, req.Send() @@ -16836,7 +19069,7 @@ const opModifyVolume = "ModifyVolume" // ModifyVolumeRequest generates a "aws/request.Request" representing the // client's request for the ModifyVolume operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -16857,7 +19090,7 @@ const opModifyVolume = "ModifyVolume" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVolume +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVolume func (c *EC2) ModifyVolumeRequest(input *ModifyVolumeInput) (req *request.Request, output *ModifyVolumeOutput) { op := &request.Operation{ Name: opModifyVolume, @@ -16916,7 +19149,7 @@ func (c *EC2) ModifyVolumeRequest(input *ModifyVolumeInput) (req *request.Reques // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation ModifyVolume for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVolume +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVolume func (c *EC2) ModifyVolume(input *ModifyVolumeInput) (*ModifyVolumeOutput, error) { req, out := c.ModifyVolumeRequest(input) return out, req.Send() @@ -16942,7 +19175,7 @@ const opModifyVolumeAttribute = "ModifyVolumeAttribute" // ModifyVolumeAttributeRequest generates a "aws/request.Request" representing the // client's request for the ModifyVolumeAttribute operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -16963,7 +19196,7 @@ const opModifyVolumeAttribute = "ModifyVolumeAttribute" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVolumeAttribute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVolumeAttribute func (c *EC2) ModifyVolumeAttributeRequest(input *ModifyVolumeAttributeInput) (req *request.Request, output *ModifyVolumeAttributeOutput) { op := &request.Operation{ Name: opModifyVolumeAttribute, @@ -17001,7 +19234,7 @@ func (c *EC2) ModifyVolumeAttributeRequest(input *ModifyVolumeAttributeInput) (r // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation ModifyVolumeAttribute for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVolumeAttribute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVolumeAttribute func (c *EC2) ModifyVolumeAttribute(input *ModifyVolumeAttributeInput) (*ModifyVolumeAttributeOutput, error) { req, out := c.ModifyVolumeAttributeRequest(input) return out, req.Send() @@ -17027,7 +19260,7 @@ const opModifyVpcAttribute = "ModifyVpcAttribute" // ModifyVpcAttributeRequest generates a "aws/request.Request" representing the // client's request for the ModifyVpcAttribute operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -17048,7 +19281,7 @@ const opModifyVpcAttribute = "ModifyVpcAttribute" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpcAttribute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpcAttribute func (c *EC2) ModifyVpcAttributeRequest(input *ModifyVpcAttributeInput) (req *request.Request, output *ModifyVpcAttributeOutput) { op := &request.Operation{ Name: opModifyVpcAttribute, @@ -17077,7 +19310,7 @@ func (c *EC2) ModifyVpcAttributeRequest(input *ModifyVpcAttributeInput) (req *re // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation ModifyVpcAttribute for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpcAttribute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpcAttribute func (c *EC2) ModifyVpcAttribute(input *ModifyVpcAttributeInput) (*ModifyVpcAttributeOutput, error) { req, out := c.ModifyVpcAttributeRequest(input) return out, req.Send() @@ -17103,7 +19336,7 @@ const opModifyVpcEndpoint = "ModifyVpcEndpoint" // ModifyVpcEndpointRequest generates a "aws/request.Request" representing the // client's request for the ModifyVpcEndpoint operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -17124,7 +19357,7 @@ const opModifyVpcEndpoint = "ModifyVpcEndpoint" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpcEndpoint +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpcEndpoint func (c *EC2) ModifyVpcEndpointRequest(input *ModifyVpcEndpointInput) (req *request.Request, output *ModifyVpcEndpointOutput) { op := &request.Operation{ Name: opModifyVpcEndpoint, @@ -17143,9 +19376,10 @@ func (c *EC2) ModifyVpcEndpointRequest(input *ModifyVpcEndpointInput) (req *requ // ModifyVpcEndpoint API operation for Amazon Elastic Compute Cloud. // -// Modifies attributes of a specified VPC endpoint. You can modify the policy -// associated with the endpoint, and you can add and remove route tables associated -// with the endpoint. +// Modifies attributes of a specified VPC endpoint. The attributes that you +// can modify depend on the type of VPC endpoint (interface or gateway). For +// more information, see VPC Endpoints (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-endpoints.html) +// in the Amazon Virtual Private Cloud User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -17153,7 +19387,7 @@ func (c *EC2) ModifyVpcEndpointRequest(input *ModifyVpcEndpointInput) (req *requ // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation ModifyVpcEndpoint for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpcEndpoint +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpcEndpoint func (c *EC2) ModifyVpcEndpoint(input *ModifyVpcEndpointInput) (*ModifyVpcEndpointOutput, error) { req, out := c.ModifyVpcEndpointRequest(input) return out, req.Send() @@ -17175,11 +19409,240 @@ func (c *EC2) ModifyVpcEndpointWithContext(ctx aws.Context, input *ModifyVpcEndp return out, req.Send() } +const opModifyVpcEndpointConnectionNotification = "ModifyVpcEndpointConnectionNotification" + +// ModifyVpcEndpointConnectionNotificationRequest generates a "aws/request.Request" representing the +// client's request for the ModifyVpcEndpointConnectionNotification operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyVpcEndpointConnectionNotification for more information on using the ModifyVpcEndpointConnectionNotification +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyVpcEndpointConnectionNotificationRequest method. +// req, resp := client.ModifyVpcEndpointConnectionNotificationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpcEndpointConnectionNotification +func (c *EC2) ModifyVpcEndpointConnectionNotificationRequest(input *ModifyVpcEndpointConnectionNotificationInput) (req *request.Request, output *ModifyVpcEndpointConnectionNotificationOutput) { + op := &request.Operation{ + Name: opModifyVpcEndpointConnectionNotification, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyVpcEndpointConnectionNotificationInput{} + } + + output = &ModifyVpcEndpointConnectionNotificationOutput{} + req = c.newRequest(op, input, output) + return +} + +// ModifyVpcEndpointConnectionNotification API operation for Amazon Elastic Compute Cloud. +// +// Modifies a connection notification for VPC endpoint or VPC endpoint service. +// You can change the SNS topic for the notification, or the events for which +// to be notified. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyVpcEndpointConnectionNotification for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpcEndpointConnectionNotification +func (c *EC2) ModifyVpcEndpointConnectionNotification(input *ModifyVpcEndpointConnectionNotificationInput) (*ModifyVpcEndpointConnectionNotificationOutput, error) { + req, out := c.ModifyVpcEndpointConnectionNotificationRequest(input) + return out, req.Send() +} + +// ModifyVpcEndpointConnectionNotificationWithContext is the same as ModifyVpcEndpointConnectionNotification with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyVpcEndpointConnectionNotification for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyVpcEndpointConnectionNotificationWithContext(ctx aws.Context, input *ModifyVpcEndpointConnectionNotificationInput, opts ...request.Option) (*ModifyVpcEndpointConnectionNotificationOutput, error) { + req, out := c.ModifyVpcEndpointConnectionNotificationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opModifyVpcEndpointServiceConfiguration = "ModifyVpcEndpointServiceConfiguration" + +// ModifyVpcEndpointServiceConfigurationRequest generates a "aws/request.Request" representing the +// client's request for the ModifyVpcEndpointServiceConfiguration operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyVpcEndpointServiceConfiguration for more information on using the ModifyVpcEndpointServiceConfiguration +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyVpcEndpointServiceConfigurationRequest method. +// req, resp := client.ModifyVpcEndpointServiceConfigurationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpcEndpointServiceConfiguration +func (c *EC2) ModifyVpcEndpointServiceConfigurationRequest(input *ModifyVpcEndpointServiceConfigurationInput) (req *request.Request, output *ModifyVpcEndpointServiceConfigurationOutput) { + op := &request.Operation{ + Name: opModifyVpcEndpointServiceConfiguration, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyVpcEndpointServiceConfigurationInput{} + } + + output = &ModifyVpcEndpointServiceConfigurationOutput{} + req = c.newRequest(op, input, output) + return +} + +// ModifyVpcEndpointServiceConfiguration API operation for Amazon Elastic Compute Cloud. +// +// Modifies the attributes of your VPC endpoint service configuration. You can +// change the Network Load Balancers for your service, and you can specify whether +// acceptance is required for requests to connect to your endpoint service through +// an interface VPC endpoint. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyVpcEndpointServiceConfiguration for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpcEndpointServiceConfiguration +func (c *EC2) ModifyVpcEndpointServiceConfiguration(input *ModifyVpcEndpointServiceConfigurationInput) (*ModifyVpcEndpointServiceConfigurationOutput, error) { + req, out := c.ModifyVpcEndpointServiceConfigurationRequest(input) + return out, req.Send() +} + +// ModifyVpcEndpointServiceConfigurationWithContext is the same as ModifyVpcEndpointServiceConfiguration with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyVpcEndpointServiceConfiguration for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyVpcEndpointServiceConfigurationWithContext(ctx aws.Context, input *ModifyVpcEndpointServiceConfigurationInput, opts ...request.Option) (*ModifyVpcEndpointServiceConfigurationOutput, error) { + req, out := c.ModifyVpcEndpointServiceConfigurationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opModifyVpcEndpointServicePermissions = "ModifyVpcEndpointServicePermissions" + +// ModifyVpcEndpointServicePermissionsRequest generates a "aws/request.Request" representing the +// client's request for the ModifyVpcEndpointServicePermissions operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyVpcEndpointServicePermissions for more information on using the ModifyVpcEndpointServicePermissions +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyVpcEndpointServicePermissionsRequest method. +// req, resp := client.ModifyVpcEndpointServicePermissionsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpcEndpointServicePermissions +func (c *EC2) ModifyVpcEndpointServicePermissionsRequest(input *ModifyVpcEndpointServicePermissionsInput) (req *request.Request, output *ModifyVpcEndpointServicePermissionsOutput) { + op := &request.Operation{ + Name: opModifyVpcEndpointServicePermissions, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyVpcEndpointServicePermissionsInput{} + } + + output = &ModifyVpcEndpointServicePermissionsOutput{} + req = c.newRequest(op, input, output) + return +} + +// ModifyVpcEndpointServicePermissions API operation for Amazon Elastic Compute Cloud. +// +// Modifies the permissions for your VPC endpoint service (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/endpoint-service.html). +// You can add or remove permissions for service consumers (IAM users, IAM roles, +// and AWS accounts) to connect to your endpoint service. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyVpcEndpointServicePermissions for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpcEndpointServicePermissions +func (c *EC2) ModifyVpcEndpointServicePermissions(input *ModifyVpcEndpointServicePermissionsInput) (*ModifyVpcEndpointServicePermissionsOutput, error) { + req, out := c.ModifyVpcEndpointServicePermissionsRequest(input) + return out, req.Send() +} + +// ModifyVpcEndpointServicePermissionsWithContext is the same as ModifyVpcEndpointServicePermissions with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyVpcEndpointServicePermissions for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyVpcEndpointServicePermissionsWithContext(ctx aws.Context, input *ModifyVpcEndpointServicePermissionsInput, opts ...request.Option) (*ModifyVpcEndpointServicePermissionsOutput, error) { + req, out := c.ModifyVpcEndpointServicePermissionsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opModifyVpcPeeringConnectionOptions = "ModifyVpcPeeringConnectionOptions" // ModifyVpcPeeringConnectionOptionsRequest generates a "aws/request.Request" representing the // client's request for the ModifyVpcPeeringConnectionOptions operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -17200,7 +19663,7 @@ const opModifyVpcPeeringConnectionOptions = "ModifyVpcPeeringConnectionOptions" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpcPeeringConnectionOptions +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpcPeeringConnectionOptions func (c *EC2) ModifyVpcPeeringConnectionOptionsRequest(input *ModifyVpcPeeringConnectionOptionsInput) (req *request.Request, output *ModifyVpcPeeringConnectionOptionsOutput) { op := &request.Operation{ Name: opModifyVpcPeeringConnectionOptions, @@ -17229,7 +19692,7 @@ func (c *EC2) ModifyVpcPeeringConnectionOptionsRequest(input *ModifyVpcPeeringCo // * Enable/disable communication over the peering connection between instances // in your VPC and an EC2-Classic instance that's linked to the peer VPC. // -// * Enable/disable a local VPC to resolve public DNS hostnames to private +// * Enable/disable the ability to resolve public DNS hostnames to private // IP addresses when queried from instances in the peer VPC. // // If the peered VPCs are in different accounts, each owner must initiate a @@ -17246,7 +19709,7 @@ func (c *EC2) ModifyVpcPeeringConnectionOptionsRequest(input *ModifyVpcPeeringCo // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation ModifyVpcPeeringConnectionOptions for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpcPeeringConnectionOptions +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpcPeeringConnectionOptions func (c *EC2) ModifyVpcPeeringConnectionOptions(input *ModifyVpcPeeringConnectionOptionsInput) (*ModifyVpcPeeringConnectionOptionsOutput, error) { req, out := c.ModifyVpcPeeringConnectionOptionsRequest(input) return out, req.Send() @@ -17268,11 +19731,94 @@ func (c *EC2) ModifyVpcPeeringConnectionOptionsWithContext(ctx aws.Context, inpu return out, req.Send() } +const opModifyVpcTenancy = "ModifyVpcTenancy" + +// ModifyVpcTenancyRequest generates a "aws/request.Request" representing the +// client's request for the ModifyVpcTenancy operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyVpcTenancy for more information on using the ModifyVpcTenancy +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyVpcTenancyRequest method. +// req, resp := client.ModifyVpcTenancyRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpcTenancy +func (c *EC2) ModifyVpcTenancyRequest(input *ModifyVpcTenancyInput) (req *request.Request, output *ModifyVpcTenancyOutput) { + op := &request.Operation{ + Name: opModifyVpcTenancy, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyVpcTenancyInput{} + } + + output = &ModifyVpcTenancyOutput{} + req = c.newRequest(op, input, output) + return +} + +// ModifyVpcTenancy API operation for Amazon Elastic Compute Cloud. +// +// Modifies the instance tenancy attribute of the specified VPC. You can change +// the instance tenancy attribute of a VPC to default only. You cannot change +// the instance tenancy attribute to dedicated. +// +// After you modify the tenancy of the VPC, any new instances that you launch +// into the VPC have a tenancy of default, unless you specify otherwise during +// launch. The tenancy of any existing instances in the VPC is not affected. +// +// For more information about Dedicated Instances, see Dedicated Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-instance.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyVpcTenancy for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpcTenancy +func (c *EC2) ModifyVpcTenancy(input *ModifyVpcTenancyInput) (*ModifyVpcTenancyOutput, error) { + req, out := c.ModifyVpcTenancyRequest(input) + return out, req.Send() +} + +// ModifyVpcTenancyWithContext is the same as ModifyVpcTenancy with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyVpcTenancy for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyVpcTenancyWithContext(ctx aws.Context, input *ModifyVpcTenancyInput, opts ...request.Option) (*ModifyVpcTenancyOutput, error) { + req, out := c.ModifyVpcTenancyRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opMonitorInstances = "MonitorInstances" // MonitorInstancesRequest generates a "aws/request.Request" representing the // client's request for the MonitorInstances operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -17293,7 +19839,7 @@ const opMonitorInstances = "MonitorInstances" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/MonitorInstances +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/MonitorInstances func (c *EC2) MonitorInstancesRequest(input *MonitorInstancesInput) (req *request.Request, output *MonitorInstancesOutput) { op := &request.Operation{ Name: opMonitorInstances, @@ -17325,7 +19871,7 @@ func (c *EC2) MonitorInstancesRequest(input *MonitorInstancesInput) (req *reques // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation MonitorInstances for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/MonitorInstances +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/MonitorInstances func (c *EC2) MonitorInstances(input *MonitorInstancesInput) (*MonitorInstancesOutput, error) { req, out := c.MonitorInstancesRequest(input) return out, req.Send() @@ -17351,7 +19897,7 @@ const opMoveAddressToVpc = "MoveAddressToVpc" // MoveAddressToVpcRequest generates a "aws/request.Request" representing the // client's request for the MoveAddressToVpc operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -17372,7 +19918,7 @@ const opMoveAddressToVpc = "MoveAddressToVpc" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/MoveAddressToVpc +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/MoveAddressToVpc func (c *EC2) MoveAddressToVpcRequest(input *MoveAddressToVpcInput) (req *request.Request, output *MoveAddressToVpcOutput) { op := &request.Operation{ Name: opMoveAddressToVpc, @@ -17405,7 +19951,7 @@ func (c *EC2) MoveAddressToVpcRequest(input *MoveAddressToVpcInput) (req *reques // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation MoveAddressToVpc for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/MoveAddressToVpc +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/MoveAddressToVpc func (c *EC2) MoveAddressToVpc(input *MoveAddressToVpcInput) (*MoveAddressToVpcOutput, error) { req, out := c.MoveAddressToVpcRequest(input) return out, req.Send() @@ -17431,7 +19977,7 @@ const opPurchaseHostReservation = "PurchaseHostReservation" // PurchaseHostReservationRequest generates a "aws/request.Request" representing the // client's request for the PurchaseHostReservation operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -17452,7 +19998,7 @@ const opPurchaseHostReservation = "PurchaseHostReservation" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/PurchaseHostReservation +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/PurchaseHostReservation func (c *EC2) PurchaseHostReservationRequest(input *PurchaseHostReservationInput) (req *request.Request, output *PurchaseHostReservationOutput) { op := &request.Operation{ Name: opPurchaseHostReservation, @@ -17482,7 +20028,7 @@ func (c *EC2) PurchaseHostReservationRequest(input *PurchaseHostReservationInput // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation PurchaseHostReservation for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/PurchaseHostReservation +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/PurchaseHostReservation func (c *EC2) PurchaseHostReservation(input *PurchaseHostReservationInput) (*PurchaseHostReservationOutput, error) { req, out := c.PurchaseHostReservationRequest(input) return out, req.Send() @@ -17508,7 +20054,7 @@ const opPurchaseReservedInstancesOffering = "PurchaseReservedInstancesOffering" // PurchaseReservedInstancesOfferingRequest generates a "aws/request.Request" representing the // client's request for the PurchaseReservedInstancesOffering operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -17529,7 +20075,7 @@ const opPurchaseReservedInstancesOffering = "PurchaseReservedInstancesOffering" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/PurchaseReservedInstancesOffering +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/PurchaseReservedInstancesOffering func (c *EC2) PurchaseReservedInstancesOfferingRequest(input *PurchaseReservedInstancesOfferingInput) (req *request.Request, output *PurchaseReservedInstancesOfferingOutput) { op := &request.Operation{ Name: opPurchaseReservedInstancesOffering, @@ -17565,7 +20111,7 @@ func (c *EC2) PurchaseReservedInstancesOfferingRequest(input *PurchaseReservedIn // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation PurchaseReservedInstancesOffering for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/PurchaseReservedInstancesOffering +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/PurchaseReservedInstancesOffering func (c *EC2) PurchaseReservedInstancesOffering(input *PurchaseReservedInstancesOfferingInput) (*PurchaseReservedInstancesOfferingOutput, error) { req, out := c.PurchaseReservedInstancesOfferingRequest(input) return out, req.Send() @@ -17591,7 +20137,7 @@ const opPurchaseScheduledInstances = "PurchaseScheduledInstances" // PurchaseScheduledInstancesRequest generates a "aws/request.Request" representing the // client's request for the PurchaseScheduledInstances operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -17612,7 +20158,7 @@ const opPurchaseScheduledInstances = "PurchaseScheduledInstances" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/PurchaseScheduledInstances +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/PurchaseScheduledInstances func (c *EC2) PurchaseScheduledInstancesRequest(input *PurchaseScheduledInstancesInput) (req *request.Request, output *PurchaseScheduledInstancesOutput) { op := &request.Operation{ Name: opPurchaseScheduledInstances, @@ -17648,7 +20194,7 @@ func (c *EC2) PurchaseScheduledInstancesRequest(input *PurchaseScheduledInstance // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation PurchaseScheduledInstances for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/PurchaseScheduledInstances +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/PurchaseScheduledInstances func (c *EC2) PurchaseScheduledInstances(input *PurchaseScheduledInstancesInput) (*PurchaseScheduledInstancesOutput, error) { req, out := c.PurchaseScheduledInstancesRequest(input) return out, req.Send() @@ -17674,7 +20220,7 @@ const opRebootInstances = "RebootInstances" // RebootInstancesRequest generates a "aws/request.Request" representing the // client's request for the RebootInstances operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -17695,7 +20241,7 @@ const opRebootInstances = "RebootInstances" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RebootInstances +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RebootInstances func (c *EC2) RebootInstancesRequest(input *RebootInstancesInput) (req *request.Request, output *RebootInstancesOutput) { op := &request.Operation{ Name: opRebootInstances, @@ -17734,7 +20280,7 @@ func (c *EC2) RebootInstancesRequest(input *RebootInstancesInput) (req *request. // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation RebootInstances for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RebootInstances +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RebootInstances func (c *EC2) RebootInstances(input *RebootInstancesInput) (*RebootInstancesOutput, error) { req, out := c.RebootInstancesRequest(input) return out, req.Send() @@ -17760,7 +20306,7 @@ const opRegisterImage = "RegisterImage" // RegisterImageRequest generates a "aws/request.Request" representing the // client's request for the RegisterImage operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -17781,7 +20327,7 @@ const opRegisterImage = "RegisterImage" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RegisterImage +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RegisterImage func (c *EC2) RegisterImageRequest(input *RegisterImageInput) (req *request.Request, output *RegisterImageOutput) { op := &request.Operation{ Name: opRegisterImage, @@ -17836,7 +20382,7 @@ func (c *EC2) RegisterImageRequest(input *RegisterImageInput) (req *request.Requ // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation RegisterImage for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RegisterImage +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RegisterImage func (c *EC2) RegisterImage(input *RegisterImageInput) (*RegisterImageOutput, error) { req, out := c.RegisterImageRequest(input) return out, req.Send() @@ -17858,11 +20404,86 @@ func (c *EC2) RegisterImageWithContext(ctx aws.Context, input *RegisterImageInpu return out, req.Send() } +const opRejectVpcEndpointConnections = "RejectVpcEndpointConnections" + +// RejectVpcEndpointConnectionsRequest generates a "aws/request.Request" representing the +// client's request for the RejectVpcEndpointConnections operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See RejectVpcEndpointConnections for more information on using the RejectVpcEndpointConnections +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the RejectVpcEndpointConnectionsRequest method. +// req, resp := client.RejectVpcEndpointConnectionsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RejectVpcEndpointConnections +func (c *EC2) RejectVpcEndpointConnectionsRequest(input *RejectVpcEndpointConnectionsInput) (req *request.Request, output *RejectVpcEndpointConnectionsOutput) { + op := &request.Operation{ + Name: opRejectVpcEndpointConnections, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &RejectVpcEndpointConnectionsInput{} + } + + output = &RejectVpcEndpointConnectionsOutput{} + req = c.newRequest(op, input, output) + return +} + +// RejectVpcEndpointConnections API operation for Amazon Elastic Compute Cloud. +// +// Rejects one or more VPC endpoint connection requests to your VPC endpoint +// service. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation RejectVpcEndpointConnections for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RejectVpcEndpointConnections +func (c *EC2) RejectVpcEndpointConnections(input *RejectVpcEndpointConnectionsInput) (*RejectVpcEndpointConnectionsOutput, error) { + req, out := c.RejectVpcEndpointConnectionsRequest(input) + return out, req.Send() +} + +// RejectVpcEndpointConnectionsWithContext is the same as RejectVpcEndpointConnections with the addition of +// the ability to pass a context and additional request options. +// +// See RejectVpcEndpointConnections for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) RejectVpcEndpointConnectionsWithContext(ctx aws.Context, input *RejectVpcEndpointConnectionsInput, opts ...request.Option) (*RejectVpcEndpointConnectionsOutput, error) { + req, out := c.RejectVpcEndpointConnectionsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opRejectVpcPeeringConnection = "RejectVpcPeeringConnection" // RejectVpcPeeringConnectionRequest generates a "aws/request.Request" representing the // client's request for the RejectVpcPeeringConnection operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -17883,7 +20504,7 @@ const opRejectVpcPeeringConnection = "RejectVpcPeeringConnection" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RejectVpcPeeringConnection +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RejectVpcPeeringConnection func (c *EC2) RejectVpcPeeringConnectionRequest(input *RejectVpcPeeringConnectionInput) (req *request.Request, output *RejectVpcPeeringConnectionOutput) { op := &request.Operation{ Name: opRejectVpcPeeringConnection, @@ -17914,7 +20535,7 @@ func (c *EC2) RejectVpcPeeringConnectionRequest(input *RejectVpcPeeringConnectio // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation RejectVpcPeeringConnection for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RejectVpcPeeringConnection +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RejectVpcPeeringConnection func (c *EC2) RejectVpcPeeringConnection(input *RejectVpcPeeringConnectionInput) (*RejectVpcPeeringConnectionOutput, error) { req, out := c.RejectVpcPeeringConnectionRequest(input) return out, req.Send() @@ -17940,7 +20561,7 @@ const opReleaseAddress = "ReleaseAddress" // ReleaseAddressRequest generates a "aws/request.Request" representing the // client's request for the ReleaseAddress operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -17961,7 +20582,7 @@ const opReleaseAddress = "ReleaseAddress" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReleaseAddress +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReleaseAddress func (c *EC2) ReleaseAddressRequest(input *ReleaseAddressInput) (req *request.Request, output *ReleaseAddressOutput) { op := &request.Operation{ Name: opReleaseAddress, @@ -18007,7 +20628,7 @@ func (c *EC2) ReleaseAddressRequest(input *ReleaseAddressInput) (req *request.Re // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation ReleaseAddress for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReleaseAddress +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReleaseAddress func (c *EC2) ReleaseAddress(input *ReleaseAddressInput) (*ReleaseAddressOutput, error) { req, out := c.ReleaseAddressRequest(input) return out, req.Send() @@ -18033,7 +20654,7 @@ const opReleaseHosts = "ReleaseHosts" // ReleaseHostsRequest generates a "aws/request.Request" representing the // client's request for the ReleaseHosts operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -18054,7 +20675,7 @@ const opReleaseHosts = "ReleaseHosts" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReleaseHosts +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReleaseHosts func (c *EC2) ReleaseHostsRequest(input *ReleaseHostsInput) (req *request.Request, output *ReleaseHostsOutput) { op := &request.Operation{ Name: opReleaseHosts, @@ -18092,7 +20713,7 @@ func (c *EC2) ReleaseHostsRequest(input *ReleaseHostsInput) (req *request.Reques // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation ReleaseHosts for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReleaseHosts +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReleaseHosts func (c *EC2) ReleaseHosts(input *ReleaseHostsInput) (*ReleaseHostsOutput, error) { req, out := c.ReleaseHostsRequest(input) return out, req.Send() @@ -18118,7 +20739,7 @@ const opReplaceIamInstanceProfileAssociation = "ReplaceIamInstanceProfileAssocia // ReplaceIamInstanceProfileAssociationRequest generates a "aws/request.Request" representing the // client's request for the ReplaceIamInstanceProfileAssociation operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -18139,7 +20760,7 @@ const opReplaceIamInstanceProfileAssociation = "ReplaceIamInstanceProfileAssocia // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceIamInstanceProfileAssociation +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceIamInstanceProfileAssociation func (c *EC2) ReplaceIamInstanceProfileAssociationRequest(input *ReplaceIamInstanceProfileAssociationInput) (req *request.Request, output *ReplaceIamInstanceProfileAssociationOutput) { op := &request.Operation{ Name: opReplaceIamInstanceProfileAssociation, @@ -18171,7 +20792,7 @@ func (c *EC2) ReplaceIamInstanceProfileAssociationRequest(input *ReplaceIamInsta // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation ReplaceIamInstanceProfileAssociation for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceIamInstanceProfileAssociation +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceIamInstanceProfileAssociation func (c *EC2) ReplaceIamInstanceProfileAssociation(input *ReplaceIamInstanceProfileAssociationInput) (*ReplaceIamInstanceProfileAssociationOutput, error) { req, out := c.ReplaceIamInstanceProfileAssociationRequest(input) return out, req.Send() @@ -18197,7 +20818,7 @@ const opReplaceNetworkAclAssociation = "ReplaceNetworkAclAssociation" // ReplaceNetworkAclAssociationRequest generates a "aws/request.Request" representing the // client's request for the ReplaceNetworkAclAssociation operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -18218,7 +20839,7 @@ const opReplaceNetworkAclAssociation = "ReplaceNetworkAclAssociation" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceNetworkAclAssociation +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceNetworkAclAssociation func (c *EC2) ReplaceNetworkAclAssociationRequest(input *ReplaceNetworkAclAssociationInput) (req *request.Request, output *ReplaceNetworkAclAssociationOutput) { op := &request.Operation{ Name: opReplaceNetworkAclAssociation, @@ -18242,13 +20863,15 @@ func (c *EC2) ReplaceNetworkAclAssociationRequest(input *ReplaceNetworkAclAssoci // For more information about network ACLs, see Network ACLs (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_ACLs.html) // in the Amazon Virtual Private Cloud User Guide. // +// This is an idempotent operation. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation ReplaceNetworkAclAssociation for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceNetworkAclAssociation +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceNetworkAclAssociation func (c *EC2) ReplaceNetworkAclAssociation(input *ReplaceNetworkAclAssociationInput) (*ReplaceNetworkAclAssociationOutput, error) { req, out := c.ReplaceNetworkAclAssociationRequest(input) return out, req.Send() @@ -18274,7 +20897,7 @@ const opReplaceNetworkAclEntry = "ReplaceNetworkAclEntry" // ReplaceNetworkAclEntryRequest generates a "aws/request.Request" representing the // client's request for the ReplaceNetworkAclEntry operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -18295,7 +20918,7 @@ const opReplaceNetworkAclEntry = "ReplaceNetworkAclEntry" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceNetworkAclEntry +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceNetworkAclEntry func (c *EC2) ReplaceNetworkAclEntryRequest(input *ReplaceNetworkAclEntryInput) (req *request.Request, output *ReplaceNetworkAclEntryOutput) { op := &request.Operation{ Name: opReplaceNetworkAclEntry, @@ -18326,7 +20949,7 @@ func (c *EC2) ReplaceNetworkAclEntryRequest(input *ReplaceNetworkAclEntryInput) // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation ReplaceNetworkAclEntry for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceNetworkAclEntry +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceNetworkAclEntry func (c *EC2) ReplaceNetworkAclEntry(input *ReplaceNetworkAclEntryInput) (*ReplaceNetworkAclEntryOutput, error) { req, out := c.ReplaceNetworkAclEntryRequest(input) return out, req.Send() @@ -18352,7 +20975,7 @@ const opReplaceRoute = "ReplaceRoute" // ReplaceRouteRequest generates a "aws/request.Request" representing the // client's request for the ReplaceRoute operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -18373,7 +20996,7 @@ const opReplaceRoute = "ReplaceRoute" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceRoute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceRoute func (c *EC2) ReplaceRouteRequest(input *ReplaceRouteInput) (req *request.Request, output *ReplaceRouteOutput) { op := &request.Operation{ Name: opReplaceRoute, @@ -18408,7 +21031,7 @@ func (c *EC2) ReplaceRouteRequest(input *ReplaceRouteInput) (req *request.Reques // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation ReplaceRoute for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceRoute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceRoute func (c *EC2) ReplaceRoute(input *ReplaceRouteInput) (*ReplaceRouteOutput, error) { req, out := c.ReplaceRouteRequest(input) return out, req.Send() @@ -18434,7 +21057,7 @@ const opReplaceRouteTableAssociation = "ReplaceRouteTableAssociation" // ReplaceRouteTableAssociationRequest generates a "aws/request.Request" representing the // client's request for the ReplaceRouteTableAssociation operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -18455,7 +21078,7 @@ const opReplaceRouteTableAssociation = "ReplaceRouteTableAssociation" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceRouteTableAssociation +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceRouteTableAssociation func (c *EC2) ReplaceRouteTableAssociationRequest(input *ReplaceRouteTableAssociationInput) (req *request.Request, output *ReplaceRouteTableAssociationOutput) { op := &request.Operation{ Name: opReplaceRouteTableAssociation, @@ -18490,7 +21113,7 @@ func (c *EC2) ReplaceRouteTableAssociationRequest(input *ReplaceRouteTableAssoci // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation ReplaceRouteTableAssociation for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceRouteTableAssociation +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceRouteTableAssociation func (c *EC2) ReplaceRouteTableAssociation(input *ReplaceRouteTableAssociationInput) (*ReplaceRouteTableAssociationOutput, error) { req, out := c.ReplaceRouteTableAssociationRequest(input) return out, req.Send() @@ -18516,7 +21139,7 @@ const opReportInstanceStatus = "ReportInstanceStatus" // ReportInstanceStatusRequest generates a "aws/request.Request" representing the // client's request for the ReportInstanceStatus operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -18537,7 +21160,7 @@ const opReportInstanceStatus = "ReportInstanceStatus" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReportInstanceStatus +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReportInstanceStatus func (c *EC2) ReportInstanceStatusRequest(input *ReportInstanceStatusInput) (req *request.Request, output *ReportInstanceStatusOutput) { op := &request.Operation{ Name: opReportInstanceStatus, @@ -18572,7 +21195,7 @@ func (c *EC2) ReportInstanceStatusRequest(input *ReportInstanceStatusInput) (req // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation ReportInstanceStatus for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReportInstanceStatus +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReportInstanceStatus func (c *EC2) ReportInstanceStatus(input *ReportInstanceStatusInput) (*ReportInstanceStatusOutput, error) { req, out := c.ReportInstanceStatusRequest(input) return out, req.Send() @@ -18598,7 +21221,7 @@ const opRequestSpotFleet = "RequestSpotFleet" // RequestSpotFleetRequest generates a "aws/request.Request" representing the // client's request for the RequestSpotFleet operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -18619,7 +21242,7 @@ const opRequestSpotFleet = "RequestSpotFleet" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RequestSpotFleet +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RequestSpotFleet func (c *EC2) RequestSpotFleetRequest(input *RequestSpotFleetInput) (req *request.Request, output *RequestSpotFleetOutput) { op := &request.Operation{ Name: opRequestSpotFleet, @@ -18638,23 +21261,31 @@ func (c *EC2) RequestSpotFleetRequest(input *RequestSpotFleetInput) (req *reques // RequestSpotFleet API operation for Amazon Elastic Compute Cloud. // -// Creates a Spot fleet request. +// Creates a Spot Fleet request. +// +// The Spot Fleet request specifies the total target capacity and the On-Demand +// target capacity. Amazon EC2 calculates the difference between the total capacity +// and On-Demand capacity, and launches the difference as Spot capacity. // // You can submit a single request that includes multiple launch specifications // that vary by instance type, AMI, Availability Zone, or subnet. // -// By default, the Spot fleet requests Spot instances in the Spot pool where +// By default, the Spot Fleet requests Spot Instances in the Spot pool where // the price per unit is the lowest. Each launch specification can include its // own instance weighting that reflects the value of the instance type to your // application workload. // -// Alternatively, you can specify that the Spot fleet distribute the target +// Alternatively, you can specify that the Spot Fleet distribute the target // capacity across the Spot pools included in its launch specifications. By -// ensuring that the Spot instances in your Spot fleet are in different Spot +// ensuring that the Spot Instances in your Spot Fleet are in different Spot // pools, you can improve the availability of your fleet. // +// You can specify tags for the Spot Instances. You cannot tag other resource +// types in a Spot Fleet request because only the instance resource type is +// supported. +// // For more information, see Spot Fleet Requests (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-fleet-requests.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide for Linux Instances. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -18662,7 +21293,7 @@ func (c *EC2) RequestSpotFleetRequest(input *RequestSpotFleetInput) (req *reques // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation RequestSpotFleet for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RequestSpotFleet +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RequestSpotFleet func (c *EC2) RequestSpotFleet(input *RequestSpotFleetInput) (*RequestSpotFleetOutput, error) { req, out := c.RequestSpotFleetRequest(input) return out, req.Send() @@ -18688,7 +21319,7 @@ const opRequestSpotInstances = "RequestSpotInstances" // RequestSpotInstancesRequest generates a "aws/request.Request" representing the // client's request for the RequestSpotInstances operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -18709,7 +21340,7 @@ const opRequestSpotInstances = "RequestSpotInstances" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RequestSpotInstances +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RequestSpotInstances func (c *EC2) RequestSpotInstancesRequest(input *RequestSpotInstancesInput) (req *request.Request, output *RequestSpotInstancesOutput) { op := &request.Operation{ Name: opRequestSpotInstances, @@ -18728,12 +21359,10 @@ func (c *EC2) RequestSpotInstancesRequest(input *RequestSpotInstancesInput) (req // RequestSpotInstances API operation for Amazon Elastic Compute Cloud. // -// Creates a Spot instance request. Spot instances are instances that Amazon -// EC2 launches when the bid price that you specify exceeds the current Spot -// price. Amazon EC2 periodically sets the Spot price based on available Spot -// Instance capacity and current Spot instance requests. For more information, -// see Spot Instance Requests (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-requests.html) -// in the Amazon Elastic Compute Cloud User Guide. +// Creates a Spot Instance request. +// +// For more information, see Spot Instance Requests (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-requests.html) +// in the Amazon EC2 User Guide for Linux Instances. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -18741,7 +21370,7 @@ func (c *EC2) RequestSpotInstancesRequest(input *RequestSpotInstancesInput) (req // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation RequestSpotInstances for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RequestSpotInstances +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RequestSpotInstances func (c *EC2) RequestSpotInstances(input *RequestSpotInstancesInput) (*RequestSpotInstancesOutput, error) { req, out := c.RequestSpotInstancesRequest(input) return out, req.Send() @@ -18767,7 +21396,7 @@ const opResetFpgaImageAttribute = "ResetFpgaImageAttribute" // ResetFpgaImageAttributeRequest generates a "aws/request.Request" representing the // client's request for the ResetFpgaImageAttribute operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -18788,7 +21417,7 @@ const opResetFpgaImageAttribute = "ResetFpgaImageAttribute" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetFpgaImageAttribute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetFpgaImageAttribute func (c *EC2) ResetFpgaImageAttributeRequest(input *ResetFpgaImageAttributeInput) (req *request.Request, output *ResetFpgaImageAttributeOutput) { op := &request.Operation{ Name: opResetFpgaImageAttribute, @@ -18816,7 +21445,7 @@ func (c *EC2) ResetFpgaImageAttributeRequest(input *ResetFpgaImageAttributeInput // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation ResetFpgaImageAttribute for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetFpgaImageAttribute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetFpgaImageAttribute func (c *EC2) ResetFpgaImageAttribute(input *ResetFpgaImageAttributeInput) (*ResetFpgaImageAttributeOutput, error) { req, out := c.ResetFpgaImageAttributeRequest(input) return out, req.Send() @@ -18842,7 +21471,7 @@ const opResetImageAttribute = "ResetImageAttribute" // ResetImageAttributeRequest generates a "aws/request.Request" representing the // client's request for the ResetImageAttribute operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -18863,7 +21492,7 @@ const opResetImageAttribute = "ResetImageAttribute" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetImageAttribute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetImageAttribute func (c *EC2) ResetImageAttributeRequest(input *ResetImageAttributeInput) (req *request.Request, output *ResetImageAttributeOutput) { op := &request.Operation{ Name: opResetImageAttribute, @@ -18894,7 +21523,7 @@ func (c *EC2) ResetImageAttributeRequest(input *ResetImageAttributeInput) (req * // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation ResetImageAttribute for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetImageAttribute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetImageAttribute func (c *EC2) ResetImageAttribute(input *ResetImageAttributeInput) (*ResetImageAttributeOutput, error) { req, out := c.ResetImageAttributeRequest(input) return out, req.Send() @@ -18920,7 +21549,7 @@ const opResetInstanceAttribute = "ResetInstanceAttribute" // ResetInstanceAttributeRequest generates a "aws/request.Request" representing the // client's request for the ResetInstanceAttribute operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -18941,7 +21570,7 @@ const opResetInstanceAttribute = "ResetInstanceAttribute" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetInstanceAttribute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetInstanceAttribute func (c *EC2) ResetInstanceAttributeRequest(input *ResetInstanceAttributeInput) (req *request.Request, output *ResetInstanceAttributeOutput) { op := &request.Operation{ Name: opResetInstanceAttribute, @@ -18978,7 +21607,7 @@ func (c *EC2) ResetInstanceAttributeRequest(input *ResetInstanceAttributeInput) // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation ResetInstanceAttribute for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetInstanceAttribute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetInstanceAttribute func (c *EC2) ResetInstanceAttribute(input *ResetInstanceAttributeInput) (*ResetInstanceAttributeOutput, error) { req, out := c.ResetInstanceAttributeRequest(input) return out, req.Send() @@ -19004,7 +21633,7 @@ const opResetNetworkInterfaceAttribute = "ResetNetworkInterfaceAttribute" // ResetNetworkInterfaceAttributeRequest generates a "aws/request.Request" representing the // client's request for the ResetNetworkInterfaceAttribute operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -19025,7 +21654,7 @@ const opResetNetworkInterfaceAttribute = "ResetNetworkInterfaceAttribute" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetNetworkInterfaceAttribute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetNetworkInterfaceAttribute func (c *EC2) ResetNetworkInterfaceAttributeRequest(input *ResetNetworkInterfaceAttributeInput) (req *request.Request, output *ResetNetworkInterfaceAttributeOutput) { op := &request.Operation{ Name: opResetNetworkInterfaceAttribute, @@ -19055,7 +21684,7 @@ func (c *EC2) ResetNetworkInterfaceAttributeRequest(input *ResetNetworkInterface // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation ResetNetworkInterfaceAttribute for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetNetworkInterfaceAttribute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetNetworkInterfaceAttribute func (c *EC2) ResetNetworkInterfaceAttribute(input *ResetNetworkInterfaceAttributeInput) (*ResetNetworkInterfaceAttributeOutput, error) { req, out := c.ResetNetworkInterfaceAttributeRequest(input) return out, req.Send() @@ -19081,7 +21710,7 @@ const opResetSnapshotAttribute = "ResetSnapshotAttribute" // ResetSnapshotAttributeRequest generates a "aws/request.Request" representing the // client's request for the ResetSnapshotAttribute operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -19102,7 +21731,7 @@ const opResetSnapshotAttribute = "ResetSnapshotAttribute" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetSnapshotAttribute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetSnapshotAttribute func (c *EC2) ResetSnapshotAttributeRequest(input *ResetSnapshotAttributeInput) (req *request.Request, output *ResetSnapshotAttributeOutput) { op := &request.Operation{ Name: opResetSnapshotAttribute, @@ -19135,7 +21764,7 @@ func (c *EC2) ResetSnapshotAttributeRequest(input *ResetSnapshotAttributeInput) // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation ResetSnapshotAttribute for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetSnapshotAttribute +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetSnapshotAttribute func (c *EC2) ResetSnapshotAttribute(input *ResetSnapshotAttributeInput) (*ResetSnapshotAttributeOutput, error) { req, out := c.ResetSnapshotAttributeRequest(input) return out, req.Send() @@ -19161,7 +21790,7 @@ const opRestoreAddressToClassic = "RestoreAddressToClassic" // RestoreAddressToClassicRequest generates a "aws/request.Request" representing the // client's request for the RestoreAddressToClassic operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -19182,7 +21811,7 @@ const opRestoreAddressToClassic = "RestoreAddressToClassic" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RestoreAddressToClassic +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RestoreAddressToClassic func (c *EC2) RestoreAddressToClassicRequest(input *RestoreAddressToClassicInput) (req *request.Request, output *RestoreAddressToClassicOutput) { op := &request.Operation{ Name: opRestoreAddressToClassic, @@ -19212,7 +21841,7 @@ func (c *EC2) RestoreAddressToClassicRequest(input *RestoreAddressToClassicInput // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation RestoreAddressToClassic for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RestoreAddressToClassic +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RestoreAddressToClassic func (c *EC2) RestoreAddressToClassic(input *RestoreAddressToClassicInput) (*RestoreAddressToClassicOutput, error) { req, out := c.RestoreAddressToClassicRequest(input) return out, req.Send() @@ -19238,7 +21867,7 @@ const opRevokeSecurityGroupEgress = "RevokeSecurityGroupEgress" // RevokeSecurityGroupEgressRequest generates a "aws/request.Request" representing the // client's request for the RevokeSecurityGroupEgress operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -19259,7 +21888,7 @@ const opRevokeSecurityGroupEgress = "RevokeSecurityGroupEgress" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RevokeSecurityGroupEgress +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RevokeSecurityGroupEgress func (c *EC2) RevokeSecurityGroupEgressRequest(input *RevokeSecurityGroupEgressInput) (req *request.Request, output *RevokeSecurityGroupEgressOutput) { op := &request.Operation{ Name: opRevokeSecurityGroupEgress, @@ -19300,7 +21929,7 @@ func (c *EC2) RevokeSecurityGroupEgressRequest(input *RevokeSecurityGroupEgressI // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation RevokeSecurityGroupEgress for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RevokeSecurityGroupEgress +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RevokeSecurityGroupEgress func (c *EC2) RevokeSecurityGroupEgress(input *RevokeSecurityGroupEgressInput) (*RevokeSecurityGroupEgressOutput, error) { req, out := c.RevokeSecurityGroupEgressRequest(input) return out, req.Send() @@ -19326,7 +21955,7 @@ const opRevokeSecurityGroupIngress = "RevokeSecurityGroupIngress" // RevokeSecurityGroupIngressRequest generates a "aws/request.Request" representing the // client's request for the RevokeSecurityGroupIngress operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -19347,7 +21976,7 @@ const opRevokeSecurityGroupIngress = "RevokeSecurityGroupIngress" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RevokeSecurityGroupIngress +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RevokeSecurityGroupIngress func (c *EC2) RevokeSecurityGroupIngressRequest(input *RevokeSecurityGroupIngressInput) (req *request.Request, output *RevokeSecurityGroupIngressOutput) { op := &request.Operation{ Name: opRevokeSecurityGroupIngress, @@ -19391,7 +22020,7 @@ func (c *EC2) RevokeSecurityGroupIngressRequest(input *RevokeSecurityGroupIngres // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation RevokeSecurityGroupIngress for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RevokeSecurityGroupIngress +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RevokeSecurityGroupIngress func (c *EC2) RevokeSecurityGroupIngress(input *RevokeSecurityGroupIngressInput) (*RevokeSecurityGroupIngressOutput, error) { req, out := c.RevokeSecurityGroupIngressRequest(input) return out, req.Send() @@ -19417,7 +22046,7 @@ const opRunInstances = "RunInstances" // RunInstancesRequest generates a "aws/request.Request" representing the // client's request for the RunInstances operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -19438,7 +22067,7 @@ const opRunInstances = "RunInstances" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RunInstances +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RunInstances func (c *EC2) RunInstancesRequest(input *RunInstancesInput) (req *request.Request, output *Reservation) { op := &request.Operation{ Name: opRunInstances, @@ -19487,6 +22116,11 @@ func (c *EC2) RunInstancesRequest(input *RunInstancesInput) (req *request.Reques // * If any of the AMIs have a product code attached for which the user has // not subscribed, the request fails. // +// You can create a launch template (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html), +// which is a resource that contains the parameters to launch an instance. When +// you launch an instance using RunInstances, you can specify the launch template +// instead of specifying the launch parameters. +// // To ensure faster instance launches, break up large requests into smaller // batches. For example, create five separate launch requests for 100 instances // each instead of one launch request for 500 instances. @@ -19513,7 +22147,7 @@ func (c *EC2) RunInstancesRequest(input *RunInstancesInput) (req *request.Reques // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation RunInstances for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RunInstances +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RunInstances func (c *EC2) RunInstances(input *RunInstancesInput) (*Reservation, error) { req, out := c.RunInstancesRequest(input) return out, req.Send() @@ -19539,7 +22173,7 @@ const opRunScheduledInstances = "RunScheduledInstances" // RunScheduledInstancesRequest generates a "aws/request.Request" representing the // client's request for the RunScheduledInstances operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -19560,7 +22194,7 @@ const opRunScheduledInstances = "RunScheduledInstances" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RunScheduledInstances +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RunScheduledInstances func (c *EC2) RunScheduledInstancesRequest(input *RunScheduledInstancesInput) (req *request.Request, output *RunScheduledInstancesOutput) { op := &request.Operation{ Name: opRunScheduledInstances, @@ -19597,7 +22231,7 @@ func (c *EC2) RunScheduledInstancesRequest(input *RunScheduledInstancesInput) (r // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation RunScheduledInstances for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RunScheduledInstances +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RunScheduledInstances func (c *EC2) RunScheduledInstances(input *RunScheduledInstancesInput) (*RunScheduledInstancesOutput, error) { req, out := c.RunScheduledInstancesRequest(input) return out, req.Send() @@ -19623,7 +22257,7 @@ const opStartInstances = "StartInstances" // StartInstancesRequest generates a "aws/request.Request" representing the // client's request for the StartInstances operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -19644,7 +22278,7 @@ const opStartInstances = "StartInstances" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/StartInstances +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/StartInstances func (c *EC2) StartInstancesRequest(input *StartInstancesInput) (req *request.Request, output *StartInstancesOutput) { op := &request.Operation{ Name: opStartInstances, @@ -19693,7 +22327,7 @@ func (c *EC2) StartInstancesRequest(input *StartInstancesInput) (req *request.Re // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation StartInstances for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/StartInstances +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/StartInstances func (c *EC2) StartInstances(input *StartInstancesInput) (*StartInstancesOutput, error) { req, out := c.StartInstancesRequest(input) return out, req.Send() @@ -19719,7 +22353,7 @@ const opStopInstances = "StopInstances" // StopInstancesRequest generates a "aws/request.Request" representing the // client's request for the StopInstances operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -19740,7 +22374,7 @@ const opStopInstances = "StopInstances" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/StopInstances +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/StopInstances func (c *EC2) StopInstancesRequest(input *StopInstancesInput) (req *request.Request, output *StopInstancesOutput) { op := &request.Operation{ Name: opStopInstances, @@ -19799,7 +22433,7 @@ func (c *EC2) StopInstancesRequest(input *StopInstancesInput) (req *request.Requ // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation StopInstances for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/StopInstances +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/StopInstances func (c *EC2) StopInstances(input *StopInstancesInput) (*StopInstancesOutput, error) { req, out := c.StopInstancesRequest(input) return out, req.Send() @@ -19825,7 +22459,7 @@ const opTerminateInstances = "TerminateInstances" // TerminateInstancesRequest generates a "aws/request.Request" representing the // client's request for the TerminateInstances operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -19846,7 +22480,7 @@ const opTerminateInstances = "TerminateInstances" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/TerminateInstances +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/TerminateInstances func (c *EC2) TerminateInstancesRequest(input *TerminateInstancesInput) (req *request.Request, output *TerminateInstancesOutput) { op := &request.Operation{ Name: opTerminateInstances, @@ -19897,7 +22531,7 @@ func (c *EC2) TerminateInstancesRequest(input *TerminateInstancesInput) (req *re // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation TerminateInstances for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/TerminateInstances +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/TerminateInstances func (c *EC2) TerminateInstances(input *TerminateInstancesInput) (*TerminateInstancesOutput, error) { req, out := c.TerminateInstancesRequest(input) return out, req.Send() @@ -19923,7 +22557,7 @@ const opUnassignIpv6Addresses = "UnassignIpv6Addresses" // UnassignIpv6AddressesRequest generates a "aws/request.Request" representing the // client's request for the UnassignIpv6Addresses operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -19944,7 +22578,7 @@ const opUnassignIpv6Addresses = "UnassignIpv6Addresses" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UnassignIpv6Addresses +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UnassignIpv6Addresses func (c *EC2) UnassignIpv6AddressesRequest(input *UnassignIpv6AddressesInput) (req *request.Request, output *UnassignIpv6AddressesOutput) { op := &request.Operation{ Name: opUnassignIpv6Addresses, @@ -19971,7 +22605,7 @@ func (c *EC2) UnassignIpv6AddressesRequest(input *UnassignIpv6AddressesInput) (r // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation UnassignIpv6Addresses for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UnassignIpv6Addresses +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UnassignIpv6Addresses func (c *EC2) UnassignIpv6Addresses(input *UnassignIpv6AddressesInput) (*UnassignIpv6AddressesOutput, error) { req, out := c.UnassignIpv6AddressesRequest(input) return out, req.Send() @@ -19997,7 +22631,7 @@ const opUnassignPrivateIpAddresses = "UnassignPrivateIpAddresses" // UnassignPrivateIpAddressesRequest generates a "aws/request.Request" representing the // client's request for the UnassignPrivateIpAddresses operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -20018,7 +22652,7 @@ const opUnassignPrivateIpAddresses = "UnassignPrivateIpAddresses" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UnassignPrivateIpAddresses +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UnassignPrivateIpAddresses func (c *EC2) UnassignPrivateIpAddressesRequest(input *UnassignPrivateIpAddressesInput) (req *request.Request, output *UnassignPrivateIpAddressesOutput) { op := &request.Operation{ Name: opUnassignPrivateIpAddresses, @@ -20047,7 +22681,7 @@ func (c *EC2) UnassignPrivateIpAddressesRequest(input *UnassignPrivateIpAddresse // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation UnassignPrivateIpAddresses for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UnassignPrivateIpAddresses +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UnassignPrivateIpAddresses func (c *EC2) UnassignPrivateIpAddresses(input *UnassignPrivateIpAddressesInput) (*UnassignPrivateIpAddressesOutput, error) { req, out := c.UnassignPrivateIpAddressesRequest(input) return out, req.Send() @@ -20073,7 +22707,7 @@ const opUnmonitorInstances = "UnmonitorInstances" // UnmonitorInstancesRequest generates a "aws/request.Request" representing the // client's request for the UnmonitorInstances operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -20094,7 +22728,7 @@ const opUnmonitorInstances = "UnmonitorInstances" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UnmonitorInstances +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UnmonitorInstances func (c *EC2) UnmonitorInstancesRequest(input *UnmonitorInstancesInput) (req *request.Request, output *UnmonitorInstancesOutput) { op := &request.Operation{ Name: opUnmonitorInstances, @@ -20123,7 +22757,7 @@ func (c *EC2) UnmonitorInstancesRequest(input *UnmonitorInstancesInput) (req *re // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation UnmonitorInstances for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UnmonitorInstances +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UnmonitorInstances func (c *EC2) UnmonitorInstances(input *UnmonitorInstancesInput) (*UnmonitorInstancesOutput, error) { req, out := c.UnmonitorInstancesRequest(input) return out, req.Send() @@ -20149,7 +22783,7 @@ const opUpdateSecurityGroupRuleDescriptionsEgress = "UpdateSecurityGroupRuleDesc // UpdateSecurityGroupRuleDescriptionsEgressRequest generates a "aws/request.Request" representing the // client's request for the UpdateSecurityGroupRuleDescriptionsEgress operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -20170,7 +22804,7 @@ const opUpdateSecurityGroupRuleDescriptionsEgress = "UpdateSecurityGroupRuleDesc // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UpdateSecurityGroupRuleDescriptionsEgress +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UpdateSecurityGroupRuleDescriptionsEgress func (c *EC2) UpdateSecurityGroupRuleDescriptionsEgressRequest(input *UpdateSecurityGroupRuleDescriptionsEgressInput) (req *request.Request, output *UpdateSecurityGroupRuleDescriptionsEgressOutput) { op := &request.Operation{ Name: opUpdateSecurityGroupRuleDescriptionsEgress, @@ -20203,7 +22837,7 @@ func (c *EC2) UpdateSecurityGroupRuleDescriptionsEgressRequest(input *UpdateSecu // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation UpdateSecurityGroupRuleDescriptionsEgress for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UpdateSecurityGroupRuleDescriptionsEgress +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UpdateSecurityGroupRuleDescriptionsEgress func (c *EC2) UpdateSecurityGroupRuleDescriptionsEgress(input *UpdateSecurityGroupRuleDescriptionsEgressInput) (*UpdateSecurityGroupRuleDescriptionsEgressOutput, error) { req, out := c.UpdateSecurityGroupRuleDescriptionsEgressRequest(input) return out, req.Send() @@ -20229,7 +22863,7 @@ const opUpdateSecurityGroupRuleDescriptionsIngress = "UpdateSecurityGroupRuleDes // UpdateSecurityGroupRuleDescriptionsIngressRequest generates a "aws/request.Request" representing the // client's request for the UpdateSecurityGroupRuleDescriptionsIngress operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -20250,7 +22884,7 @@ const opUpdateSecurityGroupRuleDescriptionsIngress = "UpdateSecurityGroupRuleDes // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UpdateSecurityGroupRuleDescriptionsIngress +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UpdateSecurityGroupRuleDescriptionsIngress func (c *EC2) UpdateSecurityGroupRuleDescriptionsIngressRequest(input *UpdateSecurityGroupRuleDescriptionsIngressInput) (req *request.Request, output *UpdateSecurityGroupRuleDescriptionsIngressOutput) { op := &request.Operation{ Name: opUpdateSecurityGroupRuleDescriptionsIngress, @@ -20283,7 +22917,7 @@ func (c *EC2) UpdateSecurityGroupRuleDescriptionsIngressRequest(input *UpdateSec // // See the AWS API reference guide for Amazon Elastic Compute Cloud's // API operation UpdateSecurityGroupRuleDescriptionsIngress for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UpdateSecurityGroupRuleDescriptionsIngress +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UpdateSecurityGroupRuleDescriptionsIngress func (c *EC2) UpdateSecurityGroupRuleDescriptionsIngress(input *UpdateSecurityGroupRuleDescriptionsIngressInput) (*UpdateSecurityGroupRuleDescriptionsIngressOutput, error) { req, out := c.UpdateSecurityGroupRuleDescriptionsIngressRequest(input) return out, req.Send() @@ -20306,7 +22940,6 @@ func (c *EC2) UpdateSecurityGroupRuleDescriptionsIngressWithContext(ctx aws.Cont } // Contains the parameters for accepting the quote. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AcceptReservedInstancesExchangeQuoteRequest type AcceptReservedInstancesExchangeQuoteInput struct { _ struct{} `type:"structure"` @@ -20316,14 +22949,14 @@ type AcceptReservedInstancesExchangeQuoteInput struct { // it is UnauthorizedOperation. DryRun *bool `type:"boolean"` - // The IDs of the Convertible Reserved Instances to exchange for other Convertible - // Reserved Instances of the same or higher value. + // The IDs of the Convertible Reserved Instances to exchange for another Convertible + // Reserved Instance of the same or higher value. // // ReservedInstanceIds is a required field ReservedInstanceIds []*string `locationName:"ReservedInstanceId" locationNameList:"ReservedInstanceId" type:"list" required:"true"` - // The configurations of the Convertible Reserved Instance offerings that you - // are purchasing in this exchange. + // The configuration of the target Convertible Reserved Instance to exchange + // for your current Convertible Reserved Instances. TargetConfigurations []*TargetConfigurationRequest `locationName:"TargetConfiguration" locationNameList:"TargetConfigurationRequest" type:"list"` } @@ -20379,7 +23012,6 @@ func (s *AcceptReservedInstancesExchangeQuoteInput) SetTargetConfigurations(v [] } // The result of the exchange and whether it was successful. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AcceptReservedInstancesExchangeQuoteResult type AcceptReservedInstancesExchangeQuoteOutput struct { _ struct{} `type:"structure"` @@ -20403,8 +23035,94 @@ func (s *AcceptReservedInstancesExchangeQuoteOutput) SetExchangeId(v string) *Ac return s } +type AcceptVpcEndpointConnectionsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the endpoint service. + // + // ServiceId is a required field + ServiceId *string `type:"string" required:"true"` + + // The IDs of one or more interface VPC endpoints. + // + // VpcEndpointIds is a required field + VpcEndpointIds []*string `locationName:"VpcEndpointId" locationNameList:"item" type:"list" required:"true"` +} + +// String returns the string representation +func (s AcceptVpcEndpointConnectionsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AcceptVpcEndpointConnectionsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AcceptVpcEndpointConnectionsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AcceptVpcEndpointConnectionsInput"} + if s.ServiceId == nil { + invalidParams.Add(request.NewErrParamRequired("ServiceId")) + } + if s.VpcEndpointIds == nil { + invalidParams.Add(request.NewErrParamRequired("VpcEndpointIds")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *AcceptVpcEndpointConnectionsInput) SetDryRun(v bool) *AcceptVpcEndpointConnectionsInput { + s.DryRun = &v + return s +} + +// SetServiceId sets the ServiceId field's value. +func (s *AcceptVpcEndpointConnectionsInput) SetServiceId(v string) *AcceptVpcEndpointConnectionsInput { + s.ServiceId = &v + return s +} + +// SetVpcEndpointIds sets the VpcEndpointIds field's value. +func (s *AcceptVpcEndpointConnectionsInput) SetVpcEndpointIds(v []*string) *AcceptVpcEndpointConnectionsInput { + s.VpcEndpointIds = v + return s +} + +type AcceptVpcEndpointConnectionsOutput struct { + _ struct{} `type:"structure"` + + // Information about the interface endpoints that were not accepted, if applicable. + Unsuccessful []*UnsuccessfulItem `locationName:"unsuccessful" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s AcceptVpcEndpointConnectionsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AcceptVpcEndpointConnectionsOutput) GoString() string { + return s.String() +} + +// SetUnsuccessful sets the Unsuccessful field's value. +func (s *AcceptVpcEndpointConnectionsOutput) SetUnsuccessful(v []*UnsuccessfulItem) *AcceptVpcEndpointConnectionsOutput { + s.Unsuccessful = v + return s +} + // Contains the parameters for AcceptVpcPeeringConnection. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AcceptVpcPeeringConnectionRequest type AcceptVpcPeeringConnectionInput struct { _ struct{} `type:"structure"` @@ -20414,7 +23132,8 @@ type AcceptVpcPeeringConnectionInput struct { // it is UnauthorizedOperation. DryRun *bool `locationName:"dryRun" type:"boolean"` - // The ID of the VPC peering connection. + // The ID of the VPC peering connection. You must specify this parameter in + // the request. VpcPeeringConnectionId *string `locationName:"vpcPeeringConnectionId" type:"string"` } @@ -20441,7 +23160,6 @@ func (s *AcceptVpcPeeringConnectionInput) SetVpcPeeringConnectionId(v string) *A } // Contains the output of AcceptVpcPeeringConnection. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AcceptVpcPeeringConnectionResult type AcceptVpcPeeringConnectionOutput struct { _ struct{} `type:"structure"` @@ -20466,7 +23184,6 @@ func (s *AcceptVpcPeeringConnectionOutput) SetVpcPeeringConnection(v *VpcPeering } // Describes an account attribute. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AccountAttribute type AccountAttribute struct { _ struct{} `type:"structure"` @@ -20500,7 +23217,6 @@ func (s *AccountAttribute) SetAttributeValues(v []*AccountAttributeValue) *Accou } // Describes a value of an account attribute. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AccountAttributeValue type AccountAttributeValue struct { _ struct{} `type:"structure"` @@ -20524,8 +23240,7 @@ func (s *AccountAttributeValue) SetAttributeValue(v string) *AccountAttributeVal return s } -// Describes a running instance in a Spot fleet. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ActiveInstance +// Describes a running instance in a Spot Fleet. type ActiveInstance struct { _ struct{} `type:"structure"` @@ -20540,7 +23255,7 @@ type ActiveInstance struct { // The instance type. InstanceType *string `locationName:"instanceType" type:"string"` - // The ID of the Spot instance request. + // The ID of the Spot Instance request. SpotInstanceRequestId *string `locationName:"spotInstanceRequestId" type:"string"` } @@ -20579,7 +23294,6 @@ func (s *ActiveInstance) SetSpotInstanceRequestId(v string) *ActiveInstance { } // Describes an Elastic IP address. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/Address type Address struct { _ struct{} `type:"structure"` @@ -20608,6 +23322,9 @@ type Address struct { // The Elastic IP address. PublicIp *string `locationName:"publicIp" type:"string"` + + // Any tags assigned to the Elastic IP address. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` } // String returns the string representation @@ -20668,8 +23385,13 @@ func (s *Address) SetPublicIp(v string) *Address { return s } +// SetTags sets the Tags field's value. +func (s *Address) SetTags(v []*Tag) *Address { + s.Tags = v + return s +} + // Contains the parameters for AllocateAddress. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AllocateAddressRequest type AllocateAddressInput struct { _ struct{} `type:"structure"` @@ -20717,7 +23439,6 @@ func (s *AllocateAddressInput) SetDryRun(v bool) *AllocateAddressInput { } // Contains the output of AllocateAddress. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AllocateAddressResult type AllocateAddressOutput struct { _ struct{} `type:"structure"` @@ -20762,7 +23483,6 @@ func (s *AllocateAddressOutput) SetPublicIp(v string) *AllocateAddressOutput { } // Contains the parameters for AllocateHosts. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AllocateHostsRequest type AllocateHostsInput struct { _ struct{} `type:"structure"` @@ -20857,7 +23577,6 @@ func (s *AllocateHostsInput) SetQuantity(v int64) *AllocateHostsInput { } // Contains the output of AllocateHosts. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AllocateHostsResult type AllocateHostsOutput struct { _ struct{} `type:"structure"` @@ -20882,7 +23601,39 @@ func (s *AllocateHostsOutput) SetHostIds(v []*string) *AllocateHostsOutput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssignIpv6AddressesRequest +// Describes a principal. +type AllowedPrincipal struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) of the principal. + Principal *string `locationName:"principal" type:"string"` + + // The type of principal. + PrincipalType *string `locationName:"principalType" type:"string" enum:"PrincipalType"` +} + +// String returns the string representation +func (s AllowedPrincipal) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AllowedPrincipal) GoString() string { + return s.String() +} + +// SetPrincipal sets the Principal field's value. +func (s *AllowedPrincipal) SetPrincipal(v string) *AllowedPrincipal { + s.Principal = &v + return s +} + +// SetPrincipalType sets the PrincipalType field's value. +func (s *AllowedPrincipal) SetPrincipalType(v string) *AllowedPrincipal { + s.PrincipalType = &v + return s +} + type AssignIpv6AddressesInput struct { _ struct{} `type:"structure"` @@ -20942,7 +23693,6 @@ func (s *AssignIpv6AddressesInput) SetNetworkInterfaceId(v string) *AssignIpv6Ad return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssignIpv6AddressesResult type AssignIpv6AddressesOutput struct { _ struct{} `type:"structure"` @@ -20976,7 +23726,6 @@ func (s *AssignIpv6AddressesOutput) SetNetworkInterfaceId(v string) *AssignIpv6A } // Contains the parameters for AssignPrivateIpAddresses. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssignPrivateIpAddressesRequest type AssignPrivateIpAddressesInput struct { _ struct{} `type:"structure"` @@ -21049,7 +23798,6 @@ func (s *AssignPrivateIpAddressesInput) SetSecondaryPrivateIpAddressCount(v int6 return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssignPrivateIpAddressesOutput type AssignPrivateIpAddressesOutput struct { _ struct{} `type:"structure"` } @@ -21065,7 +23813,6 @@ func (s AssignPrivateIpAddressesOutput) GoString() string { } // Contains the parameters for AssociateAddress. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateAddressRequest type AssociateAddressInput struct { _ struct{} `type:"structure"` @@ -21158,7 +23905,6 @@ func (s *AssociateAddressInput) SetPublicIp(v string) *AssociateAddressInput { } // Contains the output of AssociateAddress. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateAddressResult type AssociateAddressOutput struct { _ struct{} `type:"structure"` @@ -21184,7 +23930,6 @@ func (s *AssociateAddressOutput) SetAssociationId(v string) *AssociateAddressOut } // Contains the parameters for AssociateDhcpOptions. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateDhcpOptionsRequest type AssociateDhcpOptionsInput struct { _ struct{} `type:"structure"` @@ -21250,7 +23995,6 @@ func (s *AssociateDhcpOptionsInput) SetVpcId(v string) *AssociateDhcpOptionsInpu return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateDhcpOptionsOutput type AssociateDhcpOptionsOutput struct { _ struct{} `type:"structure"` } @@ -21265,7 +24009,6 @@ func (s AssociateDhcpOptionsOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateIamInstanceProfileRequest type AssociateIamInstanceProfileInput struct { _ struct{} `type:"structure"` @@ -21318,7 +24061,6 @@ func (s *AssociateIamInstanceProfileInput) SetInstanceId(v string) *AssociateIam return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateIamInstanceProfileResult type AssociateIamInstanceProfileOutput struct { _ struct{} `type:"structure"` @@ -21343,7 +24085,6 @@ func (s *AssociateIamInstanceProfileOutput) SetIamInstanceProfileAssociation(v * } // Contains the parameters for AssociateRouteTable. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateRouteTableRequest type AssociateRouteTableInput struct { _ struct{} `type:"structure"` @@ -21409,7 +24150,6 @@ func (s *AssociateRouteTableInput) SetSubnetId(v string) *AssociateRouteTableInp } // Contains the output of AssociateRouteTable. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateRouteTableResult type AssociateRouteTableOutput struct { _ struct{} `type:"structure"` @@ -21433,7 +24173,6 @@ func (s *AssociateRouteTableOutput) SetAssociationId(v string) *AssociateRouteTa return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateSubnetCidrBlockRequest type AssociateSubnetCidrBlockInput struct { _ struct{} `type:"structure"` @@ -21486,7 +24225,6 @@ func (s *AssociateSubnetCidrBlockInput) SetSubnetId(v string) *AssociateSubnetCi return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateSubnetCidrBlockResult type AssociateSubnetCidrBlockOutput struct { _ struct{} `type:"structure"` @@ -21519,7 +24257,6 @@ func (s *AssociateSubnetCidrBlockOutput) SetSubnetId(v string) *AssociateSubnetC return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateVpcCidrBlockRequest type AssociateVpcCidrBlockInput struct { _ struct{} `type:"structure"` @@ -21578,7 +24315,6 @@ func (s *AssociateVpcCidrBlockInput) SetVpcId(v string) *AssociateVpcCidrBlockIn return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateVpcCidrBlockResult type AssociateVpcCidrBlockOutput struct { _ struct{} `type:"structure"` @@ -21621,7 +24357,6 @@ func (s *AssociateVpcCidrBlockOutput) SetVpcId(v string) *AssociateVpcCidrBlockO } // Contains the parameters for AttachClassicLinkVpc. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttachClassicLinkVpcRequest type AttachClassicLinkVpcInput struct { _ struct{} `type:"structure"` @@ -21702,7 +24437,6 @@ func (s *AttachClassicLinkVpcInput) SetVpcId(v string) *AttachClassicLinkVpcInpu } // Contains the output of AttachClassicLinkVpc. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttachClassicLinkVpcResult type AttachClassicLinkVpcOutput struct { _ struct{} `type:"structure"` @@ -21727,7 +24461,6 @@ func (s *AttachClassicLinkVpcOutput) SetReturn(v bool) *AttachClassicLinkVpcOutp } // Contains the parameters for AttachInternetGateway. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttachInternetGatewayRequest type AttachInternetGatewayInput struct { _ struct{} `type:"structure"` @@ -21792,7 +24525,6 @@ func (s *AttachInternetGatewayInput) SetVpcId(v string) *AttachInternetGatewayIn return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttachInternetGatewayOutput type AttachInternetGatewayOutput struct { _ struct{} `type:"structure"` } @@ -21808,7 +24540,6 @@ func (s AttachInternetGatewayOutput) GoString() string { } // Contains the parameters for AttachNetworkInterface. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttachNetworkInterfaceRequest type AttachNetworkInterfaceInput struct { _ struct{} `type:"structure"` @@ -21888,7 +24619,6 @@ func (s *AttachNetworkInterfaceInput) SetNetworkInterfaceId(v string) *AttachNet } // Contains the output of AttachNetworkInterface. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttachNetworkInterfaceResult type AttachNetworkInterfaceOutput struct { _ struct{} `type:"structure"` @@ -21913,11 +24643,10 @@ func (s *AttachNetworkInterfaceOutput) SetAttachmentId(v string) *AttachNetworkI } // Contains the parameters for AttachVolume. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttachVolumeRequest type AttachVolumeInput struct { _ struct{} `type:"structure"` - // The device name to expose to the instance (for example, /dev/sdh or xvdh). + // The device name (for example, /dev/sdh or xvdh). // // Device is a required field Device *string `type:"string" required:"true"` @@ -21994,7 +24723,6 @@ func (s *AttachVolumeInput) SetVolumeId(v string) *AttachVolumeInput { } // Contains the parameters for AttachVpnGateway. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttachVpnGatewayRequest type AttachVpnGatewayInput struct { _ struct{} `type:"structure"` @@ -22060,7 +24788,6 @@ func (s *AttachVpnGatewayInput) SetVpnGatewayId(v string) *AttachVpnGatewayInput } // Contains the output of AttachVpnGateway. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttachVpnGatewayResult type AttachVpnGatewayOutput struct { _ struct{} `type:"structure"` @@ -22085,7 +24812,6 @@ func (s *AttachVpnGatewayOutput) SetVpcAttachment(v *VpcAttachment) *AttachVpnGa } // Describes a value for a resource attribute that is a Boolean value. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttributeBooleanValue type AttributeBooleanValue struct { _ struct{} `type:"structure"` @@ -22110,11 +24836,10 @@ func (s *AttributeBooleanValue) SetValue(v bool) *AttributeBooleanValue { } // Describes a value for a resource attribute that is a String. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttributeValue type AttributeValue struct { _ struct{} `type:"structure"` - // The attribute value. Note that the value is case-sensitive. + // The attribute value. The value is case-sensitive. Value *string `locationName:"value" type:"string"` } @@ -22135,12 +24860,10 @@ func (s *AttributeValue) SetValue(v string) *AttributeValue { } // Contains the parameters for AuthorizeSecurityGroupEgress. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AuthorizeSecurityGroupEgressRequest type AuthorizeSecurityGroupEgressInput struct { _ struct{} `type:"structure"` - // The CIDR IPv4 address range. We recommend that you specify the CIDR range - // in a set of IP permissions instead. + // Not supported. Use a set of IP permissions to specify the CIDR. CidrIp *string `locationName:"cidrIp" type:"string"` // Checks whether you have the required permissions for the action, without @@ -22149,8 +24872,7 @@ type AuthorizeSecurityGroupEgressInput struct { // it is UnauthorizedOperation. DryRun *bool `locationName:"dryRun" type:"boolean"` - // The start of port range for the TCP and UDP protocols, or an ICMP type number. - // We recommend that you specify the port range in a set of IP permissions instead. + // Not supported. Use a set of IP permissions to specify the port. FromPort *int64 `locationName:"fromPort" type:"integer"` // The ID of the security group. @@ -22158,26 +24880,23 @@ type AuthorizeSecurityGroupEgressInput struct { // GroupId is a required field GroupId *string `locationName:"groupId" type:"string" required:"true"` - // A set of IP permissions. You can't specify a destination security group and - // a CIDR IP address range. + // One or more sets of IP permissions. You can't specify a destination security + // group and a CIDR IP address range in the same set of permissions. IpPermissions []*IpPermission `locationName:"ipPermissions" locationNameList:"item" type:"list"` - // The IP protocol name or number. We recommend that you specify the protocol - // in a set of IP permissions instead. + // Not supported. Use a set of IP permissions to specify the protocol name or + // number. IpProtocol *string `locationName:"ipProtocol" type:"string"` - // The name of a destination security group. To authorize outbound access to - // a destination security group, we recommend that you use a set of IP permissions - // instead. + // Not supported. Use a set of IP permissions to specify a destination security + // group. SourceSecurityGroupName *string `locationName:"sourceSecurityGroupName" type:"string"` - // The AWS account number for a destination security group. To authorize outbound - // access to a destination security group, we recommend that you use a set of - // IP permissions instead. + // Not supported. Use a set of IP permissions to specify a destination security + // group. SourceSecurityGroupOwnerId *string `locationName:"sourceSecurityGroupOwnerId" type:"string"` - // The end of port range for the TCP and UDP protocols, or an ICMP type number. - // We recommend that you specify the port range in a set of IP permissions instead. + // Not supported. Use a set of IP permissions to specify the port. ToPort *int64 `locationName:"toPort" type:"integer"` } @@ -22258,7 +24977,6 @@ func (s *AuthorizeSecurityGroupEgressInput) SetToPort(v int64) *AuthorizeSecurit return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AuthorizeSecurityGroupEgressOutput type AuthorizeSecurityGroupEgressOutput struct { _ struct{} `type:"structure"` } @@ -22274,7 +24992,6 @@ func (s AuthorizeSecurityGroupEgressOutput) GoString() string { } // Contains the parameters for AuthorizeSecurityGroupIngress. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AuthorizeSecurityGroupIngressRequest type AuthorizeSecurityGroupIngressInput struct { _ struct{} `type:"structure"` @@ -22302,8 +25019,8 @@ type AuthorizeSecurityGroupIngressInput struct { // either the security group ID or the security group name in the request. GroupName *string `type:"string"` - // A set of IP permissions. Can be used to specify multiple rules in a single - // command. + // One or more sets of IP permissions. Can be used to specify multiple rules + // in a single command. IpPermissions []*IpPermission `locationNameList:"item" type:"list"` // The IP protocol name (tcp, udp, icmp) or number (see Protocol Numbers (http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml)). @@ -22323,8 +25040,8 @@ type AuthorizeSecurityGroupIngressInput struct { // be in the same VPC. SourceSecurityGroupName *string `type:"string"` - // [EC2-Classic] The AWS account number for the source security group, if the - // source security group is in a different account. You can't specify this parameter + // [EC2-Classic] The AWS account ID for the source security group, if the source + // security group is in a different account. You can't specify this parameter // in combination with the following parameters: the CIDR IP address range, // the IP protocol, the start of the port range, and the end of the port range. // Creates rules that grant full ICMP, UDP, and TCP access. To create a rule @@ -22407,7 +25124,6 @@ func (s *AuthorizeSecurityGroupIngressInput) SetToPort(v int64) *AuthorizeSecuri return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AuthorizeSecurityGroupIngressOutput type AuthorizeSecurityGroupIngressOutput struct { _ struct{} `type:"structure"` } @@ -22423,7 +25139,6 @@ func (s AuthorizeSecurityGroupIngressOutput) GoString() string { } // Describes an Availability Zone. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AvailabilityZone type AvailabilityZone struct { _ struct{} `type:"structure"` @@ -22475,7 +25190,6 @@ func (s *AvailabilityZone) SetZoneName(v string) *AvailabilityZone { } // Describes a message about an Availability Zone. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AvailabilityZoneMessage type AvailabilityZoneMessage struct { _ struct{} `type:"structure"` @@ -22500,7 +25214,6 @@ func (s *AvailabilityZoneMessage) SetMessage(v string) *AvailabilityZoneMessage } // The capacity information for instances launched onto the Dedicated Host. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AvailableCapacity type AvailableCapacity struct { _ struct{} `type:"structure"` @@ -22533,7 +25246,6 @@ func (s *AvailableCapacity) SetAvailableVCpus(v int64) *AvailableCapacity { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/BlobAttributeValue type BlobAttributeValue struct { _ struct{} `type:"structure"` @@ -22558,11 +25270,10 @@ func (s *BlobAttributeValue) SetValue(v []byte) *BlobAttributeValue { } // Describes a block device mapping. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/BlockDeviceMapping type BlockDeviceMapping struct { _ struct{} `type:"structure"` - // The device name exposed to the instance (for example, /dev/sdh or xvdh). + // The device name (for example, /dev/sdh or xvdh). DeviceName *string `locationName:"deviceName" type:"string"` // Parameters used to automatically set up EBS volumes when the instance is @@ -22621,7 +25332,6 @@ func (s *BlockDeviceMapping) SetVirtualName(v string) *BlockDeviceMapping { } // Contains the parameters for BundleInstance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/BundleInstanceRequest type BundleInstanceInput struct { _ struct{} `type:"structure"` @@ -22695,7 +25405,6 @@ func (s *BundleInstanceInput) SetStorage(v *Storage) *BundleInstanceInput { } // Contains the output of BundleInstance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/BundleInstanceResult type BundleInstanceOutput struct { _ struct{} `type:"structure"` @@ -22720,7 +25429,6 @@ func (s *BundleInstanceOutput) SetBundleTask(v *BundleTask) *BundleInstanceOutpu } // Describes a bundle task. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/BundleTask type BundleTask struct { _ struct{} `type:"structure"` @@ -22808,7 +25516,6 @@ func (s *BundleTask) SetUpdateTime(v time.Time) *BundleTask { } // Describes an error for BundleInstance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/BundleTaskError type BundleTaskError struct { _ struct{} `type:"structure"` @@ -22842,7 +25549,6 @@ func (s *BundleTaskError) SetMessage(v string) *BundleTaskError { } // Contains the parameters for CancelBundleTask. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelBundleTaskRequest type CancelBundleTaskInput struct { _ struct{} `type:"structure"` @@ -22894,7 +25600,6 @@ func (s *CancelBundleTaskInput) SetDryRun(v bool) *CancelBundleTaskInput { } // Contains the output of CancelBundleTask. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelBundleTaskResult type CancelBundleTaskOutput struct { _ struct{} `type:"structure"` @@ -22919,7 +25624,6 @@ func (s *CancelBundleTaskOutput) SetBundleTask(v *BundleTask) *CancelBundleTaskO } // Contains the parameters for CancelConversionTask. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelConversionRequest type CancelConversionTaskInput struct { _ struct{} `type:"structure"` @@ -22979,7 +25683,6 @@ func (s *CancelConversionTaskInput) SetReasonMessage(v string) *CancelConversion return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelConversionTaskOutput type CancelConversionTaskOutput struct { _ struct{} `type:"structure"` } @@ -22995,7 +25698,6 @@ func (s CancelConversionTaskOutput) GoString() string { } // Contains the parameters for CancelExportTask. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelExportTaskRequest type CancelExportTaskInput struct { _ struct{} `type:"structure"` @@ -23034,7 +25736,6 @@ func (s *CancelExportTaskInput) SetExportTaskId(v string) *CancelExportTaskInput return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelExportTaskOutput type CancelExportTaskOutput struct { _ struct{} `type:"structure"` } @@ -23050,7 +25751,6 @@ func (s CancelExportTaskOutput) GoString() string { } // Contains the parameters for CancelImportTask. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelImportTaskRequest type CancelImportTaskInput struct { _ struct{} `type:"structure"` @@ -23096,7 +25796,6 @@ func (s *CancelImportTaskInput) SetImportTaskId(v string) *CancelImportTaskInput } // Contains the output for CancelImportTask. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelImportTaskResult type CancelImportTaskOutput struct { _ struct{} `type:"structure"` @@ -23139,7 +25838,6 @@ func (s *CancelImportTaskOutput) SetState(v string) *CancelImportTaskOutput { } // Contains the parameters for CancelReservedInstancesListing. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelReservedInstancesListingRequest type CancelReservedInstancesListingInput struct { _ struct{} `type:"structure"` @@ -23179,7 +25877,6 @@ func (s *CancelReservedInstancesListingInput) SetReservedInstancesListingId(v st } // Contains the output of CancelReservedInstancesListing. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelReservedInstancesListingResult type CancelReservedInstancesListingOutput struct { _ struct{} `type:"structure"` @@ -23203,8 +25900,7 @@ func (s *CancelReservedInstancesListingOutput) SetReservedInstancesListings(v [] return s } -// Describes a Spot fleet error. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelSpotFleetRequestsError +// Describes a Spot Fleet error. type CancelSpotFleetRequestsError struct { _ struct{} `type:"structure"` @@ -23241,8 +25937,7 @@ func (s *CancelSpotFleetRequestsError) SetMessage(v string) *CancelSpotFleetRequ return s } -// Describes a Spot fleet request that was not successfully canceled. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelSpotFleetRequestsErrorItem +// Describes a Spot Fleet request that was not successfully canceled. type CancelSpotFleetRequestsErrorItem struct { _ struct{} `type:"structure"` @@ -23251,7 +25946,7 @@ type CancelSpotFleetRequestsErrorItem struct { // Error is a required field Error *CancelSpotFleetRequestsError `locationName:"error" type:"structure" required:"true"` - // The ID of the Spot fleet request. + // The ID of the Spot Fleet request. // // SpotFleetRequestId is a required field SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string" required:"true"` @@ -23280,7 +25975,6 @@ func (s *CancelSpotFleetRequestsErrorItem) SetSpotFleetRequestId(v string) *Canc } // Contains the parameters for CancelSpotFleetRequests. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelSpotFleetRequestsRequest type CancelSpotFleetRequestsInput struct { _ struct{} `type:"structure"` @@ -23290,12 +25984,12 @@ type CancelSpotFleetRequestsInput struct { // it is UnauthorizedOperation. DryRun *bool `locationName:"dryRun" type:"boolean"` - // The IDs of the Spot fleet requests. + // The IDs of the Spot Fleet requests. // // SpotFleetRequestIds is a required field SpotFleetRequestIds []*string `locationName:"spotFleetRequestId" locationNameList:"item" type:"list" required:"true"` - // Indicates whether to terminate instances for a Spot fleet request if it is + // Indicates whether to terminate instances for a Spot Fleet request if it is // canceled successfully. // // TerminateInstances is a required field @@ -23347,14 +26041,13 @@ func (s *CancelSpotFleetRequestsInput) SetTerminateInstances(v bool) *CancelSpot } // Contains the output of CancelSpotFleetRequests. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelSpotFleetRequestsResponse type CancelSpotFleetRequestsOutput struct { _ struct{} `type:"structure"` - // Information about the Spot fleet requests that are successfully canceled. + // Information about the Spot Fleet requests that are successfully canceled. SuccessfulFleetRequests []*CancelSpotFleetRequestsSuccessItem `locationName:"successfulFleetRequestSet" locationNameList:"item" type:"list"` - // Information about the Spot fleet requests that are not successfully canceled. + // Information about the Spot Fleet requests that are not successfully canceled. UnsuccessfulFleetRequests []*CancelSpotFleetRequestsErrorItem `locationName:"unsuccessfulFleetRequestSet" locationNameList:"item" type:"list"` } @@ -23380,22 +26073,21 @@ func (s *CancelSpotFleetRequestsOutput) SetUnsuccessfulFleetRequests(v []*Cancel return s } -// Describes a Spot fleet request that was successfully canceled. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelSpotFleetRequestsSuccessItem +// Describes a Spot Fleet request that was successfully canceled. type CancelSpotFleetRequestsSuccessItem struct { _ struct{} `type:"structure"` - // The current state of the Spot fleet request. + // The current state of the Spot Fleet request. // // CurrentSpotFleetRequestState is a required field CurrentSpotFleetRequestState *string `locationName:"currentSpotFleetRequestState" type:"string" required:"true" enum:"BatchState"` - // The previous state of the Spot fleet request. + // The previous state of the Spot Fleet request. // // PreviousSpotFleetRequestState is a required field PreviousSpotFleetRequestState *string `locationName:"previousSpotFleetRequestState" type:"string" required:"true" enum:"BatchState"` - // The ID of the Spot fleet request. + // The ID of the Spot Fleet request. // // SpotFleetRequestId is a required field SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string" required:"true"` @@ -23430,7 +26122,6 @@ func (s *CancelSpotFleetRequestsSuccessItem) SetSpotFleetRequestId(v string) *Ca } // Contains the parameters for CancelSpotInstanceRequests. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelSpotInstanceRequestsRequest type CancelSpotInstanceRequestsInput struct { _ struct{} `type:"structure"` @@ -23440,7 +26131,7 @@ type CancelSpotInstanceRequestsInput struct { // it is UnauthorizedOperation. DryRun *bool `locationName:"dryRun" type:"boolean"` - // One or more Spot instance request IDs. + // One or more Spot Instance request IDs. // // SpotInstanceRequestIds is a required field SpotInstanceRequestIds []*string `locationName:"SpotInstanceRequestId" locationNameList:"SpotInstanceRequestId" type:"list" required:"true"` @@ -23482,11 +26173,10 @@ func (s *CancelSpotInstanceRequestsInput) SetSpotInstanceRequestIds(v []*string) } // Contains the output of CancelSpotInstanceRequests. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelSpotInstanceRequestsResult type CancelSpotInstanceRequestsOutput struct { _ struct{} `type:"structure"` - // One or more Spot instance requests. + // One or more Spot Instance requests. CancelledSpotInstanceRequests []*CancelledSpotInstanceRequest `locationName:"spotInstanceRequestSet" locationNameList:"item" type:"list"` } @@ -23506,15 +26196,14 @@ func (s *CancelSpotInstanceRequestsOutput) SetCancelledSpotInstanceRequests(v [] return s } -// Describes a request to cancel a Spot instance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelledSpotInstanceRequest +// Describes a request to cancel a Spot Instance. type CancelledSpotInstanceRequest struct { _ struct{} `type:"structure"` - // The ID of the Spot instance request. + // The ID of the Spot Instance request. SpotInstanceRequestId *string `locationName:"spotInstanceRequestId" type:"string"` - // The state of the Spot instance request. + // The state of the Spot Instance request. State *string `locationName:"state" type:"string" enum:"CancelSpotInstanceRequestState"` } @@ -23541,7 +26230,6 @@ func (s *CancelledSpotInstanceRequest) SetState(v string) *CancelledSpotInstance } // Describes an IPv4 CIDR block. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CidrBlock type CidrBlock struct { _ struct{} `type:"structure"` @@ -23566,7 +26254,6 @@ func (s *CidrBlock) SetCidrBlock(v string) *CidrBlock { } // Describes the ClassicLink DNS support status of a VPC. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ClassicLinkDnsSupport type ClassicLinkDnsSupport struct { _ struct{} `type:"structure"` @@ -23600,7 +26287,6 @@ func (s *ClassicLinkDnsSupport) SetVpcId(v string) *ClassicLinkDnsSupport { } // Describes a linked EC2-Classic instance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ClassicLinkInstance type ClassicLinkInstance struct { _ struct{} `type:"structure"` @@ -23651,8 +26337,99 @@ func (s *ClassicLinkInstance) SetVpcId(v string) *ClassicLinkInstance { return s } +// Describes a Classic Load Balancer. +type ClassicLoadBalancer struct { + _ struct{} `type:"structure"` + + // The name of the load balancer. + // + // Name is a required field + Name *string `locationName:"name" type:"string" required:"true"` +} + +// String returns the string representation +func (s ClassicLoadBalancer) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ClassicLoadBalancer) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ClassicLoadBalancer) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ClassicLoadBalancer"} + if s.Name == nil { + invalidParams.Add(request.NewErrParamRequired("Name")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetName sets the Name field's value. +func (s *ClassicLoadBalancer) SetName(v string) *ClassicLoadBalancer { + s.Name = &v + return s +} + +// Describes the Classic Load Balancers to attach to a Spot Fleet. Spot Fleet +// registers the running Spot Instances with these Classic Load Balancers. +type ClassicLoadBalancersConfig struct { + _ struct{} `type:"structure"` + + // One or more Classic Load Balancers. + // + // ClassicLoadBalancers is a required field + ClassicLoadBalancers []*ClassicLoadBalancer `locationName:"classicLoadBalancers" locationNameList:"item" min:"1" type:"list" required:"true"` +} + +// String returns the string representation +func (s ClassicLoadBalancersConfig) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ClassicLoadBalancersConfig) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ClassicLoadBalancersConfig) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ClassicLoadBalancersConfig"} + if s.ClassicLoadBalancers == nil { + invalidParams.Add(request.NewErrParamRequired("ClassicLoadBalancers")) + } + if s.ClassicLoadBalancers != nil && len(s.ClassicLoadBalancers) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ClassicLoadBalancers", 1)) + } + if s.ClassicLoadBalancers != nil { + for i, v := range s.ClassicLoadBalancers { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ClassicLoadBalancers", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClassicLoadBalancers sets the ClassicLoadBalancers field's value. +func (s *ClassicLoadBalancersConfig) SetClassicLoadBalancers(v []*ClassicLoadBalancer) *ClassicLoadBalancersConfig { + s.ClassicLoadBalancers = v + return s +} + // Describes the client-specific data. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ClientData type ClientData struct { _ struct{} `type:"structure"` @@ -23704,7 +26481,6 @@ func (s *ClientData) SetUploadStart(v time.Time) *ClientData { } // Contains the parameters for ConfirmProductInstance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ConfirmProductInstanceRequest type ConfirmProductInstanceInput struct { _ struct{} `type:"structure"` @@ -23770,7 +26546,6 @@ func (s *ConfirmProductInstanceInput) SetProductCode(v string) *ConfirmProductIn } // Contains the output of ConfirmProductInstance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ConfirmProductInstanceResult type ConfirmProductInstanceOutput struct { _ struct{} `type:"structure"` @@ -23805,15 +26580,91 @@ func (s *ConfirmProductInstanceOutput) SetReturn(v bool) *ConfirmProductInstance return s } +// Describes a connection notification for a VPC endpoint or VPC endpoint service. +type ConnectionNotification struct { + _ struct{} `type:"structure"` + + // The events for the notification. Valid values are Accept, Connect, Delete, + // and Reject. + ConnectionEvents []*string `locationName:"connectionEvents" locationNameList:"item" type:"list"` + + // The ARN of the SNS topic for the notification. + ConnectionNotificationArn *string `locationName:"connectionNotificationArn" type:"string"` + + // The ID of the notification. + ConnectionNotificationId *string `locationName:"connectionNotificationId" type:"string"` + + // The state of the notification. + ConnectionNotificationState *string `locationName:"connectionNotificationState" type:"string" enum:"ConnectionNotificationState"` + + // The type of notification. + ConnectionNotificationType *string `locationName:"connectionNotificationType" type:"string" enum:"ConnectionNotificationType"` + + // The ID of the endpoint service. + ServiceId *string `locationName:"serviceId" type:"string"` + + // The ID of the VPC endpoint. + VpcEndpointId *string `locationName:"vpcEndpointId" type:"string"` +} + +// String returns the string representation +func (s ConnectionNotification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ConnectionNotification) GoString() string { + return s.String() +} + +// SetConnectionEvents sets the ConnectionEvents field's value. +func (s *ConnectionNotification) SetConnectionEvents(v []*string) *ConnectionNotification { + s.ConnectionEvents = v + return s +} + +// SetConnectionNotificationArn sets the ConnectionNotificationArn field's value. +func (s *ConnectionNotification) SetConnectionNotificationArn(v string) *ConnectionNotification { + s.ConnectionNotificationArn = &v + return s +} + +// SetConnectionNotificationId sets the ConnectionNotificationId field's value. +func (s *ConnectionNotification) SetConnectionNotificationId(v string) *ConnectionNotification { + s.ConnectionNotificationId = &v + return s +} + +// SetConnectionNotificationState sets the ConnectionNotificationState field's value. +func (s *ConnectionNotification) SetConnectionNotificationState(v string) *ConnectionNotification { + s.ConnectionNotificationState = &v + return s +} + +// SetConnectionNotificationType sets the ConnectionNotificationType field's value. +func (s *ConnectionNotification) SetConnectionNotificationType(v string) *ConnectionNotification { + s.ConnectionNotificationType = &v + return s +} + +// SetServiceId sets the ServiceId field's value. +func (s *ConnectionNotification) SetServiceId(v string) *ConnectionNotification { + s.ServiceId = &v + return s +} + +// SetVpcEndpointId sets the VpcEndpointId field's value. +func (s *ConnectionNotification) SetVpcEndpointId(v string) *ConnectionNotification { + s.VpcEndpointId = &v + return s +} + // Describes a conversion task. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ConversionTask type ConversionTask struct { _ struct{} `type:"structure"` // The ID of the conversion task. - // - // ConversionTaskId is a required field - ConversionTaskId *string `locationName:"conversionTaskId" type:"string" required:"true"` + ConversionTaskId *string `locationName:"conversionTaskId" type:"string"` // The time when the task expires. If the upload isn't complete before the expiration // time, we automatically cancel the task. @@ -23828,9 +26679,7 @@ type ConversionTask struct { ImportVolume *ImportVolumeTaskDetails `locationName:"importVolume" type:"structure"` // The state of the conversion task. - // - // State is a required field - State *string `locationName:"state" type:"string" required:"true" enum:"ConversionTaskState"` + State *string `locationName:"state" type:"string" enum:"ConversionTaskState"` // The status message related to the conversion task. StatusMessage *string `locationName:"statusMessage" type:"string"` @@ -23891,7 +26740,6 @@ func (s *ConversionTask) SetTags(v []*Tag) *ConversionTask { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CopyFpgaImageRequest type CopyFpgaImageInput struct { _ struct{} `type:"structure"` @@ -23984,7 +26832,6 @@ func (s *CopyFpgaImageInput) SetSourceRegion(v string) *CopyFpgaImageInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CopyFpgaImageResult type CopyFpgaImageOutput struct { _ struct{} `type:"structure"` @@ -24009,7 +26856,6 @@ func (s *CopyFpgaImageOutput) SetFpgaImageId(v string) *CopyFpgaImageOutput { } // Contains the parameters for CopyImage. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CopyImageRequest type CopyImageInput struct { _ struct{} `type:"structure"` @@ -24034,14 +26880,34 @@ type CopyImageInput struct { // in the Amazon Elastic Compute Cloud User Guide. Encrypted *bool `locationName:"encrypted" type:"boolean"` - // The full ARN of the AWS Key Management Service (AWS KMS) CMK to use when - // encrypting the snapshots of an image during a copy operation. This parameter - // is only required if you want to use a non-default CMK; if this parameter - // is not specified, the default CMK for EBS is used. The ARN contains the arn:aws:kms - // namespace, followed by the region of the CMK, the AWS account ID of the CMK - // owner, the key namespace, and then the CMK ID. For example, arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef. + // An identifier for the AWS Key Management Service (AWS KMS) customer master + // key (CMK) to use when creating the encrypted volume. This parameter is only + // required if you want to use a non-default CMK; if this parameter is not specified, + // the default CMK for EBS is used. If a KmsKeyId is specified, the Encrypted + // flag must also be set. + // + // The CMK identifier may be provided in any of the following formats: + // + // * Key ID + // + // * Key alias, in the form alias/ExampleAlias + // + // * ARN using key ID. The ID ARN contains the arn:aws:kms namespace, followed + // by the region of the CMK, the AWS account ID of the CMK owner, the key + // namespace, and then the CMK ID. For example, arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef. + // + // + // * ARN using key alias. The alias ARN contains the arn:aws:kms namespace, + // followed by the region of the CMK, the AWS account ID of the CMK owner, + // the alias namespace, and then the CMK alias. For example, arn:aws:kms:us-east-1:012345678910:alias/ExampleAlias. + // + // + // AWS parses KmsKeyId asynchronously, meaning that the action you call may + // appear to complete even though you provided an invalid identifier. This action + // will eventually report failure. + // // The specified CMK must exist in the region that the snapshot is being copied - // to. If a KmsKeyId is specified, the Encrypted flag must also be set. + // to. KmsKeyId *string `locationName:"kmsKeyId" type:"string"` // The name of the new AMI in the destination region. @@ -24138,7 +27004,6 @@ func (s *CopyImageInput) SetSourceRegion(v string) *CopyImageInput { } // Contains the output of CopyImage. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CopyImageResult type CopyImageOutput struct { _ struct{} `type:"structure"` @@ -24163,7 +27028,6 @@ func (s *CopyImageOutput) SetImageId(v string) *CopyImageOutput { } // Contains the parameters for CopySnapshot. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CopySnapshotRequest type CopySnapshotInput struct { _ struct{} `type:"structure"` @@ -24195,25 +27059,43 @@ type CopySnapshotInput struct { // the Amazon Elastic Compute Cloud User Guide. Encrypted *bool `locationName:"encrypted" type:"boolean"` - // The full ARN of the AWS Key Management Service (AWS KMS) CMK to use when - // creating the snapshot copy. This parameter is only required if you want to - // use a non-default CMK; if this parameter is not specified, the default CMK - // for EBS is used. The ARN contains the arn:aws:kms namespace, followed by - // the region of the CMK, the AWS account ID of the CMK owner, the key namespace, - // and then the CMK ID. For example, arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef. - // The specified CMK must exist in the region that the snapshot is being copied - // to. If a KmsKeyId is specified, the Encrypted flag must also be set. + // An identifier for the AWS Key Management Service (AWS KMS) customer master + // key (CMK) to use when creating the encrypted volume. This parameter is only + // required if you want to use a non-default CMK; if this parameter is not specified, + // the default CMK for EBS is used. If a KmsKeyId is specified, the Encrypted + // flag must also be set. + // + // The CMK identifier may be provided in any of the following formats: + // + // * Key ID + // + // * Key alias + // + // * ARN using key ID. The ID ARN contains the arn:aws:kms namespace, followed + // by the region of the CMK, the AWS account ID of the CMK owner, the key + // namespace, and then the CMK ID. For example, arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef. + // + // + // * ARN using key alias. The alias ARN contains the arn:aws:kms namespace, + // followed by the region of the CMK, the AWS account ID of the CMK owner, + // the alias namespace, and then the CMK alias. For example, arn:aws:kms:us-east-1:012345678910:alias/ExampleAlias. + // + // + // AWS parses KmsKeyId asynchronously, meaning that the action you call may + // appear to complete even though you provided an invalid identifier. The action + // will eventually fail. KmsKeyId *string `locationName:"kmsKeyId" type:"string"` - // The pre-signed URL that facilitates copying an encrypted snapshot. This parameter - // is only required when copying an encrypted snapshot with the Amazon EC2 Query - // API; it is available as an optional parameter in all other cases. The PresignedUrl - // should use the snapshot source endpoint, the CopySnapshot action, and include - // the SourceRegion, SourceSnapshotId, and DestinationRegion parameters. The - // PresignedUrl must be signed using AWS Signature Version 4. Because EBS snapshots - // are stored in Amazon S3, the signing algorithm for this parameter uses the - // same logic that is described in Authenticating Requests by Using Query Parameters - // (AWS Signature Version 4) (http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html) + // When you copy an encrypted source snapshot using the Amazon EC2 Query API, + // you must supply a pre-signed URL. This parameter is optional for unencrypted + // snapshots. For more information, see Query Requests (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Query-Requests.html). + // + // The PresignedUrl should use the snapshot source endpoint, the CopySnapshot + // action, and include the SourceRegion, SourceSnapshotId, and DestinationRegion + // parameters. The PresignedUrl must be signed using AWS Signature Version 4. + // Because EBS snapshots are stored in Amazon S3, the signing algorithm for + // this parameter uses the same logic that is described in Authenticating Requests + // by Using Query Parameters (AWS Signature Version 4) (http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html) // in the Amazon Simple Storage Service API Reference. An invalid or improperly // signed PresignedUrl will cause the copy operation to fail asynchronously, // and the snapshot will move to an error state. @@ -24305,7 +27187,6 @@ func (s *CopySnapshotInput) SetSourceSnapshotId(v string) *CopySnapshotInput { } // Contains the output of CopySnapshot. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CopySnapshotResult type CopySnapshotOutput struct { _ struct{} `type:"structure"` @@ -24329,8 +27210,76 @@ func (s *CopySnapshotOutput) SetSnapshotId(v string) *CopySnapshotOutput { return s } +// The CPU options for the instance. +type CpuOptions struct { + _ struct{} `type:"structure"` + + // The number of CPU cores for the instance. + CoreCount *int64 `locationName:"coreCount" type:"integer"` + + // The number of threads per CPU core. + ThreadsPerCore *int64 `locationName:"threadsPerCore" type:"integer"` +} + +// String returns the string representation +func (s CpuOptions) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CpuOptions) GoString() string { + return s.String() +} + +// SetCoreCount sets the CoreCount field's value. +func (s *CpuOptions) SetCoreCount(v int64) *CpuOptions { + s.CoreCount = &v + return s +} + +// SetThreadsPerCore sets the ThreadsPerCore field's value. +func (s *CpuOptions) SetThreadsPerCore(v int64) *CpuOptions { + s.ThreadsPerCore = &v + return s +} + +// The CPU options for the instance. Both the core count and threads per core +// must be specified in the request. +type CpuOptionsRequest struct { + _ struct{} `type:"structure"` + + // The number of CPU cores for the instance. + CoreCount *int64 `type:"integer"` + + // The number of threads per CPU core. To disable Intel Hyper-Threading Technology + // for the instance, specify a value of 1. Otherwise, specify the default value + // of 2. + ThreadsPerCore *int64 `type:"integer"` +} + +// String returns the string representation +func (s CpuOptionsRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CpuOptionsRequest) GoString() string { + return s.String() +} + +// SetCoreCount sets the CoreCount field's value. +func (s *CpuOptionsRequest) SetCoreCount(v int64) *CpuOptionsRequest { + s.CoreCount = &v + return s +} + +// SetThreadsPerCore sets the ThreadsPerCore field's value. +func (s *CpuOptionsRequest) SetThreadsPerCore(v int64) *CpuOptionsRequest { + s.ThreadsPerCore = &v + return s +} + // Contains the parameters for CreateCustomerGateway. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateCustomerGatewayRequest type CreateCustomerGatewayInput struct { _ struct{} `type:"structure"` @@ -24413,7 +27362,6 @@ func (s *CreateCustomerGatewayInput) SetType(v string) *CreateCustomerGatewayInp } // Contains the output of CreateCustomerGateway. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateCustomerGatewayResult type CreateCustomerGatewayOutput struct { _ struct{} `type:"structure"` @@ -24437,8 +27385,80 @@ func (s *CreateCustomerGatewayOutput) SetCustomerGateway(v *CustomerGateway) *Cr return s } +type CreateDefaultSubnetInput struct { + _ struct{} `type:"structure"` + + // The Availability Zone in which to create the default subnet. + // + // AvailabilityZone is a required field + AvailabilityZone *string `type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` +} + +// String returns the string representation +func (s CreateDefaultSubnetInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateDefaultSubnetInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateDefaultSubnetInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateDefaultSubnetInput"} + if s.AvailabilityZone == nil { + invalidParams.Add(request.NewErrParamRequired("AvailabilityZone")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *CreateDefaultSubnetInput) SetAvailabilityZone(v string) *CreateDefaultSubnetInput { + s.AvailabilityZone = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateDefaultSubnetInput) SetDryRun(v bool) *CreateDefaultSubnetInput { + s.DryRun = &v + return s +} + +type CreateDefaultSubnetOutput struct { + _ struct{} `type:"structure"` + + // Information about the subnet. + Subnet *Subnet `locationName:"subnet" type:"structure"` +} + +// String returns the string representation +func (s CreateDefaultSubnetOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateDefaultSubnetOutput) GoString() string { + return s.String() +} + +// SetSubnet sets the Subnet field's value. +func (s *CreateDefaultSubnetOutput) SetSubnet(v *Subnet) *CreateDefaultSubnetOutput { + s.Subnet = v + return s +} + // Contains the parameters for CreateDefaultVpc. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateDefaultVpcRequest type CreateDefaultVpcInput struct { _ struct{} `type:"structure"` @@ -24466,7 +27486,6 @@ func (s *CreateDefaultVpcInput) SetDryRun(v bool) *CreateDefaultVpcInput { } // Contains the output of CreateDefaultVpc. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateDefaultVpcResult type CreateDefaultVpcOutput struct { _ struct{} `type:"structure"` @@ -24491,7 +27510,6 @@ func (s *CreateDefaultVpcOutput) SetVpc(v *Vpc) *CreateDefaultVpcOutput { } // Contains the parameters for CreateDhcpOptions. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateDhcpOptionsRequest type CreateDhcpOptionsInput struct { _ struct{} `type:"structure"` @@ -24543,7 +27561,6 @@ func (s *CreateDhcpOptionsInput) SetDryRun(v bool) *CreateDhcpOptionsInput { } // Contains the output of CreateDhcpOptions. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateDhcpOptionsResult type CreateDhcpOptionsOutput struct { _ struct{} `type:"structure"` @@ -24567,7 +27584,6 @@ func (s *CreateDhcpOptionsOutput) SetDhcpOptions(v *DhcpOptions) *CreateDhcpOpti return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateEgressOnlyInternetGatewayRequest type CreateEgressOnlyInternetGatewayInput struct { _ struct{} `type:"structure"` @@ -24628,7 +27644,6 @@ func (s *CreateEgressOnlyInternetGatewayInput) SetVpcId(v string) *CreateEgressO return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateEgressOnlyInternetGatewayResult type CreateEgressOnlyInternetGatewayOutput struct { _ struct{} `type:"structure"` @@ -24662,8 +27677,206 @@ func (s *CreateEgressOnlyInternetGatewayOutput) SetEgressOnlyInternetGateway(v * return s } +type CreateFleetInput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier you provide to ensure the idempotency of + // the request. For more information, see Ensuring Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + ClientToken *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // Indicates whether running instances should be terminated if the total target + // capacity of the EC2 Fleet is decreased below the current size of the EC2 + // Fleet. + ExcessCapacityTerminationPolicy *string `type:"string" enum:"FleetExcessCapacityTerminationPolicy"` + + // The configuration for the EC2 Fleet. + // + // LaunchTemplateConfigs is a required field + LaunchTemplateConfigs []*FleetLaunchTemplateConfigRequest `locationNameList:"item" type:"list" required:"true"` + + // Indicates whether EC2 Fleet should replace unhealthy instances. + ReplaceUnhealthyInstances *bool `type:"boolean"` + + // Includes SpotAllocationStrategy and SpotInstanceInterruptionBehavior inside + // this structure. + SpotOptions *SpotOptionsRequest `type:"structure"` + + // The tags for an EC2 Fleet resource. + TagSpecifications []*TagSpecification `locationName:"TagSpecification" locationNameList:"item" type:"list"` + + // The TotalTargetCapacity, OnDemandTargetCapacity, SpotTargetCapacity, and + // DefaultCapacityType structure. + // + // TargetCapacitySpecification is a required field + TargetCapacitySpecification *TargetCapacitySpecificationRequest `type:"structure" required:"true"` + + // Indicates whether running instances should be terminated when the EC2 Fleet + // expires. + TerminateInstancesWithExpiration *bool `type:"boolean"` + + // The type of request. Indicates whether the EC2 Fleet only requests the target + // capacity, or also attempts to maintain it. If you request a certain target + // capacity, EC2 Fleet only places the required requests. It does not attempt + // to replenish instances if capacity is diminished, and does not submit requests + // in alternative capacity pools if capacity is unavailable. To maintain a certain + // target capacity, EC2 Fleet places the required requests to meet this target + // capacity. It also automatically replenishes any interrupted Spot Instances. + // Default: maintain. + Type *string `type:"string" enum:"FleetType"` + + // The start date and time of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). + // The default is to start fulfilling the request immediately. + ValidFrom *time.Time `type:"timestamp" timestampFormat:"iso8601"` + + // The end date and time of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). + // At this point, no new EC2 Fleet requests are placed or able to fulfill the + // request. The default end date is 7 days from the current date. + ValidUntil *time.Time `type:"timestamp" timestampFormat:"iso8601"` +} + +// String returns the string representation +func (s CreateFleetInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateFleetInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateFleetInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateFleetInput"} + if s.LaunchTemplateConfigs == nil { + invalidParams.Add(request.NewErrParamRequired("LaunchTemplateConfigs")) + } + if s.TargetCapacitySpecification == nil { + invalidParams.Add(request.NewErrParamRequired("TargetCapacitySpecification")) + } + if s.LaunchTemplateConfigs != nil { + for i, v := range s.LaunchTemplateConfigs { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "LaunchTemplateConfigs", i), err.(request.ErrInvalidParams)) + } + } + } + if s.TargetCapacitySpecification != nil { + if err := s.TargetCapacitySpecification.Validate(); err != nil { + invalidParams.AddNested("TargetCapacitySpecification", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientToken sets the ClientToken field's value. +func (s *CreateFleetInput) SetClientToken(v string) *CreateFleetInput { + s.ClientToken = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateFleetInput) SetDryRun(v bool) *CreateFleetInput { + s.DryRun = &v + return s +} + +// SetExcessCapacityTerminationPolicy sets the ExcessCapacityTerminationPolicy field's value. +func (s *CreateFleetInput) SetExcessCapacityTerminationPolicy(v string) *CreateFleetInput { + s.ExcessCapacityTerminationPolicy = &v + return s +} + +// SetLaunchTemplateConfigs sets the LaunchTemplateConfigs field's value. +func (s *CreateFleetInput) SetLaunchTemplateConfigs(v []*FleetLaunchTemplateConfigRequest) *CreateFleetInput { + s.LaunchTemplateConfigs = v + return s +} + +// SetReplaceUnhealthyInstances sets the ReplaceUnhealthyInstances field's value. +func (s *CreateFleetInput) SetReplaceUnhealthyInstances(v bool) *CreateFleetInput { + s.ReplaceUnhealthyInstances = &v + return s +} + +// SetSpotOptions sets the SpotOptions field's value. +func (s *CreateFleetInput) SetSpotOptions(v *SpotOptionsRequest) *CreateFleetInput { + s.SpotOptions = v + return s +} + +// SetTagSpecifications sets the TagSpecifications field's value. +func (s *CreateFleetInput) SetTagSpecifications(v []*TagSpecification) *CreateFleetInput { + s.TagSpecifications = v + return s +} + +// SetTargetCapacitySpecification sets the TargetCapacitySpecification field's value. +func (s *CreateFleetInput) SetTargetCapacitySpecification(v *TargetCapacitySpecificationRequest) *CreateFleetInput { + s.TargetCapacitySpecification = v + return s +} + +// SetTerminateInstancesWithExpiration sets the TerminateInstancesWithExpiration field's value. +func (s *CreateFleetInput) SetTerminateInstancesWithExpiration(v bool) *CreateFleetInput { + s.TerminateInstancesWithExpiration = &v + return s +} + +// SetType sets the Type field's value. +func (s *CreateFleetInput) SetType(v string) *CreateFleetInput { + s.Type = &v + return s +} + +// SetValidFrom sets the ValidFrom field's value. +func (s *CreateFleetInput) SetValidFrom(v time.Time) *CreateFleetInput { + s.ValidFrom = &v + return s +} + +// SetValidUntil sets the ValidUntil field's value. +func (s *CreateFleetInput) SetValidUntil(v time.Time) *CreateFleetInput { + s.ValidUntil = &v + return s +} + +type CreateFleetOutput struct { + _ struct{} `type:"structure"` + + // The ID of the EC2 Fleet. + FleetId *string `locationName:"fleetId" type:"string"` +} + +// String returns the string representation +func (s CreateFleetOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateFleetOutput) GoString() string { + return s.String() +} + +// SetFleetId sets the FleetId field's value. +func (s *CreateFleetOutput) SetFleetId(v string) *CreateFleetOutput { + s.FleetId = &v + return s +} + // Contains the parameters for CreateFlowLogs. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateFlowLogsRequest type CreateFlowLogsInput struct { _ struct{} `type:"structure"` @@ -24772,7 +27985,6 @@ func (s *CreateFlowLogsInput) SetTrafficType(v string) *CreateFlowLogsInput { } // Contains the output of CreateFlowLogs. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateFlowLogsResult type CreateFlowLogsOutput struct { _ struct{} `type:"structure"` @@ -24815,7 +28027,6 @@ func (s *CreateFlowLogsOutput) SetUnsuccessful(v []*UnsuccessfulItem) *CreateFlo return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateFpgaImageRequest type CreateFpgaImageInput struct { _ struct{} `type:"structure"` @@ -24904,7 +28115,6 @@ func (s *CreateFpgaImageInput) SetName(v string) *CreateFpgaImageInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateFpgaImageResult type CreateFpgaImageOutput struct { _ struct{} `type:"structure"` @@ -24938,7 +28148,6 @@ func (s *CreateFpgaImageOutput) SetFpgaImageId(v string) *CreateFpgaImageOutput } // Contains the parameters for CreateImage. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateImageRequest type CreateImageInput struct { _ struct{} `type:"structure"` @@ -25038,7 +28247,6 @@ func (s *CreateImageInput) SetNoReboot(v bool) *CreateImageInput { } // Contains the output of CreateImage. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateImageResult type CreateImageOutput struct { _ struct{} `type:"structure"` @@ -25063,7 +28271,6 @@ func (s *CreateImageOutput) SetImageId(v string) *CreateImageOutput { } // Contains the parameters for CreateInstanceExportTask. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateInstanceExportTaskRequest type CreateInstanceExportTaskInput struct { _ struct{} `type:"structure"` @@ -25131,7 +28338,6 @@ func (s *CreateInstanceExportTaskInput) SetTargetEnvironment(v string) *CreateIn } // Contains the output for CreateInstanceExportTask. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateInstanceExportTaskResult type CreateInstanceExportTaskOutput struct { _ struct{} `type:"structure"` @@ -25156,7 +28362,6 @@ func (s *CreateInstanceExportTaskOutput) SetExportTask(v *ExportTask) *CreateIns } // Contains the parameters for CreateInternetGateway. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateInternetGatewayRequest type CreateInternetGatewayInput struct { _ struct{} `type:"structure"` @@ -25184,7 +28389,6 @@ func (s *CreateInternetGatewayInput) SetDryRun(v bool) *CreateInternetGatewayInp } // Contains the output of CreateInternetGateway. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateInternetGatewayResult type CreateInternetGatewayOutput struct { _ struct{} `type:"structure"` @@ -25209,7 +28413,6 @@ func (s *CreateInternetGatewayOutput) SetInternetGateway(v *InternetGateway) *Cr } // Contains the parameters for CreateKeyPair. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateKeyPairRequest type CreateKeyPairInput struct { _ struct{} `type:"structure"` @@ -25263,7 +28466,6 @@ func (s *CreateKeyPairInput) SetKeyName(v string) *CreateKeyPairInput { } // Describes a key pair. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/KeyPair type CreateKeyPairOutput struct { _ struct{} `type:"structure"` @@ -25305,8 +28507,252 @@ func (s *CreateKeyPairOutput) SetKeyName(v string) *CreateKeyPairOutput { return s } +type CreateLaunchTemplateInput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier you provide to ensure the idempotency of + // the request. For more information, see Ensuring Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + ClientToken *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The information for the launch template. + // + // LaunchTemplateData is a required field + LaunchTemplateData *RequestLaunchTemplateData `type:"structure" required:"true"` + + // A name for the launch template. + // + // LaunchTemplateName is a required field + LaunchTemplateName *string `min:"3" type:"string" required:"true"` + + // A description for the first version of the launch template. + VersionDescription *string `type:"string"` +} + +// String returns the string representation +func (s CreateLaunchTemplateInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateLaunchTemplateInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateLaunchTemplateInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateLaunchTemplateInput"} + if s.LaunchTemplateData == nil { + invalidParams.Add(request.NewErrParamRequired("LaunchTemplateData")) + } + if s.LaunchTemplateName == nil { + invalidParams.Add(request.NewErrParamRequired("LaunchTemplateName")) + } + if s.LaunchTemplateName != nil && len(*s.LaunchTemplateName) < 3 { + invalidParams.Add(request.NewErrParamMinLen("LaunchTemplateName", 3)) + } + if s.LaunchTemplateData != nil { + if err := s.LaunchTemplateData.Validate(); err != nil { + invalidParams.AddNested("LaunchTemplateData", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientToken sets the ClientToken field's value. +func (s *CreateLaunchTemplateInput) SetClientToken(v string) *CreateLaunchTemplateInput { + s.ClientToken = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateLaunchTemplateInput) SetDryRun(v bool) *CreateLaunchTemplateInput { + s.DryRun = &v + return s +} + +// SetLaunchTemplateData sets the LaunchTemplateData field's value. +func (s *CreateLaunchTemplateInput) SetLaunchTemplateData(v *RequestLaunchTemplateData) *CreateLaunchTemplateInput { + s.LaunchTemplateData = v + return s +} + +// SetLaunchTemplateName sets the LaunchTemplateName field's value. +func (s *CreateLaunchTemplateInput) SetLaunchTemplateName(v string) *CreateLaunchTemplateInput { + s.LaunchTemplateName = &v + return s +} + +// SetVersionDescription sets the VersionDescription field's value. +func (s *CreateLaunchTemplateInput) SetVersionDescription(v string) *CreateLaunchTemplateInput { + s.VersionDescription = &v + return s +} + +type CreateLaunchTemplateOutput struct { + _ struct{} `type:"structure"` + + // Information about the launch template. + LaunchTemplate *LaunchTemplate `locationName:"launchTemplate" type:"structure"` +} + +// String returns the string representation +func (s CreateLaunchTemplateOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateLaunchTemplateOutput) GoString() string { + return s.String() +} + +// SetLaunchTemplate sets the LaunchTemplate field's value. +func (s *CreateLaunchTemplateOutput) SetLaunchTemplate(v *LaunchTemplate) *CreateLaunchTemplateOutput { + s.LaunchTemplate = v + return s +} + +type CreateLaunchTemplateVersionInput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier you provide to ensure the idempotency of + // the request. For more information, see Ensuring Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + ClientToken *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The information for the launch template. + // + // LaunchTemplateData is a required field + LaunchTemplateData *RequestLaunchTemplateData `type:"structure" required:"true"` + + // The ID of the launch template. You must specify either the launch template + // ID or launch template name in the request. + LaunchTemplateId *string `type:"string"` + + // The name of the launch template. You must specify either the launch template + // ID or launch template name in the request. + LaunchTemplateName *string `min:"3" type:"string"` + + // The version number of the launch template version on which to base the new + // version. The new version inherits the same launch parameters as the source + // version, except for parameters that you specify in LaunchTemplateData. + SourceVersion *string `type:"string"` + + // A description for the version of the launch template. + VersionDescription *string `type:"string"` +} + +// String returns the string representation +func (s CreateLaunchTemplateVersionInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateLaunchTemplateVersionInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateLaunchTemplateVersionInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateLaunchTemplateVersionInput"} + if s.LaunchTemplateData == nil { + invalidParams.Add(request.NewErrParamRequired("LaunchTemplateData")) + } + if s.LaunchTemplateName != nil && len(*s.LaunchTemplateName) < 3 { + invalidParams.Add(request.NewErrParamMinLen("LaunchTemplateName", 3)) + } + if s.LaunchTemplateData != nil { + if err := s.LaunchTemplateData.Validate(); err != nil { + invalidParams.AddNested("LaunchTemplateData", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientToken sets the ClientToken field's value. +func (s *CreateLaunchTemplateVersionInput) SetClientToken(v string) *CreateLaunchTemplateVersionInput { + s.ClientToken = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateLaunchTemplateVersionInput) SetDryRun(v bool) *CreateLaunchTemplateVersionInput { + s.DryRun = &v + return s +} + +// SetLaunchTemplateData sets the LaunchTemplateData field's value. +func (s *CreateLaunchTemplateVersionInput) SetLaunchTemplateData(v *RequestLaunchTemplateData) *CreateLaunchTemplateVersionInput { + s.LaunchTemplateData = v + return s +} + +// SetLaunchTemplateId sets the LaunchTemplateId field's value. +func (s *CreateLaunchTemplateVersionInput) SetLaunchTemplateId(v string) *CreateLaunchTemplateVersionInput { + s.LaunchTemplateId = &v + return s +} + +// SetLaunchTemplateName sets the LaunchTemplateName field's value. +func (s *CreateLaunchTemplateVersionInput) SetLaunchTemplateName(v string) *CreateLaunchTemplateVersionInput { + s.LaunchTemplateName = &v + return s +} + +// SetSourceVersion sets the SourceVersion field's value. +func (s *CreateLaunchTemplateVersionInput) SetSourceVersion(v string) *CreateLaunchTemplateVersionInput { + s.SourceVersion = &v + return s +} + +// SetVersionDescription sets the VersionDescription field's value. +func (s *CreateLaunchTemplateVersionInput) SetVersionDescription(v string) *CreateLaunchTemplateVersionInput { + s.VersionDescription = &v + return s +} + +type CreateLaunchTemplateVersionOutput struct { + _ struct{} `type:"structure"` + + // Information about the launch template version. + LaunchTemplateVersion *LaunchTemplateVersion `locationName:"launchTemplateVersion" type:"structure"` +} + +// String returns the string representation +func (s CreateLaunchTemplateVersionOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateLaunchTemplateVersionOutput) GoString() string { + return s.String() +} + +// SetLaunchTemplateVersion sets the LaunchTemplateVersion field's value. +func (s *CreateLaunchTemplateVersionOutput) SetLaunchTemplateVersion(v *LaunchTemplateVersion) *CreateLaunchTemplateVersionOutput { + s.LaunchTemplateVersion = v + return s +} + // Contains the parameters for CreateNatGateway. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNatGatewayRequest type CreateNatGatewayInput struct { _ struct{} `type:"structure"` @@ -25374,7 +28820,6 @@ func (s *CreateNatGatewayInput) SetSubnetId(v string) *CreateNatGatewayInput { } // Contains the output of CreateNatGateway. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNatGatewayResult type CreateNatGatewayOutput struct { _ struct{} `type:"structure"` @@ -25409,7 +28854,6 @@ func (s *CreateNatGatewayOutput) SetNatGateway(v *NatGateway) *CreateNatGatewayO } // Contains the parameters for CreateNetworkAclEntry. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNetworkAclEntryRequest type CreateNetworkAclEntryInput struct { _ struct{} `type:"structure"` @@ -25444,12 +28888,12 @@ type CreateNetworkAclEntryInput struct { PortRange *PortRange `locationName:"portRange" type:"structure"` // The protocol. A value of -1 or all means all protocols. If you specify all, - // -1, or a protocol number other than tcp, udp, or icmp, traffic on all ports - // is allowed, regardless of any ports or ICMP types or codes you specify. If - // you specify protocol 58 (ICMPv6) and specify an IPv4 CIDR block, traffic - // for all ICMP types and codes allowed, regardless of any that you specify. - // If you specify protocol 58 (ICMPv6) and specify an IPv6 CIDR block, you must - // specify an ICMP type and code. + // -1, or a protocol number other than 6 (tcp), 17 (udp), or 1 (icmp), traffic + // on all ports is allowed, regardless of any ports or ICMP types or codes you + // specify. If you specify protocol 58 (ICMPv6) and specify an IPv4 CIDR block, + // traffic for all ICMP types and codes allowed, regardless of any that you + // specify. If you specify protocol 58 (ICMPv6) and specify an IPv6 CIDR block, + // you must specify an ICMP type and code. // // Protocol is a required field Protocol *string `locationName:"protocol" type:"string" required:"true"` @@ -25564,7 +29008,6 @@ func (s *CreateNetworkAclEntryInput) SetRuleNumber(v int64) *CreateNetworkAclEnt return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNetworkAclEntryOutput type CreateNetworkAclEntryOutput struct { _ struct{} `type:"structure"` } @@ -25580,7 +29023,6 @@ func (s CreateNetworkAclEntryOutput) GoString() string { } // Contains the parameters for CreateNetworkAcl. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNetworkAclRequest type CreateNetworkAclInput struct { _ struct{} `type:"structure"` @@ -25632,7 +29074,6 @@ func (s *CreateNetworkAclInput) SetVpcId(v string) *CreateNetworkAclInput { } // Contains the output of CreateNetworkAcl. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNetworkAclResult type CreateNetworkAclOutput struct { _ struct{} `type:"structure"` @@ -25657,7 +29098,6 @@ func (s *CreateNetworkAclOutput) SetNetworkAcl(v *NetworkAcl) *CreateNetworkAclO } // Contains the parameters for CreateNetworkInterface. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNetworkInterfaceRequest type CreateNetworkInterfaceInput struct { _ struct{} `type:"structure"` @@ -25799,7 +29239,6 @@ func (s *CreateNetworkInterfaceInput) SetSubnetId(v string) *CreateNetworkInterf } // Contains the output of CreateNetworkInterface. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNetworkInterfaceResult type CreateNetworkInterfaceOutput struct { _ struct{} `type:"structure"` @@ -25824,7 +29263,6 @@ func (s *CreateNetworkInterfaceOutput) SetNetworkInterface(v *NetworkInterface) } // Contains the parameters for CreateNetworkInterfacePermission. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNetworkInterfacePermissionRequest type CreateNetworkInterfacePermissionInput struct { _ struct{} `type:"structure"` @@ -25908,7 +29346,6 @@ func (s *CreateNetworkInterfacePermissionInput) SetPermission(v string) *CreateN } // Contains the output of CreateNetworkInterfacePermission. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNetworkInterfacePermissionResult type CreateNetworkInterfacePermissionOutput struct { _ struct{} `type:"structure"` @@ -25933,7 +29370,6 @@ func (s *CreateNetworkInterfacePermissionOutput) SetInterfacePermission(v *Netwo } // Contains the parameters for CreatePlacementGroup. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreatePlacementGroupRequest type CreatePlacementGroupInput struct { _ struct{} `type:"structure"` @@ -25943,7 +29379,8 @@ type CreatePlacementGroupInput struct { // it is UnauthorizedOperation. DryRun *bool `locationName:"dryRun" type:"boolean"` - // A name for the placement group. + // A name for the placement group. Must be unique within the scope of your account + // for the region. // // Constraints: Up to 255 ASCII characters // @@ -26000,7 +29437,6 @@ func (s *CreatePlacementGroupInput) SetStrategy(v string) *CreatePlacementGroupI return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreatePlacementGroupOutput type CreatePlacementGroupOutput struct { _ struct{} `type:"structure"` } @@ -26016,7 +29452,6 @@ func (s CreatePlacementGroupOutput) GoString() string { } // Contains the parameters for CreateReservedInstancesListing. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateReservedInstancesListingRequest type CreateReservedInstancesListingInput struct { _ struct{} `type:"structure"` @@ -26104,7 +29539,6 @@ func (s *CreateReservedInstancesListingInput) SetReservedInstancesId(v string) * } // Contains the output of CreateReservedInstancesListing. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateReservedInstancesListingResult type CreateReservedInstancesListingOutput struct { _ struct{} `type:"structure"` @@ -26129,7 +29563,6 @@ func (s *CreateReservedInstancesListingOutput) SetReservedInstancesListings(v [] } // Contains the parameters for CreateRoute. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateRouteRequest type CreateRouteInput struct { _ struct{} `type:"structure"` @@ -26257,7 +29690,6 @@ func (s *CreateRouteInput) SetVpcPeeringConnectionId(v string) *CreateRouteInput } // Contains the output of CreateRoute. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateRouteResult type CreateRouteOutput struct { _ struct{} `type:"structure"` @@ -26282,7 +29714,6 @@ func (s *CreateRouteOutput) SetReturn(v bool) *CreateRouteOutput { } // Contains the parameters for CreateRouteTable. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateRouteTableRequest type CreateRouteTableInput struct { _ struct{} `type:"structure"` @@ -26334,7 +29765,6 @@ func (s *CreateRouteTableInput) SetVpcId(v string) *CreateRouteTableInput { } // Contains the output of CreateRouteTable. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateRouteTableResult type CreateRouteTableOutput struct { _ struct{} `type:"structure"` @@ -26359,7 +29789,6 @@ func (s *CreateRouteTableOutput) SetRouteTable(v *RouteTable) *CreateRouteTableO } // Contains the parameters for CreateSecurityGroup. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateSecurityGroupRequest type CreateSecurityGroupInput struct { _ struct{} `type:"structure"` @@ -26382,7 +29811,7 @@ type CreateSecurityGroupInput struct { // The name of the security group. // - // Constraints: Up to 255 characters in length + // Constraints: Up to 255 characters in length. Cannot start with sg-. // // Constraints for EC2-Classic: ASCII characters // @@ -26446,7 +29875,6 @@ func (s *CreateSecurityGroupInput) SetVpcId(v string) *CreateSecurityGroupInput } // Contains the output of CreateSecurityGroup. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateSecurityGroupResult type CreateSecurityGroupOutput struct { _ struct{} `type:"structure"` @@ -26471,7 +29899,6 @@ func (s *CreateSecurityGroupOutput) SetGroupId(v string) *CreateSecurityGroupOut } // Contains the parameters for CreateSnapshot. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateSnapshotRequest type CreateSnapshotInput struct { _ struct{} `type:"structure"` @@ -26484,6 +29911,9 @@ type CreateSnapshotInput struct { // it is UnauthorizedOperation. DryRun *bool `locationName:"dryRun" type:"boolean"` + // The tags to apply to the snapshot during creation. + TagSpecifications []*TagSpecification `locationName:"TagSpecification" locationNameList:"item" type:"list"` + // The ID of the EBS volume. // // VolumeId is a required field @@ -26525,6 +29955,12 @@ func (s *CreateSnapshotInput) SetDryRun(v bool) *CreateSnapshotInput { return s } +// SetTagSpecifications sets the TagSpecifications field's value. +func (s *CreateSnapshotInput) SetTagSpecifications(v []*TagSpecification) *CreateSnapshotInput { + s.TagSpecifications = v + return s +} + // SetVolumeId sets the VolumeId field's value. func (s *CreateSnapshotInput) SetVolumeId(v string) *CreateSnapshotInput { s.VolumeId = &v @@ -26532,11 +29968,10 @@ func (s *CreateSnapshotInput) SetVolumeId(v string) *CreateSnapshotInput { } // Contains the parameters for CreateSpotDatafeedSubscription. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateSpotDatafeedSubscriptionRequest type CreateSpotDatafeedSubscriptionInput struct { _ struct{} `type:"structure"` - // The Amazon S3 bucket in which to store the Spot instance data feed. + // The Amazon S3 bucket in which to store the Spot Instance data feed. // // Bucket is a required field Bucket *string `locationName:"bucket" type:"string" required:"true"` @@ -26593,11 +30028,10 @@ func (s *CreateSpotDatafeedSubscriptionInput) SetPrefix(v string) *CreateSpotDat } // Contains the output of CreateSpotDatafeedSubscription. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateSpotDatafeedSubscriptionResult type CreateSpotDatafeedSubscriptionOutput struct { _ struct{} `type:"structure"` - // The Spot instance data feed subscription. + // The Spot Instance data feed subscription. SpotDatafeedSubscription *SpotDatafeedSubscription `locationName:"spotDatafeedSubscription" type:"structure"` } @@ -26618,7 +30052,6 @@ func (s *CreateSpotDatafeedSubscriptionOutput) SetSpotDatafeedSubscription(v *Sp } // Contains the parameters for CreateSubnet. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateSubnetRequest type CreateSubnetInput struct { _ struct{} `type:"structure"` @@ -26706,7 +30139,6 @@ func (s *CreateSubnetInput) SetVpcId(v string) *CreateSubnetInput { } // Contains the output of CreateSubnet. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateSubnetResult type CreateSubnetOutput struct { _ struct{} `type:"structure"` @@ -26731,7 +30163,6 @@ func (s *CreateSubnetOutput) SetSubnet(v *Subnet) *CreateSubnetOutput { } // Contains the parameters for CreateTags. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateTagsRequest type CreateTagsInput struct { _ struct{} `type:"structure"` @@ -26798,7 +30229,6 @@ func (s *CreateTagsInput) SetTags(v []*Tag) *CreateTagsInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateTagsOutput type CreateTagsOutput struct { _ struct{} `type:"structure"` } @@ -26814,7 +30244,6 @@ func (s CreateTagsOutput) GoString() string { } // Contains the parameters for CreateVolume. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVolumeRequest type CreateVolumeInput struct { _ struct{} `type:"structure"` @@ -26839,20 +30268,38 @@ type CreateVolumeInput struct { // in the Amazon Elastic Compute Cloud User Guide. Encrypted *bool `locationName:"encrypted" type:"boolean"` - // Only valid for Provisioned IOPS SSD volumes. The number of I/O operations - // per second (IOPS) to provision for the volume, with a maximum ratio of 50 - // IOPS/GiB. + // The number of I/O operations per second (IOPS) to provision for the volume, + // with a maximum ratio of 50 IOPS/GiB. Range is 100 to 32000 IOPS for volumes + // in most regions. For exceptions, see Amazon EBS Volume Types (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html). // - // Constraint: Range is 100 to 20000 for Provisioned IOPS SSD volumes + // This parameter is valid only for Provisioned IOPS SSD (io1) volumes. Iops *int64 `type:"integer"` - // The full ARN of the AWS Key Management Service (AWS KMS) customer master + // An identifier for the AWS Key Management Service (AWS KMS) customer master // key (CMK) to use when creating the encrypted volume. This parameter is only // required if you want to use a non-default CMK; if this parameter is not specified, - // the default CMK for EBS is used. The ARN contains the arn:aws:kms namespace, - // followed by the region of the CMK, the AWS account ID of the CMK owner, the - // key namespace, and then the CMK ID. For example, arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef. - // If a KmsKeyId is specified, the Encrypted flag must also be set. + // the default CMK for EBS is used. If a KmsKeyId is specified, the Encrypted + // flag must also be set. + // + // The CMK identifier may be provided in any of the following formats: + // + // * Key ID + // + // * Key alias + // + // * ARN using key ID. The ID ARN contains the arn:aws:kms namespace, followed + // by the region of the CMK, the AWS account ID of the CMK owner, the key + // namespace, and then the CMK ID. For example, arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef. + // + // + // * ARN using key alias. The alias ARN contains the arn:aws:kms namespace, + // followed by the region of the CMK, the AWS account ID of the CMK owner, + // the alias namespace, and then the CMK alias. For example, arn:aws:kms:us-east-1:012345678910:alias/ExampleAlias. + // + // + // AWS parses KmsKeyId asynchronously, meaning that the action you call may + // appear to complete even though you provided an invalid identifier. The action + // will eventually fail. KmsKeyId *string `type:"string"` // The size of the volume, in GiBs. @@ -26875,7 +30322,10 @@ type CreateVolumeInput struct { // IOPS SSD, st1 for Throughput Optimized HDD, sc1 for Cold HDD, or standard // for Magnetic volumes. // - // Default: standard + // Defaults: If no volume type is specified, the default is standard in us-east-1, + // eu-west-1, eu-central-1, us-west-2, us-west-1, sa-east-1, ap-northeast-1, + // ap-northeast-2, ap-southeast-1, ap-southeast-2, ap-south-1, us-gov-west-1, + // and cn-north-1. In all other regions, EBS defaults to gp2. VolumeType *string `type:"string" enum:"VolumeType"` } @@ -26958,7 +30408,6 @@ func (s *CreateVolumeInput) SetVolumeType(v string) *CreateVolumeInput { // Describes the user or group to be added or removed from the permissions for // a volume. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVolumePermission type CreateVolumePermission struct { _ struct{} `type:"structure"` @@ -26994,7 +30443,6 @@ func (s *CreateVolumePermission) SetUserId(v string) *CreateVolumePermission { } // Describes modifications to the permissions for a volume. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVolumePermissionModifications type CreateVolumePermissionModifications struct { _ struct{} `type:"structure"` @@ -27029,8 +30477,133 @@ func (s *CreateVolumePermissionModifications) SetRemove(v []*CreateVolumePermiss return s } +type CreateVpcEndpointConnectionNotificationInput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier you provide to ensure the idempotency of + // the request. For more information, see How to Ensure Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + ClientToken *string `type:"string"` + + // One or more endpoint events for which to receive notifications. Valid values + // are Accept, Connect, Delete, and Reject. + // + // ConnectionEvents is a required field + ConnectionEvents []*string `locationNameList:"item" type:"list" required:"true"` + + // The ARN of the SNS topic for the notifications. + // + // ConnectionNotificationArn is a required field + ConnectionNotificationArn *string `type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the endpoint service. + ServiceId *string `type:"string"` + + // The ID of the endpoint. + VpcEndpointId *string `type:"string"` +} + +// String returns the string representation +func (s CreateVpcEndpointConnectionNotificationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateVpcEndpointConnectionNotificationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateVpcEndpointConnectionNotificationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateVpcEndpointConnectionNotificationInput"} + if s.ConnectionEvents == nil { + invalidParams.Add(request.NewErrParamRequired("ConnectionEvents")) + } + if s.ConnectionNotificationArn == nil { + invalidParams.Add(request.NewErrParamRequired("ConnectionNotificationArn")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientToken sets the ClientToken field's value. +func (s *CreateVpcEndpointConnectionNotificationInput) SetClientToken(v string) *CreateVpcEndpointConnectionNotificationInput { + s.ClientToken = &v + return s +} + +// SetConnectionEvents sets the ConnectionEvents field's value. +func (s *CreateVpcEndpointConnectionNotificationInput) SetConnectionEvents(v []*string) *CreateVpcEndpointConnectionNotificationInput { + s.ConnectionEvents = v + return s +} + +// SetConnectionNotificationArn sets the ConnectionNotificationArn field's value. +func (s *CreateVpcEndpointConnectionNotificationInput) SetConnectionNotificationArn(v string) *CreateVpcEndpointConnectionNotificationInput { + s.ConnectionNotificationArn = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateVpcEndpointConnectionNotificationInput) SetDryRun(v bool) *CreateVpcEndpointConnectionNotificationInput { + s.DryRun = &v + return s +} + +// SetServiceId sets the ServiceId field's value. +func (s *CreateVpcEndpointConnectionNotificationInput) SetServiceId(v string) *CreateVpcEndpointConnectionNotificationInput { + s.ServiceId = &v + return s +} + +// SetVpcEndpointId sets the VpcEndpointId field's value. +func (s *CreateVpcEndpointConnectionNotificationInput) SetVpcEndpointId(v string) *CreateVpcEndpointConnectionNotificationInput { + s.VpcEndpointId = &v + return s +} + +type CreateVpcEndpointConnectionNotificationOutput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier you provide to ensure the idempotency of + // the request. + ClientToken *string `locationName:"clientToken" type:"string"` + + // Information about the notification. + ConnectionNotification *ConnectionNotification `locationName:"connectionNotification" type:"structure"` +} + +// String returns the string representation +func (s CreateVpcEndpointConnectionNotificationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateVpcEndpointConnectionNotificationOutput) GoString() string { + return s.String() +} + +// SetClientToken sets the ClientToken field's value. +func (s *CreateVpcEndpointConnectionNotificationOutput) SetClientToken(v string) *CreateVpcEndpointConnectionNotificationOutput { + s.ClientToken = &v + return s +} + +// SetConnectionNotification sets the ConnectionNotification field's value. +func (s *CreateVpcEndpointConnectionNotificationOutput) SetConnectionNotification(v *ConnectionNotification) *CreateVpcEndpointConnectionNotificationOutput { + s.ConnectionNotification = v + return s +} + // Contains the parameters for CreateVpcEndpoint. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpcEndpointRequest type CreateVpcEndpointInput struct { _ struct{} `type:"structure"` @@ -27044,20 +30617,49 @@ type CreateVpcEndpointInput struct { // it is UnauthorizedOperation. DryRun *bool `type:"boolean"` - // A policy to attach to the endpoint that controls access to the service. The - // policy must be in valid JSON format. If this parameter is not specified, - // we attach a default policy that allows full access to the service. + // (Gateway endpoint) A policy to attach to the endpoint that controls access + // to the service. The policy must be in valid JSON format. If this parameter + // is not specified, we attach a default policy that allows full access to the + // service. PolicyDocument *string `type:"string"` - // One or more route table IDs. + // (Interface endpoint) Indicate whether to associate a private hosted zone + // with the specified VPC. The private hosted zone contains a record set for + // the default public DNS name for the service for the region (for example, + // kinesis.us-east-1.amazonaws.com) which resolves to the private IP addresses + // of the endpoint network interfaces in the VPC. This enables you to make requests + // to the default public DNS name for the service instead of the public DNS + // names that are automatically generated by the VPC endpoint service. + // + // To use a private hosted zone, you must set the following VPC attributes to + // true: enableDnsHostnames and enableDnsSupport. Use ModifyVpcAttribute to + // set the VPC attributes. + // + // Default: true + PrivateDnsEnabled *bool `type:"boolean"` + + // (Gateway endpoint) One or more route table IDs. RouteTableIds []*string `locationName:"RouteTableId" locationNameList:"item" type:"list"` - // The AWS service name, in the form com.amazonaws.region.service. To get a - // list of available services, use the DescribeVpcEndpointServices request. + // (Interface endpoint) The ID of one or more security groups to associate with + // the endpoint network interface. + SecurityGroupIds []*string `locationName:"SecurityGroupId" locationNameList:"item" type:"list"` + + // The service name. To get a list of available services, use the DescribeVpcEndpointServices + // request, or get the name from the service provider. // // ServiceName is a required field ServiceName *string `type:"string" required:"true"` + // (Interface endpoint) The ID of one or more subnets in which to create an + // endpoint network interface. + SubnetIds []*string `locationName:"SubnetId" locationNameList:"item" type:"list"` + + // The type of endpoint. + // + // Default: Gateway + VpcEndpointType *string `type:"string" enum:"VpcEndpointType"` + // The ID of the VPC in which the endpoint will be used. // // VpcId is a required field @@ -27108,18 +30710,42 @@ func (s *CreateVpcEndpointInput) SetPolicyDocument(v string) *CreateVpcEndpointI return s } +// SetPrivateDnsEnabled sets the PrivateDnsEnabled field's value. +func (s *CreateVpcEndpointInput) SetPrivateDnsEnabled(v bool) *CreateVpcEndpointInput { + s.PrivateDnsEnabled = &v + return s +} + // SetRouteTableIds sets the RouteTableIds field's value. func (s *CreateVpcEndpointInput) SetRouteTableIds(v []*string) *CreateVpcEndpointInput { s.RouteTableIds = v return s } +// SetSecurityGroupIds sets the SecurityGroupIds field's value. +func (s *CreateVpcEndpointInput) SetSecurityGroupIds(v []*string) *CreateVpcEndpointInput { + s.SecurityGroupIds = v + return s +} + // SetServiceName sets the ServiceName field's value. func (s *CreateVpcEndpointInput) SetServiceName(v string) *CreateVpcEndpointInput { s.ServiceName = &v return s } +// SetSubnetIds sets the SubnetIds field's value. +func (s *CreateVpcEndpointInput) SetSubnetIds(v []*string) *CreateVpcEndpointInput { + s.SubnetIds = v + return s +} + +// SetVpcEndpointType sets the VpcEndpointType field's value. +func (s *CreateVpcEndpointInput) SetVpcEndpointType(v string) *CreateVpcEndpointInput { + s.VpcEndpointType = &v + return s +} + // SetVpcId sets the VpcId field's value. func (s *CreateVpcEndpointInput) SetVpcId(v string) *CreateVpcEndpointInput { s.VpcId = &v @@ -27127,7 +30753,6 @@ func (s *CreateVpcEndpointInput) SetVpcId(v string) *CreateVpcEndpointInput { } // Contains the output of CreateVpcEndpoint. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpcEndpointResult type CreateVpcEndpointOutput struct { _ struct{} `type:"structure"` @@ -27161,8 +30786,111 @@ func (s *CreateVpcEndpointOutput) SetVpcEndpoint(v *VpcEndpoint) *CreateVpcEndpo return s } +type CreateVpcEndpointServiceConfigurationInput struct { + _ struct{} `type:"structure"` + + // Indicate whether requests from service consumers to create an endpoint to + // your service must be accepted. To accept a request, use AcceptVpcEndpointConnections. + AcceptanceRequired *bool `type:"boolean"` + + // Unique, case-sensitive identifier you provide to ensure the idempotency of + // the request. For more information, see How to Ensure Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html). + ClientToken *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The Amazon Resource Names (ARNs) of one or more Network Load Balancers for + // your service. + // + // NetworkLoadBalancerArns is a required field + NetworkLoadBalancerArns []*string `locationName:"NetworkLoadBalancerArn" locationNameList:"item" type:"list" required:"true"` +} + +// String returns the string representation +func (s CreateVpcEndpointServiceConfigurationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateVpcEndpointServiceConfigurationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateVpcEndpointServiceConfigurationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateVpcEndpointServiceConfigurationInput"} + if s.NetworkLoadBalancerArns == nil { + invalidParams.Add(request.NewErrParamRequired("NetworkLoadBalancerArns")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAcceptanceRequired sets the AcceptanceRequired field's value. +func (s *CreateVpcEndpointServiceConfigurationInput) SetAcceptanceRequired(v bool) *CreateVpcEndpointServiceConfigurationInput { + s.AcceptanceRequired = &v + return s +} + +// SetClientToken sets the ClientToken field's value. +func (s *CreateVpcEndpointServiceConfigurationInput) SetClientToken(v string) *CreateVpcEndpointServiceConfigurationInput { + s.ClientToken = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateVpcEndpointServiceConfigurationInput) SetDryRun(v bool) *CreateVpcEndpointServiceConfigurationInput { + s.DryRun = &v + return s +} + +// SetNetworkLoadBalancerArns sets the NetworkLoadBalancerArns field's value. +func (s *CreateVpcEndpointServiceConfigurationInput) SetNetworkLoadBalancerArns(v []*string) *CreateVpcEndpointServiceConfigurationInput { + s.NetworkLoadBalancerArns = v + return s +} + +type CreateVpcEndpointServiceConfigurationOutput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier you provide to ensure the idempotency of + // the request. + ClientToken *string `locationName:"clientToken" type:"string"` + + // Information about the service configuration. + ServiceConfiguration *ServiceConfiguration `locationName:"serviceConfiguration" type:"structure"` +} + +// String returns the string representation +func (s CreateVpcEndpointServiceConfigurationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateVpcEndpointServiceConfigurationOutput) GoString() string { + return s.String() +} + +// SetClientToken sets the ClientToken field's value. +func (s *CreateVpcEndpointServiceConfigurationOutput) SetClientToken(v string) *CreateVpcEndpointServiceConfigurationOutput { + s.ClientToken = &v + return s +} + +// SetServiceConfiguration sets the ServiceConfiguration field's value. +func (s *CreateVpcEndpointServiceConfigurationOutput) SetServiceConfiguration(v *ServiceConfiguration) *CreateVpcEndpointServiceConfigurationOutput { + s.ServiceConfiguration = v + return s +} + // Contains the parameters for CreateVpc. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpcRequest type CreateVpcInput struct { _ struct{} `type:"structure"` @@ -27243,7 +30971,6 @@ func (s *CreateVpcInput) SetInstanceTenancy(v string) *CreateVpcInput { } // Contains the output of CreateVpc. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpcResult type CreateVpcOutput struct { _ struct{} `type:"structure"` @@ -27268,7 +30995,6 @@ func (s *CreateVpcOutput) SetVpc(v *Vpc) *CreateVpcOutput { } // Contains the parameters for CreateVpcPeeringConnection. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpcPeeringConnectionRequest type CreateVpcPeeringConnectionInput struct { _ struct{} `type:"structure"` @@ -27278,15 +31004,22 @@ type CreateVpcPeeringConnectionInput struct { // it is UnauthorizedOperation. DryRun *bool `locationName:"dryRun" type:"boolean"` - // The AWS account ID of the owner of the peer VPC. + // The AWS account ID of the owner of the accepter VPC. // // Default: Your AWS account ID PeerOwnerId *string `locationName:"peerOwnerId" type:"string"` + // The region code for the accepter VPC, if the accepter VPC is located in a + // region other than the region in which you make the request. + // + // Default: The region in which you make the request. + PeerRegion *string `type:"string"` + // The ID of the VPC with which you are creating the VPC peering connection. + // You must specify this parameter in the request. PeerVpcId *string `locationName:"peerVpcId" type:"string"` - // The ID of the requester VPC. + // The ID of the requester VPC. You must specify this parameter in the request. VpcId *string `locationName:"vpcId" type:"string"` } @@ -27312,6 +31045,12 @@ func (s *CreateVpcPeeringConnectionInput) SetPeerOwnerId(v string) *CreateVpcPee return s } +// SetPeerRegion sets the PeerRegion field's value. +func (s *CreateVpcPeeringConnectionInput) SetPeerRegion(v string) *CreateVpcPeeringConnectionInput { + s.PeerRegion = &v + return s +} + // SetPeerVpcId sets the PeerVpcId field's value. func (s *CreateVpcPeeringConnectionInput) SetPeerVpcId(v string) *CreateVpcPeeringConnectionInput { s.PeerVpcId = &v @@ -27325,7 +31064,6 @@ func (s *CreateVpcPeeringConnectionInput) SetVpcId(v string) *CreateVpcPeeringCo } // Contains the output of CreateVpcPeeringConnection. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpcPeeringConnectionResult type CreateVpcPeeringConnectionOutput struct { _ struct{} `type:"structure"` @@ -27350,7 +31088,6 @@ func (s *CreateVpcPeeringConnectionOutput) SetVpcPeeringConnection(v *VpcPeering } // Contains the parameters for CreateVpnConnection. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpnConnectionRequest type CreateVpnConnectionInput struct { _ struct{} `type:"structure"` @@ -27439,7 +31176,6 @@ func (s *CreateVpnConnectionInput) SetVpnGatewayId(v string) *CreateVpnConnectio } // Contains the output of CreateVpnConnection. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpnConnectionResult type CreateVpnConnectionOutput struct { _ struct{} `type:"structure"` @@ -27464,7 +31200,6 @@ func (s *CreateVpnConnectionOutput) SetVpnConnection(v *VpnConnection) *CreateVp } // Contains the parameters for CreateVpnConnectionRoute. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpnConnectionRouteRequest type CreateVpnConnectionRouteInput struct { _ struct{} `type:"structure"` @@ -27517,7 +31252,6 @@ func (s *CreateVpnConnectionRouteInput) SetVpnConnectionId(v string) *CreateVpnC return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpnConnectionRouteOutput type CreateVpnConnectionRouteOutput struct { _ struct{} `type:"structure"` } @@ -27533,10 +31267,16 @@ func (s CreateVpnConnectionRouteOutput) GoString() string { } // Contains the parameters for CreateVpnGateway. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpnGatewayRequest type CreateVpnGatewayInput struct { _ struct{} `type:"structure"` + // A private Autonomous System Number (ASN) for the Amazon side of a BGP session. + // If you're using a 16-bit ASN, it must be in the 64512 to 65534 range. If + // you're using a 32-bit ASN, it must be in the 4200000000 to 4294967294 range. + // + // Default: 64512 + AmazonSideAsn *int64 `type:"long"` + // The Availability Zone for the virtual private gateway. AvailabilityZone *string `type:"string"` @@ -27575,6 +31315,12 @@ func (s *CreateVpnGatewayInput) Validate() error { return nil } +// SetAmazonSideAsn sets the AmazonSideAsn field's value. +func (s *CreateVpnGatewayInput) SetAmazonSideAsn(v int64) *CreateVpnGatewayInput { + s.AmazonSideAsn = &v + return s +} + // SetAvailabilityZone sets the AvailabilityZone field's value. func (s *CreateVpnGatewayInput) SetAvailabilityZone(v string) *CreateVpnGatewayInput { s.AvailabilityZone = &v @@ -27594,7 +31340,6 @@ func (s *CreateVpnGatewayInput) SetType(v string) *CreateVpnGatewayInput { } // Contains the output of CreateVpnGateway. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpnGatewayResult type CreateVpnGatewayOutput struct { _ struct{} `type:"structure"` @@ -27618,8 +31363,71 @@ func (s *CreateVpnGatewayOutput) SetVpnGateway(v *VpnGateway) *CreateVpnGatewayO return s } +// Describes the credit option for CPU usage of a T2 instance. +type CreditSpecification struct { + _ struct{} `type:"structure"` + + // The credit option for CPU usage of a T2 instance. + CpuCredits *string `locationName:"cpuCredits" type:"string"` +} + +// String returns the string representation +func (s CreditSpecification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreditSpecification) GoString() string { + return s.String() +} + +// SetCpuCredits sets the CpuCredits field's value. +func (s *CreditSpecification) SetCpuCredits(v string) *CreditSpecification { + s.CpuCredits = &v + return s +} + +// The credit option for CPU usage of a T2 instance. +type CreditSpecificationRequest struct { + _ struct{} `type:"structure"` + + // The credit option for CPU usage of a T2 instance. Valid values are standard + // and unlimited. + // + // CpuCredits is a required field + CpuCredits *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s CreditSpecificationRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreditSpecificationRequest) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreditSpecificationRequest) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreditSpecificationRequest"} + if s.CpuCredits == nil { + invalidParams.Add(request.NewErrParamRequired("CpuCredits")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetCpuCredits sets the CpuCredits field's value. +func (s *CreditSpecificationRequest) SetCpuCredits(v string) *CreditSpecificationRequest { + s.CpuCredits = &v + return s +} + // Describes a customer gateway. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CustomerGateway type CustomerGateway struct { _ struct{} `type:"structure"` @@ -27691,7 +31499,6 @@ func (s *CustomerGateway) SetType(v string) *CustomerGateway { } // Contains the parameters for DeleteCustomerGateway. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteCustomerGatewayRequest type DeleteCustomerGatewayInput struct { _ struct{} `type:"structure"` @@ -27742,7 +31549,6 @@ func (s *DeleteCustomerGatewayInput) SetDryRun(v bool) *DeleteCustomerGatewayInp return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteCustomerGatewayOutput type DeleteCustomerGatewayOutput struct { _ struct{} `type:"structure"` } @@ -27758,7 +31564,6 @@ func (s DeleteCustomerGatewayOutput) GoString() string { } // Contains the parameters for DeleteDhcpOptions. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteDhcpOptionsRequest type DeleteDhcpOptionsInput struct { _ struct{} `type:"structure"` @@ -27809,7 +31614,6 @@ func (s *DeleteDhcpOptionsInput) SetDryRun(v bool) *DeleteDhcpOptionsInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteDhcpOptionsOutput type DeleteDhcpOptionsOutput struct { _ struct{} `type:"structure"` } @@ -27824,7 +31628,6 @@ func (s DeleteDhcpOptionsOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteEgressOnlyInternetGatewayRequest type DeleteEgressOnlyInternetGatewayInput struct { _ struct{} `type:"structure"` @@ -27875,7 +31678,6 @@ func (s *DeleteEgressOnlyInternetGatewayInput) SetEgressOnlyInternetGatewayId(v return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteEgressOnlyInternetGatewayResult type DeleteEgressOnlyInternetGatewayOutput struct { _ struct{} `type:"structure"` @@ -27899,8 +31701,212 @@ func (s *DeleteEgressOnlyInternetGatewayOutput) SetReturnCode(v bool) *DeleteEgr return s } +// Describes an EC2 Fleet error. +type DeleteFleetError struct { + _ struct{} `type:"structure"` + + // The error code. + Code *string `locationName:"code" type:"string" enum:"DeleteFleetErrorCode"` + + // The description for the error code. + Message *string `locationName:"message" type:"string"` +} + +// String returns the string representation +func (s DeleteFleetError) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteFleetError) GoString() string { + return s.String() +} + +// SetCode sets the Code field's value. +func (s *DeleteFleetError) SetCode(v string) *DeleteFleetError { + s.Code = &v + return s +} + +// SetMessage sets the Message field's value. +func (s *DeleteFleetError) SetMessage(v string) *DeleteFleetError { + s.Message = &v + return s +} + +// Describes an EC2 Fleet that was not successfully deleted. +type DeleteFleetErrorItem struct { + _ struct{} `type:"structure"` + + // The error. + Error *DeleteFleetError `locationName:"error" type:"structure"` + + // The ID of the EC2 Fleet. + FleetId *string `locationName:"fleetId" type:"string"` +} + +// String returns the string representation +func (s DeleteFleetErrorItem) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteFleetErrorItem) GoString() string { + return s.String() +} + +// SetError sets the Error field's value. +func (s *DeleteFleetErrorItem) SetError(v *DeleteFleetError) *DeleteFleetErrorItem { + s.Error = v + return s +} + +// SetFleetId sets the FleetId field's value. +func (s *DeleteFleetErrorItem) SetFleetId(v string) *DeleteFleetErrorItem { + s.FleetId = &v + return s +} + +// Describes an EC2 Fleet that was successfully deleted. +type DeleteFleetSuccessItem struct { + _ struct{} `type:"structure"` + + // The current state of the EC2 Fleet. + CurrentFleetState *string `locationName:"currentFleetState" type:"string" enum:"FleetStateCode"` + + // The ID of the EC2 Fleet. + FleetId *string `locationName:"fleetId" type:"string"` + + // The previous state of the EC2 Fleet. + PreviousFleetState *string `locationName:"previousFleetState" type:"string" enum:"FleetStateCode"` +} + +// String returns the string representation +func (s DeleteFleetSuccessItem) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteFleetSuccessItem) GoString() string { + return s.String() +} + +// SetCurrentFleetState sets the CurrentFleetState field's value. +func (s *DeleteFleetSuccessItem) SetCurrentFleetState(v string) *DeleteFleetSuccessItem { + s.CurrentFleetState = &v + return s +} + +// SetFleetId sets the FleetId field's value. +func (s *DeleteFleetSuccessItem) SetFleetId(v string) *DeleteFleetSuccessItem { + s.FleetId = &v + return s +} + +// SetPreviousFleetState sets the PreviousFleetState field's value. +func (s *DeleteFleetSuccessItem) SetPreviousFleetState(v string) *DeleteFleetSuccessItem { + s.PreviousFleetState = &v + return s +} + +type DeleteFleetsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The IDs of the EC2 Fleets. + // + // FleetIds is a required field + FleetIds []*string `locationName:"FleetId" type:"list" required:"true"` + + // Indicates whether to terminate instances for an EC2 Fleet if it is deleted + // successfully. + // + // TerminateInstances is a required field + TerminateInstances *bool `type:"boolean" required:"true"` +} + +// String returns the string representation +func (s DeleteFleetsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteFleetsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteFleetsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteFleetsInput"} + if s.FleetIds == nil { + invalidParams.Add(request.NewErrParamRequired("FleetIds")) + } + if s.TerminateInstances == nil { + invalidParams.Add(request.NewErrParamRequired("TerminateInstances")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteFleetsInput) SetDryRun(v bool) *DeleteFleetsInput { + s.DryRun = &v + return s +} + +// SetFleetIds sets the FleetIds field's value. +func (s *DeleteFleetsInput) SetFleetIds(v []*string) *DeleteFleetsInput { + s.FleetIds = v + return s +} + +// SetTerminateInstances sets the TerminateInstances field's value. +func (s *DeleteFleetsInput) SetTerminateInstances(v bool) *DeleteFleetsInput { + s.TerminateInstances = &v + return s +} + +type DeleteFleetsOutput struct { + _ struct{} `type:"structure"` + + // Information about the EC2 Fleets that are successfully deleted. + SuccessfulFleetDeletions []*DeleteFleetSuccessItem `locationName:"successfulFleetDeletionSet" locationNameList:"item" type:"list"` + + // Information about the EC2 Fleets that are not successfully deleted. + UnsuccessfulFleetDeletions []*DeleteFleetErrorItem `locationName:"unsuccessfulFleetDeletionSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DeleteFleetsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteFleetsOutput) GoString() string { + return s.String() +} + +// SetSuccessfulFleetDeletions sets the SuccessfulFleetDeletions field's value. +func (s *DeleteFleetsOutput) SetSuccessfulFleetDeletions(v []*DeleteFleetSuccessItem) *DeleteFleetsOutput { + s.SuccessfulFleetDeletions = v + return s +} + +// SetUnsuccessfulFleetDeletions sets the UnsuccessfulFleetDeletions field's value. +func (s *DeleteFleetsOutput) SetUnsuccessfulFleetDeletions(v []*DeleteFleetErrorItem) *DeleteFleetsOutput { + s.UnsuccessfulFleetDeletions = v + return s +} + // Contains the parameters for DeleteFlowLogs. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteFlowLogsRequest type DeleteFlowLogsInput struct { _ struct{} `type:"structure"` @@ -27940,7 +31946,6 @@ func (s *DeleteFlowLogsInput) SetFlowLogIds(v []*string) *DeleteFlowLogsInput { } // Contains the output of DeleteFlowLogs. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteFlowLogsResult type DeleteFlowLogsOutput struct { _ struct{} `type:"structure"` @@ -27964,7 +31969,6 @@ func (s *DeleteFlowLogsOutput) SetUnsuccessful(v []*UnsuccessfulItem) *DeleteFlo return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteFpgaImageRequest type DeleteFpgaImageInput struct { _ struct{} `type:"structure"` @@ -28015,7 +32019,6 @@ func (s *DeleteFpgaImageInput) SetFpgaImageId(v string) *DeleteFpgaImageInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteFpgaImageResult type DeleteFpgaImageOutput struct { _ struct{} `type:"structure"` @@ -28040,7 +32043,6 @@ func (s *DeleteFpgaImageOutput) SetReturn(v bool) *DeleteFpgaImageOutput { } // Contains the parameters for DeleteInternetGateway. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteInternetGatewayRequest type DeleteInternetGatewayInput struct { _ struct{} `type:"structure"` @@ -28091,7 +32093,6 @@ func (s *DeleteInternetGatewayInput) SetInternetGatewayId(v string) *DeleteInter return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteInternetGatewayOutput type DeleteInternetGatewayOutput struct { _ struct{} `type:"structure"` } @@ -28107,7 +32108,6 @@ func (s DeleteInternetGatewayOutput) GoString() string { } // Contains the parameters for DeleteKeyPair. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteKeyPairRequest type DeleteKeyPairInput struct { _ struct{} `type:"structure"` @@ -28158,7 +32158,6 @@ func (s *DeleteKeyPairInput) SetKeyName(v string) *DeleteKeyPairInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteKeyPairOutput type DeleteKeyPairOutput struct { _ struct{} `type:"structure"` } @@ -28173,8 +32172,287 @@ func (s DeleteKeyPairOutput) GoString() string { return s.String() } +type DeleteLaunchTemplateInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the launch template. You must specify either the launch template + // ID or launch template name in the request. + LaunchTemplateId *string `type:"string"` + + // The name of the launch template. You must specify either the launch template + // ID or launch template name in the request. + LaunchTemplateName *string `min:"3" type:"string"` +} + +// String returns the string representation +func (s DeleteLaunchTemplateInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteLaunchTemplateInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteLaunchTemplateInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteLaunchTemplateInput"} + if s.LaunchTemplateName != nil && len(*s.LaunchTemplateName) < 3 { + invalidParams.Add(request.NewErrParamMinLen("LaunchTemplateName", 3)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteLaunchTemplateInput) SetDryRun(v bool) *DeleteLaunchTemplateInput { + s.DryRun = &v + return s +} + +// SetLaunchTemplateId sets the LaunchTemplateId field's value. +func (s *DeleteLaunchTemplateInput) SetLaunchTemplateId(v string) *DeleteLaunchTemplateInput { + s.LaunchTemplateId = &v + return s +} + +// SetLaunchTemplateName sets the LaunchTemplateName field's value. +func (s *DeleteLaunchTemplateInput) SetLaunchTemplateName(v string) *DeleteLaunchTemplateInput { + s.LaunchTemplateName = &v + return s +} + +type DeleteLaunchTemplateOutput struct { + _ struct{} `type:"structure"` + + // Information about the launch template. + LaunchTemplate *LaunchTemplate `locationName:"launchTemplate" type:"structure"` +} + +// String returns the string representation +func (s DeleteLaunchTemplateOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteLaunchTemplateOutput) GoString() string { + return s.String() +} + +// SetLaunchTemplate sets the LaunchTemplate field's value. +func (s *DeleteLaunchTemplateOutput) SetLaunchTemplate(v *LaunchTemplate) *DeleteLaunchTemplateOutput { + s.LaunchTemplate = v + return s +} + +type DeleteLaunchTemplateVersionsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the launch template. You must specify either the launch template + // ID or launch template name in the request. + LaunchTemplateId *string `type:"string"` + + // The name of the launch template. You must specify either the launch template + // ID or launch template name in the request. + LaunchTemplateName *string `min:"3" type:"string"` + + // The version numbers of one or more launch template versions to delete. + // + // Versions is a required field + Versions []*string `locationName:"LaunchTemplateVersion" locationNameList:"item" type:"list" required:"true"` +} + +// String returns the string representation +func (s DeleteLaunchTemplateVersionsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteLaunchTemplateVersionsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteLaunchTemplateVersionsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteLaunchTemplateVersionsInput"} + if s.LaunchTemplateName != nil && len(*s.LaunchTemplateName) < 3 { + invalidParams.Add(request.NewErrParamMinLen("LaunchTemplateName", 3)) + } + if s.Versions == nil { + invalidParams.Add(request.NewErrParamRequired("Versions")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteLaunchTemplateVersionsInput) SetDryRun(v bool) *DeleteLaunchTemplateVersionsInput { + s.DryRun = &v + return s +} + +// SetLaunchTemplateId sets the LaunchTemplateId field's value. +func (s *DeleteLaunchTemplateVersionsInput) SetLaunchTemplateId(v string) *DeleteLaunchTemplateVersionsInput { + s.LaunchTemplateId = &v + return s +} + +// SetLaunchTemplateName sets the LaunchTemplateName field's value. +func (s *DeleteLaunchTemplateVersionsInput) SetLaunchTemplateName(v string) *DeleteLaunchTemplateVersionsInput { + s.LaunchTemplateName = &v + return s +} + +// SetVersions sets the Versions field's value. +func (s *DeleteLaunchTemplateVersionsInput) SetVersions(v []*string) *DeleteLaunchTemplateVersionsInput { + s.Versions = v + return s +} + +type DeleteLaunchTemplateVersionsOutput struct { + _ struct{} `type:"structure"` + + // Information about the launch template versions that were successfully deleted. + SuccessfullyDeletedLaunchTemplateVersions []*DeleteLaunchTemplateVersionsResponseSuccessItem `locationName:"successfullyDeletedLaunchTemplateVersionSet" locationNameList:"item" type:"list"` + + // Information about the launch template versions that could not be deleted. + UnsuccessfullyDeletedLaunchTemplateVersions []*DeleteLaunchTemplateVersionsResponseErrorItem `locationName:"unsuccessfullyDeletedLaunchTemplateVersionSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DeleteLaunchTemplateVersionsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteLaunchTemplateVersionsOutput) GoString() string { + return s.String() +} + +// SetSuccessfullyDeletedLaunchTemplateVersions sets the SuccessfullyDeletedLaunchTemplateVersions field's value. +func (s *DeleteLaunchTemplateVersionsOutput) SetSuccessfullyDeletedLaunchTemplateVersions(v []*DeleteLaunchTemplateVersionsResponseSuccessItem) *DeleteLaunchTemplateVersionsOutput { + s.SuccessfullyDeletedLaunchTemplateVersions = v + return s +} + +// SetUnsuccessfullyDeletedLaunchTemplateVersions sets the UnsuccessfullyDeletedLaunchTemplateVersions field's value. +func (s *DeleteLaunchTemplateVersionsOutput) SetUnsuccessfullyDeletedLaunchTemplateVersions(v []*DeleteLaunchTemplateVersionsResponseErrorItem) *DeleteLaunchTemplateVersionsOutput { + s.UnsuccessfullyDeletedLaunchTemplateVersions = v + return s +} + +// Describes a launch template version that could not be deleted. +type DeleteLaunchTemplateVersionsResponseErrorItem struct { + _ struct{} `type:"structure"` + + // The ID of the launch template. + LaunchTemplateId *string `locationName:"launchTemplateId" type:"string"` + + // The name of the launch template. + LaunchTemplateName *string `locationName:"launchTemplateName" type:"string"` + + // Information about the error. + ResponseError *ResponseError `locationName:"responseError" type:"structure"` + + // The version number of the launch template. + VersionNumber *int64 `locationName:"versionNumber" type:"long"` +} + +// String returns the string representation +func (s DeleteLaunchTemplateVersionsResponseErrorItem) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteLaunchTemplateVersionsResponseErrorItem) GoString() string { + return s.String() +} + +// SetLaunchTemplateId sets the LaunchTemplateId field's value. +func (s *DeleteLaunchTemplateVersionsResponseErrorItem) SetLaunchTemplateId(v string) *DeleteLaunchTemplateVersionsResponseErrorItem { + s.LaunchTemplateId = &v + return s +} + +// SetLaunchTemplateName sets the LaunchTemplateName field's value. +func (s *DeleteLaunchTemplateVersionsResponseErrorItem) SetLaunchTemplateName(v string) *DeleteLaunchTemplateVersionsResponseErrorItem { + s.LaunchTemplateName = &v + return s +} + +// SetResponseError sets the ResponseError field's value. +func (s *DeleteLaunchTemplateVersionsResponseErrorItem) SetResponseError(v *ResponseError) *DeleteLaunchTemplateVersionsResponseErrorItem { + s.ResponseError = v + return s +} + +// SetVersionNumber sets the VersionNumber field's value. +func (s *DeleteLaunchTemplateVersionsResponseErrorItem) SetVersionNumber(v int64) *DeleteLaunchTemplateVersionsResponseErrorItem { + s.VersionNumber = &v + return s +} + +// Describes a launch template version that was successfully deleted. +type DeleteLaunchTemplateVersionsResponseSuccessItem struct { + _ struct{} `type:"structure"` + + // The ID of the launch template. + LaunchTemplateId *string `locationName:"launchTemplateId" type:"string"` + + // The name of the launch template. + LaunchTemplateName *string `locationName:"launchTemplateName" type:"string"` + + // The version number of the launch template. + VersionNumber *int64 `locationName:"versionNumber" type:"long"` +} + +// String returns the string representation +func (s DeleteLaunchTemplateVersionsResponseSuccessItem) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteLaunchTemplateVersionsResponseSuccessItem) GoString() string { + return s.String() +} + +// SetLaunchTemplateId sets the LaunchTemplateId field's value. +func (s *DeleteLaunchTemplateVersionsResponseSuccessItem) SetLaunchTemplateId(v string) *DeleteLaunchTemplateVersionsResponseSuccessItem { + s.LaunchTemplateId = &v + return s +} + +// SetLaunchTemplateName sets the LaunchTemplateName field's value. +func (s *DeleteLaunchTemplateVersionsResponseSuccessItem) SetLaunchTemplateName(v string) *DeleteLaunchTemplateVersionsResponseSuccessItem { + s.LaunchTemplateName = &v + return s +} + +// SetVersionNumber sets the VersionNumber field's value. +func (s *DeleteLaunchTemplateVersionsResponseSuccessItem) SetVersionNumber(v int64) *DeleteLaunchTemplateVersionsResponseSuccessItem { + s.VersionNumber = &v + return s +} + // Contains the parameters for DeleteNatGateway. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNatGatewayRequest type DeleteNatGatewayInput struct { _ struct{} `type:"structure"` @@ -28214,7 +32492,6 @@ func (s *DeleteNatGatewayInput) SetNatGatewayId(v string) *DeleteNatGatewayInput } // Contains the output of DeleteNatGateway. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNatGatewayResult type DeleteNatGatewayOutput struct { _ struct{} `type:"structure"` @@ -28239,7 +32516,6 @@ func (s *DeleteNatGatewayOutput) SetNatGatewayId(v string) *DeleteNatGatewayOutp } // Contains the parameters for DeleteNetworkAclEntry. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNetworkAclEntryRequest type DeleteNetworkAclEntryInput struct { _ struct{} `type:"structure"` @@ -28318,7 +32594,6 @@ func (s *DeleteNetworkAclEntryInput) SetRuleNumber(v int64) *DeleteNetworkAclEnt return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNetworkAclEntryOutput type DeleteNetworkAclEntryOutput struct { _ struct{} `type:"structure"` } @@ -28334,7 +32609,6 @@ func (s DeleteNetworkAclEntryOutput) GoString() string { } // Contains the parameters for DeleteNetworkAcl. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNetworkAclRequest type DeleteNetworkAclInput struct { _ struct{} `type:"structure"` @@ -28385,7 +32659,6 @@ func (s *DeleteNetworkAclInput) SetNetworkAclId(v string) *DeleteNetworkAclInput return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNetworkAclOutput type DeleteNetworkAclOutput struct { _ struct{} `type:"structure"` } @@ -28401,7 +32674,6 @@ func (s DeleteNetworkAclOutput) GoString() string { } // Contains the parameters for DeleteNetworkInterface. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNetworkInterfaceRequest type DeleteNetworkInterfaceInput struct { _ struct{} `type:"structure"` @@ -28452,7 +32724,6 @@ func (s *DeleteNetworkInterfaceInput) SetNetworkInterfaceId(v string) *DeleteNet return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNetworkInterfaceOutput type DeleteNetworkInterfaceOutput struct { _ struct{} `type:"structure"` } @@ -28468,7 +32739,6 @@ func (s DeleteNetworkInterfaceOutput) GoString() string { } // Contains the parameters for DeleteNetworkInterfacePermission. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNetworkInterfacePermissionRequest type DeleteNetworkInterfacePermissionInput struct { _ struct{} `type:"structure"` @@ -28530,7 +32800,6 @@ func (s *DeleteNetworkInterfacePermissionInput) SetNetworkInterfacePermissionId( } // Contains the output for DeleteNetworkInterfacePermission. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNetworkInterfacePermissionResult type DeleteNetworkInterfacePermissionOutput struct { _ struct{} `type:"structure"` @@ -28555,7 +32824,6 @@ func (s *DeleteNetworkInterfacePermissionOutput) SetReturn(v bool) *DeleteNetwor } // Contains the parameters for DeletePlacementGroup. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeletePlacementGroupRequest type DeletePlacementGroupInput struct { _ struct{} `type:"structure"` @@ -28606,7 +32874,6 @@ func (s *DeletePlacementGroupInput) SetGroupName(v string) *DeletePlacementGroup return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeletePlacementGroupOutput type DeletePlacementGroupOutput struct { _ struct{} `type:"structure"` } @@ -28622,7 +32889,6 @@ func (s DeletePlacementGroupOutput) GoString() string { } // Contains the parameters for DeleteRoute. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteRouteRequest type DeleteRouteInput struct { _ struct{} `type:"structure"` @@ -28693,7 +32959,6 @@ func (s *DeleteRouteInput) SetRouteTableId(v string) *DeleteRouteInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteRouteOutput type DeleteRouteOutput struct { _ struct{} `type:"structure"` } @@ -28709,7 +32974,6 @@ func (s DeleteRouteOutput) GoString() string { } // Contains the parameters for DeleteRouteTable. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteRouteTableRequest type DeleteRouteTableInput struct { _ struct{} `type:"structure"` @@ -28760,7 +33024,6 @@ func (s *DeleteRouteTableInput) SetRouteTableId(v string) *DeleteRouteTableInput return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteRouteTableOutput type DeleteRouteTableOutput struct { _ struct{} `type:"structure"` } @@ -28776,7 +33039,6 @@ func (s DeleteRouteTableOutput) GoString() string { } // Contains the parameters for DeleteSecurityGroup. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteSecurityGroupRequest type DeleteSecurityGroupInput struct { _ struct{} `type:"structure"` @@ -28822,7 +33084,6 @@ func (s *DeleteSecurityGroupInput) SetGroupName(v string) *DeleteSecurityGroupIn return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteSecurityGroupOutput type DeleteSecurityGroupOutput struct { _ struct{} `type:"structure"` } @@ -28838,7 +33099,6 @@ func (s DeleteSecurityGroupOutput) GoString() string { } // Contains the parameters for DeleteSnapshot. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteSnapshotRequest type DeleteSnapshotInput struct { _ struct{} `type:"structure"` @@ -28889,7 +33149,6 @@ func (s *DeleteSnapshotInput) SetSnapshotId(v string) *DeleteSnapshotInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteSnapshotOutput type DeleteSnapshotOutput struct { _ struct{} `type:"structure"` } @@ -28905,7 +33164,6 @@ func (s DeleteSnapshotOutput) GoString() string { } // Contains the parameters for DeleteSpotDatafeedSubscription. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteSpotDatafeedSubscriptionRequest type DeleteSpotDatafeedSubscriptionInput struct { _ struct{} `type:"structure"` @@ -28932,7 +33190,6 @@ func (s *DeleteSpotDatafeedSubscriptionInput) SetDryRun(v bool) *DeleteSpotDataf return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteSpotDatafeedSubscriptionOutput type DeleteSpotDatafeedSubscriptionOutput struct { _ struct{} `type:"structure"` } @@ -28948,7 +33205,6 @@ func (s DeleteSpotDatafeedSubscriptionOutput) GoString() string { } // Contains the parameters for DeleteSubnet. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteSubnetRequest type DeleteSubnetInput struct { _ struct{} `type:"structure"` @@ -28999,7 +33255,6 @@ func (s *DeleteSubnetInput) SetSubnetId(v string) *DeleteSubnetInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteSubnetOutput type DeleteSubnetOutput struct { _ struct{} `type:"structure"` } @@ -29015,7 +33270,6 @@ func (s DeleteSubnetOutput) GoString() string { } // Contains the parameters for DeleteTags. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteTagsRequest type DeleteTagsInput struct { _ struct{} `type:"structure"` @@ -29030,12 +33284,14 @@ type DeleteTagsInput struct { // Resources is a required field Resources []*string `locationName:"resourceId" type:"list" required:"true"` - // One or more tags to delete. If you omit this parameter, we delete all tags - // for the specified resources. Specify a tag key and an optional tag value - // to delete specific tags. If you specify a tag key without a tag value, we - // delete any tag with this key regardless of its value. If you specify a tag - // key with an empty string as the tag value, we delete the tag only if its - // value is an empty string. + // One or more tags to delete. Specify a tag key and an optional tag value to + // delete specific tags. If you specify a tag key without a tag value, we delete + // any tag with this key regardless of its value. If you specify a tag key with + // an empty string as the tag value, we delete the tag only if its value is + // an empty string. + // + // If you omit this parameter, we delete all user-defined tags for the specified + // resources. We do not delete AWS-generated tags (tags that have the aws: prefix). Tags []*Tag `locationName:"tag" locationNameList:"item" type:"list"` } @@ -29080,7 +33336,6 @@ func (s *DeleteTagsInput) SetTags(v []*Tag) *DeleteTagsInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteTagsOutput type DeleteTagsOutput struct { _ struct{} `type:"structure"` } @@ -29096,7 +33351,6 @@ func (s DeleteTagsOutput) GoString() string { } // Contains the parameters for DeleteVolume. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVolumeRequest type DeleteVolumeInput struct { _ struct{} `type:"structure"` @@ -29147,7 +33401,6 @@ func (s *DeleteVolumeInput) SetVolumeId(v string) *DeleteVolumeInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVolumeOutput type DeleteVolumeOutput struct { _ struct{} `type:"structure"` } @@ -29162,8 +33415,153 @@ func (s DeleteVolumeOutput) GoString() string { return s.String() } +type DeleteVpcEndpointConnectionNotificationsInput struct { + _ struct{} `type:"structure"` + + // One or more notification IDs. + // + // ConnectionNotificationIds is a required field + ConnectionNotificationIds []*string `locationName:"ConnectionNotificationId" locationNameList:"item" type:"list" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` +} + +// String returns the string representation +func (s DeleteVpcEndpointConnectionNotificationsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteVpcEndpointConnectionNotificationsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteVpcEndpointConnectionNotificationsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteVpcEndpointConnectionNotificationsInput"} + if s.ConnectionNotificationIds == nil { + invalidParams.Add(request.NewErrParamRequired("ConnectionNotificationIds")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetConnectionNotificationIds sets the ConnectionNotificationIds field's value. +func (s *DeleteVpcEndpointConnectionNotificationsInput) SetConnectionNotificationIds(v []*string) *DeleteVpcEndpointConnectionNotificationsInput { + s.ConnectionNotificationIds = v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteVpcEndpointConnectionNotificationsInput) SetDryRun(v bool) *DeleteVpcEndpointConnectionNotificationsInput { + s.DryRun = &v + return s +} + +type DeleteVpcEndpointConnectionNotificationsOutput struct { + _ struct{} `type:"structure"` + + // Information about the notifications that could not be deleted successfully. + Unsuccessful []*UnsuccessfulItem `locationName:"unsuccessful" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DeleteVpcEndpointConnectionNotificationsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteVpcEndpointConnectionNotificationsOutput) GoString() string { + return s.String() +} + +// SetUnsuccessful sets the Unsuccessful field's value. +func (s *DeleteVpcEndpointConnectionNotificationsOutput) SetUnsuccessful(v []*UnsuccessfulItem) *DeleteVpcEndpointConnectionNotificationsOutput { + s.Unsuccessful = v + return s +} + +type DeleteVpcEndpointServiceConfigurationsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The IDs of one or more services. + // + // ServiceIds is a required field + ServiceIds []*string `locationName:"ServiceId" locationNameList:"item" type:"list" required:"true"` +} + +// String returns the string representation +func (s DeleteVpcEndpointServiceConfigurationsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteVpcEndpointServiceConfigurationsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteVpcEndpointServiceConfigurationsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteVpcEndpointServiceConfigurationsInput"} + if s.ServiceIds == nil { + invalidParams.Add(request.NewErrParamRequired("ServiceIds")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteVpcEndpointServiceConfigurationsInput) SetDryRun(v bool) *DeleteVpcEndpointServiceConfigurationsInput { + s.DryRun = &v + return s +} + +// SetServiceIds sets the ServiceIds field's value. +func (s *DeleteVpcEndpointServiceConfigurationsInput) SetServiceIds(v []*string) *DeleteVpcEndpointServiceConfigurationsInput { + s.ServiceIds = v + return s +} + +type DeleteVpcEndpointServiceConfigurationsOutput struct { + _ struct{} `type:"structure"` + + // Information about the service configurations that were not deleted, if applicable. + Unsuccessful []*UnsuccessfulItem `locationName:"unsuccessful" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DeleteVpcEndpointServiceConfigurationsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteVpcEndpointServiceConfigurationsOutput) GoString() string { + return s.String() +} + +// SetUnsuccessful sets the Unsuccessful field's value. +func (s *DeleteVpcEndpointServiceConfigurationsOutput) SetUnsuccessful(v []*UnsuccessfulItem) *DeleteVpcEndpointServiceConfigurationsOutput { + s.Unsuccessful = v + return s +} + // Contains the parameters for DeleteVpcEndpoints. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpcEndpointsRequest type DeleteVpcEndpointsInput struct { _ struct{} `type:"structure"` @@ -29173,7 +33571,7 @@ type DeleteVpcEndpointsInput struct { // it is UnauthorizedOperation. DryRun *bool `type:"boolean"` - // One or more endpoint IDs. + // One or more VPC endpoint IDs. // // VpcEndpointIds is a required field VpcEndpointIds []*string `locationName:"VpcEndpointId" locationNameList:"item" type:"list" required:"true"` @@ -29215,11 +33613,10 @@ func (s *DeleteVpcEndpointsInput) SetVpcEndpointIds(v []*string) *DeleteVpcEndpo } // Contains the output of DeleteVpcEndpoints. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpcEndpointsResult type DeleteVpcEndpointsOutput struct { _ struct{} `type:"structure"` - // Information about the endpoints that were not successfully deleted. + // Information about the VPC endpoints that were not successfully deleted. Unsuccessful []*UnsuccessfulItem `locationName:"unsuccessful" locationNameList:"item" type:"list"` } @@ -29240,7 +33637,6 @@ func (s *DeleteVpcEndpointsOutput) SetUnsuccessful(v []*UnsuccessfulItem) *Delet } // Contains the parameters for DeleteVpc. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpcRequest type DeleteVpcInput struct { _ struct{} `type:"structure"` @@ -29291,7 +33687,6 @@ func (s *DeleteVpcInput) SetVpcId(v string) *DeleteVpcInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpcOutput type DeleteVpcOutput struct { _ struct{} `type:"structure"` } @@ -29307,7 +33702,6 @@ func (s DeleteVpcOutput) GoString() string { } // Contains the parameters for DeleteVpcPeeringConnection. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpcPeeringConnectionRequest type DeleteVpcPeeringConnectionInput struct { _ struct{} `type:"structure"` @@ -29359,7 +33753,6 @@ func (s *DeleteVpcPeeringConnectionInput) SetVpcPeeringConnectionId(v string) *D } // Contains the output of DeleteVpcPeeringConnection. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpcPeeringConnectionResult type DeleteVpcPeeringConnectionOutput struct { _ struct{} `type:"structure"` @@ -29384,7 +33777,6 @@ func (s *DeleteVpcPeeringConnectionOutput) SetReturn(v bool) *DeleteVpcPeeringCo } // Contains the parameters for DeleteVpnConnection. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpnConnectionRequest type DeleteVpnConnectionInput struct { _ struct{} `type:"structure"` @@ -29435,7 +33827,6 @@ func (s *DeleteVpnConnectionInput) SetVpnConnectionId(v string) *DeleteVpnConnec return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpnConnectionOutput type DeleteVpnConnectionOutput struct { _ struct{} `type:"structure"` } @@ -29451,7 +33842,6 @@ func (s DeleteVpnConnectionOutput) GoString() string { } // Contains the parameters for DeleteVpnConnectionRoute. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpnConnectionRouteRequest type DeleteVpnConnectionRouteInput struct { _ struct{} `type:"structure"` @@ -29504,7 +33894,6 @@ func (s *DeleteVpnConnectionRouteInput) SetVpnConnectionId(v string) *DeleteVpnC return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpnConnectionRouteOutput type DeleteVpnConnectionRouteOutput struct { _ struct{} `type:"structure"` } @@ -29520,7 +33909,6 @@ func (s DeleteVpnConnectionRouteOutput) GoString() string { } // Contains the parameters for DeleteVpnGateway. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpnGatewayRequest type DeleteVpnGatewayInput struct { _ struct{} `type:"structure"` @@ -29571,7 +33959,6 @@ func (s *DeleteVpnGatewayInput) SetVpnGatewayId(v string) *DeleteVpnGatewayInput return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpnGatewayOutput type DeleteVpnGatewayOutput struct { _ struct{} `type:"structure"` } @@ -29587,7 +33974,6 @@ func (s DeleteVpnGatewayOutput) GoString() string { } // Contains the parameters for DeregisterImage. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeregisterImageRequest type DeregisterImageInput struct { _ struct{} `type:"structure"` @@ -29638,7 +34024,6 @@ func (s *DeregisterImageInput) SetImageId(v string) *DeregisterImageInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeregisterImageOutput type DeregisterImageOutput struct { _ struct{} `type:"structure"` } @@ -29654,7 +34039,6 @@ func (s DeregisterImageOutput) GoString() string { } // Contains the parameters for DescribeAccountAttributes. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeAccountAttributesRequest type DescribeAccountAttributesInput struct { _ struct{} `type:"structure"` @@ -29691,7 +34075,6 @@ func (s *DescribeAccountAttributesInput) SetDryRun(v bool) *DescribeAccountAttri } // Contains the output of DescribeAccountAttributes. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeAccountAttributesResult type DescribeAccountAttributesOutput struct { _ struct{} `type:"structure"` @@ -29716,7 +34099,6 @@ func (s *DescribeAccountAttributesOutput) SetAccountAttributes(v []*AccountAttri } // Contains the parameters for DescribeAddresses. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeAddressesRequest type DescribeAddressesInput struct { _ struct{} `type:"structure"` @@ -29752,6 +34134,18 @@ type DescribeAddressesInput struct { // the Elastic IP address. // // * public-ip - The Elastic IP address. + // + // * tag:key=value - The key/value combination of a tag assigned to the resource. + // Specify the key of the tag in the filter name and the value of the tag + // in the filter value. For example, for the tag Purpose=X, specify tag:Purpose + // for the filter name and X for the filter value. + // + // * tag-key - The key of a tag assigned to the resource. This filter is + // independent of the tag-value filter. For example, if you use both the + // filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources + // assigned both the tag key Purpose (regardless of what the tag's value + // is), and the tag value X (regardless of the tag's key). If you want to + // list only resources where Purpose is X, see the tag:key=value filter. Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` // [EC2-Classic] One or more Elastic IP addresses. @@ -29795,7 +34189,6 @@ func (s *DescribeAddressesInput) SetPublicIps(v []*string) *DescribeAddressesInp } // Contains the output of DescribeAddresses. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeAddressesResult type DescribeAddressesOutput struct { _ struct{} `type:"structure"` @@ -29819,8 +34212,67 @@ func (s *DescribeAddressesOutput) SetAddresses(v []*Address) *DescribeAddressesO return s } +type DescribeAggregateIdFormatInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` +} + +// String returns the string representation +func (s DescribeAggregateIdFormatInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeAggregateIdFormatInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeAggregateIdFormatInput) SetDryRun(v bool) *DescribeAggregateIdFormatInput { + s.DryRun = &v + return s +} + +type DescribeAggregateIdFormatOutput struct { + _ struct{} `type:"structure"` + + // Information about each resource's ID format. + Statuses []*IdFormat `locationName:"statusSet" locationNameList:"item" type:"list"` + + // Indicates whether all resource types in the region are configured to use + // longer IDs. This value is only true if all users are configured to use longer + // IDs for all resources types in the region. + UseLongIdsAggregated *bool `locationName:"useLongIdsAggregated" type:"boolean"` +} + +// String returns the string representation +func (s DescribeAggregateIdFormatOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeAggregateIdFormatOutput) GoString() string { + return s.String() +} + +// SetStatuses sets the Statuses field's value. +func (s *DescribeAggregateIdFormatOutput) SetStatuses(v []*IdFormat) *DescribeAggregateIdFormatOutput { + s.Statuses = v + return s +} + +// SetUseLongIdsAggregated sets the UseLongIdsAggregated field's value. +func (s *DescribeAggregateIdFormatOutput) SetUseLongIdsAggregated(v bool) *DescribeAggregateIdFormatOutput { + s.UseLongIdsAggregated = &v + return s +} + // Contains the parameters for DescribeAvailabilityZones. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeAvailabilityZonesRequest type DescribeAvailabilityZonesInput struct { _ struct{} `type:"structure"` @@ -29876,7 +34328,6 @@ func (s *DescribeAvailabilityZonesInput) SetZoneNames(v []*string) *DescribeAvai } // Contains the output of DescribeAvailabiltyZones. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeAvailabilityZonesResult type DescribeAvailabilityZonesOutput struct { _ struct{} `type:"structure"` @@ -29901,7 +34352,6 @@ func (s *DescribeAvailabilityZonesOutput) SetAvailabilityZones(v []*Availability } // Contains the parameters for DescribeBundleTasks. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeBundleTasksRequest type DescribeBundleTasksInput struct { _ struct{} `type:"structure"` @@ -29971,7 +34421,6 @@ func (s *DescribeBundleTasksInput) SetFilters(v []*Filter) *DescribeBundleTasksI } // Contains the output of DescribeBundleTasks. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeBundleTasksResult type DescribeBundleTasksOutput struct { _ struct{} `type:"structure"` @@ -29996,7 +34445,6 @@ func (s *DescribeBundleTasksOutput) SetBundleTasks(v []*BundleTask) *DescribeBun } // Contains the parameters for DescribeClassicLinkInstances. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeClassicLinkInstancesRequest type DescribeClassicLinkInstancesInput struct { _ struct{} `type:"structure"` @@ -30087,7 +34535,6 @@ func (s *DescribeClassicLinkInstancesInput) SetNextToken(v string) *DescribeClas } // Contains the output of DescribeClassicLinkInstances. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeClassicLinkInstancesResult type DescribeClassicLinkInstancesOutput struct { _ struct{} `type:"structure"` @@ -30122,7 +34569,6 @@ func (s *DescribeClassicLinkInstancesOutput) SetNextToken(v string) *DescribeCla } // Contains the parameters for DescribeConversionTasks. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeConversionTasksRequest type DescribeConversionTasksInput struct { _ struct{} `type:"structure"` @@ -30159,7 +34605,6 @@ func (s *DescribeConversionTasksInput) SetDryRun(v bool) *DescribeConversionTask } // Contains the output for DescribeConversionTasks. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeConversionTasksResult type DescribeConversionTasksOutput struct { _ struct{} `type:"structure"` @@ -30184,7 +34629,6 @@ func (s *DescribeConversionTasksOutput) SetConversionTasks(v []*ConversionTask) } // Contains the parameters for DescribeCustomerGateways. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeCustomerGatewaysRequest type DescribeCustomerGatewaysInput struct { _ struct{} `type:"structure"` @@ -30262,7 +34706,6 @@ func (s *DescribeCustomerGatewaysInput) SetFilters(v []*Filter) *DescribeCustome } // Contains the output of DescribeCustomerGateways. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeCustomerGatewaysResult type DescribeCustomerGatewaysOutput struct { _ struct{} `type:"structure"` @@ -30287,7 +34730,6 @@ func (s *DescribeCustomerGatewaysOutput) SetCustomerGateways(v []*CustomerGatewa } // Contains the parameters for DescribeDhcpOptions. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeDhcpOptionsRequest type DescribeDhcpOptionsInput struct { _ struct{} `type:"structure"` @@ -30357,7 +34799,6 @@ func (s *DescribeDhcpOptionsInput) SetFilters(v []*Filter) *DescribeDhcpOptionsI } // Contains the output of DescribeDhcpOptions. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeDhcpOptionsResult type DescribeDhcpOptionsOutput struct { _ struct{} `type:"structure"` @@ -30381,7 +34822,6 @@ func (s *DescribeDhcpOptionsOutput) SetDhcpOptions(v []*DhcpOptions) *DescribeDh return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeEgressOnlyInternetGatewaysRequest type DescribeEgressOnlyInternetGatewaysInput struct { _ struct{} `type:"structure"` @@ -30438,7 +34878,6 @@ func (s *DescribeEgressOnlyInternetGatewaysInput) SetNextToken(v string) *Descri return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeEgressOnlyInternetGatewaysResult type DescribeEgressOnlyInternetGatewaysOutput struct { _ struct{} `type:"structure"` @@ -30471,7 +34910,6 @@ func (s *DescribeEgressOnlyInternetGatewaysOutput) SetNextToken(v string) *Descr return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeElasticGpusRequest type DescribeElasticGpusInput struct { _ struct{} `type:"structure"` @@ -30546,7 +34984,6 @@ func (s *DescribeElasticGpusInput) SetNextToken(v string) *DescribeElasticGpusIn return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeElasticGpusResult type DescribeElasticGpusOutput struct { _ struct{} `type:"structure"` @@ -30592,7 +35029,6 @@ func (s *DescribeElasticGpusOutput) SetNextToken(v string) *DescribeElasticGpusO } // Contains the parameters for DescribeExportTasks. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeExportTasksRequest type DescribeExportTasksInput struct { _ struct{} `type:"structure"` @@ -30617,7 +35053,6 @@ func (s *DescribeExportTasksInput) SetExportTaskIds(v []*string) *DescribeExport } // Contains the output for DescribeExportTasks. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeExportTasksResult type DescribeExportTasksOutput struct { _ struct{} `type:"structure"` @@ -30641,8 +35076,379 @@ func (s *DescribeExportTasksOutput) SetExportTasks(v []*ExportTask) *DescribeExp return s } +type DescribeFleetHistoryInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The type of events to describe. By default, all events are described. + EventType *string `type:"string" enum:"FleetEventType"` + + // The ID of the EC2 Fleet. + // + // FleetId is a required field + FleetId *string `type:"string" required:"true"` + + // The maximum number of results to return in a single call. Specify a value + // between 1 and 1000. The default value is 1000. To retrieve the remaining + // results, make another call with the returned NextToken value. + MaxResults *int64 `type:"integer"` + + // The token for the next set of results. + NextToken *string `type:"string"` + + // The start date and time for the events, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). + // + // StartTime is a required field + StartTime *time.Time `type:"timestamp" timestampFormat:"iso8601" required:"true"` +} + +// String returns the string representation +func (s DescribeFleetHistoryInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeFleetHistoryInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeFleetHistoryInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeFleetHistoryInput"} + if s.FleetId == nil { + invalidParams.Add(request.NewErrParamRequired("FleetId")) + } + if s.StartTime == nil { + invalidParams.Add(request.NewErrParamRequired("StartTime")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeFleetHistoryInput) SetDryRun(v bool) *DescribeFleetHistoryInput { + s.DryRun = &v + return s +} + +// SetEventType sets the EventType field's value. +func (s *DescribeFleetHistoryInput) SetEventType(v string) *DescribeFleetHistoryInput { + s.EventType = &v + return s +} + +// SetFleetId sets the FleetId field's value. +func (s *DescribeFleetHistoryInput) SetFleetId(v string) *DescribeFleetHistoryInput { + s.FleetId = &v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeFleetHistoryInput) SetMaxResults(v int64) *DescribeFleetHistoryInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeFleetHistoryInput) SetNextToken(v string) *DescribeFleetHistoryInput { + s.NextToken = &v + return s +} + +// SetStartTime sets the StartTime field's value. +func (s *DescribeFleetHistoryInput) SetStartTime(v time.Time) *DescribeFleetHistoryInput { + s.StartTime = &v + return s +} + +type DescribeFleetHistoryOutput struct { + _ struct{} `type:"structure"` + + // The ID of the EC Fleet. + FleetId *string `locationName:"fleetId" type:"string"` + + // Information about the events in the history of the EC2 Fleet. + HistoryRecords []*HistoryRecordEntry `locationName:"historyRecordSet" locationNameList:"item" type:"list"` + + // The last date and time for the events, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). + // All records up to this time were retrieved. + // + // If nextToken indicates that there are more results, this value is not present. + LastEvaluatedTime *time.Time `locationName:"lastEvaluatedTime" type:"timestamp" timestampFormat:"iso8601"` + + // The token for the next set of results. + NextToken *string `locationName:"nextToken" type:"string"` + + // The start date and time for the events, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). + StartTime *time.Time `locationName:"startTime" type:"timestamp" timestampFormat:"iso8601"` +} + +// String returns the string representation +func (s DescribeFleetHistoryOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeFleetHistoryOutput) GoString() string { + return s.String() +} + +// SetFleetId sets the FleetId field's value. +func (s *DescribeFleetHistoryOutput) SetFleetId(v string) *DescribeFleetHistoryOutput { + s.FleetId = &v + return s +} + +// SetHistoryRecords sets the HistoryRecords field's value. +func (s *DescribeFleetHistoryOutput) SetHistoryRecords(v []*HistoryRecordEntry) *DescribeFleetHistoryOutput { + s.HistoryRecords = v + return s +} + +// SetLastEvaluatedTime sets the LastEvaluatedTime field's value. +func (s *DescribeFleetHistoryOutput) SetLastEvaluatedTime(v time.Time) *DescribeFleetHistoryOutput { + s.LastEvaluatedTime = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeFleetHistoryOutput) SetNextToken(v string) *DescribeFleetHistoryOutput { + s.NextToken = &v + return s +} + +// SetStartTime sets the StartTime field's value. +func (s *DescribeFleetHistoryOutput) SetStartTime(v time.Time) *DescribeFleetHistoryOutput { + s.StartTime = &v + return s +} + +type DescribeFleetInstancesInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more filters. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The ID of the EC2 Fleet. + // + // FleetId is a required field + FleetId *string `type:"string" required:"true"` + + // The maximum number of results to return in a single call. Specify a value + // between 1 and 1000. The default value is 1000. To retrieve the remaining + // results, make another call with the returned NextToken value. + MaxResults *int64 `type:"integer"` + + // The token for the next set of results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s DescribeFleetInstancesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeFleetInstancesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeFleetInstancesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeFleetInstancesInput"} + if s.FleetId == nil { + invalidParams.Add(request.NewErrParamRequired("FleetId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeFleetInstancesInput) SetDryRun(v bool) *DescribeFleetInstancesInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeFleetInstancesInput) SetFilters(v []*Filter) *DescribeFleetInstancesInput { + s.Filters = v + return s +} + +// SetFleetId sets the FleetId field's value. +func (s *DescribeFleetInstancesInput) SetFleetId(v string) *DescribeFleetInstancesInput { + s.FleetId = &v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeFleetInstancesInput) SetMaxResults(v int64) *DescribeFleetInstancesInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeFleetInstancesInput) SetNextToken(v string) *DescribeFleetInstancesInput { + s.NextToken = &v + return s +} + +type DescribeFleetInstancesOutput struct { + _ struct{} `type:"structure"` + + // The running instances. This list is refreshed periodically and might be out + // of date. + ActiveInstances []*ActiveInstance `locationName:"activeInstanceSet" locationNameList:"item" type:"list"` + + // The ID of the EC2 Fleet. + FleetId *string `locationName:"fleetId" type:"string"` + + // The token for the next set of results. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeFleetInstancesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeFleetInstancesOutput) GoString() string { + return s.String() +} + +// SetActiveInstances sets the ActiveInstances field's value. +func (s *DescribeFleetInstancesOutput) SetActiveInstances(v []*ActiveInstance) *DescribeFleetInstancesOutput { + s.ActiveInstances = v + return s +} + +// SetFleetId sets the FleetId field's value. +func (s *DescribeFleetInstancesOutput) SetFleetId(v string) *DescribeFleetInstancesOutput { + s.FleetId = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeFleetInstancesOutput) SetNextToken(v string) *DescribeFleetInstancesOutput { + s.NextToken = &v + return s +} + +type DescribeFleetsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more filters. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The ID of the EC2 Fleets. + FleetIds []*string `locationName:"FleetId" type:"list"` + + // The maximum number of results to return in a single call. Specify a value + // between 1 and 1000. The default value is 1000. To retrieve the remaining + // results, make another call with the returned NextToken value. + MaxResults *int64 `type:"integer"` + + // The token for the next set of results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s DescribeFleetsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeFleetsInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeFleetsInput) SetDryRun(v bool) *DescribeFleetsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeFleetsInput) SetFilters(v []*Filter) *DescribeFleetsInput { + s.Filters = v + return s +} + +// SetFleetIds sets the FleetIds field's value. +func (s *DescribeFleetsInput) SetFleetIds(v []*string) *DescribeFleetsInput { + s.FleetIds = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeFleetsInput) SetMaxResults(v int64) *DescribeFleetsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeFleetsInput) SetNextToken(v string) *DescribeFleetsInput { + s.NextToken = &v + return s +} + +type DescribeFleetsOutput struct { + _ struct{} `type:"structure"` + + // The EC2 Fleets. + Fleets []*FleetData `locationName:"fleetSet" locationNameList:"item" type:"list"` + + // The token for the next set of results. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeFleetsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeFleetsOutput) GoString() string { + return s.String() +} + +// SetFleets sets the Fleets field's value. +func (s *DescribeFleetsOutput) SetFleets(v []*FleetData) *DescribeFleetsOutput { + s.Fleets = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeFleetsOutput) SetNextToken(v string) *DescribeFleetsOutput { + s.NextToken = &v + return s +} + // Contains the parameters for DescribeFlowLogs. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeFlowLogsRequest type DescribeFlowLogsInput struct { _ struct{} `type:"structure"` @@ -30708,7 +35514,6 @@ func (s *DescribeFlowLogsInput) SetNextToken(v string) *DescribeFlowLogsInput { } // Contains the output of DescribeFlowLogs. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeFlowLogsResult type DescribeFlowLogsOutput struct { _ struct{} `type:"structure"` @@ -30742,7 +35547,6 @@ func (s *DescribeFlowLogsOutput) SetNextToken(v string) *DescribeFlowLogsOutput return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeFpgaImageAttributeRequest type DescribeFpgaImageAttributeInput struct { _ struct{} `type:"structure"` @@ -30807,7 +35611,6 @@ func (s *DescribeFpgaImageAttributeInput) SetFpgaImageId(v string) *DescribeFpga return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeFpgaImageAttributeResult type DescribeFpgaImageAttributeOutput struct { _ struct{} `type:"structure"` @@ -30831,7 +35634,6 @@ func (s *DescribeFpgaImageAttributeOutput) SetFpgaImageAttribute(v *FpgaImageAtt return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeFpgaImagesRequest type DescribeFpgaImagesInput struct { _ struct{} `type:"structure"` @@ -30955,7 +35757,6 @@ func (s *DescribeFpgaImagesInput) SetOwners(v []*string) *DescribeFpgaImagesInpu return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeFpgaImagesResult type DescribeFpgaImagesOutput struct { _ struct{} `type:"structure"` @@ -30989,7 +35790,6 @@ func (s *DescribeFpgaImagesOutput) SetNextToken(v string) *DescribeFpgaImagesOut return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeHostReservationOfferingsRequest type DescribeHostReservationOfferingsInput struct { _ struct{} `type:"structure"` @@ -31073,7 +35873,6 @@ func (s *DescribeHostReservationOfferingsInput) SetOfferingId(v string) *Describ return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeHostReservationOfferingsResult type DescribeHostReservationOfferingsOutput struct { _ struct{} `type:"structure"` @@ -31107,7 +35906,6 @@ func (s *DescribeHostReservationOfferingsOutput) SetOfferingSet(v []*HostOfferin return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeHostReservationsRequest type DescribeHostReservationsInput struct { _ struct{} `type:"structure"` @@ -31168,7 +35966,6 @@ func (s *DescribeHostReservationsInput) SetNextToken(v string) *DescribeHostRese return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeHostReservationsResult type DescribeHostReservationsOutput struct { _ struct{} `type:"structure"` @@ -31203,27 +36000,26 @@ func (s *DescribeHostReservationsOutput) SetNextToken(v string) *DescribeHostRes } // Contains the parameters for DescribeHosts. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeHostsRequest type DescribeHostsInput struct { _ struct{} `type:"structure"` // One or more filters. // - // * instance-type - The instance type size that the Dedicated Host is configured - // to support. - // // * auto-placement - Whether auto-placement is enabled or disabled (on | // off). // + // * availability-zone - The Availability Zone of the host. + // + // * client-token - The idempotency token you provided when you allocated + // the host. + // // * host-reservation-id - The ID of the reservation assigned to this host. // - // * client-token - The idempotency token you provided when you launched - // the instance + // * instance-type - The instance type size that the Dedicated Host is configured + // to support. // - // * state- The allocation state of the Dedicated Host (available | under-assessment + // * state - The allocation state of the Dedicated Host (available | under-assessment // | permanent-failure | released | released-permanent-failure). - // - // * availability-zone - The Availability Zone of the host. Filter []*Filter `locationName:"filter" locationNameList:"Filter" type:"list"` // The IDs of the Dedicated Hosts. The IDs are used for targeted instance launches. @@ -31275,7 +36071,6 @@ func (s *DescribeHostsInput) SetNextToken(v string) *DescribeHostsInput { } // Contains the output of DescribeHosts. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeHostsResult type DescribeHostsOutput struct { _ struct{} `type:"structure"` @@ -31309,7 +36104,6 @@ func (s *DescribeHostsOutput) SetNextToken(v string) *DescribeHostsOutput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeIamInstanceProfileAssociationsRequest type DescribeIamInstanceProfileAssociationsInput struct { _ struct{} `type:"structure"` @@ -31382,7 +36176,6 @@ func (s *DescribeIamInstanceProfileAssociationsInput) SetNextToken(v string) *De return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeIamInstanceProfileAssociationsResult type DescribeIamInstanceProfileAssociationsOutput struct { _ struct{} `type:"structure"` @@ -31417,11 +36210,16 @@ func (s *DescribeIamInstanceProfileAssociationsOutput) SetNextToken(v string) *D } // Contains the parameters for DescribeIdFormat. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeIdFormatRequest type DescribeIdFormatInput struct { _ struct{} `type:"structure"` - // The type of resource: instance | reservation | snapshot | volume + // The type of resource: bundle | conversion-task | customer-gateway | dhcp-options + // | elastic-ip-allocation | elastic-ip-association | export-task | flow-log + // | image | import-task | instance | internet-gateway | network-acl | network-acl-association + // | network-interface | network-interface-attachment | prefix-list | reservation + // | route-table | route-table-association | security-group | snapshot | subnet + // | subnet-cidr-block-association | volume | vpc | vpc-cidr-block-association + // | vpc-endpoint | vpc-peering-connection | vpn-connection | vpn-gateway Resource *string `type:"string"` } @@ -31442,7 +36240,6 @@ func (s *DescribeIdFormatInput) SetResource(v string) *DescribeIdFormatInput { } // Contains the output of DescribeIdFormat. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeIdFormatResult type DescribeIdFormatOutput struct { _ struct{} `type:"structure"` @@ -31467,7 +36264,6 @@ func (s *DescribeIdFormatOutput) SetStatuses(v []*IdFormat) *DescribeIdFormatOut } // Contains the parameters for DescribeIdentityIdFormat. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeIdentityIdFormatRequest type DescribeIdentityIdFormatInput struct { _ struct{} `type:"structure"` @@ -31477,7 +36273,13 @@ type DescribeIdentityIdFormatInput struct { // PrincipalArn is a required field PrincipalArn *string `locationName:"principalArn" type:"string" required:"true"` - // The type of resource: instance | reservation | snapshot | volume + // The type of resource: bundle | conversion-task | customer-gateway | dhcp-options + // | elastic-ip-allocation | elastic-ip-association | export-task | flow-log + // | image | import-task | instance | internet-gateway | network-acl | network-acl-association + // | network-interface | network-interface-attachment | prefix-list | reservation + // | route-table | route-table-association | security-group | snapshot | subnet + // | subnet-cidr-block-association | volume | vpc | vpc-cidr-block-association + // | vpc-endpoint | vpc-peering-connection | vpn-connection | vpn-gateway Resource *string `locationName:"resource" type:"string"` } @@ -31517,7 +36319,6 @@ func (s *DescribeIdentityIdFormatInput) SetResource(v string) *DescribeIdentityI } // Contains the output of DescribeIdentityIdFormat. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeIdentityIdFormatResult type DescribeIdentityIdFormatOutput struct { _ struct{} `type:"structure"` @@ -31542,7 +36343,6 @@ func (s *DescribeIdentityIdFormatOutput) SetStatuses(v []*IdFormat) *DescribeIde } // Contains the parameters for DescribeImageAttribute. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeImageAttributeRequest type DescribeImageAttributeInput struct { _ struct{} `type:"structure"` @@ -31612,7 +36412,6 @@ func (s *DescribeImageAttributeInput) SetImageId(v string) *DescribeImageAttribu } // Describes an image attribute. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImageAttribute type DescribeImageAttributeOutput struct { _ struct{} `type:"structure"` @@ -31701,7 +36500,6 @@ func (s *DescribeImageAttributeOutput) SetSriovNetSupport(v *AttributeValue) *De } // Contains the parameters for DescribeImages. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeImagesRequest type DescribeImagesInput struct { _ struct{} `type:"structure"` @@ -31722,8 +36520,8 @@ type DescribeImagesInput struct { // * block-device-mapping.delete-on-termination - A Boolean value that indicates // whether the Amazon EBS volume is deleted on instance termination. // - // * block-device-mapping.device-name - The device name for the EBS volume - // (for example, /dev/sdh). + // * block-device-mapping.device-name - The device name specified in the + // block device mapping (for example, /dev/sdh or xvdh). // // * block-device-mapping.snapshot-id - The ID of the snapshot used for the // EBS volume. @@ -31767,7 +36565,7 @@ type DescribeImagesInput struct { // // * ramdisk-id - The RAM disk ID. // - // * root-device-name - The name of the root device volume (for example, + // * root-device-name - The device name of the root device volume (for example, // /dev/sda1). // // * root-device-type - The type of the root device volume (ebs | instance-store). @@ -31778,6 +36576,9 @@ type DescribeImagesInput struct { // // * state-reason-message - The message for the state change. // + // * sriov-net-support - A value of simple indicates that enhanced networking + // with the Intel 82599 VF interface is enabled. + // // * tag:key=value - The key/value combination of a tag assigned to the resource. // Specify the key of the tag in the filter name and the value of the tag // in the filter value. For example, for the tag Purpose=X, specify tag:Purpose @@ -31850,7 +36651,6 @@ func (s *DescribeImagesInput) SetOwners(v []*string) *DescribeImagesInput { } // Contains the output of DescribeImages. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeImagesResult type DescribeImagesOutput struct { _ struct{} `type:"structure"` @@ -31875,7 +36675,6 @@ func (s *DescribeImagesOutput) SetImages(v []*Image) *DescribeImagesOutput { } // Contains the parameters for DescribeImportImageTasks. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeImportImageTasksRequest type DescribeImportImageTasksInput struct { _ struct{} `type:"structure"` @@ -31941,7 +36740,6 @@ func (s *DescribeImportImageTasksInput) SetNextToken(v string) *DescribeImportIm } // Contains the output for DescribeImportImageTasks. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeImportImageTasksResult type DescribeImportImageTasksOutput struct { _ struct{} `type:"structure"` @@ -31977,7 +36775,6 @@ func (s *DescribeImportImageTasksOutput) SetNextToken(v string) *DescribeImportI } // Contains the parameters for DescribeImportSnapshotTasks. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeImportSnapshotTasksRequest type DescribeImportSnapshotTasksInput struct { _ struct{} `type:"structure"` @@ -32042,7 +36839,6 @@ func (s *DescribeImportSnapshotTasksInput) SetNextToken(v string) *DescribeImpor } // Contains the output for DescribeImportSnapshotTasks. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeImportSnapshotTasksResult type DescribeImportSnapshotTasksOutput struct { _ struct{} `type:"structure"` @@ -32078,7 +36874,6 @@ func (s *DescribeImportSnapshotTasksOutput) SetNextToken(v string) *DescribeImpo } // Contains the parameters for DescribeInstanceAttribute. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeInstanceAttributeRequest type DescribeInstanceAttributeInput struct { _ struct{} `type:"structure"` @@ -32146,7 +36941,6 @@ func (s *DescribeInstanceAttributeInput) SetInstanceId(v string) *DescribeInstan } // Describes an instance attribute. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/InstanceAttribute type DescribeInstanceAttributeOutput struct { _ struct{} `type:"structure"` @@ -32185,7 +36979,7 @@ type DescribeInstanceAttributeOutput struct { // The RAM disk ID. RamdiskId *AttributeValue `locationName:"ramdisk" type:"structure"` - // The name of the root device (for example, /dev/sda1 or /dev/xvda). + // The device name of the root device volume (for example, /dev/sda1). RootDeviceName *AttributeValue `locationName:"rootDeviceName" type:"structure"` // Indicates whether source/destination checking is enabled. A value of true @@ -32301,8 +37095,111 @@ func (s *DescribeInstanceAttributeOutput) SetUserData(v *AttributeValue) *Descri return s } +type DescribeInstanceCreditSpecificationsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more filters. + // + // * instance-id - The ID of the instance. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // One or more instance IDs. + // + // Default: Describes all your instances. + // + // Constraints: Maximum 1000 explicitly specified instance IDs. + InstanceIds []*string `locationName:"InstanceId" locationNameList:"InstanceId" type:"list"` + + // The maximum number of results to return in a single call. To retrieve the + // remaining results, make another call with the returned NextToken value. This + // value can be between 5 and 1000. You cannot specify this parameter and the + // instance IDs parameter in the same call. + MaxResults *int64 `type:"integer"` + + // The token to retrieve the next page of results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s DescribeInstanceCreditSpecificationsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeInstanceCreditSpecificationsInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeInstanceCreditSpecificationsInput) SetDryRun(v bool) *DescribeInstanceCreditSpecificationsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeInstanceCreditSpecificationsInput) SetFilters(v []*Filter) *DescribeInstanceCreditSpecificationsInput { + s.Filters = v + return s +} + +// SetInstanceIds sets the InstanceIds field's value. +func (s *DescribeInstanceCreditSpecificationsInput) SetInstanceIds(v []*string) *DescribeInstanceCreditSpecificationsInput { + s.InstanceIds = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeInstanceCreditSpecificationsInput) SetMaxResults(v int64) *DescribeInstanceCreditSpecificationsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeInstanceCreditSpecificationsInput) SetNextToken(v string) *DescribeInstanceCreditSpecificationsInput { + s.NextToken = &v + return s +} + +type DescribeInstanceCreditSpecificationsOutput struct { + _ struct{} `type:"structure"` + + // Information about the credit option for CPU usage of an instance. + InstanceCreditSpecifications []*InstanceCreditSpecification `locationName:"instanceCreditSpecificationSet" locationNameList:"item" type:"list"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeInstanceCreditSpecificationsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeInstanceCreditSpecificationsOutput) GoString() string { + return s.String() +} + +// SetInstanceCreditSpecifications sets the InstanceCreditSpecifications field's value. +func (s *DescribeInstanceCreditSpecificationsOutput) SetInstanceCreditSpecifications(v []*InstanceCreditSpecification) *DescribeInstanceCreditSpecificationsOutput { + s.InstanceCreditSpecifications = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeInstanceCreditSpecificationsOutput) SetNextToken(v string) *DescribeInstanceCreditSpecificationsOutput { + s.NextToken = &v + return s +} + // Contains the parameters for DescribeInstanceStatus. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeInstanceStatusRequest type DescribeInstanceStatusInput struct { _ struct{} `type:"structure"` @@ -32419,7 +37316,6 @@ func (s *DescribeInstanceStatusInput) SetNextToken(v string) *DescribeInstanceSt } // Contains the output of DescribeInstanceStatus. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeInstanceStatusResult type DescribeInstanceStatusOutput struct { _ struct{} `type:"structure"` @@ -32454,7 +37350,6 @@ func (s *DescribeInstanceStatusOutput) SetNextToken(v string) *DescribeInstanceS } // Contains the parameters for DescribeInstances. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeInstancesRequest type DescribeInstancesInput struct { _ struct{} `type:"structure"` @@ -32479,8 +37374,8 @@ type DescribeInstancesInput struct { // * block-device-mapping.delete-on-termination - A Boolean that indicates // whether the EBS volume is deleted on instance termination. // - // * block-device-mapping.device-name - The device name for the EBS volume - // (for example, /dev/sdh or xvdh). + // * block-device-mapping.device-name - The device name specified in the + // block device mapping (for example, /dev/sdh or xvdh). // // * block-device-mapping.status - The status for the EBS volume (attaching // | attached | detaching | detached). @@ -32663,11 +37558,10 @@ type DescribeInstancesInput struct { // one reservation ID. If you launch ten instances using the same launch // request, you also get one reservation ID. // - // * root-device-name - The name of the root device for the instance (for - // example, /dev/sda1 or /dev/xvda). + // * root-device-name - The device name of the root device volume (for example, + // /dev/sda1). // - // * root-device-type - The type of root device that the instance uses (ebs - // | instance-store). + // * root-device-type - The type of the root device volume (ebs | instance-store). // // * source-dest-check - Indicates whether the instance performs source/destination // checking. A value of true means that checking is enabled, and false means @@ -32713,7 +37607,7 @@ type DescribeInstancesInput struct { // The maximum number of results to return in a single call. To retrieve the // remaining results, make another call with the returned NextToken value. This // value can be between 5 and 1000. You cannot specify this parameter and the - // instance IDs parameter or tag filters in the same call. + // instance IDs parameter in the same call. MaxResults *int64 `locationName:"maxResults" type:"integer"` // The token to request the next page of results. @@ -32761,7 +37655,6 @@ func (s *DescribeInstancesInput) SetNextToken(v string) *DescribeInstancesInput } // Contains the output of DescribeInstances. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeInstancesResult type DescribeInstancesOutput struct { _ struct{} `type:"structure"` @@ -32796,7 +37689,6 @@ func (s *DescribeInstancesOutput) SetReservations(v []*Reservation) *DescribeIns } // Contains the parameters for DescribeInternetGateways. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeInternetGatewaysRequest type DescribeInternetGatewaysInput struct { _ struct{} `type:"structure"` @@ -32867,7 +37759,6 @@ func (s *DescribeInternetGatewaysInput) SetInternetGatewayIds(v []*string) *Desc } // Contains the output of DescribeInternetGateways. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeInternetGatewaysResult type DescribeInternetGatewaysOutput struct { _ struct{} `type:"structure"` @@ -32892,7 +37783,6 @@ func (s *DescribeInternetGatewaysOutput) SetInternetGateways(v []*InternetGatewa } // Contains the parameters for DescribeKeyPairs. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeKeyPairsRequest type DescribeKeyPairsInput struct { _ struct{} `type:"structure"` @@ -32944,7 +37834,6 @@ func (s *DescribeKeyPairsInput) SetKeyNames(v []*string) *DescribeKeyPairsInput } // Contains the output of DescribeKeyPairs. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeKeyPairsResult type DescribeKeyPairsOutput struct { _ struct{} `type:"structure"` @@ -32968,8 +37857,295 @@ func (s *DescribeKeyPairsOutput) SetKeyPairs(v []*KeyPairInfo) *DescribeKeyPairs return s } +type DescribeLaunchTemplateVersionsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more filters. + // + // * create-time - The time the launch template version was created. + // + // * ebs-optimized - A boolean that indicates whether the instance is optimized + // for Amazon EBS I/O. + // + // * iam-instance-profile - The ARN of the IAM instance profile. + // + // * image-id - The ID of the AMI. + // + // * instance-type - The instance type. + // + // * is-default-version - A boolean that indicates whether the launch template + // version is the default version. + // + // * kernel-id - The kernel ID. + // + // * ram-disk-id - The RAM disk ID. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The ID of the launch template. You must specify either the launch template + // ID or launch template name in the request. + LaunchTemplateId *string `type:"string"` + + // The name of the launch template. You must specify either the launch template + // ID or launch template name in the request. + LaunchTemplateName *string `min:"3" type:"string"` + + // The maximum number of results to return in a single call. To retrieve the + // remaining results, make another call with the returned NextToken value. This + // value can be between 5 and 1000. + MaxResults *int64 `type:"integer"` + + // The version number up to which to describe launch template versions. + MaxVersion *string `type:"string"` + + // The version number after which to describe launch template versions. + MinVersion *string `type:"string"` + + // The token to request the next page of results. + NextToken *string `type:"string"` + + // One or more versions of the launch template. + Versions []*string `locationName:"LaunchTemplateVersion" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeLaunchTemplateVersionsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeLaunchTemplateVersionsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeLaunchTemplateVersionsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeLaunchTemplateVersionsInput"} + if s.LaunchTemplateName != nil && len(*s.LaunchTemplateName) < 3 { + invalidParams.Add(request.NewErrParamMinLen("LaunchTemplateName", 3)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeLaunchTemplateVersionsInput) SetDryRun(v bool) *DescribeLaunchTemplateVersionsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeLaunchTemplateVersionsInput) SetFilters(v []*Filter) *DescribeLaunchTemplateVersionsInput { + s.Filters = v + return s +} + +// SetLaunchTemplateId sets the LaunchTemplateId field's value. +func (s *DescribeLaunchTemplateVersionsInput) SetLaunchTemplateId(v string) *DescribeLaunchTemplateVersionsInput { + s.LaunchTemplateId = &v + return s +} + +// SetLaunchTemplateName sets the LaunchTemplateName field's value. +func (s *DescribeLaunchTemplateVersionsInput) SetLaunchTemplateName(v string) *DescribeLaunchTemplateVersionsInput { + s.LaunchTemplateName = &v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeLaunchTemplateVersionsInput) SetMaxResults(v int64) *DescribeLaunchTemplateVersionsInput { + s.MaxResults = &v + return s +} + +// SetMaxVersion sets the MaxVersion field's value. +func (s *DescribeLaunchTemplateVersionsInput) SetMaxVersion(v string) *DescribeLaunchTemplateVersionsInput { + s.MaxVersion = &v + return s +} + +// SetMinVersion sets the MinVersion field's value. +func (s *DescribeLaunchTemplateVersionsInput) SetMinVersion(v string) *DescribeLaunchTemplateVersionsInput { + s.MinVersion = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeLaunchTemplateVersionsInput) SetNextToken(v string) *DescribeLaunchTemplateVersionsInput { + s.NextToken = &v + return s +} + +// SetVersions sets the Versions field's value. +func (s *DescribeLaunchTemplateVersionsInput) SetVersions(v []*string) *DescribeLaunchTemplateVersionsInput { + s.Versions = v + return s +} + +type DescribeLaunchTemplateVersionsOutput struct { + _ struct{} `type:"structure"` + + // Information about the launch template versions. + LaunchTemplateVersions []*LaunchTemplateVersion `locationName:"launchTemplateVersionSet" locationNameList:"item" type:"list"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeLaunchTemplateVersionsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeLaunchTemplateVersionsOutput) GoString() string { + return s.String() +} + +// SetLaunchTemplateVersions sets the LaunchTemplateVersions field's value. +func (s *DescribeLaunchTemplateVersionsOutput) SetLaunchTemplateVersions(v []*LaunchTemplateVersion) *DescribeLaunchTemplateVersionsOutput { + s.LaunchTemplateVersions = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeLaunchTemplateVersionsOutput) SetNextToken(v string) *DescribeLaunchTemplateVersionsOutput { + s.NextToken = &v + return s +} + +type DescribeLaunchTemplatesInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more filters. + // + // * create-time - The time the launch template was created. + // + // * launch-template-name - The name of the launch template. + // + // * tag:key=value - The key/value combination of a tag assigned to the resource. + // Specify the key of the tag in the filter name and the value of the tag + // in the filter value. For example, for the tag Purpose=X, specify tag:Purpose + // for the filter name and X for the filter value. + // + // * tag-key - The key of a tag assigned to the resource. This filter is + // independent of the tag-value filter. For example, if you use both the + // filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources + // assigned both the tag key Purpose (regardless of what the tag's value + // is), and the tag value X (regardless of the tag's key). If you want to + // list only resources where Purpose is X, see the tag:key=value filter. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // One or more launch template IDs. + LaunchTemplateIds []*string `locationName:"LaunchTemplateId" locationNameList:"item" type:"list"` + + // One or more launch template names. + LaunchTemplateNames []*string `locationName:"LaunchTemplateName" locationNameList:"item" type:"list"` + + // The maximum number of results to return in a single call. To retrieve the + // remaining results, make another call with the returned NextToken value. This + // value can be between 5 and 1000. + MaxResults *int64 `type:"integer"` + + // The token to request the next page of results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s DescribeLaunchTemplatesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeLaunchTemplatesInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeLaunchTemplatesInput) SetDryRun(v bool) *DescribeLaunchTemplatesInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeLaunchTemplatesInput) SetFilters(v []*Filter) *DescribeLaunchTemplatesInput { + s.Filters = v + return s +} + +// SetLaunchTemplateIds sets the LaunchTemplateIds field's value. +func (s *DescribeLaunchTemplatesInput) SetLaunchTemplateIds(v []*string) *DescribeLaunchTemplatesInput { + s.LaunchTemplateIds = v + return s +} + +// SetLaunchTemplateNames sets the LaunchTemplateNames field's value. +func (s *DescribeLaunchTemplatesInput) SetLaunchTemplateNames(v []*string) *DescribeLaunchTemplatesInput { + s.LaunchTemplateNames = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeLaunchTemplatesInput) SetMaxResults(v int64) *DescribeLaunchTemplatesInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeLaunchTemplatesInput) SetNextToken(v string) *DescribeLaunchTemplatesInput { + s.NextToken = &v + return s +} + +type DescribeLaunchTemplatesOutput struct { + _ struct{} `type:"structure"` + + // Information about the launch templates. + LaunchTemplates []*LaunchTemplate `locationName:"launchTemplates" locationNameList:"item" type:"list"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeLaunchTemplatesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeLaunchTemplatesOutput) GoString() string { + return s.String() +} + +// SetLaunchTemplates sets the LaunchTemplates field's value. +func (s *DescribeLaunchTemplatesOutput) SetLaunchTemplates(v []*LaunchTemplate) *DescribeLaunchTemplatesOutput { + s.LaunchTemplates = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeLaunchTemplatesOutput) SetNextToken(v string) *DescribeLaunchTemplatesOutput { + s.NextToken = &v + return s +} + // Contains the parameters for DescribeMovingAddresses. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeMovingAddressesRequest type DescribeMovingAddressesInput struct { _ struct{} `type:"structure"` @@ -33041,7 +38217,6 @@ func (s *DescribeMovingAddressesInput) SetPublicIps(v []*string) *DescribeMoving } // Contains the output of DescribeMovingAddresses. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeMovingAddressesResult type DescribeMovingAddressesOutput struct { _ struct{} `type:"structure"` @@ -33076,7 +38251,6 @@ func (s *DescribeMovingAddressesOutput) SetNextToken(v string) *DescribeMovingAd } // Contains the parameters for DescribeNatGateways. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNatGatewaysRequest type DescribeNatGatewaysInput struct { _ struct{} `type:"structure"` @@ -33158,7 +38332,6 @@ func (s *DescribeNatGatewaysInput) SetNextToken(v string) *DescribeNatGatewaysIn } // Contains the output of DescribeNatGateways. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNatGatewaysResult type DescribeNatGatewaysOutput struct { _ struct{} `type:"structure"` @@ -33193,7 +38366,6 @@ func (s *DescribeNatGatewaysOutput) SetNextToken(v string) *DescribeNatGatewaysO } // Contains the parameters for DescribeNetworkAcls. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNetworkAclsRequest type DescribeNetworkAclsInput struct { _ struct{} `type:"structure"` @@ -33295,7 +38467,6 @@ func (s *DescribeNetworkAclsInput) SetNetworkAclIds(v []*string) *DescribeNetwor } // Contains the output of DescribeNetworkAcls. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNetworkAclsResult type DescribeNetworkAclsOutput struct { _ struct{} `type:"structure"` @@ -33320,7 +38491,6 @@ func (s *DescribeNetworkAclsOutput) SetNetworkAcls(v []*NetworkAcl) *DescribeNet } // Contains the parameters for DescribeNetworkInterfaceAttribute. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNetworkInterfaceAttributeRequest type DescribeNetworkInterfaceAttributeInput struct { _ struct{} `type:"structure"` @@ -33381,7 +38551,6 @@ func (s *DescribeNetworkInterfaceAttributeInput) SetNetworkInterfaceId(v string) } // Contains the output of DescribeNetworkInterfaceAttribute. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNetworkInterfaceAttributeResult type DescribeNetworkInterfaceAttributeOutput struct { _ struct{} `type:"structure"` @@ -33442,7 +38611,6 @@ func (s *DescribeNetworkInterfaceAttributeOutput) SetSourceDestCheck(v *Attribut } // Contains the parameters for DescribeNetworkInterfacePermissions. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNetworkInterfacePermissionsRequest type DescribeNetworkInterfacePermissionsInput struct { _ struct{} `type:"structure"` @@ -33509,7 +38677,6 @@ func (s *DescribeNetworkInterfacePermissionsInput) SetNextToken(v string) *Descr } // Contains the output for DescribeNetworkInterfacePermissions. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNetworkInterfacePermissionsResult type DescribeNetworkInterfacePermissionsOutput struct { _ struct{} `type:"structure"` @@ -33543,7 +38710,6 @@ func (s *DescribeNetworkInterfacePermissionsOutput) SetNextToken(v string) *Desc } // Contains the parameters for DescribeNetworkInterfaces. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNetworkInterfacesRequest type DescribeNetworkInterfacesInput struct { _ struct{} `type:"structure"` @@ -33701,7 +38867,6 @@ func (s *DescribeNetworkInterfacesInput) SetNetworkInterfaceIds(v []*string) *De } // Contains the output of DescribeNetworkInterfaces. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNetworkInterfacesResult type DescribeNetworkInterfacesOutput struct { _ struct{} `type:"structure"` @@ -33726,7 +38891,6 @@ func (s *DescribeNetworkInterfacesOutput) SetNetworkInterfaces(v []*NetworkInter } // Contains the parameters for DescribePlacementGroups. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribePlacementGroupsRequest type DescribePlacementGroupsInput struct { _ struct{} `type:"structure"` @@ -33743,7 +38907,7 @@ type DescribePlacementGroupsInput struct { // * state - The state of the placement group (pending | available | deleting // | deleted). // - // * strategy - The strategy of the placement group (cluster). + // * strategy - The strategy of the placement group (cluster | spread). Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` // One or more placement group names. @@ -33781,7 +38945,6 @@ func (s *DescribePlacementGroupsInput) SetGroupNames(v []*string) *DescribePlace } // Contains the output of DescribePlacementGroups. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribePlacementGroupsResult type DescribePlacementGroupsOutput struct { _ struct{} `type:"structure"` @@ -33806,7 +38969,6 @@ func (s *DescribePlacementGroupsOutput) SetPlacementGroups(v []*PlacementGroup) } // Contains the parameters for DescribePrefixLists. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribePrefixListsRequest type DescribePrefixListsInput struct { _ struct{} `type:"structure"` @@ -33880,7 +39042,6 @@ func (s *DescribePrefixListsInput) SetPrefixListIds(v []*string) *DescribePrefix } // Contains the output of DescribePrefixLists. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribePrefixListsResult type DescribePrefixListsOutput struct { _ struct{} `type:"structure"` @@ -33914,8 +39075,100 @@ func (s *DescribePrefixListsOutput) SetPrefixLists(v []*PrefixList) *DescribePre return s } +type DescribePrincipalIdFormatInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The maximum number of results to return in a single call. To retrieve the + // remaining results, make another call with the returned NextToken value. + MaxResults *int64 `type:"integer"` + + // The token to request the next page of results. + NextToken *string `type:"string"` + + // The type of resource: bundle | conversion-task | customer-gateway | dhcp-options + // | elastic-ip-allocation | elastic-ip-association | export-task | flow-log + // | image | import-task | instance | internet-gateway | network-acl | network-acl-association + // | network-interface | network-interface-attachment | prefix-list | reservation + // | route-table | route-table-association | security-group | snapshot | subnet + // | subnet-cidr-block-association | volume | vpc | vpc-cidr-block-association + // | vpc-endpoint | vpc-peering-connection | vpn-connection | vpn-gateway + Resources []*string `locationName:"Resource" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribePrincipalIdFormatInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribePrincipalIdFormatInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribePrincipalIdFormatInput) SetDryRun(v bool) *DescribePrincipalIdFormatInput { + s.DryRun = &v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribePrincipalIdFormatInput) SetMaxResults(v int64) *DescribePrincipalIdFormatInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribePrincipalIdFormatInput) SetNextToken(v string) *DescribePrincipalIdFormatInput { + s.NextToken = &v + return s +} + +// SetResources sets the Resources field's value. +func (s *DescribePrincipalIdFormatInput) SetResources(v []*string) *DescribePrincipalIdFormatInput { + s.Resources = v + return s +} + +type DescribePrincipalIdFormatOutput struct { + _ struct{} `type:"structure"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // Information about the ID format settings for the ARN. + Principals []*PrincipalIdFormat `locationName:"principalSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribePrincipalIdFormatOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribePrincipalIdFormatOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribePrincipalIdFormatOutput) SetNextToken(v string) *DescribePrincipalIdFormatOutput { + s.NextToken = &v + return s +} + +// SetPrincipals sets the Principals field's value. +func (s *DescribePrincipalIdFormatOutput) SetPrincipals(v []*PrincipalIdFormat) *DescribePrincipalIdFormatOutput { + s.Principals = v + return s +} + // Contains the parameters for DescribeRegions. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeRegionsRequest type DescribeRegionsInput struct { _ struct{} `type:"structure"` @@ -33965,7 +39218,6 @@ func (s *DescribeRegionsInput) SetRegionNames(v []*string) *DescribeRegionsInput } // Contains the output of DescribeRegions. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeRegionsResult type DescribeRegionsOutput struct { _ struct{} `type:"structure"` @@ -33990,7 +39242,6 @@ func (s *DescribeRegionsOutput) SetRegions(v []*Region) *DescribeRegionsOutput { } // Contains the parameters for DescribeReservedInstances. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeReservedInstancesRequest type DescribeReservedInstancesInput struct { _ struct{} `type:"structure"` @@ -34110,7 +39361,6 @@ func (s *DescribeReservedInstancesInput) SetReservedInstancesIds(v []*string) *D } // Contains the parameters for DescribeReservedInstancesListings. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeReservedInstancesListingsRequest type DescribeReservedInstancesListingsInput struct { _ struct{} `type:"structure"` @@ -34162,7 +39412,6 @@ func (s *DescribeReservedInstancesListingsInput) SetReservedInstancesListingId(v } // Contains the output of DescribeReservedInstancesListings. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeReservedInstancesListingsResult type DescribeReservedInstancesListingsOutput struct { _ struct{} `type:"structure"` @@ -34187,7 +39436,6 @@ func (s *DescribeReservedInstancesListingsOutput) SetReservedInstancesListings(v } // Contains the parameters for DescribeReservedInstancesModifications. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeReservedInstancesModificationsRequest type DescribeReservedInstancesModificationsInput struct { _ struct{} `type:"structure"` @@ -34263,7 +39511,6 @@ func (s *DescribeReservedInstancesModificationsInput) SetReservedInstancesModifi } // Contains the output of DescribeReservedInstancesModifications. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeReservedInstancesModificationsResult type DescribeReservedInstancesModificationsOutput struct { _ struct{} `type:"structure"` @@ -34298,7 +39545,6 @@ func (s *DescribeReservedInstancesModificationsOutput) SetReservedInstancesModif } // Contains the parameters for DescribeReservedInstancesOfferings. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeReservedInstancesOfferingsRequest type DescribeReservedInstancesOfferingsInput struct { _ struct{} `type:"structure"` @@ -34508,7 +39754,6 @@ func (s *DescribeReservedInstancesOfferingsInput) SetReservedInstancesOfferingId } // Contains the output of DescribeReservedInstancesOfferings. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeReservedInstancesOfferingsResult type DescribeReservedInstancesOfferingsOutput struct { _ struct{} `type:"structure"` @@ -34543,7 +39788,6 @@ func (s *DescribeReservedInstancesOfferingsOutput) SetReservedInstancesOfferings } // Contains the output for DescribeReservedInstances. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeReservedInstancesResult type DescribeReservedInstancesOutput struct { _ struct{} `type:"structure"` @@ -34568,7 +39812,6 @@ func (s *DescribeReservedInstancesOutput) SetReservedInstances(v []*ReservedInst } // Contains the parameters for DescribeRouteTables. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeRouteTablesRequest type DescribeRouteTablesInput struct { _ struct{} `type:"structure"` @@ -34681,7 +39924,6 @@ func (s *DescribeRouteTablesInput) SetRouteTableIds(v []*string) *DescribeRouteT } // Contains the output of DescribeRouteTables. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeRouteTablesResult type DescribeRouteTablesOutput struct { _ struct{} `type:"structure"` @@ -34706,7 +39948,6 @@ func (s *DescribeRouteTablesOutput) SetRouteTables(v []*RouteTable) *DescribeRou } // Contains the parameters for DescribeScheduledInstanceAvailability. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeScheduledInstanceAvailabilityRequest type DescribeScheduledInstanceAvailabilityInput struct { _ struct{} `type:"structure"` @@ -34836,7 +40077,6 @@ func (s *DescribeScheduledInstanceAvailabilityInput) SetRecurrence(v *ScheduledI } // Contains the output of DescribeScheduledInstanceAvailability. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeScheduledInstanceAvailabilityResult type DescribeScheduledInstanceAvailabilityOutput struct { _ struct{} `type:"structure"` @@ -34871,7 +40111,6 @@ func (s *DescribeScheduledInstanceAvailabilityOutput) SetScheduledInstanceAvaila } // Contains the parameters for DescribeScheduledInstances. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeScheduledInstancesRequest type DescribeScheduledInstancesInput struct { _ struct{} `type:"structure"` @@ -34954,7 +40193,6 @@ func (s *DescribeScheduledInstancesInput) SetSlotStartTimeRange(v *SlotStartTime } // Contains the output of DescribeScheduledInstances. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeScheduledInstancesResult type DescribeScheduledInstancesOutput struct { _ struct{} `type:"structure"` @@ -34988,7 +40226,6 @@ func (s *DescribeScheduledInstancesOutput) SetScheduledInstanceSet(v []*Schedule return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSecurityGroupReferencesRequest type DescribeSecurityGroupReferencesInput struct { _ struct{} `type:"structure"` @@ -35039,7 +40276,6 @@ func (s *DescribeSecurityGroupReferencesInput) SetGroupId(v []*string) *Describe return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSecurityGroupReferencesResult type DescribeSecurityGroupReferencesOutput struct { _ struct{} `type:"structure"` @@ -35064,7 +40300,6 @@ func (s *DescribeSecurityGroupReferencesOutput) SetSecurityGroupReferenceSet(v [ } // Contains the parameters for DescribeSecurityGroups. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSecurityGroupsRequest type DescribeSecurityGroupsInput struct { _ struct{} `type:"structure"` @@ -35080,36 +40315,63 @@ type DescribeSecurityGroupsInput struct { // // * description - The description of the security group. // + // * egress.ip-permission.cidr - An IPv4 CIDR block for an outbound security + // group rule. + // + // * egress.ip-permission.from-port - For an outbound rule, the start of + // port range for the TCP and UDP protocols, or an ICMP type number. + // + // * egress.ip-permission.group-id - The ID of a security group that has + // been referenced in an outbound security group rule. + // + // * egress.ip-permission.group-name - The name of a security group that + // has been referenced in an outbound security group rule. + // + // * egress.ip-permission.ipv6-cidr - An IPv6 CIDR block for an outbound + // security group rule. + // // * egress.ip-permission.prefix-list-id - The ID (prefix) of the AWS service - // to which the security group allows access. + // to which a security group rule allows outbound access. + // + // * egress.ip-permission.protocol - The IP protocol for an outbound security + // group rule (tcp | udp | icmp or a protocol number). + // + // * egress.ip-permission.to-port - For an outbound rule, the end of port + // range for the TCP and UDP protocols, or an ICMP code. + // + // * egress.ip-permission.user-id - The ID of an AWS account that has been + // referenced in an outbound security group rule. // // * group-id - The ID of the security group. // // * group-name - The name of the security group. // - // * ip-permission.cidr - An IPv4 CIDR range that has been granted permission - // in a security group rule. + // * ip-permission.cidr - An IPv4 CIDR block for an inbound security group + // rule. // - // * ip-permission.from-port - The start of port range for the TCP and UDP - // protocols, or an ICMP type number. + // * ip-permission.from-port - For an inbound rule, the start of port range + // for the TCP and UDP protocols, or an ICMP type number. // - // * ip-permission.group-id - The ID of a security group that has been granted - // permission. + // * ip-permission.group-id - The ID of a security group that has been referenced + // in an inbound security group rule. // // * ip-permission.group-name - The name of a security group that has been - // granted permission. + // referenced in an inbound security group rule. // - // * ip-permission.ipv6-cidr - An IPv6 CIDR range that has been granted permission - // in a security group rule. + // * ip-permission.ipv6-cidr - An IPv6 CIDR block for an inbound security + // group rule. // - // * ip-permission.protocol - The IP protocol for the permission (tcp | udp - // | icmp or a protocol number). + // * ip-permission.prefix-list-id - The ID (prefix) of the AWS service from + // which a security group rule allows inbound access. // - // * ip-permission.to-port - The end of port range for the TCP and UDP protocols, - // or an ICMP code. + // * ip-permission.protocol - The IP protocol for an inbound security group + // rule (tcp | udp | icmp or a protocol number). // - // * ip-permission.user-id - The ID of an AWS account that has been granted - // permission. + // * ip-permission.to-port - For an inbound rule, the end of port range for + // the TCP and UDP protocols, or an ICMP code. + // + // * ip-permission.user-id - The ID of an AWS account that has been referenced + // in an inbound security group rule. // // * owner-id - The AWS account ID of the owner of the security group. // @@ -35133,6 +40395,15 @@ type DescribeSecurityGroupsInput struct { // // Default: Describes all your security groups. GroupNames []*string `locationName:"GroupName" locationNameList:"GroupName" type:"list"` + + // The maximum number of results to return in a single call. To retrieve the + // remaining results, make another request with the returned NextToken value. + // This value can be between 5 and 1000. If this parameter is not specified, + // then all results are returned. + MaxResults *int64 `type:"integer"` + + // The token to request the next page of results. + NextToken *string `type:"string"` } // String returns the string representation @@ -35169,11 +40440,26 @@ func (s *DescribeSecurityGroupsInput) SetGroupNames(v []*string) *DescribeSecuri return s } +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeSecurityGroupsInput) SetMaxResults(v int64) *DescribeSecurityGroupsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeSecurityGroupsInput) SetNextToken(v string) *DescribeSecurityGroupsInput { + s.NextToken = &v + return s +} + // Contains the output of DescribeSecurityGroups. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSecurityGroupsResult type DescribeSecurityGroupsOutput struct { _ struct{} `type:"structure"` + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + // Information about one or more security groups. SecurityGroups []*SecurityGroup `locationName:"securityGroupInfo" locationNameList:"item" type:"list"` } @@ -35188,6 +40474,12 @@ func (s DescribeSecurityGroupsOutput) GoString() string { return s.String() } +// SetNextToken sets the NextToken field's value. +func (s *DescribeSecurityGroupsOutput) SetNextToken(v string) *DescribeSecurityGroupsOutput { + s.NextToken = &v + return s +} + // SetSecurityGroups sets the SecurityGroups field's value. func (s *DescribeSecurityGroupsOutput) SetSecurityGroups(v []*SecurityGroup) *DescribeSecurityGroupsOutput { s.SecurityGroups = v @@ -35195,7 +40487,6 @@ func (s *DescribeSecurityGroupsOutput) SetSecurityGroups(v []*SecurityGroup) *De } // Contains the parameters for DescribeSnapshotAttribute. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSnapshotAttributeRequest type DescribeSnapshotAttributeInput struct { _ struct{} `type:"structure"` @@ -35261,7 +40552,6 @@ func (s *DescribeSnapshotAttributeInput) SetSnapshotId(v string) *DescribeSnapsh } // Contains the output of DescribeSnapshotAttribute. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSnapshotAttributeResult type DescribeSnapshotAttributeOutput struct { _ struct{} `type:"structure"` @@ -35304,7 +40594,6 @@ func (s *DescribeSnapshotAttributeOutput) SetSnapshotId(v string) *DescribeSnaps } // Contains the parameters for DescribeSnapshots. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSnapshotsRequest type DescribeSnapshotsInput struct { _ struct{} `type:"structure"` @@ -35438,7 +40727,6 @@ func (s *DescribeSnapshotsInput) SetSnapshotIds(v []*string) *DescribeSnapshotsI } // Contains the output of DescribeSnapshots. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSnapshotsResult type DescribeSnapshotsOutput struct { _ struct{} `type:"structure"` @@ -35475,7 +40763,6 @@ func (s *DescribeSnapshotsOutput) SetSnapshots(v []*Snapshot) *DescribeSnapshots } // Contains the parameters for DescribeSpotDatafeedSubscription. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotDatafeedSubscriptionRequest type DescribeSpotDatafeedSubscriptionInput struct { _ struct{} `type:"structure"` @@ -35503,11 +40790,10 @@ func (s *DescribeSpotDatafeedSubscriptionInput) SetDryRun(v bool) *DescribeSpotD } // Contains the output of DescribeSpotDatafeedSubscription. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotDatafeedSubscriptionResult type DescribeSpotDatafeedSubscriptionOutput struct { _ struct{} `type:"structure"` - // The Spot instance data feed subscription. + // The Spot Instance data feed subscription. SpotDatafeedSubscription *SpotDatafeedSubscription `locationName:"spotDatafeedSubscription" type:"structure"` } @@ -35528,7 +40814,6 @@ func (s *DescribeSpotDatafeedSubscriptionOutput) SetSpotDatafeedSubscription(v * } // Contains the parameters for DescribeSpotFleetInstances. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotFleetInstancesRequest type DescribeSpotFleetInstancesInput struct { _ struct{} `type:"structure"` @@ -35546,7 +40831,7 @@ type DescribeSpotFleetInstancesInput struct { // The token for the next set of results. NextToken *string `locationName:"nextToken" type:"string"` - // The ID of the Spot fleet request. + // The ID of the Spot Fleet request. // // SpotFleetRequestId is a required field SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string" required:"true"` @@ -35600,12 +40885,11 @@ func (s *DescribeSpotFleetInstancesInput) SetSpotFleetRequestId(v string) *Descr } // Contains the output of DescribeSpotFleetInstances. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotFleetInstancesResponse type DescribeSpotFleetInstancesOutput struct { _ struct{} `type:"structure"` - // The running instances. Note that this list is refreshed periodically and - // might be out of date. + // The running instances. This list is refreshed periodically and might be out + // of date. // // ActiveInstances is a required field ActiveInstances []*ActiveInstance `locationName:"activeInstanceSet" locationNameList:"item" type:"list" required:"true"` @@ -35614,7 +40898,7 @@ type DescribeSpotFleetInstancesOutput struct { // when there are no more results to return. NextToken *string `locationName:"nextToken" type:"string"` - // The ID of the Spot fleet request. + // The ID of the Spot Fleet request. // // SpotFleetRequestId is a required field SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string" required:"true"` @@ -35649,7 +40933,6 @@ func (s *DescribeSpotFleetInstancesOutput) SetSpotFleetRequestId(v string) *Desc } // Contains the parameters for DescribeSpotFleetRequestHistory. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotFleetRequestHistoryRequest type DescribeSpotFleetRequestHistoryInput struct { _ struct{} `type:"structure"` @@ -35670,7 +40953,7 @@ type DescribeSpotFleetRequestHistoryInput struct { // The token for the next set of results. NextToken *string `locationName:"nextToken" type:"string"` - // The ID of the Spot fleet request. + // The ID of the Spot Fleet request. // // SpotFleetRequestId is a required field SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string" required:"true"` @@ -35744,11 +41027,10 @@ func (s *DescribeSpotFleetRequestHistoryInput) SetStartTime(v time.Time) *Descri } // Contains the output of DescribeSpotFleetRequestHistory. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotFleetRequestHistoryResponse type DescribeSpotFleetRequestHistoryOutput struct { _ struct{} `type:"structure"` - // Information about the events in the history of the Spot fleet request. + // Information about the events in the history of the Spot Fleet request. // // HistoryRecords is a required field HistoryRecords []*HistoryRecord `locationName:"historyRecordSet" locationNameList:"item" type:"list" required:"true"` @@ -35765,7 +41047,7 @@ type DescribeSpotFleetRequestHistoryOutput struct { // when there are no more results to return. NextToken *string `locationName:"nextToken" type:"string"` - // The ID of the Spot fleet request. + // The ID of the Spot Fleet request. // // SpotFleetRequestId is a required field SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string" required:"true"` @@ -35817,7 +41099,6 @@ func (s *DescribeSpotFleetRequestHistoryOutput) SetStartTime(v time.Time) *Descr } // Contains the parameters for DescribeSpotFleetRequests. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotFleetRequestsRequest type DescribeSpotFleetRequestsInput struct { _ struct{} `type:"structure"` @@ -35835,7 +41116,7 @@ type DescribeSpotFleetRequestsInput struct { // The token for the next set of results. NextToken *string `locationName:"nextToken" type:"string"` - // The IDs of the Spot fleet requests. + // The IDs of the Spot Fleet requests. SpotFleetRequestIds []*string `locationName:"spotFleetRequestId" locationNameList:"item" type:"list"` } @@ -35874,7 +41155,6 @@ func (s *DescribeSpotFleetRequestsInput) SetSpotFleetRequestIds(v []*string) *De } // Contains the output of DescribeSpotFleetRequests. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotFleetRequestsResponse type DescribeSpotFleetRequestsOutput struct { _ struct{} `type:"structure"` @@ -35882,7 +41162,7 @@ type DescribeSpotFleetRequestsOutput struct { // when there are no more results to return. NextToken *string `locationName:"nextToken" type:"string"` - // Information about the configuration of your Spot fleet. + // Information about the configuration of your Spot Fleet. // // SpotFleetRequestConfigs is a required field SpotFleetRequestConfigs []*SpotFleetRequestConfig `locationName:"spotFleetRequestConfigSet" locationNameList:"item" type:"list" required:"true"` @@ -35911,7 +41191,6 @@ func (s *DescribeSpotFleetRequestsOutput) SetSpotFleetRequestConfigs(v []*SpotFl } // Contains the parameters for DescribeSpotInstanceRequests. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotInstanceRequestsRequest type DescribeSpotInstanceRequestsInput struct { _ struct{} `type:"structure"` @@ -35925,7 +41204,7 @@ type DescribeSpotInstanceRequestsInput struct { // // * availability-zone-group - The Availability Zone group. // - // * create-time - The time stamp when the Spot instance request was created. + // * create-time - The time stamp when the Spot Instance request was created. // // * fault-code - The fault code related to the request. // @@ -35933,25 +41212,27 @@ type DescribeSpotInstanceRequestsInput struct { // // * instance-id - The ID of the instance that fulfilled the request. // - // * launch-group - The Spot instance launch group. + // * launch-group - The Spot Instance launch group. // // * launch.block-device-mapping.delete-on-termination - Indicates whether - // the Amazon EBS volume is deleted on instance termination. + // the EBS volume is deleted on instance termination. // - // * launch.block-device-mapping.device-name - The device name for the Amazon - // EBS volume (for example, /dev/sdh). + // * launch.block-device-mapping.device-name - The device name for the volume + // in the block device mapping (for example, /dev/sdh or xvdh). // - // * launch.block-device-mapping.snapshot-id - The ID of the snapshot used - // for the Amazon EBS volume. + // * launch.block-device-mapping.snapshot-id - The ID of the snapshot for + // the EBS volume. // - // * launch.block-device-mapping.volume-size - The size of the Amazon EBS - // volume, in GiB. + // * launch.block-device-mapping.volume-size - The size of the EBS volume, + // in GiB. // - // * launch.block-device-mapping.volume-type - The type of the Amazon EBS - // volume: gp2 for General Purpose SSD, io1 for Provisioned IOPS SSD, st1 - // for Throughput Optimized HDD, sc1for Cold HDD, or standard for Magnetic. + // * launch.block-device-mapping.volume-type - The type of EBS volume: gp2 + // for General Purpose SSD, io1 for Provisioned IOPS SSD, st1 for Throughput + // Optimized HDD, sc1for Cold HDD, or standard for Magnetic. // - // * launch.group-id - The security group for the instance. + // * launch.group-id - The ID of the security group for the instance. + // + // * launch.group-name - The name of the security group for the instance. // // * launch.image-id - The ID of the AMI. // @@ -35962,11 +41243,11 @@ type DescribeSpotInstanceRequestsInput struct { // * launch.key-name - The name of the key pair the instance launched with. // // * launch.monitoring-enabled - Whether detailed monitoring is enabled for - // the Spot instance. + // the Spot Instance. // // * launch.ramdisk-id - The RAM disk ID. // - // * launched-availability-zone - The Availability Zone in which the bid + // * launched-availability-zone - The Availability Zone in which the request // is launched. // // * network-interface.addresses.primary - Indicates whether the IP address @@ -35993,21 +41274,21 @@ type DescribeSpotInstanceRequestsInput struct { // * product-description - The product description associated with the instance // (Linux/UNIX | Windows). // - // * spot-instance-request-id - The Spot instance request ID. + // * spot-instance-request-id - The Spot Instance request ID. // - // * spot-price - The maximum hourly price for any Spot instance launched + // * spot-price - The maximum hourly price for any Spot Instance launched // to fulfill the request. // - // * state - The state of the Spot instance request (open | active | closed - // | cancelled | failed). Spot bid status information can help you track - // your Amazon EC2 Spot instance requests. For more information, see Spot - // Bid Status (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-bid-status.html) - // in the Amazon Elastic Compute Cloud User Guide. + // * state - The state of the Spot Instance request (open | active | closed + // | cancelled | failed). Spot request status information can help you track + // your Amazon EC2 Spot Instance requests. For more information, see Spot + // Request Status (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-bid-status.html) + // in the Amazon EC2 User Guide for Linux Instances. // // * status-code - The short code describing the most recent evaluation of - // your Spot instance request. + // your Spot Instance request. // - // * status-message - The message explaining the status of the Spot instance + // * status-message - The message explaining the status of the Spot Instance // request. // // * tag:key=value - The key/value combination of a tag assigned to the resource. @@ -36026,14 +41307,14 @@ type DescribeSpotInstanceRequestsInput struct { // * tag-value - The value of a tag assigned to the resource. This filter // is independent of the tag-key filter. // - // * type - The type of Spot instance request (one-time | persistent). + // * type - The type of Spot Instance request (one-time | persistent). // // * valid-from - The start date of the request. // // * valid-until - The end date of the request. Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` - // One or more Spot instance request IDs. + // One or more Spot Instance request IDs. SpotInstanceRequestIds []*string `locationName:"SpotInstanceRequestId" locationNameList:"SpotInstanceRequestId" type:"list"` } @@ -36066,11 +41347,10 @@ func (s *DescribeSpotInstanceRequestsInput) SetSpotInstanceRequestIds(v []*strin } // Contains the output of DescribeSpotInstanceRequests. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotInstanceRequestsResult type DescribeSpotInstanceRequestsOutput struct { _ struct{} `type:"structure"` - // One or more Spot instance requests. + // One or more Spot Instance requests. SpotInstanceRequests []*SpotInstanceRequest `locationName:"spotInstanceRequestSet" locationNameList:"item" type:"list"` } @@ -36091,7 +41371,6 @@ func (s *DescribeSpotInstanceRequestsOutput) SetSpotInstanceRequests(v []*SpotIn } // Contains the parameters for DescribeSpotPriceHistory. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotPriceHistoryRequest type DescribeSpotPriceHistoryInput struct { _ struct{} `type:"structure"` @@ -36122,13 +41401,12 @@ type DescribeSpotPriceHistoryInput struct { // * spot-price - The Spot price. The value must match exactly (or use wildcards; // greater than or less than comparison is not supported). // - // * timestamp - The timestamp of the Spot price history, in UTC format (for - // example, YYYY-MM-DDTHH:MM:SSZ). You can use wildcards (* and ?). Greater - // than or less than comparison is not supported. + // * timestamp - The time stamp of the Spot price history, in UTC format + // (for example, YYYY-MM-DDTHH:MM:SSZ). You can use wildcards (* and ?). + // Greater than or less than comparison is not supported. Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` - // Filters the results by the specified instance types. Note that T2 and HS1 - // instance types are not supported. + // Filters the results by the specified instance types. InstanceTypes []*string `locationName:"InstanceType" type:"list"` // The maximum number of results to return in a single call. Specify a value @@ -36212,12 +41490,11 @@ func (s *DescribeSpotPriceHistoryInput) SetStartTime(v time.Time) *DescribeSpotP } // Contains the output of DescribeSpotPriceHistory. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotPriceHistoryResult type DescribeSpotPriceHistoryOutput struct { _ struct{} `type:"structure"` // The token required to retrieve the next set of results. This value is null - // when there are no more results to return. + // or an empty string when there are no more results to return. NextToken *string `locationName:"nextToken" type:"string"` // The historical Spot prices. @@ -36246,7 +41523,6 @@ func (s *DescribeSpotPriceHistoryOutput) SetSpotPriceHistory(v []*SpotPrice) *De return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeStaleSecurityGroupsRequest type DescribeStaleSecurityGroupsInput struct { _ struct{} `type:"structure"` @@ -36324,7 +41600,6 @@ func (s *DescribeStaleSecurityGroupsInput) SetVpcId(v string) *DescribeStaleSecu return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeStaleSecurityGroupsResult type DescribeStaleSecurityGroupsOutput struct { _ struct{} `type:"structure"` @@ -36359,7 +41634,6 @@ func (s *DescribeStaleSecurityGroupsOutput) SetStaleSecurityGroupSet(v []*StaleS } // Contains the parameters for DescribeSubnets. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSubnetsRequest type DescribeSubnetsInput struct { _ struct{} `type:"structure"` @@ -36451,7 +41725,6 @@ func (s *DescribeSubnetsInput) SetSubnetIds(v []*string) *DescribeSubnetsInput { } // Contains the output of DescribeSubnets. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSubnetsResult type DescribeSubnetsOutput struct { _ struct{} `type:"structure"` @@ -36476,7 +41749,6 @@ func (s *DescribeSubnetsOutput) SetSubnets(v []*Subnet) *DescribeSubnetsOutput { } // Contains the parameters for DescribeTags. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeTagsRequest type DescribeTagsInput struct { _ struct{} `type:"structure"` @@ -36493,9 +41765,10 @@ type DescribeTagsInput struct { // * resource-id - The resource ID. // // * resource-type - The resource type (customer-gateway | dhcp-options | - // image | instance | internet-gateway | network-acl | network-interface - // | reserved-instances | route-table | security-group | snapshot | spot-instances-request - // | subnet | volume | vpc | vpn-connection | vpn-gateway). + // elastic-ip | fpga-image | image | instance | internet-gateway | launch-template + // | natgateway | network-acl | network-interface | reserved-instances | + // route-table | security-group | snapshot | spot-instances-request | subnet + // | volume | vpc | vpc-peering-connection | vpn-connection | vpn-gateway). // // * value - The tag value. Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` @@ -36544,7 +41817,6 @@ func (s *DescribeTagsInput) SetNextToken(v string) *DescribeTagsInput { } // Contains the output of DescribeTags. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeTagsResult type DescribeTagsOutput struct { _ struct{} `type:"structure"` @@ -36579,7 +41851,6 @@ func (s *DescribeTagsOutput) SetTags(v []*TagDescription) *DescribeTagsOutput { } // Contains the parameters for DescribeVolumeAttribute. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVolumeAttributeRequest type DescribeVolumeAttributeInput struct { _ struct{} `type:"structure"` @@ -36640,7 +41911,6 @@ func (s *DescribeVolumeAttributeInput) SetVolumeId(v string) *DescribeVolumeAttr } // Contains the output of DescribeVolumeAttribute. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVolumeAttributeResult type DescribeVolumeAttributeOutput struct { _ struct{} `type:"structure"` @@ -36683,7 +41953,6 @@ func (s *DescribeVolumeAttributeOutput) SetVolumeId(v string) *DescribeVolumeAtt } // Contains the parameters for DescribeVolumeStatus. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVolumeStatusRequest type DescribeVolumeStatusInput struct { _ struct{} `type:"structure"` @@ -36789,7 +42058,6 @@ func (s *DescribeVolumeStatusInput) SetVolumeIds(v []*string) *DescribeVolumeSta } // Contains the output of DescribeVolumeStatus. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVolumeStatusResult type DescribeVolumeStatusOutput struct { _ struct{} `type:"structure"` @@ -36824,7 +42092,6 @@ func (s *DescribeVolumeStatusOutput) SetVolumeStatuses(v []*VolumeStatusItem) *D } // Contains the parameters for DescribeVolumes. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVolumesRequest type DescribeVolumesInput struct { _ struct{} `type:"structure"` @@ -36841,14 +42108,13 @@ type DescribeVolumesInput struct { // * attachment.delete-on-termination - Whether the volume is deleted on // instance termination. // - // * attachment.device - The device name that is exposed to the instance + // * attachment.device - The device name specified in the block device mapping // (for example, /dev/sda1). // // * attachment.instance-id - The ID of the instance the volume is attached // to. // - // * attachment.status - The attachment state (attaching | attached | detaching - // | detached). + // * attachment.status - The attachment state (attaching | attached | detaching). // // * availability-zone - The Availability Zone in which the volume was created. // @@ -36947,7 +42213,6 @@ func (s *DescribeVolumesInput) SetVolumeIds(v []*string) *DescribeVolumesInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVolumesModificationsRequest type DescribeVolumesModificationsInput struct { _ struct{} `type:"structure"` @@ -37013,7 +42278,6 @@ func (s *DescribeVolumesModificationsInput) SetVolumeIds(v []*string) *DescribeV return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVolumesModificationsResult type DescribeVolumesModificationsOutput struct { _ struct{} `type:"structure"` @@ -37047,7 +42311,6 @@ func (s *DescribeVolumesModificationsOutput) SetVolumesModifications(v []*Volume } // Contains the output of DescribeVolumes. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVolumesResult type DescribeVolumesOutput struct { _ struct{} `type:"structure"` @@ -37084,7 +42347,6 @@ func (s *DescribeVolumesOutput) SetVolumes(v []*Volume) *DescribeVolumesOutput { } // Contains the parameters for DescribeVpcAttribute. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcAttributeRequest type DescribeVpcAttributeInput struct { _ struct{} `type:"structure"` @@ -37150,7 +42412,6 @@ func (s *DescribeVpcAttributeInput) SetVpcId(v string) *DescribeVpcAttributeInpu } // Contains the output of DescribeVpcAttribute. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcAttributeResult type DescribeVpcAttributeOutput struct { _ struct{} `type:"structure"` @@ -37197,7 +42458,6 @@ func (s *DescribeVpcAttributeOutput) SetVpcId(v string) *DescribeVpcAttributeOut } // Contains the parameters for DescribeVpcClassicLinkDnsSupport. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcClassicLinkDnsSupportRequest type DescribeVpcClassicLinkDnsSupportInput struct { _ struct{} `type:"structure"` @@ -37259,7 +42519,6 @@ func (s *DescribeVpcClassicLinkDnsSupportInput) SetVpcIds(v []*string) *Describe } // Contains the output of DescribeVpcClassicLinkDnsSupport. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcClassicLinkDnsSupportResult type DescribeVpcClassicLinkDnsSupportOutput struct { _ struct{} `type:"structure"` @@ -37293,7 +42552,6 @@ func (s *DescribeVpcClassicLinkDnsSupportOutput) SetVpcs(v []*ClassicLinkDnsSupp } // Contains the parameters for DescribeVpcClassicLink. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcClassicLinkRequest type DescribeVpcClassicLinkInput struct { _ struct{} `type:"structure"` @@ -37358,7 +42616,6 @@ func (s *DescribeVpcClassicLinkInput) SetVpcIds(v []*string) *DescribeVpcClassic } // Contains the output of DescribeVpcClassicLink. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcClassicLinkResult type DescribeVpcClassicLinkOutput struct { _ struct{} `type:"structure"` @@ -37382,8 +42639,440 @@ func (s *DescribeVpcClassicLinkOutput) SetVpcs(v []*VpcClassicLink) *DescribeVpc return s } +type DescribeVpcEndpointConnectionNotificationsInput struct { + _ struct{} `type:"structure"` + + // The ID of the notification. + ConnectionNotificationId *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more filters. + // + // * connection-notification-arn - The ARN of SNS topic for the notification. + // + // * connection-notification-id - The ID of the notification. + // + // * connection-notification-state - The state of the notification (Enabled + // | Disabled). + // + // * connection-notification-type - The type of notification (Topic). + // + // * service-id - The ID of the endpoint service. + // + // * vpc-endpoint-id - The ID of the VPC endpoint. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return in a single call. To retrieve the + // remaining results, make another request with the returned NextToken value. + MaxResults *int64 `type:"integer"` + + // The token to request the next page of results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s DescribeVpcEndpointConnectionNotificationsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVpcEndpointConnectionNotificationsInput) GoString() string { + return s.String() +} + +// SetConnectionNotificationId sets the ConnectionNotificationId field's value. +func (s *DescribeVpcEndpointConnectionNotificationsInput) SetConnectionNotificationId(v string) *DescribeVpcEndpointConnectionNotificationsInput { + s.ConnectionNotificationId = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeVpcEndpointConnectionNotificationsInput) SetDryRun(v bool) *DescribeVpcEndpointConnectionNotificationsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeVpcEndpointConnectionNotificationsInput) SetFilters(v []*Filter) *DescribeVpcEndpointConnectionNotificationsInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeVpcEndpointConnectionNotificationsInput) SetMaxResults(v int64) *DescribeVpcEndpointConnectionNotificationsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeVpcEndpointConnectionNotificationsInput) SetNextToken(v string) *DescribeVpcEndpointConnectionNotificationsInput { + s.NextToken = &v + return s +} + +type DescribeVpcEndpointConnectionNotificationsOutput struct { + _ struct{} `type:"structure"` + + // One or more notifications. + ConnectionNotificationSet []*ConnectionNotification `locationName:"connectionNotificationSet" locationNameList:"item" type:"list"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeVpcEndpointConnectionNotificationsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVpcEndpointConnectionNotificationsOutput) GoString() string { + return s.String() +} + +// SetConnectionNotificationSet sets the ConnectionNotificationSet field's value. +func (s *DescribeVpcEndpointConnectionNotificationsOutput) SetConnectionNotificationSet(v []*ConnectionNotification) *DescribeVpcEndpointConnectionNotificationsOutput { + s.ConnectionNotificationSet = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeVpcEndpointConnectionNotificationsOutput) SetNextToken(v string) *DescribeVpcEndpointConnectionNotificationsOutput { + s.NextToken = &v + return s +} + +type DescribeVpcEndpointConnectionsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more filters. + // + // * service-id - The ID of the service. + // + // * vpc-endpoint-owner - The AWS account number of the owner of the endpoint. + // + // * vpc-endpoint-state - The state of the endpoint (pendingAcceptance | + // pending | available | deleting | deleted | rejected | failed). + // + // * vpc-endpoint-id - The ID of the endpoint. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return for the request in a single page. + // The remaining results of the initial request can be seen by sending another + // request with the returned NextToken value. This value can be between 5 and + // 1000; if MaxResults is given a value larger than 1000, only 1000 results + // are returned. + MaxResults *int64 `type:"integer"` + + // The token to retrieve the next page of results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s DescribeVpcEndpointConnectionsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVpcEndpointConnectionsInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeVpcEndpointConnectionsInput) SetDryRun(v bool) *DescribeVpcEndpointConnectionsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeVpcEndpointConnectionsInput) SetFilters(v []*Filter) *DescribeVpcEndpointConnectionsInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeVpcEndpointConnectionsInput) SetMaxResults(v int64) *DescribeVpcEndpointConnectionsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeVpcEndpointConnectionsInput) SetNextToken(v string) *DescribeVpcEndpointConnectionsInput { + s.NextToken = &v + return s +} + +type DescribeVpcEndpointConnectionsOutput struct { + _ struct{} `type:"structure"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // Information about one or more VPC endpoint connections. + VpcEndpointConnections []*VpcEndpointConnection `locationName:"vpcEndpointConnectionSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeVpcEndpointConnectionsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVpcEndpointConnectionsOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeVpcEndpointConnectionsOutput) SetNextToken(v string) *DescribeVpcEndpointConnectionsOutput { + s.NextToken = &v + return s +} + +// SetVpcEndpointConnections sets the VpcEndpointConnections field's value. +func (s *DescribeVpcEndpointConnectionsOutput) SetVpcEndpointConnections(v []*VpcEndpointConnection) *DescribeVpcEndpointConnectionsOutput { + s.VpcEndpointConnections = v + return s +} + +type DescribeVpcEndpointServiceConfigurationsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more filters. + // + // * service-name - The name of the service. + // + // * service-id - The ID of the service. + // + // * service-state - The state of the service (Pending | Available | Deleting + // | Deleted | Failed). + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return for the request in a single page. + // The remaining results of the initial request can be seen by sending another + // request with the returned NextToken value. This value can be between 5 and + // 1000; if MaxResults is given a value larger than 1000, only 1000 results + // are returned. + MaxResults *int64 `type:"integer"` + + // The token to retrieve the next page of results. + NextToken *string `type:"string"` + + // The IDs of one or more services. + ServiceIds []*string `locationName:"ServiceId" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeVpcEndpointServiceConfigurationsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVpcEndpointServiceConfigurationsInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeVpcEndpointServiceConfigurationsInput) SetDryRun(v bool) *DescribeVpcEndpointServiceConfigurationsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeVpcEndpointServiceConfigurationsInput) SetFilters(v []*Filter) *DescribeVpcEndpointServiceConfigurationsInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeVpcEndpointServiceConfigurationsInput) SetMaxResults(v int64) *DescribeVpcEndpointServiceConfigurationsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeVpcEndpointServiceConfigurationsInput) SetNextToken(v string) *DescribeVpcEndpointServiceConfigurationsInput { + s.NextToken = &v + return s +} + +// SetServiceIds sets the ServiceIds field's value. +func (s *DescribeVpcEndpointServiceConfigurationsInput) SetServiceIds(v []*string) *DescribeVpcEndpointServiceConfigurationsInput { + s.ServiceIds = v + return s +} + +type DescribeVpcEndpointServiceConfigurationsOutput struct { + _ struct{} `type:"structure"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // Information about one or more services. + ServiceConfigurations []*ServiceConfiguration `locationName:"serviceConfigurationSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeVpcEndpointServiceConfigurationsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVpcEndpointServiceConfigurationsOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeVpcEndpointServiceConfigurationsOutput) SetNextToken(v string) *DescribeVpcEndpointServiceConfigurationsOutput { + s.NextToken = &v + return s +} + +// SetServiceConfigurations sets the ServiceConfigurations field's value. +func (s *DescribeVpcEndpointServiceConfigurationsOutput) SetServiceConfigurations(v []*ServiceConfiguration) *DescribeVpcEndpointServiceConfigurationsOutput { + s.ServiceConfigurations = v + return s +} + +type DescribeVpcEndpointServicePermissionsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more filters. + // + // * principal - The ARN of the principal. + // + // * principal-type - The principal type (All | Service | OrganizationUnit + // | Account | User | Role). + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return for the request in a single page. + // The remaining results of the initial request can be seen by sending another + // request with the returned NextToken value. This value can be between 5 and + // 1000; if MaxResults is given a value larger than 1000, only 1000 results + // are returned. + MaxResults *int64 `type:"integer"` + + // The token to retrieve the next page of results. + NextToken *string `type:"string"` + + // The ID of the service. + // + // ServiceId is a required field + ServiceId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s DescribeVpcEndpointServicePermissionsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVpcEndpointServicePermissionsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeVpcEndpointServicePermissionsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeVpcEndpointServicePermissionsInput"} + if s.ServiceId == nil { + invalidParams.Add(request.NewErrParamRequired("ServiceId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeVpcEndpointServicePermissionsInput) SetDryRun(v bool) *DescribeVpcEndpointServicePermissionsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeVpcEndpointServicePermissionsInput) SetFilters(v []*Filter) *DescribeVpcEndpointServicePermissionsInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeVpcEndpointServicePermissionsInput) SetMaxResults(v int64) *DescribeVpcEndpointServicePermissionsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeVpcEndpointServicePermissionsInput) SetNextToken(v string) *DescribeVpcEndpointServicePermissionsInput { + s.NextToken = &v + return s +} + +// SetServiceId sets the ServiceId field's value. +func (s *DescribeVpcEndpointServicePermissionsInput) SetServiceId(v string) *DescribeVpcEndpointServicePermissionsInput { + s.ServiceId = &v + return s +} + +type DescribeVpcEndpointServicePermissionsOutput struct { + _ struct{} `type:"structure"` + + // Information about one or more allowed principals. + AllowedPrincipals []*AllowedPrincipal `locationName:"allowedPrincipals" locationNameList:"item" type:"list"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeVpcEndpointServicePermissionsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVpcEndpointServicePermissionsOutput) GoString() string { + return s.String() +} + +// SetAllowedPrincipals sets the AllowedPrincipals field's value. +func (s *DescribeVpcEndpointServicePermissionsOutput) SetAllowedPrincipals(v []*AllowedPrincipal) *DescribeVpcEndpointServicePermissionsOutput { + s.AllowedPrincipals = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeVpcEndpointServicePermissionsOutput) SetNextToken(v string) *DescribeVpcEndpointServicePermissionsOutput { + s.NextToken = &v + return s +} + // Contains the parameters for DescribeVpcEndpointServices. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcEndpointServicesRequest type DescribeVpcEndpointServicesInput struct { _ struct{} `type:"structure"` @@ -37393,6 +43082,11 @@ type DescribeVpcEndpointServicesInput struct { // it is UnauthorizedOperation. DryRun *bool `type:"boolean"` + // One or more filters. + // + // * service-name: The name of the service. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + // The maximum number of items to return for this request. The request returns // a token that you can specify in a subsequent call to get the next set of // results. @@ -37403,6 +43097,9 @@ type DescribeVpcEndpointServicesInput struct { // The token for the next set of items to return. (You received this token from // a prior call.) NextToken *string `type:"string"` + + // One or more service names. + ServiceNames []*string `locationName:"ServiceName" locationNameList:"item" type:"list"` } // String returns the string representation @@ -37421,6 +43118,12 @@ func (s *DescribeVpcEndpointServicesInput) SetDryRun(v bool) *DescribeVpcEndpoin return s } +// SetFilters sets the Filters field's value. +func (s *DescribeVpcEndpointServicesInput) SetFilters(v []*Filter) *DescribeVpcEndpointServicesInput { + s.Filters = v + return s +} + // SetMaxResults sets the MaxResults field's value. func (s *DescribeVpcEndpointServicesInput) SetMaxResults(v int64) *DescribeVpcEndpointServicesInput { s.MaxResults = &v @@ -37433,8 +43136,13 @@ func (s *DescribeVpcEndpointServicesInput) SetNextToken(v string) *DescribeVpcEn return s } +// SetServiceNames sets the ServiceNames field's value. +func (s *DescribeVpcEndpointServicesInput) SetServiceNames(v []*string) *DescribeVpcEndpointServicesInput { + s.ServiceNames = v + return s +} + // Contains the output of DescribeVpcEndpointServices. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcEndpointServicesResult type DescribeVpcEndpointServicesOutput struct { _ struct{} `type:"structure"` @@ -37442,7 +43150,10 @@ type DescribeVpcEndpointServicesOutput struct { // items to return, the string is empty. NextToken *string `locationName:"nextToken" type:"string"` - // A list of supported AWS services. + // Information about the service. + ServiceDetails []*ServiceDetail `locationName:"serviceDetailSet" locationNameList:"item" type:"list"` + + // A list of supported services. ServiceNames []*string `locationName:"serviceNameSet" locationNameList:"item" type:"list"` } @@ -37462,6 +43173,12 @@ func (s *DescribeVpcEndpointServicesOutput) SetNextToken(v string) *DescribeVpcE return s } +// SetServiceDetails sets the ServiceDetails field's value. +func (s *DescribeVpcEndpointServicesOutput) SetServiceDetails(v []*ServiceDetail) *DescribeVpcEndpointServicesOutput { + s.ServiceDetails = v + return s +} + // SetServiceNames sets the ServiceNames field's value. func (s *DescribeVpcEndpointServicesOutput) SetServiceNames(v []*string) *DescribeVpcEndpointServicesOutput { s.ServiceNames = v @@ -37469,7 +43186,6 @@ func (s *DescribeVpcEndpointServicesOutput) SetServiceNames(v []*string) *Descri } // Contains the parameters for DescribeVpcEndpoints. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcEndpointsRequest type DescribeVpcEndpointsInput struct { _ struct{} `type:"structure"` @@ -37481,7 +43197,7 @@ type DescribeVpcEndpointsInput struct { // One or more filters. // - // * service-name: The name of the AWS service. + // * service-name: The name of the service. // // * vpc-id: The ID of the VPC in which the endpoint resides. // @@ -37547,7 +43263,6 @@ func (s *DescribeVpcEndpointsInput) SetVpcEndpointIds(v []*string) *DescribeVpcE } // Contains the output of DescribeVpcEndpoints. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcEndpointsResult type DescribeVpcEndpointsOutput struct { _ struct{} `type:"structure"` @@ -37582,7 +43297,6 @@ func (s *DescribeVpcEndpointsOutput) SetVpcEndpoints(v []*VpcEndpoint) *Describe } // Contains the parameters for DescribeVpcPeeringConnections. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcPeeringConnectionsRequest type DescribeVpcPeeringConnectionsInput struct { _ struct{} `type:"structure"` @@ -37594,12 +43308,12 @@ type DescribeVpcPeeringConnectionsInput struct { // One or more filters. // - // * accepter-vpc-info.cidr-block - The IPv4 CIDR block of the peer VPC. + // * accepter-vpc-info.cidr-block - The IPv4 CIDR block of the accepter VPC. // // * accepter-vpc-info.owner-id - The AWS account ID of the owner of the - // peer VPC. + // accepter VPC. // - // * accepter-vpc-info.vpc-id - The ID of the peer VPC. + // * accepter-vpc-info.vpc-id - The ID of the accepter VPC. // // * expiration-time - The expiration date and time for the VPC peering connection. // @@ -37612,7 +43326,7 @@ type DescribeVpcPeeringConnectionsInput struct { // * requester-vpc-info.vpc-id - The ID of the requester VPC. // // * status-code - The status of the VPC peering connection (pending-acceptance - // | failed | expired | provisioning | active | deleted | rejected). + // | failed | expired | provisioning | active | deleting | deleted | rejected). // // * status-message - A message that provides more information about the // status of the VPC peering connection, if applicable. @@ -37671,7 +43385,6 @@ func (s *DescribeVpcPeeringConnectionsInput) SetVpcPeeringConnectionIds(v []*str } // Contains the output of DescribeVpcPeeringConnections. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcPeeringConnectionsResult type DescribeVpcPeeringConnectionsOutput struct { _ struct{} `type:"structure"` @@ -37696,7 +43409,6 @@ func (s *DescribeVpcPeeringConnectionsOutput) SetVpcPeeringConnections(v []*VpcP } // Contains the parameters for DescribeVpcs. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcsRequest type DescribeVpcsInput struct { _ struct{} `type:"structure"` @@ -37791,7 +43503,6 @@ func (s *DescribeVpcsInput) SetVpcIds(v []*string) *DescribeVpcsInput { } // Contains the output of DescribeVpcs. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcsResult type DescribeVpcsOutput struct { _ struct{} `type:"structure"` @@ -37816,7 +43527,6 @@ func (s *DescribeVpcsOutput) SetVpcs(v []*Vpc) *DescribeVpcsOutput { } // Contains the parameters for DescribeVpnConnections. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpnConnectionsRequest type DescribeVpnConnectionsInput struct { _ struct{} `type:"structure"` @@ -37907,7 +43617,6 @@ func (s *DescribeVpnConnectionsInput) SetVpnConnectionIds(v []*string) *Describe } // Contains the output of DescribeVpnConnections. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpnConnectionsResult type DescribeVpnConnectionsOutput struct { _ struct{} `type:"structure"` @@ -37932,7 +43641,6 @@ func (s *DescribeVpnConnectionsOutput) SetVpnConnections(v []*VpnConnection) *De } // Contains the parameters for DescribeVpnGateways. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpnGatewaysRequest type DescribeVpnGatewaysInput struct { _ struct{} `type:"structure"` @@ -37944,6 +43652,9 @@ type DescribeVpnGatewaysInput struct { // One or more filters. // + // * amazon-side-asn - The Autonomous System Number (ASN) for the Amazon + // side of the gateway. + // // * attachment.state - The current state of the attachment between the gateway // and the VPC (attaching | attached | detaching | detached). // @@ -38012,7 +43723,6 @@ func (s *DescribeVpnGatewaysInput) SetVpnGatewayIds(v []*string) *DescribeVpnGat } // Contains the output of DescribeVpnGateways. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpnGatewaysResult type DescribeVpnGatewaysOutput struct { _ struct{} `type:"structure"` @@ -38037,7 +43747,6 @@ func (s *DescribeVpnGatewaysOutput) SetVpnGateways(v []*VpnGateway) *DescribeVpn } // Contains the parameters for DetachClassicLinkVpc. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DetachClassicLinkVpcRequest type DetachClassicLinkVpcInput struct { _ struct{} `type:"structure"` @@ -38103,7 +43812,6 @@ func (s *DetachClassicLinkVpcInput) SetVpcId(v string) *DetachClassicLinkVpcInpu } // Contains the output of DetachClassicLinkVpc. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DetachClassicLinkVpcResult type DetachClassicLinkVpcOutput struct { _ struct{} `type:"structure"` @@ -38128,7 +43836,6 @@ func (s *DetachClassicLinkVpcOutput) SetReturn(v bool) *DetachClassicLinkVpcOutp } // Contains the parameters for DetachInternetGateway. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DetachInternetGatewayRequest type DetachInternetGatewayInput struct { _ struct{} `type:"structure"` @@ -38193,7 +43900,6 @@ func (s *DetachInternetGatewayInput) SetVpcId(v string) *DetachInternetGatewayIn return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DetachInternetGatewayOutput type DetachInternetGatewayOutput struct { _ struct{} `type:"structure"` } @@ -38209,7 +43915,6 @@ func (s DetachInternetGatewayOutput) GoString() string { } // Contains the parameters for DetachNetworkInterface. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DetachNetworkInterfaceRequest type DetachNetworkInterfaceInput struct { _ struct{} `type:"structure"` @@ -38269,7 +43974,6 @@ func (s *DetachNetworkInterfaceInput) SetForce(v bool) *DetachNetworkInterfaceIn return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DetachNetworkInterfaceOutput type DetachNetworkInterfaceOutput struct { _ struct{} `type:"structure"` } @@ -38285,7 +43989,6 @@ func (s DetachNetworkInterfaceOutput) GoString() string { } // Contains the parameters for DetachVolume. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DetachVolumeRequest type DetachVolumeInput struct { _ struct{} `type:"structure"` @@ -38370,7 +44073,6 @@ func (s *DetachVolumeInput) SetVolumeId(v string) *DetachVolumeInput { } // Contains the parameters for DetachVpnGateway. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DetachVpnGatewayRequest type DetachVpnGatewayInput struct { _ struct{} `type:"structure"` @@ -38435,7 +44137,6 @@ func (s *DetachVpnGatewayInput) SetVpnGatewayId(v string) *DetachVpnGatewayInput return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DetachVpnGatewayOutput type DetachVpnGatewayOutput struct { _ struct{} `type:"structure"` } @@ -38451,7 +44152,6 @@ func (s DetachVpnGatewayOutput) GoString() string { } // Describes a DHCP configuration option. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DhcpConfiguration type DhcpConfiguration struct { _ struct{} `type:"structure"` @@ -38485,7 +44185,6 @@ func (s *DhcpConfiguration) SetValues(v []*AttributeValue) *DhcpConfiguration { } // Describes a set of DHCP options. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DhcpOptions type DhcpOptions struct { _ struct{} `type:"structure"` @@ -38528,7 +44227,6 @@ func (s *DhcpOptions) SetTags(v []*Tag) *DhcpOptions { } // Contains the parameters for DisableVgwRoutePropagation. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisableVgwRoutePropagationRequest type DisableVgwRoutePropagationInput struct { _ struct{} `type:"structure"` @@ -38581,7 +44279,6 @@ func (s *DisableVgwRoutePropagationInput) SetRouteTableId(v string) *DisableVgwR return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisableVgwRoutePropagationOutput type DisableVgwRoutePropagationOutput struct { _ struct{} `type:"structure"` } @@ -38597,7 +44294,6 @@ func (s DisableVgwRoutePropagationOutput) GoString() string { } // Contains the parameters for DisableVpcClassicLinkDnsSupport. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisableVpcClassicLinkDnsSupportRequest type DisableVpcClassicLinkDnsSupportInput struct { _ struct{} `type:"structure"` @@ -38622,7 +44318,6 @@ func (s *DisableVpcClassicLinkDnsSupportInput) SetVpcId(v string) *DisableVpcCla } // Contains the output of DisableVpcClassicLinkDnsSupport. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisableVpcClassicLinkDnsSupportResult type DisableVpcClassicLinkDnsSupportOutput struct { _ struct{} `type:"structure"` @@ -38647,7 +44342,6 @@ func (s *DisableVpcClassicLinkDnsSupportOutput) SetReturn(v bool) *DisableVpcCla } // Contains the parameters for DisableVpcClassicLink. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisableVpcClassicLinkRequest type DisableVpcClassicLinkInput struct { _ struct{} `type:"structure"` @@ -38699,7 +44393,6 @@ func (s *DisableVpcClassicLinkInput) SetVpcId(v string) *DisableVpcClassicLinkIn } // Contains the output of DisableVpcClassicLink. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisableVpcClassicLinkResult type DisableVpcClassicLinkOutput struct { _ struct{} `type:"structure"` @@ -38724,7 +44417,6 @@ func (s *DisableVpcClassicLinkOutput) SetReturn(v bool) *DisableVpcClassicLinkOu } // Contains the parameters for DisassociateAddress. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateAddressRequest type DisassociateAddressInput struct { _ struct{} `type:"structure"` @@ -38769,7 +44461,6 @@ func (s *DisassociateAddressInput) SetPublicIp(v string) *DisassociateAddressInp return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateAddressOutput type DisassociateAddressOutput struct { _ struct{} `type:"structure"` } @@ -38784,7 +44475,6 @@ func (s DisassociateAddressOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateIamInstanceProfileRequest type DisassociateIamInstanceProfileInput struct { _ struct{} `type:"structure"` @@ -38823,7 +44513,6 @@ func (s *DisassociateIamInstanceProfileInput) SetAssociationId(v string) *Disass return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateIamInstanceProfileResult type DisassociateIamInstanceProfileOutput struct { _ struct{} `type:"structure"` @@ -38848,7 +44537,6 @@ func (s *DisassociateIamInstanceProfileOutput) SetIamInstanceProfileAssociation( } // Contains the parameters for DisassociateRouteTable. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateRouteTableRequest type DisassociateRouteTableInput struct { _ struct{} `type:"structure"` @@ -38900,7 +44588,6 @@ func (s *DisassociateRouteTableInput) SetDryRun(v bool) *DisassociateRouteTableI return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateRouteTableOutput type DisassociateRouteTableOutput struct { _ struct{} `type:"structure"` } @@ -38915,7 +44602,6 @@ func (s DisassociateRouteTableOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateSubnetCidrBlockRequest type DisassociateSubnetCidrBlockInput struct { _ struct{} `type:"structure"` @@ -38954,7 +44640,6 @@ func (s *DisassociateSubnetCidrBlockInput) SetAssociationId(v string) *Disassoci return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateSubnetCidrBlockResult type DisassociateSubnetCidrBlockOutput struct { _ struct{} `type:"structure"` @@ -38987,7 +44672,6 @@ func (s *DisassociateSubnetCidrBlockOutput) SetSubnetId(v string) *DisassociateS return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateVpcCidrBlockRequest type DisassociateVpcCidrBlockInput struct { _ struct{} `type:"structure"` @@ -39026,7 +44710,6 @@ func (s *DisassociateVpcCidrBlockInput) SetAssociationId(v string) *Disassociate return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateVpcCidrBlockResult type DisassociateVpcCidrBlockOutput struct { _ struct{} `type:"structure"` @@ -39069,7 +44752,6 @@ func (s *DisassociateVpcCidrBlockOutput) SetVpcId(v string) *DisassociateVpcCidr } // Describes a disk image. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DiskImage type DiskImage struct { _ struct{} `type:"structure"` @@ -39132,7 +44814,6 @@ func (s *DiskImage) SetVolume(v *VolumeDetail) *DiskImage { } // Describes a disk image. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DiskImageDescription type DiskImageDescription struct { _ struct{} `type:"structure"` @@ -39140,9 +44821,7 @@ type DiskImageDescription struct { Checksum *string `locationName:"checksum" type:"string"` // The disk image format. - // - // Format is a required field - Format *string `locationName:"format" type:"string" required:"true" enum:"DiskImageFormat"` + Format *string `locationName:"format" type:"string" enum:"DiskImageFormat"` // A presigned URL for the import manifest stored in Amazon S3. For information // about creating a presigned URL for an Amazon S3 object, read the "Query String @@ -39152,14 +44831,10 @@ type DiskImageDescription struct { // // For information about the import manifest referenced by this API action, // see VM Import Manifest (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/manifest.html). - // - // ImportManifestUrl is a required field - ImportManifestUrl *string `locationName:"importManifestUrl" type:"string" required:"true"` + ImportManifestUrl *string `locationName:"importManifestUrl" type:"string"` // The size of the disk image, in GiB. - // - // Size is a required field - Size *int64 `locationName:"size" type:"long" required:"true"` + Size *int64 `locationName:"size" type:"long"` } // String returns the string representation @@ -39197,7 +44872,6 @@ func (s *DiskImageDescription) SetSize(v int64) *DiskImageDescription { } // Describes a disk image. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DiskImageDetail type DiskImageDetail struct { _ struct{} `type:"structure"` @@ -39272,14 +44946,11 @@ func (s *DiskImageDetail) SetImportManifestUrl(v string) *DiskImageDetail { } // Describes a disk image volume. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DiskImageVolumeDescription type DiskImageVolumeDescription struct { _ struct{} `type:"structure"` // The volume identifier. - // - // Id is a required field - Id *string `locationName:"id" type:"string" required:"true"` + Id *string `locationName:"id" type:"string"` // The size of the volume, in GiB. Size *int64 `locationName:"size" type:"long"` @@ -39307,16 +44978,50 @@ func (s *DiskImageVolumeDescription) SetSize(v int64) *DiskImageVolumeDescriptio return s } +// Describes a DNS entry. +type DnsEntry struct { + _ struct{} `type:"structure"` + + // The DNS name. + DnsName *string `locationName:"dnsName" type:"string"` + + // The ID of the private hosted zone. + HostedZoneId *string `locationName:"hostedZoneId" type:"string"` +} + +// String returns the string representation +func (s DnsEntry) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DnsEntry) GoString() string { + return s.String() +} + +// SetDnsName sets the DnsName field's value. +func (s *DnsEntry) SetDnsName(v string) *DnsEntry { + s.DnsName = &v + return s +} + +// SetHostedZoneId sets the HostedZoneId field's value. +func (s *DnsEntry) SetHostedZoneId(v string) *DnsEntry { + s.HostedZoneId = &v + return s +} + // Describes a block device for an EBS volume. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EbsBlockDevice type EbsBlockDevice struct { _ struct{} `type:"structure"` // Indicates whether the EBS volume is deleted on instance termination. DeleteOnTermination *bool `locationName:"deleteOnTermination" type:"boolean"` - // Indicates whether the EBS volume is encrypted. Encrypted Amazon EBS volumes - // may only be attached to instances that support Amazon EBS encryption. + // Indicates whether the EBS volume is encrypted. Encrypted volumes can only + // be attached to instances that support Amazon EBS encryption. If you are creating + // a volume from a snapshot, you can't specify an encryption value. This is + // because only blank volumes can be encrypted on creation. Encrypted *bool `locationName:"encrypted" type:"boolean"` // The number of I/O operations per second (IOPS) that the volume supports. @@ -39334,6 +45039,15 @@ type EbsBlockDevice struct { // it is not used in requests to create gp2, st1, sc1, or standard volumes. Iops *int64 `locationName:"iops" type:"integer"` + // Identifier (key ID, key alias, ID ARN, or alias ARN) for a user-managed CMK + // under which the EBS volume is encrypted. + // + // Note: This parameter is only supported on BlockDeviceMapping objects called + // by RunInstances (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html), + // RequestSpotFleet (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RequestSpotFleet.html), + // and RequestSpotInstances (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RequestSpotInstances.html). + KmsKeyId *string `type:"string"` + // The ID of the snapshot. SnapshotId *string `locationName:"snapshotId" type:"string"` @@ -39383,6 +45097,12 @@ func (s *EbsBlockDevice) SetIops(v int64) *EbsBlockDevice { return s } +// SetKmsKeyId sets the KmsKeyId field's value. +func (s *EbsBlockDevice) SetKmsKeyId(v string) *EbsBlockDevice { + s.KmsKeyId = &v + return s +} + // SetSnapshotId sets the SnapshotId field's value. func (s *EbsBlockDevice) SetSnapshotId(v string) *EbsBlockDevice { s.SnapshotId = &v @@ -39402,7 +45122,6 @@ func (s *EbsBlockDevice) SetVolumeType(v string) *EbsBlockDevice { } // Describes a parameter used to set up an EBS volume in a block device mapping. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EbsInstanceBlockDevice type EbsInstanceBlockDevice struct { _ struct{} `type:"structure"` @@ -39455,7 +45174,6 @@ func (s *EbsInstanceBlockDevice) SetVolumeId(v string) *EbsInstanceBlockDevice { // Describes information used to set up an EBS volume specified in a block device // mapping. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EbsInstanceBlockDeviceSpecification type EbsInstanceBlockDeviceSpecification struct { _ struct{} `type:"structure"` @@ -39489,7 +45207,6 @@ func (s *EbsInstanceBlockDeviceSpecification) SetVolumeId(v string) *EbsInstance } // Describes an egress-only Internet gateway. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EgressOnlyInternetGateway type EgressOnlyInternetGateway struct { _ struct{} `type:"structure"` @@ -39523,7 +45240,6 @@ func (s *EgressOnlyInternetGateway) SetEgressOnlyInternetGatewayId(v string) *Eg } // Describes the association between an instance and an Elastic GPU. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ElasticGpuAssociation type ElasticGpuAssociation struct { _ struct{} `type:"structure"` @@ -39575,7 +45291,6 @@ func (s *ElasticGpuAssociation) SetElasticGpuId(v string) *ElasticGpuAssociation } // Describes the status of an Elastic GPU. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ElasticGpuHealth type ElasticGpuHealth struct { _ struct{} `type:"structure"` @@ -39600,7 +45315,6 @@ func (s *ElasticGpuHealth) SetStatus(v string) *ElasticGpuHealth { } // A specification for an Elastic GPU. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ElasticGpuSpecification type ElasticGpuSpecification struct { _ struct{} `type:"structure"` @@ -39639,8 +45353,31 @@ func (s *ElasticGpuSpecification) SetType(v string) *ElasticGpuSpecification { return s } +// Describes an elastic GPU. +type ElasticGpuSpecificationResponse struct { + _ struct{} `type:"structure"` + + // The elastic GPU type. + Type *string `locationName:"type" type:"string"` +} + +// String returns the string representation +func (s ElasticGpuSpecificationResponse) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ElasticGpuSpecificationResponse) GoString() string { + return s.String() +} + +// SetType sets the Type field's value. +func (s *ElasticGpuSpecificationResponse) SetType(v string) *ElasticGpuSpecificationResponse { + s.Type = &v + return s +} + // Describes an Elastic GPU. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ElasticGpus type ElasticGpus struct { _ struct{} `type:"structure"` @@ -39710,7 +45447,6 @@ func (s *ElasticGpus) SetInstanceId(v string) *ElasticGpus { } // Contains the parameters for EnableVgwRoutePropagation. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EnableVgwRoutePropagationRequest type EnableVgwRoutePropagationInput struct { _ struct{} `type:"structure"` @@ -39763,7 +45499,6 @@ func (s *EnableVgwRoutePropagationInput) SetRouteTableId(v string) *EnableVgwRou return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EnableVgwRoutePropagationOutput type EnableVgwRoutePropagationOutput struct { _ struct{} `type:"structure"` } @@ -39779,7 +45514,6 @@ func (s EnableVgwRoutePropagationOutput) GoString() string { } // Contains the parameters for EnableVolumeIO. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EnableVolumeIORequest type EnableVolumeIOInput struct { _ struct{} `type:"structure"` @@ -39830,7 +45564,6 @@ func (s *EnableVolumeIOInput) SetVolumeId(v string) *EnableVolumeIOInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EnableVolumeIOOutput type EnableVolumeIOOutput struct { _ struct{} `type:"structure"` } @@ -39846,7 +45579,6 @@ func (s EnableVolumeIOOutput) GoString() string { } // Contains the parameters for EnableVpcClassicLinkDnsSupport. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EnableVpcClassicLinkDnsSupportRequest type EnableVpcClassicLinkDnsSupportInput struct { _ struct{} `type:"structure"` @@ -39871,7 +45603,6 @@ func (s *EnableVpcClassicLinkDnsSupportInput) SetVpcId(v string) *EnableVpcClass } // Contains the output of EnableVpcClassicLinkDnsSupport. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EnableVpcClassicLinkDnsSupportResult type EnableVpcClassicLinkDnsSupportOutput struct { _ struct{} `type:"structure"` @@ -39896,7 +45627,6 @@ func (s *EnableVpcClassicLinkDnsSupportOutput) SetReturn(v bool) *EnableVpcClass } // Contains the parameters for EnableVpcClassicLink. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EnableVpcClassicLinkRequest type EnableVpcClassicLinkInput struct { _ struct{} `type:"structure"` @@ -39948,7 +45678,6 @@ func (s *EnableVpcClassicLinkInput) SetVpcId(v string) *EnableVpcClassicLinkInpu } // Contains the output of EnableVpcClassicLink. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EnableVpcClassicLinkResult type EnableVpcClassicLinkOutput struct { _ struct{} `type:"structure"` @@ -39972,8 +45701,7 @@ func (s *EnableVpcClassicLinkOutput) SetReturn(v bool) *EnableVpcClassicLinkOutp return s } -// Describes a Spot fleet event. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EventInformation +// Describes a Spot Fleet event. type EventInformation struct { _ struct{} `type:"structure"` @@ -39982,9 +45710,9 @@ type EventInformation struct { // The event. // - // The following are the error events. + // The following are the error events: // - // * iamFleetRoleInvalid - The Spot fleet did not have the required permissions + // * iamFleetRoleInvalid - The Spot Fleet did not have the required permissions // either to launch or terminate an instance. // // * launchSpecTemporarilyBlacklisted - The configuration is not valid and @@ -39995,43 +45723,52 @@ type EventInformation struct { // For more information, see the description of the event. // // * spotInstanceCountLimitExceeded - You've reached the limit on the number - // of Spot instances that you can launch. + // of Spot Instances that you can launch. // - // The following are the fleetRequestChange events. + // The following are the fleetRequestChange events: // - // * active - The Spot fleet has been validated and Amazon EC2 is attempting - // to maintain the target number of running Spot instances. + // * active - The Spot Fleet has been validated and Amazon EC2 is attempting + // to maintain the target number of running Spot Instances. // - // * cancelled - The Spot fleet is canceled and has no running Spot instances. - // The Spot fleet will be deleted two days after its instances were terminated. + // * cancelled - The Spot Fleet is canceled and has no running Spot Instances. + // The Spot Fleet will be deleted two days after its instances were terminated. // - // * cancelled_running - The Spot fleet is canceled and will not launch additional - // Spot instances, but its existing Spot instances continue to run until - // they are interrupted or terminated. + // * cancelled_running - The Spot Fleet is canceled and does not launch additional + // Spot Instances. Existing Spot Instances continue to run until they are + // interrupted or terminated. // - // * cancelled_terminating - The Spot fleet is canceled and its Spot instances + // * cancelled_terminating - The Spot Fleet is canceled and its Spot Instances // are terminating. // - // * expired - The Spot fleet request has expired. A subsequent event indicates + // * expired - The Spot Fleet request has expired. A subsequent event indicates // that the instances were terminated, if the request was created with TerminateInstancesWithExpiration // set. // - // * modify_in_progress - A request to modify the Spot fleet request was + // * modify_in_progress - A request to modify the Spot Fleet request was // accepted and is in progress. // - // * modify_successful - The Spot fleet request was modified. + // * modify_successful - The Spot Fleet request was modified. // - // * price_update - The bid price for a launch configuration was adjusted - // because it was too high. This change is permanent. + // * price_update - The price for a launch configuration was adjusted because + // it was too high. This change is permanent. // - // * submitted - The Spot fleet request is being evaluated and Amazon EC2 - // is preparing to launch the target number of Spot instances. + // * submitted - The Spot Fleet request is being evaluated and Amazon EC2 + // is preparing to launch the target number of Spot Instances. // - // The following are the instanceChange events. + // The following are the instanceChange events: // - // * launched - A bid was fulfilled and a new instance was launched. + // * launched - A request was fulfilled and a new instance was launched. // // * terminated - An instance was terminated by the user. + // + // The following are the Information events: + // + // * launchSpecUnusable - The price in a launch specification is not valid + // because it is below the Spot price or the Spot price is above the On-Demand + // price. + // + // * fleetProgressHalted - The price in every launch specification is not + // valid. A launch specification might become valid if the Spot price changes. EventSubType *string `locationName:"eventSubType" type:"string"` // The ID of the instance. This information is available only for instanceChange @@ -40068,7 +45805,6 @@ func (s *EventInformation) SetInstanceId(v string) *EventInformation { } // Describes an instance export task. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ExportTask type ExportTask struct { _ struct{} `type:"structure"` @@ -40138,7 +45874,6 @@ func (s *ExportTask) SetStatusMessage(v string) *ExportTask { } // Describes the format and location for an instance export task. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ExportToS3Task type ExportToS3Task struct { _ struct{} `type:"structure"` @@ -40192,7 +45927,6 @@ func (s *ExportToS3Task) SetS3Key(v string) *ExportToS3Task { } // Describes an instance export task. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ExportToS3TaskSpecification type ExportToS3TaskSpecification struct { _ struct{} `type:"structure"` @@ -40247,9 +45981,30 @@ func (s *ExportToS3TaskSpecification) SetS3Prefix(v string) *ExportToS3TaskSpeci } // A filter name and value pair that is used to return a more specific list -// of results. Filters can be used to match a set of resources by various criteria, -// such as tags, attributes, or IDs. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/Filter +// of results from a describe operation. Filters can be used to match a set +// of resources by specific criteria, such as tags, attributes, or IDs. The +// filters supported by a describe operation are documented with the describe +// operation. For example: +// +// * DescribeAvailabilityZones +// +// * DescribeImages +// +// * DescribeInstances +// +// * DescribeKeyPairs +// +// * DescribeSecurityGroups +// +// * DescribeSnapshots +// +// * DescribeSubnets +// +// * DescribeTags +// +// * DescribeVolumes +// +// * DescribeVpcs type Filter struct { _ struct{} `type:"structure"` @@ -40282,8 +46037,518 @@ func (s *Filter) SetValues(v []*string) *Filter { return s } +// Describes an EC2 Fleet. +type FleetData struct { + _ struct{} `type:"structure"` + + // The progress of the EC2 Fleet. If there is an error, the status is error. + // After all requests are placed, the status is pending_fulfillment. If the + // size of the EC2 Fleet is equal to or greater than its target capacity, the + // status is fulfilled. If the size of the EC2 Fleet is decreased, the status + // is pending_termination while instances are terminating. + ActivityStatus *string `locationName:"activityStatus" type:"string" enum:"FleetActivityStatus"` + + // Unique, case-sensitive identifier you provide to ensure the idempotency of + // the request. For more information, see Ensuring Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + // + // Constraints: Maximum 64 ASCII characters + ClientToken *string `locationName:"clientToken" type:"string"` + + // The creation date and time of the EC2 Fleet. + CreateTime *time.Time `locationName:"createTime" type:"timestamp" timestampFormat:"iso8601"` + + // Indicates whether running instances should be terminated if the target capacity + // of the EC2 Fleet is decreased below the current size of the EC2 Fleet. + ExcessCapacityTerminationPolicy *string `locationName:"excessCapacityTerminationPolicy" type:"string" enum:"FleetExcessCapacityTerminationPolicy"` + + // The ID of the EC2 Fleet. + FleetId *string `locationName:"fleetId" type:"string"` + + // The state of the EC2 Fleet. + FleetState *string `locationName:"fleetState" type:"string" enum:"FleetStateCode"` + + // The number of units fulfilled by this request compared to the set target + // capacity. + FulfilledCapacity *float64 `locationName:"fulfilledCapacity" type:"double"` + + // The number of units fulfilled by this request compared to the set target + // On-Demand capacity. + FulfilledOnDemandCapacity *float64 `locationName:"fulfilledOnDemandCapacity" type:"double"` + + // The launch template and overrides. + LaunchTemplateConfigs []*FleetLaunchTemplateConfig `locationName:"launchTemplateConfigs" locationNameList:"item" type:"list"` + + // Indicates whether EC2 Fleet should replace unhealthy instances. + ReplaceUnhealthyInstances *bool `locationName:"replaceUnhealthyInstances" type:"boolean"` + + // The configuration of Spot Instances in an EC2 Fleet. + SpotOptions *SpotOptions `locationName:"spotOptions" type:"structure"` + + // The tags for an EC2 Fleet resource. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` + + // The number of units to request. You can choose to set the target capacity + // in terms of instances or a performance characteristic that is important to + // your application workload, such as vCPUs, memory, or I/O. If the request + // type is maintain, you can specify a target capacity of 0 and add capacity + // later. + TargetCapacitySpecification *TargetCapacitySpecification `locationName:"targetCapacitySpecification" type:"structure"` + + // Indicates whether running instances should be terminated when the EC2 Fleet + // expires. + TerminateInstancesWithExpiration *bool `locationName:"terminateInstancesWithExpiration" type:"boolean"` + + // The type of request. Indicates whether the EC2 Fleet only requests the target + // capacity, or also attempts to maintain it. If you request a certain target + // capacity, EC2 Fleet only places the required requests; it does not attempt + // to replenish instances if capacity is diminished, and does not submit requests + // in alternative capacity pools if capacity is unavailable. To maintain a certain + // target capacity, EC2 Fleet places the required requests to meet this target + // capacity. It also automatically replenishes any interrupted Spot Instances. + // Default: maintain. + Type *string `locationName:"type" type:"string" enum:"FleetType"` + + // The start date and time of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). + // The default is to start fulfilling the request immediately. + ValidFrom *time.Time `locationName:"validFrom" type:"timestamp" timestampFormat:"iso8601"` + + // The end date and time of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). + // At this point, no new instance requests are placed or able to fulfill the + // request. The default end date is 7 days from the current date. + ValidUntil *time.Time `locationName:"validUntil" type:"timestamp" timestampFormat:"iso8601"` +} + +// String returns the string representation +func (s FleetData) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s FleetData) GoString() string { + return s.String() +} + +// SetActivityStatus sets the ActivityStatus field's value. +func (s *FleetData) SetActivityStatus(v string) *FleetData { + s.ActivityStatus = &v + return s +} + +// SetClientToken sets the ClientToken field's value. +func (s *FleetData) SetClientToken(v string) *FleetData { + s.ClientToken = &v + return s +} + +// SetCreateTime sets the CreateTime field's value. +func (s *FleetData) SetCreateTime(v time.Time) *FleetData { + s.CreateTime = &v + return s +} + +// SetExcessCapacityTerminationPolicy sets the ExcessCapacityTerminationPolicy field's value. +func (s *FleetData) SetExcessCapacityTerminationPolicy(v string) *FleetData { + s.ExcessCapacityTerminationPolicy = &v + return s +} + +// SetFleetId sets the FleetId field's value. +func (s *FleetData) SetFleetId(v string) *FleetData { + s.FleetId = &v + return s +} + +// SetFleetState sets the FleetState field's value. +func (s *FleetData) SetFleetState(v string) *FleetData { + s.FleetState = &v + return s +} + +// SetFulfilledCapacity sets the FulfilledCapacity field's value. +func (s *FleetData) SetFulfilledCapacity(v float64) *FleetData { + s.FulfilledCapacity = &v + return s +} + +// SetFulfilledOnDemandCapacity sets the FulfilledOnDemandCapacity field's value. +func (s *FleetData) SetFulfilledOnDemandCapacity(v float64) *FleetData { + s.FulfilledOnDemandCapacity = &v + return s +} + +// SetLaunchTemplateConfigs sets the LaunchTemplateConfigs field's value. +func (s *FleetData) SetLaunchTemplateConfigs(v []*FleetLaunchTemplateConfig) *FleetData { + s.LaunchTemplateConfigs = v + return s +} + +// SetReplaceUnhealthyInstances sets the ReplaceUnhealthyInstances field's value. +func (s *FleetData) SetReplaceUnhealthyInstances(v bool) *FleetData { + s.ReplaceUnhealthyInstances = &v + return s +} + +// SetSpotOptions sets the SpotOptions field's value. +func (s *FleetData) SetSpotOptions(v *SpotOptions) *FleetData { + s.SpotOptions = v + return s +} + +// SetTags sets the Tags field's value. +func (s *FleetData) SetTags(v []*Tag) *FleetData { + s.Tags = v + return s +} + +// SetTargetCapacitySpecification sets the TargetCapacitySpecification field's value. +func (s *FleetData) SetTargetCapacitySpecification(v *TargetCapacitySpecification) *FleetData { + s.TargetCapacitySpecification = v + return s +} + +// SetTerminateInstancesWithExpiration sets the TerminateInstancesWithExpiration field's value. +func (s *FleetData) SetTerminateInstancesWithExpiration(v bool) *FleetData { + s.TerminateInstancesWithExpiration = &v + return s +} + +// SetType sets the Type field's value. +func (s *FleetData) SetType(v string) *FleetData { + s.Type = &v + return s +} + +// SetValidFrom sets the ValidFrom field's value. +func (s *FleetData) SetValidFrom(v time.Time) *FleetData { + s.ValidFrom = &v + return s +} + +// SetValidUntil sets the ValidUntil field's value. +func (s *FleetData) SetValidUntil(v time.Time) *FleetData { + s.ValidUntil = &v + return s +} + +// Describes a launch template and overrides. +type FleetLaunchTemplateConfig struct { + _ struct{} `type:"structure"` + + // The launch template. + LaunchTemplateSpecification *FleetLaunchTemplateSpecification `locationName:"launchTemplateSpecification" type:"structure"` + + // Any parameters that you specify override the same parameters in the launch + // template. + Overrides []*FleetLaunchTemplateOverrides `locationName:"overrides" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s FleetLaunchTemplateConfig) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s FleetLaunchTemplateConfig) GoString() string { + return s.String() +} + +// SetLaunchTemplateSpecification sets the LaunchTemplateSpecification field's value. +func (s *FleetLaunchTemplateConfig) SetLaunchTemplateSpecification(v *FleetLaunchTemplateSpecification) *FleetLaunchTemplateConfig { + s.LaunchTemplateSpecification = v + return s +} + +// SetOverrides sets the Overrides field's value. +func (s *FleetLaunchTemplateConfig) SetOverrides(v []*FleetLaunchTemplateOverrides) *FleetLaunchTemplateConfig { + s.Overrides = v + return s +} + +// Describes a launch template and overrides. +type FleetLaunchTemplateConfigRequest struct { + _ struct{} `type:"structure"` + + // The launch template to use. You must specify either the launch template ID + // or launch template name in the request. + LaunchTemplateSpecification *FleetLaunchTemplateSpecificationRequest `type:"structure"` + + // Any parameters that you specify override the same parameters in the launch + // template. + Overrides []*FleetLaunchTemplateOverridesRequest `locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s FleetLaunchTemplateConfigRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s FleetLaunchTemplateConfigRequest) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *FleetLaunchTemplateConfigRequest) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "FleetLaunchTemplateConfigRequest"} + if s.LaunchTemplateSpecification != nil { + if err := s.LaunchTemplateSpecification.Validate(); err != nil { + invalidParams.AddNested("LaunchTemplateSpecification", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetLaunchTemplateSpecification sets the LaunchTemplateSpecification field's value. +func (s *FleetLaunchTemplateConfigRequest) SetLaunchTemplateSpecification(v *FleetLaunchTemplateSpecificationRequest) *FleetLaunchTemplateConfigRequest { + s.LaunchTemplateSpecification = v + return s +} + +// SetOverrides sets the Overrides field's value. +func (s *FleetLaunchTemplateConfigRequest) SetOverrides(v []*FleetLaunchTemplateOverridesRequest) *FleetLaunchTemplateConfigRequest { + s.Overrides = v + return s +} + +// Describes overrides for a launch template. +type FleetLaunchTemplateOverrides struct { + _ struct{} `type:"structure"` + + // The Availability Zone in which to launch the instances. + AvailabilityZone *string `locationName:"availabilityZone" type:"string"` + + // The instance type. + InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"` + + // The maximum price per unit hour that you are willing to pay for a Spot Instance. + MaxPrice *string `locationName:"maxPrice" type:"string"` + + // The ID of the subnet in which to launch the instances. + SubnetId *string `locationName:"subnetId" type:"string"` + + // The number of units provided by the specified instance type. + WeightedCapacity *float64 `locationName:"weightedCapacity" type:"double"` +} + +// String returns the string representation +func (s FleetLaunchTemplateOverrides) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s FleetLaunchTemplateOverrides) GoString() string { + return s.String() +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *FleetLaunchTemplateOverrides) SetAvailabilityZone(v string) *FleetLaunchTemplateOverrides { + s.AvailabilityZone = &v + return s +} + +// SetInstanceType sets the InstanceType field's value. +func (s *FleetLaunchTemplateOverrides) SetInstanceType(v string) *FleetLaunchTemplateOverrides { + s.InstanceType = &v + return s +} + +// SetMaxPrice sets the MaxPrice field's value. +func (s *FleetLaunchTemplateOverrides) SetMaxPrice(v string) *FleetLaunchTemplateOverrides { + s.MaxPrice = &v + return s +} + +// SetSubnetId sets the SubnetId field's value. +func (s *FleetLaunchTemplateOverrides) SetSubnetId(v string) *FleetLaunchTemplateOverrides { + s.SubnetId = &v + return s +} + +// SetWeightedCapacity sets the WeightedCapacity field's value. +func (s *FleetLaunchTemplateOverrides) SetWeightedCapacity(v float64) *FleetLaunchTemplateOverrides { + s.WeightedCapacity = &v + return s +} + +// Describes overrides for a launch template. +type FleetLaunchTemplateOverridesRequest struct { + _ struct{} `type:"structure"` + + // The Availability Zone in which to launch the instances. + AvailabilityZone *string `type:"string"` + + // The instance type. + InstanceType *string `type:"string" enum:"InstanceType"` + + // The maximum price per unit hour that you are willing to pay for a Spot Instance. + MaxPrice *string `type:"string"` + + // The ID of the subnet in which to launch the instances. + SubnetId *string `type:"string"` + + // The number of units provided by the specified instance type. + WeightedCapacity *float64 `type:"double"` +} + +// String returns the string representation +func (s FleetLaunchTemplateOverridesRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s FleetLaunchTemplateOverridesRequest) GoString() string { + return s.String() +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *FleetLaunchTemplateOverridesRequest) SetAvailabilityZone(v string) *FleetLaunchTemplateOverridesRequest { + s.AvailabilityZone = &v + return s +} + +// SetInstanceType sets the InstanceType field's value. +func (s *FleetLaunchTemplateOverridesRequest) SetInstanceType(v string) *FleetLaunchTemplateOverridesRequest { + s.InstanceType = &v + return s +} + +// SetMaxPrice sets the MaxPrice field's value. +func (s *FleetLaunchTemplateOverridesRequest) SetMaxPrice(v string) *FleetLaunchTemplateOverridesRequest { + s.MaxPrice = &v + return s +} + +// SetSubnetId sets the SubnetId field's value. +func (s *FleetLaunchTemplateOverridesRequest) SetSubnetId(v string) *FleetLaunchTemplateOverridesRequest { + s.SubnetId = &v + return s +} + +// SetWeightedCapacity sets the WeightedCapacity field's value. +func (s *FleetLaunchTemplateOverridesRequest) SetWeightedCapacity(v float64) *FleetLaunchTemplateOverridesRequest { + s.WeightedCapacity = &v + return s +} + +// Describes a launch template. +type FleetLaunchTemplateSpecification struct { + _ struct{} `type:"structure"` + + // The ID of the launch template. You must specify either a template ID or a + // template name. + LaunchTemplateId *string `locationName:"launchTemplateId" type:"string"` + + // The name of the launch template. You must specify either a template name + // or a template ID. + LaunchTemplateName *string `locationName:"launchTemplateName" min:"3" type:"string"` + + // The version number. By default, the default version of the launch template + // is used. + Version *string `locationName:"version" type:"string"` +} + +// String returns the string representation +func (s FleetLaunchTemplateSpecification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s FleetLaunchTemplateSpecification) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *FleetLaunchTemplateSpecification) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "FleetLaunchTemplateSpecification"} + if s.LaunchTemplateName != nil && len(*s.LaunchTemplateName) < 3 { + invalidParams.Add(request.NewErrParamMinLen("LaunchTemplateName", 3)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetLaunchTemplateId sets the LaunchTemplateId field's value. +func (s *FleetLaunchTemplateSpecification) SetLaunchTemplateId(v string) *FleetLaunchTemplateSpecification { + s.LaunchTemplateId = &v + return s +} + +// SetLaunchTemplateName sets the LaunchTemplateName field's value. +func (s *FleetLaunchTemplateSpecification) SetLaunchTemplateName(v string) *FleetLaunchTemplateSpecification { + s.LaunchTemplateName = &v + return s +} + +// SetVersion sets the Version field's value. +func (s *FleetLaunchTemplateSpecification) SetVersion(v string) *FleetLaunchTemplateSpecification { + s.Version = &v + return s +} + +// The launch template to use. You must specify either the launch template ID +// or launch template name in the request. +type FleetLaunchTemplateSpecificationRequest struct { + _ struct{} `type:"structure"` + + // The ID of the launch template. + LaunchTemplateId *string `type:"string"` + + // The name of the launch template. + LaunchTemplateName *string `min:"3" type:"string"` + + // The version number of the launch template. + Version *string `type:"string"` +} + +// String returns the string representation +func (s FleetLaunchTemplateSpecificationRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s FleetLaunchTemplateSpecificationRequest) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *FleetLaunchTemplateSpecificationRequest) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "FleetLaunchTemplateSpecificationRequest"} + if s.LaunchTemplateName != nil && len(*s.LaunchTemplateName) < 3 { + invalidParams.Add(request.NewErrParamMinLen("LaunchTemplateName", 3)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetLaunchTemplateId sets the LaunchTemplateId field's value. +func (s *FleetLaunchTemplateSpecificationRequest) SetLaunchTemplateId(v string) *FleetLaunchTemplateSpecificationRequest { + s.LaunchTemplateId = &v + return s +} + +// SetLaunchTemplateName sets the LaunchTemplateName field's value. +func (s *FleetLaunchTemplateSpecificationRequest) SetLaunchTemplateName(v string) *FleetLaunchTemplateSpecificationRequest { + s.LaunchTemplateName = &v + return s +} + +// SetVersion sets the Version field's value. +func (s *FleetLaunchTemplateSpecificationRequest) SetVersion(v string) *FleetLaunchTemplateSpecificationRequest { + s.Version = &v + return s +} + // Describes a flow log. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/FlowLog type FlowLog struct { _ struct{} `type:"structure"` @@ -40385,7 +46650,6 @@ func (s *FlowLog) SetTrafficType(v string) *FlowLog { } // Describes an Amazon FPGA image (AFI). -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/FpgaImage type FpgaImage struct { _ struct{} `type:"structure"` @@ -40527,7 +46791,6 @@ func (s *FpgaImage) SetUpdateTime(v time.Time) *FpgaImage { } // Describes an Amazon FPGA image (AFI) attribute. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/FpgaImageAttribute type FpgaImageAttribute struct { _ struct{} `type:"structure"` @@ -40589,7 +46852,6 @@ func (s *FpgaImageAttribute) SetProductCodes(v []*ProductCode) *FpgaImageAttribu // Describes the state of the bitstream generation process for an Amazon FPGA // image (AFI). -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/FpgaImageState type FpgaImageState struct { _ struct{} `type:"structure"` @@ -40631,7 +46893,6 @@ func (s *FpgaImageState) SetMessage(v string) *FpgaImageState { } // Contains the parameters for GetConsoleOutput. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetConsoleOutputRequest type GetConsoleOutputInput struct { _ struct{} `type:"structure"` @@ -40645,6 +46906,11 @@ type GetConsoleOutputInput struct { // // InstanceId is a required field InstanceId *string `type:"string" required:"true"` + + // When enabled, retrieves the latest console output for the instance. + // + // Default: disabled (false) + Latest *bool `type:"boolean"` } // String returns the string representation @@ -40682,19 +46948,24 @@ func (s *GetConsoleOutputInput) SetInstanceId(v string) *GetConsoleOutputInput { return s } +// SetLatest sets the Latest field's value. +func (s *GetConsoleOutputInput) SetLatest(v bool) *GetConsoleOutputInput { + s.Latest = &v + return s +} + // Contains the output of GetConsoleOutput. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetConsoleOutputResult type GetConsoleOutputOutput struct { _ struct{} `type:"structure"` // The ID of the instance. InstanceId *string `locationName:"instanceId" type:"string"` - // The console output, Base64-encoded. If using a command line tool, the tool - // decodes the output for you. + // The console output, base64-encoded. If you are using a command line tool, + // the tool decodes the output for you. Output *string `locationName:"output" type:"string"` - // The time the output was last updated. + // The time at which the output was last updated. Timestamp *time.Time `locationName:"timestamp" type:"timestamp" timestampFormat:"iso8601"` } @@ -40727,7 +46998,6 @@ func (s *GetConsoleOutputOutput) SetTimestamp(v time.Time) *GetConsoleOutputOutp } // Contains the parameters for the request. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetConsoleScreenshotRequest type GetConsoleScreenshotInput struct { _ struct{} `type:"structure"` @@ -40789,7 +47059,6 @@ func (s *GetConsoleScreenshotInput) SetWakeUp(v bool) *GetConsoleScreenshotInput } // Contains the output of the request. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetConsoleScreenshotResult type GetConsoleScreenshotOutput struct { _ struct{} `type:"structure"` @@ -40822,7 +47091,6 @@ func (s *GetConsoleScreenshotOutput) SetInstanceId(v string) *GetConsoleScreensh return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetHostReservationPurchasePreviewRequest type GetHostReservationPurchasePreviewInput struct { _ struct{} `type:"structure"` @@ -40876,7 +47144,6 @@ func (s *GetHostReservationPurchasePreviewInput) SetOfferingId(v string) *GetHos return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetHostReservationPurchasePreviewResult type GetHostReservationPurchasePreviewOutput struct { _ struct{} `type:"structure"` @@ -40929,8 +47196,80 @@ func (s *GetHostReservationPurchasePreviewOutput) SetTotalUpfrontPrice(v string) return s } +type GetLaunchTemplateDataInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the instance. + // + // InstanceId is a required field + InstanceId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s GetLaunchTemplateDataInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetLaunchTemplateDataInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetLaunchTemplateDataInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetLaunchTemplateDataInput"} + if s.InstanceId == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *GetLaunchTemplateDataInput) SetDryRun(v bool) *GetLaunchTemplateDataInput { + s.DryRun = &v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *GetLaunchTemplateDataInput) SetInstanceId(v string) *GetLaunchTemplateDataInput { + s.InstanceId = &v + return s +} + +type GetLaunchTemplateDataOutput struct { + _ struct{} `type:"structure"` + + // The instance data. + LaunchTemplateData *ResponseLaunchTemplateData `locationName:"launchTemplateData" type:"structure"` +} + +// String returns the string representation +func (s GetLaunchTemplateDataOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetLaunchTemplateDataOutput) GoString() string { + return s.String() +} + +// SetLaunchTemplateData sets the LaunchTemplateData field's value. +func (s *GetLaunchTemplateDataOutput) SetLaunchTemplateData(v *ResponseLaunchTemplateData) *GetLaunchTemplateDataOutput { + s.LaunchTemplateData = v + return s +} + // Contains the parameters for GetPasswordData. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetPasswordDataRequest type GetPasswordDataInput struct { _ struct{} `type:"structure"` @@ -40982,7 +47321,6 @@ func (s *GetPasswordDataInput) SetInstanceId(v string) *GetPasswordDataInput { } // Contains the output of GetPasswordData. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetPasswordDataResult type GetPasswordDataOutput struct { _ struct{} `type:"structure"` @@ -41026,7 +47364,6 @@ func (s *GetPasswordDataOutput) SetTimestamp(v time.Time) *GetPasswordDataOutput } // Contains the parameters for GetReservedInstanceExchangeQuote. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetReservedInstancesExchangeQuoteRequest type GetReservedInstancesExchangeQuoteInput struct { _ struct{} `type:"structure"` @@ -41041,7 +47378,7 @@ type GetReservedInstancesExchangeQuoteInput struct { // ReservedInstanceIds is a required field ReservedInstanceIds []*string `locationName:"ReservedInstanceId" locationNameList:"ReservedInstanceId" type:"list" required:"true"` - // The configuration requirements of the Convertible Reserved Instances to exchange + // The configuration of the target Convertible Reserved Instance to exchange // for your current Convertible Reserved Instances. TargetConfigurations []*TargetConfigurationRequest `locationName:"TargetConfiguration" locationNameList:"TargetConfigurationRequest" type:"list"` } @@ -41098,7 +47435,6 @@ func (s *GetReservedInstancesExchangeQuoteInput) SetTargetConfigurations(v []*Ta } // Contains the output of GetReservedInstancesExchangeQuote. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetReservedInstancesExchangeQuoteResult type GetReservedInstancesExchangeQuoteOutput struct { _ struct{} `type:"structure"` @@ -41195,7 +47531,6 @@ func (s *GetReservedInstancesExchangeQuoteOutput) SetValidationFailureReason(v s } // Describes a security group. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GroupIdentifier type GroupIdentifier struct { _ struct{} `type:"structure"` @@ -41228,8 +47563,7 @@ func (s *GroupIdentifier) SetGroupName(v string) *GroupIdentifier { return s } -// Describes an event in the history of the Spot fleet request. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/HistoryRecord +// Describes an event in the history of the Spot Fleet request. type HistoryRecord struct { _ struct{} `type:"structure"` @@ -41240,12 +47574,14 @@ type HistoryRecord struct { // The event type. // - // * error - Indicates an error with the Spot fleet request. + // * error - An error with the Spot Fleet request. // - // * fleetRequestChange - Indicates a change in the status or configuration - // of the Spot fleet request. + // * fleetRequestChange - A change in the status or configuration of the + // Spot Fleet request. // - // * instanceChange - Indicates that an instance was launched or terminated. + // * instanceChange - An instance was launched or terminated. + // + // * Information - An informational event. // // EventType is a required field EventType *string `locationName:"eventType" type:"string" required:"true" enum:"EventType"` @@ -41284,11 +47620,55 @@ func (s *HistoryRecord) SetTimestamp(v time.Time) *HistoryRecord { return s } +// Describes an event in the history of the EC2 Fleet. +type HistoryRecordEntry struct { + _ struct{} `type:"structure"` + + // Information about the event. + EventInformation *EventInformation `locationName:"eventInformation" type:"structure"` + + // The event type. + EventType *string `locationName:"eventType" type:"string" enum:"FleetEventType"` + + // The date and time of the event, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). + Timestamp *time.Time `locationName:"timestamp" type:"timestamp" timestampFormat:"iso8601"` +} + +// String returns the string representation +func (s HistoryRecordEntry) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s HistoryRecordEntry) GoString() string { + return s.String() +} + +// SetEventInformation sets the EventInformation field's value. +func (s *HistoryRecordEntry) SetEventInformation(v *EventInformation) *HistoryRecordEntry { + s.EventInformation = v + return s +} + +// SetEventType sets the EventType field's value. +func (s *HistoryRecordEntry) SetEventType(v string) *HistoryRecordEntry { + s.EventType = &v + return s +} + +// SetTimestamp sets the Timestamp field's value. +func (s *HistoryRecordEntry) SetTimestamp(v time.Time) *HistoryRecordEntry { + s.Timestamp = &v + return s +} + // Describes the properties of the Dedicated Host. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/Host type Host struct { _ struct{} `type:"structure"` + // The time that the Dedicated Host was allocated. + AllocationTime *time.Time `locationName:"allocationTime" type:"timestamp" timestampFormat:"iso8601"` + // Whether auto-placement is on or off. AutoPlacement *string `locationName:"autoPlacement" type:"string" enum:"AutoPlacement"` @@ -41316,6 +47696,9 @@ type Host struct { // The IDs and instance type that are currently running on the Dedicated Host. Instances []*HostInstance `locationName:"instances" locationNameList:"item" type:"list"` + // The time that the Dedicated Host was released. + ReleaseTime *time.Time `locationName:"releaseTime" type:"timestamp" timestampFormat:"iso8601"` + // The Dedicated Host's state. State *string `locationName:"state" type:"string" enum:"AllocationState"` } @@ -41330,6 +47713,12 @@ func (s Host) GoString() string { return s.String() } +// SetAllocationTime sets the AllocationTime field's value. +func (s *Host) SetAllocationTime(v time.Time) *Host { + s.AllocationTime = &v + return s +} + // SetAutoPlacement sets the AutoPlacement field's value. func (s *Host) SetAutoPlacement(v string) *Host { s.AutoPlacement = &v @@ -41378,6 +47767,12 @@ func (s *Host) SetInstances(v []*HostInstance) *Host { return s } +// SetReleaseTime sets the ReleaseTime field's value. +func (s *Host) SetReleaseTime(v time.Time) *Host { + s.ReleaseTime = &v + return s +} + // SetState sets the State field's value. func (s *Host) SetState(v string) *Host { s.State = &v @@ -41385,7 +47780,6 @@ func (s *Host) SetState(v string) *Host { } // Describes an instance running on a Dedicated Host. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/HostInstance type HostInstance struct { _ struct{} `type:"structure"` @@ -41419,7 +47813,6 @@ func (s *HostInstance) SetInstanceType(v string) *HostInstance { } // Details about the Dedicated Host Reservation offering. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/HostOffering type HostOffering struct { _ struct{} `type:"structure"` @@ -41498,7 +47891,6 @@ func (s *HostOffering) SetUpfrontPrice(v string) *HostOffering { } // Describes properties of a Dedicated Host. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/HostProperties type HostProperties struct { _ struct{} `type:"structure"` @@ -41550,7 +47942,6 @@ func (s *HostProperties) SetTotalVCpus(v int64) *HostProperties { } // Details about the Dedicated Host Reservation and associated Dedicated Hosts. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/HostReservation type HostReservation struct { _ struct{} `type:"structure"` @@ -41688,7 +48079,6 @@ func (s *HostReservation) SetUpfrontPrice(v string) *HostReservation { } // Describes an IAM instance profile. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/IamInstanceProfile type IamInstanceProfile struct { _ struct{} `type:"structure"` @@ -41722,7 +48112,6 @@ func (s *IamInstanceProfile) SetId(v string) *IamInstanceProfile { } // Describes an association between an IAM instance profile and an instance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/IamInstanceProfileAssociation type IamInstanceProfileAssociation struct { _ struct{} `type:"structure"` @@ -41783,7 +48172,6 @@ func (s *IamInstanceProfileAssociation) SetTimestamp(v time.Time) *IamInstancePr } // Describes an IAM instance profile. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/IamInstanceProfileSpecification type IamInstanceProfileSpecification struct { _ struct{} `type:"structure"` @@ -41817,7 +48205,6 @@ func (s *IamInstanceProfileSpecification) SetName(v string) *IamInstanceProfileS } // Describes the ICMP type and code. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/IcmpTypeCode type IcmpTypeCode struct { _ struct{} `type:"structure"` @@ -41851,7 +48238,6 @@ func (s *IcmpTypeCode) SetType(v int64) *IcmpTypeCode { } // Describes the ID format for a resource. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/IdFormat type IdFormat struct { _ struct{} `type:"structure"` @@ -41896,7 +48282,6 @@ func (s *IdFormat) SetUseLongIds(v bool) *IdFormat { } // Describes an image. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/Image type Image struct { _ struct{} `type:"structure"` @@ -41956,7 +48341,7 @@ type Image struct { // images. RamdiskId *string `locationName:"ramdiskId" type:"string"` - // The device name of the root device (for example, /dev/sda1 or /dev/xvda). + // The device name of the root device volume (for example, /dev/sda1). RootDeviceName *string `locationName:"rootDeviceName" type:"string"` // The type of root device used by the AMI. The AMI can use an EBS volume or @@ -42136,7 +48521,6 @@ func (s *Image) SetVirtualizationType(v string) *Image { } // Describes the disk container object for an import image task. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImageDiskContainer type ImageDiskContainer struct { _ struct{} `type:"structure"` @@ -42148,7 +48532,7 @@ type ImageDiskContainer struct { // The format of the disk image being imported. // - // Valid values: RAW | VHD | VMDK | OVA + // Valid values: VHD | VMDK | OVA Format *string `type:"string"` // The ID of the EBS snapshot to be used for importing the snapshot. @@ -42209,7 +48593,6 @@ func (s *ImageDiskContainer) SetUserBucket(v *UserBucket) *ImageDiskContainer { } // Contains the parameters for ImportImage. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportImageRequest type ImportImageInput struct { _ struct{} `type:"structure"` @@ -42331,7 +48714,6 @@ func (s *ImportImageInput) SetRoleName(v string) *ImportImageInput { } // Contains the output for ImportImage. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportImageResult type ImportImageOutput struct { _ struct{} `type:"structure"` @@ -42446,7 +48828,6 @@ func (s *ImportImageOutput) SetStatusMessage(v string) *ImportImageOutput { } // Describes an import image task. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportImageTask type ImportImageTask struct { _ struct{} `type:"structure"` @@ -42565,7 +48946,6 @@ func (s *ImportImageTask) SetStatusMessage(v string) *ImportImageTask { } // Contains the parameters for ImportInstance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportInstanceRequest type ImportInstanceInput struct { _ struct{} `type:"structure"` @@ -42654,7 +49034,6 @@ func (s *ImportInstanceInput) SetPlatform(v string) *ImportInstanceInput { } // Describes the launch specification for VM import. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportInstanceLaunchSpecification type ImportInstanceLaunchSpecification struct { _ struct{} `type:"structure"` @@ -42675,7 +49054,7 @@ type ImportInstanceLaunchSpecification struct { InstanceInitiatedShutdownBehavior *string `locationName:"instanceInitiatedShutdownBehavior" type:"string" enum:"ShutdownBehavior"` // The instance type. For more information about the instance types that you - // can import, see Instance Types (http://docs.aws.amazon.com/vm-import/latest/userguide/vmimport-image-import.html#vmimport-instance-types) + // can import, see Instance Types (http://docs.aws.amazon.com/vm-import/latest/userguide/vmie_prereqs.html#vmimport-instance-types) // in the VM Import/Export User Guide. InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"` @@ -42691,9 +49070,7 @@ type ImportInstanceLaunchSpecification struct { // [EC2-VPC] The ID of the subnet in which to launch the instance. SubnetId *string `locationName:"subnetId" type:"string"` - // The user data to make available to the instance. If you are using an AWS - // SDK or command line tool, Base64-encoding is performed for you, and you can - // load the text from a file. Otherwise, you must provide Base64-encoded text. + // The Base64-encoded user data to make available to the instance. UserData *UserData `locationName:"userData" type:"structure"` } @@ -42774,7 +49151,6 @@ func (s *ImportInstanceLaunchSpecification) SetUserData(v *UserData) *ImportInst } // Contains the output for ImportInstance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportInstanceResult type ImportInstanceOutput struct { _ struct{} `type:"structure"` @@ -42799,7 +49175,6 @@ func (s *ImportInstanceOutput) SetConversionTask(v *ConversionTask) *ImportInsta } // Describes an import instance task. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportInstanceTaskDetails type ImportInstanceTaskDetails struct { _ struct{} `type:"structure"` @@ -42813,9 +49188,7 @@ type ImportInstanceTaskDetails struct { Platform *string `locationName:"platform" type:"string" enum:"PlatformValues"` // One or more volumes. - // - // Volumes is a required field - Volumes []*ImportInstanceVolumeDetailItem `locationName:"volumes" locationNameList:"item" type:"list" required:"true"` + Volumes []*ImportInstanceVolumeDetailItem `locationName:"volumes" locationNameList:"item" type:"list"` } // String returns the string representation @@ -42853,7 +49226,6 @@ func (s *ImportInstanceTaskDetails) SetVolumes(v []*ImportInstanceVolumeDetailIt } // Describes an import volume task. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportInstanceVolumeDetailItem type ImportInstanceVolumeDetailItem struct { _ struct{} `type:"structure"` @@ -42942,7 +49314,6 @@ func (s *ImportInstanceVolumeDetailItem) SetVolume(v *DiskImageVolumeDescription } // Contains the parameters for ImportKeyPair. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportKeyPairRequest type ImportKeyPairInput struct { _ struct{} `type:"structure"` @@ -43011,7 +49382,6 @@ func (s *ImportKeyPairInput) SetPublicKeyMaterial(v []byte) *ImportKeyPairInput } // Contains the output of ImportKeyPair. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportKeyPairResult type ImportKeyPairOutput struct { _ struct{} `type:"structure"` @@ -43045,7 +49415,6 @@ func (s *ImportKeyPairOutput) SetKeyName(v string) *ImportKeyPairOutput { } // Contains the parameters for ImportSnapshot. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportSnapshotRequest type ImportSnapshotInput struct { _ struct{} `type:"structure"` @@ -43118,7 +49487,6 @@ func (s *ImportSnapshotInput) SetRoleName(v string) *ImportSnapshotInput { } // Contains the output for ImportSnapshot. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportSnapshotResult type ImportSnapshotOutput struct { _ struct{} `type:"structure"` @@ -43161,7 +49529,6 @@ func (s *ImportSnapshotOutput) SetSnapshotTaskDetail(v *SnapshotTaskDetail) *Imp } // Describes an import snapshot task. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportSnapshotTask type ImportSnapshotTask struct { _ struct{} `type:"structure"` @@ -43204,7 +49571,6 @@ func (s *ImportSnapshotTask) SetSnapshotTaskDetail(v *SnapshotTaskDetail) *Impor } // Contains the parameters for ImportVolume. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportVolumeRequest type ImportVolumeInput struct { _ struct{} `type:"structure"` @@ -43303,7 +49669,6 @@ func (s *ImportVolumeInput) SetVolume(v *VolumeDetail) *ImportVolumeInput { } // Contains the output for ImportVolume. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportVolumeResult type ImportVolumeOutput struct { _ struct{} `type:"structure"` @@ -43328,32 +49693,23 @@ func (s *ImportVolumeOutput) SetConversionTask(v *ConversionTask) *ImportVolumeO } // Describes an import volume task. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportVolumeTaskDetails type ImportVolumeTaskDetails struct { _ struct{} `type:"structure"` // The Availability Zone where the resulting volume will reside. - // - // AvailabilityZone is a required field - AvailabilityZone *string `locationName:"availabilityZone" type:"string" required:"true"` + AvailabilityZone *string `locationName:"availabilityZone" type:"string"` // The number of bytes converted so far. - // - // BytesConverted is a required field - BytesConverted *int64 `locationName:"bytesConverted" type:"long" required:"true"` + BytesConverted *int64 `locationName:"bytesConverted" type:"long"` // The description you provided when starting the import volume task. Description *string `locationName:"description" type:"string"` // The image. - // - // Image is a required field - Image *DiskImageDescription `locationName:"image" type:"structure" required:"true"` + Image *DiskImageDescription `locationName:"image" type:"structure"` // The volume. - // - // Volume is a required field - Volume *DiskImageVolumeDescription `locationName:"volume" type:"structure" required:"true"` + Volume *DiskImageVolumeDescription `locationName:"volume" type:"structure"` } // String returns the string representation @@ -43397,7 +49753,6 @@ func (s *ImportVolumeTaskDetails) SetVolume(v *DiskImageVolumeDescription) *Impo } // Describes an instance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/Instance type Instance struct { _ struct{} `type:"structure"` @@ -43414,6 +49769,9 @@ type Instance struct { // The idempotency token you provided when you launched the instance, if applicable. ClientToken *string `locationName:"clientToken" type:"string"` + // The CPU options for the instance. + CpuOptions *CpuOptions `locationName:"cpuOptions" type:"structure"` + // Indicates whether the instance is optimized for Amazon EBS I/O. This optimization // provides dedicated throughput to Amazon EBS and an optimized configuration // stack to provide optimal I/O performance. This optimization isn't available @@ -43494,7 +49852,7 @@ type Instance struct { // The RAM disk associated with this instance, if applicable. RamdiskId *string `locationName:"ramdiskId" type:"string"` - // The root device name (for example, /dev/sda1 or /dev/xvda). + // The device name of the root device volume (for example, /dev/sda1). RootDeviceName *string `locationName:"rootDeviceName" type:"string"` // The root device type used by the AMI. The AMI can use an EBS volume or an @@ -43575,6 +49933,12 @@ func (s *Instance) SetClientToken(v string) *Instance { return s } +// SetCpuOptions sets the CpuOptions field's value. +func (s *Instance) SetCpuOptions(v *CpuOptions) *Instance { + s.CpuOptions = v + return s +} + // SetEbsOptimized sets the EbsOptimized field's value. func (s *Instance) SetEbsOptimized(v bool) *Instance { s.EbsOptimized = &v @@ -43786,11 +50150,10 @@ func (s *Instance) SetVpcId(v string) *Instance { } // Describes a block device mapping. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/InstanceBlockDeviceMapping type InstanceBlockDeviceMapping struct { _ struct{} `type:"structure"` - // The device name exposed to the instance (for example, /dev/sdh or xvdh). + // The device name (for example, /dev/sdh or xvdh). DeviceName *string `locationName:"deviceName" type:"string"` // Parameters used to automatically set up EBS volumes when the instance is @@ -43821,11 +50184,10 @@ func (s *InstanceBlockDeviceMapping) SetEbs(v *EbsInstanceBlockDevice) *Instance } // Describes a block device mapping entry. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/InstanceBlockDeviceMappingSpecification type InstanceBlockDeviceMappingSpecification struct { _ struct{} `type:"structure"` - // The device name exposed to the instance (for example, /dev/sdh or xvdh). + // The device name (for example, /dev/sdh or xvdh). DeviceName *string `locationName:"deviceName" type:"string"` // Parameters used to automatically set up EBS volumes when the instance is @@ -43874,7 +50236,6 @@ func (s *InstanceBlockDeviceMappingSpecification) SetVirtualName(v string) *Inst } // Information about the instance type that the Dedicated Host supports. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/InstanceCapacity type InstanceCapacity struct { _ struct{} `type:"structure"` @@ -43917,7 +50278,6 @@ func (s *InstanceCapacity) SetTotalCapacity(v int64) *InstanceCapacity { } // Describes a Reserved Instance listing state. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/InstanceCount type InstanceCount struct { _ struct{} `type:"structure"` @@ -43950,8 +50310,75 @@ func (s *InstanceCount) SetState(v string) *InstanceCount { return s } +// Describes the credit option for CPU usage of a T2 instance. +type InstanceCreditSpecification struct { + _ struct{} `type:"structure"` + + // The credit option for CPU usage of the instance. Valid values are standard + // and unlimited. + CpuCredits *string `locationName:"cpuCredits" type:"string"` + + // The ID of the instance. + InstanceId *string `locationName:"instanceId" type:"string"` +} + +// String returns the string representation +func (s InstanceCreditSpecification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InstanceCreditSpecification) GoString() string { + return s.String() +} + +// SetCpuCredits sets the CpuCredits field's value. +func (s *InstanceCreditSpecification) SetCpuCredits(v string) *InstanceCreditSpecification { + s.CpuCredits = &v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *InstanceCreditSpecification) SetInstanceId(v string) *InstanceCreditSpecification { + s.InstanceId = &v + return s +} + +// Describes the credit option for CPU usage of a T2 instance. +type InstanceCreditSpecificationRequest struct { + _ struct{} `type:"structure"` + + // The credit option for CPU usage of the instance. Valid values are standard + // and unlimited. + CpuCredits *string `type:"string"` + + // The ID of the instance. + InstanceId *string `type:"string"` +} + +// String returns the string representation +func (s InstanceCreditSpecificationRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InstanceCreditSpecificationRequest) GoString() string { + return s.String() +} + +// SetCpuCredits sets the CpuCredits field's value. +func (s *InstanceCreditSpecificationRequest) SetCpuCredits(v string) *InstanceCreditSpecificationRequest { + s.CpuCredits = &v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *InstanceCreditSpecificationRequest) SetInstanceId(v string) *InstanceCreditSpecificationRequest { + s.InstanceId = &v + return s +} + // Describes an instance to export. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/InstanceExportDetails type InstanceExportDetails struct { _ struct{} `type:"structure"` @@ -43985,7 +50412,6 @@ func (s *InstanceExportDetails) SetTargetEnvironment(v string) *InstanceExportDe } // Describes an IPv6 address. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/InstanceIpv6Address type InstanceIpv6Address struct { _ struct{} `type:"structure"` @@ -44009,8 +50435,64 @@ func (s *InstanceIpv6Address) SetIpv6Address(v string) *InstanceIpv6Address { return s } +// Describes an IPv6 address. +type InstanceIpv6AddressRequest struct { + _ struct{} `type:"structure"` + + // The IPv6 address. + Ipv6Address *string `type:"string"` +} + +// String returns the string representation +func (s InstanceIpv6AddressRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InstanceIpv6AddressRequest) GoString() string { + return s.String() +} + +// SetIpv6Address sets the Ipv6Address field's value. +func (s *InstanceIpv6AddressRequest) SetIpv6Address(v string) *InstanceIpv6AddressRequest { + s.Ipv6Address = &v + return s +} + +// Describes the market (purchasing) option for the instances. +type InstanceMarketOptionsRequest struct { + _ struct{} `type:"structure"` + + // The market type. + MarketType *string `type:"string" enum:"MarketType"` + + // The options for Spot Instances. + SpotOptions *SpotMarketOptions `type:"structure"` +} + +// String returns the string representation +func (s InstanceMarketOptionsRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InstanceMarketOptionsRequest) GoString() string { + return s.String() +} + +// SetMarketType sets the MarketType field's value. +func (s *InstanceMarketOptionsRequest) SetMarketType(v string) *InstanceMarketOptionsRequest { + s.MarketType = &v + return s +} + +// SetSpotOptions sets the SpotOptions field's value. +func (s *InstanceMarketOptionsRequest) SetSpotOptions(v *SpotMarketOptions) *InstanceMarketOptionsRequest { + s.SpotOptions = v + return s +} + // Describes the monitoring of an instance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/InstanceMonitoring type InstanceMonitoring struct { _ struct{} `type:"structure"` @@ -44044,7 +50526,6 @@ func (s *InstanceMonitoring) SetMonitoring(v *Monitoring) *InstanceMonitoring { } // Describes a network interface. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/InstanceNetworkInterface type InstanceNetworkInterface struct { _ struct{} `type:"structure"` @@ -44196,7 +50677,6 @@ func (s *InstanceNetworkInterface) SetVpcId(v string) *InstanceNetworkInterface } // Describes association information for an Elastic IP address (IPv4). -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/InstanceNetworkInterfaceAssociation type InstanceNetworkInterfaceAssociation struct { _ struct{} `type:"structure"` @@ -44239,7 +50719,6 @@ func (s *InstanceNetworkInterfaceAssociation) SetPublicIp(v string) *InstanceNet } // Describes a network interface attachment. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/InstanceNetworkInterfaceAttachment type InstanceNetworkInterfaceAttachment struct { _ struct{} `type:"structure"` @@ -44300,7 +50779,6 @@ func (s *InstanceNetworkInterfaceAttachment) SetStatus(v string) *InstanceNetwor } // Describes a network interface. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/InstanceNetworkInterfaceSpecification type InstanceNetworkInterfaceSpecification struct { _ struct{} `type:"structure"` @@ -44470,7 +50948,6 @@ func (s *InstanceNetworkInterfaceSpecification) SetSubnetId(v string) *InstanceN } // Describes a private IPv4 address. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/InstancePrivateIpAddress type InstancePrivateIpAddress struct { _ struct{} `type:"structure"` @@ -44523,7 +51000,6 @@ func (s *InstancePrivateIpAddress) SetPrivateIpAddress(v string) *InstancePrivat } // Describes the current state of an instance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/InstanceState type InstanceState struct { _ struct{} `type:"structure"` @@ -44570,7 +51046,6 @@ func (s *InstanceState) SetName(v string) *InstanceState { } // Describes an instance state change. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/InstanceStateChange type InstanceStateChange struct { _ struct{} `type:"structure"` @@ -44613,7 +51088,6 @@ func (s *InstanceStateChange) SetPreviousState(v *InstanceState) *InstanceStateC } // Describes the status of an instance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/InstanceStatus type InstanceStatus struct { _ struct{} `type:"structure"` @@ -44687,7 +51161,6 @@ func (s *InstanceStatus) SetSystemStatus(v *InstanceStatusSummary) *InstanceStat } // Describes the instance status. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/InstanceStatusDetails type InstanceStatusDetails struct { _ struct{} `type:"structure"` @@ -44731,7 +51204,6 @@ func (s *InstanceStatusDetails) SetStatus(v string) *InstanceStatusDetails { } // Describes a scheduled event for an instance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/InstanceStatusEvent type InstanceStatusEvent struct { _ struct{} `type:"structure"` @@ -44787,7 +51259,6 @@ func (s *InstanceStatusEvent) SetNotBefore(v time.Time) *InstanceStatusEvent { } // Describes the status of an instance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/InstanceStatusSummary type InstanceStatusSummary struct { _ struct{} `type:"structure"` @@ -44821,7 +51292,6 @@ func (s *InstanceStatusSummary) SetStatus(v string) *InstanceStatusSummary { } // Describes an Internet gateway. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/InternetGateway type InternetGateway struct { _ struct{} `type:"structure"` @@ -44865,11 +51335,11 @@ func (s *InternetGateway) SetTags(v []*Tag) *InternetGateway { // Describes the attachment of a VPC to an Internet gateway or an egress-only // Internet gateway. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/InternetGatewayAttachment type InternetGatewayAttachment struct { _ struct{} `type:"structure"` - // The current state of the attachment. + // The current state of the attachment. For an Internet gateway, the state is + // available when attached to a VPC; otherwise, this value is not returned. State *string `locationName:"state" type:"string" enum:"AttachmentStatus"` // The ID of the VPC. @@ -44898,8 +51368,7 @@ func (s *InternetGatewayAttachment) SetVpcId(v string) *InternetGatewayAttachmen return s } -// Describes a security group rule. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/IpPermission +// Describes a set of permissions for a security group rule. type IpPermission struct { _ struct{} `type:"structure"` @@ -44924,10 +51393,11 @@ type IpPermission struct { // [EC2-VPC only] One or more IPv6 ranges. Ipv6Ranges []*Ipv6Range `locationName:"ipv6Ranges" locationNameList:"item" type:"list"` - // (Valid for AuthorizeSecurityGroupEgress, RevokeSecurityGroupEgress and DescribeSecurityGroups - // only) One or more prefix list IDs for an AWS service. In an AuthorizeSecurityGroupEgress - // request, this is the AWS service that you want to access through a VPC endpoint - // from instances associated with the security group. + // (EC2-VPC only; valid for AuthorizeSecurityGroupEgress, RevokeSecurityGroupEgress + // and DescribeSecurityGroups only) One or more prefix list IDs for an AWS service. + // In an AuthorizeSecurityGroupEgress request, this is the AWS service that + // you want to access through a VPC endpoint from instances associated with + // the security group. PrefixListIds []*PrefixListId `locationName:"prefixListIds" locationNameList:"item" type:"list"` // The end of port range for the TCP and UDP protocols, or an ICMP/ICMPv6 code. @@ -44992,12 +51462,11 @@ func (s *IpPermission) SetUserIdGroupPairs(v []*UserIdGroupPair) *IpPermission { } // Describes an IPv4 range. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/IpRange type IpRange struct { _ struct{} `type:"structure"` // The IPv4 CIDR range. You can either specify a CIDR range or a source security - // group, not both. To specify a single IPv4 address, use the /32 prefix. + // group, not both. To specify a single IPv4 address, use the /32 prefix length. CidrIp *string `locationName:"cidrIp" type:"string"` // A description for the security group rule that references this IPv4 address @@ -45031,7 +51500,6 @@ func (s *IpRange) SetDescription(v string) *IpRange { } // Describes an IPv6 CIDR block. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/Ipv6CidrBlock type Ipv6CidrBlock struct { _ struct{} `type:"structure"` @@ -45056,12 +51524,11 @@ func (s *Ipv6CidrBlock) SetIpv6CidrBlock(v string) *Ipv6CidrBlock { } // [EC2-VPC only] Describes an IPv6 range. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/Ipv6Range type Ipv6Range struct { _ struct{} `type:"structure"` // The IPv6 CIDR range. You can either specify a CIDR range or a source security - // group, not both. To specify a single IPv6 address, use the /128 prefix. + // group, not both. To specify a single IPv6 address, use the /128 prefix length. CidrIpv6 *string `locationName:"cidrIpv6" type:"string"` // A description for the security group rule that references this IPv6 address @@ -45095,7 +51562,6 @@ func (s *Ipv6Range) SetDescription(v string) *Ipv6Range { } // Describes a key pair. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/KeyPairInfo type KeyPairInfo struct { _ struct{} `type:"structure"` @@ -45132,7 +51598,6 @@ func (s *KeyPairInfo) SetKeyName(v string) *KeyPairInfo { } // Describes a launch permission. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/LaunchPermission type LaunchPermission struct { _ struct{} `type:"structure"` @@ -45166,7 +51631,6 @@ func (s *LaunchPermission) SetUserId(v string) *LaunchPermission { } // Describes a launch permission modification. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/LaunchPermissionModifications type LaunchPermissionModifications struct { _ struct{} `type:"structure"` @@ -45201,7 +51665,6 @@ func (s *LaunchPermissionModifications) SetRemove(v []*LaunchPermission) *Launch } // Describes the launch specification for an instance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/LaunchSpecification type LaunchSpecification struct { _ struct{} `type:"structure"` @@ -45209,9 +51672,6 @@ type LaunchSpecification struct { AddressingType *string `locationName:"addressingType" type:"string"` // One or more block device mapping entries. - // - // Although you can specify encrypted EBS volumes in this block device mapping - // for your Spot Instances, these volumes are not encrypted. BlockDeviceMappings []*BlockDeviceMapping `locationName:"blockDeviceMapping" locationNameList:"item" type:"list"` // Indicates whether the instance is optimized for EBS I/O. This optimization @@ -45259,9 +51719,7 @@ type LaunchSpecification struct { // The ID of the subnet in which to launch the instance. SubnetId *string `locationName:"subnetId" type:"string"` - // The user data to make available to the instances. If you are using an AWS - // SDK or command line tool, Base64-encoding is performed for you, and you can - // load the text from a file. Otherwise, you must provide Base64-encoded text. + // The Base64-encoded user data for the instance. UserData *string `locationName:"userData" type:"string"` } @@ -45365,8 +51823,1449 @@ func (s *LaunchSpecification) SetUserData(v string) *LaunchSpecification { return s } +// Describes a launch template. +type LaunchTemplate struct { + _ struct{} `type:"structure"` + + // The time launch template was created. + CreateTime *time.Time `locationName:"createTime" type:"timestamp" timestampFormat:"iso8601"` + + // The principal that created the launch template. + CreatedBy *string `locationName:"createdBy" type:"string"` + + // The version number of the default version of the launch template. + DefaultVersionNumber *int64 `locationName:"defaultVersionNumber" type:"long"` + + // The version number of the latest version of the launch template. + LatestVersionNumber *int64 `locationName:"latestVersionNumber" type:"long"` + + // The ID of the launch template. + LaunchTemplateId *string `locationName:"launchTemplateId" type:"string"` + + // The name of the launch template. + LaunchTemplateName *string `locationName:"launchTemplateName" min:"3" type:"string"` + + // The tags for the launch template. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s LaunchTemplate) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplate) GoString() string { + return s.String() +} + +// SetCreateTime sets the CreateTime field's value. +func (s *LaunchTemplate) SetCreateTime(v time.Time) *LaunchTemplate { + s.CreateTime = &v + return s +} + +// SetCreatedBy sets the CreatedBy field's value. +func (s *LaunchTemplate) SetCreatedBy(v string) *LaunchTemplate { + s.CreatedBy = &v + return s +} + +// SetDefaultVersionNumber sets the DefaultVersionNumber field's value. +func (s *LaunchTemplate) SetDefaultVersionNumber(v int64) *LaunchTemplate { + s.DefaultVersionNumber = &v + return s +} + +// SetLatestVersionNumber sets the LatestVersionNumber field's value. +func (s *LaunchTemplate) SetLatestVersionNumber(v int64) *LaunchTemplate { + s.LatestVersionNumber = &v + return s +} + +// SetLaunchTemplateId sets the LaunchTemplateId field's value. +func (s *LaunchTemplate) SetLaunchTemplateId(v string) *LaunchTemplate { + s.LaunchTemplateId = &v + return s +} + +// SetLaunchTemplateName sets the LaunchTemplateName field's value. +func (s *LaunchTemplate) SetLaunchTemplateName(v string) *LaunchTemplate { + s.LaunchTemplateName = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *LaunchTemplate) SetTags(v []*Tag) *LaunchTemplate { + s.Tags = v + return s +} + +// Describes a block device mapping. +type LaunchTemplateBlockDeviceMapping struct { + _ struct{} `type:"structure"` + + // The device name. + DeviceName *string `locationName:"deviceName" type:"string"` + + // Information about the block device for an EBS volume. + Ebs *LaunchTemplateEbsBlockDevice `locationName:"ebs" type:"structure"` + + // Suppresses the specified device included in the block device mapping of the + // AMI. + NoDevice *string `locationName:"noDevice" type:"string"` + + // The virtual device name (ephemeralN). + VirtualName *string `locationName:"virtualName" type:"string"` +} + +// String returns the string representation +func (s LaunchTemplateBlockDeviceMapping) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateBlockDeviceMapping) GoString() string { + return s.String() +} + +// SetDeviceName sets the DeviceName field's value. +func (s *LaunchTemplateBlockDeviceMapping) SetDeviceName(v string) *LaunchTemplateBlockDeviceMapping { + s.DeviceName = &v + return s +} + +// SetEbs sets the Ebs field's value. +func (s *LaunchTemplateBlockDeviceMapping) SetEbs(v *LaunchTemplateEbsBlockDevice) *LaunchTemplateBlockDeviceMapping { + s.Ebs = v + return s +} + +// SetNoDevice sets the NoDevice field's value. +func (s *LaunchTemplateBlockDeviceMapping) SetNoDevice(v string) *LaunchTemplateBlockDeviceMapping { + s.NoDevice = &v + return s +} + +// SetVirtualName sets the VirtualName field's value. +func (s *LaunchTemplateBlockDeviceMapping) SetVirtualName(v string) *LaunchTemplateBlockDeviceMapping { + s.VirtualName = &v + return s +} + +// Describes a block device mapping. +type LaunchTemplateBlockDeviceMappingRequest struct { + _ struct{} `type:"structure"` + + // The device name (for example, /dev/sdh or xvdh). + DeviceName *string `type:"string"` + + // Parameters used to automatically set up EBS volumes when the instance is + // launched. + Ebs *LaunchTemplateEbsBlockDeviceRequest `type:"structure"` + + // Suppresses the specified device included in the block device mapping of the + // AMI. + NoDevice *string `type:"string"` + + // The virtual device name (ephemeralN). Instance store volumes are numbered + // starting from 0. An instance type with 2 available instance store volumes + // can specify mappings for ephemeral0 and ephemeral1. The number of available + // instance store volumes depends on the instance type. After you connect to + // the instance, you must mount the volume. + VirtualName *string `type:"string"` +} + +// String returns the string representation +func (s LaunchTemplateBlockDeviceMappingRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateBlockDeviceMappingRequest) GoString() string { + return s.String() +} + +// SetDeviceName sets the DeviceName field's value. +func (s *LaunchTemplateBlockDeviceMappingRequest) SetDeviceName(v string) *LaunchTemplateBlockDeviceMappingRequest { + s.DeviceName = &v + return s +} + +// SetEbs sets the Ebs field's value. +func (s *LaunchTemplateBlockDeviceMappingRequest) SetEbs(v *LaunchTemplateEbsBlockDeviceRequest) *LaunchTemplateBlockDeviceMappingRequest { + s.Ebs = v + return s +} + +// SetNoDevice sets the NoDevice field's value. +func (s *LaunchTemplateBlockDeviceMappingRequest) SetNoDevice(v string) *LaunchTemplateBlockDeviceMappingRequest { + s.NoDevice = &v + return s +} + +// SetVirtualName sets the VirtualName field's value. +func (s *LaunchTemplateBlockDeviceMappingRequest) SetVirtualName(v string) *LaunchTemplateBlockDeviceMappingRequest { + s.VirtualName = &v + return s +} + +// Describes a launch template and overrides. +type LaunchTemplateConfig struct { + _ struct{} `type:"structure"` + + // The launch template. + LaunchTemplateSpecification *FleetLaunchTemplateSpecification `locationName:"launchTemplateSpecification" type:"structure"` + + // Any parameters that you specify override the same parameters in the launch + // template. + Overrides []*LaunchTemplateOverrides `locationName:"overrides" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s LaunchTemplateConfig) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateConfig) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *LaunchTemplateConfig) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "LaunchTemplateConfig"} + if s.LaunchTemplateSpecification != nil { + if err := s.LaunchTemplateSpecification.Validate(); err != nil { + invalidParams.AddNested("LaunchTemplateSpecification", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetLaunchTemplateSpecification sets the LaunchTemplateSpecification field's value. +func (s *LaunchTemplateConfig) SetLaunchTemplateSpecification(v *FleetLaunchTemplateSpecification) *LaunchTemplateConfig { + s.LaunchTemplateSpecification = v + return s +} + +// SetOverrides sets the Overrides field's value. +func (s *LaunchTemplateConfig) SetOverrides(v []*LaunchTemplateOverrides) *LaunchTemplateConfig { + s.Overrides = v + return s +} + +// Describes a block device for an EBS volume. +type LaunchTemplateEbsBlockDevice struct { + _ struct{} `type:"structure"` + + // Indicates whether the EBS volume is deleted on instance termination. + DeleteOnTermination *bool `locationName:"deleteOnTermination" type:"boolean"` + + // Indicates whether the EBS volume is encrypted. + Encrypted *bool `locationName:"encrypted" type:"boolean"` + + // The number of I/O operations per second (IOPS) that the volume supports. + Iops *int64 `locationName:"iops" type:"integer"` + + // The ARN of the AWS Key Management Service (AWS KMS) CMK used for encryption. + KmsKeyId *string `locationName:"kmsKeyId" type:"string"` + + // The ID of the snapshot. + SnapshotId *string `locationName:"snapshotId" type:"string"` + + // The size of the volume, in GiB. + VolumeSize *int64 `locationName:"volumeSize" type:"integer"` + + // The volume type. + VolumeType *string `locationName:"volumeType" type:"string" enum:"VolumeType"` +} + +// String returns the string representation +func (s LaunchTemplateEbsBlockDevice) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateEbsBlockDevice) GoString() string { + return s.String() +} + +// SetDeleteOnTermination sets the DeleteOnTermination field's value. +func (s *LaunchTemplateEbsBlockDevice) SetDeleteOnTermination(v bool) *LaunchTemplateEbsBlockDevice { + s.DeleteOnTermination = &v + return s +} + +// SetEncrypted sets the Encrypted field's value. +func (s *LaunchTemplateEbsBlockDevice) SetEncrypted(v bool) *LaunchTemplateEbsBlockDevice { + s.Encrypted = &v + return s +} + +// SetIops sets the Iops field's value. +func (s *LaunchTemplateEbsBlockDevice) SetIops(v int64) *LaunchTemplateEbsBlockDevice { + s.Iops = &v + return s +} + +// SetKmsKeyId sets the KmsKeyId field's value. +func (s *LaunchTemplateEbsBlockDevice) SetKmsKeyId(v string) *LaunchTemplateEbsBlockDevice { + s.KmsKeyId = &v + return s +} + +// SetSnapshotId sets the SnapshotId field's value. +func (s *LaunchTemplateEbsBlockDevice) SetSnapshotId(v string) *LaunchTemplateEbsBlockDevice { + s.SnapshotId = &v + return s +} + +// SetVolumeSize sets the VolumeSize field's value. +func (s *LaunchTemplateEbsBlockDevice) SetVolumeSize(v int64) *LaunchTemplateEbsBlockDevice { + s.VolumeSize = &v + return s +} + +// SetVolumeType sets the VolumeType field's value. +func (s *LaunchTemplateEbsBlockDevice) SetVolumeType(v string) *LaunchTemplateEbsBlockDevice { + s.VolumeType = &v + return s +} + +// The parameters for a block device for an EBS volume. +type LaunchTemplateEbsBlockDeviceRequest struct { + _ struct{} `type:"structure"` + + // Indicates whether the EBS volume is deleted on instance termination. + DeleteOnTermination *bool `type:"boolean"` + + // Indicates whether the EBS volume is encrypted. Encrypted volumes can only + // be attached to instances that support Amazon EBS encryption. If you are creating + // a volume from a snapshot, you can't specify an encryption value. + Encrypted *bool `type:"boolean"` + + // The number of I/O operations per second (IOPS) that the volume supports. + // For io1, this represents the number of IOPS that are provisioned for the + // volume. For gp2, this represents the baseline performance of the volume and + // the rate at which the volume accumulates I/O credits for bursting. For more + // information about General Purpose SSD baseline performance, I/O credits, + // and bursting, see Amazon EBS Volume Types in the Amazon Elastic Compute Cloud + // User Guide. + // + // Condition: This parameter is required for requests to create io1 volumes; + // it is not used in requests to create gp2, st1, sc1, or standard volumes. + Iops *int64 `type:"integer"` + + // The ARN of the AWS Key Management Service (AWS KMS) CMK used for encryption. + KmsKeyId *string `type:"string"` + + // The ID of the snapshot. + SnapshotId *string `type:"string"` + + // The size of the volume, in GiB. + // + // Default: If you're creating the volume from a snapshot and don't specify + // a volume size, the default is the snapshot size. + VolumeSize *int64 `type:"integer"` + + // The volume type. + VolumeType *string `type:"string" enum:"VolumeType"` +} + +// String returns the string representation +func (s LaunchTemplateEbsBlockDeviceRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateEbsBlockDeviceRequest) GoString() string { + return s.String() +} + +// SetDeleteOnTermination sets the DeleteOnTermination field's value. +func (s *LaunchTemplateEbsBlockDeviceRequest) SetDeleteOnTermination(v bool) *LaunchTemplateEbsBlockDeviceRequest { + s.DeleteOnTermination = &v + return s +} + +// SetEncrypted sets the Encrypted field's value. +func (s *LaunchTemplateEbsBlockDeviceRequest) SetEncrypted(v bool) *LaunchTemplateEbsBlockDeviceRequest { + s.Encrypted = &v + return s +} + +// SetIops sets the Iops field's value. +func (s *LaunchTemplateEbsBlockDeviceRequest) SetIops(v int64) *LaunchTemplateEbsBlockDeviceRequest { + s.Iops = &v + return s +} + +// SetKmsKeyId sets the KmsKeyId field's value. +func (s *LaunchTemplateEbsBlockDeviceRequest) SetKmsKeyId(v string) *LaunchTemplateEbsBlockDeviceRequest { + s.KmsKeyId = &v + return s +} + +// SetSnapshotId sets the SnapshotId field's value. +func (s *LaunchTemplateEbsBlockDeviceRequest) SetSnapshotId(v string) *LaunchTemplateEbsBlockDeviceRequest { + s.SnapshotId = &v + return s +} + +// SetVolumeSize sets the VolumeSize field's value. +func (s *LaunchTemplateEbsBlockDeviceRequest) SetVolumeSize(v int64) *LaunchTemplateEbsBlockDeviceRequest { + s.VolumeSize = &v + return s +} + +// SetVolumeType sets the VolumeType field's value. +func (s *LaunchTemplateEbsBlockDeviceRequest) SetVolumeType(v string) *LaunchTemplateEbsBlockDeviceRequest { + s.VolumeType = &v + return s +} + +// Describes an IAM instance profile. +type LaunchTemplateIamInstanceProfileSpecification struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) of the instance profile. + Arn *string `locationName:"arn" type:"string"` + + // The name of the instance profile. + Name *string `locationName:"name" type:"string"` +} + +// String returns the string representation +func (s LaunchTemplateIamInstanceProfileSpecification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateIamInstanceProfileSpecification) GoString() string { + return s.String() +} + +// SetArn sets the Arn field's value. +func (s *LaunchTemplateIamInstanceProfileSpecification) SetArn(v string) *LaunchTemplateIamInstanceProfileSpecification { + s.Arn = &v + return s +} + +// SetName sets the Name field's value. +func (s *LaunchTemplateIamInstanceProfileSpecification) SetName(v string) *LaunchTemplateIamInstanceProfileSpecification { + s.Name = &v + return s +} + +// An IAM instance profile. +type LaunchTemplateIamInstanceProfileSpecificationRequest struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) of the instance profile. + Arn *string `type:"string"` + + // The name of the instance profile. + Name *string `type:"string"` +} + +// String returns the string representation +func (s LaunchTemplateIamInstanceProfileSpecificationRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateIamInstanceProfileSpecificationRequest) GoString() string { + return s.String() +} + +// SetArn sets the Arn field's value. +func (s *LaunchTemplateIamInstanceProfileSpecificationRequest) SetArn(v string) *LaunchTemplateIamInstanceProfileSpecificationRequest { + s.Arn = &v + return s +} + +// SetName sets the Name field's value. +func (s *LaunchTemplateIamInstanceProfileSpecificationRequest) SetName(v string) *LaunchTemplateIamInstanceProfileSpecificationRequest { + s.Name = &v + return s +} + +// The market (purchasing) option for the instances. +type LaunchTemplateInstanceMarketOptions struct { + _ struct{} `type:"structure"` + + // The market type. + MarketType *string `locationName:"marketType" type:"string" enum:"MarketType"` + + // The options for Spot Instances. + SpotOptions *LaunchTemplateSpotMarketOptions `locationName:"spotOptions" type:"structure"` +} + +// String returns the string representation +func (s LaunchTemplateInstanceMarketOptions) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateInstanceMarketOptions) GoString() string { + return s.String() +} + +// SetMarketType sets the MarketType field's value. +func (s *LaunchTemplateInstanceMarketOptions) SetMarketType(v string) *LaunchTemplateInstanceMarketOptions { + s.MarketType = &v + return s +} + +// SetSpotOptions sets the SpotOptions field's value. +func (s *LaunchTemplateInstanceMarketOptions) SetSpotOptions(v *LaunchTemplateSpotMarketOptions) *LaunchTemplateInstanceMarketOptions { + s.SpotOptions = v + return s +} + +// The market (purchasing) option for the instances. +type LaunchTemplateInstanceMarketOptionsRequest struct { + _ struct{} `type:"structure"` + + // The market type. + MarketType *string `type:"string" enum:"MarketType"` + + // The options for Spot Instances. + SpotOptions *LaunchTemplateSpotMarketOptionsRequest `type:"structure"` +} + +// String returns the string representation +func (s LaunchTemplateInstanceMarketOptionsRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateInstanceMarketOptionsRequest) GoString() string { + return s.String() +} + +// SetMarketType sets the MarketType field's value. +func (s *LaunchTemplateInstanceMarketOptionsRequest) SetMarketType(v string) *LaunchTemplateInstanceMarketOptionsRequest { + s.MarketType = &v + return s +} + +// SetSpotOptions sets the SpotOptions field's value. +func (s *LaunchTemplateInstanceMarketOptionsRequest) SetSpotOptions(v *LaunchTemplateSpotMarketOptionsRequest) *LaunchTemplateInstanceMarketOptionsRequest { + s.SpotOptions = v + return s +} + +// Describes a network interface. +type LaunchTemplateInstanceNetworkInterfaceSpecification struct { + _ struct{} `type:"structure"` + + // Indicates whether to associate a public IPv4 address with eth0 for a new + // network interface. + AssociatePublicIpAddress *bool `locationName:"associatePublicIpAddress" type:"boolean"` + + // Indicates whether the network interface is deleted when the instance is terminated. + DeleteOnTermination *bool `locationName:"deleteOnTermination" type:"boolean"` + + // A description for the network interface. + Description *string `locationName:"description" type:"string"` + + // The device index for the network interface attachment. + DeviceIndex *int64 `locationName:"deviceIndex" type:"integer"` + + // The IDs of one or more security groups. + Groups []*string `locationName:"groupSet" locationNameList:"groupId" type:"list"` + + // The number of IPv6 addresses for the network interface. + Ipv6AddressCount *int64 `locationName:"ipv6AddressCount" type:"integer"` + + // The IPv6 addresses for the network interface. + Ipv6Addresses []*InstanceIpv6Address `locationName:"ipv6AddressesSet" locationNameList:"item" type:"list"` + + // The ID of the network interface. + NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string"` + + // The primary private IPv4 address of the network interface. + PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"` + + // One or more private IPv4 addresses. + PrivateIpAddresses []*PrivateIpAddressSpecification `locationName:"privateIpAddressesSet" locationNameList:"item" type:"list"` + + // The number of secondary private IPv4 addresses for the network interface. + SecondaryPrivateIpAddressCount *int64 `locationName:"secondaryPrivateIpAddressCount" type:"integer"` + + // The ID of the subnet for the network interface. + SubnetId *string `locationName:"subnetId" type:"string"` +} + +// String returns the string representation +func (s LaunchTemplateInstanceNetworkInterfaceSpecification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateInstanceNetworkInterfaceSpecification) GoString() string { + return s.String() +} + +// SetAssociatePublicIpAddress sets the AssociatePublicIpAddress field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecification) SetAssociatePublicIpAddress(v bool) *LaunchTemplateInstanceNetworkInterfaceSpecification { + s.AssociatePublicIpAddress = &v + return s +} + +// SetDeleteOnTermination sets the DeleteOnTermination field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecification) SetDeleteOnTermination(v bool) *LaunchTemplateInstanceNetworkInterfaceSpecification { + s.DeleteOnTermination = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecification) SetDescription(v string) *LaunchTemplateInstanceNetworkInterfaceSpecification { + s.Description = &v + return s +} + +// SetDeviceIndex sets the DeviceIndex field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecification) SetDeviceIndex(v int64) *LaunchTemplateInstanceNetworkInterfaceSpecification { + s.DeviceIndex = &v + return s +} + +// SetGroups sets the Groups field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecification) SetGroups(v []*string) *LaunchTemplateInstanceNetworkInterfaceSpecification { + s.Groups = v + return s +} + +// SetIpv6AddressCount sets the Ipv6AddressCount field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecification) SetIpv6AddressCount(v int64) *LaunchTemplateInstanceNetworkInterfaceSpecification { + s.Ipv6AddressCount = &v + return s +} + +// SetIpv6Addresses sets the Ipv6Addresses field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecification) SetIpv6Addresses(v []*InstanceIpv6Address) *LaunchTemplateInstanceNetworkInterfaceSpecification { + s.Ipv6Addresses = v + return s +} + +// SetNetworkInterfaceId sets the NetworkInterfaceId field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecification) SetNetworkInterfaceId(v string) *LaunchTemplateInstanceNetworkInterfaceSpecification { + s.NetworkInterfaceId = &v + return s +} + +// SetPrivateIpAddress sets the PrivateIpAddress field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecification) SetPrivateIpAddress(v string) *LaunchTemplateInstanceNetworkInterfaceSpecification { + s.PrivateIpAddress = &v + return s +} + +// SetPrivateIpAddresses sets the PrivateIpAddresses field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecification) SetPrivateIpAddresses(v []*PrivateIpAddressSpecification) *LaunchTemplateInstanceNetworkInterfaceSpecification { + s.PrivateIpAddresses = v + return s +} + +// SetSecondaryPrivateIpAddressCount sets the SecondaryPrivateIpAddressCount field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecification) SetSecondaryPrivateIpAddressCount(v int64) *LaunchTemplateInstanceNetworkInterfaceSpecification { + s.SecondaryPrivateIpAddressCount = &v + return s +} + +// SetSubnetId sets the SubnetId field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecification) SetSubnetId(v string) *LaunchTemplateInstanceNetworkInterfaceSpecification { + s.SubnetId = &v + return s +} + +// The parameters for a network interface. +type LaunchTemplateInstanceNetworkInterfaceSpecificationRequest struct { + _ struct{} `type:"structure"` + + // Associates a public IPv4 address with eth0 for a new network interface. + AssociatePublicIpAddress *bool `type:"boolean"` + + // Indicates whether the network interface is deleted when the instance is terminated. + DeleteOnTermination *bool `type:"boolean"` + + // A description for the network interface. + Description *string `type:"string"` + + // The device index for the network interface attachment. + DeviceIndex *int64 `type:"integer"` + + // The IDs of one or more security groups. + Groups []*string `locationName:"SecurityGroupId" locationNameList:"SecurityGroupId" type:"list"` + + // The number of IPv6 addresses to assign to a network interface. Amazon EC2 + // automatically selects the IPv6 addresses from the subnet range. You can't + // use this option if specifying specific IPv6 addresses. + Ipv6AddressCount *int64 `type:"integer"` + + // One or more specific IPv6 addresses from the IPv6 CIDR block range of your + // subnet. You can't use this option if you're specifying a number of IPv6 addresses. + Ipv6Addresses []*InstanceIpv6AddressRequest `locationNameList:"InstanceIpv6Address" type:"list"` + + // The ID of the network interface. + NetworkInterfaceId *string `type:"string"` + + // The primary private IPv4 address of the network interface. + PrivateIpAddress *string `type:"string"` + + // One or more private IPv4 addresses. + PrivateIpAddresses []*PrivateIpAddressSpecification `locationNameList:"item" type:"list"` + + // The number of secondary private IPv4 addresses to assign to a network interface. + SecondaryPrivateIpAddressCount *int64 `type:"integer"` + + // The ID of the subnet for the network interface. + SubnetId *string `type:"string"` +} + +// String returns the string representation +func (s LaunchTemplateInstanceNetworkInterfaceSpecificationRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateInstanceNetworkInterfaceSpecificationRequest) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "LaunchTemplateInstanceNetworkInterfaceSpecificationRequest"} + if s.PrivateIpAddresses != nil { + for i, v := range s.PrivateIpAddresses { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "PrivateIpAddresses", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAssociatePublicIpAddress sets the AssociatePublicIpAddress field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest) SetAssociatePublicIpAddress(v bool) *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest { + s.AssociatePublicIpAddress = &v + return s +} + +// SetDeleteOnTermination sets the DeleteOnTermination field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest) SetDeleteOnTermination(v bool) *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest { + s.DeleteOnTermination = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest) SetDescription(v string) *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest { + s.Description = &v + return s +} + +// SetDeviceIndex sets the DeviceIndex field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest) SetDeviceIndex(v int64) *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest { + s.DeviceIndex = &v + return s +} + +// SetGroups sets the Groups field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest) SetGroups(v []*string) *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest { + s.Groups = v + return s +} + +// SetIpv6AddressCount sets the Ipv6AddressCount field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest) SetIpv6AddressCount(v int64) *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest { + s.Ipv6AddressCount = &v + return s +} + +// SetIpv6Addresses sets the Ipv6Addresses field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest) SetIpv6Addresses(v []*InstanceIpv6AddressRequest) *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest { + s.Ipv6Addresses = v + return s +} + +// SetNetworkInterfaceId sets the NetworkInterfaceId field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest) SetNetworkInterfaceId(v string) *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest { + s.NetworkInterfaceId = &v + return s +} + +// SetPrivateIpAddress sets the PrivateIpAddress field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest) SetPrivateIpAddress(v string) *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest { + s.PrivateIpAddress = &v + return s +} + +// SetPrivateIpAddresses sets the PrivateIpAddresses field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest) SetPrivateIpAddresses(v []*PrivateIpAddressSpecification) *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest { + s.PrivateIpAddresses = v + return s +} + +// SetSecondaryPrivateIpAddressCount sets the SecondaryPrivateIpAddressCount field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest) SetSecondaryPrivateIpAddressCount(v int64) *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest { + s.SecondaryPrivateIpAddressCount = &v + return s +} + +// SetSubnetId sets the SubnetId field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest) SetSubnetId(v string) *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest { + s.SubnetId = &v + return s +} + +// Describes overrides for a launch template. +type LaunchTemplateOverrides struct { + _ struct{} `type:"structure"` + + // The Availability Zone in which to launch the instances. + AvailabilityZone *string `locationName:"availabilityZone" type:"string"` + + // The instance type. + InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"` + + // The maximum price per unit hour that you are willing to pay for a Spot Instance. + SpotPrice *string `locationName:"spotPrice" type:"string"` + + // The ID of the subnet in which to launch the instances. + SubnetId *string `locationName:"subnetId" type:"string"` + + // The number of units provided by the specified instance type. + WeightedCapacity *float64 `locationName:"weightedCapacity" type:"double"` +} + +// String returns the string representation +func (s LaunchTemplateOverrides) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateOverrides) GoString() string { + return s.String() +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *LaunchTemplateOverrides) SetAvailabilityZone(v string) *LaunchTemplateOverrides { + s.AvailabilityZone = &v + return s +} + +// SetInstanceType sets the InstanceType field's value. +func (s *LaunchTemplateOverrides) SetInstanceType(v string) *LaunchTemplateOverrides { + s.InstanceType = &v + return s +} + +// SetSpotPrice sets the SpotPrice field's value. +func (s *LaunchTemplateOverrides) SetSpotPrice(v string) *LaunchTemplateOverrides { + s.SpotPrice = &v + return s +} + +// SetSubnetId sets the SubnetId field's value. +func (s *LaunchTemplateOverrides) SetSubnetId(v string) *LaunchTemplateOverrides { + s.SubnetId = &v + return s +} + +// SetWeightedCapacity sets the WeightedCapacity field's value. +func (s *LaunchTemplateOverrides) SetWeightedCapacity(v float64) *LaunchTemplateOverrides { + s.WeightedCapacity = &v + return s +} + +// Describes the placement of an instance. +type LaunchTemplatePlacement struct { + _ struct{} `type:"structure"` + + // The affinity setting for the instance on the Dedicated Host. + Affinity *string `locationName:"affinity" type:"string"` + + // The Availability Zone of the instance. + AvailabilityZone *string `locationName:"availabilityZone" type:"string"` + + // The name of the placement group for the instance. + GroupName *string `locationName:"groupName" type:"string"` + + // The ID of the Dedicated Host for the instance. + HostId *string `locationName:"hostId" type:"string"` + + // Reserved for future use. + SpreadDomain *string `locationName:"spreadDomain" type:"string"` + + // The tenancy of the instance (if the instance is running in a VPC). An instance + // with a tenancy of dedicated runs on single-tenant hardware. + Tenancy *string `locationName:"tenancy" type:"string" enum:"Tenancy"` +} + +// String returns the string representation +func (s LaunchTemplatePlacement) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplatePlacement) GoString() string { + return s.String() +} + +// SetAffinity sets the Affinity field's value. +func (s *LaunchTemplatePlacement) SetAffinity(v string) *LaunchTemplatePlacement { + s.Affinity = &v + return s +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *LaunchTemplatePlacement) SetAvailabilityZone(v string) *LaunchTemplatePlacement { + s.AvailabilityZone = &v + return s +} + +// SetGroupName sets the GroupName field's value. +func (s *LaunchTemplatePlacement) SetGroupName(v string) *LaunchTemplatePlacement { + s.GroupName = &v + return s +} + +// SetHostId sets the HostId field's value. +func (s *LaunchTemplatePlacement) SetHostId(v string) *LaunchTemplatePlacement { + s.HostId = &v + return s +} + +// SetSpreadDomain sets the SpreadDomain field's value. +func (s *LaunchTemplatePlacement) SetSpreadDomain(v string) *LaunchTemplatePlacement { + s.SpreadDomain = &v + return s +} + +// SetTenancy sets the Tenancy field's value. +func (s *LaunchTemplatePlacement) SetTenancy(v string) *LaunchTemplatePlacement { + s.Tenancy = &v + return s +} + +// The placement for the instance. +type LaunchTemplatePlacementRequest struct { + _ struct{} `type:"structure"` + + // The affinity setting for an instance on a Dedicated Host. + Affinity *string `type:"string"` + + // The Availability Zone for the instance. + AvailabilityZone *string `type:"string"` + + // The name of the placement group for the instance. + GroupName *string `type:"string"` + + // The ID of the Dedicated Host for the instance. + HostId *string `type:"string"` + + // Reserved for future use. + SpreadDomain *string `type:"string"` + + // The tenancy of the instance (if the instance is running in a VPC). An instance + // with a tenancy of dedicated runs on single-tenant hardware. + Tenancy *string `type:"string" enum:"Tenancy"` +} + +// String returns the string representation +func (s LaunchTemplatePlacementRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplatePlacementRequest) GoString() string { + return s.String() +} + +// SetAffinity sets the Affinity field's value. +func (s *LaunchTemplatePlacementRequest) SetAffinity(v string) *LaunchTemplatePlacementRequest { + s.Affinity = &v + return s +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *LaunchTemplatePlacementRequest) SetAvailabilityZone(v string) *LaunchTemplatePlacementRequest { + s.AvailabilityZone = &v + return s +} + +// SetGroupName sets the GroupName field's value. +func (s *LaunchTemplatePlacementRequest) SetGroupName(v string) *LaunchTemplatePlacementRequest { + s.GroupName = &v + return s +} + +// SetHostId sets the HostId field's value. +func (s *LaunchTemplatePlacementRequest) SetHostId(v string) *LaunchTemplatePlacementRequest { + s.HostId = &v + return s +} + +// SetSpreadDomain sets the SpreadDomain field's value. +func (s *LaunchTemplatePlacementRequest) SetSpreadDomain(v string) *LaunchTemplatePlacementRequest { + s.SpreadDomain = &v + return s +} + +// SetTenancy sets the Tenancy field's value. +func (s *LaunchTemplatePlacementRequest) SetTenancy(v string) *LaunchTemplatePlacementRequest { + s.Tenancy = &v + return s +} + +// The launch template to use. You must specify either the launch template ID +// or launch template name in the request, but not both. +type LaunchTemplateSpecification struct { + _ struct{} `type:"structure"` + + // The ID of the launch template. + LaunchTemplateId *string `type:"string"` + + // The name of the launch template. + LaunchTemplateName *string `type:"string"` + + // The version number of the launch template. + // + // Default: The default version for the launch template. + Version *string `type:"string"` +} + +// String returns the string representation +func (s LaunchTemplateSpecification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateSpecification) GoString() string { + return s.String() +} + +// SetLaunchTemplateId sets the LaunchTemplateId field's value. +func (s *LaunchTemplateSpecification) SetLaunchTemplateId(v string) *LaunchTemplateSpecification { + s.LaunchTemplateId = &v + return s +} + +// SetLaunchTemplateName sets the LaunchTemplateName field's value. +func (s *LaunchTemplateSpecification) SetLaunchTemplateName(v string) *LaunchTemplateSpecification { + s.LaunchTemplateName = &v + return s +} + +// SetVersion sets the Version field's value. +func (s *LaunchTemplateSpecification) SetVersion(v string) *LaunchTemplateSpecification { + s.Version = &v + return s +} + +// The options for Spot Instances. +type LaunchTemplateSpotMarketOptions struct { + _ struct{} `type:"structure"` + + // The required duration for the Spot Instances (also known as Spot blocks), + // in minutes. This value must be a multiple of 60 (60, 120, 180, 240, 300, + // or 360). + BlockDurationMinutes *int64 `locationName:"blockDurationMinutes" type:"integer"` + + // The behavior when a Spot Instance is interrupted. + InstanceInterruptionBehavior *string `locationName:"instanceInterruptionBehavior" type:"string" enum:"InstanceInterruptionBehavior"` + + // The maximum hourly price you're willing to pay for the Spot Instances. + MaxPrice *string `locationName:"maxPrice" type:"string"` + + // The Spot Instance request type. + SpotInstanceType *string `locationName:"spotInstanceType" type:"string" enum:"SpotInstanceType"` + + // The end date of the request. For a one-time request, the request remains + // active until all instances launch, the request is canceled, or this date + // is reached. If the request is persistent, it remains active until it is canceled + // or this date and time is reached. + ValidUntil *time.Time `locationName:"validUntil" type:"timestamp" timestampFormat:"iso8601"` +} + +// String returns the string representation +func (s LaunchTemplateSpotMarketOptions) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateSpotMarketOptions) GoString() string { + return s.String() +} + +// SetBlockDurationMinutes sets the BlockDurationMinutes field's value. +func (s *LaunchTemplateSpotMarketOptions) SetBlockDurationMinutes(v int64) *LaunchTemplateSpotMarketOptions { + s.BlockDurationMinutes = &v + return s +} + +// SetInstanceInterruptionBehavior sets the InstanceInterruptionBehavior field's value. +func (s *LaunchTemplateSpotMarketOptions) SetInstanceInterruptionBehavior(v string) *LaunchTemplateSpotMarketOptions { + s.InstanceInterruptionBehavior = &v + return s +} + +// SetMaxPrice sets the MaxPrice field's value. +func (s *LaunchTemplateSpotMarketOptions) SetMaxPrice(v string) *LaunchTemplateSpotMarketOptions { + s.MaxPrice = &v + return s +} + +// SetSpotInstanceType sets the SpotInstanceType field's value. +func (s *LaunchTemplateSpotMarketOptions) SetSpotInstanceType(v string) *LaunchTemplateSpotMarketOptions { + s.SpotInstanceType = &v + return s +} + +// SetValidUntil sets the ValidUntil field's value. +func (s *LaunchTemplateSpotMarketOptions) SetValidUntil(v time.Time) *LaunchTemplateSpotMarketOptions { + s.ValidUntil = &v + return s +} + +// The options for Spot Instances. +type LaunchTemplateSpotMarketOptionsRequest struct { + _ struct{} `type:"structure"` + + // The required duration for the Spot Instances (also known as Spot blocks), + // in minutes. This value must be a multiple of 60 (60, 120, 180, 240, 300, + // or 360). + BlockDurationMinutes *int64 `type:"integer"` + + // The behavior when a Spot Instance is interrupted. The default is terminate. + InstanceInterruptionBehavior *string `type:"string" enum:"InstanceInterruptionBehavior"` + + // The maximum hourly price you're willing to pay for the Spot Instances. + MaxPrice *string `type:"string"` + + // The Spot Instance request type. + SpotInstanceType *string `type:"string" enum:"SpotInstanceType"` + + // The end date of the request. For a one-time request, the request remains + // active until all instances launch, the request is canceled, or this date + // is reached. If the request is persistent, it remains active until it is canceled + // or this date and time is reached. The default end date is 7 days from the + // current date. + ValidUntil *time.Time `type:"timestamp" timestampFormat:"iso8601"` +} + +// String returns the string representation +func (s LaunchTemplateSpotMarketOptionsRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateSpotMarketOptionsRequest) GoString() string { + return s.String() +} + +// SetBlockDurationMinutes sets the BlockDurationMinutes field's value. +func (s *LaunchTemplateSpotMarketOptionsRequest) SetBlockDurationMinutes(v int64) *LaunchTemplateSpotMarketOptionsRequest { + s.BlockDurationMinutes = &v + return s +} + +// SetInstanceInterruptionBehavior sets the InstanceInterruptionBehavior field's value. +func (s *LaunchTemplateSpotMarketOptionsRequest) SetInstanceInterruptionBehavior(v string) *LaunchTemplateSpotMarketOptionsRequest { + s.InstanceInterruptionBehavior = &v + return s +} + +// SetMaxPrice sets the MaxPrice field's value. +func (s *LaunchTemplateSpotMarketOptionsRequest) SetMaxPrice(v string) *LaunchTemplateSpotMarketOptionsRequest { + s.MaxPrice = &v + return s +} + +// SetSpotInstanceType sets the SpotInstanceType field's value. +func (s *LaunchTemplateSpotMarketOptionsRequest) SetSpotInstanceType(v string) *LaunchTemplateSpotMarketOptionsRequest { + s.SpotInstanceType = &v + return s +} + +// SetValidUntil sets the ValidUntil field's value. +func (s *LaunchTemplateSpotMarketOptionsRequest) SetValidUntil(v time.Time) *LaunchTemplateSpotMarketOptionsRequest { + s.ValidUntil = &v + return s +} + +// The tag specification for the launch template. +type LaunchTemplateTagSpecification struct { + _ struct{} `type:"structure"` + + // The type of resource. + ResourceType *string `locationName:"resourceType" type:"string" enum:"ResourceType"` + + // The tags for the resource. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s LaunchTemplateTagSpecification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateTagSpecification) GoString() string { + return s.String() +} + +// SetResourceType sets the ResourceType field's value. +func (s *LaunchTemplateTagSpecification) SetResourceType(v string) *LaunchTemplateTagSpecification { + s.ResourceType = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *LaunchTemplateTagSpecification) SetTags(v []*Tag) *LaunchTemplateTagSpecification { + s.Tags = v + return s +} + +// The tags specification for the launch template. +type LaunchTemplateTagSpecificationRequest struct { + _ struct{} `type:"structure"` + + // The type of resource to tag. Currently, the resource types that support tagging + // on creation are instance and volume. + ResourceType *string `type:"string" enum:"ResourceType"` + + // The tags to apply to the resource. + Tags []*Tag `locationName:"Tag" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s LaunchTemplateTagSpecificationRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateTagSpecificationRequest) GoString() string { + return s.String() +} + +// SetResourceType sets the ResourceType field's value. +func (s *LaunchTemplateTagSpecificationRequest) SetResourceType(v string) *LaunchTemplateTagSpecificationRequest { + s.ResourceType = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *LaunchTemplateTagSpecificationRequest) SetTags(v []*Tag) *LaunchTemplateTagSpecificationRequest { + s.Tags = v + return s +} + +// Describes a launch template version. +type LaunchTemplateVersion struct { + _ struct{} `type:"structure"` + + // The time the version was created. + CreateTime *time.Time `locationName:"createTime" type:"timestamp" timestampFormat:"iso8601"` + + // The principal that created the version. + CreatedBy *string `locationName:"createdBy" type:"string"` + + // Indicates whether the version is the default version. + DefaultVersion *bool `locationName:"defaultVersion" type:"boolean"` + + // Information about the launch template. + LaunchTemplateData *ResponseLaunchTemplateData `locationName:"launchTemplateData" type:"structure"` + + // The ID of the launch template. + LaunchTemplateId *string `locationName:"launchTemplateId" type:"string"` + + // The name of the launch template. + LaunchTemplateName *string `locationName:"launchTemplateName" min:"3" type:"string"` + + // The description for the version. + VersionDescription *string `locationName:"versionDescription" type:"string"` + + // The version number. + VersionNumber *int64 `locationName:"versionNumber" type:"long"` +} + +// String returns the string representation +func (s LaunchTemplateVersion) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateVersion) GoString() string { + return s.String() +} + +// SetCreateTime sets the CreateTime field's value. +func (s *LaunchTemplateVersion) SetCreateTime(v time.Time) *LaunchTemplateVersion { + s.CreateTime = &v + return s +} + +// SetCreatedBy sets the CreatedBy field's value. +func (s *LaunchTemplateVersion) SetCreatedBy(v string) *LaunchTemplateVersion { + s.CreatedBy = &v + return s +} + +// SetDefaultVersion sets the DefaultVersion field's value. +func (s *LaunchTemplateVersion) SetDefaultVersion(v bool) *LaunchTemplateVersion { + s.DefaultVersion = &v + return s +} + +// SetLaunchTemplateData sets the LaunchTemplateData field's value. +func (s *LaunchTemplateVersion) SetLaunchTemplateData(v *ResponseLaunchTemplateData) *LaunchTemplateVersion { + s.LaunchTemplateData = v + return s +} + +// SetLaunchTemplateId sets the LaunchTemplateId field's value. +func (s *LaunchTemplateVersion) SetLaunchTemplateId(v string) *LaunchTemplateVersion { + s.LaunchTemplateId = &v + return s +} + +// SetLaunchTemplateName sets the LaunchTemplateName field's value. +func (s *LaunchTemplateVersion) SetLaunchTemplateName(v string) *LaunchTemplateVersion { + s.LaunchTemplateName = &v + return s +} + +// SetVersionDescription sets the VersionDescription field's value. +func (s *LaunchTemplateVersion) SetVersionDescription(v string) *LaunchTemplateVersion { + s.VersionDescription = &v + return s +} + +// SetVersionNumber sets the VersionNumber field's value. +func (s *LaunchTemplateVersion) SetVersionNumber(v int64) *LaunchTemplateVersion { + s.VersionNumber = &v + return s +} + +// Describes the monitoring for the instance. +type LaunchTemplatesMonitoring struct { + _ struct{} `type:"structure"` + + // Indicates whether detailed monitoring is enabled. Otherwise, basic monitoring + // is enabled. + Enabled *bool `locationName:"enabled" type:"boolean"` +} + +// String returns the string representation +func (s LaunchTemplatesMonitoring) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplatesMonitoring) GoString() string { + return s.String() +} + +// SetEnabled sets the Enabled field's value. +func (s *LaunchTemplatesMonitoring) SetEnabled(v bool) *LaunchTemplatesMonitoring { + s.Enabled = &v + return s +} + +// Describes the monitoring for the instance. +type LaunchTemplatesMonitoringRequest struct { + _ struct{} `type:"structure"` + + // Specify true to enable detailed monitoring. Otherwise, basic monitoring is + // enabled. + Enabled *bool `type:"boolean"` +} + +// String returns the string representation +func (s LaunchTemplatesMonitoringRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplatesMonitoringRequest) GoString() string { + return s.String() +} + +// SetEnabled sets the Enabled field's value. +func (s *LaunchTemplatesMonitoringRequest) SetEnabled(v bool) *LaunchTemplatesMonitoringRequest { + s.Enabled = &v + return s +} + +// Describes the Classic Load Balancers and target groups to attach to a Spot +// Fleet request. +type LoadBalancersConfig struct { + _ struct{} `type:"structure"` + + // The Classic Load Balancers. + ClassicLoadBalancersConfig *ClassicLoadBalancersConfig `locationName:"classicLoadBalancersConfig" type:"structure"` + + // The target groups. + TargetGroupsConfig *TargetGroupsConfig `locationName:"targetGroupsConfig" type:"structure"` +} + +// String returns the string representation +func (s LoadBalancersConfig) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LoadBalancersConfig) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *LoadBalancersConfig) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "LoadBalancersConfig"} + if s.ClassicLoadBalancersConfig != nil { + if err := s.ClassicLoadBalancersConfig.Validate(); err != nil { + invalidParams.AddNested("ClassicLoadBalancersConfig", err.(request.ErrInvalidParams)) + } + } + if s.TargetGroupsConfig != nil { + if err := s.TargetGroupsConfig.Validate(); err != nil { + invalidParams.AddNested("TargetGroupsConfig", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClassicLoadBalancersConfig sets the ClassicLoadBalancersConfig field's value. +func (s *LoadBalancersConfig) SetClassicLoadBalancersConfig(v *ClassicLoadBalancersConfig) *LoadBalancersConfig { + s.ClassicLoadBalancersConfig = v + return s +} + +// SetTargetGroupsConfig sets the TargetGroupsConfig field's value. +func (s *LoadBalancersConfig) SetTargetGroupsConfig(v *TargetGroupsConfig) *LoadBalancersConfig { + s.TargetGroupsConfig = v + return s +} + // Describes a load permission. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/LoadPermission type LoadPermission struct { _ struct{} `type:"structure"` @@ -45400,7 +53299,6 @@ func (s *LoadPermission) SetUserId(v string) *LoadPermission { } // Describes modifications to the load permissions of an Amazon FPGA image (AFI). -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/LoadPermissionModifications type LoadPermissionModifications struct { _ struct{} `type:"structure"` @@ -45434,7 +53332,6 @@ func (s *LoadPermissionModifications) SetRemove(v []*LoadPermissionRequest) *Loa } // Describes a load permission. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/LoadPermissionRequest type LoadPermissionRequest struct { _ struct{} `type:"structure"` @@ -45467,7 +53364,109 @@ func (s *LoadPermissionRequest) SetUserId(v string) *LoadPermissionRequest { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyFpgaImageAttributeRequest +type ModifyFleetInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // Indicates whether running instances should be terminated if the total target + // capacity of the EC2 Fleet is decreased below the current size of the EC2 + // Fleet. + ExcessCapacityTerminationPolicy *string `type:"string" enum:"FleetExcessCapacityTerminationPolicy"` + + // The ID of the EC2 Fleet. + // + // FleetId is a required field + FleetId *string `type:"string" required:"true"` + + // The size of the EC2 Fleet. + // + // TargetCapacitySpecification is a required field + TargetCapacitySpecification *TargetCapacitySpecificationRequest `type:"structure" required:"true"` +} + +// String returns the string representation +func (s ModifyFleetInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyFleetInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyFleetInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyFleetInput"} + if s.FleetId == nil { + invalidParams.Add(request.NewErrParamRequired("FleetId")) + } + if s.TargetCapacitySpecification == nil { + invalidParams.Add(request.NewErrParamRequired("TargetCapacitySpecification")) + } + if s.TargetCapacitySpecification != nil { + if err := s.TargetCapacitySpecification.Validate(); err != nil { + invalidParams.AddNested("TargetCapacitySpecification", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *ModifyFleetInput) SetDryRun(v bool) *ModifyFleetInput { + s.DryRun = &v + return s +} + +// SetExcessCapacityTerminationPolicy sets the ExcessCapacityTerminationPolicy field's value. +func (s *ModifyFleetInput) SetExcessCapacityTerminationPolicy(v string) *ModifyFleetInput { + s.ExcessCapacityTerminationPolicy = &v + return s +} + +// SetFleetId sets the FleetId field's value. +func (s *ModifyFleetInput) SetFleetId(v string) *ModifyFleetInput { + s.FleetId = &v + return s +} + +// SetTargetCapacitySpecification sets the TargetCapacitySpecification field's value. +func (s *ModifyFleetInput) SetTargetCapacitySpecification(v *TargetCapacitySpecificationRequest) *ModifyFleetInput { + s.TargetCapacitySpecification = v + return s +} + +type ModifyFleetOutput struct { + _ struct{} `type:"structure"` + + // Is true if the request succeeds, and an error otherwise. + Return *bool `locationName:"return" type:"boolean"` +} + +// String returns the string representation +func (s ModifyFleetOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyFleetOutput) GoString() string { + return s.String() +} + +// SetReturn sets the Return field's value. +func (s *ModifyFleetOutput) SetReturn(v bool) *ModifyFleetOutput { + s.Return = &v + return s +} + type ModifyFpgaImageAttributeInput struct { _ struct{} `type:"structure"` @@ -45594,7 +53593,6 @@ func (s *ModifyFpgaImageAttributeInput) SetUserIds(v []*string) *ModifyFpgaImage return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyFpgaImageAttributeResult type ModifyFpgaImageAttributeOutput struct { _ struct{} `type:"structure"` @@ -45619,7 +53617,6 @@ func (s *ModifyFpgaImageAttributeOutput) SetFpgaImageAttribute(v *FpgaImageAttri } // Contains the parameters for ModifyHosts. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyHostsRequest type ModifyHostsInput struct { _ struct{} `type:"structure"` @@ -45673,7 +53670,6 @@ func (s *ModifyHostsInput) SetHostIds(v []*string) *ModifyHostsInput { } // Contains the output of ModifyHosts. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyHostsResult type ModifyHostsOutput struct { _ struct{} `type:"structure"` @@ -45708,11 +53704,19 @@ func (s *ModifyHostsOutput) SetUnsuccessful(v []*UnsuccessfulItem) *ModifyHostsO } // Contains the parameters of ModifyIdFormat. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyIdFormatRequest type ModifyIdFormatInput struct { _ struct{} `type:"structure"` - // The type of resource: instance | reservation | snapshot | volume + // The type of resource: bundle | conversion-task | customer-gateway | dhcp-options + // | elastic-ip-allocation | elastic-ip-association | export-task | flow-log + // | image | import-task | internet-gateway | network-acl | network-acl-association + // | network-interface | network-interface-attachment | prefix-list | route-table + // | route-table-association | security-group | subnet | subnet-cidr-block-association + // | vpc | vpc-cidr-block-association | vpc-endpoint | vpc-peering-connection + // | vpn-connection | vpn-gateway. + // + // Alternatively, use the all-current option to include all resource types that + // are currently within their opt-in period for longer IDs. // // Resource is a required field Resource *string `type:"string" required:"true"` @@ -45761,7 +53765,6 @@ func (s *ModifyIdFormatInput) SetUseLongIds(v bool) *ModifyIdFormatInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyIdFormatOutput type ModifyIdFormatOutput struct { _ struct{} `type:"structure"` } @@ -45777,7 +53780,6 @@ func (s ModifyIdFormatOutput) GoString() string { } // Contains the parameters of ModifyIdentityIdFormat. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyIdentityIdFormatRequest type ModifyIdentityIdFormatInput struct { _ struct{} `type:"structure"` @@ -45788,7 +53790,16 @@ type ModifyIdentityIdFormatInput struct { // PrincipalArn is a required field PrincipalArn *string `locationName:"principalArn" type:"string" required:"true"` - // The type of resource: instance | reservation | snapshot | volume + // The type of resource: bundle | conversion-task | customer-gateway | dhcp-options + // | elastic-ip-allocation | elastic-ip-association | export-task | flow-log + // | image | import-task | internet-gateway | network-acl | network-acl-association + // | network-interface | network-interface-attachment | prefix-list | route-table + // | route-table-association | security-group | subnet | subnet-cidr-block-association + // | vpc | vpc-cidr-block-association | vpc-endpoint | vpc-peering-connection + // | vpn-connection | vpn-gateway. + // + // Alternatively, use the all-current option to include all resource types that + // are currently within their opt-in period for longer IDs. // // Resource is a required field Resource *string `locationName:"resource" type:"string" required:"true"` @@ -45846,7 +53857,6 @@ func (s *ModifyIdentityIdFormatInput) SetUseLongIds(v bool) *ModifyIdentityIdFor return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyIdentityIdFormatOutput type ModifyIdentityIdFormatOutput struct { _ struct{} `type:"structure"` } @@ -45862,14 +53872,14 @@ func (s ModifyIdentityIdFormatOutput) GoString() string { } // Contains the parameters for ModifyImageAttribute. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyImageAttributeRequest type ModifyImageAttributeInput struct { _ struct{} `type:"structure"` - // The name of the attribute to modify. + // The name of the attribute to modify. The valid values are description, launchPermission, + // and productCodes. Attribute *string `type:"string"` - // A description for the AMI. + // A new description for the AMI. Description *AttributeValue `type:"structure"` // Checks whether you have the required permissions for the action, without @@ -45883,26 +53893,27 @@ type ModifyImageAttributeInput struct { // ImageId is a required field ImageId *string `type:"string" required:"true"` - // A launch permission modification. + // A new launch permission for the AMI. LaunchPermission *LaunchPermissionModifications `type:"structure"` - // The operation type. + // The operation type. This parameter can be used only when the Attribute parameter + // is launchPermission. OperationType *string `type:"string" enum:"OperationType"` - // One or more product codes. After you add a product code to an AMI, it can't - // be removed. This is only valid when modifying the productCodes attribute. + // One or more DevPay product codes. After you add a product code to an AMI, + // it can't be removed. ProductCodes []*string `locationName:"ProductCode" locationNameList:"ProductCode" type:"list"` - // One or more user groups. This is only valid when modifying the launchPermission - // attribute. + // One or more user groups. This parameter can be used only when the Attribute + // parameter is launchPermission. UserGroups []*string `locationName:"UserGroup" locationNameList:"UserGroup" type:"list"` - // One or more AWS account IDs. This is only valid when modifying the launchPermission - // attribute. + // One or more AWS account IDs. This parameter can be used only when the Attribute + // parameter is launchPermission. UserIds []*string `locationName:"UserId" locationNameList:"UserId" type:"list"` - // The value of the attribute being modified. This is only valid when modifying - // the description attribute. + // The value of the attribute being modified. This parameter can be used only + // when the Attribute parameter is description or productCodes. Value *string `type:"string"` } @@ -45989,7 +54000,6 @@ func (s *ModifyImageAttributeInput) SetValue(v string) *ModifyImageAttributeInpu return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyImageAttributeOutput type ModifyImageAttributeOutput struct { _ struct{} `type:"structure"` } @@ -46005,7 +54015,6 @@ func (s ModifyImageAttributeOutput) GoString() string { } // Contains the parameters for ModifyInstanceAttribute. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyInstanceAttributeRequest type ModifyInstanceAttributeInput struct { _ struct{} `type:"structure"` @@ -46221,7 +54230,6 @@ func (s *ModifyInstanceAttributeInput) SetValue(v string) *ModifyInstanceAttribu return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyInstanceAttributeOutput type ModifyInstanceAttributeOutput struct { _ struct{} `type:"structure"` } @@ -46236,15 +54244,116 @@ func (s ModifyInstanceAttributeOutput) GoString() string { return s.String() } +type ModifyInstanceCreditSpecificationInput struct { + _ struct{} `type:"structure"` + + // A unique, case-sensitive token that you provide to ensure idempotency of + // your modification request. For more information, see Ensuring Idempotency + // (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + ClientToken *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // Information about the credit option for CPU usage. + // + // InstanceCreditSpecifications is a required field + InstanceCreditSpecifications []*InstanceCreditSpecificationRequest `locationName:"InstanceCreditSpecification" locationNameList:"item" type:"list" required:"true"` +} + +// String returns the string representation +func (s ModifyInstanceCreditSpecificationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyInstanceCreditSpecificationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyInstanceCreditSpecificationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyInstanceCreditSpecificationInput"} + if s.InstanceCreditSpecifications == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceCreditSpecifications")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientToken sets the ClientToken field's value. +func (s *ModifyInstanceCreditSpecificationInput) SetClientToken(v string) *ModifyInstanceCreditSpecificationInput { + s.ClientToken = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ModifyInstanceCreditSpecificationInput) SetDryRun(v bool) *ModifyInstanceCreditSpecificationInput { + s.DryRun = &v + return s +} + +// SetInstanceCreditSpecifications sets the InstanceCreditSpecifications field's value. +func (s *ModifyInstanceCreditSpecificationInput) SetInstanceCreditSpecifications(v []*InstanceCreditSpecificationRequest) *ModifyInstanceCreditSpecificationInput { + s.InstanceCreditSpecifications = v + return s +} + +type ModifyInstanceCreditSpecificationOutput struct { + _ struct{} `type:"structure"` + + // Information about the instances whose credit option for CPU usage was successfully + // modified. + SuccessfulInstanceCreditSpecifications []*SuccessfulInstanceCreditSpecificationItem `locationName:"successfulInstanceCreditSpecificationSet" locationNameList:"item" type:"list"` + + // Information about the instances whose credit option for CPU usage was not + // modified. + UnsuccessfulInstanceCreditSpecifications []*UnsuccessfulInstanceCreditSpecificationItem `locationName:"unsuccessfulInstanceCreditSpecificationSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s ModifyInstanceCreditSpecificationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyInstanceCreditSpecificationOutput) GoString() string { + return s.String() +} + +// SetSuccessfulInstanceCreditSpecifications sets the SuccessfulInstanceCreditSpecifications field's value. +func (s *ModifyInstanceCreditSpecificationOutput) SetSuccessfulInstanceCreditSpecifications(v []*SuccessfulInstanceCreditSpecificationItem) *ModifyInstanceCreditSpecificationOutput { + s.SuccessfulInstanceCreditSpecifications = v + return s +} + +// SetUnsuccessfulInstanceCreditSpecifications sets the UnsuccessfulInstanceCreditSpecifications field's value. +func (s *ModifyInstanceCreditSpecificationOutput) SetUnsuccessfulInstanceCreditSpecifications(v []*UnsuccessfulInstanceCreditSpecificationItem) *ModifyInstanceCreditSpecificationOutput { + s.UnsuccessfulInstanceCreditSpecifications = v + return s +} + // Contains the parameters for ModifyInstancePlacement. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyInstancePlacementRequest type ModifyInstancePlacementInput struct { _ struct{} `type:"structure"` - // The new affinity setting for the instance. + // The affinity setting for the instance. Affinity *string `locationName:"affinity" type:"string" enum:"Affinity"` - // The ID of the Dedicated Host that the instance will have affinity with. + // The name of the placement group in which to place the instance. For spread + // placement groups, the instance must have a tenancy of default. For cluster + // placement groups, the instance must have a tenancy of default or dedicated. + // + // To remove an instance from a placement group, specify an empty string (""). + GroupName *string `type:"string"` + + // The ID of the Dedicated Host with which to associate the instance. HostId *string `locationName:"hostId" type:"string"` // The ID of the instance that you are modifying. @@ -46252,7 +54361,7 @@ type ModifyInstancePlacementInput struct { // InstanceId is a required field InstanceId *string `locationName:"instanceId" type:"string" required:"true"` - // The tenancy of the instance that you are modifying. + // The tenancy for the instance. Tenancy *string `locationName:"tenancy" type:"string" enum:"HostTenancy"` } @@ -46285,6 +54394,12 @@ func (s *ModifyInstancePlacementInput) SetAffinity(v string) *ModifyInstancePlac return s } +// SetGroupName sets the GroupName field's value. +func (s *ModifyInstancePlacementInput) SetGroupName(v string) *ModifyInstancePlacementInput { + s.GroupName = &v + return s +} + // SetHostId sets the HostId field's value. func (s *ModifyInstancePlacementInput) SetHostId(v string) *ModifyInstancePlacementInput { s.HostId = &v @@ -46304,7 +54419,6 @@ func (s *ModifyInstancePlacementInput) SetTenancy(v string) *ModifyInstancePlace } // Contains the output of ModifyInstancePlacement. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyInstancePlacementResult type ModifyInstancePlacementOutput struct { _ struct{} `type:"structure"` @@ -46328,8 +54442,108 @@ func (s *ModifyInstancePlacementOutput) SetReturn(v bool) *ModifyInstancePlaceme return s } +type ModifyLaunchTemplateInput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier you provide to ensure the idempotency of + // the request. For more information, see Ensuring Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + ClientToken *string `type:"string"` + + // The version number of the launch template to set as the default version. + DefaultVersion *string `locationName:"SetDefaultVersion" type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the launch template. You must specify either the launch template + // ID or launch template name in the request. + LaunchTemplateId *string `type:"string"` + + // The name of the launch template. You must specify either the launch template + // ID or launch template name in the request. + LaunchTemplateName *string `min:"3" type:"string"` +} + +// String returns the string representation +func (s ModifyLaunchTemplateInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyLaunchTemplateInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyLaunchTemplateInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyLaunchTemplateInput"} + if s.LaunchTemplateName != nil && len(*s.LaunchTemplateName) < 3 { + invalidParams.Add(request.NewErrParamMinLen("LaunchTemplateName", 3)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientToken sets the ClientToken field's value. +func (s *ModifyLaunchTemplateInput) SetClientToken(v string) *ModifyLaunchTemplateInput { + s.ClientToken = &v + return s +} + +// SetDefaultVersion sets the DefaultVersion field's value. +func (s *ModifyLaunchTemplateInput) SetDefaultVersion(v string) *ModifyLaunchTemplateInput { + s.DefaultVersion = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ModifyLaunchTemplateInput) SetDryRun(v bool) *ModifyLaunchTemplateInput { + s.DryRun = &v + return s +} + +// SetLaunchTemplateId sets the LaunchTemplateId field's value. +func (s *ModifyLaunchTemplateInput) SetLaunchTemplateId(v string) *ModifyLaunchTemplateInput { + s.LaunchTemplateId = &v + return s +} + +// SetLaunchTemplateName sets the LaunchTemplateName field's value. +func (s *ModifyLaunchTemplateInput) SetLaunchTemplateName(v string) *ModifyLaunchTemplateInput { + s.LaunchTemplateName = &v + return s +} + +type ModifyLaunchTemplateOutput struct { + _ struct{} `type:"structure"` + + // Information about the launch template. + LaunchTemplate *LaunchTemplate `locationName:"launchTemplate" type:"structure"` +} + +// String returns the string representation +func (s ModifyLaunchTemplateOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyLaunchTemplateOutput) GoString() string { + return s.String() +} + +// SetLaunchTemplate sets the LaunchTemplate field's value. +func (s *ModifyLaunchTemplateOutput) SetLaunchTemplate(v *LaunchTemplate) *ModifyLaunchTemplateOutput { + s.LaunchTemplate = v + return s +} + // Contains the parameters for ModifyNetworkInterfaceAttribute. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyNetworkInterfaceAttributeRequest type ModifyNetworkInterfaceAttributeInput struct { _ struct{} `type:"structure"` @@ -46424,7 +54638,6 @@ func (s *ModifyNetworkInterfaceAttributeInput) SetSourceDestCheck(v *AttributeBo return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyNetworkInterfaceAttributeOutput type ModifyNetworkInterfaceAttributeOutput struct { _ struct{} `type:"structure"` } @@ -46440,7 +54653,6 @@ func (s ModifyNetworkInterfaceAttributeOutput) GoString() string { } // Contains the parameters for ModifyReservedInstances. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyReservedInstancesRequest type ModifyReservedInstancesInput struct { _ struct{} `type:"structure"` @@ -46504,7 +54716,6 @@ func (s *ModifyReservedInstancesInput) SetTargetConfigurations(v []*ReservedInst } // Contains the output of ModifyReservedInstances. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyReservedInstancesResult type ModifyReservedInstancesOutput struct { _ struct{} `type:"structure"` @@ -46529,7 +54740,6 @@ func (s *ModifyReservedInstancesOutput) SetReservedInstancesModificationId(v str } // Contains the parameters for ModifySnapshotAttribute. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifySnapshotAttributeRequest type ModifySnapshotAttributeInput struct { _ struct{} `type:"structure"` @@ -46627,7 +54837,6 @@ func (s *ModifySnapshotAttributeInput) SetUserIds(v []*string) *ModifySnapshotAt return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifySnapshotAttributeOutput type ModifySnapshotAttributeOutput struct { _ struct{} `type:"structure"` } @@ -46643,16 +54852,15 @@ func (s ModifySnapshotAttributeOutput) GoString() string { } // Contains the parameters for ModifySpotFleetRequest. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifySpotFleetRequestRequest type ModifySpotFleetRequestInput struct { _ struct{} `type:"structure"` - // Indicates whether running Spot instances should be terminated if the target - // capacity of the Spot fleet request is decreased below the current size of - // the Spot fleet. + // Indicates whether running Spot Instances should be terminated if the target + // capacity of the Spot Fleet request is decreased below the current size of + // the Spot Fleet. ExcessCapacityTerminationPolicy *string `locationName:"excessCapacityTerminationPolicy" type:"string" enum:"ExcessCapacityTerminationPolicy"` - // The ID of the Spot fleet request. + // The ID of the Spot Fleet request. // // SpotFleetRequestId is a required field SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string" required:"true"` @@ -46703,7 +54911,6 @@ func (s *ModifySpotFleetRequestInput) SetTargetCapacity(v int64) *ModifySpotFlee } // Contains the output of ModifySpotFleetRequest. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifySpotFleetRequestResponse type ModifySpotFleetRequestOutput struct { _ struct{} `type:"structure"` @@ -46728,7 +54935,6 @@ func (s *ModifySpotFleetRequestOutput) SetReturn(v bool) *ModifySpotFleetRequest } // Contains the parameters for ModifySubnetAttribute. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifySubnetAttributeRequest type ModifySubnetAttributeInput struct { _ struct{} `type:"structure"` @@ -46795,7 +55001,6 @@ func (s *ModifySubnetAttributeInput) SetSubnetId(v string) *ModifySubnetAttribut return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifySubnetAttributeOutput type ModifySubnetAttributeOutput struct { _ struct{} `type:"structure"` } @@ -46811,7 +55016,6 @@ func (s ModifySubnetAttributeOutput) GoString() string { } // Contains the parameters for ModifyVolumeAttribute. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVolumeAttributeRequest type ModifyVolumeAttributeInput struct { _ struct{} `type:"structure"` @@ -46871,7 +55075,6 @@ func (s *ModifyVolumeAttributeInput) SetVolumeId(v string) *ModifyVolumeAttribut return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVolumeAttributeOutput type ModifyVolumeAttributeOutput struct { _ struct{} `type:"structure"` } @@ -46886,7 +55089,6 @@ func (s ModifyVolumeAttributeOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVolumeRequest type ModifyVolumeInput struct { _ struct{} `type:"structure"` @@ -46913,6 +55115,8 @@ type ModifyVolumeInput struct { // Default: If no size is specified, the existing size is retained. Size *int64 `type:"integer"` + // The ID of the volume. + // // VolumeId is a required field VolumeId *string `type:"string" required:"true"` @@ -46978,7 +55182,6 @@ func (s *ModifyVolumeInput) SetVolumeType(v string) *ModifyVolumeInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVolumeResult type ModifyVolumeOutput struct { _ struct{} `type:"structure"` @@ -47003,7 +55206,6 @@ func (s *ModifyVolumeOutput) SetVolumeModification(v *VolumeModification) *Modif } // Contains the parameters for ModifyVpcAttribute. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpcAttributeRequest type ModifyVpcAttributeInput struct { _ struct{} `type:"structure"` @@ -47072,7 +55274,6 @@ func (s *ModifyVpcAttributeInput) SetVpcId(v string) *ModifyVpcAttributeInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpcAttributeOutput type ModifyVpcAttributeOutput struct { _ struct{} `type:"structure"` } @@ -47087,29 +55288,138 @@ func (s ModifyVpcAttributeOutput) GoString() string { return s.String() } +type ModifyVpcEndpointConnectionNotificationInput struct { + _ struct{} `type:"structure"` + + // One or more events for the endpoint. Valid values are Accept, Connect, Delete, + // and Reject. + ConnectionEvents []*string `locationNameList:"item" type:"list"` + + // The ARN for the SNS topic for the notification. + ConnectionNotificationArn *string `type:"string"` + + // The ID of the notification. + // + // ConnectionNotificationId is a required field + ConnectionNotificationId *string `type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` +} + +// String returns the string representation +func (s ModifyVpcEndpointConnectionNotificationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyVpcEndpointConnectionNotificationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyVpcEndpointConnectionNotificationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyVpcEndpointConnectionNotificationInput"} + if s.ConnectionNotificationId == nil { + invalidParams.Add(request.NewErrParamRequired("ConnectionNotificationId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetConnectionEvents sets the ConnectionEvents field's value. +func (s *ModifyVpcEndpointConnectionNotificationInput) SetConnectionEvents(v []*string) *ModifyVpcEndpointConnectionNotificationInput { + s.ConnectionEvents = v + return s +} + +// SetConnectionNotificationArn sets the ConnectionNotificationArn field's value. +func (s *ModifyVpcEndpointConnectionNotificationInput) SetConnectionNotificationArn(v string) *ModifyVpcEndpointConnectionNotificationInput { + s.ConnectionNotificationArn = &v + return s +} + +// SetConnectionNotificationId sets the ConnectionNotificationId field's value. +func (s *ModifyVpcEndpointConnectionNotificationInput) SetConnectionNotificationId(v string) *ModifyVpcEndpointConnectionNotificationInput { + s.ConnectionNotificationId = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ModifyVpcEndpointConnectionNotificationInput) SetDryRun(v bool) *ModifyVpcEndpointConnectionNotificationInput { + s.DryRun = &v + return s +} + +type ModifyVpcEndpointConnectionNotificationOutput struct { + _ struct{} `type:"structure"` + + // Returns true if the request succeeds; otherwise, it returns an error. + ReturnValue *bool `locationName:"return" type:"boolean"` +} + +// String returns the string representation +func (s ModifyVpcEndpointConnectionNotificationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyVpcEndpointConnectionNotificationOutput) GoString() string { + return s.String() +} + +// SetReturnValue sets the ReturnValue field's value. +func (s *ModifyVpcEndpointConnectionNotificationOutput) SetReturnValue(v bool) *ModifyVpcEndpointConnectionNotificationOutput { + s.ReturnValue = &v + return s +} + // Contains the parameters for ModifyVpcEndpoint. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpcEndpointRequest type ModifyVpcEndpointInput struct { _ struct{} `type:"structure"` - // One or more route tables IDs to associate with the endpoint. + // (Gateway endpoint) One or more route tables IDs to associate with the endpoint. AddRouteTableIds []*string `locationName:"AddRouteTableId" locationNameList:"item" type:"list"` + // (Interface endpoint) One or more security group IDs to associate with the + // network interface. + AddSecurityGroupIds []*string `locationName:"AddSecurityGroupId" locationNameList:"item" type:"list"` + + // (Interface endpoint) One or more subnet IDs in which to serve the endpoint. + AddSubnetIds []*string `locationName:"AddSubnetId" locationNameList:"item" type:"list"` + // Checks whether you have the required permissions for the action, without // actually making the request, and provides an error response. If you have // the required permissions, the error response is DryRunOperation. Otherwise, // it is UnauthorizedOperation. DryRun *bool `type:"boolean"` - // A policy document to attach to the endpoint. The policy must be in valid - // JSON format. + // (Gateway endpoint) A policy document to attach to the endpoint. The policy + // must be in valid JSON format. PolicyDocument *string `type:"string"` - // One or more route table IDs to disassociate from the endpoint. + // (Interface endpoint) Indicate whether a private hosted zone is associated + // with the VPC. + PrivateDnsEnabled *bool `type:"boolean"` + + // (Gateway endpoint) One or more route table IDs to disassociate from the endpoint. RemoveRouteTableIds []*string `locationName:"RemoveRouteTableId" locationNameList:"item" type:"list"` - // Specify true to reset the policy document to the default policy. The default - // policy allows access to the service. + // (Interface endpoint) One or more security group IDs to disassociate from + // the network interface. + RemoveSecurityGroupIds []*string `locationName:"RemoveSecurityGroupId" locationNameList:"item" type:"list"` + + // (Interface endpoint) One or more subnets IDs in which to remove the endpoint. + RemoveSubnetIds []*string `locationName:"RemoveSubnetId" locationNameList:"item" type:"list"` + + // (Gateway endpoint) Specify true to reset the policy document to the default + // policy. The default policy allows full access to the service. ResetPolicy *bool `type:"boolean"` // The ID of the endpoint. @@ -47147,6 +55457,18 @@ func (s *ModifyVpcEndpointInput) SetAddRouteTableIds(v []*string) *ModifyVpcEndp return s } +// SetAddSecurityGroupIds sets the AddSecurityGroupIds field's value. +func (s *ModifyVpcEndpointInput) SetAddSecurityGroupIds(v []*string) *ModifyVpcEndpointInput { + s.AddSecurityGroupIds = v + return s +} + +// SetAddSubnetIds sets the AddSubnetIds field's value. +func (s *ModifyVpcEndpointInput) SetAddSubnetIds(v []*string) *ModifyVpcEndpointInput { + s.AddSubnetIds = v + return s +} + // SetDryRun sets the DryRun field's value. func (s *ModifyVpcEndpointInput) SetDryRun(v bool) *ModifyVpcEndpointInput { s.DryRun = &v @@ -47159,12 +55481,30 @@ func (s *ModifyVpcEndpointInput) SetPolicyDocument(v string) *ModifyVpcEndpointI return s } +// SetPrivateDnsEnabled sets the PrivateDnsEnabled field's value. +func (s *ModifyVpcEndpointInput) SetPrivateDnsEnabled(v bool) *ModifyVpcEndpointInput { + s.PrivateDnsEnabled = &v + return s +} + // SetRemoveRouteTableIds sets the RemoveRouteTableIds field's value. func (s *ModifyVpcEndpointInput) SetRemoveRouteTableIds(v []*string) *ModifyVpcEndpointInput { s.RemoveRouteTableIds = v return s } +// SetRemoveSecurityGroupIds sets the RemoveSecurityGroupIds field's value. +func (s *ModifyVpcEndpointInput) SetRemoveSecurityGroupIds(v []*string) *ModifyVpcEndpointInput { + s.RemoveSecurityGroupIds = v + return s +} + +// SetRemoveSubnetIds sets the RemoveSubnetIds field's value. +func (s *ModifyVpcEndpointInput) SetRemoveSubnetIds(v []*string) *ModifyVpcEndpointInput { + s.RemoveSubnetIds = v + return s +} + // SetResetPolicy sets the ResetPolicy field's value. func (s *ModifyVpcEndpointInput) SetResetPolicy(v bool) *ModifyVpcEndpointInput { s.ResetPolicy = &v @@ -47177,8 +55517,6 @@ func (s *ModifyVpcEndpointInput) SetVpcEndpointId(v string) *ModifyVpcEndpointIn return s } -// Contains the output of ModifyVpcEndpoint. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpcEndpointResult type ModifyVpcEndpointOutput struct { _ struct{} `type:"structure"` @@ -47202,7 +55540,201 @@ func (s *ModifyVpcEndpointOutput) SetReturn(v bool) *ModifyVpcEndpointOutput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpcPeeringConnectionOptionsRequest +type ModifyVpcEndpointServiceConfigurationInput struct { + _ struct{} `type:"structure"` + + // Indicate whether requests to create an endpoint to your service must be accepted. + AcceptanceRequired *bool `type:"boolean"` + + // The Amazon Resource Names (ARNs) of Network Load Balancers to add to your + // service configuration. + AddNetworkLoadBalancerArns []*string `locationName:"AddNetworkLoadBalancerArn" locationNameList:"item" type:"list"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The Amazon Resource Names (ARNs) of Network Load Balancers to remove from + // your service configuration. + RemoveNetworkLoadBalancerArns []*string `locationName:"RemoveNetworkLoadBalancerArn" locationNameList:"item" type:"list"` + + // The ID of the service. + // + // ServiceId is a required field + ServiceId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s ModifyVpcEndpointServiceConfigurationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyVpcEndpointServiceConfigurationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyVpcEndpointServiceConfigurationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyVpcEndpointServiceConfigurationInput"} + if s.ServiceId == nil { + invalidParams.Add(request.NewErrParamRequired("ServiceId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAcceptanceRequired sets the AcceptanceRequired field's value. +func (s *ModifyVpcEndpointServiceConfigurationInput) SetAcceptanceRequired(v bool) *ModifyVpcEndpointServiceConfigurationInput { + s.AcceptanceRequired = &v + return s +} + +// SetAddNetworkLoadBalancerArns sets the AddNetworkLoadBalancerArns field's value. +func (s *ModifyVpcEndpointServiceConfigurationInput) SetAddNetworkLoadBalancerArns(v []*string) *ModifyVpcEndpointServiceConfigurationInput { + s.AddNetworkLoadBalancerArns = v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ModifyVpcEndpointServiceConfigurationInput) SetDryRun(v bool) *ModifyVpcEndpointServiceConfigurationInput { + s.DryRun = &v + return s +} + +// SetRemoveNetworkLoadBalancerArns sets the RemoveNetworkLoadBalancerArns field's value. +func (s *ModifyVpcEndpointServiceConfigurationInput) SetRemoveNetworkLoadBalancerArns(v []*string) *ModifyVpcEndpointServiceConfigurationInput { + s.RemoveNetworkLoadBalancerArns = v + return s +} + +// SetServiceId sets the ServiceId field's value. +func (s *ModifyVpcEndpointServiceConfigurationInput) SetServiceId(v string) *ModifyVpcEndpointServiceConfigurationInput { + s.ServiceId = &v + return s +} + +type ModifyVpcEndpointServiceConfigurationOutput struct { + _ struct{} `type:"structure"` + + // Returns true if the request succeeds; otherwise, it returns an error. + Return *bool `locationName:"return" type:"boolean"` +} + +// String returns the string representation +func (s ModifyVpcEndpointServiceConfigurationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyVpcEndpointServiceConfigurationOutput) GoString() string { + return s.String() +} + +// SetReturn sets the Return field's value. +func (s *ModifyVpcEndpointServiceConfigurationOutput) SetReturn(v bool) *ModifyVpcEndpointServiceConfigurationOutput { + s.Return = &v + return s +} + +type ModifyVpcEndpointServicePermissionsInput struct { + _ struct{} `type:"structure"` + + // One or more Amazon Resource Names (ARNs) of principals for which to allow + // permission. Specify * to allow all principals. + AddAllowedPrincipals []*string `locationNameList:"item" type:"list"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more Amazon Resource Names (ARNs) of principals for which to remove + // permission. + RemoveAllowedPrincipals []*string `locationNameList:"item" type:"list"` + + // The ID of the service. + // + // ServiceId is a required field + ServiceId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s ModifyVpcEndpointServicePermissionsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyVpcEndpointServicePermissionsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyVpcEndpointServicePermissionsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyVpcEndpointServicePermissionsInput"} + if s.ServiceId == nil { + invalidParams.Add(request.NewErrParamRequired("ServiceId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAddAllowedPrincipals sets the AddAllowedPrincipals field's value. +func (s *ModifyVpcEndpointServicePermissionsInput) SetAddAllowedPrincipals(v []*string) *ModifyVpcEndpointServicePermissionsInput { + s.AddAllowedPrincipals = v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ModifyVpcEndpointServicePermissionsInput) SetDryRun(v bool) *ModifyVpcEndpointServicePermissionsInput { + s.DryRun = &v + return s +} + +// SetRemoveAllowedPrincipals sets the RemoveAllowedPrincipals field's value. +func (s *ModifyVpcEndpointServicePermissionsInput) SetRemoveAllowedPrincipals(v []*string) *ModifyVpcEndpointServicePermissionsInput { + s.RemoveAllowedPrincipals = v + return s +} + +// SetServiceId sets the ServiceId field's value. +func (s *ModifyVpcEndpointServicePermissionsInput) SetServiceId(v string) *ModifyVpcEndpointServicePermissionsInput { + s.ServiceId = &v + return s +} + +type ModifyVpcEndpointServicePermissionsOutput struct { + _ struct{} `type:"structure"` + + // Returns true if the request succeeds; otherwise, it returns an error. + ReturnValue *bool `locationName:"return" type:"boolean"` +} + +// String returns the string representation +func (s ModifyVpcEndpointServicePermissionsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyVpcEndpointServicePermissionsOutput) GoString() string { + return s.String() +} + +// SetReturnValue sets the ReturnValue field's value. +func (s *ModifyVpcEndpointServicePermissionsOutput) SetReturnValue(v bool) *ModifyVpcEndpointServicePermissionsOutput { + s.ReturnValue = &v + return s +} + type ModifyVpcPeeringConnectionOptionsInput struct { _ struct{} `type:"structure"` @@ -47271,7 +55803,6 @@ func (s *ModifyVpcPeeringConnectionOptionsInput) SetVpcPeeringConnectionId(v str return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpcPeeringConnectionOptionsResult type ModifyVpcPeeringConnectionOptionsOutput struct { _ struct{} `type:"structure"` @@ -47304,8 +55835,96 @@ func (s *ModifyVpcPeeringConnectionOptionsOutput) SetRequesterPeeringConnectionO return s } +// Contains the parameters for ModifyVpcTenancy. +type ModifyVpcTenancyInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the operation, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The instance tenancy attribute for the VPC. + // + // InstanceTenancy is a required field + InstanceTenancy *string `type:"string" required:"true" enum:"VpcTenancy"` + + // The ID of the VPC. + // + // VpcId is a required field + VpcId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s ModifyVpcTenancyInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyVpcTenancyInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyVpcTenancyInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyVpcTenancyInput"} + if s.InstanceTenancy == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceTenancy")) + } + if s.VpcId == nil { + invalidParams.Add(request.NewErrParamRequired("VpcId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *ModifyVpcTenancyInput) SetDryRun(v bool) *ModifyVpcTenancyInput { + s.DryRun = &v + return s +} + +// SetInstanceTenancy sets the InstanceTenancy field's value. +func (s *ModifyVpcTenancyInput) SetInstanceTenancy(v string) *ModifyVpcTenancyInput { + s.InstanceTenancy = &v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *ModifyVpcTenancyInput) SetVpcId(v string) *ModifyVpcTenancyInput { + s.VpcId = &v + return s +} + +// Contains the output of ModifyVpcTenancy. +type ModifyVpcTenancyOutput struct { + _ struct{} `type:"structure"` + + // Returns true if the request succeeds; otherwise, returns an error. + ReturnValue *bool `locationName:"return" type:"boolean"` +} + +// String returns the string representation +func (s ModifyVpcTenancyOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyVpcTenancyOutput) GoString() string { + return s.String() +} + +// SetReturnValue sets the ReturnValue field's value. +func (s *ModifyVpcTenancyOutput) SetReturnValue(v bool) *ModifyVpcTenancyOutput { + s.ReturnValue = &v + return s +} + // Contains the parameters for MonitorInstances. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/MonitorInstancesRequest type MonitorInstancesInput struct { _ struct{} `type:"structure"` @@ -47357,7 +55976,6 @@ func (s *MonitorInstancesInput) SetInstanceIds(v []*string) *MonitorInstancesInp } // Contains the output of MonitorInstances. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/MonitorInstancesResult type MonitorInstancesOutput struct { _ struct{} `type:"structure"` @@ -47382,7 +56000,6 @@ func (s *MonitorInstancesOutput) SetInstanceMonitorings(v []*InstanceMonitoring) } // Describes the monitoring of an instance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/Monitoring type Monitoring struct { _ struct{} `type:"structure"` @@ -47408,7 +56025,6 @@ func (s *Monitoring) SetState(v string) *Monitoring { } // Contains the parameters for MoveAddressToVpc. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/MoveAddressToVpcRequest type MoveAddressToVpcInput struct { _ struct{} `type:"structure"` @@ -47460,7 +56076,6 @@ func (s *MoveAddressToVpcInput) SetPublicIp(v string) *MoveAddressToVpcInput { } // Contains the output of MoveAddressToVpc. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/MoveAddressToVpcResult type MoveAddressToVpcOutput struct { _ struct{} `type:"structure"` @@ -47494,7 +56109,6 @@ func (s *MoveAddressToVpcOutput) SetStatus(v string) *MoveAddressToVpcOutput { } // Describes the status of a moving Elastic IP address. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/MovingAddressStatus type MovingAddressStatus struct { _ struct{} `type:"structure"` @@ -47529,7 +56143,6 @@ func (s *MovingAddressStatus) SetPublicIp(v string) *MovingAddressStatus { } // Describes a NAT gateway. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/NatGateway type NatGateway struct { _ struct{} `type:"structure"` @@ -47684,7 +56297,6 @@ func (s *NatGateway) SetVpcId(v string) *NatGateway { } // Describes the IP addresses and network interface associated with a NAT gateway. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/NatGatewayAddress type NatGatewayAddress struct { _ struct{} `type:"structure"` @@ -47737,7 +56349,6 @@ func (s *NatGatewayAddress) SetPublicIp(v string) *NatGatewayAddress { } // Describes a network ACL. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/NetworkAcl type NetworkAcl struct { _ struct{} `type:"structure"` @@ -47807,7 +56418,6 @@ func (s *NetworkAcl) SetVpcId(v string) *NetworkAcl { } // Describes an association between a network ACL and a subnet. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/NetworkAclAssociation type NetworkAclAssociation struct { _ struct{} `type:"structure"` @@ -47850,7 +56460,6 @@ func (s *NetworkAclAssociation) SetSubnetId(v string) *NetworkAclAssociation { } // Describes an entry in a network ACL. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/NetworkAclEntry type NetworkAclEntry struct { _ struct{} `type:"structure"` @@ -47940,7 +56549,6 @@ func (s *NetworkAclEntry) SetRuleNumber(v int64) *NetworkAclEntry { } // Describes a network interface. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/NetworkInterface type NetworkInterface struct { _ struct{} `type:"structure"` @@ -48138,7 +56746,6 @@ func (s *NetworkInterface) SetVpcId(v string) *NetworkInterface { } // Describes association information for an Elastic IP address (IPv4 only). -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/NetworkInterfaceAssociation type NetworkInterfaceAssociation struct { _ struct{} `type:"structure"` @@ -48199,7 +56806,6 @@ func (s *NetworkInterfaceAssociation) SetPublicIp(v string) *NetworkInterfaceAss } // Describes a network interface attachment. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/NetworkInterfaceAttachment type NetworkInterfaceAttachment struct { _ struct{} `type:"structure"` @@ -48278,7 +56884,6 @@ func (s *NetworkInterfaceAttachment) SetStatus(v string) *NetworkInterfaceAttach } // Describes an attachment change. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/NetworkInterfaceAttachmentChanges type NetworkInterfaceAttachmentChanges struct { _ struct{} `type:"structure"` @@ -48312,7 +56917,6 @@ func (s *NetworkInterfaceAttachmentChanges) SetDeleteOnTermination(v bool) *Netw } // Describes an IPv6 address associated with a network interface. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/NetworkInterfaceIpv6Address type NetworkInterfaceIpv6Address struct { _ struct{} `type:"structure"` @@ -48337,7 +56941,6 @@ func (s *NetworkInterfaceIpv6Address) SetIpv6Address(v string) *NetworkInterface } // Describes a permission for a network interface. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/NetworkInterfacePermission type NetworkInterfacePermission struct { _ struct{} `type:"structure"` @@ -48407,7 +57010,6 @@ func (s *NetworkInterfacePermission) SetPermissionState(v *NetworkInterfacePermi } // Describes the state of a network interface permission. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/NetworkInterfacePermissionState type NetworkInterfacePermissionState struct { _ struct{} `type:"structure"` @@ -48441,7 +57043,6 @@ func (s *NetworkInterfacePermissionState) SetStatusMessage(v string) *NetworkInt } // Describes the private IPv4 address of a network interface. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/NetworkInterfacePrivateIpAddress type NetworkInterfacePrivateIpAddress struct { _ struct{} `type:"structure"` @@ -48494,7 +57095,6 @@ func (s *NetworkInterfacePrivateIpAddress) SetPrivateIpAddress(v string) *Networ return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/NewDhcpConfiguration type NewDhcpConfiguration struct { _ struct{} `type:"structure"` @@ -48527,7 +57127,6 @@ func (s *NewDhcpConfiguration) SetValues(v []*string) *NewDhcpConfiguration { // Describes the data that identifies an Amazon FPGA image (AFI) on the PCI // bus. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/PciId type PciId struct { _ struct{} `type:"structure"` @@ -48579,12 +57178,11 @@ func (s *PciId) SetVendorId(v string) *PciId { } // Describes the VPC peering connection options. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/PeeringConnectionOptions type PeeringConnectionOptions struct { _ struct{} `type:"structure"` - // If true, enables a local VPC to resolve public DNS hostnames to private IP - // addresses when queried from instances in the peer VPC. + // If true, the public DNS hostnames of instances in the specified VPC resolve + // to private IP addresses when queried from instances in the peer VPC. AllowDnsResolutionFromRemoteVpc *bool `locationName:"allowDnsResolutionFromRemoteVpc" type:"boolean"` // If true, enables outbound communication from an EC2-Classic instance that's @@ -48625,7 +57223,6 @@ func (s *PeeringConnectionOptions) SetAllowEgressFromLocalVpcToRemoteClassicLink } // The VPC peering connection options. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/PeeringConnectionOptionsRequest type PeeringConnectionOptionsRequest struct { _ struct{} `type:"structure"` @@ -48671,7 +57268,6 @@ func (s *PeeringConnectionOptionsRequest) SetAllowEgressFromLocalVpcToRemoteClas } // Describes the placement of an instance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/Placement type Placement struct { _ struct{} `type:"structure"` @@ -48745,7 +57341,6 @@ func (s *Placement) SetTenancy(v string) *Placement { } // Describes a placement group. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/PlacementGroup type PlacementGroup struct { _ struct{} `type:"structure"` @@ -48788,7 +57383,6 @@ func (s *PlacementGroup) SetStrategy(v string) *PlacementGroup { } // Describes a range of ports. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/PortRange type PortRange struct { _ struct{} `type:"structure"` @@ -48822,7 +57416,6 @@ func (s *PortRange) SetTo(v int64) *PortRange { } // Describes prefixes for AWS services. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/PrefixList type PrefixList struct { _ struct{} `type:"structure"` @@ -48864,8 +57457,7 @@ func (s *PrefixList) SetPrefixListName(v string) *PrefixList { return s } -// The ID of the prefix. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/PrefixListId +// [EC2-VPC only] The ID of the prefix. type PrefixListId struct { _ struct{} `type:"structure"` @@ -48903,7 +57495,6 @@ func (s *PrefixListId) SetPrefixListId(v string) *PrefixListId { } // Describes the price for a Reserved Instance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/PriceSchedule type PriceSchedule struct { _ struct{} `type:"structure"` @@ -48966,7 +57557,6 @@ func (s *PriceSchedule) SetTerm(v int64) *PriceSchedule { } // Describes the price for a Reserved Instance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/PriceScheduleSpecification type PriceScheduleSpecification struct { _ struct{} `type:"structure"` @@ -49011,7 +57601,6 @@ func (s *PriceScheduleSpecification) SetTerm(v int64) *PriceScheduleSpecificatio } // Describes a Reserved Instance offering. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/PricingDetail type PricingDetail struct { _ struct{} `type:"structure"` @@ -49044,8 +57633,40 @@ func (s *PricingDetail) SetPrice(v float64) *PricingDetail { return s } +// PrincipalIdFormat description +type PrincipalIdFormat struct { + _ struct{} `type:"structure"` + + // PrincipalIdFormatARN description + Arn *string `locationName:"arn" type:"string"` + + // PrincipalIdFormatStatuses description + Statuses []*IdFormat `locationName:"statusSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s PrincipalIdFormat) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PrincipalIdFormat) GoString() string { + return s.String() +} + +// SetArn sets the Arn field's value. +func (s *PrincipalIdFormat) SetArn(v string) *PrincipalIdFormat { + s.Arn = &v + return s +} + +// SetStatuses sets the Statuses field's value. +func (s *PrincipalIdFormat) SetStatuses(v []*IdFormat) *PrincipalIdFormat { + s.Statuses = v + return s +} + // Describes a secondary private IPv4 address for a network interface. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/PrivateIpAddressSpecification type PrivateIpAddressSpecification struct { _ struct{} `type:"structure"` @@ -49095,7 +57716,6 @@ func (s *PrivateIpAddressSpecification) SetPrivateIpAddress(v string) *PrivateIp } // Describes a product code. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ProductCode type ProductCode struct { _ struct{} `type:"structure"` @@ -49129,7 +57749,6 @@ func (s *ProductCode) SetProductCodeType(v string) *ProductCode { } // Describes a virtual private gateway propagating route. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/PropagatingVgw type PropagatingVgw struct { _ struct{} `type:"structure"` @@ -49156,7 +57775,6 @@ func (s *PropagatingVgw) SetGatewayId(v string) *PropagatingVgw { // Reserved. If you need to sustain traffic greater than the documented limits // (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-nat-gateway.html), // contact us through the Support Center (https://console.aws.amazon.com/support/home?). -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ProvisionedBandwidth type ProvisionedBandwidth struct { _ struct{} `type:"structure"` @@ -49227,7 +57845,6 @@ func (s *ProvisionedBandwidth) SetStatus(v string) *ProvisionedBandwidth { } // Describes the result of the purchase. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/Purchase type Purchase struct { _ struct{} `type:"structure"` @@ -49316,7 +57933,6 @@ func (s *Purchase) SetUpfrontPrice(v string) *Purchase { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/PurchaseHostReservationRequest type PurchaseHostReservationInput struct { _ struct{} `type:"structure"` @@ -49406,7 +58022,6 @@ func (s *PurchaseHostReservationInput) SetOfferingId(v string) *PurchaseHostRese return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/PurchaseHostReservationResult type PurchaseHostReservationOutput struct { _ struct{} `type:"structure"` @@ -49471,7 +58086,6 @@ func (s *PurchaseHostReservationOutput) SetTotalUpfrontPrice(v string) *Purchase } // Describes a request to purchase Scheduled Instances. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/PurchaseRequest type PurchaseRequest struct { _ struct{} `type:"structure"` @@ -49525,7 +58139,6 @@ func (s *PurchaseRequest) SetPurchaseToken(v string) *PurchaseRequest { } // Contains the parameters for PurchaseReservedInstancesOffering. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/PurchaseReservedInstancesOfferingRequest type PurchaseReservedInstancesOfferingInput struct { _ struct{} `type:"structure"` @@ -49602,7 +58215,6 @@ func (s *PurchaseReservedInstancesOfferingInput) SetReservedInstancesOfferingId( } // Contains the output of PurchaseReservedInstancesOffering. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/PurchaseReservedInstancesOfferingResult type PurchaseReservedInstancesOfferingOutput struct { _ struct{} `type:"structure"` @@ -49627,7 +58239,6 @@ func (s *PurchaseReservedInstancesOfferingOutput) SetReservedInstancesId(v strin } // Contains the parameters for PurchaseScheduledInstances. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/PurchaseScheduledInstancesRequest type PurchaseScheduledInstancesInput struct { _ struct{} `type:"structure"` @@ -49702,7 +58313,6 @@ func (s *PurchaseScheduledInstancesInput) SetPurchaseRequests(v []*PurchaseReque } // Contains the output of PurchaseScheduledInstances. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/PurchaseScheduledInstancesResult type PurchaseScheduledInstancesOutput struct { _ struct{} `type:"structure"` @@ -49727,7 +58337,6 @@ func (s *PurchaseScheduledInstancesOutput) SetScheduledInstanceSet(v []*Schedule } // Contains the parameters for RebootInstances. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RebootInstancesRequest type RebootInstancesInput struct { _ struct{} `type:"structure"` @@ -49778,7 +58387,6 @@ func (s *RebootInstancesInput) SetInstanceIds(v []*string) *RebootInstancesInput return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RebootInstancesOutput type RebootInstancesOutput struct { _ struct{} `type:"structure"` } @@ -49794,7 +58402,6 @@ func (s RebootInstancesOutput) GoString() string { } // Describes a recurring charge. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RecurringCharge type RecurringCharge struct { _ struct{} `type:"structure"` @@ -49828,7 +58435,6 @@ func (s *RecurringCharge) SetFrequency(v string) *RecurringCharge { } // Describes a region. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/Region type Region struct { _ struct{} `type:"structure"` @@ -49862,7 +58468,6 @@ func (s *Region) SetRegionName(v string) *Region { } // Contains the parameters for RegisterImage. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RegisterImageRequest type RegisterImageInput struct { _ struct{} `type:"structure"` @@ -49914,7 +58519,7 @@ type RegisterImageInput struct { // The ID of the RAM disk. RamdiskId *string `locationName:"ramdiskId" type:"string"` - // The name of the root device (for example, /dev/sda1, or /dev/xvda). + // The device name of the root device volume (for example, /dev/sda1). RootDeviceName *string `locationName:"rootDeviceName" type:"string"` // Set to simple to enable enhanced networking with the Intel 82599 Virtual @@ -49927,7 +58532,7 @@ type RegisterImageInput struct { // PV AMI can make instances launched from the AMI unreachable. SriovNetSupport *string `locationName:"sriovNetSupport" type:"string"` - // The type of virtualization. + // The type of virtualization (hvm | paravirtual). // // Default: paravirtual VirtualizationType *string `locationName:"virtualizationType" type:"string"` @@ -50035,7 +58640,6 @@ func (s *RegisterImageInput) SetVirtualizationType(v string) *RegisterImageInput } // Contains the output of RegisterImage. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RegisterImageResult type RegisterImageOutput struct { _ struct{} `type:"structure"` @@ -50059,8 +58663,94 @@ func (s *RegisterImageOutput) SetImageId(v string) *RegisterImageOutput { return s } +type RejectVpcEndpointConnectionsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the service. + // + // ServiceId is a required field + ServiceId *string `type:"string" required:"true"` + + // The IDs of one or more VPC endpoints. + // + // VpcEndpointIds is a required field + VpcEndpointIds []*string `locationName:"VpcEndpointId" locationNameList:"item" type:"list" required:"true"` +} + +// String returns the string representation +func (s RejectVpcEndpointConnectionsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RejectVpcEndpointConnectionsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *RejectVpcEndpointConnectionsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "RejectVpcEndpointConnectionsInput"} + if s.ServiceId == nil { + invalidParams.Add(request.NewErrParamRequired("ServiceId")) + } + if s.VpcEndpointIds == nil { + invalidParams.Add(request.NewErrParamRequired("VpcEndpointIds")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *RejectVpcEndpointConnectionsInput) SetDryRun(v bool) *RejectVpcEndpointConnectionsInput { + s.DryRun = &v + return s +} + +// SetServiceId sets the ServiceId field's value. +func (s *RejectVpcEndpointConnectionsInput) SetServiceId(v string) *RejectVpcEndpointConnectionsInput { + s.ServiceId = &v + return s +} + +// SetVpcEndpointIds sets the VpcEndpointIds field's value. +func (s *RejectVpcEndpointConnectionsInput) SetVpcEndpointIds(v []*string) *RejectVpcEndpointConnectionsInput { + s.VpcEndpointIds = v + return s +} + +type RejectVpcEndpointConnectionsOutput struct { + _ struct{} `type:"structure"` + + // Information about the endpoints that were not rejected, if applicable. + Unsuccessful []*UnsuccessfulItem `locationName:"unsuccessful" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s RejectVpcEndpointConnectionsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RejectVpcEndpointConnectionsOutput) GoString() string { + return s.String() +} + +// SetUnsuccessful sets the Unsuccessful field's value. +func (s *RejectVpcEndpointConnectionsOutput) SetUnsuccessful(v []*UnsuccessfulItem) *RejectVpcEndpointConnectionsOutput { + s.Unsuccessful = v + return s +} + // Contains the parameters for RejectVpcPeeringConnection. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RejectVpcPeeringConnectionRequest type RejectVpcPeeringConnectionInput struct { _ struct{} `type:"structure"` @@ -50112,7 +58802,6 @@ func (s *RejectVpcPeeringConnectionInput) SetVpcPeeringConnectionId(v string) *R } // Contains the output of RejectVpcPeeringConnection. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RejectVpcPeeringConnectionResult type RejectVpcPeeringConnectionOutput struct { _ struct{} `type:"structure"` @@ -50137,7 +58826,6 @@ func (s *RejectVpcPeeringConnectionOutput) SetReturn(v bool) *RejectVpcPeeringCo } // Contains the parameters for ReleaseAddress. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReleaseAddressRequest type ReleaseAddressInput struct { _ struct{} `type:"structure"` @@ -50182,7 +58870,6 @@ func (s *ReleaseAddressInput) SetPublicIp(v string) *ReleaseAddressInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReleaseAddressOutput type ReleaseAddressOutput struct { _ struct{} `type:"structure"` } @@ -50198,7 +58885,6 @@ func (s ReleaseAddressOutput) GoString() string { } // Contains the parameters for ReleaseHosts. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReleaseHostsRequest type ReleaseHostsInput struct { _ struct{} `type:"structure"` @@ -50238,7 +58924,6 @@ func (s *ReleaseHostsInput) SetHostIds(v []*string) *ReleaseHostsInput { } // Contains the output of ReleaseHosts. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReleaseHostsResult type ReleaseHostsOutput struct { _ struct{} `type:"structure"` @@ -50272,7 +58957,6 @@ func (s *ReleaseHostsOutput) SetUnsuccessful(v []*UnsuccessfulItem) *ReleaseHost return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceIamInstanceProfileAssociationRequest type ReplaceIamInstanceProfileAssociationInput struct { _ struct{} `type:"structure"` @@ -50325,7 +59009,6 @@ func (s *ReplaceIamInstanceProfileAssociationInput) SetIamInstanceProfile(v *Iam return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceIamInstanceProfileAssociationResult type ReplaceIamInstanceProfileAssociationOutput struct { _ struct{} `type:"structure"` @@ -50350,7 +59033,6 @@ func (s *ReplaceIamInstanceProfileAssociationOutput) SetIamInstanceProfileAssoci } // Contains the parameters for ReplaceNetworkAclAssociation. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceNetworkAclAssociationRequest type ReplaceNetworkAclAssociationInput struct { _ struct{} `type:"structure"` @@ -50417,7 +59099,6 @@ func (s *ReplaceNetworkAclAssociationInput) SetNetworkAclId(v string) *ReplaceNe } // Contains the output of ReplaceNetworkAclAssociation. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceNetworkAclAssociationResult type ReplaceNetworkAclAssociationOutput struct { _ struct{} `type:"structure"` @@ -50442,7 +59123,6 @@ func (s *ReplaceNetworkAclAssociationOutput) SetNewAssociationId(v string) *Repl } // Contains the parameters for ReplaceNetworkAclEntry. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceNetworkAclEntryRequest type ReplaceNetworkAclEntryInput struct { _ struct{} `type:"structure"` @@ -50595,7 +59275,6 @@ func (s *ReplaceNetworkAclEntryInput) SetRuleNumber(v int64) *ReplaceNetworkAclE return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceNetworkAclEntryOutput type ReplaceNetworkAclEntryOutput struct { _ struct{} `type:"structure"` } @@ -50611,7 +59290,6 @@ func (s ReplaceNetworkAclEntryOutput) GoString() string { } // Contains the parameters for ReplaceRoute. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceRouteRequest type ReplaceRouteInput struct { _ struct{} `type:"structure"` @@ -50736,7 +59414,6 @@ func (s *ReplaceRouteInput) SetVpcPeeringConnectionId(v string) *ReplaceRouteInp return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceRouteOutput type ReplaceRouteOutput struct { _ struct{} `type:"structure"` } @@ -50752,7 +59429,6 @@ func (s ReplaceRouteOutput) GoString() string { } // Contains the parameters for ReplaceRouteTableAssociation. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceRouteTableAssociationRequest type ReplaceRouteTableAssociationInput struct { _ struct{} `type:"structure"` @@ -50818,7 +59494,6 @@ func (s *ReplaceRouteTableAssociationInput) SetRouteTableId(v string) *ReplaceRo } // Contains the output of ReplaceRouteTableAssociation. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceRouteTableAssociationResult type ReplaceRouteTableAssociationOutput struct { _ struct{} `type:"structure"` @@ -50843,7 +59518,6 @@ func (s *ReplaceRouteTableAssociationOutput) SetNewAssociationId(v string) *Repl } // Contains the parameters for ReportInstanceStatus. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReportInstanceStatusRequest type ReportInstanceStatusInput struct { _ struct{} `type:"structure"` @@ -50970,7 +59644,6 @@ func (s *ReportInstanceStatusInput) SetStatus(v string) *ReportInstanceStatusInp return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReportInstanceStatusOutput type ReportInstanceStatusOutput struct { _ struct{} `type:"structure"` } @@ -50985,8 +59658,273 @@ func (s ReportInstanceStatusOutput) GoString() string { return s.String() } +// The information to include in the launch template. +type RequestLaunchTemplateData struct { + _ struct{} `type:"structure"` + + // The block device mapping. + // + // Supplying both a snapshot ID and an encryption value as arguments for block-device + // mapping results in an error. This is because only blank volumes can be encrypted + // on start, and these are not created from a snapshot. If a snapshot is the + // basis for the volume, it contains data by definition and its encryption status + // cannot be changed using this action. + BlockDeviceMappings []*LaunchTemplateBlockDeviceMappingRequest `locationName:"BlockDeviceMapping" locationNameList:"BlockDeviceMapping" type:"list"` + + // The credit option for CPU usage of the instance. Valid for T2 instances only. + CreditSpecification *CreditSpecificationRequest `type:"structure"` + + // If set to true, you can't terminate the instance using the Amazon EC2 console, + // CLI, or API. To change this attribute to false after launch, use ModifyInstanceAttribute. + DisableApiTermination *bool `type:"boolean"` + + // Indicates whether the instance is optimized for Amazon EBS I/O. This optimization + // provides dedicated throughput to Amazon EBS and an optimized configuration + // stack to provide optimal Amazon EBS I/O performance. This optimization isn't + // available with all instance types. Additional usage charges apply when using + // an EBS-optimized instance. + EbsOptimized *bool `type:"boolean"` + + // An elastic GPU to associate with the instance. + ElasticGpuSpecifications []*ElasticGpuSpecification `locationName:"ElasticGpuSpecification" locationNameList:"ElasticGpuSpecification" type:"list"` + + // The IAM instance profile. + IamInstanceProfile *LaunchTemplateIamInstanceProfileSpecificationRequest `type:"structure"` + + // The ID of the AMI, which you can get by using DescribeImages. + ImageId *string `type:"string"` + + // Indicates whether an instance stops or terminates when you initiate shutdown + // from the instance (using the operating system command for system shutdown). + // + // Default: stop + InstanceInitiatedShutdownBehavior *string `type:"string" enum:"ShutdownBehavior"` + + // The market (purchasing) option for the instances. + InstanceMarketOptions *LaunchTemplateInstanceMarketOptionsRequest `type:"structure"` + + // The instance type. For more information, see Instance Types (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) + // in the Amazon Elastic Compute Cloud User Guide. + InstanceType *string `type:"string" enum:"InstanceType"` + + // The ID of the kernel. + // + // We recommend that you use PV-GRUB instead of kernels and RAM disks. For more + // information, see User Provided Kernels (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html) + // in the Amazon Elastic Compute Cloud User Guide. + KernelId *string `type:"string"` + + // The name of the key pair. You can create a key pair using CreateKeyPair or + // ImportKeyPair. + // + // If you do not specify a key pair, you can't connect to the instance unless + // you choose an AMI that is configured to allow users another way to log in. + KeyName *string `type:"string"` + + // The monitoring for the instance. + Monitoring *LaunchTemplatesMonitoringRequest `type:"structure"` + + // One or more network interfaces. + NetworkInterfaces []*LaunchTemplateInstanceNetworkInterfaceSpecificationRequest `locationName:"NetworkInterface" locationNameList:"InstanceNetworkInterfaceSpecification" type:"list"` + + // The placement for the instance. + Placement *LaunchTemplatePlacementRequest `type:"structure"` + + // The ID of the RAM disk. + // + // We recommend that you use PV-GRUB instead of kernels and RAM disks. For more + // information, see User Provided Kernels (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html) + // in the Amazon Elastic Compute Cloud User Guide. + RamDiskId *string `type:"string"` + + // One or more security group IDs. You can create a security group using CreateSecurityGroup. + // You cannot specify both a security group ID and security name in the same + // request. + SecurityGroupIds []*string `locationName:"SecurityGroupId" locationNameList:"SecurityGroupId" type:"list"` + + // [EC2-Classic, default VPC] One or more security group names. For a nondefault + // VPC, you must use security group IDs instead. You cannot specify both a security + // group ID and security name in the same request. + SecurityGroups []*string `locationName:"SecurityGroup" locationNameList:"SecurityGroup" type:"list"` + + // The tags to apply to the resources during launch. You can tag instances and + // volumes. The specified tags are applied to all instances or volumes that + // are created during launch. + TagSpecifications []*LaunchTemplateTagSpecificationRequest `locationName:"TagSpecification" locationNameList:"LaunchTemplateTagSpecificationRequest" type:"list"` + + // The Base64-encoded user data to make available to the instance. For more + // information, see Running Commands on Your Linux Instance at Launch (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html) + // (Linux) and Adding User Data (http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-instance-metadata.html#instancedata-add-user-data) + // (Windows). + UserData *string `type:"string"` +} + +// String returns the string representation +func (s RequestLaunchTemplateData) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RequestLaunchTemplateData) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *RequestLaunchTemplateData) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "RequestLaunchTemplateData"} + if s.CreditSpecification != nil { + if err := s.CreditSpecification.Validate(); err != nil { + invalidParams.AddNested("CreditSpecification", err.(request.ErrInvalidParams)) + } + } + if s.ElasticGpuSpecifications != nil { + for i, v := range s.ElasticGpuSpecifications { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ElasticGpuSpecifications", i), err.(request.ErrInvalidParams)) + } + } + } + if s.NetworkInterfaces != nil { + for i, v := range s.NetworkInterfaces { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "NetworkInterfaces", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBlockDeviceMappings sets the BlockDeviceMappings field's value. +func (s *RequestLaunchTemplateData) SetBlockDeviceMappings(v []*LaunchTemplateBlockDeviceMappingRequest) *RequestLaunchTemplateData { + s.BlockDeviceMappings = v + return s +} + +// SetCreditSpecification sets the CreditSpecification field's value. +func (s *RequestLaunchTemplateData) SetCreditSpecification(v *CreditSpecificationRequest) *RequestLaunchTemplateData { + s.CreditSpecification = v + return s +} + +// SetDisableApiTermination sets the DisableApiTermination field's value. +func (s *RequestLaunchTemplateData) SetDisableApiTermination(v bool) *RequestLaunchTemplateData { + s.DisableApiTermination = &v + return s +} + +// SetEbsOptimized sets the EbsOptimized field's value. +func (s *RequestLaunchTemplateData) SetEbsOptimized(v bool) *RequestLaunchTemplateData { + s.EbsOptimized = &v + return s +} + +// SetElasticGpuSpecifications sets the ElasticGpuSpecifications field's value. +func (s *RequestLaunchTemplateData) SetElasticGpuSpecifications(v []*ElasticGpuSpecification) *RequestLaunchTemplateData { + s.ElasticGpuSpecifications = v + return s +} + +// SetIamInstanceProfile sets the IamInstanceProfile field's value. +func (s *RequestLaunchTemplateData) SetIamInstanceProfile(v *LaunchTemplateIamInstanceProfileSpecificationRequest) *RequestLaunchTemplateData { + s.IamInstanceProfile = v + return s +} + +// SetImageId sets the ImageId field's value. +func (s *RequestLaunchTemplateData) SetImageId(v string) *RequestLaunchTemplateData { + s.ImageId = &v + return s +} + +// SetInstanceInitiatedShutdownBehavior sets the InstanceInitiatedShutdownBehavior field's value. +func (s *RequestLaunchTemplateData) SetInstanceInitiatedShutdownBehavior(v string) *RequestLaunchTemplateData { + s.InstanceInitiatedShutdownBehavior = &v + return s +} + +// SetInstanceMarketOptions sets the InstanceMarketOptions field's value. +func (s *RequestLaunchTemplateData) SetInstanceMarketOptions(v *LaunchTemplateInstanceMarketOptionsRequest) *RequestLaunchTemplateData { + s.InstanceMarketOptions = v + return s +} + +// SetInstanceType sets the InstanceType field's value. +func (s *RequestLaunchTemplateData) SetInstanceType(v string) *RequestLaunchTemplateData { + s.InstanceType = &v + return s +} + +// SetKernelId sets the KernelId field's value. +func (s *RequestLaunchTemplateData) SetKernelId(v string) *RequestLaunchTemplateData { + s.KernelId = &v + return s +} + +// SetKeyName sets the KeyName field's value. +func (s *RequestLaunchTemplateData) SetKeyName(v string) *RequestLaunchTemplateData { + s.KeyName = &v + return s +} + +// SetMonitoring sets the Monitoring field's value. +func (s *RequestLaunchTemplateData) SetMonitoring(v *LaunchTemplatesMonitoringRequest) *RequestLaunchTemplateData { + s.Monitoring = v + return s +} + +// SetNetworkInterfaces sets the NetworkInterfaces field's value. +func (s *RequestLaunchTemplateData) SetNetworkInterfaces(v []*LaunchTemplateInstanceNetworkInterfaceSpecificationRequest) *RequestLaunchTemplateData { + s.NetworkInterfaces = v + return s +} + +// SetPlacement sets the Placement field's value. +func (s *RequestLaunchTemplateData) SetPlacement(v *LaunchTemplatePlacementRequest) *RequestLaunchTemplateData { + s.Placement = v + return s +} + +// SetRamDiskId sets the RamDiskId field's value. +func (s *RequestLaunchTemplateData) SetRamDiskId(v string) *RequestLaunchTemplateData { + s.RamDiskId = &v + return s +} + +// SetSecurityGroupIds sets the SecurityGroupIds field's value. +func (s *RequestLaunchTemplateData) SetSecurityGroupIds(v []*string) *RequestLaunchTemplateData { + s.SecurityGroupIds = v + return s +} + +// SetSecurityGroups sets the SecurityGroups field's value. +func (s *RequestLaunchTemplateData) SetSecurityGroups(v []*string) *RequestLaunchTemplateData { + s.SecurityGroups = v + return s +} + +// SetTagSpecifications sets the TagSpecifications field's value. +func (s *RequestLaunchTemplateData) SetTagSpecifications(v []*LaunchTemplateTagSpecificationRequest) *RequestLaunchTemplateData { + s.TagSpecifications = v + return s +} + +// SetUserData sets the UserData field's value. +func (s *RequestLaunchTemplateData) SetUserData(v string) *RequestLaunchTemplateData { + s.UserData = &v + return s +} + // Contains the parameters for RequestSpotFleet. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RequestSpotFleetRequest type RequestSpotFleetInput struct { _ struct{} `type:"structure"` @@ -50996,7 +59934,7 @@ type RequestSpotFleetInput struct { // it is UnauthorizedOperation. DryRun *bool `locationName:"dryRun" type:"boolean"` - // The configuration for the Spot fleet request. + // The configuration for the Spot Fleet request. // // SpotFleetRequestConfig is a required field SpotFleetRequestConfig *SpotFleetRequestConfigData `locationName:"spotFleetRequestConfig" type:"structure" required:"true"` @@ -51043,11 +59981,10 @@ func (s *RequestSpotFleetInput) SetSpotFleetRequestConfig(v *SpotFleetRequestCon } // Contains the output of RequestSpotFleet. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RequestSpotFleetResponse type RequestSpotFleetOutput struct { _ struct{} `type:"structure"` - // The ID of the Spot fleet request. + // The ID of the Spot Fleet request. // // SpotFleetRequestId is a required field SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string" required:"true"` @@ -51070,47 +60007,46 @@ func (s *RequestSpotFleetOutput) SetSpotFleetRequestId(v string) *RequestSpotFle } // Contains the parameters for RequestSpotInstances. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RequestSpotInstancesRequest type RequestSpotInstancesInput struct { _ struct{} `type:"structure"` - // The user-specified name for a logical grouping of bids. + // The user-specified name for a logical grouping of requests. // // When you specify an Availability Zone group in a Spot Instance request, all - // Spot instances in the request are launched in the same Availability Zone. + // Spot Instances in the request are launched in the same Availability Zone. // Instance proximity is maintained with this parameter, but the choice of Availability - // Zone is not. The group applies only to bids for Spot Instances of the same - // instance type. Any additional Spot instance requests that are specified with - // the same Availability Zone group name are launched in that same Availability + // Zone is not. The group applies only to requests for Spot Instances of the + // same instance type. Any additional Spot Instance requests that are specified + // with the same Availability Zone group name are launched in that same Availability // Zone, as long as at least one instance from the group is still active. // // If there is no active instance running in the Availability Zone group that - // you specify for a new Spot instance request (all instances are terminated, - // the bid is expired, or the bid falls below current market), then Amazon EC2 - // launches the instance in any Availability Zone where the constraint can be - // met. Consequently, the subsequent set of Spot instances could be placed in - // a different zone from the original request, even if you specified the same - // Availability Zone group. + // you specify for a new Spot Instance request (all instances are terminated, + // the request is expired, or the maximum price you specified falls below current + // Spot price), then Amazon EC2 launches the instance in any Availability Zone + // where the constraint can be met. Consequently, the subsequent set of Spot + // Instances could be placed in a different zone from the original request, + // even if you specified the same Availability Zone group. // // Default: Instances are launched in any available Availability Zone. AvailabilityZoneGroup *string `locationName:"availabilityZoneGroup" type:"string"` - // The required duration for the Spot instances (also known as Spot blocks), + // The required duration for the Spot Instances (also known as Spot blocks), // in minutes. This value must be a multiple of 60 (60, 120, 180, 240, 300, // or 360). // - // The duration period starts as soon as your Spot instance receives its instance - // ID. At the end of the duration period, Amazon EC2 marks the Spot instance - // for termination and provides a Spot instance termination notice, which gives + // The duration period starts as soon as your Spot Instance receives its instance + // ID. At the end of the duration period, Amazon EC2 marks the Spot Instance + // for termination and provides a Spot Instance termination notice, which gives // the instance a two-minute warning before it terminates. // - // Note that you can't specify an Availability Zone group or a launch group - // if you specify a duration. + // You can't specify an Availability Zone group or a launch group if you specify + // a duration. BlockDurationMinutes *int64 `locationName:"blockDurationMinutes" type:"integer"` // Unique, case-sensitive identifier that you provide to ensure the idempotency // of the request. For more information, see How to Ensure Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html) - // in the Amazon Elastic Compute Cloud User Guide. + // in the Amazon EC2 User Guide for Linux Instances. ClientToken *string `locationName:"clientToken" type:"string"` // Checks whether you have the required permissions for the action, without @@ -51119,15 +60055,15 @@ type RequestSpotInstancesInput struct { // it is UnauthorizedOperation. DryRun *bool `locationName:"dryRun" type:"boolean"` - // The maximum number of Spot instances to launch. + // The maximum number of Spot Instances to launch. // // Default: 1 InstanceCount *int64 `locationName:"instanceCount" type:"integer"` - // Indicates whether a Spot instance stops or terminates when it is interrupted. + // The behavior when a Spot Instance is interrupted. The default is terminate. InstanceInterruptionBehavior *string `type:"string" enum:"InstanceInterruptionBehavior"` - // The instance launch group. Launch groups are Spot instances that launch together + // The instance launch group. Launch groups are Spot Instances that launch together // and terminate together. // // Default: Instances are launched and terminated individually @@ -51136,13 +60072,11 @@ type RequestSpotInstancesInput struct { // The launch specification. LaunchSpecification *RequestSpotLaunchSpecification `type:"structure"` - // The maximum hourly price (bid) for any Spot instance launched to fulfill - // the request. - // - // SpotPrice is a required field - SpotPrice *string `locationName:"spotPrice" type:"string" required:"true"` + // The maximum price per hour that you are willing to pay for a Spot Instance. + // The default is the On-Demand price. + SpotPrice *string `locationName:"spotPrice" type:"string"` - // The Spot instance request type. + // The Spot Instance request type. // // Default: one-time Type *string `locationName:"type" type:"string" enum:"SpotInstanceType"` @@ -51152,16 +60086,13 @@ type RequestSpotInstancesInput struct { // launch, the request expires, or the request is canceled. If the request is // persistent, the request becomes active at this date and time and remains // active until it expires or is canceled. - // - // Default: The request is effective indefinitely. ValidFrom *time.Time `locationName:"validFrom" type:"timestamp" timestampFormat:"iso8601"` // The end date of the request. If this is a one-time request, the request remains // active until all instances launch, the request is canceled, or this date // is reached. If the request is persistent, it remains active until it is canceled - // or this date and time is reached. - // - // Default: The request is effective indefinitely. + // or this date is reached. The default end date is 7 days from the current + // date. ValidUntil *time.Time `locationName:"validUntil" type:"timestamp" timestampFormat:"iso8601"` } @@ -51178,9 +60109,6 @@ func (s RequestSpotInstancesInput) GoString() string { // Validate inspects the fields of the type to determine if they are valid. func (s *RequestSpotInstancesInput) Validate() error { invalidParams := request.ErrInvalidParams{Context: "RequestSpotInstancesInput"} - if s.SpotPrice == nil { - invalidParams.Add(request.NewErrParamRequired("SpotPrice")) - } if s.LaunchSpecification != nil { if err := s.LaunchSpecification.Validate(); err != nil { invalidParams.AddNested("LaunchSpecification", err.(request.ErrInvalidParams)) @@ -51266,11 +60194,10 @@ func (s *RequestSpotInstancesInput) SetValidUntil(v time.Time) *RequestSpotInsta } // Contains the output of RequestSpotInstances. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RequestSpotInstancesResult type RequestSpotInstancesOutput struct { _ struct{} `type:"structure"` - // One or more Spot instance requests. + // One or more Spot Instance requests. SpotInstanceRequests []*SpotInstanceRequest `locationName:"spotInstanceRequestSet" locationNameList:"item" type:"list"` } @@ -51291,17 +60218,16 @@ func (s *RequestSpotInstancesOutput) SetSpotInstanceRequests(v []*SpotInstanceRe } // Describes the launch specification for an instance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RequestSpotLaunchSpecification type RequestSpotLaunchSpecification struct { _ struct{} `type:"structure"` // Deprecated. AddressingType *string `locationName:"addressingType" type:"string"` - // One or more block device mapping entries. - // - // Although you can specify encrypted EBS volumes in this block device mapping - // for your Spot Instances, these volumes are not encrypted. + // One or more block device mapping entries. You can't specify both a snapshot + // ID and an encryption value. This is because only blank volumes can be encrypted + // on creation. If a snapshot is the basis for a volume, it is not blank and + // its encryption status is used for the volume encryption status. BlockDeviceMappings []*BlockDeviceMapping `locationName:"blockDeviceMapping" locationNameList:"item" type:"list"` // Indicates whether the instance is optimized for EBS I/O. This optimization @@ -51354,9 +60280,7 @@ type RequestSpotLaunchSpecification struct { // The ID of the subnet in which to launch the instance. SubnetId *string `locationName:"subnetId" type:"string"` - // The user data to make available to the instances. If you are using an AWS - // SDK or command line tool, Base64-encoding is performed for you, and you can - // load the text from a file. Otherwise, you must provide Base64-encoded text. + // The Base64-encoded user data for the instance. UserData *string `locationName:"userData" type:"string"` } @@ -51492,7 +60416,6 @@ func (s *RequestSpotLaunchSpecification) SetUserData(v string) *RequestSpotLaunc } // Describes a reservation. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/Reservation type Reservation struct { _ struct{} `type:"structure"` @@ -51554,7 +60477,6 @@ func (s *Reservation) SetReservationId(v string) *Reservation { } // The cost associated with the Reserved Instance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReservationValue type ReservationValue struct { _ struct{} `type:"structure"` @@ -51598,7 +60520,6 @@ func (s *ReservationValue) SetRemainingUpfrontValue(v string) *ReservationValue } // Describes the limit price of a Reserved Instance offering. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReservedInstanceLimitPrice type ReservedInstanceLimitPrice struct { _ struct{} `type:"structure"` @@ -51634,7 +60555,6 @@ func (s *ReservedInstanceLimitPrice) SetCurrencyCode(v string) *ReservedInstance } // The total value of the Convertible Reserved Instance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReservedInstanceReservationValue type ReservedInstanceReservationValue struct { _ struct{} `type:"structure"` @@ -51668,7 +60588,6 @@ func (s *ReservedInstanceReservationValue) SetReservedInstanceId(v string) *Rese } // Describes a Reserved Instance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReservedInstances type ReservedInstances struct { _ struct{} `type:"structure"` @@ -51847,7 +60766,6 @@ func (s *ReservedInstances) SetUsagePrice(v float64) *ReservedInstances { } // Describes the configuration settings for the modified Reserved Instances. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReservedInstancesConfiguration type ReservedInstancesConfiguration struct { _ struct{} `type:"structure"` @@ -51910,7 +60828,6 @@ func (s *ReservedInstancesConfiguration) SetScope(v string) *ReservedInstancesCo } // Describes the ID of a Reserved Instance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReservedInstancesId type ReservedInstancesId struct { _ struct{} `type:"structure"` @@ -51935,7 +60852,6 @@ func (s *ReservedInstancesId) SetReservedInstancesId(v string) *ReservedInstance } // Describes a Reserved Instance listing. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReservedInstancesListing type ReservedInstancesListing struct { _ struct{} `type:"structure"` @@ -52043,7 +60959,6 @@ func (s *ReservedInstancesListing) SetUpdateDate(v time.Time) *ReservedInstances } // Describes a Reserved Instance modification. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReservedInstancesModification type ReservedInstancesModification struct { _ struct{} `type:"structure"` @@ -52142,7 +61057,6 @@ func (s *ReservedInstancesModification) SetUpdateDate(v time.Time) *ReservedInst } // Describes the modification request/s. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReservedInstancesModificationResult type ReservedInstancesModificationResult struct { _ struct{} `type:"structure"` @@ -52178,7 +61092,6 @@ func (s *ReservedInstancesModificationResult) SetTargetConfiguration(v *Reserved } // Describes a Reserved Instance offering. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReservedInstancesOffering type ReservedInstancesOffering struct { _ struct{} `type:"structure"` @@ -52336,7 +61249,6 @@ func (s *ReservedInstancesOffering) SetUsagePrice(v float64) *ReservedInstancesO return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetFpgaImageAttributeRequest type ResetFpgaImageAttributeInput struct { _ struct{} `type:"structure"` @@ -52396,7 +61308,6 @@ func (s *ResetFpgaImageAttributeInput) SetFpgaImageId(v string) *ResetFpgaImageA return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetFpgaImageAttributeResult type ResetFpgaImageAttributeOutput struct { _ struct{} `type:"structure"` @@ -52421,7 +61332,6 @@ func (s *ResetFpgaImageAttributeOutput) SetReturn(v bool) *ResetFpgaImageAttribu } // Contains the parameters for ResetImageAttribute. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetImageAttributeRequest type ResetImageAttributeInput struct { _ struct{} `type:"structure"` @@ -52487,7 +61397,6 @@ func (s *ResetImageAttributeInput) SetImageId(v string) *ResetImageAttributeInpu return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetImageAttributeOutput type ResetImageAttributeOutput struct { _ struct{} `type:"structure"` } @@ -52503,7 +61412,6 @@ func (s ResetImageAttributeOutput) GoString() string { } // Contains the parameters for ResetInstanceAttribute. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetInstanceAttributeRequest type ResetInstanceAttributeInput struct { _ struct{} `type:"structure"` @@ -52571,7 +61479,6 @@ func (s *ResetInstanceAttributeInput) SetInstanceId(v string) *ResetInstanceAttr return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetInstanceAttributeOutput type ResetInstanceAttributeOutput struct { _ struct{} `type:"structure"` } @@ -52587,7 +61494,6 @@ func (s ResetInstanceAttributeOutput) GoString() string { } // Contains the parameters for ResetNetworkInterfaceAttribute. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetNetworkInterfaceAttributeRequest type ResetNetworkInterfaceAttributeInput struct { _ struct{} `type:"structure"` @@ -52647,7 +61553,6 @@ func (s *ResetNetworkInterfaceAttributeInput) SetSourceDestCheck(v string) *Rese return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetNetworkInterfaceAttributeOutput type ResetNetworkInterfaceAttributeOutput struct { _ struct{} `type:"structure"` } @@ -52663,7 +61568,6 @@ func (s ResetNetworkInterfaceAttributeOutput) GoString() string { } // Contains the parameters for ResetSnapshotAttribute. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetSnapshotAttributeRequest type ResetSnapshotAttributeInput struct { _ struct{} `type:"structure"` @@ -52729,7 +61633,6 @@ func (s *ResetSnapshotAttributeInput) SetSnapshotId(v string) *ResetSnapshotAttr return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetSnapshotAttributeOutput type ResetSnapshotAttributeOutput struct { _ struct{} `type:"structure"` } @@ -52744,8 +61647,238 @@ func (s ResetSnapshotAttributeOutput) GoString() string { return s.String() } +// Describes the error that's returned when you cannot delete a launch template +// version. +type ResponseError struct { + _ struct{} `type:"structure"` + + // The error code. + Code *string `locationName:"code" type:"string" enum:"LaunchTemplateErrorCode"` + + // The error message, if applicable. + Message *string `locationName:"message" type:"string"` +} + +// String returns the string representation +func (s ResponseError) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ResponseError) GoString() string { + return s.String() +} + +// SetCode sets the Code field's value. +func (s *ResponseError) SetCode(v string) *ResponseError { + s.Code = &v + return s +} + +// SetMessage sets the Message field's value. +func (s *ResponseError) SetMessage(v string) *ResponseError { + s.Message = &v + return s +} + +// The information for a launch template. +type ResponseLaunchTemplateData struct { + _ struct{} `type:"structure"` + + // The block device mappings. + BlockDeviceMappings []*LaunchTemplateBlockDeviceMapping `locationName:"blockDeviceMappingSet" locationNameList:"item" type:"list"` + + // The credit option for CPU usage of the instance. + CreditSpecification *CreditSpecification `locationName:"creditSpecification" type:"structure"` + + // If set to true, indicates that the instance cannot be terminated using the + // Amazon EC2 console, command line tool, or API. + DisableApiTermination *bool `locationName:"disableApiTermination" type:"boolean"` + + // Indicates whether the instance is optimized for Amazon EBS I/O. + EbsOptimized *bool `locationName:"ebsOptimized" type:"boolean"` + + // The elastic GPU specification. + ElasticGpuSpecifications []*ElasticGpuSpecificationResponse `locationName:"elasticGpuSpecificationSet" locationNameList:"item" type:"list"` + + // The IAM instance profile. + IamInstanceProfile *LaunchTemplateIamInstanceProfileSpecification `locationName:"iamInstanceProfile" type:"structure"` + + // The ID of the AMI that was used to launch the instance. + ImageId *string `locationName:"imageId" type:"string"` + + // Indicates whether an instance stops or terminates when you initiate shutdown + // from the instance (using the operating system command for system shutdown). + InstanceInitiatedShutdownBehavior *string `locationName:"instanceInitiatedShutdownBehavior" type:"string" enum:"ShutdownBehavior"` + + // The market (purchasing) option for the instances. + InstanceMarketOptions *LaunchTemplateInstanceMarketOptions `locationName:"instanceMarketOptions" type:"structure"` + + // The instance type. + InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"` + + // The ID of the kernel, if applicable. + KernelId *string `locationName:"kernelId" type:"string"` + + // The name of the key pair. + KeyName *string `locationName:"keyName" type:"string"` + + // The monitoring for the instance. + Monitoring *LaunchTemplatesMonitoring `locationName:"monitoring" type:"structure"` + + // The network interfaces. + NetworkInterfaces []*LaunchTemplateInstanceNetworkInterfaceSpecification `locationName:"networkInterfaceSet" locationNameList:"item" type:"list"` + + // The placement of the instance. + Placement *LaunchTemplatePlacement `locationName:"placement" type:"structure"` + + // The ID of the RAM disk, if applicable. + RamDiskId *string `locationName:"ramDiskId" type:"string"` + + // The security group IDs. + SecurityGroupIds []*string `locationName:"securityGroupIdSet" locationNameList:"item" type:"list"` + + // The security group names. + SecurityGroups []*string `locationName:"securityGroupSet" locationNameList:"item" type:"list"` + + // The tags. + TagSpecifications []*LaunchTemplateTagSpecification `locationName:"tagSpecificationSet" locationNameList:"item" type:"list"` + + // The user data for the instance. + UserData *string `locationName:"userData" type:"string"` +} + +// String returns the string representation +func (s ResponseLaunchTemplateData) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ResponseLaunchTemplateData) GoString() string { + return s.String() +} + +// SetBlockDeviceMappings sets the BlockDeviceMappings field's value. +func (s *ResponseLaunchTemplateData) SetBlockDeviceMappings(v []*LaunchTemplateBlockDeviceMapping) *ResponseLaunchTemplateData { + s.BlockDeviceMappings = v + return s +} + +// SetCreditSpecification sets the CreditSpecification field's value. +func (s *ResponseLaunchTemplateData) SetCreditSpecification(v *CreditSpecification) *ResponseLaunchTemplateData { + s.CreditSpecification = v + return s +} + +// SetDisableApiTermination sets the DisableApiTermination field's value. +func (s *ResponseLaunchTemplateData) SetDisableApiTermination(v bool) *ResponseLaunchTemplateData { + s.DisableApiTermination = &v + return s +} + +// SetEbsOptimized sets the EbsOptimized field's value. +func (s *ResponseLaunchTemplateData) SetEbsOptimized(v bool) *ResponseLaunchTemplateData { + s.EbsOptimized = &v + return s +} + +// SetElasticGpuSpecifications sets the ElasticGpuSpecifications field's value. +func (s *ResponseLaunchTemplateData) SetElasticGpuSpecifications(v []*ElasticGpuSpecificationResponse) *ResponseLaunchTemplateData { + s.ElasticGpuSpecifications = v + return s +} + +// SetIamInstanceProfile sets the IamInstanceProfile field's value. +func (s *ResponseLaunchTemplateData) SetIamInstanceProfile(v *LaunchTemplateIamInstanceProfileSpecification) *ResponseLaunchTemplateData { + s.IamInstanceProfile = v + return s +} + +// SetImageId sets the ImageId field's value. +func (s *ResponseLaunchTemplateData) SetImageId(v string) *ResponseLaunchTemplateData { + s.ImageId = &v + return s +} + +// SetInstanceInitiatedShutdownBehavior sets the InstanceInitiatedShutdownBehavior field's value. +func (s *ResponseLaunchTemplateData) SetInstanceInitiatedShutdownBehavior(v string) *ResponseLaunchTemplateData { + s.InstanceInitiatedShutdownBehavior = &v + return s +} + +// SetInstanceMarketOptions sets the InstanceMarketOptions field's value. +func (s *ResponseLaunchTemplateData) SetInstanceMarketOptions(v *LaunchTemplateInstanceMarketOptions) *ResponseLaunchTemplateData { + s.InstanceMarketOptions = v + return s +} + +// SetInstanceType sets the InstanceType field's value. +func (s *ResponseLaunchTemplateData) SetInstanceType(v string) *ResponseLaunchTemplateData { + s.InstanceType = &v + return s +} + +// SetKernelId sets the KernelId field's value. +func (s *ResponseLaunchTemplateData) SetKernelId(v string) *ResponseLaunchTemplateData { + s.KernelId = &v + return s +} + +// SetKeyName sets the KeyName field's value. +func (s *ResponseLaunchTemplateData) SetKeyName(v string) *ResponseLaunchTemplateData { + s.KeyName = &v + return s +} + +// SetMonitoring sets the Monitoring field's value. +func (s *ResponseLaunchTemplateData) SetMonitoring(v *LaunchTemplatesMonitoring) *ResponseLaunchTemplateData { + s.Monitoring = v + return s +} + +// SetNetworkInterfaces sets the NetworkInterfaces field's value. +func (s *ResponseLaunchTemplateData) SetNetworkInterfaces(v []*LaunchTemplateInstanceNetworkInterfaceSpecification) *ResponseLaunchTemplateData { + s.NetworkInterfaces = v + return s +} + +// SetPlacement sets the Placement field's value. +func (s *ResponseLaunchTemplateData) SetPlacement(v *LaunchTemplatePlacement) *ResponseLaunchTemplateData { + s.Placement = v + return s +} + +// SetRamDiskId sets the RamDiskId field's value. +func (s *ResponseLaunchTemplateData) SetRamDiskId(v string) *ResponseLaunchTemplateData { + s.RamDiskId = &v + return s +} + +// SetSecurityGroupIds sets the SecurityGroupIds field's value. +func (s *ResponseLaunchTemplateData) SetSecurityGroupIds(v []*string) *ResponseLaunchTemplateData { + s.SecurityGroupIds = v + return s +} + +// SetSecurityGroups sets the SecurityGroups field's value. +func (s *ResponseLaunchTemplateData) SetSecurityGroups(v []*string) *ResponseLaunchTemplateData { + s.SecurityGroups = v + return s +} + +// SetTagSpecifications sets the TagSpecifications field's value. +func (s *ResponseLaunchTemplateData) SetTagSpecifications(v []*LaunchTemplateTagSpecification) *ResponseLaunchTemplateData { + s.TagSpecifications = v + return s +} + +// SetUserData sets the UserData field's value. +func (s *ResponseLaunchTemplateData) SetUserData(v string) *ResponseLaunchTemplateData { + s.UserData = &v + return s +} + // Contains the parameters for RestoreAddressToClassic. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RestoreAddressToClassicRequest type RestoreAddressToClassicInput struct { _ struct{} `type:"structure"` @@ -52797,7 +61930,6 @@ func (s *RestoreAddressToClassicInput) SetPublicIp(v string) *RestoreAddressToCl } // Contains the output of RestoreAddressToClassic. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RestoreAddressToClassicResult type RestoreAddressToClassicOutput struct { _ struct{} `type:"structure"` @@ -52831,12 +61963,10 @@ func (s *RestoreAddressToClassicOutput) SetStatus(v string) *RestoreAddressToCla } // Contains the parameters for RevokeSecurityGroupEgress. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RevokeSecurityGroupEgressRequest type RevokeSecurityGroupEgressInput struct { _ struct{} `type:"structure"` - // The CIDR IP address range. We recommend that you specify the CIDR range in - // a set of IP permissions instead. + // Not supported. Use a set of IP permissions to specify the CIDR. CidrIp *string `locationName:"cidrIp" type:"string"` // Checks whether you have the required permissions for the action, without @@ -52845,8 +61975,7 @@ type RevokeSecurityGroupEgressInput struct { // it is UnauthorizedOperation. DryRun *bool `locationName:"dryRun" type:"boolean"` - // The start of port range for the TCP and UDP protocols, or an ICMP type number. - // We recommend that you specify the port range in a set of IP permissions instead. + // Not supported. Use a set of IP permissions to specify the port. FromPort *int64 `locationName:"fromPort" type:"integer"` // The ID of the security group. @@ -52854,26 +61983,23 @@ type RevokeSecurityGroupEgressInput struct { // GroupId is a required field GroupId *string `locationName:"groupId" type:"string" required:"true"` - // A set of IP permissions. You can't specify a destination security group and - // a CIDR IP address range. + // One or more sets of IP permissions. You can't specify a destination security + // group and a CIDR IP address range in the same set of permissions. IpPermissions []*IpPermission `locationName:"ipPermissions" locationNameList:"item" type:"list"` - // The IP protocol name or number. We recommend that you specify the protocol - // in a set of IP permissions instead. + // Not supported. Use a set of IP permissions to specify the protocol name or + // number. IpProtocol *string `locationName:"ipProtocol" type:"string"` - // The name of a destination security group. To revoke outbound access to a - // destination security group, we recommend that you use a set of IP permissions - // instead. + // Not supported. Use a set of IP permissions to specify a destination security + // group. SourceSecurityGroupName *string `locationName:"sourceSecurityGroupName" type:"string"` - // The AWS account number for a destination security group. To revoke outbound - // access to a destination security group, we recommend that you use a set of - // IP permissions instead. + // Not supported. Use a set of IP permissions to specify a destination security + // group. SourceSecurityGroupOwnerId *string `locationName:"sourceSecurityGroupOwnerId" type:"string"` - // The end of port range for the TCP and UDP protocols, or an ICMP type number. - // We recommend that you specify the port range in a set of IP permissions instead. + // Not supported. Use a set of IP permissions to specify the port. ToPort *int64 `locationName:"toPort" type:"integer"` } @@ -52954,7 +62080,6 @@ func (s *RevokeSecurityGroupEgressInput) SetToPort(v int64) *RevokeSecurityGroup return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RevokeSecurityGroupEgressOutput type RevokeSecurityGroupEgressOutput struct { _ struct{} `type:"structure"` } @@ -52970,7 +62095,6 @@ func (s RevokeSecurityGroupEgressOutput) GoString() string { } // Contains the parameters for RevokeSecurityGroupIngress. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RevokeSecurityGroupIngressRequest type RevokeSecurityGroupIngressInput struct { _ struct{} `type:"structure"` @@ -52988,15 +62112,17 @@ type RevokeSecurityGroupIngressInput struct { // For the ICMP type number, use -1 to specify all ICMP types. FromPort *int64 `type:"integer"` - // The ID of the security group. Required for a security group in a nondefault - // VPC. + // The ID of the security group. You must specify either the security group + // ID or the security group name in the request. For security groups in a nondefault + // VPC, you must specify the security group ID. GroupId *string `type:"string"` - // [EC2-Classic, default VPC] The name of the security group. + // [EC2-Classic, default VPC] The name of the security group. You must specify + // either the security group ID or the security group name in the request. GroupName *string `type:"string"` - // A set of IP permissions. You can't specify a source security group and a - // CIDR IP address range. + // One or more sets of IP permissions. You can't specify a source security group + // and a CIDR IP address range in the same set of permissions. IpPermissions []*IpPermission `locationNameList:"item" type:"list"` // The IP protocol name (tcp, udp, icmp) or number (see Protocol Numbers (http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml)). @@ -53094,7 +62220,6 @@ func (s *RevokeSecurityGroupIngressInput) SetToPort(v int64) *RevokeSecurityGrou return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RevokeSecurityGroupIngressOutput type RevokeSecurityGroupIngressOutput struct { _ struct{} `type:"structure"` } @@ -53110,7 +62235,6 @@ func (s RevokeSecurityGroupIngressOutput) GoString() string { } // Describes a route in a route table. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/Route type Route struct { _ struct{} `type:"structure"` @@ -53243,7 +62367,6 @@ func (s *Route) SetVpcPeeringConnectionId(v string) *Route { } // Describes a route table. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RouteTable type RouteTable struct { _ struct{} `type:"structure"` @@ -53313,7 +62436,6 @@ func (s *RouteTable) SetVpcId(v string) *RouteTable { } // Describes an association between a route table and a subnet. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RouteTableAssociation type RouteTableAssociation struct { _ struct{} `type:"structure"` @@ -53365,20 +62487,16 @@ func (s *RouteTableAssociation) SetSubnetId(v string) *RouteTableAssociation { } // Contains the parameters for RunInstances. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RunInstancesRequest type RunInstancesInput struct { _ struct{} `type:"structure"` // Reserved. AdditionalInfo *string `locationName:"additionalInfo" type:"string"` - // The block device mapping. - // - // Supplying both a snapshot ID and an encryption value as arguments for block-device - // mapping results in an error. This is because only blank volumes can be encrypted - // on start, and these are not created from a snapshot. If a snapshot is the - // basis for the volume, it contains data by definition and its encryption status - // cannot be changed using this action. + // One or more block device mapping entries. You can't specify both a snapshot + // ID and an encryption value. This is because only blank volumes can be encrypted + // on creation. If a snapshot is the basis for a volume, it is not blank and + // its encryption status is used for the volume encryption status. BlockDeviceMappings []*BlockDeviceMapping `locationName:"BlockDeviceMapping" locationNameList:"BlockDeviceMapping" type:"list"` // Unique, case-sensitive identifier you provide to ensure the idempotency of @@ -53387,6 +62505,19 @@ type RunInstancesInput struct { // Constraints: Maximum 64 ASCII characters ClientToken *string `locationName:"clientToken" type:"string"` + // The CPU options for the instance. For more information, see Optimizing CPU + // Options (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html) + // in the Amazon Elastic Compute Cloud User Guide. + CpuOptions *CpuOptionsRequest `type:"structure"` + + // The credit option for CPU usage of the instance. Valid values are standard + // and unlimited. To change this attribute after launch, use ModifyInstanceCreditSpecification. + // For more information, see T2 Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/t2-instances.html) + // in the Amazon Elastic Compute Cloud User Guide. + // + // Default: standard + CreditSpecification *CreditSpecificationRequest `type:"structure"` + // If you set this parameter to true, you can't terminate the instance using // the Amazon EC2 console, CLI, or API; otherwise, you can. To change this attribute // to false after launch, use ModifyInstanceAttribute. Alternatively, if you @@ -53411,16 +62542,16 @@ type RunInstancesInput struct { // Default: false EbsOptimized *bool `locationName:"ebsOptimized" type:"boolean"` - // An Elastic GPU to associate with the instance. + // An elastic GPU to associate with the instance. ElasticGpuSpecification []*ElasticGpuSpecification `locationNameList:"item" type:"list"` // The IAM instance profile. IamInstanceProfile *IamInstanceProfileSpecification `locationName:"iamInstanceProfile" type:"structure"` - // The ID of the AMI, which you can get by calling DescribeImages. - // - // ImageId is a required field - ImageId *string `type:"string" required:"true"` + // The ID of the AMI, which you can get by calling DescribeImages. An AMI is + // required to launch an instance and must be specified here or in a launch + // template. + ImageId *string `type:"string"` // Indicates whether an instance stops or terminates when you initiate shutdown // from the instance (using the operating system command for system shutdown). @@ -53428,6 +62559,9 @@ type RunInstancesInput struct { // Default: stop InstanceInitiatedShutdownBehavior *string `locationName:"instanceInitiatedShutdownBehavior" type:"string" enum:"ShutdownBehavior"` + // The market (purchasing) option for the instances. + InstanceMarketOptions *InstanceMarketOptionsRequest `type:"structure"` + // The instance type. For more information, see Instance Types (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) // in the Amazon Elastic Compute Cloud User Guide. // @@ -53462,6 +62596,11 @@ type RunInstancesInput struct { // you choose an AMI that is configured to allow users another way to log in. KeyName *string `type:"string"` + // The launch template to use to launch the instances. Any parameters that you + // specify in RunInstances override the same parameters in the launch template. + // You can specify either the name or ID of a launch template, but not both. + LaunchTemplate *LaunchTemplateSpecification `type:"structure"` + // The maximum number of instances to launch. If you specify more instances // than Amazon EC2 can launch in the target Availability Zone, Amazon EC2 launches // the largest possible number of instances above MinCount. @@ -53533,9 +62672,9 @@ type RunInstancesInput struct { // The user data to make available to the instance. For more information, see // Running Commands on Your Linux Instance at Launch (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html) // (Linux) and Adding User Data (http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-instance-metadata.html#instancedata-add-user-data) - // (Windows). If you are using an AWS SDK or command line tool, base64-encoding - // is performed for you, and you can load the text from a file. Otherwise, you - // must provide base64-encoded text. + // (Windows). If you are using a command line tool, base64-encoding is performed + // for you, and you can load the text from a file. Otherwise, you must provide + // base64-encoded text. UserData *string `type:"string"` } @@ -53552,15 +62691,17 @@ func (s RunInstancesInput) GoString() string { // Validate inspects the fields of the type to determine if they are valid. func (s *RunInstancesInput) Validate() error { invalidParams := request.ErrInvalidParams{Context: "RunInstancesInput"} - if s.ImageId == nil { - invalidParams.Add(request.NewErrParamRequired("ImageId")) - } if s.MaxCount == nil { invalidParams.Add(request.NewErrParamRequired("MaxCount")) } if s.MinCount == nil { invalidParams.Add(request.NewErrParamRequired("MinCount")) } + if s.CreditSpecification != nil { + if err := s.CreditSpecification.Validate(); err != nil { + invalidParams.AddNested("CreditSpecification", err.(request.ErrInvalidParams)) + } + } if s.ElasticGpuSpecification != nil { for i, v := range s.ElasticGpuSpecification { if v == nil { @@ -53611,6 +62752,18 @@ func (s *RunInstancesInput) SetClientToken(v string) *RunInstancesInput { return s } +// SetCpuOptions sets the CpuOptions field's value. +func (s *RunInstancesInput) SetCpuOptions(v *CpuOptionsRequest) *RunInstancesInput { + s.CpuOptions = v + return s +} + +// SetCreditSpecification sets the CreditSpecification field's value. +func (s *RunInstancesInput) SetCreditSpecification(v *CreditSpecificationRequest) *RunInstancesInput { + s.CreditSpecification = v + return s +} + // SetDisableApiTermination sets the DisableApiTermination field's value. func (s *RunInstancesInput) SetDisableApiTermination(v bool) *RunInstancesInput { s.DisableApiTermination = &v @@ -53653,6 +62806,12 @@ func (s *RunInstancesInput) SetInstanceInitiatedShutdownBehavior(v string) *RunI return s } +// SetInstanceMarketOptions sets the InstanceMarketOptions field's value. +func (s *RunInstancesInput) SetInstanceMarketOptions(v *InstanceMarketOptionsRequest) *RunInstancesInput { + s.InstanceMarketOptions = v + return s +} + // SetInstanceType sets the InstanceType field's value. func (s *RunInstancesInput) SetInstanceType(v string) *RunInstancesInput { s.InstanceType = &v @@ -53683,6 +62842,12 @@ func (s *RunInstancesInput) SetKeyName(v string) *RunInstancesInput { return s } +// SetLaunchTemplate sets the LaunchTemplate field's value. +func (s *RunInstancesInput) SetLaunchTemplate(v *LaunchTemplateSpecification) *RunInstancesInput { + s.LaunchTemplate = v + return s +} + // SetMaxCount sets the MaxCount field's value. func (s *RunInstancesInput) SetMaxCount(v int64) *RunInstancesInput { s.MaxCount = &v @@ -53756,7 +62921,6 @@ func (s *RunInstancesInput) SetUserData(v string) *RunInstancesInput { } // Describes the monitoring of an instance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RunInstancesMonitoringEnabled type RunInstancesMonitoringEnabled struct { _ struct{} `type:"structure"` @@ -53797,7 +62961,6 @@ func (s *RunInstancesMonitoringEnabled) SetEnabled(v bool) *RunInstancesMonitori } // Contains the parameters for RunScheduledInstances. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RunScheduledInstancesRequest type RunScheduledInstancesInput struct { _ struct{} `type:"structure"` @@ -53890,7 +63053,6 @@ func (s *RunScheduledInstancesInput) SetScheduledInstanceId(v string) *RunSchedu } // Contains the output of RunScheduledInstances. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RunScheduledInstancesResult type RunScheduledInstancesOutput struct { _ struct{} `type:"structure"` @@ -53916,7 +63078,6 @@ func (s *RunScheduledInstancesOutput) SetInstanceIdSet(v []*string) *RunSchedule // Describes the storage parameters for S3 and S3 buckets for an instance store-backed // AMI. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/S3Storage type S3Storage struct { _ struct{} `type:"structure"` @@ -53984,7 +63145,6 @@ func (s *S3Storage) SetUploadPolicySignature(v string) *S3Storage { } // Describes a Scheduled Instance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ScheduledInstance type ScheduledInstance struct { _ struct{} `type:"structure"` @@ -54135,7 +63295,6 @@ func (s *ScheduledInstance) SetTotalScheduledInstanceHours(v int64) *ScheduledIn } // Describes a schedule that is available for your Scheduled Instances. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ScheduledInstanceAvailability type ScheduledInstanceAvailability struct { _ struct{} `type:"structure"` @@ -54269,7 +63428,6 @@ func (s *ScheduledInstanceAvailability) SetTotalScheduledInstanceHours(v int64) } // Describes the recurring schedule for a Scheduled Instance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ScheduledInstanceRecurrence type ScheduledInstanceRecurrence struct { _ struct{} `type:"structure"` @@ -54334,7 +63492,6 @@ func (s *ScheduledInstanceRecurrence) SetOccurrenceUnit(v string) *ScheduledInst } // Describes the recurring schedule for a Scheduled Instance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ScheduledInstanceRecurrenceRequest type ScheduledInstanceRecurrenceRequest struct { _ struct{} `type:"structure"` @@ -54402,11 +63559,10 @@ func (s *ScheduledInstanceRecurrenceRequest) SetOccurrenceUnit(v string) *Schedu } // Describes a block device mapping for a Scheduled Instance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ScheduledInstancesBlockDeviceMapping type ScheduledInstancesBlockDeviceMapping struct { _ struct{} `type:"structure"` - // The device name exposed to the instance (for example, /dev/sdh or xvdh). + // The device name (for example, /dev/sdh or xvdh). DeviceName *string `type:"string"` // Parameters used to set up EBS volumes automatically when the instance is @@ -54419,7 +63575,7 @@ type ScheduledInstancesBlockDeviceMapping struct { // The virtual device name (ephemeralN). Instance store volumes are numbered // starting from 0. An instance type with two available instance store volumes - // can specify mappings for ephemeral0 and ephemeral1.The number of available + // can specify mappings for ephemeral0 and ephemeral1. The number of available // instance store volumes depends on the instance type. After you connect to // the instance, you must mount the volume. // @@ -54465,7 +63621,6 @@ func (s *ScheduledInstancesBlockDeviceMapping) SetVirtualName(v string) *Schedul } // Describes an EBS volume for a Scheduled Instance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ScheduledInstancesEbs type ScheduledInstancesEbs struct { _ struct{} `type:"structure"` @@ -54554,7 +63709,6 @@ func (s *ScheduledInstancesEbs) SetVolumeType(v string) *ScheduledInstancesEbs { } // Describes an IAM instance profile for a Scheduled Instance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ScheduledInstancesIamInstanceProfile type ScheduledInstancesIamInstanceProfile struct { _ struct{} `type:"structure"` @@ -54588,7 +63742,6 @@ func (s *ScheduledInstancesIamInstanceProfile) SetName(v string) *ScheduledInsta } // Describes an IPv6 address. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ScheduledInstancesIpv6Address type ScheduledInstancesIpv6Address struct { _ struct{} `type:"structure"` @@ -54617,7 +63770,6 @@ func (s *ScheduledInstancesIpv6Address) SetIpv6Address(v string) *ScheduledInsta // If you are launching the Scheduled Instance in EC2-VPC, you must specify // the ID of the subnet. You can specify the subnet using either SubnetId or // NetworkInterface. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ScheduledInstancesLaunchSpecification type ScheduledInstancesLaunchSpecification struct { _ struct{} `type:"structure"` @@ -54780,7 +63932,6 @@ func (s *ScheduledInstancesLaunchSpecification) SetUserData(v string) *Scheduled } // Describes whether monitoring is enabled for a Scheduled Instance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ScheduledInstancesMonitoring type ScheduledInstancesMonitoring struct { _ struct{} `type:"structure"` @@ -54805,7 +63956,6 @@ func (s *ScheduledInstancesMonitoring) SetEnabled(v bool) *ScheduledInstancesMon } // Describes a network interface for a Scheduled Instance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ScheduledInstancesNetworkInterface type ScheduledInstancesNetworkInterface struct { _ struct{} `type:"structure"` @@ -54934,7 +64084,6 @@ func (s *ScheduledInstancesNetworkInterface) SetSubnetId(v string) *ScheduledIns } // Describes the placement for a Scheduled Instance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ScheduledInstancesPlacement type ScheduledInstancesPlacement struct { _ struct{} `type:"structure"` @@ -54968,7 +64117,6 @@ func (s *ScheduledInstancesPlacement) SetGroupName(v string) *ScheduledInstances } // Describes a private IPv4 address for a Scheduled Instance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ScheduledInstancesPrivateIpAddressConfig type ScheduledInstancesPrivateIpAddressConfig struct { _ struct{} `type:"structure"` @@ -55003,7 +64151,6 @@ func (s *ScheduledInstancesPrivateIpAddressConfig) SetPrivateIpAddress(v string) } // Describes a security group -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/SecurityGroup type SecurityGroup struct { _ struct{} `type:"structure"` @@ -55090,8 +64237,40 @@ func (s *SecurityGroup) SetVpcId(v string) *SecurityGroup { return s } +// Describes a security group. +type SecurityGroupIdentifier struct { + _ struct{} `type:"structure"` + + // The ID of the security group. + GroupId *string `locationName:"groupId" type:"string"` + + // The name of the security group. + GroupName *string `locationName:"groupName" type:"string"` +} + +// String returns the string representation +func (s SecurityGroupIdentifier) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SecurityGroupIdentifier) GoString() string { + return s.String() +} + +// SetGroupId sets the GroupId field's value. +func (s *SecurityGroupIdentifier) SetGroupId(v string) *SecurityGroupIdentifier { + s.GroupId = &v + return s +} + +// SetGroupName sets the GroupName field's value. +func (s *SecurityGroupIdentifier) SetGroupName(v string) *SecurityGroupIdentifier { + s.GroupName = &v + return s +} + // Describes a VPC with a security group that references your security group. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/SecurityGroupReference type SecurityGroupReference struct { _ struct{} `type:"structure"` @@ -55137,9 +64316,217 @@ func (s *SecurityGroupReference) SetVpcPeeringConnectionId(v string) *SecurityGr return s } +// Describes a service configuration for a VPC endpoint service. +type ServiceConfiguration struct { + _ struct{} `type:"structure"` + + // Indicates whether requests from other AWS accounts to create an endpoint + // to the service must first be accepted. + AcceptanceRequired *bool `locationName:"acceptanceRequired" type:"boolean"` + + // In the Availability Zones in which the service is available. + AvailabilityZones []*string `locationName:"availabilityZoneSet" locationNameList:"item" type:"list"` + + // The DNS names for the service. + BaseEndpointDnsNames []*string `locationName:"baseEndpointDnsNameSet" locationNameList:"item" type:"list"` + + // The Amazon Resource Names (ARNs) of the Network Load Balancers for the service. + NetworkLoadBalancerArns []*string `locationName:"networkLoadBalancerArnSet" locationNameList:"item" type:"list"` + + // The private DNS name for the service. + PrivateDnsName *string `locationName:"privateDnsName" type:"string"` + + // The ID of the service. + ServiceId *string `locationName:"serviceId" type:"string"` + + // The name of the service. + ServiceName *string `locationName:"serviceName" type:"string"` + + // The service state. + ServiceState *string `locationName:"serviceState" type:"string" enum:"ServiceState"` + + // The type of service. + ServiceType []*ServiceTypeDetail `locationName:"serviceType" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s ServiceConfiguration) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ServiceConfiguration) GoString() string { + return s.String() +} + +// SetAcceptanceRequired sets the AcceptanceRequired field's value. +func (s *ServiceConfiguration) SetAcceptanceRequired(v bool) *ServiceConfiguration { + s.AcceptanceRequired = &v + return s +} + +// SetAvailabilityZones sets the AvailabilityZones field's value. +func (s *ServiceConfiguration) SetAvailabilityZones(v []*string) *ServiceConfiguration { + s.AvailabilityZones = v + return s +} + +// SetBaseEndpointDnsNames sets the BaseEndpointDnsNames field's value. +func (s *ServiceConfiguration) SetBaseEndpointDnsNames(v []*string) *ServiceConfiguration { + s.BaseEndpointDnsNames = v + return s +} + +// SetNetworkLoadBalancerArns sets the NetworkLoadBalancerArns field's value. +func (s *ServiceConfiguration) SetNetworkLoadBalancerArns(v []*string) *ServiceConfiguration { + s.NetworkLoadBalancerArns = v + return s +} + +// SetPrivateDnsName sets the PrivateDnsName field's value. +func (s *ServiceConfiguration) SetPrivateDnsName(v string) *ServiceConfiguration { + s.PrivateDnsName = &v + return s +} + +// SetServiceId sets the ServiceId field's value. +func (s *ServiceConfiguration) SetServiceId(v string) *ServiceConfiguration { + s.ServiceId = &v + return s +} + +// SetServiceName sets the ServiceName field's value. +func (s *ServiceConfiguration) SetServiceName(v string) *ServiceConfiguration { + s.ServiceName = &v + return s +} + +// SetServiceState sets the ServiceState field's value. +func (s *ServiceConfiguration) SetServiceState(v string) *ServiceConfiguration { + s.ServiceState = &v + return s +} + +// SetServiceType sets the ServiceType field's value. +func (s *ServiceConfiguration) SetServiceType(v []*ServiceTypeDetail) *ServiceConfiguration { + s.ServiceType = v + return s +} + +// Describes a VPC endpoint service. +type ServiceDetail struct { + _ struct{} `type:"structure"` + + // Indicates whether VPC endpoint connection requests to the service must be + // accepted by the service owner. + AcceptanceRequired *bool `locationName:"acceptanceRequired" type:"boolean"` + + // The Availability Zones in which the service is available. + AvailabilityZones []*string `locationName:"availabilityZoneSet" locationNameList:"item" type:"list"` + + // The DNS names for the service. + BaseEndpointDnsNames []*string `locationName:"baseEndpointDnsNameSet" locationNameList:"item" type:"list"` + + // The AWS account ID of the service owner. + Owner *string `locationName:"owner" type:"string"` + + // The private DNS name for the service. + PrivateDnsName *string `locationName:"privateDnsName" type:"string"` + + // The Amazon Resource Name (ARN) of the service. + ServiceName *string `locationName:"serviceName" type:"string"` + + // The type of service. + ServiceType []*ServiceTypeDetail `locationName:"serviceType" locationNameList:"item" type:"list"` + + // Indicates whether the service supports endpoint policies. + VpcEndpointPolicySupported *bool `locationName:"vpcEndpointPolicySupported" type:"boolean"` +} + +// String returns the string representation +func (s ServiceDetail) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ServiceDetail) GoString() string { + return s.String() +} + +// SetAcceptanceRequired sets the AcceptanceRequired field's value. +func (s *ServiceDetail) SetAcceptanceRequired(v bool) *ServiceDetail { + s.AcceptanceRequired = &v + return s +} + +// SetAvailabilityZones sets the AvailabilityZones field's value. +func (s *ServiceDetail) SetAvailabilityZones(v []*string) *ServiceDetail { + s.AvailabilityZones = v + return s +} + +// SetBaseEndpointDnsNames sets the BaseEndpointDnsNames field's value. +func (s *ServiceDetail) SetBaseEndpointDnsNames(v []*string) *ServiceDetail { + s.BaseEndpointDnsNames = v + return s +} + +// SetOwner sets the Owner field's value. +func (s *ServiceDetail) SetOwner(v string) *ServiceDetail { + s.Owner = &v + return s +} + +// SetPrivateDnsName sets the PrivateDnsName field's value. +func (s *ServiceDetail) SetPrivateDnsName(v string) *ServiceDetail { + s.PrivateDnsName = &v + return s +} + +// SetServiceName sets the ServiceName field's value. +func (s *ServiceDetail) SetServiceName(v string) *ServiceDetail { + s.ServiceName = &v + return s +} + +// SetServiceType sets the ServiceType field's value. +func (s *ServiceDetail) SetServiceType(v []*ServiceTypeDetail) *ServiceDetail { + s.ServiceType = v + return s +} + +// SetVpcEndpointPolicySupported sets the VpcEndpointPolicySupported field's value. +func (s *ServiceDetail) SetVpcEndpointPolicySupported(v bool) *ServiceDetail { + s.VpcEndpointPolicySupported = &v + return s +} + +// Describes the type of service for a VPC endpoint. +type ServiceTypeDetail struct { + _ struct{} `type:"structure"` + + // The type of service. + ServiceType *string `locationName:"serviceType" type:"string" enum:"ServiceType"` +} + +// String returns the string representation +func (s ServiceTypeDetail) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ServiceTypeDetail) GoString() string { + return s.String() +} + +// SetServiceType sets the ServiceType field's value. +func (s *ServiceTypeDetail) SetServiceType(v string) *ServiceTypeDetail { + s.ServiceType = &v + return s +} + // Describes the time period for a Scheduled Instance to start its first schedule. // The time period must span less than one day. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/SlotDateTimeRangeRequest type SlotDateTimeRangeRequest struct { _ struct{} `type:"structure"` @@ -55195,7 +64582,6 @@ func (s *SlotDateTimeRangeRequest) SetLatestTime(v time.Time) *SlotDateTimeRange } // Describes the time period for a Scheduled Instance to start its first schedule. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/SlotStartTimeRangeRequest type SlotStartTimeRangeRequest struct { _ struct{} `type:"structure"` @@ -55229,7 +64615,6 @@ func (s *SlotStartTimeRangeRequest) SetLatestTime(v time.Time) *SlotStartTimeRan } // Describes a snapshot. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/Snapshot type Snapshot struct { _ struct{} `type:"structure"` @@ -55387,7 +64772,6 @@ func (s *Snapshot) SetVolumeSize(v int64) *Snapshot { } // Describes the snapshot created from the imported disk. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/SnapshotDetail type SnapshotDetail struct { _ struct{} `type:"structure"` @@ -55493,7 +64877,6 @@ func (s *SnapshotDetail) SetUserBucket(v *UserBucketDetails) *SnapshotDetail { } // The disk container object for the import snapshot request. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/SnapshotDiskContainer type SnapshotDiskContainer struct { _ struct{} `type:"structure"` @@ -55502,7 +64885,7 @@ type SnapshotDiskContainer struct { // The format of the disk image being imported. // - // Valid values: RAW | VHD | VMDK | OVA + // Valid values: VHD | VMDK | OVA Format *string `type:"string"` // The URL to the Amazon S3-based disk image being imported. It can either be @@ -55548,7 +64931,6 @@ func (s *SnapshotDiskContainer) SetUserBucket(v *UserBucket) *SnapshotDiskContai } // Details about the import snapshot task. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/SnapshotTaskDetail type SnapshotTaskDetail struct { _ struct{} `type:"structure"` @@ -55644,15 +65026,14 @@ func (s *SnapshotTaskDetail) SetUserBucket(v *UserBucketDetails) *SnapshotTaskDe return s } -// Describes the data feed for a Spot instance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/SpotDatafeedSubscription +// Describes the data feed for a Spot Instance. type SpotDatafeedSubscription struct { _ struct{} `type:"structure"` - // The Amazon S3 bucket where the Spot instance data feed is located. + // The Amazon S3 bucket where the Spot Instance data feed is located. Bucket *string `locationName:"bucket" type:"string"` - // The fault codes for the Spot instance request, if any. + // The fault codes for the Spot Instance request, if any. Fault *SpotInstanceStateFault `locationName:"fault" type:"structure"` // The AWS account ID of the account. @@ -55661,7 +65042,7 @@ type SpotDatafeedSubscription struct { // The prefix that is prepended to data feed files. Prefix *string `locationName:"prefix" type:"string"` - // The state of the Spot instance data feed subscription. + // The state of the Spot Instance data feed subscription. State *string `locationName:"state" type:"string" enum:"DatafeedSubscriptionState"` } @@ -55705,15 +65086,17 @@ func (s *SpotDatafeedSubscription) SetState(v string) *SpotDatafeedSubscription return s } -// Describes the launch specification for one or more Spot instances. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/SpotFleetLaunchSpecification +// Describes the launch specification for one or more Spot Instances. type SpotFleetLaunchSpecification struct { _ struct{} `type:"structure"` // Deprecated. AddressingType *string `locationName:"addressingType" type:"string"` - // One or more block device mapping entries. + // One or more block device mapping entries. You can't specify both a snapshot + // ID and an encryption value. This is because only blank volumes can be encrypted + // on creation. If a snapshot is the basis for a volume, it is not blank and + // its encryption status is used for the volume encryption status. BlockDeviceMappings []*BlockDeviceMapping `locationName:"blockDeviceMapping" locationNameList:"item" type:"list"` // Indicates whether the instances are optimized for EBS I/O. This optimization @@ -55731,7 +65114,7 @@ type SpotFleetLaunchSpecification struct { // The ID of the AMI. ImageId *string `locationName:"imageId" type:"string"` - // The instance type. Note that T2 and HS1 instance types are not supported. + // The instance type. InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"` // The ID of the kernel. @@ -55758,10 +65141,10 @@ type SpotFleetLaunchSpecification struct { // you can specify the names or the IDs of the security groups. SecurityGroups []*GroupIdentifier `locationName:"groupSet" locationNameList:"item" type:"list"` - // The bid price per unit hour for the specified instance type. If this value - // is not specified, the default is the Spot bid price specified for the fleet. - // To determine the bid price per unit hour, divide the Spot bid price by the - // value of WeightedCapacity. + // The maximum price per unit hour that you are willing to pay for a Spot Instance. + // If this value is not specified, the default is the Spot price specified for + // the fleet. To determine the Spot price per unit hour, divide the Spot price + // by the value of WeightedCapacity. SpotPrice *string `locationName:"spotPrice" type:"string"` // The ID of the subnet in which to launch the instances. To specify multiple @@ -55771,9 +65154,7 @@ type SpotFleetLaunchSpecification struct { // The tags to apply during creation. TagSpecifications []*SpotFleetTagSpecification `locationName:"tagSpecificationSet" locationNameList:"item" type:"list"` - // The user data to make available to the instances. If you are using an AWS - // SDK or command line tool, Base64-encoding is performed for you, and you can - // load the text from a file. Otherwise, you must provide Base64-encoded text. + // The Base64-encoded user data to make available to the instances. UserData *string `locationName:"userData" type:"string"` // The number of units provided by the specified instance type. These are the @@ -55925,7 +65306,6 @@ func (s *SpotFleetLaunchSpecification) SetWeightedCapacity(v float64) *SpotFleet } // Describes whether monitoring is enabled. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/SpotFleetMonitoring type SpotFleetMonitoring struct { _ struct{} `type:"structure"` @@ -55951,16 +65331,15 @@ func (s *SpotFleetMonitoring) SetEnabled(v bool) *SpotFleetMonitoring { return s } -// Describes a Spot fleet request. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/SpotFleetRequestConfig +// Describes a Spot Fleet request. type SpotFleetRequestConfig struct { _ struct{} `type:"structure"` - // The progress of the Spot fleet request. If there is an error, the status - // is error. After all bids are placed, the status is pending_fulfillment. If - // the size of the fleet is equal to or greater than its target capacity, the - // status is fulfilled. If the size of the fleet is decreased, the status is - // pending_termination while Spot instances are terminating. + // The progress of the Spot Fleet request. If there is an error, the status + // is error. After all requests are placed, the status is pending_fulfillment. + // If the size of the fleet is equal to or greater than its target capacity, + // the status is fulfilled. If the size of the fleet is decreased, the status + // is pending_termination while Spot Instances are terminating. ActivityStatus *string `locationName:"activityStatus" type:"string" enum:"ActivityStatus"` // The creation date and time of the request. @@ -55968,17 +65347,17 @@ type SpotFleetRequestConfig struct { // CreateTime is a required field CreateTime *time.Time `locationName:"createTime" type:"timestamp" timestampFormat:"iso8601" required:"true"` - // Information about the configuration of the Spot fleet request. + // The configuration of the Spot Fleet request. // // SpotFleetRequestConfig is a required field SpotFleetRequestConfig *SpotFleetRequestConfigData `locationName:"spotFleetRequestConfig" type:"structure" required:"true"` - // The ID of the Spot fleet request. + // The ID of the Spot Fleet request. // // SpotFleetRequestId is a required field SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string" required:"true"` - // The state of the Spot fleet request. + // The state of the Spot Fleet request. // // SpotFleetRequestState is a required field SpotFleetRequestState *string `locationName:"spotFleetRequestState" type:"string" required:"true" enum:"BatchState"` @@ -56024,71 +65403,91 @@ func (s *SpotFleetRequestConfig) SetSpotFleetRequestState(v string) *SpotFleetRe return s } -// Describes the configuration of a Spot fleet request. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/SpotFleetRequestConfigData +// Describes the configuration of a Spot Fleet request. type SpotFleetRequestConfigData struct { _ struct{} `type:"structure"` // Indicates how to allocate the target capacity across the Spot pools specified - // by the Spot fleet request. The default is lowestPrice. + // by the Spot Fleet request. The default is lowestPrice. AllocationStrategy *string `locationName:"allocationStrategy" type:"string" enum:"AllocationStrategy"` - // A unique, case-sensitive identifier you provide to ensure idempotency of - // your listings. This helps avoid duplicate listings. For more information, + // A unique, case-sensitive identifier that you provide to ensure the idempotency + // of your listings. This helps to avoid duplicate listings. For more information, // see Ensuring Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). ClientToken *string `locationName:"clientToken" type:"string"` - // Indicates whether running Spot instances should be terminated if the target - // capacity of the Spot fleet request is decreased below the current size of - // the Spot fleet. + // Indicates whether running Spot Instances should be terminated if the target + // capacity of the Spot Fleet request is decreased below the current size of + // the Spot Fleet. ExcessCapacityTerminationPolicy *string `locationName:"excessCapacityTerminationPolicy" type:"string" enum:"ExcessCapacityTerminationPolicy"` // The number of units fulfilled by this request compared to the set target // capacity. FulfilledCapacity *float64 `locationName:"fulfilledCapacity" type:"double"` - // Grants the Spot fleet permission to terminate Spot instances on your behalf - // when you cancel its Spot fleet request using CancelSpotFleetRequests or when - // the Spot fleet request expires, if you set terminateInstancesWithExpiration. + // Grants the Spot Fleet permission to terminate Spot Instances on your behalf + // when you cancel its Spot Fleet request using CancelSpotFleetRequests or when + // the Spot Fleet request expires, if you set terminateInstancesWithExpiration. // // IamFleetRole is a required field IamFleetRole *string `locationName:"iamFleetRole" type:"string" required:"true"` - // Indicates whether a Spot instance stops or terminates when it is interrupted. + // The behavior when a Spot Instance is interrupted. The default is terminate. InstanceInterruptionBehavior *string `locationName:"instanceInterruptionBehavior" type:"string" enum:"InstanceInterruptionBehavior"` - // Information about the launch specifications for the Spot fleet request. - // - // LaunchSpecifications is a required field - LaunchSpecifications []*SpotFleetLaunchSpecification `locationName:"launchSpecifications" locationNameList:"item" min:"1" type:"list" required:"true"` + // The launch specifications for the Spot Fleet request. + LaunchSpecifications []*SpotFleetLaunchSpecification `locationName:"launchSpecifications" locationNameList:"item" type:"list"` - // Indicates whether Spot fleet should replace unhealthy instances. + // The launch template and overrides. + LaunchTemplateConfigs []*LaunchTemplateConfig `locationName:"launchTemplateConfigs" locationNameList:"item" type:"list"` + + // One or more Classic Load Balancers and target groups to attach to the Spot + // Fleet request. Spot Fleet registers the running Spot Instances with the specified + // Classic Load Balancers and target groups. + // + // With Network Load Balancers, Spot Fleet cannot register instances that have + // the following instance types: C1, CC1, CC2, CG1, CG2, CR1, CS1, G1, G2, HI1, + // HS1, M1, M2, M3, and T1. + LoadBalancersConfig *LoadBalancersConfig `locationName:"loadBalancersConfig" type:"structure"` + + // The number of On-Demand units fulfilled by this request compared to the set + // target On-Demand capacity. + OnDemandFulfilledCapacity *float64 `locationName:"onDemandFulfilledCapacity" type:"double"` + + // The number of On-Demand units to request. You can choose to set the target + // capacity in terms of instances or a performance characteristic that is important + // to your application workload, such as vCPUs, memory, or I/O. If the request + // type is maintain, you can specify a target capacity of 0 and add capacity + // later. + OnDemandTargetCapacity *int64 `locationName:"onDemandTargetCapacity" type:"integer"` + + // Indicates whether Spot Fleet should replace unhealthy instances. ReplaceUnhealthyInstances *bool `locationName:"replaceUnhealthyInstances" type:"boolean"` - // The bid price per unit hour. - // - // SpotPrice is a required field - SpotPrice *string `locationName:"spotPrice" type:"string" required:"true"` + // The maximum price per unit hour that you are willing to pay for a Spot Instance. + // The default is the On-Demand price. + SpotPrice *string `locationName:"spotPrice" type:"string"` // The number of units to request. You can choose to set the target capacity // in terms of instances or a performance characteristic that is important to - // your application workload, such as vCPUs, memory, or I/O. + // your application workload, such as vCPUs, memory, or I/O. If the request + // type is maintain, you can specify a target capacity of 0 and add capacity + // later. // // TargetCapacity is a required field TargetCapacity *int64 `locationName:"targetCapacity" type:"integer" required:"true"` - // Indicates whether running Spot instances should be terminated when the Spot - // fleet request expires. + // Indicates whether running Spot Instances should be terminated when the Spot + // Fleet request expires. TerminateInstancesWithExpiration *bool `locationName:"terminateInstancesWithExpiration" type:"boolean"` - // The type of request. Indicates whether the fleet will only request the target - // capacity or also attempt to maintain it. When you request a certain target - // capacity, the fleet will only place the required bids. It will not attempt - // to replenish Spot instances if capacity is diminished, nor will it submit - // bids in alternative Spot pools if capacity is not available. When you want - // to maintain a certain target capacity, fleet will place the required bids - // to meet this target capacity. It will also automatically replenish any interrupted - // instances. Default: maintain. + // The type of request. Indicates whether the Spot Fleet only requests the target + // capacity or also attempts to maintain it. When this value is request, the + // Spot Fleet only places the required requests. It does not attempt to replenish + // Spot Instances if capacity is diminished, nor does it submit requests in + // alternative Spot pools if capacity is not available. To maintain a certain + // target capacity, the Spot Fleet places the required requests to meet capacity + // and automatically replenishes any interrupted instances. Default: maintain. Type *string `locationName:"type" type:"string" enum:"FleetType"` // The start date and time of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). @@ -56096,8 +65495,8 @@ type SpotFleetRequestConfigData struct { ValidFrom *time.Time `locationName:"validFrom" type:"timestamp" timestampFormat:"iso8601"` // The end date and time of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). - // At this point, no new Spot instance requests are placed or enabled to fulfill - // the request. + // At this point, no new Spot Instance requests are placed or able to fulfill + // the request. The default end date is 7 days from the current date. ValidUntil *time.Time `locationName:"validUntil" type:"timestamp" timestampFormat:"iso8601"` } @@ -56117,15 +65516,6 @@ func (s *SpotFleetRequestConfigData) Validate() error { if s.IamFleetRole == nil { invalidParams.Add(request.NewErrParamRequired("IamFleetRole")) } - if s.LaunchSpecifications == nil { - invalidParams.Add(request.NewErrParamRequired("LaunchSpecifications")) - } - if s.LaunchSpecifications != nil && len(s.LaunchSpecifications) < 1 { - invalidParams.Add(request.NewErrParamMinLen("LaunchSpecifications", 1)) - } - if s.SpotPrice == nil { - invalidParams.Add(request.NewErrParamRequired("SpotPrice")) - } if s.TargetCapacity == nil { invalidParams.Add(request.NewErrParamRequired("TargetCapacity")) } @@ -56139,6 +65529,21 @@ func (s *SpotFleetRequestConfigData) Validate() error { } } } + if s.LaunchTemplateConfigs != nil { + for i, v := range s.LaunchTemplateConfigs { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "LaunchTemplateConfigs", i), err.(request.ErrInvalidParams)) + } + } + } + if s.LoadBalancersConfig != nil { + if err := s.LoadBalancersConfig.Validate(); err != nil { + invalidParams.AddNested("LoadBalancersConfig", err.(request.ErrInvalidParams)) + } + } if invalidParams.Len() > 0 { return invalidParams @@ -56188,6 +65593,30 @@ func (s *SpotFleetRequestConfigData) SetLaunchSpecifications(v []*SpotFleetLaunc return s } +// SetLaunchTemplateConfigs sets the LaunchTemplateConfigs field's value. +func (s *SpotFleetRequestConfigData) SetLaunchTemplateConfigs(v []*LaunchTemplateConfig) *SpotFleetRequestConfigData { + s.LaunchTemplateConfigs = v + return s +} + +// SetLoadBalancersConfig sets the LoadBalancersConfig field's value. +func (s *SpotFleetRequestConfigData) SetLoadBalancersConfig(v *LoadBalancersConfig) *SpotFleetRequestConfigData { + s.LoadBalancersConfig = v + return s +} + +// SetOnDemandFulfilledCapacity sets the OnDemandFulfilledCapacity field's value. +func (s *SpotFleetRequestConfigData) SetOnDemandFulfilledCapacity(v float64) *SpotFleetRequestConfigData { + s.OnDemandFulfilledCapacity = &v + return s +} + +// SetOnDemandTargetCapacity sets the OnDemandTargetCapacity field's value. +func (s *SpotFleetRequestConfigData) SetOnDemandTargetCapacity(v int64) *SpotFleetRequestConfigData { + s.OnDemandTargetCapacity = &v + return s +} + // SetReplaceUnhealthyInstances sets the ReplaceUnhealthyInstances field's value. func (s *SpotFleetRequestConfigData) SetReplaceUnhealthyInstances(v bool) *SpotFleetRequestConfigData { s.ReplaceUnhealthyInstances = &v @@ -56230,8 +65659,7 @@ func (s *SpotFleetRequestConfigData) SetValidUntil(v time.Time) *SpotFleetReques return s } -// The tags for a Spot fleet resource. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/SpotFleetTagSpecification +// The tags for a Spot Fleet resource. type SpotFleetTagSpecification struct { _ struct{} `type:"structure"` @@ -56265,70 +65693,67 @@ func (s *SpotFleetTagSpecification) SetTags(v []*Tag) *SpotFleetTagSpecification return s } -// Describes a Spot instance request. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/SpotInstanceRequest +// Describes a Spot Instance request. type SpotInstanceRequest struct { _ struct{} `type:"structure"` - // If you specified a duration and your Spot instance request was fulfilled, - // this is the fixed hourly price in effect for the Spot instance while it runs. + // If you specified a duration and your Spot Instance request was fulfilled, + // this is the fixed hourly price in effect for the Spot Instance while it runs. ActualBlockHourlyPrice *string `locationName:"actualBlockHourlyPrice" type:"string"` // The Availability Zone group. If you specify the same Availability Zone group - // for all Spot instance requests, all Spot instances are launched in the same + // for all Spot Instance requests, all Spot Instances are launched in the same // Availability Zone. AvailabilityZoneGroup *string `locationName:"availabilityZoneGroup" type:"string"` - // The duration for the Spot instance, in minutes. + // The duration for the Spot Instance, in minutes. BlockDurationMinutes *int64 `locationName:"blockDurationMinutes" type:"integer"` - // The date and time when the Spot instance request was created, in UTC format + // The date and time when the Spot Instance request was created, in UTC format // (for example, YYYY-MM-DDTHH:MM:SSZ). CreateTime *time.Time `locationName:"createTime" type:"timestamp" timestampFormat:"iso8601"` - // The fault codes for the Spot instance request, if any. + // The fault codes for the Spot Instance request, if any. Fault *SpotInstanceStateFault `locationName:"fault" type:"structure"` - // The instance ID, if an instance has been launched to fulfill the Spot instance + // The instance ID, if an instance has been launched to fulfill the Spot Instance // request. InstanceId *string `locationName:"instanceId" type:"string"` - // Indicates whether a Spot instance stops or terminates when it is interrupted. + // The behavior when a Spot Instance is interrupted. InstanceInterruptionBehavior *string `locationName:"instanceInterruptionBehavior" type:"string" enum:"InstanceInterruptionBehavior"` - // The instance launch group. Launch groups are Spot instances that launch together + // The instance launch group. Launch groups are Spot Instances that launch together // and terminate together. LaunchGroup *string `locationName:"launchGroup" type:"string"` // Additional information for launching instances. LaunchSpecification *LaunchSpecification `locationName:"launchSpecification" type:"structure"` - // The Availability Zone in which the bid is launched. + // The Availability Zone in which the request is launched. LaunchedAvailabilityZone *string `locationName:"launchedAvailabilityZone" type:"string"` - // The product description associated with the Spot instance. + // The product description associated with the Spot Instance. ProductDescription *string `locationName:"productDescription" type:"string" enum:"RIProductDescription"` - // The ID of the Spot instance request. + // The ID of the Spot Instance request. SpotInstanceRequestId *string `locationName:"spotInstanceRequestId" type:"string"` - // The maximum hourly price (bid) for the Spot instance launched to fulfill - // the request. + // The maximum price per hour that you are willing to pay for a Spot Instance. SpotPrice *string `locationName:"spotPrice" type:"string"` - // The state of the Spot instance request. Spot bid status information can help - // you track your Spot instance requests. For more information, see Spot Bid - // Status (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-bid-status.html) - // in the Amazon Elastic Compute Cloud User Guide. + // The state of the Spot Instance request. Spot status information helps track + // your Spot Instance requests. For more information, see Spot Status (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-bid-status.html) + // in the Amazon EC2 User Guide for Linux Instances. State *string `locationName:"state" type:"string" enum:"SpotInstanceState"` - // The status code and status message describing the Spot instance request. + // The status code and status message describing the Spot Instance request. Status *SpotInstanceStatus `locationName:"status" type:"structure"` // Any tags assigned to the resource. Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` - // The Spot instance request type. + // The Spot Instance request type. Type *string `locationName:"type" type:"string" enum:"SpotInstanceType"` // The start date of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). @@ -56338,7 +65763,8 @@ type SpotInstanceRequest struct { // The end date of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). // If this is a one-time request, it remains active until all instances launch, // the request is canceled, or this date is reached. If the request is persistent, - // it remains active until it is canceled or this date is reached. + // it remains active until it is canceled or this date is reached. The default + // end date is 7 days from the current date. ValidUntil *time.Time `locationName:"validUntil" type:"timestamp" timestampFormat:"iso8601"` } @@ -56466,15 +65892,14 @@ func (s *SpotInstanceRequest) SetValidUntil(v time.Time) *SpotInstanceRequest { return s } -// Describes a Spot instance state change. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/SpotInstanceStateFault +// Describes a Spot Instance state change. type SpotInstanceStateFault struct { _ struct{} `type:"structure"` - // The reason code for the Spot instance state change. + // The reason code for the Spot Instance state change. Code *string `locationName:"code" type:"string"` - // The message for the Spot instance state change. + // The message for the Spot Instance state change. Message *string `locationName:"message" type:"string"` } @@ -56500,13 +65925,12 @@ func (s *SpotInstanceStateFault) SetMessage(v string) *SpotInstanceStateFault { return s } -// Describes the status of a Spot instance request. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/SpotInstanceStatus +// Describes the status of a Spot Instance request. type SpotInstanceStatus struct { _ struct{} `type:"structure"` - // The status code. For a list of status codes, see Spot Bid Status Codes (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-bid-status.html#spot-instance-bid-status-understand) - // in the Amazon Elastic Compute Cloud User Guide. + // The status code. For a list of status codes, see Spot Status Codes (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-bid-status.html#spot-instance-bid-status-understand) + // in the Amazon EC2 User Guide for Linux Instances. Code *string `locationName:"code" type:"string"` // The description for the status code. @@ -56545,23 +65969,157 @@ func (s *SpotInstanceStatus) SetUpdateTime(v time.Time) *SpotInstanceStatus { return s } -// Describes Spot instance placement. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/SpotPlacement +// The options for Spot Instances. +type SpotMarketOptions struct { + _ struct{} `type:"structure"` + + // The required duration for the Spot Instances (also known as Spot blocks), + // in minutes. This value must be a multiple of 60 (60, 120, 180, 240, 300, + // or 360). + BlockDurationMinutes *int64 `type:"integer"` + + // The behavior when a Spot Instance is interrupted. The default is terminate. + InstanceInterruptionBehavior *string `type:"string" enum:"InstanceInterruptionBehavior"` + + // The maximum hourly price you're willing to pay for the Spot Instances. The + // default is the On-Demand price. + MaxPrice *string `type:"string"` + + // The Spot Instance request type. + SpotInstanceType *string `type:"string" enum:"SpotInstanceType"` + + // The end date of the request. For a one-time request, the request remains + // active until all instances launch, the request is canceled, or this date + // is reached. If the request is persistent, it remains active until it is canceled + // or this date and time is reached. The default end date is 7 days from the + // current date. + ValidUntil *time.Time `type:"timestamp" timestampFormat:"iso8601"` +} + +// String returns the string representation +func (s SpotMarketOptions) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SpotMarketOptions) GoString() string { + return s.String() +} + +// SetBlockDurationMinutes sets the BlockDurationMinutes field's value. +func (s *SpotMarketOptions) SetBlockDurationMinutes(v int64) *SpotMarketOptions { + s.BlockDurationMinutes = &v + return s +} + +// SetInstanceInterruptionBehavior sets the InstanceInterruptionBehavior field's value. +func (s *SpotMarketOptions) SetInstanceInterruptionBehavior(v string) *SpotMarketOptions { + s.InstanceInterruptionBehavior = &v + return s +} + +// SetMaxPrice sets the MaxPrice field's value. +func (s *SpotMarketOptions) SetMaxPrice(v string) *SpotMarketOptions { + s.MaxPrice = &v + return s +} + +// SetSpotInstanceType sets the SpotInstanceType field's value. +func (s *SpotMarketOptions) SetSpotInstanceType(v string) *SpotMarketOptions { + s.SpotInstanceType = &v + return s +} + +// SetValidUntil sets the ValidUntil field's value. +func (s *SpotMarketOptions) SetValidUntil(v time.Time) *SpotMarketOptions { + s.ValidUntil = &v + return s +} + +// Describes the configuration of Spot Instances in an EC2 Fleet. +type SpotOptions struct { + _ struct{} `type:"structure"` + + // Indicates how to allocate the target capacity across the Spot pools specified + // by the Spot Fleet request. The default is lowestPrice. + AllocationStrategy *string `locationName:"allocationStrategy" type:"string" enum:"SpotAllocationStrategy"` + + // The behavior when a Spot Instance is interrupted. The default is terminate. + InstanceInterruptionBehavior *string `locationName:"instanceInterruptionBehavior" type:"string" enum:"SpotInstanceInterruptionBehavior"` +} + +// String returns the string representation +func (s SpotOptions) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SpotOptions) GoString() string { + return s.String() +} + +// SetAllocationStrategy sets the AllocationStrategy field's value. +func (s *SpotOptions) SetAllocationStrategy(v string) *SpotOptions { + s.AllocationStrategy = &v + return s +} + +// SetInstanceInterruptionBehavior sets the InstanceInterruptionBehavior field's value. +func (s *SpotOptions) SetInstanceInterruptionBehavior(v string) *SpotOptions { + s.InstanceInterruptionBehavior = &v + return s +} + +// Describes the configuration of Spot Instances in an EC2 Fleet request. +type SpotOptionsRequest struct { + _ struct{} `type:"structure"` + + // Indicates how to allocate the target capacity across the Spot pools specified + // by the Spot Fleet request. The default is lowestPrice. + AllocationStrategy *string `type:"string" enum:"SpotAllocationStrategy"` + + // The behavior when a Spot Instance is interrupted. The default is terminate. + InstanceInterruptionBehavior *string `type:"string" enum:"SpotInstanceInterruptionBehavior"` +} + +// String returns the string representation +func (s SpotOptionsRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SpotOptionsRequest) GoString() string { + return s.String() +} + +// SetAllocationStrategy sets the AllocationStrategy field's value. +func (s *SpotOptionsRequest) SetAllocationStrategy(v string) *SpotOptionsRequest { + s.AllocationStrategy = &v + return s +} + +// SetInstanceInterruptionBehavior sets the InstanceInterruptionBehavior field's value. +func (s *SpotOptionsRequest) SetInstanceInterruptionBehavior(v string) *SpotOptionsRequest { + s.InstanceInterruptionBehavior = &v + return s +} + +// Describes Spot Instance placement. type SpotPlacement struct { _ struct{} `type:"structure"` // The Availability Zone. // - // [Spot fleet only] To specify multiple Availability Zones, separate them using + // [Spot Fleet only] To specify multiple Availability Zones, separate them using // commas; for example, "us-west-2a, us-west-2b". AvailabilityZone *string `locationName:"availabilityZone" type:"string"` - // The name of the placement group (for cluster instances). + // The name of the placement group. GroupName *string `locationName:"groupName" type:"string"` // The tenancy of the instance (if the instance is running in a VPC). An instance // with a tenancy of dedicated runs on single-tenant hardware. The host tenancy - // is not supported for Spot instances. + // is not supported for Spot Instances. Tenancy *string `locationName:"tenancy" type:"string" enum:"Tenancy"` } @@ -56593,22 +66151,21 @@ func (s *SpotPlacement) SetTenancy(v string) *SpotPlacement { return s } -// Describes the maximum hourly price (bid) for any Spot instance launched to -// fulfill the request. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/SpotPrice +// Describes the maximum price per hour that you are willing to pay for a Spot +// Instance. type SpotPrice struct { _ struct{} `type:"structure"` // The Availability Zone. AvailabilityZone *string `locationName:"availabilityZone" type:"string"` - // The instance type. Note that T2 and HS1 instance types are not supported. + // The instance type. InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"` // A general description of the AMI. ProductDescription *string `locationName:"productDescription" type:"string" enum:"RIProductDescription"` - // The maximum price (bid) that you are willing to pay for a Spot instance. + // The maximum price per hour that you are willing to pay for a Spot Instance. SpotPrice *string `locationName:"spotPrice" type:"string"` // The date and time the request was created, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). @@ -56656,7 +66213,6 @@ func (s *SpotPrice) SetTimestamp(v time.Time) *SpotPrice { } // Describes a stale rule in a security group. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/StaleIpPermission type StaleIpPermission struct { _ struct{} `type:"structure"` @@ -56731,7 +66287,6 @@ func (s *StaleIpPermission) SetUserIdGroupPairs(v []*UserIdGroupPair) *StaleIpPe } // Describes a stale security group (a security group that contains stale rules). -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/StaleSecurityGroup type StaleSecurityGroup struct { _ struct{} `type:"structure"` @@ -56803,7 +66358,6 @@ func (s *StaleSecurityGroup) SetVpcId(v string) *StaleSecurityGroup { } // Contains the parameters for StartInstances. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/StartInstancesRequest type StartInstancesInput struct { _ struct{} `type:"structure"` @@ -56864,7 +66418,6 @@ func (s *StartInstancesInput) SetInstanceIds(v []*string) *StartInstancesInput { } // Contains the output of StartInstances. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/StartInstancesResult type StartInstancesOutput struct { _ struct{} `type:"structure"` @@ -56889,7 +66442,6 @@ func (s *StartInstancesOutput) SetStartingInstances(v []*InstanceStateChange) *S } // Describes a state change. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/StateReason type StateReason struct { _ struct{} `type:"structure"` @@ -56898,19 +66450,23 @@ type StateReason struct { // The message for the state change. // - // * Server.InsufficientInstanceCapacity: There was insufficient instance - // capacity to satisfy the launch request. + // * Server.InsufficientInstanceCapacity: There was insufficient capacity + // available to satisfy the launch request. // - // * Server.InternalError: An internal error occurred during instance launch, - // resulting in termination. + // * Server.InternalError: An internal error caused the instance to terminate + // during launch. // // * Server.ScheduledStop: The instance was stopped due to a scheduled retirement. // - // * Server.SpotInstanceTermination: A Spot Instance was terminated due to - // an increase in the market price. + // * Server.SpotInstanceShutdown: The instance was stopped because the number + // of Spot requests with a maximum price equal to or higher than the Spot + // price exceeded available capacity or because of an increase in the Spot + // price. // - // * Client.InternalError: A client error caused the instance to terminate - // on launch. + // * Server.SpotInstanceTermination: The instance was terminated because + // the number of Spot requests with a maximum price equal to or higher than + // the Spot price exceeded available capacity or because of an increase in + // the Spot price. // // * Client.InstanceInitiatedShutdown: The instance was shut down using the // shutdown -h command from the instance. @@ -56918,14 +66474,17 @@ type StateReason struct { // * Client.InstanceTerminated: The instance was terminated or rebooted during // AMI creation. // + // * Client.InternalError: A client error caused the instance to terminate + // during launch. + // + // * Client.InvalidSnapshot.NotFound: The specified snapshot was not found. + // // * Client.UserInitiatedShutdown: The instance was shut down using the Amazon // EC2 API. // // * Client.VolumeLimitExceeded: The limit on the number of EBS volumes or // total storage was exceeded. Decrease usage or request an increase in your - // limits. - // - // * Client.InvalidSnapshot.NotFound: The specified snapshot was not found. + // account limits. Message *string `locationName:"message" type:"string"` } @@ -56952,7 +66511,6 @@ func (s *StateReason) SetMessage(v string) *StateReason { } // Contains the parameters for StopInstances. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/StopInstancesRequest type StopInstancesInput struct { _ struct{} `type:"structure"` @@ -57018,7 +66576,6 @@ func (s *StopInstancesInput) SetInstanceIds(v []*string) *StopInstancesInput { } // Contains the output of StopInstances. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/StopInstancesResult type StopInstancesOutput struct { _ struct{} `type:"structure"` @@ -57043,7 +66600,6 @@ func (s *StopInstancesOutput) SetStoppingInstances(v []*InstanceStateChange) *St } // Describes the storage location for an instance store-backed AMI. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/Storage type Storage struct { _ struct{} `type:"structure"` @@ -57068,7 +66624,6 @@ func (s *Storage) SetS3(v *S3Storage) *Storage { } // Describes a storage location in Amazon S3. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/StorageLocation type StorageLocation struct { _ struct{} `type:"structure"` @@ -57102,7 +66657,6 @@ func (s *StorageLocation) SetKey(v string) *StorageLocation { } // Describes a subnet. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/Subnet type Subnet struct { _ struct{} `type:"structure"` @@ -57220,7 +66774,6 @@ func (s *Subnet) SetVpcId(v string) *Subnet { } // Describes the state of a CIDR block. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/SubnetCidrBlockState type SubnetCidrBlockState struct { _ struct{} `type:"structure"` @@ -57254,7 +66807,6 @@ func (s *SubnetCidrBlockState) SetStatusMessage(v string) *SubnetCidrBlockState } // Describes an IPv6 CIDR block associated with a subnet. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/SubnetIpv6CidrBlockAssociation type SubnetIpv6CidrBlockAssociation struct { _ struct{} `type:"structure"` @@ -57296,8 +66848,32 @@ func (s *SubnetIpv6CidrBlockAssociation) SetIpv6CidrBlockState(v *SubnetCidrBloc return s } +// Describes the T2 instance whose credit option for CPU usage was successfully +// modified. +type SuccessfulInstanceCreditSpecificationItem struct { + _ struct{} `type:"structure"` + + // The ID of the instance. + InstanceId *string `locationName:"instanceId" type:"string"` +} + +// String returns the string representation +func (s SuccessfulInstanceCreditSpecificationItem) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SuccessfulInstanceCreditSpecificationItem) GoString() string { + return s.String() +} + +// SetInstanceId sets the InstanceId field's value. +func (s *SuccessfulInstanceCreditSpecificationItem) SetInstanceId(v string) *SuccessfulInstanceCreditSpecificationItem { + s.InstanceId = &v + return s +} + // Describes a tag. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/Tag type Tag struct { _ struct{} `type:"structure"` @@ -57337,7 +66913,6 @@ func (s *Tag) SetValue(v string) *Tag { } // Describes a tag. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/TagDescription type TagDescription struct { _ struct{} `type:"structure"` @@ -57389,12 +66964,11 @@ func (s *TagDescription) SetValue(v string) *TagDescription { } // The tags to apply to a resource when the resource is being created. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/TagSpecification type TagSpecification struct { _ struct{} `type:"structure"` // The type of resource to tag. Currently, the resource types that support tagging - // on creation are instance and volume. + // on creation are instance, snapshot, and volume. ResourceType *string `locationName:"resourceType" type:"string" enum:"ResourceType"` // The tags to apply to the resource. @@ -57423,8 +66997,132 @@ func (s *TagSpecification) SetTags(v []*Tag) *TagSpecification { return s } +// The number of units to request. You can choose to set the target capacity +// in terms of instances or a performance characteristic that is important to +// your application workload, such as vCPUs, memory, or I/O. If the request +// type is maintain, you can specify a target capacity of 0 and add capacity +// later. +type TargetCapacitySpecification struct { + _ struct{} `type:"structure"` + + // The default TotalTargetCapacity, which is either Spot or On-Demand. + DefaultTargetCapacityType *string `locationName:"defaultTargetCapacityType" type:"string" enum:"DefaultTargetCapacityType"` + + // The number of On-Demand units to request. + OnDemandTargetCapacity *int64 `locationName:"onDemandTargetCapacity" type:"integer"` + + // The maximum number of Spot units to launch. + SpotTargetCapacity *int64 `locationName:"spotTargetCapacity" type:"integer"` + + // The number of units to request, filled using DefaultTargetCapacityType. + TotalTargetCapacity *int64 `locationName:"totalTargetCapacity" type:"integer"` +} + +// String returns the string representation +func (s TargetCapacitySpecification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TargetCapacitySpecification) GoString() string { + return s.String() +} + +// SetDefaultTargetCapacityType sets the DefaultTargetCapacityType field's value. +func (s *TargetCapacitySpecification) SetDefaultTargetCapacityType(v string) *TargetCapacitySpecification { + s.DefaultTargetCapacityType = &v + return s +} + +// SetOnDemandTargetCapacity sets the OnDemandTargetCapacity field's value. +func (s *TargetCapacitySpecification) SetOnDemandTargetCapacity(v int64) *TargetCapacitySpecification { + s.OnDemandTargetCapacity = &v + return s +} + +// SetSpotTargetCapacity sets the SpotTargetCapacity field's value. +func (s *TargetCapacitySpecification) SetSpotTargetCapacity(v int64) *TargetCapacitySpecification { + s.SpotTargetCapacity = &v + return s +} + +// SetTotalTargetCapacity sets the TotalTargetCapacity field's value. +func (s *TargetCapacitySpecification) SetTotalTargetCapacity(v int64) *TargetCapacitySpecification { + s.TotalTargetCapacity = &v + return s +} + +// The number of units to request. You can choose to set the target capacity +// in terms of instances or a performance characteristic that is important to +// your application workload, such as vCPUs, memory, or I/O. If the request +// type is maintain, you can specify a target capacity of 0 and add capacity +// later. +type TargetCapacitySpecificationRequest struct { + _ struct{} `type:"structure"` + + // The default TotalTargetCapacity, which is either Spot or On-Demand. + DefaultTargetCapacityType *string `type:"string" enum:"DefaultTargetCapacityType"` + + // The number of On-Demand units to request. + OnDemandTargetCapacity *int64 `type:"integer"` + + // The number of Spot units to request. + SpotTargetCapacity *int64 `type:"integer"` + + // The number of units to request, filled using DefaultTargetCapacityType. + // + // TotalTargetCapacity is a required field + TotalTargetCapacity *int64 `type:"integer" required:"true"` +} + +// String returns the string representation +func (s TargetCapacitySpecificationRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TargetCapacitySpecificationRequest) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *TargetCapacitySpecificationRequest) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "TargetCapacitySpecificationRequest"} + if s.TotalTargetCapacity == nil { + invalidParams.Add(request.NewErrParamRequired("TotalTargetCapacity")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDefaultTargetCapacityType sets the DefaultTargetCapacityType field's value. +func (s *TargetCapacitySpecificationRequest) SetDefaultTargetCapacityType(v string) *TargetCapacitySpecificationRequest { + s.DefaultTargetCapacityType = &v + return s +} + +// SetOnDemandTargetCapacity sets the OnDemandTargetCapacity field's value. +func (s *TargetCapacitySpecificationRequest) SetOnDemandTargetCapacity(v int64) *TargetCapacitySpecificationRequest { + s.OnDemandTargetCapacity = &v + return s +} + +// SetSpotTargetCapacity sets the SpotTargetCapacity field's value. +func (s *TargetCapacitySpecificationRequest) SetSpotTargetCapacity(v int64) *TargetCapacitySpecificationRequest { + s.SpotTargetCapacity = &v + return s +} + +// SetTotalTargetCapacity sets the TotalTargetCapacity field's value. +func (s *TargetCapacitySpecificationRequest) SetTotalTargetCapacity(v int64) *TargetCapacitySpecificationRequest { + s.TotalTargetCapacity = &v + return s +} + // Information about the Convertible Reserved Instance offering. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/TargetConfiguration type TargetConfiguration struct { _ struct{} `type:"structure"` @@ -57459,7 +67157,6 @@ func (s *TargetConfiguration) SetOfferingId(v string) *TargetConfiguration { } // Details about the target configuration. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/TargetConfigurationRequest type TargetConfigurationRequest struct { _ struct{} `type:"structure"` @@ -57508,8 +67205,99 @@ func (s *TargetConfigurationRequest) SetOfferingId(v string) *TargetConfiguratio return s } +// Describes a load balancer target group. +type TargetGroup struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) of the target group. + // + // Arn is a required field + Arn *string `locationName:"arn" type:"string" required:"true"` +} + +// String returns the string representation +func (s TargetGroup) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TargetGroup) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *TargetGroup) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "TargetGroup"} + if s.Arn == nil { + invalidParams.Add(request.NewErrParamRequired("Arn")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetArn sets the Arn field's value. +func (s *TargetGroup) SetArn(v string) *TargetGroup { + s.Arn = &v + return s +} + +// Describes the target groups to attach to a Spot Fleet. Spot Fleet registers +// the running Spot Instances with these target groups. +type TargetGroupsConfig struct { + _ struct{} `type:"structure"` + + // One or more target groups. + // + // TargetGroups is a required field + TargetGroups []*TargetGroup `locationName:"targetGroups" locationNameList:"item" min:"1" type:"list" required:"true"` +} + +// String returns the string representation +func (s TargetGroupsConfig) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TargetGroupsConfig) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *TargetGroupsConfig) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "TargetGroupsConfig"} + if s.TargetGroups == nil { + invalidParams.Add(request.NewErrParamRequired("TargetGroups")) + } + if s.TargetGroups != nil && len(s.TargetGroups) < 1 { + invalidParams.Add(request.NewErrParamMinLen("TargetGroups", 1)) + } + if s.TargetGroups != nil { + for i, v := range s.TargetGroups { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TargetGroups", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetTargetGroups sets the TargetGroups field's value. +func (s *TargetGroupsConfig) SetTargetGroups(v []*TargetGroup) *TargetGroupsConfig { + s.TargetGroups = v + return s +} + // The total value of the new Convertible Reserved Instances. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/TargetReservationValue type TargetReservationValue struct { _ struct{} `type:"structure"` @@ -57546,7 +67334,6 @@ func (s *TargetReservationValue) SetTargetConfiguration(v *TargetConfiguration) } // Contains the parameters for TerminateInstances. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/TerminateInstancesRequest type TerminateInstancesInput struct { _ struct{} `type:"structure"` @@ -57601,7 +67388,6 @@ func (s *TerminateInstancesInput) SetInstanceIds(v []*string) *TerminateInstance } // Contains the output of TerminateInstances. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/TerminateInstancesResult type TerminateInstancesOutput struct { _ struct{} `type:"structure"` @@ -57625,7 +67411,6 @@ func (s *TerminateInstancesOutput) SetTerminatingInstances(v []*InstanceStateCha return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UnassignIpv6AddressesRequest type UnassignIpv6AddressesInput struct { _ struct{} `type:"structure"` @@ -57678,7 +67463,6 @@ func (s *UnassignIpv6AddressesInput) SetNetworkInterfaceId(v string) *UnassignIp return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UnassignIpv6AddressesResult type UnassignIpv6AddressesOutput struct { _ struct{} `type:"structure"` @@ -57712,7 +67496,6 @@ func (s *UnassignIpv6AddressesOutput) SetUnassignedIpv6Addresses(v []*string) *U } // Contains the parameters for UnassignPrivateIpAddresses. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UnassignPrivateIpAddressesRequest type UnassignPrivateIpAddressesInput struct { _ struct{} `type:"structure"` @@ -57766,7 +67549,6 @@ func (s *UnassignPrivateIpAddressesInput) SetPrivateIpAddresses(v []*string) *Un return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UnassignPrivateIpAddressesOutput type UnassignPrivateIpAddressesOutput struct { _ struct{} `type:"structure"` } @@ -57782,7 +67564,6 @@ func (s UnassignPrivateIpAddressesOutput) GoString() string { } // Contains the parameters for UnmonitorInstances. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UnmonitorInstancesRequest type UnmonitorInstancesInput struct { _ struct{} `type:"structure"` @@ -57834,7 +67615,6 @@ func (s *UnmonitorInstancesInput) SetInstanceIds(v []*string) *UnmonitorInstance } // Contains the output of UnmonitorInstances. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UnmonitorInstancesResult type UnmonitorInstancesOutput struct { _ struct{} `type:"structure"` @@ -57858,8 +67638,75 @@ func (s *UnmonitorInstancesOutput) SetInstanceMonitorings(v []*InstanceMonitorin return s } +// Describes the T2 instance whose credit option for CPU usage was not modified. +type UnsuccessfulInstanceCreditSpecificationItem struct { + _ struct{} `type:"structure"` + + // The applicable error for the T2 instance whose credit option for CPU usage + // was not modified. + Error *UnsuccessfulInstanceCreditSpecificationItemError `locationName:"error" type:"structure"` + + // The ID of the instance. + InstanceId *string `locationName:"instanceId" type:"string"` +} + +// String returns the string representation +func (s UnsuccessfulInstanceCreditSpecificationItem) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UnsuccessfulInstanceCreditSpecificationItem) GoString() string { + return s.String() +} + +// SetError sets the Error field's value. +func (s *UnsuccessfulInstanceCreditSpecificationItem) SetError(v *UnsuccessfulInstanceCreditSpecificationItemError) *UnsuccessfulInstanceCreditSpecificationItem { + s.Error = v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *UnsuccessfulInstanceCreditSpecificationItem) SetInstanceId(v string) *UnsuccessfulInstanceCreditSpecificationItem { + s.InstanceId = &v + return s +} + +// Information about the error for the T2 instance whose credit option for CPU +// usage was not modified. +type UnsuccessfulInstanceCreditSpecificationItemError struct { + _ struct{} `type:"structure"` + + // The error code. + Code *string `locationName:"code" type:"string" enum:"UnsuccessfulInstanceCreditSpecificationErrorCode"` + + // The applicable error message. + Message *string `locationName:"message" type:"string"` +} + +// String returns the string representation +func (s UnsuccessfulInstanceCreditSpecificationItemError) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UnsuccessfulInstanceCreditSpecificationItemError) GoString() string { + return s.String() +} + +// SetCode sets the Code field's value. +func (s *UnsuccessfulInstanceCreditSpecificationItemError) SetCode(v string) *UnsuccessfulInstanceCreditSpecificationItemError { + s.Code = &v + return s +} + +// SetMessage sets the Message field's value. +func (s *UnsuccessfulInstanceCreditSpecificationItemError) SetMessage(v string) *UnsuccessfulInstanceCreditSpecificationItemError { + s.Message = &v + return s +} + // Information about items that were not successfully processed in a batch call. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UnsuccessfulItem type UnsuccessfulItem struct { _ struct{} `type:"structure"` @@ -57896,7 +67743,6 @@ func (s *UnsuccessfulItem) SetResourceId(v string) *UnsuccessfulItem { // Information about the error that occurred. For more information about errors, // see Error Codes (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html). -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UnsuccessfulItemError type UnsuccessfulItemError struct { _ struct{} `type:"structure"` @@ -57934,7 +67780,6 @@ func (s *UnsuccessfulItemError) SetMessage(v string) *UnsuccessfulItemError { } // Contains the parameters for UpdateSecurityGroupRuleDescriptionsEgress. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UpdateSecurityGroupRuleDescriptionsEgressRequest type UpdateSecurityGroupRuleDescriptionsEgressInput struct { _ struct{} `type:"structure"` @@ -58007,7 +67852,6 @@ func (s *UpdateSecurityGroupRuleDescriptionsEgressInput) SetIpPermissions(v []*I } // Contains the output of UpdateSecurityGroupRuleDescriptionsEgress. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UpdateSecurityGroupRuleDescriptionsEgressResult type UpdateSecurityGroupRuleDescriptionsEgressOutput struct { _ struct{} `type:"structure"` @@ -58032,7 +67876,6 @@ func (s *UpdateSecurityGroupRuleDescriptionsEgressOutput) SetReturn(v bool) *Upd } // Contains the parameters for UpdateSecurityGroupRuleDescriptionsIngress. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UpdateSecurityGroupRuleDescriptionsIngressRequest type UpdateSecurityGroupRuleDescriptionsIngressInput struct { _ struct{} `type:"structure"` @@ -58105,7 +67948,6 @@ func (s *UpdateSecurityGroupRuleDescriptionsIngressInput) SetIpPermissions(v []* } // Contains the output of UpdateSecurityGroupRuleDescriptionsIngress. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UpdateSecurityGroupRuleDescriptionsIngressResult type UpdateSecurityGroupRuleDescriptionsIngressOutput struct { _ struct{} `type:"structure"` @@ -58130,7 +67972,6 @@ func (s *UpdateSecurityGroupRuleDescriptionsIngressOutput) SetReturn(v bool) *Up } // Describes the S3 bucket for the disk image. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UserBucket type UserBucket struct { _ struct{} `type:"structure"` @@ -58164,7 +68005,6 @@ func (s *UserBucket) SetS3Key(v string) *UserBucket { } // Describes the S3 bucket for the disk image. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UserBucketDetails type UserBucketDetails struct { _ struct{} `type:"structure"` @@ -58198,7 +68038,6 @@ func (s *UserBucketDetails) SetS3Key(v string) *UserBucketDetails { } // Describes the user data for an instance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UserData type UserData struct { _ struct{} `type:"structure"` @@ -58225,7 +68064,6 @@ func (s *UserData) SetData(v string) *UserData { } // Describes a security group and AWS account ID pair. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UserIdGroupPair type UserIdGroupPair struct { _ struct{} `type:"structure"` @@ -58242,13 +68080,19 @@ type UserIdGroupPair struct { // The name of the security group. In a request, use this parameter for a security // group in EC2-Classic or a default VPC only. For a security group in a nondefault // VPC, use the security group ID. + // + // For a referenced security group in another VPC, this value is not returned + // if the referenced security group is deleted. GroupName *string `locationName:"groupName" type:"string"` // The status of a VPC peering connection, if applicable. PeeringStatus *string `locationName:"peeringStatus" type:"string"` - // The ID of an AWS account. For a referenced security group in another VPC, - // the account ID of the referenced security group is returned. + // The ID of an AWS account. + // + // For a referenced security group in another VPC, the account ID of the referenced + // security group is returned in the response. If the referenced security group + // is deleted, this value is not returned. // // [EC2-Classic] Required when adding or removing rules that reference a security // group in another AWS account. @@ -58314,7 +68158,6 @@ func (s *UserIdGroupPair) SetVpcPeeringConnectionId(v string) *UserIdGroupPair { } // Describes telemetry for a VPN tunnel. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/VgwTelemetry type VgwTelemetry struct { _ struct{} `type:"structure"` @@ -58376,7 +68219,6 @@ func (s *VgwTelemetry) SetStatusMessage(v string) *VgwTelemetry { } // Describes a volume. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/Volume type Volume struct { _ struct{} `type:"structure"` @@ -58400,7 +68242,7 @@ type Volume struct { // performance, I/O credits, and bursting, see Amazon EBS Volume Types (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html) // in the Amazon Elastic Compute Cloud User Guide. // - // Constraint: Range is 100-20000 IOPS for io1 volumes and 100-10000 IOPS for + // Constraint: Range is 100-32000 IOPS for io1 volumes and 100-10000 IOPS for // gp2 volumes. // // Condition: This parameter is required for requests to create io1 volumes; @@ -58515,7 +68357,6 @@ func (s *Volume) SetVolumeType(v string) *Volume { } // Describes volume attachment details. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/VolumeAttachment type VolumeAttachment struct { _ struct{} `type:"structure"` @@ -58585,7 +68426,6 @@ func (s *VolumeAttachment) SetVolumeId(v string) *VolumeAttachment { } // Describes an EBS volume. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/VolumeDetail type VolumeDetail struct { _ struct{} `type:"structure"` @@ -58627,7 +68467,6 @@ func (s *VolumeDetail) SetSize(v int64) *VolumeDetail { // Describes the modification status of an EBS volume. // // If the volume has never been modified, some element values will be null. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/VolumeModification type VolumeModification struct { _ struct{} `type:"structure"` @@ -58752,7 +68591,6 @@ func (s *VolumeModification) SetVolumeId(v string) *VolumeModification { } // Describes a volume status operation code. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/VolumeStatusAction type VolumeStatusAction struct { _ struct{} `type:"structure"` @@ -58804,7 +68642,6 @@ func (s *VolumeStatusAction) SetEventType(v string) *VolumeStatusAction { } // Describes a volume status. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/VolumeStatusDetails type VolumeStatusDetails struct { _ struct{} `type:"structure"` @@ -58838,7 +68675,6 @@ func (s *VolumeStatusDetails) SetStatus(v string) *VolumeStatusDetails { } // Describes a volume status event. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/VolumeStatusEvent type VolumeStatusEvent struct { _ struct{} `type:"structure"` @@ -58899,7 +68735,6 @@ func (s *VolumeStatusEvent) SetNotBefore(v time.Time) *VolumeStatusEvent { } // Describes the status of a volume. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/VolumeStatusInfo type VolumeStatusInfo struct { _ struct{} `type:"structure"` @@ -58933,7 +68768,6 @@ func (s *VolumeStatusInfo) SetStatus(v string) *VolumeStatusInfo { } // Describes the volume status. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/VolumeStatusItem type VolumeStatusItem struct { _ struct{} `type:"structure"` @@ -58994,7 +68828,6 @@ func (s *VolumeStatusItem) SetVolumeStatus(v *VolumeStatusInfo) *VolumeStatusIte } // Describes a VPC. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/Vpc type Vpc struct { _ struct{} `type:"structure"` @@ -59092,7 +68925,6 @@ func (s *Vpc) SetVpcId(v string) *Vpc { } // Describes an attachment between a virtual private gateway and a VPC. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/VpcAttachment type VpcAttachment struct { _ struct{} `type:"structure"` @@ -59126,7 +68958,6 @@ func (s *VpcAttachment) SetVpcId(v string) *VpcAttachment { } // Describes an IPv4 CIDR block associated with a VPC. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/VpcCidrBlockAssociation type VpcCidrBlockAssociation struct { _ struct{} `type:"structure"` @@ -59169,7 +69000,6 @@ func (s *VpcCidrBlockAssociation) SetCidrBlockState(v *VpcCidrBlockState) *VpcCi } // Describes the state of a CIDR block. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/VpcCidrBlockState type VpcCidrBlockState struct { _ struct{} `type:"structure"` @@ -59203,7 +69033,6 @@ func (s *VpcCidrBlockState) SetStatusMessage(v string) *VpcCidrBlockState { } // Describes whether a VPC is enabled for ClassicLink. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/VpcClassicLink type VpcClassicLink struct { _ struct{} `type:"structure"` @@ -59246,28 +69075,47 @@ func (s *VpcClassicLink) SetVpcId(v string) *VpcClassicLink { } // Describes a VPC endpoint. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/VpcEndpoint type VpcEndpoint struct { _ struct{} `type:"structure"` // The date and time the VPC endpoint was created. CreationTimestamp *time.Time `locationName:"creationTimestamp" type:"timestamp" timestampFormat:"iso8601"` - // The policy document associated with the endpoint. + // (Interface endpoint) The DNS entries for the endpoint. + DnsEntries []*DnsEntry `locationName:"dnsEntrySet" locationNameList:"item" type:"list"` + + // (Interface endpoint) Information about the security groups associated with + // the network interface. + Groups []*SecurityGroupIdentifier `locationName:"groupSet" locationNameList:"item" type:"list"` + + // (Interface endpoint) One or more network interfaces for the endpoint. + NetworkInterfaceIds []*string `locationName:"networkInterfaceIdSet" locationNameList:"item" type:"list"` + + // The policy document associated with the endpoint, if applicable. PolicyDocument *string `locationName:"policyDocument" type:"string"` - // One or more route tables associated with the endpoint. + // (Interface endpoint) Indicates whether the VPC is associated with a private + // hosted zone. + PrivateDnsEnabled *bool `locationName:"privateDnsEnabled" type:"boolean"` + + // (Gateway endpoint) One or more route tables associated with the endpoint. RouteTableIds []*string `locationName:"routeTableIdSet" locationNameList:"item" type:"list"` - // The name of the AWS service to which the endpoint is associated. + // The name of the service to which the endpoint is associated. ServiceName *string `locationName:"serviceName" type:"string"` // The state of the VPC endpoint. State *string `locationName:"state" type:"string" enum:"State"` + // (Interface endpoint) One or more subnets in which the endpoint is located. + SubnetIds []*string `locationName:"subnetIdSet" locationNameList:"item" type:"list"` + // The ID of the VPC endpoint. VpcEndpointId *string `locationName:"vpcEndpointId" type:"string"` + // The type of endpoint. + VpcEndpointType *string `locationName:"vpcEndpointType" type:"string" enum:"VpcEndpointType"` + // The ID of the VPC to which the endpoint is associated. VpcId *string `locationName:"vpcId" type:"string"` } @@ -59288,12 +69136,36 @@ func (s *VpcEndpoint) SetCreationTimestamp(v time.Time) *VpcEndpoint { return s } +// SetDnsEntries sets the DnsEntries field's value. +func (s *VpcEndpoint) SetDnsEntries(v []*DnsEntry) *VpcEndpoint { + s.DnsEntries = v + return s +} + +// SetGroups sets the Groups field's value. +func (s *VpcEndpoint) SetGroups(v []*SecurityGroupIdentifier) *VpcEndpoint { + s.Groups = v + return s +} + +// SetNetworkInterfaceIds sets the NetworkInterfaceIds field's value. +func (s *VpcEndpoint) SetNetworkInterfaceIds(v []*string) *VpcEndpoint { + s.NetworkInterfaceIds = v + return s +} + // SetPolicyDocument sets the PolicyDocument field's value. func (s *VpcEndpoint) SetPolicyDocument(v string) *VpcEndpoint { s.PolicyDocument = &v return s } +// SetPrivateDnsEnabled sets the PrivateDnsEnabled field's value. +func (s *VpcEndpoint) SetPrivateDnsEnabled(v bool) *VpcEndpoint { + s.PrivateDnsEnabled = &v + return s +} + // SetRouteTableIds sets the RouteTableIds field's value. func (s *VpcEndpoint) SetRouteTableIds(v []*string) *VpcEndpoint { s.RouteTableIds = v @@ -59312,20 +69184,91 @@ func (s *VpcEndpoint) SetState(v string) *VpcEndpoint { return s } +// SetSubnetIds sets the SubnetIds field's value. +func (s *VpcEndpoint) SetSubnetIds(v []*string) *VpcEndpoint { + s.SubnetIds = v + return s +} + // SetVpcEndpointId sets the VpcEndpointId field's value. func (s *VpcEndpoint) SetVpcEndpointId(v string) *VpcEndpoint { s.VpcEndpointId = &v return s } +// SetVpcEndpointType sets the VpcEndpointType field's value. +func (s *VpcEndpoint) SetVpcEndpointType(v string) *VpcEndpoint { + s.VpcEndpointType = &v + return s +} + // SetVpcId sets the VpcId field's value. func (s *VpcEndpoint) SetVpcId(v string) *VpcEndpoint { s.VpcId = &v return s } +// Describes a VPC endpoint connection to a service. +type VpcEndpointConnection struct { + _ struct{} `type:"structure"` + + // The date and time the VPC endpoint was created. + CreationTimestamp *time.Time `locationName:"creationTimestamp" type:"timestamp" timestampFormat:"iso8601"` + + // The ID of the service to which the endpoint is connected. + ServiceId *string `locationName:"serviceId" type:"string"` + + // The ID of the VPC endpoint. + VpcEndpointId *string `locationName:"vpcEndpointId" type:"string"` + + // The AWS account ID of the owner of the VPC endpoint. + VpcEndpointOwner *string `locationName:"vpcEndpointOwner" type:"string"` + + // The state of the VPC endpoint. + VpcEndpointState *string `locationName:"vpcEndpointState" type:"string" enum:"State"` +} + +// String returns the string representation +func (s VpcEndpointConnection) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s VpcEndpointConnection) GoString() string { + return s.String() +} + +// SetCreationTimestamp sets the CreationTimestamp field's value. +func (s *VpcEndpointConnection) SetCreationTimestamp(v time.Time) *VpcEndpointConnection { + s.CreationTimestamp = &v + return s +} + +// SetServiceId sets the ServiceId field's value. +func (s *VpcEndpointConnection) SetServiceId(v string) *VpcEndpointConnection { + s.ServiceId = &v + return s +} + +// SetVpcEndpointId sets the VpcEndpointId field's value. +func (s *VpcEndpointConnection) SetVpcEndpointId(v string) *VpcEndpointConnection { + s.VpcEndpointId = &v + return s +} + +// SetVpcEndpointOwner sets the VpcEndpointOwner field's value. +func (s *VpcEndpointConnection) SetVpcEndpointOwner(v string) *VpcEndpointConnection { + s.VpcEndpointOwner = &v + return s +} + +// SetVpcEndpointState sets the VpcEndpointState field's value. +func (s *VpcEndpointConnection) SetVpcEndpointState(v string) *VpcEndpointConnection { + s.VpcEndpointState = &v + return s +} + // Describes an IPv6 CIDR block associated with a VPC. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/VpcIpv6CidrBlockAssociation type VpcIpv6CidrBlockAssociation struct { _ struct{} `type:"structure"` @@ -59368,7 +69311,6 @@ func (s *VpcIpv6CidrBlockAssociation) SetIpv6CidrBlockState(v *VpcCidrBlockState } // Describes a VPC peering connection. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/VpcPeeringConnection type VpcPeeringConnection struct { _ struct{} `type:"structure"` @@ -59440,7 +69382,6 @@ func (s *VpcPeeringConnection) SetVpcPeeringConnectionId(v string) *VpcPeeringCo } // Describes the VPC peering connection options. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/VpcPeeringConnectionOptionsDescription type VpcPeeringConnectionOptionsDescription struct { _ struct{} `type:"structure"` @@ -59486,7 +69427,6 @@ func (s *VpcPeeringConnectionOptionsDescription) SetAllowEgressFromLocalVpcToRem } // Describes the status of a VPC peering connection. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/VpcPeeringConnectionStateReason type VpcPeeringConnectionStateReason struct { _ struct{} `type:"structure"` @@ -59520,7 +69460,6 @@ func (s *VpcPeeringConnectionStateReason) SetMessage(v string) *VpcPeeringConnec } // Describes a VPC in a VPC peering connection. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/VpcPeeringConnectionVpcInfo type VpcPeeringConnectionVpcInfo struct { _ struct{} `type:"structure"` @@ -59540,6 +69479,9 @@ type VpcPeeringConnectionVpcInfo struct { // requester VPC. PeeringOptions *VpcPeeringConnectionOptionsDescription `locationName:"peeringOptions" type:"structure"` + // The region in which the VPC is located. + Region *string `locationName:"region" type:"string"` + // The ID of the VPC. VpcId *string `locationName:"vpcId" type:"string"` } @@ -59584,6 +69526,12 @@ func (s *VpcPeeringConnectionVpcInfo) SetPeeringOptions(v *VpcPeeringConnectionO return s } +// SetRegion sets the Region field's value. +func (s *VpcPeeringConnectionVpcInfo) SetRegion(v string) *VpcPeeringConnectionVpcInfo { + s.Region = &v + return s +} + // SetVpcId sets the VpcId field's value. func (s *VpcPeeringConnectionVpcInfo) SetVpcId(v string) *VpcPeeringConnectionVpcInfo { s.VpcId = &v @@ -59591,7 +69539,6 @@ func (s *VpcPeeringConnectionVpcInfo) SetVpcId(v string) *VpcPeeringConnectionVp } // Describes a VPN connection. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/VpnConnection type VpnConnection struct { _ struct{} `type:"structure"` @@ -59712,7 +69659,6 @@ func (s *VpnConnection) SetVpnGatewayId(v string) *VpnConnection { } // Describes VPN connection options. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/VpnConnectionOptions type VpnConnectionOptions struct { _ struct{} `type:"structure"` @@ -59738,13 +69684,12 @@ func (s *VpnConnectionOptions) SetStaticRoutesOnly(v bool) *VpnConnectionOptions } // Describes VPN connection options. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/VpnConnectionOptionsSpecification type VpnConnectionOptionsSpecification struct { _ struct{} `type:"structure"` // Indicate whether the VPN connection uses static routes only. If you are creating // a VPN connection for a device that does not support BGP, you must specify - // true. + // true. Use CreateVpnConnectionRoute to create a static route. // // Default: false StaticRoutesOnly *bool `locationName:"staticRoutesOnly" type:"boolean"` @@ -59776,10 +69721,12 @@ func (s *VpnConnectionOptionsSpecification) SetTunnelOptions(v []*VpnTunnelOptio } // Describes a virtual private gateway. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/VpnGateway type VpnGateway struct { _ struct{} `type:"structure"` + // The private Autonomous System Number (ASN) for the Amazon side of a BGP session. + AmazonSideAsn *int64 `locationName:"amazonSideAsn" type:"long"` + // The Availability Zone where the virtual private gateway was created, if applicable. // This field may be empty or not returned. AvailabilityZone *string `locationName:"availabilityZone" type:"string"` @@ -59810,6 +69757,12 @@ func (s VpnGateway) GoString() string { return s.String() } +// SetAmazonSideAsn sets the AmazonSideAsn field's value. +func (s *VpnGateway) SetAmazonSideAsn(v int64) *VpnGateway { + s.AmazonSideAsn = &v + return s +} + // SetAvailabilityZone sets the AvailabilityZone field's value. func (s *VpnGateway) SetAvailabilityZone(v string) *VpnGateway { s.AvailabilityZone = &v @@ -59847,7 +69800,6 @@ func (s *VpnGateway) SetVpnGatewayId(v string) *VpnGateway { } // Describes a static route for a VPN connection. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/VpnStaticRoute type VpnStaticRoute struct { _ struct{} `type:"structure"` @@ -59890,7 +69842,6 @@ func (s *VpnStaticRoute) SetState(v string) *VpnStaticRoute { } // The tunnel options for a VPN connection. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/VpnTunnelOptionsSpecification type VpnTunnelOptionsSpecification struct { _ struct{} `type:"structure"` @@ -60122,6 +70073,19 @@ const ( CancelSpotInstanceRequestStateCompleted = "completed" ) +const ( + // ConnectionNotificationStateEnabled is a ConnectionNotificationState enum value + ConnectionNotificationStateEnabled = "Enabled" + + // ConnectionNotificationStateDisabled is a ConnectionNotificationState enum value + ConnectionNotificationStateDisabled = "Disabled" +) + +const ( + // ConnectionNotificationTypeTopic is a ConnectionNotificationType enum value + ConnectionNotificationTypeTopic = "Topic" +) + const ( // ContainerFormatOva is a ContainerFormat enum value ContainerFormatOva = "ova" @@ -60154,6 +70118,28 @@ const ( DatafeedSubscriptionStateInactive = "Inactive" ) +const ( + // DefaultTargetCapacityTypeSpot is a DefaultTargetCapacityType enum value + DefaultTargetCapacityTypeSpot = "spot" + + // DefaultTargetCapacityTypeOnDemand is a DefaultTargetCapacityType enum value + DefaultTargetCapacityTypeOnDemand = "on-demand" +) + +const ( + // DeleteFleetErrorCodeFleetIdDoesNotExist is a DeleteFleetErrorCode enum value + DeleteFleetErrorCodeFleetIdDoesNotExist = "fleetIdDoesNotExist" + + // DeleteFleetErrorCodeFleetIdMalformed is a DeleteFleetErrorCode enum value + DeleteFleetErrorCodeFleetIdMalformed = "fleetIdMalformed" + + // DeleteFleetErrorCodeFleetNotInDeletableState is a DeleteFleetErrorCode enum value + DeleteFleetErrorCodeFleetNotInDeletableState = "fleetNotInDeletableState" + + // DeleteFleetErrorCodeUnexpectedError is a DeleteFleetErrorCode enum value + DeleteFleetErrorCodeUnexpectedError = "unexpectedError" +) + const ( // DeviceTypeEbs is a DeviceType enum value DeviceTypeEbs = "ebs" @@ -60255,6 +70241,62 @@ const ( ExportTaskStateCompleted = "completed" ) +const ( + // FleetActivityStatusError is a FleetActivityStatus enum value + FleetActivityStatusError = "error" + + // FleetActivityStatusPendingFulfillment is a FleetActivityStatus enum value + FleetActivityStatusPendingFulfillment = "pending-fulfillment" + + // FleetActivityStatusPendingTermination is a FleetActivityStatus enum value + FleetActivityStatusPendingTermination = "pending-termination" + + // FleetActivityStatusFulfilled is a FleetActivityStatus enum value + FleetActivityStatusFulfilled = "fulfilled" +) + +const ( + // FleetEventTypeInstanceChange is a FleetEventType enum value + FleetEventTypeInstanceChange = "instance-change" + + // FleetEventTypeFleetChange is a FleetEventType enum value + FleetEventTypeFleetChange = "fleet-change" + + // FleetEventTypeServiceError is a FleetEventType enum value + FleetEventTypeServiceError = "service-error" +) + +const ( + // FleetExcessCapacityTerminationPolicyNoTermination is a FleetExcessCapacityTerminationPolicy enum value + FleetExcessCapacityTerminationPolicyNoTermination = "no-termination" + + // FleetExcessCapacityTerminationPolicyTermination is a FleetExcessCapacityTerminationPolicy enum value + FleetExcessCapacityTerminationPolicyTermination = "termination" +) + +const ( + // FleetStateCodeSubmitted is a FleetStateCode enum value + FleetStateCodeSubmitted = "submitted" + + // FleetStateCodeActive is a FleetStateCode enum value + FleetStateCodeActive = "active" + + // FleetStateCodeDeleted is a FleetStateCode enum value + FleetStateCodeDeleted = "deleted" + + // FleetStateCodeFailed is a FleetStateCode enum value + FleetStateCodeFailed = "failed" + + // FleetStateCodeDeletedRunning is a FleetStateCode enum value + FleetStateCodeDeletedRunning = "deleted-running" + + // FleetStateCodeDeletedTerminating is a FleetStateCode enum value + FleetStateCodeDeletedTerminating = "deleted-terminating" + + // FleetStateCodeModifying is a FleetStateCode enum value + FleetStateCodeModifying = "modifying" +) + const ( // FleetTypeRequest is a FleetType enum value FleetTypeRequest = "request" @@ -60447,6 +70489,9 @@ const ( ) const ( + // InstanceInterruptionBehaviorHibernate is a InstanceInterruptionBehavior enum value + InstanceInterruptionBehaviorHibernate = "hibernate" + // InstanceInterruptionBehaviorStop is a InstanceInterruptionBehavior enum value InstanceInterruptionBehaviorStop = "stop" @@ -60600,6 +70645,21 @@ const ( // InstanceTypeX132xlarge is a InstanceType enum value InstanceTypeX132xlarge = "x1.32xlarge" + // InstanceTypeX1eXlarge is a InstanceType enum value + InstanceTypeX1eXlarge = "x1e.xlarge" + + // InstanceTypeX1e2xlarge is a InstanceType enum value + InstanceTypeX1e2xlarge = "x1e.2xlarge" + + // InstanceTypeX1e4xlarge is a InstanceType enum value + InstanceTypeX1e4xlarge = "x1e.4xlarge" + + // InstanceTypeX1e8xlarge is a InstanceType enum value + InstanceTypeX1e8xlarge = "x1e.8xlarge" + + // InstanceTypeX1e16xlarge is a InstanceType enum value + InstanceTypeX1e16xlarge = "x1e.16xlarge" + // InstanceTypeX1e32xlarge is a InstanceType enum value InstanceTypeX1e32xlarge = "x1e.32xlarge" @@ -60633,6 +70693,9 @@ const ( // InstanceTypeI316xlarge is a InstanceType enum value InstanceTypeI316xlarge = "i3.16xlarge" + // InstanceTypeI3Metal is a InstanceType enum value + InstanceTypeI3Metal = "i3.metal" + // InstanceTypeHi14xlarge is a InstanceType enum value InstanceTypeHi14xlarge = "hi1.4xlarge" @@ -60675,6 +70738,42 @@ const ( // InstanceTypeC48xlarge is a InstanceType enum value InstanceTypeC48xlarge = "c4.8xlarge" + // InstanceTypeC5Large is a InstanceType enum value + InstanceTypeC5Large = "c5.large" + + // InstanceTypeC5Xlarge is a InstanceType enum value + InstanceTypeC5Xlarge = "c5.xlarge" + + // InstanceTypeC52xlarge is a InstanceType enum value + InstanceTypeC52xlarge = "c5.2xlarge" + + // InstanceTypeC54xlarge is a InstanceType enum value + InstanceTypeC54xlarge = "c5.4xlarge" + + // InstanceTypeC59xlarge is a InstanceType enum value + InstanceTypeC59xlarge = "c5.9xlarge" + + // InstanceTypeC518xlarge is a InstanceType enum value + InstanceTypeC518xlarge = "c5.18xlarge" + + // InstanceTypeC5dLarge is a InstanceType enum value + InstanceTypeC5dLarge = "c5d.large" + + // InstanceTypeC5dXlarge is a InstanceType enum value + InstanceTypeC5dXlarge = "c5d.xlarge" + + // InstanceTypeC5d2xlarge is a InstanceType enum value + InstanceTypeC5d2xlarge = "c5d.2xlarge" + + // InstanceTypeC5d4xlarge is a InstanceType enum value + InstanceTypeC5d4xlarge = "c5d.4xlarge" + + // InstanceTypeC5d9xlarge is a InstanceType enum value + InstanceTypeC5d9xlarge = "c5d.9xlarge" + + // InstanceTypeC5d18xlarge is a InstanceType enum value + InstanceTypeC5d18xlarge = "c5d.18xlarge" + // InstanceTypeCc14xlarge is a InstanceType enum value InstanceTypeCc14xlarge = "cc1.4xlarge" @@ -60708,6 +70807,15 @@ const ( // InstanceTypeP216xlarge is a InstanceType enum value InstanceTypeP216xlarge = "p2.16xlarge" + // InstanceTypeP32xlarge is a InstanceType enum value + InstanceTypeP32xlarge = "p3.2xlarge" + + // InstanceTypeP38xlarge is a InstanceType enum value + InstanceTypeP38xlarge = "p3.8xlarge" + + // InstanceTypeP316xlarge is a InstanceType enum value + InstanceTypeP316xlarge = "p3.16xlarge" + // InstanceTypeD2Xlarge is a InstanceType enum value InstanceTypeD2Xlarge = "d2.xlarge" @@ -60725,6 +70833,54 @@ const ( // InstanceTypeF116xlarge is a InstanceType enum value InstanceTypeF116xlarge = "f1.16xlarge" + + // InstanceTypeM5Large is a InstanceType enum value + InstanceTypeM5Large = "m5.large" + + // InstanceTypeM5Xlarge is a InstanceType enum value + InstanceTypeM5Xlarge = "m5.xlarge" + + // InstanceTypeM52xlarge is a InstanceType enum value + InstanceTypeM52xlarge = "m5.2xlarge" + + // InstanceTypeM54xlarge is a InstanceType enum value + InstanceTypeM54xlarge = "m5.4xlarge" + + // InstanceTypeM512xlarge is a InstanceType enum value + InstanceTypeM512xlarge = "m5.12xlarge" + + // InstanceTypeM524xlarge is a InstanceType enum value + InstanceTypeM524xlarge = "m5.24xlarge" + + // InstanceTypeM5dLarge is a InstanceType enum value + InstanceTypeM5dLarge = "m5d.large" + + // InstanceTypeM5dXlarge is a InstanceType enum value + InstanceTypeM5dXlarge = "m5d.xlarge" + + // InstanceTypeM5d2xlarge is a InstanceType enum value + InstanceTypeM5d2xlarge = "m5d.2xlarge" + + // InstanceTypeM5d4xlarge is a InstanceType enum value + InstanceTypeM5d4xlarge = "m5d.4xlarge" + + // InstanceTypeM5d12xlarge is a InstanceType enum value + InstanceTypeM5d12xlarge = "m5d.12xlarge" + + // InstanceTypeM5d24xlarge is a InstanceType enum value + InstanceTypeM5d24xlarge = "m5d.24xlarge" + + // InstanceTypeH12xlarge is a InstanceType enum value + InstanceTypeH12xlarge = "h1.2xlarge" + + // InstanceTypeH14xlarge is a InstanceType enum value + InstanceTypeH14xlarge = "h1.4xlarge" + + // InstanceTypeH18xlarge is a InstanceType enum value + InstanceTypeH18xlarge = "h1.8xlarge" + + // InstanceTypeH116xlarge is a InstanceType enum value + InstanceTypeH116xlarge = "h1.16xlarge" ) const ( @@ -60735,6 +70891,26 @@ const ( InterfacePermissionTypeEipAssociate = "EIP-ASSOCIATE" ) +const ( + // LaunchTemplateErrorCodeLaunchTemplateIdDoesNotExist is a LaunchTemplateErrorCode enum value + LaunchTemplateErrorCodeLaunchTemplateIdDoesNotExist = "launchTemplateIdDoesNotExist" + + // LaunchTemplateErrorCodeLaunchTemplateIdMalformed is a LaunchTemplateErrorCode enum value + LaunchTemplateErrorCodeLaunchTemplateIdMalformed = "launchTemplateIdMalformed" + + // LaunchTemplateErrorCodeLaunchTemplateNameDoesNotExist is a LaunchTemplateErrorCode enum value + LaunchTemplateErrorCodeLaunchTemplateNameDoesNotExist = "launchTemplateNameDoesNotExist" + + // LaunchTemplateErrorCodeLaunchTemplateNameMalformed is a LaunchTemplateErrorCode enum value + LaunchTemplateErrorCodeLaunchTemplateNameMalformed = "launchTemplateNameMalformed" + + // LaunchTemplateErrorCodeLaunchTemplateVersionDoesNotExist is a LaunchTemplateErrorCode enum value + LaunchTemplateErrorCodeLaunchTemplateVersionDoesNotExist = "launchTemplateVersionDoesNotExist" + + // LaunchTemplateErrorCodeUnexpectedError is a LaunchTemplateErrorCode enum value + LaunchTemplateErrorCodeUnexpectedError = "unexpectedError" +) + const ( // ListingStateAvailable is a ListingState enum value ListingStateAvailable = "available" @@ -60763,6 +70939,11 @@ const ( ListingStatusClosed = "closed" ) +const ( + // MarketTypeSpot is a MarketType enum value + MarketTypeSpot = "spot" +) + const ( // MonitoringStateDisabled is a MonitoringState enum value MonitoringStateDisabled = "disabled" @@ -60834,6 +71015,9 @@ const ( // NetworkInterfaceStatusAvailable is a NetworkInterfaceStatus enum value NetworkInterfaceStatusAvailable = "available" + // NetworkInterfaceStatusAssociated is a NetworkInterfaceStatus enum value + NetworkInterfaceStatusAssociated = "associated" + // NetworkInterfaceStatusAttaching is a NetworkInterfaceStatus enum value NetworkInterfaceStatusAttaching = "attaching" @@ -60921,6 +71105,9 @@ const ( const ( // PlacementStrategyCluster is a PlacementStrategy enum value PlacementStrategyCluster = "cluster" + + // PlacementStrategySpread is a PlacementStrategy enum value + PlacementStrategySpread = "spread" ) const ( @@ -60928,6 +71115,26 @@ const ( PlatformValuesWindows = "Windows" ) +const ( + // PrincipalTypeAll is a PrincipalType enum value + PrincipalTypeAll = "All" + + // PrincipalTypeService is a PrincipalType enum value + PrincipalTypeService = "Service" + + // PrincipalTypeOrganizationUnit is a PrincipalType enum value + PrincipalTypeOrganizationUnit = "OrganizationUnit" + + // PrincipalTypeAccount is a PrincipalType enum value + PrincipalTypeAccount = "Account" + + // PrincipalTypeUser is a PrincipalType enum value + PrincipalTypeUser = "User" + + // PrincipalTypeRole is a PrincipalType enum value + PrincipalTypeRole = "Role" +) + const ( // ProductCodeValuesDevpay is a ProductCodeValues enum value ProductCodeValuesDevpay = "devpay" @@ -61110,6 +71317,31 @@ const ( RuleActionDeny = "deny" ) +const ( + // ServiceStatePending is a ServiceState enum value + ServiceStatePending = "Pending" + + // ServiceStateAvailable is a ServiceState enum value + ServiceStateAvailable = "Available" + + // ServiceStateDeleting is a ServiceState enum value + ServiceStateDeleting = "Deleting" + + // ServiceStateDeleted is a ServiceState enum value + ServiceStateDeleted = "Deleted" + + // ServiceStateFailed is a ServiceState enum value + ServiceStateFailed = "Failed" +) + +const ( + // ServiceTypeInterface is a ServiceType enum value + ServiceTypeInterface = "Interface" + + // ServiceTypeGateway is a ServiceType enum value + ServiceTypeGateway = "Gateway" +) + const ( // ShutdownBehaviorStop is a ShutdownBehavior enum value ShutdownBehaviorStop = "stop" @@ -61137,6 +71369,25 @@ const ( SnapshotStateError = "error" ) +const ( + // SpotAllocationStrategyLowestPrice is a SpotAllocationStrategy enum value + SpotAllocationStrategyLowestPrice = "lowest-price" + + // SpotAllocationStrategyDiversified is a SpotAllocationStrategy enum value + SpotAllocationStrategyDiversified = "diversified" +) + +const ( + // SpotInstanceInterruptionBehaviorHibernate is a SpotInstanceInterruptionBehavior enum value + SpotInstanceInterruptionBehaviorHibernate = "hibernate" + + // SpotInstanceInterruptionBehaviorStop is a SpotInstanceInterruptionBehavior enum value + SpotInstanceInterruptionBehaviorStop = "stop" + + // SpotInstanceInterruptionBehaviorTerminate is a SpotInstanceInterruptionBehavior enum value + SpotInstanceInterruptionBehaviorTerminate = "terminate" +) + const ( // SpotInstanceStateOpen is a SpotInstanceState enum value SpotInstanceStateOpen = "open" @@ -61163,6 +71414,9 @@ const ( ) const ( + // StatePendingAcceptance is a State enum value + StatePendingAcceptance = "PendingAcceptance" + // StatePending is a State enum value StatePending = "Pending" @@ -61174,6 +71428,15 @@ const ( // StateDeleted is a State enum value StateDeleted = "Deleted" + + // StateRejected is a State enum value + StateRejected = "Rejected" + + // StateFailed is a State enum value + StateFailed = "Failed" + + // StateExpired is a State enum value + StateExpired = "Expired" ) const ( @@ -61281,6 +71544,20 @@ const ( TrafficTypeAll = "ALL" ) +const ( + // UnsuccessfulInstanceCreditSpecificationErrorCodeInvalidInstanceIdMalformed is a UnsuccessfulInstanceCreditSpecificationErrorCode enum value + UnsuccessfulInstanceCreditSpecificationErrorCodeInvalidInstanceIdMalformed = "InvalidInstanceID.Malformed" + + // UnsuccessfulInstanceCreditSpecificationErrorCodeInvalidInstanceIdNotFound is a UnsuccessfulInstanceCreditSpecificationErrorCode enum value + UnsuccessfulInstanceCreditSpecificationErrorCodeInvalidInstanceIdNotFound = "InvalidInstanceID.NotFound" + + // UnsuccessfulInstanceCreditSpecificationErrorCodeIncorrectInstanceState is a UnsuccessfulInstanceCreditSpecificationErrorCode enum value + UnsuccessfulInstanceCreditSpecificationErrorCodeIncorrectInstanceState = "IncorrectInstanceState" + + // UnsuccessfulInstanceCreditSpecificationErrorCodeInstanceCreditSpecificationNotSupported is a UnsuccessfulInstanceCreditSpecificationErrorCode enum value + UnsuccessfulInstanceCreditSpecificationErrorCodeInstanceCreditSpecificationNotSupported = "InstanceCreditSpecification.NotSupported" +) + const ( // VirtualizationTypeHvm is a VirtualizationType enum value VirtualizationTypeHvm = "hvm" @@ -61301,6 +71578,9 @@ const ( // VolumeAttachmentStateDetached is a VolumeAttachmentState enum value VolumeAttachmentStateDetached = "detached" + + // VolumeAttachmentStateBusy is a VolumeAttachmentState enum value + VolumeAttachmentStateBusy = "busy" ) const ( @@ -61409,6 +71689,14 @@ const ( VpcCidrBlockStateCodeFailed = "failed" ) +const ( + // VpcEndpointTypeInterface is a VpcEndpointType enum value + VpcEndpointTypeInterface = "Interface" + + // VpcEndpointTypeGateway is a VpcEndpointType enum value + VpcEndpointTypeGateway = "Gateway" +) + const ( // VpcPeeringConnectionStateReasonCodeInitiatingRequest is a VpcPeeringConnectionStateReasonCode enum value VpcPeeringConnectionStateReasonCodeInitiatingRequest = "initiating-request" @@ -61446,6 +71734,11 @@ const ( VpcStateAvailable = "available" ) +const ( + // VpcTenancyDefault is a VpcTenancy enum value + VpcTenancyDefault = "default" +) + const ( // VpnStatePending is a VpnState enum value VpnStatePending = "pending" diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/ec2/customizations.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/ec2/customizations.go index 36b69ff281..7b42719d65 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/ec2/customizations.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/ec2/customizations.go @@ -5,11 +5,64 @@ import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/awsutil" + "github.com/aws/aws-sdk-go/aws/client" "github.com/aws/aws-sdk-go/aws/endpoints" "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/internal/sdkrand" ) +type retryer struct { + client.DefaultRetryer +} + +func (d retryer) RetryRules(r *request.Request) time.Duration { + switch r.Operation.Name { + case opModifyNetworkInterfaceAttribute: + fallthrough + case opAssignPrivateIpAddresses: + return customRetryRule(r) + default: + return d.DefaultRetryer.RetryRules(r) + } +} + +func customRetryRule(r *request.Request) time.Duration { + retryTimes := []time.Duration{ + time.Second, + 3 * time.Second, + 5 * time.Second, + } + + count := r.RetryCount + if count >= len(retryTimes) { + count = len(retryTimes) - 1 + } + + minTime := int(retryTimes[count]) + return time.Duration(sdkrand.SeededRand.Intn(minTime) + minTime) +} + +func setCustomRetryer(c *client.Client) { + maxRetries := aws.IntValue(c.Config.MaxRetries) + if c.Config.MaxRetries == nil || maxRetries == aws.UseServiceDefaultRetries { + maxRetries = 3 + } + + c.Retryer = retryer{ + DefaultRetryer: client.DefaultRetryer{ + NumMaxRetries: maxRetries, + }, + } +} + func init() { + initClient = func(c *client.Client) { + if c.Config.Retryer == nil { + // Only override the retryer with a custom one if the config + // does not already contain a retryer + setCustomRetryer(c) + } + } initRequest = func(r *request.Request) { if r.Operation.Name == opCopySnapshot { // fill the PresignedURL parameter r.Handlers.Build.PushFront(fillPresignedURL) diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/ec2/doc.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/ec2/doc.go index 5471677829..909e05a14f 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/ec2/doc.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/ec2/doc.go @@ -4,9 +4,8 @@ // requests to Amazon Elastic Compute Cloud. // // Amazon Elastic Compute Cloud (Amazon EC2) provides resizable computing capacity -// in the Amazon Web Services (AWS) cloud. Using Amazon EC2 eliminates your -// need to invest in hardware up front, so you can develop and deploy applications -// faster. +// in the AWS Cloud. Using Amazon EC2 eliminates the need to invest in hardware +// up front, so you can develop and deploy applications faster. // // See https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15 for more information on this service. // @@ -15,7 +14,7 @@ // // Using the Client // -// To Amazon Elastic Compute Cloud with the SDK use the New function to create +// To contact Amazon Elastic Compute Cloud with the SDK use the New function to create // a new service client. With that client you can make API requests to the service. // These clients are safe to use concurrently. // diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/ec2/service.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/ec2/service.go index ba4433d388..6acbc43fe3 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/ec2/service.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/ec2/service.go @@ -29,8 +29,9 @@ var initRequest func(*request.Request) // Service information constants const ( - ServiceName = "ec2" // Service endpoint prefix API calls made to. - EndpointsID = ServiceName // Service ID for Regions and Endpoints metadata. + ServiceName = "ec2" // Name of service. + EndpointsID = ServiceName // ID to lookup a service endpoint with. + ServiceID = "EC2" // ServiceID is a unique identifer of a specific service. ) // New creates a new instance of the EC2 client with a session. @@ -55,6 +56,7 @@ func newClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegio cfg, metadata.ClientInfo{ ServiceName: ServiceName, + ServiceID: ServiceID, SigningName: signingName, SigningRegion: signingRegion, Endpoint: endpoint, diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/ecr/api.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/ecr/api.go index f9136852fd..d9bcf883b7 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/ecr/api.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/ecr/api.go @@ -14,7 +14,7 @@ const opBatchCheckLayerAvailability = "BatchCheckLayerAvailability" // BatchCheckLayerAvailabilityRequest generates a "aws/request.Request" representing the // client's request for the BatchCheckLayerAvailability operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -35,7 +35,7 @@ const opBatchCheckLayerAvailability = "BatchCheckLayerAvailability" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/BatchCheckLayerAvailability +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/BatchCheckLayerAvailability func (c *ECR) BatchCheckLayerAvailabilityRequest(input *BatchCheckLayerAvailabilityInput) (req *request.Request, output *BatchCheckLayerAvailabilityOutput) { op := &request.Operation{ Name: opBatchCheckLayerAvailability, @@ -80,7 +80,7 @@ func (c *ECR) BatchCheckLayerAvailabilityRequest(input *BatchCheckLayerAvailabil // * ErrCodeServerException "ServerException" // These errors are usually caused by a server-side issue. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/BatchCheckLayerAvailability +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/BatchCheckLayerAvailability func (c *ECR) BatchCheckLayerAvailability(input *BatchCheckLayerAvailabilityInput) (*BatchCheckLayerAvailabilityOutput, error) { req, out := c.BatchCheckLayerAvailabilityRequest(input) return out, req.Send() @@ -106,7 +106,7 @@ const opBatchDeleteImage = "BatchDeleteImage" // BatchDeleteImageRequest generates a "aws/request.Request" representing the // client's request for the BatchDeleteImage operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -127,7 +127,7 @@ const opBatchDeleteImage = "BatchDeleteImage" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/BatchDeleteImage +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/BatchDeleteImage func (c *ECR) BatchDeleteImageRequest(input *BatchDeleteImageInput) (req *request.Request, output *BatchDeleteImageOutput) { op := &request.Operation{ Name: opBatchDeleteImage, @@ -175,7 +175,7 @@ func (c *ECR) BatchDeleteImageRequest(input *BatchDeleteImageInput) (req *reques // The specified repository could not be found. Check the spelling of the specified // repository and ensure that you are performing operations on the correct registry. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/BatchDeleteImage +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/BatchDeleteImage func (c *ECR) BatchDeleteImage(input *BatchDeleteImageInput) (*BatchDeleteImageOutput, error) { req, out := c.BatchDeleteImageRequest(input) return out, req.Send() @@ -201,7 +201,7 @@ const opBatchGetImage = "BatchGetImage" // BatchGetImageRequest generates a "aws/request.Request" representing the // client's request for the BatchGetImage operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -222,7 +222,7 @@ const opBatchGetImage = "BatchGetImage" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/BatchGetImage +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/BatchGetImage func (c *ECR) BatchGetImageRequest(input *BatchGetImageInput) (req *request.Request, output *BatchGetImageOutput) { op := &request.Operation{ Name: opBatchGetImage, @@ -263,7 +263,7 @@ func (c *ECR) BatchGetImageRequest(input *BatchGetImageInput) (req *request.Requ // The specified repository could not be found. Check the spelling of the specified // repository and ensure that you are performing operations on the correct registry. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/BatchGetImage +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/BatchGetImage func (c *ECR) BatchGetImage(input *BatchGetImageInput) (*BatchGetImageOutput, error) { req, out := c.BatchGetImageRequest(input) return out, req.Send() @@ -289,7 +289,7 @@ const opCompleteLayerUpload = "CompleteLayerUpload" // CompleteLayerUploadRequest generates a "aws/request.Request" representing the // client's request for the CompleteLayerUpload operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -310,7 +310,7 @@ const opCompleteLayerUpload = "CompleteLayerUpload" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/CompleteLayerUpload +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/CompleteLayerUpload func (c *ECR) CompleteLayerUploadRequest(input *CompleteLayerUploadInput) (req *request.Request, output *CompleteLayerUploadOutput) { op := &request.Operation{ Name: opCompleteLayerUpload, @@ -329,9 +329,9 @@ func (c *ECR) CompleteLayerUploadRequest(input *CompleteLayerUploadInput) (req * // CompleteLayerUpload API operation for Amazon EC2 Container Registry. // -// Inform Amazon ECR that the image layer upload for a specified registry, repository -// name, and upload ID, has completed. You can optionally provide a sha256 digest -// of the image layer for data validation purposes. +// Informs Amazon ECR that the image layer upload has completed for a specified +// registry, repository name, and upload ID. You can optionally provide a sha256 +// digest of the image layer for data validation purposes. // // This operation is used by the Amazon ECR proxy, and it is not intended for // general use by customers for pulling and pushing images. In most cases, you @@ -373,7 +373,7 @@ func (c *ECR) CompleteLayerUploadRequest(input *CompleteLayerUploadInput) (req * // * ErrCodeEmptyUploadException "EmptyUploadException" // The specified layer upload does not contain any layer parts. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/CompleteLayerUpload +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/CompleteLayerUpload func (c *ECR) CompleteLayerUpload(input *CompleteLayerUploadInput) (*CompleteLayerUploadOutput, error) { req, out := c.CompleteLayerUploadRequest(input) return out, req.Send() @@ -399,7 +399,7 @@ const opCreateRepository = "CreateRepository" // CreateRepositoryRequest generates a "aws/request.Request" representing the // client's request for the CreateRepository operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -420,7 +420,7 @@ const opCreateRepository = "CreateRepository" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/CreateRepository +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/CreateRepository func (c *ECR) CreateRepositoryRequest(input *CreateRepositoryInput) (req *request.Request, output *CreateRepositoryOutput) { op := &request.Operation{ Name: opCreateRepository, @@ -463,9 +463,9 @@ func (c *ECR) CreateRepositoryRequest(input *CreateRepositoryInput) (req *reques // The operation did not succeed because it would have exceeded a service limit // for your account. For more information, see Amazon ECR Default Service Limits // (http://docs.aws.amazon.com/AmazonECR/latest/userguide/service_limits.html) -// in the Amazon EC2 Container Registry User Guide. +// in the Amazon Elastic Container Registry User Guide. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/CreateRepository +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/CreateRepository func (c *ECR) CreateRepository(input *CreateRepositoryInput) (*CreateRepositoryOutput, error) { req, out := c.CreateRepositoryRequest(input) return out, req.Send() @@ -487,11 +487,101 @@ func (c *ECR) CreateRepositoryWithContext(ctx aws.Context, input *CreateReposito return out, req.Send() } +const opDeleteLifecyclePolicy = "DeleteLifecyclePolicy" + +// DeleteLifecyclePolicyRequest generates a "aws/request.Request" representing the +// client's request for the DeleteLifecyclePolicy operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteLifecyclePolicy for more information on using the DeleteLifecyclePolicy +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteLifecyclePolicyRequest method. +// req, resp := client.DeleteLifecyclePolicyRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/DeleteLifecyclePolicy +func (c *ECR) DeleteLifecyclePolicyRequest(input *DeleteLifecyclePolicyInput) (req *request.Request, output *DeleteLifecyclePolicyOutput) { + op := &request.Operation{ + Name: opDeleteLifecyclePolicy, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteLifecyclePolicyInput{} + } + + output = &DeleteLifecyclePolicyOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteLifecyclePolicy API operation for Amazon EC2 Container Registry. +// +// Deletes the specified lifecycle policy. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon EC2 Container Registry's +// API operation DeleteLifecyclePolicy for usage and error information. +// +// Returned Error Codes: +// * ErrCodeServerException "ServerException" +// These errors are usually caused by a server-side issue. +// +// * ErrCodeInvalidParameterException "InvalidParameterException" +// The specified parameter is invalid. Review the available parameters for the +// API request. +// +// * ErrCodeRepositoryNotFoundException "RepositoryNotFoundException" +// The specified repository could not be found. Check the spelling of the specified +// repository and ensure that you are performing operations on the correct registry. +// +// * ErrCodeLifecyclePolicyNotFoundException "LifecyclePolicyNotFoundException" +// The lifecycle policy could not be found, and no policy is set to the repository. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/DeleteLifecyclePolicy +func (c *ECR) DeleteLifecyclePolicy(input *DeleteLifecyclePolicyInput) (*DeleteLifecyclePolicyOutput, error) { + req, out := c.DeleteLifecyclePolicyRequest(input) + return out, req.Send() +} + +// DeleteLifecyclePolicyWithContext is the same as DeleteLifecyclePolicy with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteLifecyclePolicy for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *ECR) DeleteLifecyclePolicyWithContext(ctx aws.Context, input *DeleteLifecyclePolicyInput, opts ...request.Option) (*DeleteLifecyclePolicyOutput, error) { + req, out := c.DeleteLifecyclePolicyRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opDeleteRepository = "DeleteRepository" // DeleteRepositoryRequest generates a "aws/request.Request" representing the // client's request for the DeleteRepository operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -512,7 +602,7 @@ const opDeleteRepository = "DeleteRepository" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/DeleteRepository +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/DeleteRepository func (c *ECR) DeleteRepositoryRequest(input *DeleteRepositoryInput) (req *request.Request, output *DeleteRepositoryOutput) { op := &request.Operation{ Name: opDeleteRepository, @@ -557,7 +647,7 @@ func (c *ECR) DeleteRepositoryRequest(input *DeleteRepositoryInput) (req *reques // The specified repository contains images. To delete a repository that contains // images, you must force the deletion with the force parameter. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/DeleteRepository +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/DeleteRepository func (c *ECR) DeleteRepository(input *DeleteRepositoryInput) (*DeleteRepositoryOutput, error) { req, out := c.DeleteRepositoryRequest(input) return out, req.Send() @@ -583,7 +673,7 @@ const opDeleteRepositoryPolicy = "DeleteRepositoryPolicy" // DeleteRepositoryPolicyRequest generates a "aws/request.Request" representing the // client's request for the DeleteRepositoryPolicy operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -604,7 +694,7 @@ const opDeleteRepositoryPolicy = "DeleteRepositoryPolicy" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/DeleteRepositoryPolicy +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/DeleteRepositoryPolicy func (c *ECR) DeleteRepositoryPolicyRequest(input *DeleteRepositoryPolicyInput) (req *request.Request, output *DeleteRepositoryPolicyOutput) { op := &request.Operation{ Name: opDeleteRepositoryPolicy, @@ -648,7 +738,7 @@ func (c *ECR) DeleteRepositoryPolicyRequest(input *DeleteRepositoryPolicyInput) // The specified repository and registry combination does not have an associated // repository policy. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/DeleteRepositoryPolicy +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/DeleteRepositoryPolicy func (c *ECR) DeleteRepositoryPolicy(input *DeleteRepositoryPolicyInput) (*DeleteRepositoryPolicyOutput, error) { req, out := c.DeleteRepositoryPolicyRequest(input) return out, req.Send() @@ -674,7 +764,7 @@ const opDescribeImages = "DescribeImages" // DescribeImagesRequest generates a "aws/request.Request" representing the // client's request for the DescribeImages operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -695,7 +785,7 @@ const opDescribeImages = "DescribeImages" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/DescribeImages +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/DescribeImages func (c *ECR) DescribeImagesRequest(input *DescribeImagesInput) (req *request.Request, output *DescribeImagesOutput) { op := &request.Operation{ Name: opDescribeImages, @@ -750,7 +840,7 @@ func (c *ECR) DescribeImagesRequest(input *DescribeImagesInput) (req *request.Re // * ErrCodeImageNotFoundException "ImageNotFoundException" // The image requested does not exist in the specified repository. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/DescribeImages +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/DescribeImages func (c *ECR) DescribeImages(input *DescribeImagesInput) (*DescribeImagesOutput, error) { req, out := c.DescribeImagesRequest(input) return out, req.Send() @@ -826,7 +916,7 @@ const opDescribeRepositories = "DescribeRepositories" // DescribeRepositoriesRequest generates a "aws/request.Request" representing the // client's request for the DescribeRepositories operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -847,7 +937,7 @@ const opDescribeRepositories = "DescribeRepositories" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/DescribeRepositories +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/DescribeRepositories func (c *ECR) DescribeRepositoriesRequest(input *DescribeRepositoriesInput) (req *request.Request, output *DescribeRepositoriesOutput) { op := &request.Operation{ Name: opDescribeRepositories, @@ -893,7 +983,7 @@ func (c *ECR) DescribeRepositoriesRequest(input *DescribeRepositoriesInput) (req // The specified repository could not be found. Check the spelling of the specified // repository and ensure that you are performing operations on the correct registry. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/DescribeRepositories +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/DescribeRepositories func (c *ECR) DescribeRepositories(input *DescribeRepositoriesInput) (*DescribeRepositoriesOutput, error) { req, out := c.DescribeRepositoriesRequest(input) return out, req.Send() @@ -969,7 +1059,7 @@ const opGetAuthorizationToken = "GetAuthorizationToken" // GetAuthorizationTokenRequest generates a "aws/request.Request" representing the // client's request for the GetAuthorizationToken operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -990,7 +1080,7 @@ const opGetAuthorizationToken = "GetAuthorizationToken" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/GetAuthorizationToken +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/GetAuthorizationToken func (c *ECR) GetAuthorizationTokenRequest(input *GetAuthorizationTokenInput) (req *request.Request, output *GetAuthorizationTokenOutput) { op := &request.Operation{ Name: opGetAuthorizationToken, @@ -1033,7 +1123,7 @@ func (c *ECR) GetAuthorizationTokenRequest(input *GetAuthorizationTokenInput) (r // The specified parameter is invalid. Review the available parameters for the // API request. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/GetAuthorizationToken +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/GetAuthorizationToken func (c *ECR) GetAuthorizationToken(input *GetAuthorizationTokenInput) (*GetAuthorizationTokenOutput, error) { req, out := c.GetAuthorizationTokenRequest(input) return out, req.Send() @@ -1059,7 +1149,7 @@ const opGetDownloadUrlForLayer = "GetDownloadUrlForLayer" // GetDownloadUrlForLayerRequest generates a "aws/request.Request" representing the // client's request for the GetDownloadUrlForLayer operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1080,7 +1170,7 @@ const opGetDownloadUrlForLayer = "GetDownloadUrlForLayer" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/GetDownloadUrlForLayer +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/GetDownloadUrlForLayer func (c *ECR) GetDownloadUrlForLayerRequest(input *GetDownloadUrlForLayerInput) (req *request.Request, output *GetDownloadUrlForLayerOutput) { op := &request.Operation{ Name: opGetDownloadUrlForLayer, @@ -1133,7 +1223,7 @@ func (c *ECR) GetDownloadUrlForLayerRequest(input *GetDownloadUrlForLayerInput) // The specified repository could not be found. Check the spelling of the specified // repository and ensure that you are performing operations on the correct registry. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/GetDownloadUrlForLayer +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/GetDownloadUrlForLayer func (c *ECR) GetDownloadUrlForLayer(input *GetDownloadUrlForLayerInput) (*GetDownloadUrlForLayerOutput, error) { req, out := c.GetDownloadUrlForLayerRequest(input) return out, req.Send() @@ -1155,11 +1245,191 @@ func (c *ECR) GetDownloadUrlForLayerWithContext(ctx aws.Context, input *GetDownl return out, req.Send() } +const opGetLifecyclePolicy = "GetLifecyclePolicy" + +// GetLifecyclePolicyRequest generates a "aws/request.Request" representing the +// client's request for the GetLifecyclePolicy operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetLifecyclePolicy for more information on using the GetLifecyclePolicy +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetLifecyclePolicyRequest method. +// req, resp := client.GetLifecyclePolicyRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/GetLifecyclePolicy +func (c *ECR) GetLifecyclePolicyRequest(input *GetLifecyclePolicyInput) (req *request.Request, output *GetLifecyclePolicyOutput) { + op := &request.Operation{ + Name: opGetLifecyclePolicy, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &GetLifecyclePolicyInput{} + } + + output = &GetLifecyclePolicyOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetLifecyclePolicy API operation for Amazon EC2 Container Registry. +// +// Retrieves the specified lifecycle policy. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon EC2 Container Registry's +// API operation GetLifecyclePolicy for usage and error information. +// +// Returned Error Codes: +// * ErrCodeServerException "ServerException" +// These errors are usually caused by a server-side issue. +// +// * ErrCodeInvalidParameterException "InvalidParameterException" +// The specified parameter is invalid. Review the available parameters for the +// API request. +// +// * ErrCodeRepositoryNotFoundException "RepositoryNotFoundException" +// The specified repository could not be found. Check the spelling of the specified +// repository and ensure that you are performing operations on the correct registry. +// +// * ErrCodeLifecyclePolicyNotFoundException "LifecyclePolicyNotFoundException" +// The lifecycle policy could not be found, and no policy is set to the repository. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/GetLifecyclePolicy +func (c *ECR) GetLifecyclePolicy(input *GetLifecyclePolicyInput) (*GetLifecyclePolicyOutput, error) { + req, out := c.GetLifecyclePolicyRequest(input) + return out, req.Send() +} + +// GetLifecyclePolicyWithContext is the same as GetLifecyclePolicy with the addition of +// the ability to pass a context and additional request options. +// +// See GetLifecyclePolicy for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *ECR) GetLifecyclePolicyWithContext(ctx aws.Context, input *GetLifecyclePolicyInput, opts ...request.Option) (*GetLifecyclePolicyOutput, error) { + req, out := c.GetLifecyclePolicyRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetLifecyclePolicyPreview = "GetLifecyclePolicyPreview" + +// GetLifecyclePolicyPreviewRequest generates a "aws/request.Request" representing the +// client's request for the GetLifecyclePolicyPreview operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetLifecyclePolicyPreview for more information on using the GetLifecyclePolicyPreview +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetLifecyclePolicyPreviewRequest method. +// req, resp := client.GetLifecyclePolicyPreviewRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/GetLifecyclePolicyPreview +func (c *ECR) GetLifecyclePolicyPreviewRequest(input *GetLifecyclePolicyPreviewInput) (req *request.Request, output *GetLifecyclePolicyPreviewOutput) { + op := &request.Operation{ + Name: opGetLifecyclePolicyPreview, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &GetLifecyclePolicyPreviewInput{} + } + + output = &GetLifecyclePolicyPreviewOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetLifecyclePolicyPreview API operation for Amazon EC2 Container Registry. +// +// Retrieves the results of the specified lifecycle policy preview request. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon EC2 Container Registry's +// API operation GetLifecyclePolicyPreview for usage and error information. +// +// Returned Error Codes: +// * ErrCodeServerException "ServerException" +// These errors are usually caused by a server-side issue. +// +// * ErrCodeInvalidParameterException "InvalidParameterException" +// The specified parameter is invalid. Review the available parameters for the +// API request. +// +// * ErrCodeRepositoryNotFoundException "RepositoryNotFoundException" +// The specified repository could not be found. Check the spelling of the specified +// repository and ensure that you are performing operations on the correct registry. +// +// * ErrCodeLifecyclePolicyPreviewNotFoundException "LifecyclePolicyPreviewNotFoundException" +// There is no dry run for this repository. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/GetLifecyclePolicyPreview +func (c *ECR) GetLifecyclePolicyPreview(input *GetLifecyclePolicyPreviewInput) (*GetLifecyclePolicyPreviewOutput, error) { + req, out := c.GetLifecyclePolicyPreviewRequest(input) + return out, req.Send() +} + +// GetLifecyclePolicyPreviewWithContext is the same as GetLifecyclePolicyPreview with the addition of +// the ability to pass a context and additional request options. +// +// See GetLifecyclePolicyPreview for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *ECR) GetLifecyclePolicyPreviewWithContext(ctx aws.Context, input *GetLifecyclePolicyPreviewInput, opts ...request.Option) (*GetLifecyclePolicyPreviewOutput, error) { + req, out := c.GetLifecyclePolicyPreviewRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opGetRepositoryPolicy = "GetRepositoryPolicy" // GetRepositoryPolicyRequest generates a "aws/request.Request" representing the // client's request for the GetRepositoryPolicy operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1180,7 +1450,7 @@ const opGetRepositoryPolicy = "GetRepositoryPolicy" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/GetRepositoryPolicy +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/GetRepositoryPolicy func (c *ECR) GetRepositoryPolicyRequest(input *GetRepositoryPolicyInput) (req *request.Request, output *GetRepositoryPolicyOutput) { op := &request.Operation{ Name: opGetRepositoryPolicy, @@ -1224,7 +1494,7 @@ func (c *ECR) GetRepositoryPolicyRequest(input *GetRepositoryPolicyInput) (req * // The specified repository and registry combination does not have an associated // repository policy. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/GetRepositoryPolicy +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/GetRepositoryPolicy func (c *ECR) GetRepositoryPolicy(input *GetRepositoryPolicyInput) (*GetRepositoryPolicyOutput, error) { req, out := c.GetRepositoryPolicyRequest(input) return out, req.Send() @@ -1250,7 +1520,7 @@ const opInitiateLayerUpload = "InitiateLayerUpload" // InitiateLayerUploadRequest generates a "aws/request.Request" representing the // client's request for the InitiateLayerUpload operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1271,7 +1541,7 @@ const opInitiateLayerUpload = "InitiateLayerUpload" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/InitiateLayerUpload +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/InitiateLayerUpload func (c *ECR) InitiateLayerUploadRequest(input *InitiateLayerUploadInput) (req *request.Request, output *InitiateLayerUploadOutput) { op := &request.Operation{ Name: opInitiateLayerUpload, @@ -1315,7 +1585,7 @@ func (c *ECR) InitiateLayerUploadRequest(input *InitiateLayerUploadInput) (req * // The specified repository could not be found. Check the spelling of the specified // repository and ensure that you are performing operations on the correct registry. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/InitiateLayerUpload +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/InitiateLayerUpload func (c *ECR) InitiateLayerUpload(input *InitiateLayerUploadInput) (*InitiateLayerUploadOutput, error) { req, out := c.InitiateLayerUploadRequest(input) return out, req.Send() @@ -1341,7 +1611,7 @@ const opListImages = "ListImages" // ListImagesRequest generates a "aws/request.Request" representing the // client's request for the ListImages operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1362,7 +1632,7 @@ const opListImages = "ListImages" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/ListImages +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/ListImages func (c *ECR) ListImagesRequest(input *ListImagesInput) (req *request.Request, output *ListImagesOutput) { op := &request.Operation{ Name: opListImages, @@ -1414,7 +1684,7 @@ func (c *ECR) ListImagesRequest(input *ListImagesInput) (req *request.Request, o // The specified repository could not be found. Check the spelling of the specified // repository and ensure that you are performing operations on the correct registry. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/ListImages +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/ListImages func (c *ECR) ListImages(input *ListImagesInput) (*ListImagesOutput, error) { req, out := c.ListImagesRequest(input) return out, req.Send() @@ -1490,7 +1760,7 @@ const opPutImage = "PutImage" // PutImageRequest generates a "aws/request.Request" representing the // client's request for the PutImage operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1511,7 +1781,7 @@ const opPutImage = "PutImage" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/PutImage +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/PutImage func (c *ECR) PutImageRequest(input *PutImageInput) (req *request.Request, output *PutImageOutput) { op := &request.Operation{ Name: opPutImage, @@ -1556,8 +1826,8 @@ func (c *ECR) PutImageRequest(input *PutImageInput) (req *request.Request, outpu // repository and ensure that you are performing operations on the correct registry. // // * ErrCodeImageAlreadyExistsException "ImageAlreadyExistsException" -// The specified image has already been pushed, and there are no changes to -// the manifest or image tag since the last push. +// The specified image has already been pushed, and there were no changes to +// the manifest or image tag after the last push. // // * ErrCodeLayersNotFoundException "LayersNotFoundException" // The specified layers could not be found, or the specified layer is not valid @@ -1567,9 +1837,9 @@ func (c *ECR) PutImageRequest(input *PutImageInput) (req *request.Request, outpu // The operation did not succeed because it would have exceeded a service limit // for your account. For more information, see Amazon ECR Default Service Limits // (http://docs.aws.amazon.com/AmazonECR/latest/userguide/service_limits.html) -// in the Amazon EC2 Container Registry User Guide. +// in the Amazon Elastic Container Registry User Guide. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/PutImage +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/PutImage func (c *ECR) PutImage(input *PutImageInput) (*PutImageOutput, error) { req, out := c.PutImageRequest(input) return out, req.Send() @@ -1591,11 +1861,99 @@ func (c *ECR) PutImageWithContext(ctx aws.Context, input *PutImageInput, opts .. return out, req.Send() } +const opPutLifecyclePolicy = "PutLifecyclePolicy" + +// PutLifecyclePolicyRequest generates a "aws/request.Request" representing the +// client's request for the PutLifecyclePolicy operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See PutLifecyclePolicy for more information on using the PutLifecyclePolicy +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the PutLifecyclePolicyRequest method. +// req, resp := client.PutLifecyclePolicyRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/PutLifecyclePolicy +func (c *ECR) PutLifecyclePolicyRequest(input *PutLifecyclePolicyInput) (req *request.Request, output *PutLifecyclePolicyOutput) { + op := &request.Operation{ + Name: opPutLifecyclePolicy, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &PutLifecyclePolicyInput{} + } + + output = &PutLifecyclePolicyOutput{} + req = c.newRequest(op, input, output) + return +} + +// PutLifecyclePolicy API operation for Amazon EC2 Container Registry. +// +// Creates or updates a lifecycle policy. For information about lifecycle policy +// syntax, see Lifecycle Policy Template (http://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html). +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon EC2 Container Registry's +// API operation PutLifecyclePolicy for usage and error information. +// +// Returned Error Codes: +// * ErrCodeServerException "ServerException" +// These errors are usually caused by a server-side issue. +// +// * ErrCodeInvalidParameterException "InvalidParameterException" +// The specified parameter is invalid. Review the available parameters for the +// API request. +// +// * ErrCodeRepositoryNotFoundException "RepositoryNotFoundException" +// The specified repository could not be found. Check the spelling of the specified +// repository and ensure that you are performing operations on the correct registry. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/PutLifecyclePolicy +func (c *ECR) PutLifecyclePolicy(input *PutLifecyclePolicyInput) (*PutLifecyclePolicyOutput, error) { + req, out := c.PutLifecyclePolicyRequest(input) + return out, req.Send() +} + +// PutLifecyclePolicyWithContext is the same as PutLifecyclePolicy with the addition of +// the ability to pass a context and additional request options. +// +// See PutLifecyclePolicy for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *ECR) PutLifecyclePolicyWithContext(ctx aws.Context, input *PutLifecyclePolicyInput, opts ...request.Option) (*PutLifecyclePolicyOutput, error) { + req, out := c.PutLifecyclePolicyRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opSetRepositoryPolicy = "SetRepositoryPolicy" // SetRepositoryPolicyRequest generates a "aws/request.Request" representing the // client's request for the SetRepositoryPolicy operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1616,7 +1974,7 @@ const opSetRepositoryPolicy = "SetRepositoryPolicy" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/SetRepositoryPolicy +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/SetRepositoryPolicy func (c *ECR) SetRepositoryPolicyRequest(input *SetRepositoryPolicyInput) (req *request.Request, output *SetRepositoryPolicyOutput) { op := &request.Operation{ Name: opSetRepositoryPolicy, @@ -1656,7 +2014,7 @@ func (c *ECR) SetRepositoryPolicyRequest(input *SetRepositoryPolicyInput) (req * // The specified repository could not be found. Check the spelling of the specified // repository and ensure that you are performing operations on the correct registry. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/SetRepositoryPolicy +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/SetRepositoryPolicy func (c *ECR) SetRepositoryPolicy(input *SetRepositoryPolicyInput) (*SetRepositoryPolicyOutput, error) { req, out := c.SetRepositoryPolicyRequest(input) return out, req.Send() @@ -1678,11 +2036,106 @@ func (c *ECR) SetRepositoryPolicyWithContext(ctx aws.Context, input *SetReposito return out, req.Send() } +const opStartLifecyclePolicyPreview = "StartLifecyclePolicyPreview" + +// StartLifecyclePolicyPreviewRequest generates a "aws/request.Request" representing the +// client's request for the StartLifecyclePolicyPreview operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See StartLifecyclePolicyPreview for more information on using the StartLifecyclePolicyPreview +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the StartLifecyclePolicyPreviewRequest method. +// req, resp := client.StartLifecyclePolicyPreviewRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/StartLifecyclePolicyPreview +func (c *ECR) StartLifecyclePolicyPreviewRequest(input *StartLifecyclePolicyPreviewInput) (req *request.Request, output *StartLifecyclePolicyPreviewOutput) { + op := &request.Operation{ + Name: opStartLifecyclePolicyPreview, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &StartLifecyclePolicyPreviewInput{} + } + + output = &StartLifecyclePolicyPreviewOutput{} + req = c.newRequest(op, input, output) + return +} + +// StartLifecyclePolicyPreview API operation for Amazon EC2 Container Registry. +// +// Starts a preview of the specified lifecycle policy. This allows you to see +// the results before creating the lifecycle policy. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon EC2 Container Registry's +// API operation StartLifecyclePolicyPreview for usage and error information. +// +// Returned Error Codes: +// * ErrCodeServerException "ServerException" +// These errors are usually caused by a server-side issue. +// +// * ErrCodeInvalidParameterException "InvalidParameterException" +// The specified parameter is invalid. Review the available parameters for the +// API request. +// +// * ErrCodeRepositoryNotFoundException "RepositoryNotFoundException" +// The specified repository could not be found. Check the spelling of the specified +// repository and ensure that you are performing operations on the correct registry. +// +// * ErrCodeLifecyclePolicyNotFoundException "LifecyclePolicyNotFoundException" +// The lifecycle policy could not be found, and no policy is set to the repository. +// +// * ErrCodeLifecyclePolicyPreviewInProgressException "LifecyclePolicyPreviewInProgressException" +// The previous lifecycle policy preview request has not completed. Please try +// again later. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/StartLifecyclePolicyPreview +func (c *ECR) StartLifecyclePolicyPreview(input *StartLifecyclePolicyPreviewInput) (*StartLifecyclePolicyPreviewOutput, error) { + req, out := c.StartLifecyclePolicyPreviewRequest(input) + return out, req.Send() +} + +// StartLifecyclePolicyPreviewWithContext is the same as StartLifecyclePolicyPreview with the addition of +// the ability to pass a context and additional request options. +// +// See StartLifecyclePolicyPreview for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *ECR) StartLifecyclePolicyPreviewWithContext(ctx aws.Context, input *StartLifecyclePolicyPreviewInput, opts ...request.Option) (*StartLifecyclePolicyPreviewOutput, error) { + req, out := c.StartLifecyclePolicyPreviewRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opUploadLayerPart = "UploadLayerPart" // UploadLayerPartRequest generates a "aws/request.Request" representing the // client's request for the UploadLayerPart operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1703,7 +2156,7 @@ const opUploadLayerPart = "UploadLayerPart" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/UploadLayerPart +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/UploadLayerPart func (c *ECR) UploadLayerPartRequest(input *UploadLayerPartInput) (req *request.Request, output *UploadLayerPartOutput) { op := &request.Operation{ Name: opUploadLayerPart, @@ -1759,9 +2212,9 @@ func (c *ECR) UploadLayerPartRequest(input *UploadLayerPartInput) (req *request. // The operation did not succeed because it would have exceeded a service limit // for your account. For more information, see Amazon ECR Default Service Limits // (http://docs.aws.amazon.com/AmazonECR/latest/userguide/service_limits.html) -// in the Amazon EC2 Container Registry User Guide. +// in the Amazon Elastic Container Registry User Guide. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/UploadLayerPart +// See also, https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/UploadLayerPart func (c *ECR) UploadLayerPart(input *UploadLayerPartInput) (*UploadLayerPartOutput, error) { req, out := c.UploadLayerPartRequest(input) return out, req.Send() @@ -1784,7 +2237,6 @@ func (c *ECR) UploadLayerPartWithContext(ctx aws.Context, input *UploadLayerPart } // An object representing authorization data for an Amazon ECR registry. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/AuthorizationData type AuthorizationData struct { _ struct{} `type:"structure"` @@ -1831,7 +2283,6 @@ func (s *AuthorizationData) SetProxyEndpoint(v string) *AuthorizationData { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/BatchCheckLayerAvailabilityRequest type BatchCheckLayerAvailabilityInput struct { _ struct{} `type:"structure"` @@ -1900,7 +2351,6 @@ func (s *BatchCheckLayerAvailabilityInput) SetRepositoryName(v string) *BatchChe return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/BatchCheckLayerAvailabilityResponse type BatchCheckLayerAvailabilityOutput struct { _ struct{} `type:"structure"` @@ -1936,7 +2386,6 @@ func (s *BatchCheckLayerAvailabilityOutput) SetLayers(v []*Layer) *BatchCheckLay // Deletes specified images within a specified repository. Images are specified // with either the imageTag or imageDigest. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/BatchDeleteImageRequest type BatchDeleteImageInput struct { _ struct{} `type:"structure"` @@ -2006,7 +2455,6 @@ func (s *BatchDeleteImageInput) SetRepositoryName(v string) *BatchDeleteImageInp return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/BatchDeleteImageResponse type BatchDeleteImageOutput struct { _ struct{} `type:"structure"` @@ -2039,7 +2487,6 @@ func (s *BatchDeleteImageOutput) SetImageIds(v []*ImageIdentifier) *BatchDeleteI return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/BatchGetImageRequest type BatchGetImageInput struct { _ struct{} `type:"structure"` @@ -2124,7 +2571,6 @@ func (s *BatchGetImageInput) SetRepositoryName(v string) *BatchGetImageInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/BatchGetImageResponse type BatchGetImageOutput struct { _ struct{} `type:"structure"` @@ -2157,7 +2603,6 @@ func (s *BatchGetImageOutput) SetImages(v []*Image) *BatchGetImageOutput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/CompleteLayerUploadRequest type CompleteLayerUploadInput struct { _ struct{} `type:"structure"` @@ -2241,7 +2686,6 @@ func (s *CompleteLayerUploadInput) SetUploadId(v string) *CompleteLayerUploadInp return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/CompleteLayerUploadResponse type CompleteLayerUploadOutput struct { _ struct{} `type:"structure"` @@ -2292,7 +2736,6 @@ func (s *CompleteLayerUploadOutput) SetUploadId(v string) *CompleteLayerUploadOu return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/CreateRepositoryRequest type CreateRepositoryInput struct { _ struct{} `type:"structure"` @@ -2336,7 +2779,6 @@ func (s *CreateRepositoryInput) SetRepositoryName(v string) *CreateRepositoryInp return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/CreateRepositoryResponse type CreateRepositoryOutput struct { _ struct{} `type:"structure"` @@ -2360,11 +2802,111 @@ func (s *CreateRepositoryOutput) SetRepository(v *Repository) *CreateRepositoryO return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/DeleteRepositoryRequest +type DeleteLifecyclePolicyInput struct { + _ struct{} `type:"structure"` + + // The AWS account ID associated with the registry that contains the repository. + // If you do not specify a registry, the default registry is assumed. + RegistryId *string `locationName:"registryId" type:"string"` + + // The name of the repository. + // + // RepositoryName is a required field + RepositoryName *string `locationName:"repositoryName" min:"2" type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteLifecyclePolicyInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteLifecyclePolicyInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteLifecyclePolicyInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteLifecyclePolicyInput"} + if s.RepositoryName == nil { + invalidParams.Add(request.NewErrParamRequired("RepositoryName")) + } + if s.RepositoryName != nil && len(*s.RepositoryName) < 2 { + invalidParams.Add(request.NewErrParamMinLen("RepositoryName", 2)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetRegistryId sets the RegistryId field's value. +func (s *DeleteLifecyclePolicyInput) SetRegistryId(v string) *DeleteLifecyclePolicyInput { + s.RegistryId = &v + return s +} + +// SetRepositoryName sets the RepositoryName field's value. +func (s *DeleteLifecyclePolicyInput) SetRepositoryName(v string) *DeleteLifecyclePolicyInput { + s.RepositoryName = &v + return s +} + +type DeleteLifecyclePolicyOutput struct { + _ struct{} `type:"structure"` + + // The time stamp of the last time that the lifecycle policy was run. + LastEvaluatedAt *time.Time `locationName:"lastEvaluatedAt" type:"timestamp" timestampFormat:"unix"` + + // The JSON lifecycle policy text. + LifecyclePolicyText *string `locationName:"lifecyclePolicyText" min:"100" type:"string"` + + // The registry ID associated with the request. + RegistryId *string `locationName:"registryId" type:"string"` + + // The repository name associated with the request. + RepositoryName *string `locationName:"repositoryName" min:"2" type:"string"` +} + +// String returns the string representation +func (s DeleteLifecyclePolicyOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteLifecyclePolicyOutput) GoString() string { + return s.String() +} + +// SetLastEvaluatedAt sets the LastEvaluatedAt field's value. +func (s *DeleteLifecyclePolicyOutput) SetLastEvaluatedAt(v time.Time) *DeleteLifecyclePolicyOutput { + s.LastEvaluatedAt = &v + return s +} + +// SetLifecyclePolicyText sets the LifecyclePolicyText field's value. +func (s *DeleteLifecyclePolicyOutput) SetLifecyclePolicyText(v string) *DeleteLifecyclePolicyOutput { + s.LifecyclePolicyText = &v + return s +} + +// SetRegistryId sets the RegistryId field's value. +func (s *DeleteLifecyclePolicyOutput) SetRegistryId(v string) *DeleteLifecyclePolicyOutput { + s.RegistryId = &v + return s +} + +// SetRepositoryName sets the RepositoryName field's value. +func (s *DeleteLifecyclePolicyOutput) SetRepositoryName(v string) *DeleteLifecyclePolicyOutput { + s.RepositoryName = &v + return s +} + type DeleteRepositoryInput struct { _ struct{} `type:"structure"` - // Force the deletion of the repository if it contains images. + // If a repository contains images, forces the deletion. Force *bool `locationName:"force" type:"boolean"` // The AWS account ID associated with the registry that contains the repository @@ -2421,7 +2963,6 @@ func (s *DeleteRepositoryInput) SetRepositoryName(v string) *DeleteRepositoryInp return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/DeleteRepositoryResponse type DeleteRepositoryOutput struct { _ struct{} `type:"structure"` @@ -2445,7 +2986,6 @@ func (s *DeleteRepositoryOutput) SetRepository(v *Repository) *DeleteRepositoryO return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/DeleteRepositoryPolicyRequest type DeleteRepositoryPolicyInput struct { _ struct{} `type:"structure"` @@ -2499,7 +3039,6 @@ func (s *DeleteRepositoryPolicyInput) SetRepositoryName(v string) *DeleteReposit return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/DeleteRepositoryPolicyResponse type DeleteRepositoryPolicyOutput struct { _ struct{} `type:"structure"` @@ -2542,7 +3081,6 @@ func (s *DeleteRepositoryPolicyOutput) SetRepositoryName(v string) *DeleteReposi } // An object representing a filter on a DescribeImages operation. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/DescribeImagesFilter type DescribeImagesFilter struct { _ struct{} `type:"structure"` @@ -2567,7 +3105,6 @@ func (s *DescribeImagesFilter) SetTagStatus(v string) *DescribeImagesFilter { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/DescribeImagesRequest type DescribeImagesInput struct { _ struct{} `type:"structure"` @@ -2583,13 +3120,15 @@ type DescribeImagesInput struct { // results of the initial request can be seen by sending another DescribeImages // request with the returned nextToken value. This value can be between 1 and // 100. If this parameter is not used, then DescribeImages returns up to 100 - // results and a nextToken value, if applicable. + // results and a nextToken value, if applicable. This option cannot be used + // when you specify images with imageIds. MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"` // The nextToken value returned from a previous paginated DescribeImages request // where maxResults was used and the results exceeded the value of that parameter. // Pagination continues from the end of the previous results that returned the // nextToken value. This value is null when there are no more results to return. + // This option cannot be used when you specify images with imageIds. NextToken *string `locationName:"nextToken" type:"string"` // The AWS account ID associated with the registry that contains the repository @@ -2672,7 +3211,6 @@ func (s *DescribeImagesInput) SetRepositoryName(v string) *DescribeImagesInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/DescribeImagesResponse type DescribeImagesOutput struct { _ struct{} `type:"structure"` @@ -2708,7 +3246,6 @@ func (s *DescribeImagesOutput) SetNextToken(v string) *DescribeImagesOutput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/DescribeRepositoriesRequest type DescribeRepositoriesInput struct { _ struct{} `type:"structure"` @@ -2718,14 +3255,16 @@ type DescribeRepositoriesInput struct { // element. The remaining results of the initial request can be seen by sending // another DescribeRepositories request with the returned nextToken value. This // value can be between 1 and 100. If this parameter is not used, then DescribeRepositories - // returns up to 100 results and a nextToken value, if applicable. + // returns up to 100 results and a nextToken value, if applicable. This option + // cannot be used when you specify repositories with repositoryNames. MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"` // The nextToken value returned from a previous paginated DescribeRepositories // request where maxResults was used and the results exceeded the value of that // parameter. Pagination continues from the end of the previous results that // returned the nextToken value. This value is null when there are no more results - // to return. + // to return. This option cannot be used when you specify repositories with + // repositoryNames. // // This token should be treated as an opaque identifier that is only used to // retrieve the next items in a list and not for other programmatic purposes. @@ -2791,7 +3330,6 @@ func (s *DescribeRepositoriesInput) SetRepositoryNames(v []*string) *DescribeRep return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/DescribeRepositoriesResponse type DescribeRepositoriesOutput struct { _ struct{} `type:"structure"` @@ -2827,7 +3365,6 @@ func (s *DescribeRepositoriesOutput) SetRepositories(v []*Repository) *DescribeR return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/GetAuthorizationTokenRequest type GetAuthorizationTokenInput struct { _ struct{} `type:"structure"` @@ -2866,7 +3403,6 @@ func (s *GetAuthorizationTokenInput) SetRegistryIds(v []*string) *GetAuthorizati return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/GetAuthorizationTokenResponse type GetAuthorizationTokenOutput struct { _ struct{} `type:"structure"` @@ -2891,7 +3427,6 @@ func (s *GetAuthorizationTokenOutput) SetAuthorizationData(v []*AuthorizationDat return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/GetDownloadUrlForLayerRequest type GetDownloadUrlForLayerInput struct { _ struct{} `type:"structure"` @@ -2957,7 +3492,6 @@ func (s *GetDownloadUrlForLayerInput) SetRepositoryName(v string) *GetDownloadUr return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/GetDownloadUrlForLayerResponse type GetDownloadUrlForLayerOutput struct { _ struct{} `type:"structure"` @@ -2990,7 +3524,294 @@ func (s *GetDownloadUrlForLayerOutput) SetLayerDigest(v string) *GetDownloadUrlF return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/GetRepositoryPolicyRequest +type GetLifecyclePolicyInput struct { + _ struct{} `type:"structure"` + + // The AWS account ID associated with the registry that contains the repository. + // If you do not specify a registry, the default registry is assumed. + RegistryId *string `locationName:"registryId" type:"string"` + + // The name of the repository. + // + // RepositoryName is a required field + RepositoryName *string `locationName:"repositoryName" min:"2" type:"string" required:"true"` +} + +// String returns the string representation +func (s GetLifecyclePolicyInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetLifecyclePolicyInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetLifecyclePolicyInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetLifecyclePolicyInput"} + if s.RepositoryName == nil { + invalidParams.Add(request.NewErrParamRequired("RepositoryName")) + } + if s.RepositoryName != nil && len(*s.RepositoryName) < 2 { + invalidParams.Add(request.NewErrParamMinLen("RepositoryName", 2)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetRegistryId sets the RegistryId field's value. +func (s *GetLifecyclePolicyInput) SetRegistryId(v string) *GetLifecyclePolicyInput { + s.RegistryId = &v + return s +} + +// SetRepositoryName sets the RepositoryName field's value. +func (s *GetLifecyclePolicyInput) SetRepositoryName(v string) *GetLifecyclePolicyInput { + s.RepositoryName = &v + return s +} + +type GetLifecyclePolicyOutput struct { + _ struct{} `type:"structure"` + + // The time stamp of the last time that the lifecycle policy was run. + LastEvaluatedAt *time.Time `locationName:"lastEvaluatedAt" type:"timestamp" timestampFormat:"unix"` + + // The JSON lifecycle policy text. + LifecyclePolicyText *string `locationName:"lifecyclePolicyText" min:"100" type:"string"` + + // The registry ID associated with the request. + RegistryId *string `locationName:"registryId" type:"string"` + + // The repository name associated with the request. + RepositoryName *string `locationName:"repositoryName" min:"2" type:"string"` +} + +// String returns the string representation +func (s GetLifecyclePolicyOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetLifecyclePolicyOutput) GoString() string { + return s.String() +} + +// SetLastEvaluatedAt sets the LastEvaluatedAt field's value. +func (s *GetLifecyclePolicyOutput) SetLastEvaluatedAt(v time.Time) *GetLifecyclePolicyOutput { + s.LastEvaluatedAt = &v + return s +} + +// SetLifecyclePolicyText sets the LifecyclePolicyText field's value. +func (s *GetLifecyclePolicyOutput) SetLifecyclePolicyText(v string) *GetLifecyclePolicyOutput { + s.LifecyclePolicyText = &v + return s +} + +// SetRegistryId sets the RegistryId field's value. +func (s *GetLifecyclePolicyOutput) SetRegistryId(v string) *GetLifecyclePolicyOutput { + s.RegistryId = &v + return s +} + +// SetRepositoryName sets the RepositoryName field's value. +func (s *GetLifecyclePolicyOutput) SetRepositoryName(v string) *GetLifecyclePolicyOutput { + s.RepositoryName = &v + return s +} + +type GetLifecyclePolicyPreviewInput struct { + _ struct{} `type:"structure"` + + // An optional parameter that filters results based on image tag status and + // all tags, if tagged. + Filter *LifecyclePolicyPreviewFilter `locationName:"filter" type:"structure"` + + // The list of imageIDs to be included. + ImageIds []*ImageIdentifier `locationName:"imageIds" min:"1" type:"list"` + + // The maximum number of repository results returned by GetLifecyclePolicyPreviewRequest + // in
 paginated output. When this parameter is used, GetLifecyclePolicyPreviewRequest + // only returns
 maxResults results in a single page along with a nextToken + // response element. The remaining results of the initial request can be seen + // by sending
 another GetLifecyclePolicyPreviewRequest request with the returned + // nextToken
 value. This value can be between 1 and 100. If this
 parameter + // is not used, then GetLifecyclePolicyPreviewRequest returns up to
 100 results + // and a nextToken value, if
 applicable. This option cannot be used when you + // specify images with imageIds. + MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"` + + // The nextToken value returned from a previous paginated
 GetLifecyclePolicyPreviewRequest + // request where maxResults was used and the
 results exceeded the value of + // that parameter. Pagination continues from the end of the
 previous results + // that returned the nextToken value. This value is
 null when there are no + // more results to return. This option cannot be used when you specify images + // with imageIds. + NextToken *string `locationName:"nextToken" type:"string"` + + // The AWS account ID associated with the registry that contains the repository. + // If you do not specify a registry, the default registry is assumed. + RegistryId *string `locationName:"registryId" type:"string"` + + // The name of the repository. + // + // RepositoryName is a required field + RepositoryName *string `locationName:"repositoryName" min:"2" type:"string" required:"true"` +} + +// String returns the string representation +func (s GetLifecyclePolicyPreviewInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetLifecyclePolicyPreviewInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetLifecyclePolicyPreviewInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetLifecyclePolicyPreviewInput"} + if s.ImageIds != nil && len(s.ImageIds) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ImageIds", 1)) + } + if s.MaxResults != nil && *s.MaxResults < 1 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1)) + } + if s.RepositoryName == nil { + invalidParams.Add(request.NewErrParamRequired("RepositoryName")) + } + if s.RepositoryName != nil && len(*s.RepositoryName) < 2 { + invalidParams.Add(request.NewErrParamMinLen("RepositoryName", 2)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetFilter sets the Filter field's value. +func (s *GetLifecyclePolicyPreviewInput) SetFilter(v *LifecyclePolicyPreviewFilter) *GetLifecyclePolicyPreviewInput { + s.Filter = v + return s +} + +// SetImageIds sets the ImageIds field's value. +func (s *GetLifecyclePolicyPreviewInput) SetImageIds(v []*ImageIdentifier) *GetLifecyclePolicyPreviewInput { + s.ImageIds = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *GetLifecyclePolicyPreviewInput) SetMaxResults(v int64) *GetLifecyclePolicyPreviewInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *GetLifecyclePolicyPreviewInput) SetNextToken(v string) *GetLifecyclePolicyPreviewInput { + s.NextToken = &v + return s +} + +// SetRegistryId sets the RegistryId field's value. +func (s *GetLifecyclePolicyPreviewInput) SetRegistryId(v string) *GetLifecyclePolicyPreviewInput { + s.RegistryId = &v + return s +} + +// SetRepositoryName sets the RepositoryName field's value. +func (s *GetLifecyclePolicyPreviewInput) SetRepositoryName(v string) *GetLifecyclePolicyPreviewInput { + s.RepositoryName = &v + return s +} + +type GetLifecyclePolicyPreviewOutput struct { + _ struct{} `type:"structure"` + + // The JSON lifecycle policy text. + LifecyclePolicyText *string `locationName:"lifecyclePolicyText" min:"100" type:"string"` + + // The nextToken value to include in a future GetLifecyclePolicyPreview request. + // When the results of a GetLifecyclePolicyPreview request exceed maxResults, + // this value can be used to retrieve the next page of results. This value is + // null when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // The results of the lifecycle policy preview request. + PreviewResults []*LifecyclePolicyPreviewResult `locationName:"previewResults" type:"list"` + + // The registry ID associated with the request. + RegistryId *string `locationName:"registryId" type:"string"` + + // The repository name associated with the request. + RepositoryName *string `locationName:"repositoryName" min:"2" type:"string"` + + // The status of the lifecycle policy preview request. + Status *string `locationName:"status" type:"string" enum:"LifecyclePolicyPreviewStatus"` + + // The list of images that is returned as a result of the action. + Summary *LifecyclePolicyPreviewSummary `locationName:"summary" type:"structure"` +} + +// String returns the string representation +func (s GetLifecyclePolicyPreviewOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetLifecyclePolicyPreviewOutput) GoString() string { + return s.String() +} + +// SetLifecyclePolicyText sets the LifecyclePolicyText field's value. +func (s *GetLifecyclePolicyPreviewOutput) SetLifecyclePolicyText(v string) *GetLifecyclePolicyPreviewOutput { + s.LifecyclePolicyText = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *GetLifecyclePolicyPreviewOutput) SetNextToken(v string) *GetLifecyclePolicyPreviewOutput { + s.NextToken = &v + return s +} + +// SetPreviewResults sets the PreviewResults field's value. +func (s *GetLifecyclePolicyPreviewOutput) SetPreviewResults(v []*LifecyclePolicyPreviewResult) *GetLifecyclePolicyPreviewOutput { + s.PreviewResults = v + return s +} + +// SetRegistryId sets the RegistryId field's value. +func (s *GetLifecyclePolicyPreviewOutput) SetRegistryId(v string) *GetLifecyclePolicyPreviewOutput { + s.RegistryId = &v + return s +} + +// SetRepositoryName sets the RepositoryName field's value. +func (s *GetLifecyclePolicyPreviewOutput) SetRepositoryName(v string) *GetLifecyclePolicyPreviewOutput { + s.RepositoryName = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *GetLifecyclePolicyPreviewOutput) SetStatus(v string) *GetLifecyclePolicyPreviewOutput { + s.Status = &v + return s +} + +// SetSummary sets the Summary field's value. +func (s *GetLifecyclePolicyPreviewOutput) SetSummary(v *LifecyclePolicyPreviewSummary) *GetLifecyclePolicyPreviewOutput { + s.Summary = v + return s +} + type GetRepositoryPolicyInput struct { _ struct{} `type:"structure"` @@ -2998,7 +3819,7 @@ type GetRepositoryPolicyInput struct { // If you do not specify a registry, the default registry is assumed. RegistryId *string `locationName:"registryId" type:"string"` - // The name of the repository whose policy you want to retrieve. + // The name of the repository with the policy to retrieve. // // RepositoryName is a required field RepositoryName *string `locationName:"repositoryName" min:"2" type:"string" required:"true"` @@ -3042,7 +3863,6 @@ func (s *GetRepositoryPolicyInput) SetRepositoryName(v string) *GetRepositoryPol return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/GetRepositoryPolicyResponse type GetRepositoryPolicyOutput struct { _ struct{} `type:"structure"` @@ -3085,7 +3905,6 @@ func (s *GetRepositoryPolicyOutput) SetRepositoryName(v string) *GetRepositoryPo } // An object representing an Amazon ECR image. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/Image type Image struct { _ struct{} `type:"structure"` @@ -3137,7 +3956,6 @@ func (s *Image) SetRepositoryName(v string) *Image { } // An object that describes an image returned by a DescribeImages operation. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/ImageDetail type ImageDetail struct { _ struct{} `type:"structure"` @@ -3213,7 +4031,6 @@ func (s *ImageDetail) SetRepositoryName(v string) *ImageDetail { } // An object representing an Amazon ECR image failure. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/ImageFailure type ImageFailure struct { _ struct{} `type:"structure"` @@ -3256,7 +4073,6 @@ func (s *ImageFailure) SetImageId(v *ImageIdentifier) *ImageFailure { } // An object with identifying information for an Amazon ECR image. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/ImageIdentifier type ImageIdentifier struct { _ struct{} `type:"structure"` @@ -3289,15 +4105,14 @@ func (s *ImageIdentifier) SetImageTag(v string) *ImageIdentifier { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/InitiateLayerUploadRequest type InitiateLayerUploadInput struct { _ struct{} `type:"structure"` - // The AWS account ID associated with the registry that you intend to upload - // layers to. If you do not specify a registry, the default registry is assumed. + // The AWS account ID associated with the registry to which you intend to upload + // layers. If you do not specify a registry, the default registry is assumed. RegistryId *string `locationName:"registryId" type:"string"` - // The name of the repository that you intend to upload layers to. + // The name of the repository to which you intend to upload layers. // // RepositoryName is a required field RepositoryName *string `locationName:"repositoryName" min:"2" type:"string" required:"true"` @@ -3341,7 +4156,6 @@ func (s *InitiateLayerUploadInput) SetRepositoryName(v string) *InitiateLayerUpl return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/InitiateLayerUploadResponse type InitiateLayerUploadOutput struct { _ struct{} `type:"structure"` @@ -3377,7 +4191,6 @@ func (s *InitiateLayerUploadOutput) SetUploadId(v string) *InitiateLayerUploadOu } // An object representing an Amazon ECR image layer. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/Layer type Layer struct { _ struct{} `type:"structure"` @@ -3430,7 +4243,6 @@ func (s *Layer) SetMediaType(v string) *Layer { } // An object representing an Amazon ECR image layer failure. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/LayerFailure type LayerFailure struct { _ struct{} `type:"structure"` @@ -3472,8 +4284,140 @@ func (s *LayerFailure) SetLayerDigest(v string) *LayerFailure { return s } +// The filter for the lifecycle policy preview. +type LifecyclePolicyPreviewFilter struct { + _ struct{} `type:"structure"` + + // The tag status of the image. + TagStatus *string `locationName:"tagStatus" type:"string" enum:"TagStatus"` +} + +// String returns the string representation +func (s LifecyclePolicyPreviewFilter) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LifecyclePolicyPreviewFilter) GoString() string { + return s.String() +} + +// SetTagStatus sets the TagStatus field's value. +func (s *LifecyclePolicyPreviewFilter) SetTagStatus(v string) *LifecyclePolicyPreviewFilter { + s.TagStatus = &v + return s +} + +// The result of the lifecycle policy preview. +type LifecyclePolicyPreviewResult struct { + _ struct{} `type:"structure"` + + // The type of action to be taken. + Action *LifecyclePolicyRuleAction `locationName:"action" type:"structure"` + + // The priority of the applied rule. + AppliedRulePriority *int64 `locationName:"appliedRulePriority" min:"1" type:"integer"` + + // The sha256 digest of the image manifest. + ImageDigest *string `locationName:"imageDigest" type:"string"` + + // The date and time, expressed in standard JavaScript date format, at which + // the current image was pushed to the repository. + ImagePushedAt *time.Time `locationName:"imagePushedAt" type:"timestamp" timestampFormat:"unix"` + + // The list of tags associated with this image. + ImageTags []*string `locationName:"imageTags" type:"list"` +} + +// String returns the string representation +func (s LifecyclePolicyPreviewResult) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LifecyclePolicyPreviewResult) GoString() string { + return s.String() +} + +// SetAction sets the Action field's value. +func (s *LifecyclePolicyPreviewResult) SetAction(v *LifecyclePolicyRuleAction) *LifecyclePolicyPreviewResult { + s.Action = v + return s +} + +// SetAppliedRulePriority sets the AppliedRulePriority field's value. +func (s *LifecyclePolicyPreviewResult) SetAppliedRulePriority(v int64) *LifecyclePolicyPreviewResult { + s.AppliedRulePriority = &v + return s +} + +// SetImageDigest sets the ImageDigest field's value. +func (s *LifecyclePolicyPreviewResult) SetImageDigest(v string) *LifecyclePolicyPreviewResult { + s.ImageDigest = &v + return s +} + +// SetImagePushedAt sets the ImagePushedAt field's value. +func (s *LifecyclePolicyPreviewResult) SetImagePushedAt(v time.Time) *LifecyclePolicyPreviewResult { + s.ImagePushedAt = &v + return s +} + +// SetImageTags sets the ImageTags field's value. +func (s *LifecyclePolicyPreviewResult) SetImageTags(v []*string) *LifecyclePolicyPreviewResult { + s.ImageTags = v + return s +} + +// The summary of the lifecycle policy preview request. +type LifecyclePolicyPreviewSummary struct { + _ struct{} `type:"structure"` + + // The number of expiring images. + ExpiringImageTotalCount *int64 `locationName:"expiringImageTotalCount" type:"integer"` +} + +// String returns the string representation +func (s LifecyclePolicyPreviewSummary) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LifecyclePolicyPreviewSummary) GoString() string { + return s.String() +} + +// SetExpiringImageTotalCount sets the ExpiringImageTotalCount field's value. +func (s *LifecyclePolicyPreviewSummary) SetExpiringImageTotalCount(v int64) *LifecyclePolicyPreviewSummary { + s.ExpiringImageTotalCount = &v + return s +} + +// The type of action to be taken. +type LifecyclePolicyRuleAction struct { + _ struct{} `type:"structure"` + + // The type of action to be taken. + Type *string `locationName:"type" type:"string" enum:"ImageActionType"` +} + +// String returns the string representation +func (s LifecyclePolicyRuleAction) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LifecyclePolicyRuleAction) GoString() string { + return s.String() +} + +// SetType sets the Type field's value. +func (s *LifecyclePolicyRuleAction) SetType(v string) *LifecyclePolicyRuleAction { + s.Type = &v + return s +} + // An object representing a filter on a ListImages operation. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/ListImagesFilter type ListImagesFilter struct { _ struct{} `type:"structure"` @@ -3498,7 +4442,6 @@ func (s *ListImagesFilter) SetTagStatus(v string) *ListImagesFilter { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/ListImagesRequest type ListImagesInput struct { _ struct{} `type:"structure"` @@ -3524,11 +4467,11 @@ type ListImagesInput struct { NextToken *string `locationName:"nextToken" type:"string"` // The AWS account ID associated with the registry that contains the repository - // to list images in. If you do not specify a registry, the default registry + // in which to list images. If you do not specify a registry, the default registry // is assumed. RegistryId *string `locationName:"registryId" type:"string"` - // The repository whose image IDs are to be listed. + // The repository with image IDs to be listed. // // RepositoryName is a required field RepositoryName *string `locationName:"repositoryName" min:"2" type:"string" required:"true"` @@ -3593,7 +4536,6 @@ func (s *ListImagesInput) SetRepositoryName(v string) *ListImagesInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/ListImagesResponse type ListImagesOutput struct { _ struct{} `type:"structure"` @@ -3629,7 +4571,6 @@ func (s *ListImagesOutput) SetNextToken(v string) *ListImagesOutput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/PutImageRequest type PutImageInput struct { _ struct{} `type:"structure"` @@ -3706,7 +4647,6 @@ func (s *PutImageInput) SetRepositoryName(v string) *PutImageInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/PutImageResponse type PutImageOutput struct { _ struct{} `type:"structure"` @@ -3730,28 +4670,135 @@ func (s *PutImageOutput) SetImage(v *Image) *PutImageOutput { return s } +type PutLifecyclePolicyInput struct { + _ struct{} `type:"structure"` + + // The JSON repository policy text to apply to the repository. + // + // LifecyclePolicyText is a required field + LifecyclePolicyText *string `locationName:"lifecyclePolicyText" min:"100" type:"string" required:"true"` + + // The AWS account ID associated with the registry that contains the repository. + // If you do
 not specify a registry, the default registry is assumed. + RegistryId *string `locationName:"registryId" type:"string"` + + // The name of the repository to receive the policy. + // + // RepositoryName is a required field + RepositoryName *string `locationName:"repositoryName" min:"2" type:"string" required:"true"` +} + +// String returns the string representation +func (s PutLifecyclePolicyInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutLifecyclePolicyInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *PutLifecyclePolicyInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "PutLifecyclePolicyInput"} + if s.LifecyclePolicyText == nil { + invalidParams.Add(request.NewErrParamRequired("LifecyclePolicyText")) + } + if s.LifecyclePolicyText != nil && len(*s.LifecyclePolicyText) < 100 { + invalidParams.Add(request.NewErrParamMinLen("LifecyclePolicyText", 100)) + } + if s.RepositoryName == nil { + invalidParams.Add(request.NewErrParamRequired("RepositoryName")) + } + if s.RepositoryName != nil && len(*s.RepositoryName) < 2 { + invalidParams.Add(request.NewErrParamMinLen("RepositoryName", 2)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetLifecyclePolicyText sets the LifecyclePolicyText field's value. +func (s *PutLifecyclePolicyInput) SetLifecyclePolicyText(v string) *PutLifecyclePolicyInput { + s.LifecyclePolicyText = &v + return s +} + +// SetRegistryId sets the RegistryId field's value. +func (s *PutLifecyclePolicyInput) SetRegistryId(v string) *PutLifecyclePolicyInput { + s.RegistryId = &v + return s +} + +// SetRepositoryName sets the RepositoryName field's value. +func (s *PutLifecyclePolicyInput) SetRepositoryName(v string) *PutLifecyclePolicyInput { + s.RepositoryName = &v + return s +} + +type PutLifecyclePolicyOutput struct { + _ struct{} `type:"structure"` + + // The JSON repository policy text. + LifecyclePolicyText *string `locationName:"lifecyclePolicyText" min:"100" type:"string"` + + // The registry ID associated with the request. + RegistryId *string `locationName:"registryId" type:"string"` + + // The repository name associated with the request. + RepositoryName *string `locationName:"repositoryName" min:"2" type:"string"` +} + +// String returns the string representation +func (s PutLifecyclePolicyOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutLifecyclePolicyOutput) GoString() string { + return s.String() +} + +// SetLifecyclePolicyText sets the LifecyclePolicyText field's value. +func (s *PutLifecyclePolicyOutput) SetLifecyclePolicyText(v string) *PutLifecyclePolicyOutput { + s.LifecyclePolicyText = &v + return s +} + +// SetRegistryId sets the RegistryId field's value. +func (s *PutLifecyclePolicyOutput) SetRegistryId(v string) *PutLifecyclePolicyOutput { + s.RegistryId = &v + return s +} + +// SetRepositoryName sets the RepositoryName field's value. +func (s *PutLifecyclePolicyOutput) SetRepositoryName(v string) *PutLifecyclePolicyOutput { + s.RepositoryName = &v + return s +} + // An object representing a repository. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/Repository type Repository struct { _ struct{} `type:"structure"` - // The date and time, in JavaScript date/time format, when the repository was - // created. + // The date and time, in JavaScript date format, when the repository was created. CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" timestampFormat:"unix"` // The AWS account ID associated with the registry that contains the repository. RegistryId *string `locationName:"registryId" type:"string"` // The Amazon Resource Name (ARN) that identifies the repository. The ARN contains - // the arn:aws:ecr namespace, followed by the region of the repository, the - // AWS account ID of the repository owner, the repository namespace, and then - // the repository name. For example, arn:aws:ecr:region:012345678910:repository/test. + // the arn:aws:ecr namespace, followed by the region of the repository, AWS + // account ID of the repository owner, repository namespace, and repository + // name. For example, arn:aws:ecr:region:012345678910:repository/test. RepositoryArn *string `locationName:"repositoryArn" type:"string"` // The name of the repository. RepositoryName *string `locationName:"repositoryName" min:"2" type:"string"` - // The URI for the repository. You can use this URI for Docker push and pull + // The URI for the repository. You can use this URI for Docker push or pull // operations. RepositoryUri *string `locationName:"repositoryUri" type:"string"` } @@ -3796,7 +4843,6 @@ func (s *Repository) SetRepositoryUri(v string) *Repository { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/SetRepositoryPolicyRequest type SetRepositoryPolicyInput struct { _ struct{} `type:"structure"` @@ -3873,7 +4919,6 @@ func (s *SetRepositoryPolicyInput) SetRepositoryName(v string) *SetRepositoryPol return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/SetRepositoryPolicyResponse type SetRepositoryPolicyOutput struct { _ struct{} `type:"structure"` @@ -3915,7 +4960,120 @@ func (s *SetRepositoryPolicyOutput) SetRepositoryName(v string) *SetRepositoryPo return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/UploadLayerPartRequest +type StartLifecyclePolicyPreviewInput struct { + _ struct{} `type:"structure"` + + // The policy to be evaluated against. If you do not specify a policy, the current + // policy for the repository is used. + LifecyclePolicyText *string `locationName:"lifecyclePolicyText" min:"100" type:"string"` + + // The AWS account ID associated with the registry that contains the repository. + // If you do not specify a registry, the default registry is assumed. + RegistryId *string `locationName:"registryId" type:"string"` + + // The name of the repository to be evaluated. + // + // RepositoryName is a required field + RepositoryName *string `locationName:"repositoryName" min:"2" type:"string" required:"true"` +} + +// String returns the string representation +func (s StartLifecyclePolicyPreviewInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s StartLifecyclePolicyPreviewInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *StartLifecyclePolicyPreviewInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "StartLifecyclePolicyPreviewInput"} + if s.LifecyclePolicyText != nil && len(*s.LifecyclePolicyText) < 100 { + invalidParams.Add(request.NewErrParamMinLen("LifecyclePolicyText", 100)) + } + if s.RepositoryName == nil { + invalidParams.Add(request.NewErrParamRequired("RepositoryName")) + } + if s.RepositoryName != nil && len(*s.RepositoryName) < 2 { + invalidParams.Add(request.NewErrParamMinLen("RepositoryName", 2)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetLifecyclePolicyText sets the LifecyclePolicyText field's value. +func (s *StartLifecyclePolicyPreviewInput) SetLifecyclePolicyText(v string) *StartLifecyclePolicyPreviewInput { + s.LifecyclePolicyText = &v + return s +} + +// SetRegistryId sets the RegistryId field's value. +func (s *StartLifecyclePolicyPreviewInput) SetRegistryId(v string) *StartLifecyclePolicyPreviewInput { + s.RegistryId = &v + return s +} + +// SetRepositoryName sets the RepositoryName field's value. +func (s *StartLifecyclePolicyPreviewInput) SetRepositoryName(v string) *StartLifecyclePolicyPreviewInput { + s.RepositoryName = &v + return s +} + +type StartLifecyclePolicyPreviewOutput struct { + _ struct{} `type:"structure"` + + // The JSON repository policy text. + LifecyclePolicyText *string `locationName:"lifecyclePolicyText" min:"100" type:"string"` + + // The registry ID associated with the request. + RegistryId *string `locationName:"registryId" type:"string"` + + // The repository name associated with the request. + RepositoryName *string `locationName:"repositoryName" min:"2" type:"string"` + + // The status of the lifecycle policy preview request. + Status *string `locationName:"status" type:"string" enum:"LifecyclePolicyPreviewStatus"` +} + +// String returns the string representation +func (s StartLifecyclePolicyPreviewOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s StartLifecyclePolicyPreviewOutput) GoString() string { + return s.String() +} + +// SetLifecyclePolicyText sets the LifecyclePolicyText field's value. +func (s *StartLifecyclePolicyPreviewOutput) SetLifecyclePolicyText(v string) *StartLifecyclePolicyPreviewOutput { + s.LifecyclePolicyText = &v + return s +} + +// SetRegistryId sets the RegistryId field's value. +func (s *StartLifecyclePolicyPreviewOutput) SetRegistryId(v string) *StartLifecyclePolicyPreviewOutput { + s.RegistryId = &v + return s +} + +// SetRepositoryName sets the RepositoryName field's value. +func (s *StartLifecyclePolicyPreviewOutput) SetRepositoryName(v string) *StartLifecyclePolicyPreviewOutput { + s.RepositoryName = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *StartLifecyclePolicyPreviewOutput) SetStatus(v string) *StartLifecyclePolicyPreviewOutput { + s.Status = &v + return s +} + type UploadLayerPartInput struct { _ struct{} `type:"structure"` @@ -3936,11 +5094,11 @@ type UploadLayerPartInput struct { // PartLastByte is a required field PartLastByte *int64 `locationName:"partLastByte" type:"long" required:"true"` - // The AWS account ID associated with the registry that you are uploading layer - // parts to. If you do not specify a registry, the default registry is assumed. + // The AWS account ID associated with the registry to which you are uploading + // layer parts. If you do not specify a registry, the default registry is assumed. RegistryId *string `locationName:"registryId" type:"string"` - // The name of the repository that you are uploading layer parts to. + // The name of the repository to which you are uploading layer parts. // // RepositoryName is a required field RepositoryName *string `locationName:"repositoryName" min:"2" type:"string" required:"true"` @@ -4026,7 +5184,6 @@ func (s *UploadLayerPartInput) SetUploadId(v string) *UploadLayerPartInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21/UploadLayerPartResponse type UploadLayerPartOutput struct { _ struct{} `type:"structure"` @@ -4077,6 +5234,11 @@ func (s *UploadLayerPartOutput) SetUploadId(v string) *UploadLayerPartOutput { return s } +const ( + // ImageActionTypeExpire is a ImageActionType enum value + ImageActionTypeExpire = "EXPIRE" +) + const ( // ImageFailureCodeInvalidImageDigest is a ImageFailureCode enum value ImageFailureCodeInvalidImageDigest = "InvalidImageDigest" @@ -4110,6 +5272,20 @@ const ( LayerFailureCodeMissingLayerDigest = "MissingLayerDigest" ) +const ( + // LifecyclePolicyPreviewStatusInProgress is a LifecyclePolicyPreviewStatus enum value + LifecyclePolicyPreviewStatusInProgress = "IN_PROGRESS" + + // LifecyclePolicyPreviewStatusComplete is a LifecyclePolicyPreviewStatus enum value + LifecyclePolicyPreviewStatusComplete = "COMPLETE" + + // LifecyclePolicyPreviewStatusExpired is a LifecyclePolicyPreviewStatus enum value + LifecyclePolicyPreviewStatusExpired = "EXPIRED" + + // LifecyclePolicyPreviewStatusFailed is a LifecyclePolicyPreviewStatus enum value + LifecyclePolicyPreviewStatusFailed = "FAILED" +) + const ( // TagStatusTagged is a TagStatus enum value TagStatusTagged = "TAGGED" diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/ecr/doc.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/ecr/doc.go index 987aa72fa6..d970974bcd 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/ecr/doc.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/ecr/doc.go @@ -3,11 +3,11 @@ // Package ecr provides the client and types for making API // requests to Amazon EC2 Container Registry. // -// Amazon EC2 Container Registry (Amazon ECR) is a managed AWS Docker registry +// Amazon Elastic Container Registry (Amazon ECR) is a managed Docker registry // service. Customers can use the familiar Docker CLI to push, pull, and manage // images. Amazon ECR provides a secure, scalable, and reliable registry. Amazon // ECR supports private Docker repositories with resource-based permissions -// using AWS IAM so that specific users or Amazon EC2 instances can access repositories +// using IAM so that specific users or Amazon EC2 instances can access repositories // and images. Developers can use the Docker CLI to author and manage images. // // See https://docs.aws.amazon.com/goto/WebAPI/ecr-2015-09-21 for more information on this service. @@ -17,7 +17,7 @@ // // Using the Client // -// To Amazon EC2 Container Registry with the SDK use the New function to create +// To contact Amazon EC2 Container Registry with the SDK use the New function to create // a new service client. With that client you can make API requests to the service. // These clients are safe to use concurrently. // diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/ecr/errors.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/ecr/errors.go index 4399e6a295..09e0595de7 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/ecr/errors.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/ecr/errors.go @@ -13,8 +13,8 @@ const ( // ErrCodeImageAlreadyExistsException for service response error code // "ImageAlreadyExistsException". // - // The specified image has already been pushed, and there are no changes to - // the manifest or image tag since the last push. + // The specified image has already been pushed, and there were no changes to + // the manifest or image tag after the last push. ErrCodeImageAlreadyExistsException = "ImageAlreadyExistsException" // ErrCodeImageNotFoundException for service response error code @@ -70,13 +70,32 @@ const ( // for this repository. ErrCodeLayersNotFoundException = "LayersNotFoundException" + // ErrCodeLifecyclePolicyNotFoundException for service response error code + // "LifecyclePolicyNotFoundException". + // + // The lifecycle policy could not be found, and no policy is set to the repository. + ErrCodeLifecyclePolicyNotFoundException = "LifecyclePolicyNotFoundException" + + // ErrCodeLifecyclePolicyPreviewInProgressException for service response error code + // "LifecyclePolicyPreviewInProgressException". + // + // The previous lifecycle policy preview request has not completed. Please try + // again later. + ErrCodeLifecyclePolicyPreviewInProgressException = "LifecyclePolicyPreviewInProgressException" + + // ErrCodeLifecyclePolicyPreviewNotFoundException for service response error code + // "LifecyclePolicyPreviewNotFoundException". + // + // There is no dry run for this repository. + ErrCodeLifecyclePolicyPreviewNotFoundException = "LifecyclePolicyPreviewNotFoundException" + // ErrCodeLimitExceededException for service response error code // "LimitExceededException". // // The operation did not succeed because it would have exceeded a service limit // for your account. For more information, see Amazon ECR Default Service Limits // (http://docs.aws.amazon.com/AmazonECR/latest/userguide/service_limits.html) - // in the Amazon EC2 Container Registry User Guide. + // in the Amazon Elastic Container Registry User Guide. ErrCodeLimitExceededException = "LimitExceededException" // ErrCodeRepositoryAlreadyExistsException for service response error code diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/ecr/service.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/ecr/service.go index 95de12e25e..7bdf213709 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/ecr/service.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/ecr/service.go @@ -29,8 +29,9 @@ var initRequest func(*request.Request) // Service information constants const ( - ServiceName = "ecr" // Service endpoint prefix API calls made to. - EndpointsID = ServiceName // Service ID for Regions and Endpoints metadata. + ServiceName = "ecr" // Name of service. + EndpointsID = ServiceName // ID to lookup a service endpoint with. + ServiceID = "ECR" // ServiceID is a unique identifer of a specific service. ) // New creates a new instance of the ECR client with a session. @@ -55,6 +56,7 @@ func newClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegio cfg, metadata.ClientInfo{ ServiceName: ServiceName, + ServiceID: ServiceID, SigningName: signingName, SigningRegion: signingRegion, Endpoint: endpoint, diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/elb/api.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/elb/api.go index ba6c106496..26720a3420 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/elb/api.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/elb/api.go @@ -15,7 +15,7 @@ const opAddTags = "AddTags" // AddTagsRequest generates a "aws/request.Request" representing the // client's request for the AddTags operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -36,7 +36,7 @@ const opAddTags = "AddTags" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/AddTags +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/AddTags func (c *ELB) AddTagsRequest(input *AddTagsInput) (req *request.Request, output *AddTagsOutput) { op := &request.Operation{ Name: opAddTags, @@ -82,7 +82,7 @@ func (c *ELB) AddTagsRequest(input *AddTagsInput) (req *request.Request, output // * ErrCodeDuplicateTagKeysException "DuplicateTagKeys" // A tag key was specified more than once. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/AddTags +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/AddTags func (c *ELB) AddTags(input *AddTagsInput) (*AddTagsOutput, error) { req, out := c.AddTagsRequest(input) return out, req.Send() @@ -108,7 +108,7 @@ const opApplySecurityGroupsToLoadBalancer = "ApplySecurityGroupsToLoadBalancer" // ApplySecurityGroupsToLoadBalancerRequest generates a "aws/request.Request" representing the // client's request for the ApplySecurityGroupsToLoadBalancer operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -129,7 +129,7 @@ const opApplySecurityGroupsToLoadBalancer = "ApplySecurityGroupsToLoadBalancer" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/ApplySecurityGroupsToLoadBalancer +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/ApplySecurityGroupsToLoadBalancer func (c *ELB) ApplySecurityGroupsToLoadBalancerRequest(input *ApplySecurityGroupsToLoadBalancerInput) (req *request.Request, output *ApplySecurityGroupsToLoadBalancerOutput) { op := &request.Operation{ Name: opApplySecurityGroupsToLoadBalancer, @@ -172,7 +172,7 @@ func (c *ELB) ApplySecurityGroupsToLoadBalancerRequest(input *ApplySecurityGroup // * ErrCodeInvalidSecurityGroupException "InvalidSecurityGroup" // One or more of the specified security groups do not exist. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/ApplySecurityGroupsToLoadBalancer +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/ApplySecurityGroupsToLoadBalancer func (c *ELB) ApplySecurityGroupsToLoadBalancer(input *ApplySecurityGroupsToLoadBalancerInput) (*ApplySecurityGroupsToLoadBalancerOutput, error) { req, out := c.ApplySecurityGroupsToLoadBalancerRequest(input) return out, req.Send() @@ -198,7 +198,7 @@ const opAttachLoadBalancerToSubnets = "AttachLoadBalancerToSubnets" // AttachLoadBalancerToSubnetsRequest generates a "aws/request.Request" representing the // client's request for the AttachLoadBalancerToSubnets operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -219,7 +219,7 @@ const opAttachLoadBalancerToSubnets = "AttachLoadBalancerToSubnets" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/AttachLoadBalancerToSubnets +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/AttachLoadBalancerToSubnets func (c *ELB) AttachLoadBalancerToSubnetsRequest(input *AttachLoadBalancerToSubnetsInput) (req *request.Request, output *AttachLoadBalancerToSubnetsOutput) { op := &request.Operation{ Name: opAttachLoadBalancerToSubnets, @@ -266,7 +266,7 @@ func (c *ELB) AttachLoadBalancerToSubnetsRequest(input *AttachLoadBalancerToSubn // * ErrCodeInvalidSubnetException "InvalidSubnet" // The specified VPC has no associated Internet gateway. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/AttachLoadBalancerToSubnets +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/AttachLoadBalancerToSubnets func (c *ELB) AttachLoadBalancerToSubnets(input *AttachLoadBalancerToSubnetsInput) (*AttachLoadBalancerToSubnetsOutput, error) { req, out := c.AttachLoadBalancerToSubnetsRequest(input) return out, req.Send() @@ -292,7 +292,7 @@ const opConfigureHealthCheck = "ConfigureHealthCheck" // ConfigureHealthCheckRequest generates a "aws/request.Request" representing the // client's request for the ConfigureHealthCheck operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -313,7 +313,7 @@ const opConfigureHealthCheck = "ConfigureHealthCheck" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/ConfigureHealthCheck +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/ConfigureHealthCheck func (c *ELB) ConfigureHealthCheckRequest(input *ConfigureHealthCheckInput) (req *request.Request, output *ConfigureHealthCheckOutput) { op := &request.Operation{ Name: opConfigureHealthCheck, @@ -350,7 +350,7 @@ func (c *ELB) ConfigureHealthCheckRequest(input *ConfigureHealthCheckInput) (req // * ErrCodeAccessPointNotFoundException "LoadBalancerNotFound" // The specified load balancer does not exist. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/ConfigureHealthCheck +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/ConfigureHealthCheck func (c *ELB) ConfigureHealthCheck(input *ConfigureHealthCheckInput) (*ConfigureHealthCheckOutput, error) { req, out := c.ConfigureHealthCheckRequest(input) return out, req.Send() @@ -376,7 +376,7 @@ const opCreateAppCookieStickinessPolicy = "CreateAppCookieStickinessPolicy" // CreateAppCookieStickinessPolicyRequest generates a "aws/request.Request" representing the // client's request for the CreateAppCookieStickinessPolicy operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -397,7 +397,7 @@ const opCreateAppCookieStickinessPolicy = "CreateAppCookieStickinessPolicy" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/CreateAppCookieStickinessPolicy +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/CreateAppCookieStickinessPolicy func (c *ELB) CreateAppCookieStickinessPolicyRequest(input *CreateAppCookieStickinessPolicyInput) (req *request.Request, output *CreateAppCookieStickinessPolicyOutput) { op := &request.Operation{ Name: opCreateAppCookieStickinessPolicy, @@ -452,7 +452,7 @@ func (c *ELB) CreateAppCookieStickinessPolicyRequest(input *CreateAppCookieStick // * ErrCodeInvalidConfigurationRequestException "InvalidConfigurationRequest" // The requested configuration change is not valid. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/CreateAppCookieStickinessPolicy +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/CreateAppCookieStickinessPolicy func (c *ELB) CreateAppCookieStickinessPolicy(input *CreateAppCookieStickinessPolicyInput) (*CreateAppCookieStickinessPolicyOutput, error) { req, out := c.CreateAppCookieStickinessPolicyRequest(input) return out, req.Send() @@ -478,7 +478,7 @@ const opCreateLBCookieStickinessPolicy = "CreateLBCookieStickinessPolicy" // CreateLBCookieStickinessPolicyRequest generates a "aws/request.Request" representing the // client's request for the CreateLBCookieStickinessPolicy operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -499,7 +499,7 @@ const opCreateLBCookieStickinessPolicy = "CreateLBCookieStickinessPolicy" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/CreateLBCookieStickinessPolicy +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/CreateLBCookieStickinessPolicy func (c *ELB) CreateLBCookieStickinessPolicyRequest(input *CreateLBCookieStickinessPolicyInput) (req *request.Request, output *CreateLBCookieStickinessPolicyOutput) { op := &request.Operation{ Name: opCreateLBCookieStickinessPolicy, @@ -556,7 +556,7 @@ func (c *ELB) CreateLBCookieStickinessPolicyRequest(input *CreateLBCookieStickin // * ErrCodeInvalidConfigurationRequestException "InvalidConfigurationRequest" // The requested configuration change is not valid. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/CreateLBCookieStickinessPolicy +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/CreateLBCookieStickinessPolicy func (c *ELB) CreateLBCookieStickinessPolicy(input *CreateLBCookieStickinessPolicyInput) (*CreateLBCookieStickinessPolicyOutput, error) { req, out := c.CreateLBCookieStickinessPolicyRequest(input) return out, req.Send() @@ -582,7 +582,7 @@ const opCreateLoadBalancer = "CreateLoadBalancer" // CreateLoadBalancerRequest generates a "aws/request.Request" representing the // client's request for the CreateLoadBalancer operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -603,7 +603,7 @@ const opCreateLoadBalancer = "CreateLoadBalancer" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/CreateLoadBalancer +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/CreateLoadBalancer func (c *ELB) CreateLoadBalancerRequest(input *CreateLoadBalancerInput) (req *request.Request, output *CreateLoadBalancerOutput) { op := &request.Operation{ Name: opCreateLoadBalancer, @@ -682,7 +682,10 @@ func (c *ELB) CreateLoadBalancerRequest(input *CreateLoadBalancerInput) (req *re // * ErrCodeUnsupportedProtocolException "UnsupportedProtocol" // The specified protocol or signature version is not supported. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/CreateLoadBalancer +// * ErrCodeOperationNotPermittedException "OperationNotPermitted" +// This operation is not allowed. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/CreateLoadBalancer func (c *ELB) CreateLoadBalancer(input *CreateLoadBalancerInput) (*CreateLoadBalancerOutput, error) { req, out := c.CreateLoadBalancerRequest(input) return out, req.Send() @@ -708,7 +711,7 @@ const opCreateLoadBalancerListeners = "CreateLoadBalancerListeners" // CreateLoadBalancerListenersRequest generates a "aws/request.Request" representing the // client's request for the CreateLoadBalancerListeners operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -729,7 +732,7 @@ const opCreateLoadBalancerListeners = "CreateLoadBalancerListeners" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/CreateLoadBalancerListeners +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/CreateLoadBalancerListeners func (c *ELB) CreateLoadBalancerListenersRequest(input *CreateLoadBalancerListenersInput) (req *request.Request, output *CreateLoadBalancerListenersOutput) { op := &request.Operation{ Name: opCreateLoadBalancerListeners, @@ -783,7 +786,7 @@ func (c *ELB) CreateLoadBalancerListenersRequest(input *CreateLoadBalancerListen // * ErrCodeUnsupportedProtocolException "UnsupportedProtocol" // The specified protocol or signature version is not supported. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/CreateLoadBalancerListeners +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/CreateLoadBalancerListeners func (c *ELB) CreateLoadBalancerListeners(input *CreateLoadBalancerListenersInput) (*CreateLoadBalancerListenersOutput, error) { req, out := c.CreateLoadBalancerListenersRequest(input) return out, req.Send() @@ -809,7 +812,7 @@ const opCreateLoadBalancerPolicy = "CreateLoadBalancerPolicy" // CreateLoadBalancerPolicyRequest generates a "aws/request.Request" representing the // client's request for the CreateLoadBalancerPolicy operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -830,7 +833,7 @@ const opCreateLoadBalancerPolicy = "CreateLoadBalancerPolicy" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/CreateLoadBalancerPolicy +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/CreateLoadBalancerPolicy func (c *ELB) CreateLoadBalancerPolicyRequest(input *CreateLoadBalancerPolicyInput) (req *request.Request, output *CreateLoadBalancerPolicyOutput) { op := &request.Operation{ Name: opCreateLoadBalancerPolicy, @@ -878,7 +881,7 @@ func (c *ELB) CreateLoadBalancerPolicyRequest(input *CreateLoadBalancerPolicyInp // * ErrCodeInvalidConfigurationRequestException "InvalidConfigurationRequest" // The requested configuration change is not valid. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/CreateLoadBalancerPolicy +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/CreateLoadBalancerPolicy func (c *ELB) CreateLoadBalancerPolicy(input *CreateLoadBalancerPolicyInput) (*CreateLoadBalancerPolicyOutput, error) { req, out := c.CreateLoadBalancerPolicyRequest(input) return out, req.Send() @@ -904,7 +907,7 @@ const opDeleteLoadBalancer = "DeleteLoadBalancer" // DeleteLoadBalancerRequest generates a "aws/request.Request" representing the // client's request for the DeleteLoadBalancer operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -925,7 +928,7 @@ const opDeleteLoadBalancer = "DeleteLoadBalancer" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DeleteLoadBalancer +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DeleteLoadBalancer func (c *ELB) DeleteLoadBalancerRequest(input *DeleteLoadBalancerInput) (req *request.Request, output *DeleteLoadBalancerOutput) { op := &request.Operation{ Name: opDeleteLoadBalancer, @@ -961,7 +964,7 @@ func (c *ELB) DeleteLoadBalancerRequest(input *DeleteLoadBalancerInput) (req *re // // See the AWS API reference guide for Elastic Load Balancing's // API operation DeleteLoadBalancer for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DeleteLoadBalancer +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DeleteLoadBalancer func (c *ELB) DeleteLoadBalancer(input *DeleteLoadBalancerInput) (*DeleteLoadBalancerOutput, error) { req, out := c.DeleteLoadBalancerRequest(input) return out, req.Send() @@ -987,7 +990,7 @@ const opDeleteLoadBalancerListeners = "DeleteLoadBalancerListeners" // DeleteLoadBalancerListenersRequest generates a "aws/request.Request" representing the // client's request for the DeleteLoadBalancerListeners operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1008,7 +1011,7 @@ const opDeleteLoadBalancerListeners = "DeleteLoadBalancerListeners" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DeleteLoadBalancerListeners +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DeleteLoadBalancerListeners func (c *ELB) DeleteLoadBalancerListenersRequest(input *DeleteLoadBalancerListenersInput) (req *request.Request, output *DeleteLoadBalancerListenersOutput) { op := &request.Operation{ Name: opDeleteLoadBalancerListeners, @@ -1040,7 +1043,7 @@ func (c *ELB) DeleteLoadBalancerListenersRequest(input *DeleteLoadBalancerListen // * ErrCodeAccessPointNotFoundException "LoadBalancerNotFound" // The specified load balancer does not exist. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DeleteLoadBalancerListeners +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DeleteLoadBalancerListeners func (c *ELB) DeleteLoadBalancerListeners(input *DeleteLoadBalancerListenersInput) (*DeleteLoadBalancerListenersOutput, error) { req, out := c.DeleteLoadBalancerListenersRequest(input) return out, req.Send() @@ -1066,7 +1069,7 @@ const opDeleteLoadBalancerPolicy = "DeleteLoadBalancerPolicy" // DeleteLoadBalancerPolicyRequest generates a "aws/request.Request" representing the // client's request for the DeleteLoadBalancerPolicy operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1087,7 +1090,7 @@ const opDeleteLoadBalancerPolicy = "DeleteLoadBalancerPolicy" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DeleteLoadBalancerPolicy +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DeleteLoadBalancerPolicy func (c *ELB) DeleteLoadBalancerPolicyRequest(input *DeleteLoadBalancerPolicyInput) (req *request.Request, output *DeleteLoadBalancerPolicyOutput) { op := &request.Operation{ Name: opDeleteLoadBalancerPolicy, @@ -1123,7 +1126,7 @@ func (c *ELB) DeleteLoadBalancerPolicyRequest(input *DeleteLoadBalancerPolicyInp // * ErrCodeInvalidConfigurationRequestException "InvalidConfigurationRequest" // The requested configuration change is not valid. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DeleteLoadBalancerPolicy +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DeleteLoadBalancerPolicy func (c *ELB) DeleteLoadBalancerPolicy(input *DeleteLoadBalancerPolicyInput) (*DeleteLoadBalancerPolicyOutput, error) { req, out := c.DeleteLoadBalancerPolicyRequest(input) return out, req.Send() @@ -1149,7 +1152,7 @@ const opDeregisterInstancesFromLoadBalancer = "DeregisterInstancesFromLoadBalanc // DeregisterInstancesFromLoadBalancerRequest generates a "aws/request.Request" representing the // client's request for the DeregisterInstancesFromLoadBalancer operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1170,7 +1173,7 @@ const opDeregisterInstancesFromLoadBalancer = "DeregisterInstancesFromLoadBalanc // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DeregisterInstancesFromLoadBalancer +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DeregisterInstancesFromLoadBalancer func (c *ELB) DeregisterInstancesFromLoadBalancerRequest(input *DeregisterInstancesFromLoadBalancerInput) (req *request.Request, output *DeregisterInstancesFromLoadBalancerOutput) { op := &request.Operation{ Name: opDeregisterInstancesFromLoadBalancer, @@ -1213,7 +1216,7 @@ func (c *ELB) DeregisterInstancesFromLoadBalancerRequest(input *DeregisterInstan // * ErrCodeInvalidEndPointException "InvalidInstance" // The specified endpoint is not valid. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DeregisterInstancesFromLoadBalancer +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DeregisterInstancesFromLoadBalancer func (c *ELB) DeregisterInstancesFromLoadBalancer(input *DeregisterInstancesFromLoadBalancerInput) (*DeregisterInstancesFromLoadBalancerOutput, error) { req, out := c.DeregisterInstancesFromLoadBalancerRequest(input) return out, req.Send() @@ -1239,7 +1242,7 @@ const opDescribeAccountLimits = "DescribeAccountLimits" // DescribeAccountLimitsRequest generates a "aws/request.Request" representing the // client's request for the DescribeAccountLimits operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1260,7 +1263,7 @@ const opDescribeAccountLimits = "DescribeAccountLimits" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeAccountLimits +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeAccountLimits func (c *ELB) DescribeAccountLimitsRequest(input *DescribeAccountLimitsInput) (req *request.Request, output *DescribeAccountLimitsOutput) { op := &request.Operation{ Name: opDescribeAccountLimits, @@ -1291,7 +1294,7 @@ func (c *ELB) DescribeAccountLimitsRequest(input *DescribeAccountLimitsInput) (r // // See the AWS API reference guide for Elastic Load Balancing's // API operation DescribeAccountLimits for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeAccountLimits +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeAccountLimits func (c *ELB) DescribeAccountLimits(input *DescribeAccountLimitsInput) (*DescribeAccountLimitsOutput, error) { req, out := c.DescribeAccountLimitsRequest(input) return out, req.Send() @@ -1317,7 +1320,7 @@ const opDescribeInstanceHealth = "DescribeInstanceHealth" // DescribeInstanceHealthRequest generates a "aws/request.Request" representing the // client's request for the DescribeInstanceHealth operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1338,7 +1341,7 @@ const opDescribeInstanceHealth = "DescribeInstanceHealth" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeInstanceHealth +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeInstanceHealth func (c *ELB) DescribeInstanceHealthRequest(input *DescribeInstanceHealthInput) (req *request.Request, output *DescribeInstanceHealthOutput) { op := &request.Operation{ Name: opDescribeInstanceHealth, @@ -1378,7 +1381,7 @@ func (c *ELB) DescribeInstanceHealthRequest(input *DescribeInstanceHealthInput) // * ErrCodeInvalidEndPointException "InvalidInstance" // The specified endpoint is not valid. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeInstanceHealth +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeInstanceHealth func (c *ELB) DescribeInstanceHealth(input *DescribeInstanceHealthInput) (*DescribeInstanceHealthOutput, error) { req, out := c.DescribeInstanceHealthRequest(input) return out, req.Send() @@ -1404,7 +1407,7 @@ const opDescribeLoadBalancerAttributes = "DescribeLoadBalancerAttributes" // DescribeLoadBalancerAttributesRequest generates a "aws/request.Request" representing the // client's request for the DescribeLoadBalancerAttributes operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1425,7 +1428,7 @@ const opDescribeLoadBalancerAttributes = "DescribeLoadBalancerAttributes" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeLoadBalancerAttributes +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeLoadBalancerAttributes func (c *ELB) DescribeLoadBalancerAttributesRequest(input *DescribeLoadBalancerAttributesInput) (req *request.Request, output *DescribeLoadBalancerAttributesOutput) { op := &request.Operation{ Name: opDescribeLoadBalancerAttributes, @@ -1460,7 +1463,7 @@ func (c *ELB) DescribeLoadBalancerAttributesRequest(input *DescribeLoadBalancerA // * ErrCodeLoadBalancerAttributeNotFoundException "LoadBalancerAttributeNotFound" // The specified load balancer attribute does not exist. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeLoadBalancerAttributes +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeLoadBalancerAttributes func (c *ELB) DescribeLoadBalancerAttributes(input *DescribeLoadBalancerAttributesInput) (*DescribeLoadBalancerAttributesOutput, error) { req, out := c.DescribeLoadBalancerAttributesRequest(input) return out, req.Send() @@ -1486,7 +1489,7 @@ const opDescribeLoadBalancerPolicies = "DescribeLoadBalancerPolicies" // DescribeLoadBalancerPoliciesRequest generates a "aws/request.Request" representing the // client's request for the DescribeLoadBalancerPolicies operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1507,7 +1510,7 @@ const opDescribeLoadBalancerPolicies = "DescribeLoadBalancerPolicies" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeLoadBalancerPolicies +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeLoadBalancerPolicies func (c *ELB) DescribeLoadBalancerPoliciesRequest(input *DescribeLoadBalancerPoliciesInput) (req *request.Request, output *DescribeLoadBalancerPoliciesOutput) { op := &request.Operation{ Name: opDescribeLoadBalancerPolicies, @@ -1549,7 +1552,7 @@ func (c *ELB) DescribeLoadBalancerPoliciesRequest(input *DescribeLoadBalancerPol // * ErrCodePolicyNotFoundException "PolicyNotFound" // One or more of the specified policies do not exist. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeLoadBalancerPolicies +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeLoadBalancerPolicies func (c *ELB) DescribeLoadBalancerPolicies(input *DescribeLoadBalancerPoliciesInput) (*DescribeLoadBalancerPoliciesOutput, error) { req, out := c.DescribeLoadBalancerPoliciesRequest(input) return out, req.Send() @@ -1575,7 +1578,7 @@ const opDescribeLoadBalancerPolicyTypes = "DescribeLoadBalancerPolicyTypes" // DescribeLoadBalancerPolicyTypesRequest generates a "aws/request.Request" representing the // client's request for the DescribeLoadBalancerPolicyTypes operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1596,7 +1599,7 @@ const opDescribeLoadBalancerPolicyTypes = "DescribeLoadBalancerPolicyTypes" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeLoadBalancerPolicyTypes +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeLoadBalancerPolicyTypes func (c *ELB) DescribeLoadBalancerPolicyTypesRequest(input *DescribeLoadBalancerPolicyTypesInput) (req *request.Request, output *DescribeLoadBalancerPolicyTypesOutput) { op := &request.Operation{ Name: opDescribeLoadBalancerPolicyTypes, @@ -1639,7 +1642,7 @@ func (c *ELB) DescribeLoadBalancerPolicyTypesRequest(input *DescribeLoadBalancer // * ErrCodePolicyTypeNotFoundException "PolicyTypeNotFound" // One or more of the specified policy types do not exist. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeLoadBalancerPolicyTypes +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeLoadBalancerPolicyTypes func (c *ELB) DescribeLoadBalancerPolicyTypes(input *DescribeLoadBalancerPolicyTypesInput) (*DescribeLoadBalancerPolicyTypesOutput, error) { req, out := c.DescribeLoadBalancerPolicyTypesRequest(input) return out, req.Send() @@ -1665,7 +1668,7 @@ const opDescribeLoadBalancers = "DescribeLoadBalancers" // DescribeLoadBalancersRequest generates a "aws/request.Request" representing the // client's request for the DescribeLoadBalancers operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1686,7 +1689,7 @@ const opDescribeLoadBalancers = "DescribeLoadBalancers" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeLoadBalancers +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeLoadBalancers func (c *ELB) DescribeLoadBalancersRequest(input *DescribeLoadBalancersInput) (req *request.Request, output *DescribeLoadBalancersOutput) { op := &request.Operation{ Name: opDescribeLoadBalancers, @@ -1727,7 +1730,7 @@ func (c *ELB) DescribeLoadBalancersRequest(input *DescribeLoadBalancersInput) (r // // * ErrCodeDependencyThrottleException "DependencyThrottle" // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeLoadBalancers +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeLoadBalancers func (c *ELB) DescribeLoadBalancers(input *DescribeLoadBalancersInput) (*DescribeLoadBalancersOutput, error) { req, out := c.DescribeLoadBalancersRequest(input) return out, req.Send() @@ -1803,7 +1806,7 @@ const opDescribeTags = "DescribeTags" // DescribeTagsRequest generates a "aws/request.Request" representing the // client's request for the DescribeTags operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1824,7 +1827,7 @@ const opDescribeTags = "DescribeTags" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeTags +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeTags func (c *ELB) DescribeTagsRequest(input *DescribeTagsInput) (req *request.Request, output *DescribeTagsOutput) { op := &request.Operation{ Name: opDescribeTags, @@ -1856,7 +1859,7 @@ func (c *ELB) DescribeTagsRequest(input *DescribeTagsInput) (req *request.Reques // * ErrCodeAccessPointNotFoundException "LoadBalancerNotFound" // The specified load balancer does not exist. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeTags +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeTags func (c *ELB) DescribeTags(input *DescribeTagsInput) (*DescribeTagsOutput, error) { req, out := c.DescribeTagsRequest(input) return out, req.Send() @@ -1882,7 +1885,7 @@ const opDetachLoadBalancerFromSubnets = "DetachLoadBalancerFromSubnets" // DetachLoadBalancerFromSubnetsRequest generates a "aws/request.Request" representing the // client's request for the DetachLoadBalancerFromSubnets operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1903,7 +1906,7 @@ const opDetachLoadBalancerFromSubnets = "DetachLoadBalancerFromSubnets" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DetachLoadBalancerFromSubnets +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DetachLoadBalancerFromSubnets func (c *ELB) DetachLoadBalancerFromSubnetsRequest(input *DetachLoadBalancerFromSubnetsInput) (req *request.Request, output *DetachLoadBalancerFromSubnetsOutput) { op := &request.Operation{ Name: opDetachLoadBalancerFromSubnets, @@ -1943,7 +1946,7 @@ func (c *ELB) DetachLoadBalancerFromSubnetsRequest(input *DetachLoadBalancerFrom // * ErrCodeInvalidConfigurationRequestException "InvalidConfigurationRequest" // The requested configuration change is not valid. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DetachLoadBalancerFromSubnets +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DetachLoadBalancerFromSubnets func (c *ELB) DetachLoadBalancerFromSubnets(input *DetachLoadBalancerFromSubnetsInput) (*DetachLoadBalancerFromSubnetsOutput, error) { req, out := c.DetachLoadBalancerFromSubnetsRequest(input) return out, req.Send() @@ -1969,7 +1972,7 @@ const opDisableAvailabilityZonesForLoadBalancer = "DisableAvailabilityZonesForLo // DisableAvailabilityZonesForLoadBalancerRequest generates a "aws/request.Request" representing the // client's request for the DisableAvailabilityZonesForLoadBalancer operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1990,7 +1993,7 @@ const opDisableAvailabilityZonesForLoadBalancer = "DisableAvailabilityZonesForLo // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DisableAvailabilityZonesForLoadBalancer +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DisableAvailabilityZonesForLoadBalancer func (c *ELB) DisableAvailabilityZonesForLoadBalancerRequest(input *DisableAvailabilityZonesForLoadBalancerInput) (req *request.Request, output *DisableAvailabilityZonesForLoadBalancerOutput) { op := &request.Operation{ Name: opDisableAvailabilityZonesForLoadBalancer, @@ -2035,7 +2038,7 @@ func (c *ELB) DisableAvailabilityZonesForLoadBalancerRequest(input *DisableAvail // * ErrCodeInvalidConfigurationRequestException "InvalidConfigurationRequest" // The requested configuration change is not valid. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DisableAvailabilityZonesForLoadBalancer +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DisableAvailabilityZonesForLoadBalancer func (c *ELB) DisableAvailabilityZonesForLoadBalancer(input *DisableAvailabilityZonesForLoadBalancerInput) (*DisableAvailabilityZonesForLoadBalancerOutput, error) { req, out := c.DisableAvailabilityZonesForLoadBalancerRequest(input) return out, req.Send() @@ -2061,7 +2064,7 @@ const opEnableAvailabilityZonesForLoadBalancer = "EnableAvailabilityZonesForLoad // EnableAvailabilityZonesForLoadBalancerRequest generates a "aws/request.Request" representing the // client's request for the EnableAvailabilityZonesForLoadBalancer operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2082,7 +2085,7 @@ const opEnableAvailabilityZonesForLoadBalancer = "EnableAvailabilityZonesForLoad // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/EnableAvailabilityZonesForLoadBalancer +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/EnableAvailabilityZonesForLoadBalancer func (c *ELB) EnableAvailabilityZonesForLoadBalancerRequest(input *EnableAvailabilityZonesForLoadBalancerInput) (req *request.Request, output *EnableAvailabilityZonesForLoadBalancerOutput) { op := &request.Operation{ Name: opEnableAvailabilityZonesForLoadBalancer, @@ -2121,7 +2124,7 @@ func (c *ELB) EnableAvailabilityZonesForLoadBalancerRequest(input *EnableAvailab // * ErrCodeAccessPointNotFoundException "LoadBalancerNotFound" // The specified load balancer does not exist. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/EnableAvailabilityZonesForLoadBalancer +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/EnableAvailabilityZonesForLoadBalancer func (c *ELB) EnableAvailabilityZonesForLoadBalancer(input *EnableAvailabilityZonesForLoadBalancerInput) (*EnableAvailabilityZonesForLoadBalancerOutput, error) { req, out := c.EnableAvailabilityZonesForLoadBalancerRequest(input) return out, req.Send() @@ -2147,7 +2150,7 @@ const opModifyLoadBalancerAttributes = "ModifyLoadBalancerAttributes" // ModifyLoadBalancerAttributesRequest generates a "aws/request.Request" representing the // client's request for the ModifyLoadBalancerAttributes operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2168,7 +2171,7 @@ const opModifyLoadBalancerAttributes = "ModifyLoadBalancerAttributes" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/ModifyLoadBalancerAttributes +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/ModifyLoadBalancerAttributes func (c *ELB) ModifyLoadBalancerAttributesRequest(input *ModifyLoadBalancerAttributesInput) (req *request.Request, output *ModifyLoadBalancerAttributesOutput) { op := &request.Operation{ Name: opModifyLoadBalancerAttributes, @@ -2221,7 +2224,7 @@ func (c *ELB) ModifyLoadBalancerAttributesRequest(input *ModifyLoadBalancerAttri // * ErrCodeInvalidConfigurationRequestException "InvalidConfigurationRequest" // The requested configuration change is not valid. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/ModifyLoadBalancerAttributes +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/ModifyLoadBalancerAttributes func (c *ELB) ModifyLoadBalancerAttributes(input *ModifyLoadBalancerAttributesInput) (*ModifyLoadBalancerAttributesOutput, error) { req, out := c.ModifyLoadBalancerAttributesRequest(input) return out, req.Send() @@ -2247,7 +2250,7 @@ const opRegisterInstancesWithLoadBalancer = "RegisterInstancesWithLoadBalancer" // RegisterInstancesWithLoadBalancerRequest generates a "aws/request.Request" representing the // client's request for the RegisterInstancesWithLoadBalancer operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2268,7 +2271,7 @@ const opRegisterInstancesWithLoadBalancer = "RegisterInstancesWithLoadBalancer" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/RegisterInstancesWithLoadBalancer +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/RegisterInstancesWithLoadBalancer func (c *ELB) RegisterInstancesWithLoadBalancerRequest(input *RegisterInstancesWithLoadBalancerInput) (req *request.Request, output *RegisterInstancesWithLoadBalancerOutput) { op := &request.Operation{ Name: opRegisterInstancesWithLoadBalancer, @@ -2325,7 +2328,7 @@ func (c *ELB) RegisterInstancesWithLoadBalancerRequest(input *RegisterInstancesW // * ErrCodeInvalidEndPointException "InvalidInstance" // The specified endpoint is not valid. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/RegisterInstancesWithLoadBalancer +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/RegisterInstancesWithLoadBalancer func (c *ELB) RegisterInstancesWithLoadBalancer(input *RegisterInstancesWithLoadBalancerInput) (*RegisterInstancesWithLoadBalancerOutput, error) { req, out := c.RegisterInstancesWithLoadBalancerRequest(input) return out, req.Send() @@ -2351,7 +2354,7 @@ const opRemoveTags = "RemoveTags" // RemoveTagsRequest generates a "aws/request.Request" representing the // client's request for the RemoveTags operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2372,7 +2375,7 @@ const opRemoveTags = "RemoveTags" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/RemoveTags +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/RemoveTags func (c *ELB) RemoveTagsRequest(input *RemoveTagsInput) (req *request.Request, output *RemoveTagsOutput) { op := &request.Operation{ Name: opRemoveTags, @@ -2404,7 +2407,7 @@ func (c *ELB) RemoveTagsRequest(input *RemoveTagsInput) (req *request.Request, o // * ErrCodeAccessPointNotFoundException "LoadBalancerNotFound" // The specified load balancer does not exist. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/RemoveTags +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/RemoveTags func (c *ELB) RemoveTags(input *RemoveTagsInput) (*RemoveTagsOutput, error) { req, out := c.RemoveTagsRequest(input) return out, req.Send() @@ -2430,7 +2433,7 @@ const opSetLoadBalancerListenerSSLCertificate = "SetLoadBalancerListenerSSLCerti // SetLoadBalancerListenerSSLCertificateRequest generates a "aws/request.Request" representing the // client's request for the SetLoadBalancerListenerSSLCertificate operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2451,7 +2454,7 @@ const opSetLoadBalancerListenerSSLCertificate = "SetLoadBalancerListenerSSLCerti // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/SetLoadBalancerListenerSSLCertificate +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/SetLoadBalancerListenerSSLCertificate func (c *ELB) SetLoadBalancerListenerSSLCertificateRequest(input *SetLoadBalancerListenerSSLCertificateInput) (req *request.Request, output *SetLoadBalancerListenerSSLCertificateOutput) { op := &request.Operation{ Name: opSetLoadBalancerListenerSSLCertificate, @@ -2504,7 +2507,7 @@ func (c *ELB) SetLoadBalancerListenerSSLCertificateRequest(input *SetLoadBalance // * ErrCodeUnsupportedProtocolException "UnsupportedProtocol" // The specified protocol or signature version is not supported. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/SetLoadBalancerListenerSSLCertificate +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/SetLoadBalancerListenerSSLCertificate func (c *ELB) SetLoadBalancerListenerSSLCertificate(input *SetLoadBalancerListenerSSLCertificateInput) (*SetLoadBalancerListenerSSLCertificateOutput, error) { req, out := c.SetLoadBalancerListenerSSLCertificateRequest(input) return out, req.Send() @@ -2530,7 +2533,7 @@ const opSetLoadBalancerPoliciesForBackendServer = "SetLoadBalancerPoliciesForBac // SetLoadBalancerPoliciesForBackendServerRequest generates a "aws/request.Request" representing the // client's request for the SetLoadBalancerPoliciesForBackendServer operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2551,7 +2554,7 @@ const opSetLoadBalancerPoliciesForBackendServer = "SetLoadBalancerPoliciesForBac // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/SetLoadBalancerPoliciesForBackendServer +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/SetLoadBalancerPoliciesForBackendServer func (c *ELB) SetLoadBalancerPoliciesForBackendServerRequest(input *SetLoadBalancerPoliciesForBackendServerInput) (req *request.Request, output *SetLoadBalancerPoliciesForBackendServerOutput) { op := &request.Operation{ Name: opSetLoadBalancerPoliciesForBackendServer, @@ -2604,7 +2607,7 @@ func (c *ELB) SetLoadBalancerPoliciesForBackendServerRequest(input *SetLoadBalan // * ErrCodeInvalidConfigurationRequestException "InvalidConfigurationRequest" // The requested configuration change is not valid. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/SetLoadBalancerPoliciesForBackendServer +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/SetLoadBalancerPoliciesForBackendServer func (c *ELB) SetLoadBalancerPoliciesForBackendServer(input *SetLoadBalancerPoliciesForBackendServerInput) (*SetLoadBalancerPoliciesForBackendServerOutput, error) { req, out := c.SetLoadBalancerPoliciesForBackendServerRequest(input) return out, req.Send() @@ -2630,7 +2633,7 @@ const opSetLoadBalancerPoliciesOfListener = "SetLoadBalancerPoliciesOfListener" // SetLoadBalancerPoliciesOfListenerRequest generates a "aws/request.Request" representing the // client's request for the SetLoadBalancerPoliciesOfListener operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2651,7 +2654,7 @@ const opSetLoadBalancerPoliciesOfListener = "SetLoadBalancerPoliciesOfListener" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/SetLoadBalancerPoliciesOfListener +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/SetLoadBalancerPoliciesOfListener func (c *ELB) SetLoadBalancerPoliciesOfListenerRequest(input *SetLoadBalancerPoliciesOfListenerInput) (req *request.Request, output *SetLoadBalancerPoliciesOfListenerOutput) { op := &request.Operation{ Name: opSetLoadBalancerPoliciesOfListener, @@ -2701,7 +2704,7 @@ func (c *ELB) SetLoadBalancerPoliciesOfListenerRequest(input *SetLoadBalancerPol // * ErrCodeInvalidConfigurationRequestException "InvalidConfigurationRequest" // The requested configuration change is not valid. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/SetLoadBalancerPoliciesOfListener +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/SetLoadBalancerPoliciesOfListener func (c *ELB) SetLoadBalancerPoliciesOfListener(input *SetLoadBalancerPoliciesOfListenerInput) (*SetLoadBalancerPoliciesOfListenerOutput, error) { req, out := c.SetLoadBalancerPoliciesOfListenerRequest(input) return out, req.Send() @@ -2724,7 +2727,6 @@ func (c *ELB) SetLoadBalancerPoliciesOfListenerWithContext(ctx aws.Context, inpu } // Information about the AccessLog attribute. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/AccessLog type AccessLog struct { _ struct{} `type:"structure"` @@ -2796,7 +2798,6 @@ func (s *AccessLog) SetS3BucketPrefix(v string) *AccessLog { } // Contains the parameters for AddTags. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/AddTagsInput type AddTagsInput struct { _ struct{} `type:"structure"` @@ -2863,7 +2864,6 @@ func (s *AddTagsInput) SetTags(v []*Tag) *AddTagsInput { } // Contains the output of AddTags. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/AddTagsOutput type AddTagsOutput struct { _ struct{} `type:"structure"` } @@ -2879,7 +2879,6 @@ func (s AddTagsOutput) GoString() string { } // This data type is reserved. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/AdditionalAttribute type AdditionalAttribute struct { _ struct{} `type:"structure"` @@ -2913,7 +2912,6 @@ func (s *AdditionalAttribute) SetValue(v string) *AdditionalAttribute { } // Information about a policy for application-controlled session stickiness. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/AppCookieStickinessPolicy type AppCookieStickinessPolicy struct { _ struct{} `type:"structure"` @@ -2948,7 +2946,6 @@ func (s *AppCookieStickinessPolicy) SetPolicyName(v string) *AppCookieStickiness } // Contains the parameters for ApplySecurityGroupsToLoadBalancer. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/ApplySecurityGroupsToLoadBalancerInput type ApplySecurityGroupsToLoadBalancerInput struct { _ struct{} `type:"structure"` @@ -3003,7 +3000,6 @@ func (s *ApplySecurityGroupsToLoadBalancerInput) SetSecurityGroups(v []*string) } // Contains the output of ApplySecurityGroupsToLoadBalancer. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/ApplySecurityGroupsToLoadBalancerOutput type ApplySecurityGroupsToLoadBalancerOutput struct { _ struct{} `type:"structure"` @@ -3028,7 +3024,6 @@ func (s *ApplySecurityGroupsToLoadBalancerOutput) SetSecurityGroups(v []*string) } // Contains the parameters for AttachLoaBalancerToSubnets. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/AttachLoadBalancerToSubnetsInput type AttachLoadBalancerToSubnetsInput struct { _ struct{} `type:"structure"` @@ -3083,7 +3078,6 @@ func (s *AttachLoadBalancerToSubnetsInput) SetSubnets(v []*string) *AttachLoadBa } // Contains the output of AttachLoadBalancerToSubnets. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/AttachLoadBalancerToSubnetsOutput type AttachLoadBalancerToSubnetsOutput struct { _ struct{} `type:"structure"` @@ -3108,7 +3102,6 @@ func (s *AttachLoadBalancerToSubnetsOutput) SetSubnets(v []*string) *AttachLoadB } // Information about the configuration of an EC2 instance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/BackendServerDescription type BackendServerDescription struct { _ struct{} `type:"structure"` @@ -3142,7 +3135,6 @@ func (s *BackendServerDescription) SetPolicyNames(v []*string) *BackendServerDes } // Contains the parameters for ConfigureHealthCheck. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/ConfigureHealthCheckInput type ConfigureHealthCheckInput struct { _ struct{} `type:"structure"` @@ -3201,7 +3193,6 @@ func (s *ConfigureHealthCheckInput) SetLoadBalancerName(v string) *ConfigureHeal } // Contains the output of ConfigureHealthCheck. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/ConfigureHealthCheckOutput type ConfigureHealthCheckOutput struct { _ struct{} `type:"structure"` @@ -3226,7 +3217,6 @@ func (s *ConfigureHealthCheckOutput) SetHealthCheck(v *HealthCheck) *ConfigureHe } // Information about the ConnectionDraining attribute. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/ConnectionDraining type ConnectionDraining struct { _ struct{} `type:"structure"` @@ -3276,7 +3266,6 @@ func (s *ConnectionDraining) SetTimeout(v int64) *ConnectionDraining { } // Information about the ConnectionSettings attribute. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/ConnectionSettings type ConnectionSettings struct { _ struct{} `type:"structure"` @@ -3320,7 +3309,6 @@ func (s *ConnectionSettings) SetIdleTimeout(v int64) *ConnectionSettings { } // Contains the parameters for CreateAppCookieStickinessPolicy. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/CreateAppCookieStickinessPolicyInput type CreateAppCookieStickinessPolicyInput struct { _ struct{} `type:"structure"` @@ -3390,7 +3378,6 @@ func (s *CreateAppCookieStickinessPolicyInput) SetPolicyName(v string) *CreateAp } // Contains the output for CreateAppCookieStickinessPolicy. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/CreateAppCookieStickinessPolicyOutput type CreateAppCookieStickinessPolicyOutput struct { _ struct{} `type:"structure"` } @@ -3406,7 +3393,6 @@ func (s CreateAppCookieStickinessPolicyOutput) GoString() string { } // Contains the parameters for CreateLBCookieStickinessPolicy. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/CreateLBCookieStickinessPolicyInput type CreateLBCookieStickinessPolicyInput struct { _ struct{} `type:"structure"` @@ -3474,7 +3460,6 @@ func (s *CreateLBCookieStickinessPolicyInput) SetPolicyName(v string) *CreateLBC } // Contains the output for CreateLBCookieStickinessPolicy. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/CreateLBCookieStickinessPolicyOutput type CreateLBCookieStickinessPolicyOutput struct { _ struct{} `type:"structure"` } @@ -3490,7 +3475,6 @@ func (s CreateLBCookieStickinessPolicyOutput) GoString() string { } // Contains the parameters for CreateLoadBalancer. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/CreateAccessPointInput type CreateLoadBalancerInput struct { _ struct{} `type:"structure"` @@ -3638,7 +3622,6 @@ func (s *CreateLoadBalancerInput) SetTags(v []*Tag) *CreateLoadBalancerInput { } // Contains the parameters for CreateLoadBalancerListeners. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/CreateLoadBalancerListenerInput type CreateLoadBalancerListenersInput struct { _ struct{} `type:"structure"` @@ -3702,7 +3685,6 @@ func (s *CreateLoadBalancerListenersInput) SetLoadBalancerName(v string) *Create } // Contains the parameters for CreateLoadBalancerListener. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/CreateLoadBalancerListenerOutput type CreateLoadBalancerListenersOutput struct { _ struct{} `type:"structure"` } @@ -3718,7 +3700,6 @@ func (s CreateLoadBalancerListenersOutput) GoString() string { } // Contains the output for CreateLoadBalancer. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/CreateAccessPointOutput type CreateLoadBalancerOutput struct { _ struct{} `type:"structure"` @@ -3743,7 +3724,6 @@ func (s *CreateLoadBalancerOutput) SetDNSName(v string) *CreateLoadBalancerOutpu } // Contains the parameters for CreateLoadBalancerPolicy. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/CreateLoadBalancerPolicyInput type CreateLoadBalancerPolicyInput struct { _ struct{} `type:"structure"` @@ -3821,7 +3801,6 @@ func (s *CreateLoadBalancerPolicyInput) SetPolicyTypeName(v string) *CreateLoadB } // Contains the output of CreateLoadBalancerPolicy. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/CreateLoadBalancerPolicyOutput type CreateLoadBalancerPolicyOutput struct { _ struct{} `type:"structure"` } @@ -3837,7 +3816,6 @@ func (s CreateLoadBalancerPolicyOutput) GoString() string { } // Information about the CrossZoneLoadBalancing attribute. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/CrossZoneLoadBalancing type CrossZoneLoadBalancing struct { _ struct{} `type:"structure"` @@ -3877,7 +3855,6 @@ func (s *CrossZoneLoadBalancing) SetEnabled(v bool) *CrossZoneLoadBalancing { } // Contains the parameters for DeleteLoadBalancer. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DeleteAccessPointInput type DeleteLoadBalancerInput struct { _ struct{} `type:"structure"` @@ -3917,7 +3894,6 @@ func (s *DeleteLoadBalancerInput) SetLoadBalancerName(v string) *DeleteLoadBalan } // Contains the parameters for DeleteLoadBalancerListeners. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DeleteLoadBalancerListenerInput type DeleteLoadBalancerListenersInput struct { _ struct{} `type:"structure"` @@ -3971,7 +3947,6 @@ func (s *DeleteLoadBalancerListenersInput) SetLoadBalancerPorts(v []*int64) *Del } // Contains the output of DeleteLoadBalancerListeners. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DeleteLoadBalancerListenerOutput type DeleteLoadBalancerListenersOutput struct { _ struct{} `type:"structure"` } @@ -3987,7 +3962,6 @@ func (s DeleteLoadBalancerListenersOutput) GoString() string { } // Contains the output of DeleteLoadBalancer. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DeleteAccessPointOutput type DeleteLoadBalancerOutput struct { _ struct{} `type:"structure"` } @@ -4003,7 +3977,6 @@ func (s DeleteLoadBalancerOutput) GoString() string { } // Contains the parameters for DeleteLoadBalancerPolicy. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DeleteLoadBalancerPolicyInput type DeleteLoadBalancerPolicyInput struct { _ struct{} `type:"structure"` @@ -4057,7 +4030,6 @@ func (s *DeleteLoadBalancerPolicyInput) SetPolicyName(v string) *DeleteLoadBalan } // Contains the output of DeleteLoadBalancerPolicy. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DeleteLoadBalancerPolicyOutput type DeleteLoadBalancerPolicyOutput struct { _ struct{} `type:"structure"` } @@ -4073,7 +4045,6 @@ func (s DeleteLoadBalancerPolicyOutput) GoString() string { } // Contains the parameters for DeregisterInstancesFromLoadBalancer. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DeregisterEndPointsInput type DeregisterInstancesFromLoadBalancerInput struct { _ struct{} `type:"structure"` @@ -4127,7 +4098,6 @@ func (s *DeregisterInstancesFromLoadBalancerInput) SetLoadBalancerName(v string) } // Contains the output of DeregisterInstancesFromLoadBalancer. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DeregisterEndPointsOutput type DeregisterInstancesFromLoadBalancerOutput struct { _ struct{} `type:"structure"` @@ -4151,7 +4121,6 @@ func (s *DeregisterInstancesFromLoadBalancerOutput) SetInstances(v []*Instance) return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeAccountLimitsInput type DescribeAccountLimitsInput struct { _ struct{} `type:"structure"` @@ -4198,7 +4167,6 @@ func (s *DescribeAccountLimitsInput) SetPageSize(v int64) *DescribeAccountLimits return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeAccountLimitsOutput type DescribeAccountLimitsOutput struct { _ struct{} `type:"structure"` @@ -4233,7 +4201,6 @@ func (s *DescribeAccountLimitsOutput) SetNextMarker(v string) *DescribeAccountLi } // Contains the parameters for DescribeInstanceHealth. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeEndPointStateInput type DescribeInstanceHealthInput struct { _ struct{} `type:"structure"` @@ -4282,7 +4249,6 @@ func (s *DescribeInstanceHealthInput) SetLoadBalancerName(v string) *DescribeIns } // Contains the output for DescribeInstanceHealth. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeEndPointStateOutput type DescribeInstanceHealthOutput struct { _ struct{} `type:"structure"` @@ -4307,7 +4273,6 @@ func (s *DescribeInstanceHealthOutput) SetInstanceStates(v []*InstanceState) *De } // Contains the parameters for DescribeLoadBalancerAttributes. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeLoadBalancerAttributesInput type DescribeLoadBalancerAttributesInput struct { _ struct{} `type:"structure"` @@ -4347,7 +4312,6 @@ func (s *DescribeLoadBalancerAttributesInput) SetLoadBalancerName(v string) *Des } // Contains the output of DescribeLoadBalancerAttributes. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeLoadBalancerAttributesOutput type DescribeLoadBalancerAttributesOutput struct { _ struct{} `type:"structure"` @@ -4372,7 +4336,6 @@ func (s *DescribeLoadBalancerAttributesOutput) SetLoadBalancerAttributes(v *Load } // Contains the parameters for DescribeLoadBalancerPolicies. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeLoadBalancerPoliciesInput type DescribeLoadBalancerPoliciesInput struct { _ struct{} `type:"structure"` @@ -4406,7 +4369,6 @@ func (s *DescribeLoadBalancerPoliciesInput) SetPolicyNames(v []*string) *Describ } // Contains the output of DescribeLoadBalancerPolicies. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeLoadBalancerPoliciesOutput type DescribeLoadBalancerPoliciesOutput struct { _ struct{} `type:"structure"` @@ -4431,7 +4393,6 @@ func (s *DescribeLoadBalancerPoliciesOutput) SetPolicyDescriptions(v []*PolicyDe } // Contains the parameters for DescribeLoadBalancerPolicyTypes. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeLoadBalancerPolicyTypesInput type DescribeLoadBalancerPolicyTypesInput struct { _ struct{} `type:"structure"` @@ -4457,7 +4418,6 @@ func (s *DescribeLoadBalancerPolicyTypesInput) SetPolicyTypeNames(v []*string) * } // Contains the output of DescribeLoadBalancerPolicyTypes. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeLoadBalancerPolicyTypesOutput type DescribeLoadBalancerPolicyTypesOutput struct { _ struct{} `type:"structure"` @@ -4482,7 +4442,6 @@ func (s *DescribeLoadBalancerPolicyTypesOutput) SetPolicyTypeDescriptions(v []*P } // Contains the parameters for DescribeLoadBalancers. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeAccessPointsInput type DescribeLoadBalancersInput struct { _ struct{} `type:"structure"` @@ -4540,7 +4499,6 @@ func (s *DescribeLoadBalancersInput) SetPageSize(v int64) *DescribeLoadBalancers } // Contains the parameters for DescribeLoadBalancers. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeAccessPointsOutput type DescribeLoadBalancersOutput struct { _ struct{} `type:"structure"` @@ -4575,7 +4533,6 @@ func (s *DescribeLoadBalancersOutput) SetNextMarker(v string) *DescribeLoadBalan } // Contains the parameters for DescribeTags. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeTagsInput type DescribeTagsInput struct { _ struct{} `type:"structure"` @@ -4618,7 +4575,6 @@ func (s *DescribeTagsInput) SetLoadBalancerNames(v []*string) *DescribeTagsInput } // Contains the output for DescribeTags. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DescribeTagsOutput type DescribeTagsOutput struct { _ struct{} `type:"structure"` @@ -4643,7 +4599,6 @@ func (s *DescribeTagsOutput) SetTagDescriptions(v []*TagDescription) *DescribeTa } // Contains the parameters for DetachLoadBalancerFromSubnets. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DetachLoadBalancerFromSubnetsInput type DetachLoadBalancerFromSubnetsInput struct { _ struct{} `type:"structure"` @@ -4697,7 +4652,6 @@ func (s *DetachLoadBalancerFromSubnetsInput) SetSubnets(v []*string) *DetachLoad } // Contains the output of DetachLoadBalancerFromSubnets. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/DetachLoadBalancerFromSubnetsOutput type DetachLoadBalancerFromSubnetsOutput struct { _ struct{} `type:"structure"` @@ -4722,7 +4676,6 @@ func (s *DetachLoadBalancerFromSubnetsOutput) SetSubnets(v []*string) *DetachLoa } // Contains the parameters for DisableAvailabilityZonesForLoadBalancer. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/RemoveAvailabilityZonesInput type DisableAvailabilityZonesForLoadBalancerInput struct { _ struct{} `type:"structure"` @@ -4776,7 +4729,6 @@ func (s *DisableAvailabilityZonesForLoadBalancerInput) SetLoadBalancerName(v str } // Contains the output for DisableAvailabilityZonesForLoadBalancer. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/RemoveAvailabilityZonesOutput type DisableAvailabilityZonesForLoadBalancerOutput struct { _ struct{} `type:"structure"` @@ -4801,7 +4753,6 @@ func (s *DisableAvailabilityZonesForLoadBalancerOutput) SetAvailabilityZones(v [ } // Contains the parameters for EnableAvailabilityZonesForLoadBalancer. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/AddAvailabilityZonesInput type EnableAvailabilityZonesForLoadBalancerInput struct { _ struct{} `type:"structure"` @@ -4855,7 +4806,6 @@ func (s *EnableAvailabilityZonesForLoadBalancerInput) SetLoadBalancerName(v stri } // Contains the output of EnableAvailabilityZonesForLoadBalancer. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/AddAvailabilityZonesOutput type EnableAvailabilityZonesForLoadBalancerOutput struct { _ struct{} `type:"structure"` @@ -4880,7 +4830,6 @@ func (s *EnableAvailabilityZonesForLoadBalancerOutput) SetAvailabilityZones(v [] } // Information about a health check. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/HealthCheck type HealthCheck struct { _ struct{} `type:"structure"` @@ -5011,7 +4960,6 @@ func (s *HealthCheck) SetUnhealthyThreshold(v int64) *HealthCheck { } // The ID of an EC2 instance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/Instance type Instance struct { _ struct{} `type:"structure"` @@ -5036,7 +4984,6 @@ func (s *Instance) SetInstanceId(v string) *Instance { } // Information about the state of an EC2 instance. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/InstanceState type InstanceState struct { _ struct{} `type:"structure"` @@ -5121,7 +5068,6 @@ func (s *InstanceState) SetState(v string) *InstanceState { } // Information about a policy for duration-based session stickiness. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/LBCookieStickinessPolicy type LBCookieStickinessPolicy struct { _ struct{} `type:"structure"` @@ -5158,7 +5104,6 @@ func (s *LBCookieStickinessPolicy) SetPolicyName(v string) *LBCookieStickinessPo } // Information about an Elastic Load Balancing resource limit for your AWS account. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/Limit type Limit struct { _ struct{} `type:"structure"` @@ -5200,7 +5145,6 @@ func (s *Limit) SetName(v string) *Limit { // For information about the protocols and the ports supported by Elastic Load // Balancing, see Listeners for Your Classic Load Balancer (http://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-listener-config.html) // in the Classic Load Balancer Guide. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/Listener type Listener struct { _ struct{} `type:"structure"` @@ -5302,7 +5246,6 @@ func (s *Listener) SetSSLCertificateId(v string) *Listener { } // The policies enabled for a listener. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/ListenerDescription type ListenerDescription struct { _ struct{} `type:"structure"` @@ -5336,7 +5279,6 @@ func (s *ListenerDescription) SetPolicyNames(v []*string) *ListenerDescription { } // The attributes for a load balancer. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/LoadBalancerAttributes type LoadBalancerAttributes struct { _ struct{} `type:"structure"` @@ -5445,7 +5387,6 @@ func (s *LoadBalancerAttributes) SetCrossZoneLoadBalancing(v *CrossZoneLoadBalan } // Information about a load balancer. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/LoadBalancerDescription type LoadBalancerDescription struct { _ struct{} `type:"structure"` @@ -5618,7 +5559,6 @@ func (s *LoadBalancerDescription) SetVPCId(v string) *LoadBalancerDescription { } // Contains the parameters for ModifyLoadBalancerAttributes. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/ModifyLoadBalancerAttributesInput type ModifyLoadBalancerAttributesInput struct { _ struct{} `type:"structure"` @@ -5677,7 +5617,6 @@ func (s *ModifyLoadBalancerAttributesInput) SetLoadBalancerName(v string) *Modif } // Contains the output of ModifyLoadBalancerAttributes. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/ModifyLoadBalancerAttributesOutput type ModifyLoadBalancerAttributesOutput struct { _ struct{} `type:"structure"` @@ -5711,7 +5650,6 @@ func (s *ModifyLoadBalancerAttributesOutput) SetLoadBalancerName(v string) *Modi } // The policies for a load balancer. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/Policies type Policies struct { _ struct{} `type:"structure"` @@ -5754,7 +5692,6 @@ func (s *Policies) SetOtherPolicies(v []*string) *Policies { } // Information about a policy attribute. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/PolicyAttribute type PolicyAttribute struct { _ struct{} `type:"structure"` @@ -5788,7 +5725,6 @@ func (s *PolicyAttribute) SetAttributeValue(v string) *PolicyAttribute { } // Information about a policy attribute. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/PolicyAttributeDescription type PolicyAttributeDescription struct { _ struct{} `type:"structure"` @@ -5822,7 +5758,6 @@ func (s *PolicyAttributeDescription) SetAttributeValue(v string) *PolicyAttribut } // Information about a policy attribute type. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/PolicyAttributeTypeDescription type PolicyAttributeTypeDescription struct { _ struct{} `type:"structure"` @@ -5893,7 +5828,6 @@ func (s *PolicyAttributeTypeDescription) SetDescription(v string) *PolicyAttribu } // Information about a policy. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/PolicyDescription type PolicyDescription struct { _ struct{} `type:"structure"` @@ -5936,7 +5870,6 @@ func (s *PolicyDescription) SetPolicyTypeName(v string) *PolicyDescription { } // Information about a policy type. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/PolicyTypeDescription type PolicyTypeDescription struct { _ struct{} `type:"structure"` @@ -5980,7 +5913,6 @@ func (s *PolicyTypeDescription) SetPolicyTypeName(v string) *PolicyTypeDescripti } // Contains the parameters for RegisterInstancesWithLoadBalancer. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/RegisterEndPointsInput type RegisterInstancesWithLoadBalancerInput struct { _ struct{} `type:"structure"` @@ -6034,7 +5966,6 @@ func (s *RegisterInstancesWithLoadBalancerInput) SetLoadBalancerName(v string) * } // Contains the output of RegisterInstancesWithLoadBalancer. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/RegisterEndPointsOutput type RegisterInstancesWithLoadBalancerOutput struct { _ struct{} `type:"structure"` @@ -6059,7 +5990,6 @@ func (s *RegisterInstancesWithLoadBalancerOutput) SetInstances(v []*Instance) *R } // Contains the parameters for RemoveTags. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/RemoveTagsInput type RemoveTagsInput struct { _ struct{} `type:"structure"` @@ -6127,7 +6057,6 @@ func (s *RemoveTagsInput) SetTags(v []*TagKeyOnly) *RemoveTagsInput { } // Contains the output of RemoveTags. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/RemoveTagsOutput type RemoveTagsOutput struct { _ struct{} `type:"structure"` } @@ -6143,7 +6072,6 @@ func (s RemoveTagsOutput) GoString() string { } // Contains the parameters for SetLoadBalancerListenerSSLCertificate. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/SetLoadBalancerListenerSSLCertificateInput type SetLoadBalancerListenerSSLCertificateInput struct { _ struct{} `type:"structure"` @@ -6211,7 +6139,6 @@ func (s *SetLoadBalancerListenerSSLCertificateInput) SetSSLCertificateId(v strin } // Contains the output of SetLoadBalancerListenerSSLCertificate. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/SetLoadBalancerListenerSSLCertificateOutput type SetLoadBalancerListenerSSLCertificateOutput struct { _ struct{} `type:"structure"` } @@ -6227,7 +6154,6 @@ func (s SetLoadBalancerListenerSSLCertificateOutput) GoString() string { } // Contains the parameters for SetLoadBalancerPoliciesForBackendServer. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/SetLoadBalancerPoliciesForBackendServerInput type SetLoadBalancerPoliciesForBackendServerInput struct { _ struct{} `type:"structure"` @@ -6296,7 +6222,6 @@ func (s *SetLoadBalancerPoliciesForBackendServerInput) SetPolicyNames(v []*strin } // Contains the output of SetLoadBalancerPoliciesForBackendServer. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/SetLoadBalancerPoliciesForBackendServerOutput type SetLoadBalancerPoliciesForBackendServerOutput struct { _ struct{} `type:"structure"` } @@ -6312,7 +6237,6 @@ func (s SetLoadBalancerPoliciesForBackendServerOutput) GoString() string { } // Contains the parameters for SetLoadBalancePoliciesOfListener. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/SetLoadBalancerPoliciesOfListenerInput type SetLoadBalancerPoliciesOfListenerInput struct { _ struct{} `type:"structure"` @@ -6382,7 +6306,6 @@ func (s *SetLoadBalancerPoliciesOfListenerInput) SetPolicyNames(v []*string) *Se } // Contains the output of SetLoadBalancePoliciesOfListener. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/SetLoadBalancerPoliciesOfListenerOutput type SetLoadBalancerPoliciesOfListenerOutput struct { _ struct{} `type:"structure"` } @@ -6398,7 +6321,6 @@ func (s SetLoadBalancerPoliciesOfListenerOutput) GoString() string { } // Information about a source security group. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/SourceSecurityGroup type SourceSecurityGroup struct { _ struct{} `type:"structure"` @@ -6432,7 +6354,6 @@ func (s *SourceSecurityGroup) SetOwnerAlias(v string) *SourceSecurityGroup { } // Information about a tag. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/Tag type Tag struct { _ struct{} `type:"structure"` @@ -6484,7 +6405,6 @@ func (s *Tag) SetValue(v string) *Tag { } // The tags associated with a load balancer. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/TagDescription type TagDescription struct { _ struct{} `type:"structure"` @@ -6518,7 +6438,6 @@ func (s *TagDescription) SetTags(v []*Tag) *TagDescription { } // The key of a tag. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/TagKeyOnly type TagKeyOnly struct { _ struct{} `type:"structure"` diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/elb/doc.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/elb/doc.go index 92f97d7292..0b93ed4740 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/elb/doc.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/elb/doc.go @@ -3,27 +3,22 @@ // Package elb provides the client and types for making API // requests to Elastic Load Balancing. // -// A load balancer distributes incoming traffic across your EC2 instances. This -// enables you to increase the availability of your application. The load balancer -// also monitors the health of its registered instances and ensures that it -// routes traffic only to healthy instances. You configure your load balancer -// to accept incoming traffic by specifying one or more listeners, which are -// configured with a protocol and port number for connections from clients to -// the load balancer and a protocol and port number for connections from the -// load balancer to the instances. +// A load balancer can distribute incoming traffic across your EC2 instances. +// This enables you to increase the availability of your application. The load +// balancer also monitors the health of its registered instances and ensures +// that it routes traffic only to healthy instances. You configure your load +// balancer to accept incoming traffic by specifying one or more listeners, +// which are configured with a protocol and port number for connections from +// clients to the load balancer and a protocol and port number for connections +// from the load balancer to the instances. // -// Elastic Load Balancing supports two types of load balancers: Classic Load -// Balancers and Application Load Balancers (new). A Classic Load Balancer makes -// routing and load balancing decisions either at the transport layer (TCP/SSL) -// or the application layer (HTTP/HTTPS), and supports either EC2-Classic or -// a VPC. An Application Load Balancer makes routing and load balancing decisions -// at the application layer (HTTP/HTTPS), supports path-based routing, and can -// route requests to one or more ports on each EC2 instance or container instance -// in your virtual private cloud (VPC). For more information, see the Elastic -// Load Balancing User Guide (http://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html). +// Elastic Load Balancing supports three types of load balancers: Application +// Load Balancers, Network Load Balancers, and Classic Load Balancers. You can +// select a load balancer based on your application needs. For more information, +// see the Elastic Load Balancing User Guide (http://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/). // // This reference covers the 2012-06-01 API, which supports Classic Load Balancers. -// The 2015-12-01 API supports Application Load Balancers. +// The 2015-12-01 API supports Application Load Balancers and Network Load Balancers. // // To get started, create a load balancer with one or more listeners using CreateLoadBalancer. // Register your instances with the load balancer using RegisterInstancesWithLoadBalancer. @@ -39,7 +34,7 @@ // // Using the Client // -// To Elastic Load Balancing with the SDK use the New function to create +// To contact Elastic Load Balancing with the SDK use the New function to create // a new service client. With that client you can make API requests to the service. // These clients are safe to use concurrently. // diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/elb/errors.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/elb/errors.go index 77ffb20ecd..fbf2140d87 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/elb/errors.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/elb/errors.go @@ -91,6 +91,12 @@ const ( // The specified load balancer attribute does not exist. ErrCodeLoadBalancerAttributeNotFoundException = "LoadBalancerAttributeNotFound" + // ErrCodeOperationNotPermittedException for service response error code + // "OperationNotPermitted". + // + // This operation is not allowed. + ErrCodeOperationNotPermittedException = "OperationNotPermitted" + // ErrCodePolicyNotFoundException for service response error code // "PolicyNotFound". // diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/elb/service.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/elb/service.go index 057530f6ca..5dfdd322c9 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/elb/service.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/elb/service.go @@ -29,8 +29,9 @@ var initRequest func(*request.Request) // Service information constants const ( - ServiceName = "elasticloadbalancing" // Service endpoint prefix API calls made to. - EndpointsID = ServiceName // Service ID for Regions and Endpoints metadata. + ServiceName = "elasticloadbalancing" // Name of service. + EndpointsID = ServiceName // ID to lookup a service endpoint with. + ServiceID = "Elastic Load Balancing" // ServiceID is a unique identifer of a specific service. ) // New creates a new instance of the ELB client with a session. @@ -55,6 +56,7 @@ func newClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegio cfg, metadata.ClientInfo{ ServiceName: ServiceName, + ServiceID: ServiceID, SigningName: signingName, SigningRegion: signingRegion, Endpoint: endpoint, diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/elbv2/api.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/elbv2/api.go index 03e1b5471e..228c6a56ce 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/elbv2/api.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/elbv2/api.go @@ -11,11 +11,102 @@ import ( "github.com/aws/aws-sdk-go/aws/request" ) +const opAddListenerCertificates = "AddListenerCertificates" + +// AddListenerCertificatesRequest generates a "aws/request.Request" representing the +// client's request for the AddListenerCertificates operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See AddListenerCertificates for more information on using the AddListenerCertificates +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the AddListenerCertificatesRequest method. +// req, resp := client.AddListenerCertificatesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/AddListenerCertificates +func (c *ELBV2) AddListenerCertificatesRequest(input *AddListenerCertificatesInput) (req *request.Request, output *AddListenerCertificatesOutput) { + op := &request.Operation{ + Name: opAddListenerCertificates, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &AddListenerCertificatesInput{} + } + + output = &AddListenerCertificatesOutput{} + req = c.newRequest(op, input, output) + return +} + +// AddListenerCertificates API operation for Elastic Load Balancing. +// +// Adds the specified certificate to the specified secure listener. +// +// If the certificate was already added, the call is successful but the certificate +// is not added again. +// +// To list the certificates for your listener, use DescribeListenerCertificates. +// To remove certificates from your listener, use RemoveListenerCertificates. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Elastic Load Balancing's +// API operation AddListenerCertificates for usage and error information. +// +// Returned Error Codes: +// * ErrCodeListenerNotFoundException "ListenerNotFound" +// The specified listener does not exist. +// +// * ErrCodeTooManyCertificatesException "TooManyCertificates" +// You've reached the limit on the number of certificates per load balancer. +// +// * ErrCodeCertificateNotFoundException "CertificateNotFound" +// The specified certificate does not exist. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/AddListenerCertificates +func (c *ELBV2) AddListenerCertificates(input *AddListenerCertificatesInput) (*AddListenerCertificatesOutput, error) { + req, out := c.AddListenerCertificatesRequest(input) + return out, req.Send() +} + +// AddListenerCertificatesWithContext is the same as AddListenerCertificates with the addition of +// the ability to pass a context and additional request options. +// +// See AddListenerCertificates for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *ELBV2) AddListenerCertificatesWithContext(ctx aws.Context, input *AddListenerCertificatesInput, opts ...request.Option) (*AddListenerCertificatesOutput, error) { + req, out := c.AddListenerCertificatesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opAddTags = "AddTags" // AddTagsRequest generates a "aws/request.Request" representing the // client's request for the AddTags operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -36,7 +127,7 @@ const opAddTags = "AddTags" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/AddTags +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/AddTags func (c *ELBV2) AddTagsRequest(input *AddTagsInput) (req *request.Request, output *AddTagsOutput) { op := &request.Operation{ Name: opAddTags, @@ -85,7 +176,7 @@ func (c *ELBV2) AddTagsRequest(input *AddTagsInput) (req *request.Request, outpu // * ErrCodeTargetGroupNotFoundException "TargetGroupNotFound" // The specified target group does not exist. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/AddTags +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/AddTags func (c *ELBV2) AddTags(input *AddTagsInput) (*AddTagsOutput, error) { req, out := c.AddTagsRequest(input) return out, req.Send() @@ -111,7 +202,7 @@ const opCreateListener = "CreateListener" // CreateListenerRequest generates a "aws/request.Request" representing the // client's request for the CreateListener operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -132,7 +223,7 @@ const opCreateListener = "CreateListener" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateListener +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateListener func (c *ELBV2) CreateListenerRequest(input *CreateListenerInput) (req *request.Request, output *CreateListenerOutput) { op := &request.Operation{ Name: opCreateListener, @@ -154,12 +245,14 @@ func (c *ELBV2) CreateListenerRequest(input *CreateListenerInput) (req *request. // Creates a listener for the specified Application Load Balancer or Network // Load Balancer. // -// You can create up to 10 listeners per load balancer. -// // To update a listener, use ModifyListener. When you are finished with a listener, // you can delete it using DeleteListener. If you are finished with both the // listener and the load balancer, you can delete them both using DeleteLoadBalancer. // +// This operation is idempotent, which means that it completes at most one time. +// If you attempt to create multiple listeners with the same settings, each +// call succeeds. +// // For more information, see Listeners for Your Application Load Balancers (http://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html) // in the Application Load Balancers Guide and Listeners for Your Network Load // Balancers (http://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-listeners.html) @@ -180,7 +273,7 @@ func (c *ELBV2) CreateListenerRequest(input *CreateListenerInput) (req *request. // You've reached the limit on the number of listeners per load balancer. // // * ErrCodeTooManyCertificatesException "TooManyCertificates" -// You've reached the limit on the number of certificates per listener. +// You've reached the limit on the number of certificates per load balancer. // // * ErrCodeLoadBalancerNotFoundException "LoadBalancerNotFound" // The specified load balancer does not exist. @@ -213,7 +306,13 @@ func (c *ELBV2) CreateListenerRequest(input *CreateListenerInput) (req *request. // * ErrCodeTooManyTargetsException "TooManyTargets" // You've reached the limit on the number of targets. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateListener +// * ErrCodeTooManyActionsException "TooManyActions" +// You've reached the limit on the number of actions per rule. +// +// * ErrCodeInvalidLoadBalancerActionException "InvalidLoadBalancerAction" +// The requested action is not valid. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateListener func (c *ELBV2) CreateListener(input *CreateListenerInput) (*CreateListenerOutput, error) { req, out := c.CreateListenerRequest(input) return out, req.Send() @@ -239,7 +338,7 @@ const opCreateLoadBalancer = "CreateLoadBalancer" // CreateLoadBalancerRequest generates a "aws/request.Request" representing the // client's request for the CreateLoadBalancer operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -260,7 +359,7 @@ const opCreateLoadBalancer = "CreateLoadBalancer" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateLoadBalancer +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateLoadBalancer func (c *ELBV2) CreateLoadBalancerRequest(input *CreateLoadBalancerInput) (req *request.Request, output *CreateLoadBalancerOutput) { op := &request.Operation{ Name: opCreateLoadBalancer, @@ -281,21 +380,23 @@ func (c *ELBV2) CreateLoadBalancerRequest(input *CreateLoadBalancerInput) (req * // // Creates an Application Load Balancer or a Network Load Balancer. // -// When you create a load balancer, you can specify security groups, subnets, -// IP address type, and tags. Otherwise, you could do so later using SetSecurityGroups, -// SetSubnets, SetIpAddressType, and AddTags. +// When you create a load balancer, you can specify security groups, public +// subnets, IP address type, and tags. Otherwise, you could do so later using +// SetSecurityGroups, SetSubnets, SetIpAddressType, and AddTags. // // To create listeners for your load balancer, use CreateListener. To describe // your current load balancers, see DescribeLoadBalancers. When you are finished // with a load balancer, you can delete it using DeleteLoadBalancer. // -// You can create up to 20 load balancers per region per account. You can request -// an increase for the number of load balancers for your account. For more information, -// see Limits for Your Application Load Balancer (http://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-limits.html) +// For limit information, see Limits for Your Application Load Balancer (http://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-limits.html) // in the Application Load Balancers Guide and Limits for Your Network Load // Balancer (http://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-limits.html) // in the Network Load Balancers Guide. // +// This operation is idempotent, which means that it completes at most one time. +// If you attempt to create multiple load balancers with the same settings, +// each call succeeds. +// // For more information, see Application Load Balancers (http://docs.aws.amazon.com/elasticloadbalancing/latest/application/application-load-balancers.html) // in the Application Load Balancers Guide and Network Load Balancers (http://docs.aws.amazon.com/elasticloadbalancing/latest/network/network-load-balancers.html) // in the Network Load Balancers Guide. @@ -344,7 +445,10 @@ func (c *ELBV2) CreateLoadBalancerRequest(input *CreateLoadBalancerInput) (req * // * ErrCodeAvailabilityZoneNotSupportedException "AvailabilityZoneNotSupported" // The specified Availability Zone is not supported. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateLoadBalancer +// * ErrCodeOperationNotPermittedException "OperationNotPermitted" +// This operation is not allowed. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateLoadBalancer func (c *ELBV2) CreateLoadBalancer(input *CreateLoadBalancerInput) (*CreateLoadBalancerOutput, error) { req, out := c.CreateLoadBalancerRequest(input) return out, req.Send() @@ -370,7 +474,7 @@ const opCreateRule = "CreateRule" // CreateRuleRequest generates a "aws/request.Request" representing the // client's request for the CreateRule operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -391,7 +495,7 @@ const opCreateRule = "CreateRule" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateRule +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateRule func (c *ELBV2) CreateRuleRequest(input *CreateRuleInput) (req *request.Request, output *CreateRuleOutput) { op := &request.Operation{ Name: opCreateRule, @@ -414,9 +518,9 @@ func (c *ELBV2) CreateRuleRequest(input *CreateRuleInput) (req *request.Request, // with an Application Load Balancer. // // Rules are evaluated in priority order, from the lowest value to the highest -// value. When the condition for a rule is met, the specified action is taken. -// If no conditions are met, the action for the default rule is taken. For more -// information, see Listener Rules (http://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html#listener-rules) +// value. When the conditions for a rule are met, its actions are performed. +// If the conditions for no rules are met, the actions for the default rule +// are performed. For more information, see Listener Rules (http://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html#listener-rules) // in the Application Load Balancers Guide. // // To view your current rules, use DescribeRules. To update a rule, use ModifyRule. @@ -462,7 +566,16 @@ func (c *ELBV2) CreateRuleRequest(input *CreateRuleInput) (req *request.Request, // * ErrCodeTooManyTargetsException "TooManyTargets" // You've reached the limit on the number of targets. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateRule +// * ErrCodeUnsupportedProtocolException "UnsupportedProtocol" +// The specified protocol is not supported. +// +// * ErrCodeTooManyActionsException "TooManyActions" +// You've reached the limit on the number of actions per rule. +// +// * ErrCodeInvalidLoadBalancerActionException "InvalidLoadBalancerAction" +// The requested action is not valid. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateRule func (c *ELBV2) CreateRule(input *CreateRuleInput) (*CreateRuleOutput, error) { req, out := c.CreateRuleRequest(input) return out, req.Send() @@ -488,7 +601,7 @@ const opCreateTargetGroup = "CreateTargetGroup" // CreateTargetGroupRequest generates a "aws/request.Request" representing the // client's request for the CreateTargetGroup operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -509,7 +622,7 @@ const opCreateTargetGroup = "CreateTargetGroup" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateTargetGroup +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateTargetGroup func (c *ELBV2) CreateTargetGroupRequest(input *CreateTargetGroupInput) (req *request.Request, output *CreateTargetGroupOutput) { op := &request.Operation{ Name: opCreateTargetGroup, @@ -539,6 +652,10 @@ func (c *ELBV2) CreateTargetGroupRequest(input *CreateTargetGroupInput) (req *re // // To delete a target group, use DeleteTargetGroup. // +// This operation is idempotent, which means that it completes at most one time. +// If you attempt to create multiple target groups with the same settings, each +// call succeeds. +// // For more information, see Target Groups for Your Application Load Balancers // (http://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-target-groups.html) // in the Application Load Balancers Guide or Target Groups for Your Network @@ -562,7 +679,7 @@ func (c *ELBV2) CreateTargetGroupRequest(input *CreateTargetGroupInput) (req *re // * ErrCodeInvalidConfigurationRequestException "InvalidConfigurationRequest" // The requested configuration is not valid. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateTargetGroup +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateTargetGroup func (c *ELBV2) CreateTargetGroup(input *CreateTargetGroupInput) (*CreateTargetGroupOutput, error) { req, out := c.CreateTargetGroupRequest(input) return out, req.Send() @@ -588,7 +705,7 @@ const opDeleteListener = "DeleteListener" // DeleteListenerRequest generates a "aws/request.Request" representing the // client's request for the DeleteListener operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -609,7 +726,7 @@ const opDeleteListener = "DeleteListener" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteListener +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteListener func (c *ELBV2) DeleteListenerRequest(input *DeleteListenerInput) (req *request.Request, output *DeleteListenerOutput) { op := &request.Operation{ Name: opDeleteListener, @@ -644,7 +761,7 @@ func (c *ELBV2) DeleteListenerRequest(input *DeleteListenerInput) (req *request. // * ErrCodeListenerNotFoundException "ListenerNotFound" // The specified listener does not exist. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteListener +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteListener func (c *ELBV2) DeleteListener(input *DeleteListenerInput) (*DeleteListenerOutput, error) { req, out := c.DeleteListenerRequest(input) return out, req.Send() @@ -670,7 +787,7 @@ const opDeleteLoadBalancer = "DeleteLoadBalancer" // DeleteLoadBalancerRequest generates a "aws/request.Request" representing the // client's request for the DeleteLoadBalancer operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -691,7 +808,7 @@ const opDeleteLoadBalancer = "DeleteLoadBalancer" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteLoadBalancer +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteLoadBalancer func (c *ELBV2) DeleteLoadBalancerRequest(input *DeleteLoadBalancerInput) (req *request.Request, output *DeleteLoadBalancerOutput) { op := &request.Operation{ Name: opDeleteLoadBalancer, @@ -735,7 +852,10 @@ func (c *ELBV2) DeleteLoadBalancerRequest(input *DeleteLoadBalancerInput) (req * // * ErrCodeOperationNotPermittedException "OperationNotPermitted" // This operation is not allowed. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteLoadBalancer +// * ErrCodeResourceInUseException "ResourceInUse" +// A specified resource is in use. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteLoadBalancer func (c *ELBV2) DeleteLoadBalancer(input *DeleteLoadBalancerInput) (*DeleteLoadBalancerOutput, error) { req, out := c.DeleteLoadBalancerRequest(input) return out, req.Send() @@ -761,7 +881,7 @@ const opDeleteRule = "DeleteRule" // DeleteRuleRequest generates a "aws/request.Request" representing the // client's request for the DeleteRule operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -782,7 +902,7 @@ const opDeleteRule = "DeleteRule" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteRule +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteRule func (c *ELBV2) DeleteRuleRequest(input *DeleteRuleInput) (req *request.Request, output *DeleteRuleOutput) { op := &request.Operation{ Name: opDeleteRule, @@ -817,7 +937,7 @@ func (c *ELBV2) DeleteRuleRequest(input *DeleteRuleInput) (req *request.Request, // * ErrCodeOperationNotPermittedException "OperationNotPermitted" // This operation is not allowed. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteRule +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteRule func (c *ELBV2) DeleteRule(input *DeleteRuleInput) (*DeleteRuleOutput, error) { req, out := c.DeleteRuleRequest(input) return out, req.Send() @@ -843,7 +963,7 @@ const opDeleteTargetGroup = "DeleteTargetGroup" // DeleteTargetGroupRequest generates a "aws/request.Request" representing the // client's request for the DeleteTargetGroup operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -864,7 +984,7 @@ const opDeleteTargetGroup = "DeleteTargetGroup" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteTargetGroup +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteTargetGroup func (c *ELBV2) DeleteTargetGroupRequest(input *DeleteTargetGroupInput) (req *request.Request, output *DeleteTargetGroupOutput) { op := &request.Operation{ Name: opDeleteTargetGroup, @@ -899,7 +1019,7 @@ func (c *ELBV2) DeleteTargetGroupRequest(input *DeleteTargetGroupInput) (req *re // * ErrCodeResourceInUseException "ResourceInUse" // A specified resource is in use. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteTargetGroup +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteTargetGroup func (c *ELBV2) DeleteTargetGroup(input *DeleteTargetGroupInput) (*DeleteTargetGroupOutput, error) { req, out := c.DeleteTargetGroupRequest(input) return out, req.Send() @@ -925,7 +1045,7 @@ const opDeregisterTargets = "DeregisterTargets" // DeregisterTargetsRequest generates a "aws/request.Request" representing the // client's request for the DeregisterTargets operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -946,7 +1066,7 @@ const opDeregisterTargets = "DeregisterTargets" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeregisterTargets +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeregisterTargets func (c *ELBV2) DeregisterTargetsRequest(input *DeregisterTargetsInput) (req *request.Request, output *DeregisterTargetsOutput) { op := &request.Operation{ Name: opDeregisterTargets, @@ -981,10 +1101,10 @@ func (c *ELBV2) DeregisterTargetsRequest(input *DeregisterTargetsInput) (req *re // The specified target group does not exist. // // * ErrCodeInvalidTargetException "InvalidTarget" -// The specified target does not exist or is not in the same VPC as the target -// group. +// The specified target does not exist, is not in the same VPC as the target +// group, or has an unsupported instance type. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeregisterTargets +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeregisterTargets func (c *ELBV2) DeregisterTargets(input *DeregisterTargetsInput) (*DeregisterTargetsOutput, error) { req, out := c.DeregisterTargetsRequest(input) return out, req.Send() @@ -1010,7 +1130,7 @@ const opDescribeAccountLimits = "DescribeAccountLimits" // DescribeAccountLimitsRequest generates a "aws/request.Request" representing the // client's request for the DescribeAccountLimits operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1031,7 +1151,7 @@ const opDescribeAccountLimits = "DescribeAccountLimits" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeAccountLimits +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeAccountLimits func (c *ELBV2) DescribeAccountLimitsRequest(input *DescribeAccountLimitsInput) (req *request.Request, output *DescribeAccountLimitsOutput) { op := &request.Operation{ Name: opDescribeAccountLimits, @@ -1064,7 +1184,7 @@ func (c *ELBV2) DescribeAccountLimitsRequest(input *DescribeAccountLimitsInput) // // See the AWS API reference guide for Elastic Load Balancing's // API operation DescribeAccountLimits for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeAccountLimits +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeAccountLimits func (c *ELBV2) DescribeAccountLimits(input *DescribeAccountLimitsInput) (*DescribeAccountLimitsOutput, error) { req, out := c.DescribeAccountLimitsRequest(input) return out, req.Send() @@ -1086,11 +1206,90 @@ func (c *ELBV2) DescribeAccountLimitsWithContext(ctx aws.Context, input *Describ return out, req.Send() } +const opDescribeListenerCertificates = "DescribeListenerCertificates" + +// DescribeListenerCertificatesRequest generates a "aws/request.Request" representing the +// client's request for the DescribeListenerCertificates operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeListenerCertificates for more information on using the DescribeListenerCertificates +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeListenerCertificatesRequest method. +// req, resp := client.DescribeListenerCertificatesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeListenerCertificates +func (c *ELBV2) DescribeListenerCertificatesRequest(input *DescribeListenerCertificatesInput) (req *request.Request, output *DescribeListenerCertificatesOutput) { + op := &request.Operation{ + Name: opDescribeListenerCertificates, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeListenerCertificatesInput{} + } + + output = &DescribeListenerCertificatesOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeListenerCertificates API operation for Elastic Load Balancing. +// +// Describes the certificates for the specified secure listener. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Elastic Load Balancing's +// API operation DescribeListenerCertificates for usage and error information. +// +// Returned Error Codes: +// * ErrCodeListenerNotFoundException "ListenerNotFound" +// The specified listener does not exist. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeListenerCertificates +func (c *ELBV2) DescribeListenerCertificates(input *DescribeListenerCertificatesInput) (*DescribeListenerCertificatesOutput, error) { + req, out := c.DescribeListenerCertificatesRequest(input) + return out, req.Send() +} + +// DescribeListenerCertificatesWithContext is the same as DescribeListenerCertificates with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeListenerCertificates for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *ELBV2) DescribeListenerCertificatesWithContext(ctx aws.Context, input *DescribeListenerCertificatesInput, opts ...request.Option) (*DescribeListenerCertificatesOutput, error) { + req, out := c.DescribeListenerCertificatesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opDescribeListeners = "DescribeListeners" // DescribeListenersRequest generates a "aws/request.Request" representing the // client's request for the DescribeListeners operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1111,7 +1310,7 @@ const opDescribeListeners = "DescribeListeners" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeListeners +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeListeners func (c *ELBV2) DescribeListenersRequest(input *DescribeListenersInput) (req *request.Request, output *DescribeListenersOutput) { op := &request.Operation{ Name: opDescribeListeners, @@ -1154,7 +1353,10 @@ func (c *ELBV2) DescribeListenersRequest(input *DescribeListenersInput) (req *re // * ErrCodeLoadBalancerNotFoundException "LoadBalancerNotFound" // The specified load balancer does not exist. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeListeners +// * ErrCodeUnsupportedProtocolException "UnsupportedProtocol" +// The specified protocol is not supported. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeListeners func (c *ELBV2) DescribeListeners(input *DescribeListenersInput) (*DescribeListenersOutput, error) { req, out := c.DescribeListenersRequest(input) return out, req.Send() @@ -1230,7 +1432,7 @@ const opDescribeLoadBalancerAttributes = "DescribeLoadBalancerAttributes" // DescribeLoadBalancerAttributesRequest generates a "aws/request.Request" representing the // client's request for the DescribeLoadBalancerAttributes operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1251,7 +1453,7 @@ const opDescribeLoadBalancerAttributes = "DescribeLoadBalancerAttributes" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeLoadBalancerAttributes +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeLoadBalancerAttributes func (c *ELBV2) DescribeLoadBalancerAttributesRequest(input *DescribeLoadBalancerAttributesInput) (req *request.Request, output *DescribeLoadBalancerAttributesOutput) { op := &request.Operation{ Name: opDescribeLoadBalancerAttributes, @@ -1273,6 +1475,10 @@ func (c *ELBV2) DescribeLoadBalancerAttributesRequest(input *DescribeLoadBalance // Describes the attributes for the specified Application Load Balancer or Network // Load Balancer. // +// For more information, see Load Balancer Attributes (http://docs.aws.amazon.com/elasticloadbalancing/latest/application/application-load-balancers.html#load-balancer-attributes) +// in the Application Load Balancers Guide or Load Balancer Attributes (http://docs.aws.amazon.com/elasticloadbalancing/latest/network/network-load-balancers.html#load-balancer-attributes) +// in the Network Load Balancers Guide. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -1284,7 +1490,7 @@ func (c *ELBV2) DescribeLoadBalancerAttributesRequest(input *DescribeLoadBalance // * ErrCodeLoadBalancerNotFoundException "LoadBalancerNotFound" // The specified load balancer does not exist. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeLoadBalancerAttributes +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeLoadBalancerAttributes func (c *ELBV2) DescribeLoadBalancerAttributes(input *DescribeLoadBalancerAttributesInput) (*DescribeLoadBalancerAttributesOutput, error) { req, out := c.DescribeLoadBalancerAttributesRequest(input) return out, req.Send() @@ -1310,7 +1516,7 @@ const opDescribeLoadBalancers = "DescribeLoadBalancers" // DescribeLoadBalancersRequest generates a "aws/request.Request" representing the // client's request for the DescribeLoadBalancers operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1331,7 +1537,7 @@ const opDescribeLoadBalancers = "DescribeLoadBalancers" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeLoadBalancers +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeLoadBalancers func (c *ELBV2) DescribeLoadBalancersRequest(input *DescribeLoadBalancersInput) (req *request.Request, output *DescribeLoadBalancersOutput) { op := &request.Operation{ Name: opDescribeLoadBalancers, @@ -1372,7 +1578,7 @@ func (c *ELBV2) DescribeLoadBalancersRequest(input *DescribeLoadBalancersInput) // * ErrCodeLoadBalancerNotFoundException "LoadBalancerNotFound" // The specified load balancer does not exist. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeLoadBalancers +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeLoadBalancers func (c *ELBV2) DescribeLoadBalancers(input *DescribeLoadBalancersInput) (*DescribeLoadBalancersOutput, error) { req, out := c.DescribeLoadBalancersRequest(input) return out, req.Send() @@ -1448,7 +1654,7 @@ const opDescribeRules = "DescribeRules" // DescribeRulesRequest generates a "aws/request.Request" representing the // client's request for the DescribeRules operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1469,7 +1675,7 @@ const opDescribeRules = "DescribeRules" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeRules +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeRules func (c *ELBV2) DescribeRulesRequest(input *DescribeRulesInput) (req *request.Request, output *DescribeRulesOutput) { op := &request.Operation{ Name: opDescribeRules, @@ -1505,7 +1711,10 @@ func (c *ELBV2) DescribeRulesRequest(input *DescribeRulesInput) (req *request.Re // * ErrCodeRuleNotFoundException "RuleNotFound" // The specified rule does not exist. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeRules +// * ErrCodeUnsupportedProtocolException "UnsupportedProtocol" +// The specified protocol is not supported. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeRules func (c *ELBV2) DescribeRules(input *DescribeRulesInput) (*DescribeRulesOutput, error) { req, out := c.DescribeRulesRequest(input) return out, req.Send() @@ -1531,7 +1740,7 @@ const opDescribeSSLPolicies = "DescribeSSLPolicies" // DescribeSSLPoliciesRequest generates a "aws/request.Request" representing the // client's request for the DescribeSSLPolicies operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1552,7 +1761,7 @@ const opDescribeSSLPolicies = "DescribeSSLPolicies" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeSSLPolicies +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeSSLPolicies func (c *ELBV2) DescribeSSLPoliciesRequest(input *DescribeSSLPoliciesInput) (req *request.Request, output *DescribeSSLPoliciesOutput) { op := &request.Operation{ Name: opDescribeSSLPolicies, @@ -1587,7 +1796,7 @@ func (c *ELBV2) DescribeSSLPoliciesRequest(input *DescribeSSLPoliciesInput) (req // * ErrCodeSSLPolicyNotFoundException "SSLPolicyNotFound" // The specified SSL policy does not exist. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeSSLPolicies +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeSSLPolicies func (c *ELBV2) DescribeSSLPolicies(input *DescribeSSLPoliciesInput) (*DescribeSSLPoliciesOutput, error) { req, out := c.DescribeSSLPoliciesRequest(input) return out, req.Send() @@ -1613,7 +1822,7 @@ const opDescribeTags = "DescribeTags" // DescribeTagsRequest generates a "aws/request.Request" representing the // client's request for the DescribeTags operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1634,7 +1843,7 @@ const opDescribeTags = "DescribeTags" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTags +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTags func (c *ELBV2) DescribeTagsRequest(input *DescribeTagsInput) (req *request.Request, output *DescribeTagsOutput) { op := &request.Operation{ Name: opDescribeTags, @@ -1677,7 +1886,7 @@ func (c *ELBV2) DescribeTagsRequest(input *DescribeTagsInput) (req *request.Requ // * ErrCodeRuleNotFoundException "RuleNotFound" // The specified rule does not exist. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTags +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTags func (c *ELBV2) DescribeTags(input *DescribeTagsInput) (*DescribeTagsOutput, error) { req, out := c.DescribeTagsRequest(input) return out, req.Send() @@ -1703,7 +1912,7 @@ const opDescribeTargetGroupAttributes = "DescribeTargetGroupAttributes" // DescribeTargetGroupAttributesRequest generates a "aws/request.Request" representing the // client's request for the DescribeTargetGroupAttributes operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1724,7 +1933,7 @@ const opDescribeTargetGroupAttributes = "DescribeTargetGroupAttributes" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTargetGroupAttributes +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTargetGroupAttributes func (c *ELBV2) DescribeTargetGroupAttributesRequest(input *DescribeTargetGroupAttributesInput) (req *request.Request, output *DescribeTargetGroupAttributesOutput) { op := &request.Operation{ Name: opDescribeTargetGroupAttributes, @@ -1745,6 +1954,10 @@ func (c *ELBV2) DescribeTargetGroupAttributesRequest(input *DescribeTargetGroupA // // Describes the attributes for the specified target group. // +// For more information, see Target Group Attributes (http://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-target-groups.html#target-group-attributes) +// in the Application Load Balancers Guide or Target Group Attributes (http://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-target-groups.html#target-group-attributes) +// in the Network Load Balancers Guide. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -1756,7 +1969,7 @@ func (c *ELBV2) DescribeTargetGroupAttributesRequest(input *DescribeTargetGroupA // * ErrCodeTargetGroupNotFoundException "TargetGroupNotFound" // The specified target group does not exist. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTargetGroupAttributes +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTargetGroupAttributes func (c *ELBV2) DescribeTargetGroupAttributes(input *DescribeTargetGroupAttributesInput) (*DescribeTargetGroupAttributesOutput, error) { req, out := c.DescribeTargetGroupAttributesRequest(input) return out, req.Send() @@ -1782,7 +1995,7 @@ const opDescribeTargetGroups = "DescribeTargetGroups" // DescribeTargetGroupsRequest generates a "aws/request.Request" representing the // client's request for the DescribeTargetGroups operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1803,7 +2016,7 @@ const opDescribeTargetGroups = "DescribeTargetGroups" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTargetGroups +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTargetGroups func (c *ELBV2) DescribeTargetGroupsRequest(input *DescribeTargetGroupsInput) (req *request.Request, output *DescribeTargetGroupsOutput) { op := &request.Operation{ Name: opDescribeTargetGroups, @@ -1850,7 +2063,7 @@ func (c *ELBV2) DescribeTargetGroupsRequest(input *DescribeTargetGroupsInput) (r // * ErrCodeTargetGroupNotFoundException "TargetGroupNotFound" // The specified target group does not exist. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTargetGroups +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTargetGroups func (c *ELBV2) DescribeTargetGroups(input *DescribeTargetGroupsInput) (*DescribeTargetGroupsOutput, error) { req, out := c.DescribeTargetGroupsRequest(input) return out, req.Send() @@ -1926,7 +2139,7 @@ const opDescribeTargetHealth = "DescribeTargetHealth" // DescribeTargetHealthRequest generates a "aws/request.Request" representing the // client's request for the DescribeTargetHealth operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1947,7 +2160,7 @@ const opDescribeTargetHealth = "DescribeTargetHealth" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTargetHealth +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTargetHealth func (c *ELBV2) DescribeTargetHealthRequest(input *DescribeTargetHealthInput) (req *request.Request, output *DescribeTargetHealthOutput) { op := &request.Operation{ Name: opDescribeTargetHealth, @@ -1977,8 +2190,8 @@ func (c *ELBV2) DescribeTargetHealthRequest(input *DescribeTargetHealthInput) (r // // Returned Error Codes: // * ErrCodeInvalidTargetException "InvalidTarget" -// The specified target does not exist or is not in the same VPC as the target -// group. +// The specified target does not exist, is not in the same VPC as the target +// group, or has an unsupported instance type. // // * ErrCodeTargetGroupNotFoundException "TargetGroupNotFound" // The specified target group does not exist. @@ -1987,7 +2200,7 @@ func (c *ELBV2) DescribeTargetHealthRequest(input *DescribeTargetHealthInput) (r // The health of the specified targets could not be retrieved due to an internal // error. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTargetHealth +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTargetHealth func (c *ELBV2) DescribeTargetHealth(input *DescribeTargetHealthInput) (*DescribeTargetHealthOutput, error) { req, out := c.DescribeTargetHealthRequest(input) return out, req.Send() @@ -2013,7 +2226,7 @@ const opModifyListener = "ModifyListener" // ModifyListenerRequest generates a "aws/request.Request" representing the // client's request for the ModifyListener operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2034,7 +2247,7 @@ const opModifyListener = "ModifyListener" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyListener +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyListener func (c *ELBV2) ModifyListenerRequest(input *ModifyListenerInput) (req *request.Request, output *ModifyListenerOutput) { op := &request.Operation{ Name: opModifyListener, @@ -2075,7 +2288,7 @@ func (c *ELBV2) ModifyListenerRequest(input *ModifyListenerInput) (req *request. // You've reached the limit on the number of listeners per load balancer. // // * ErrCodeTooManyCertificatesException "TooManyCertificates" -// You've reached the limit on the number of certificates per listener. +// You've reached the limit on the number of certificates per load balancer. // // * ErrCodeListenerNotFoundException "ListenerNotFound" // The specified listener does not exist. @@ -2108,7 +2321,13 @@ func (c *ELBV2) ModifyListenerRequest(input *ModifyListenerInput) (req *request. // * ErrCodeTooManyTargetsException "TooManyTargets" // You've reached the limit on the number of targets. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyListener +// * ErrCodeTooManyActionsException "TooManyActions" +// You've reached the limit on the number of actions per rule. +// +// * ErrCodeInvalidLoadBalancerActionException "InvalidLoadBalancerAction" +// The requested action is not valid. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyListener func (c *ELBV2) ModifyListener(input *ModifyListenerInput) (*ModifyListenerOutput, error) { req, out := c.ModifyListenerRequest(input) return out, req.Send() @@ -2134,7 +2353,7 @@ const opModifyLoadBalancerAttributes = "ModifyLoadBalancerAttributes" // ModifyLoadBalancerAttributesRequest generates a "aws/request.Request" representing the // client's request for the ModifyLoadBalancerAttributes operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2155,7 +2374,7 @@ const opModifyLoadBalancerAttributes = "ModifyLoadBalancerAttributes" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyLoadBalancerAttributes +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyLoadBalancerAttributes func (c *ELBV2) ModifyLoadBalancerAttributesRequest(input *ModifyLoadBalancerAttributesInput) (req *request.Request, output *ModifyLoadBalancerAttributesOutput) { op := &request.Operation{ Name: opModifyLoadBalancerAttributes, @@ -2195,7 +2414,7 @@ func (c *ELBV2) ModifyLoadBalancerAttributesRequest(input *ModifyLoadBalancerAtt // * ErrCodeInvalidConfigurationRequestException "InvalidConfigurationRequest" // The requested configuration is not valid. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyLoadBalancerAttributes +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyLoadBalancerAttributes func (c *ELBV2) ModifyLoadBalancerAttributes(input *ModifyLoadBalancerAttributesInput) (*ModifyLoadBalancerAttributesOutput, error) { req, out := c.ModifyLoadBalancerAttributesRequest(input) return out, req.Send() @@ -2221,7 +2440,7 @@ const opModifyRule = "ModifyRule" // ModifyRuleRequest generates a "aws/request.Request" representing the // client's request for the ModifyRule operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2242,7 +2461,7 @@ const opModifyRule = "ModifyRule" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyRule +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyRule func (c *ELBV2) ModifyRuleRequest(input *ModifyRuleInput) (req *request.Request, output *ModifyRuleOutput) { op := &request.Operation{ Name: opModifyRule, @@ -2265,7 +2484,7 @@ func (c *ELBV2) ModifyRuleRequest(input *ModifyRuleInput) (req *request.Request, // // Any existing properties that you do not modify retain their current values. // -// To modify the default action, use ModifyListener. +// To modify the actions for the default rule, use ModifyListener. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -2297,7 +2516,16 @@ func (c *ELBV2) ModifyRuleRequest(input *ModifyRuleInput) (req *request.Request, // * ErrCodeTargetGroupNotFoundException "TargetGroupNotFound" // The specified target group does not exist. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyRule +// * ErrCodeUnsupportedProtocolException "UnsupportedProtocol" +// The specified protocol is not supported. +// +// * ErrCodeTooManyActionsException "TooManyActions" +// You've reached the limit on the number of actions per rule. +// +// * ErrCodeInvalidLoadBalancerActionException "InvalidLoadBalancerAction" +// The requested action is not valid. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyRule func (c *ELBV2) ModifyRule(input *ModifyRuleInput) (*ModifyRuleOutput, error) { req, out := c.ModifyRuleRequest(input) return out, req.Send() @@ -2323,7 +2551,7 @@ const opModifyTargetGroup = "ModifyTargetGroup" // ModifyTargetGroupRequest generates a "aws/request.Request" representing the // client's request for the ModifyTargetGroup operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2344,7 +2572,7 @@ const opModifyTargetGroup = "ModifyTargetGroup" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyTargetGroup +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyTargetGroup func (c *ELBV2) ModifyTargetGroupRequest(input *ModifyTargetGroupInput) (req *request.Request, output *ModifyTargetGroupOutput) { op := &request.Operation{ Name: opModifyTargetGroup, @@ -2382,7 +2610,7 @@ func (c *ELBV2) ModifyTargetGroupRequest(input *ModifyTargetGroupInput) (req *re // * ErrCodeInvalidConfigurationRequestException "InvalidConfigurationRequest" // The requested configuration is not valid. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyTargetGroup +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyTargetGroup func (c *ELBV2) ModifyTargetGroup(input *ModifyTargetGroupInput) (*ModifyTargetGroupOutput, error) { req, out := c.ModifyTargetGroupRequest(input) return out, req.Send() @@ -2408,7 +2636,7 @@ const opModifyTargetGroupAttributes = "ModifyTargetGroupAttributes" // ModifyTargetGroupAttributesRequest generates a "aws/request.Request" representing the // client's request for the ModifyTargetGroupAttributes operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2429,7 +2657,7 @@ const opModifyTargetGroupAttributes = "ModifyTargetGroupAttributes" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyTargetGroupAttributes +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyTargetGroupAttributes func (c *ELBV2) ModifyTargetGroupAttributesRequest(input *ModifyTargetGroupAttributesInput) (req *request.Request, output *ModifyTargetGroupAttributesOutput) { op := &request.Operation{ Name: opModifyTargetGroupAttributes, @@ -2464,7 +2692,7 @@ func (c *ELBV2) ModifyTargetGroupAttributesRequest(input *ModifyTargetGroupAttri // * ErrCodeInvalidConfigurationRequestException "InvalidConfigurationRequest" // The requested configuration is not valid. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyTargetGroupAttributes +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyTargetGroupAttributes func (c *ELBV2) ModifyTargetGroupAttributes(input *ModifyTargetGroupAttributesInput) (*ModifyTargetGroupAttributesOutput, error) { req, out := c.ModifyTargetGroupAttributesRequest(input) return out, req.Send() @@ -2490,7 +2718,7 @@ const opRegisterTargets = "RegisterTargets" // RegisterTargetsRequest generates a "aws/request.Request" representing the // client's request for the RegisterTargets operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2511,7 +2739,7 @@ const opRegisterTargets = "RegisterTargets" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/RegisterTargets +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/RegisterTargets func (c *ELBV2) RegisterTargetsRequest(input *RegisterTargetsInput) (req *request.Request, output *RegisterTargetsOutput) { op := &request.Operation{ Name: opRegisterTargets, @@ -2532,16 +2760,18 @@ func (c *ELBV2) RegisterTargetsRequest(input *RegisterTargetsInput) (req *reques // // Registers the specified targets with the specified target group. // +// You can register targets by instance ID or by IP address. If the target is +// an EC2 instance, it must be in the running state when you register it. +// // By default, the load balancer routes requests to registered targets using -// the protocol and port number for the target group. Alternatively, you can -// override the port for a target when you register it. +// the protocol and port for the target group. Alternatively, you can override +// the port for a target when you register it. You can register each EC2 instance +// or IP address with the same target group multiple times using different ports. // -// The target must be in the virtual private cloud (VPC) that you specified -// for the target group. If the target is an EC2 instance, it must be in the -// running state when you register it. -// -// Network Load Balancers do not support the following instance types as targets: -// C1, CC1, CC2, CG1, CG2, CR1, CS1, G1, G2, HI1, HS1, M1, M2, M3, and T1. +// With a Network Load Balancer, you cannot register instances by instance ID +// if they have the following instance types: C1, CC1, CC2, CG1, CG2, CR1, CS1, +// G1, G2, HI1, HS1, M1, M2, M3, and T1. You can register instances of these +// types by IP address. // // To remove a target from a target group, use DeregisterTargets. // @@ -2560,14 +2790,14 @@ func (c *ELBV2) RegisterTargetsRequest(input *RegisterTargetsInput) (req *reques // You've reached the limit on the number of targets. // // * ErrCodeInvalidTargetException "InvalidTarget" -// The specified target does not exist or is not in the same VPC as the target -// group. +// The specified target does not exist, is not in the same VPC as the target +// group, or has an unsupported instance type. // // * ErrCodeTooManyRegistrationsForTargetIdException "TooManyRegistrationsForTargetId" // You've reached the limit on the number of times a target can be registered // with a load balancer. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/RegisterTargets +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/RegisterTargets func (c *ELBV2) RegisterTargets(input *RegisterTargetsInput) (*RegisterTargetsOutput, error) { req, out := c.RegisterTargetsRequest(input) return out, req.Send() @@ -2589,11 +2819,98 @@ func (c *ELBV2) RegisterTargetsWithContext(ctx aws.Context, input *RegisterTarge return out, req.Send() } +const opRemoveListenerCertificates = "RemoveListenerCertificates" + +// RemoveListenerCertificatesRequest generates a "aws/request.Request" representing the +// client's request for the RemoveListenerCertificates operation. The "output" return +// value will be populated with the request's response once the request completes +// successfuly. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See RemoveListenerCertificates for more information on using the RemoveListenerCertificates +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the RemoveListenerCertificatesRequest method. +// req, resp := client.RemoveListenerCertificatesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/RemoveListenerCertificates +func (c *ELBV2) RemoveListenerCertificatesRequest(input *RemoveListenerCertificatesInput) (req *request.Request, output *RemoveListenerCertificatesOutput) { + op := &request.Operation{ + Name: opRemoveListenerCertificates, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &RemoveListenerCertificatesInput{} + } + + output = &RemoveListenerCertificatesOutput{} + req = c.newRequest(op, input, output) + return +} + +// RemoveListenerCertificates API operation for Elastic Load Balancing. +// +// Removes the specified certificate from the specified secure listener. +// +// You can't remove the default certificate for a listener. To replace the default +// certificate, call ModifyListener. +// +// To list the certificates for your listener, use DescribeListenerCertificates. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Elastic Load Balancing's +// API operation RemoveListenerCertificates for usage and error information. +// +// Returned Error Codes: +// * ErrCodeListenerNotFoundException "ListenerNotFound" +// The specified listener does not exist. +// +// * ErrCodeOperationNotPermittedException "OperationNotPermitted" +// This operation is not allowed. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/RemoveListenerCertificates +func (c *ELBV2) RemoveListenerCertificates(input *RemoveListenerCertificatesInput) (*RemoveListenerCertificatesOutput, error) { + req, out := c.RemoveListenerCertificatesRequest(input) + return out, req.Send() +} + +// RemoveListenerCertificatesWithContext is the same as RemoveListenerCertificates with the addition of +// the ability to pass a context and additional request options. +// +// See RemoveListenerCertificates for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *ELBV2) RemoveListenerCertificatesWithContext(ctx aws.Context, input *RemoveListenerCertificatesInput, opts ...request.Option) (*RemoveListenerCertificatesOutput, error) { + req, out := c.RemoveListenerCertificatesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opRemoveTags = "RemoveTags" // RemoveTagsRequest generates a "aws/request.Request" representing the // client's request for the RemoveTags operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2614,7 +2931,7 @@ const opRemoveTags = "RemoveTags" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/RemoveTags +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/RemoveTags func (c *ELBV2) RemoveTagsRequest(input *RemoveTagsInput) (req *request.Request, output *RemoveTagsOutput) { op := &request.Operation{ Name: opRemoveTags, @@ -2660,7 +2977,7 @@ func (c *ELBV2) RemoveTagsRequest(input *RemoveTagsInput) (req *request.Request, // * ErrCodeTooManyTagsException "TooManyTags" // You've reached the limit on the number of tags per load balancer. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/RemoveTags +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/RemoveTags func (c *ELBV2) RemoveTags(input *RemoveTagsInput) (*RemoveTagsOutput, error) { req, out := c.RemoveTagsRequest(input) return out, req.Send() @@ -2686,7 +3003,7 @@ const opSetIpAddressType = "SetIpAddressType" // SetIpAddressTypeRequest generates a "aws/request.Request" representing the // client's request for the SetIpAddressType operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2707,7 +3024,7 @@ const opSetIpAddressType = "SetIpAddressType" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetIpAddressType +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetIpAddressType func (c *ELBV2) SetIpAddressTypeRequest(input *SetIpAddressTypeInput) (req *request.Request, output *SetIpAddressTypeOutput) { op := &request.Operation{ Name: opSetIpAddressType, @@ -2748,7 +3065,7 @@ func (c *ELBV2) SetIpAddressTypeRequest(input *SetIpAddressTypeInput) (req *requ // * ErrCodeInvalidSubnetException "InvalidSubnet" // The specified subnet is out of available addresses. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetIpAddressType +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetIpAddressType func (c *ELBV2) SetIpAddressType(input *SetIpAddressTypeInput) (*SetIpAddressTypeOutput, error) { req, out := c.SetIpAddressTypeRequest(input) return out, req.Send() @@ -2774,7 +3091,7 @@ const opSetRulePriorities = "SetRulePriorities" // SetRulePrioritiesRequest generates a "aws/request.Request" representing the // client's request for the SetRulePriorities operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2795,7 +3112,7 @@ const opSetRulePriorities = "SetRulePriorities" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetRulePriorities +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetRulePriorities func (c *ELBV2) SetRulePrioritiesRequest(input *SetRulePrioritiesInput) (req *request.Request, output *SetRulePrioritiesOutput) { op := &request.Operation{ Name: opSetRulePriorities, @@ -2837,7 +3154,7 @@ func (c *ELBV2) SetRulePrioritiesRequest(input *SetRulePrioritiesInput) (req *re // * ErrCodeOperationNotPermittedException "OperationNotPermitted" // This operation is not allowed. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetRulePriorities +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetRulePriorities func (c *ELBV2) SetRulePriorities(input *SetRulePrioritiesInput) (*SetRulePrioritiesOutput, error) { req, out := c.SetRulePrioritiesRequest(input) return out, req.Send() @@ -2863,7 +3180,7 @@ const opSetSecurityGroups = "SetSecurityGroups" // SetSecurityGroupsRequest generates a "aws/request.Request" representing the // client's request for the SetSecurityGroups operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2884,7 +3201,7 @@ const opSetSecurityGroups = "SetSecurityGroups" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetSecurityGroups +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetSecurityGroups func (c *ELBV2) SetSecurityGroupsRequest(input *SetSecurityGroupsInput) (req *request.Request, output *SetSecurityGroupsOutput) { op := &request.Operation{ Name: opSetSecurityGroups, @@ -2926,7 +3243,7 @@ func (c *ELBV2) SetSecurityGroupsRequest(input *SetSecurityGroupsInput) (req *re // * ErrCodeInvalidSecurityGroupException "InvalidSecurityGroup" // The specified security group does not exist. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetSecurityGroups +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetSecurityGroups func (c *ELBV2) SetSecurityGroups(input *SetSecurityGroupsInput) (*SetSecurityGroupsOutput, error) { req, out := c.SetSecurityGroupsRequest(input) return out, req.Send() @@ -2952,7 +3269,7 @@ const opSetSubnets = "SetSubnets" // SetSubnetsRequest generates a "aws/request.Request" representing the // client's request for the SetSubnets operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2973,7 +3290,7 @@ const opSetSubnets = "SetSubnets" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetSubnets +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetSubnets func (c *ELBV2) SetSubnetsRequest(input *SetSubnetsInput) (req *request.Request, output *SetSubnetsOutput) { op := &request.Operation{ Name: opSetSubnets, @@ -2992,7 +3309,7 @@ func (c *ELBV2) SetSubnetsRequest(input *SetSubnetsInput) (req *request.Request, // SetSubnets API operation for Elastic Load Balancing. // -// Enables the Availability Zone for the specified subnets for the specified +// Enables the Availability Zone for the specified public subnets for the specified // Application Load Balancer. The specified subnets replace the previously enabled // subnets. // @@ -3024,7 +3341,7 @@ func (c *ELBV2) SetSubnetsRequest(input *SetSubnetsInput) (req *request.Request, // * ErrCodeAvailabilityZoneNotSupportedException "AvailabilityZoneNotSupported" // The specified Availability Zone is not supported. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetSubnets +// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetSubnets func (c *ELBV2) SetSubnets(input *SetSubnetsInput) (*SetSubnetsOutput, error) { req, out := c.SetSubnetsRequest(input) return out, req.Send() @@ -3047,16 +3364,30 @@ func (c *ELBV2) SetSubnetsWithContext(ctx aws.Context, input *SetSubnetsInput, o } // Information about an action. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/Action type Action struct { _ struct{} `type:"structure"` - // The Amazon Resource Name (ARN) of the target group. - // - // TargetGroupArn is a required field - TargetGroupArn *string `type:"string" required:"true"` + // [HTTPS listener] Information for using Amazon Cognito to authenticate users. + // Specify only when Type is authenticate-cognito. + AuthenticateCognitoConfig *AuthenticateCognitoActionConfig `type:"structure"` - // The type of action. + // [HTTPS listener] Information about an identity provider that is compliant + // with OpenID Connect (OIDC). Specify only when Type is authenticate-oidc. + AuthenticateOidcConfig *AuthenticateOidcActionConfig `type:"structure"` + + // The order for the action. This value is required for rules with multiple + // actions. The action with the lowest value for order is performed first. The + // forward action must be performed last. + Order *int64 `min:"1" type:"integer"` + + // The Amazon Resource Name (ARN) of the target group. Specify only when Type + // is forward. + // + // For a default rule, the protocol of the target group must be HTTP or HTTPS + // for an Application Load Balancer or TCP for a Network Load Balancer. + TargetGroupArn *string `type:"string"` + + // The type of action. Each rule must include one forward action. // // Type is a required field Type *string `type:"string" required:"true" enum:"ActionTypeEnum"` @@ -3075,12 +3406,22 @@ func (s Action) GoString() string { // Validate inspects the fields of the type to determine if they are valid. func (s *Action) Validate() error { invalidParams := request.ErrInvalidParams{Context: "Action"} - if s.TargetGroupArn == nil { - invalidParams.Add(request.NewErrParamRequired("TargetGroupArn")) + if s.Order != nil && *s.Order < 1 { + invalidParams.Add(request.NewErrParamMinValue("Order", 1)) } if s.Type == nil { invalidParams.Add(request.NewErrParamRequired("Type")) } + if s.AuthenticateCognitoConfig != nil { + if err := s.AuthenticateCognitoConfig.Validate(); err != nil { + invalidParams.AddNested("AuthenticateCognitoConfig", err.(request.ErrInvalidParams)) + } + } + if s.AuthenticateOidcConfig != nil { + if err := s.AuthenticateOidcConfig.Validate(); err != nil { + invalidParams.AddNested("AuthenticateOidcConfig", err.(request.ErrInvalidParams)) + } + } if invalidParams.Len() > 0 { return invalidParams @@ -3088,6 +3429,24 @@ func (s *Action) Validate() error { return nil } +// SetAuthenticateCognitoConfig sets the AuthenticateCognitoConfig field's value. +func (s *Action) SetAuthenticateCognitoConfig(v *AuthenticateCognitoActionConfig) *Action { + s.AuthenticateCognitoConfig = v + return s +} + +// SetAuthenticateOidcConfig sets the AuthenticateOidcConfig field's value. +func (s *Action) SetAuthenticateOidcConfig(v *AuthenticateOidcActionConfig) *Action { + s.AuthenticateOidcConfig = v + return s +} + +// SetOrder sets the Order field's value. +func (s *Action) SetOrder(v int64) *Action { + s.Order = &v + return s +} + // SetTargetGroupArn sets the TargetGroupArn field's value. func (s *Action) SetTargetGroupArn(v string) *Action { s.TargetGroupArn = &v @@ -3100,7 +3459,81 @@ func (s *Action) SetType(v string) *Action { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/AddTagsInput +type AddListenerCertificatesInput struct { + _ struct{} `type:"structure"` + + // The certificate to add. You can specify one certificate per call. + // + // Certificates is a required field + Certificates []*Certificate `type:"list" required:"true"` + + // The Amazon Resource Name (ARN) of the listener. + // + // ListenerArn is a required field + ListenerArn *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s AddListenerCertificatesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AddListenerCertificatesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AddListenerCertificatesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AddListenerCertificatesInput"} + if s.Certificates == nil { + invalidParams.Add(request.NewErrParamRequired("Certificates")) + } + if s.ListenerArn == nil { + invalidParams.Add(request.NewErrParamRequired("ListenerArn")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetCertificates sets the Certificates field's value. +func (s *AddListenerCertificatesInput) SetCertificates(v []*Certificate) *AddListenerCertificatesInput { + s.Certificates = v + return s +} + +// SetListenerArn sets the ListenerArn field's value. +func (s *AddListenerCertificatesInput) SetListenerArn(v string) *AddListenerCertificatesInput { + s.ListenerArn = &v + return s +} + +type AddListenerCertificatesOutput struct { + _ struct{} `type:"structure"` + + // Information about the certificates. + Certificates []*Certificate `type:"list"` +} + +// String returns the string representation +func (s AddListenerCertificatesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AddListenerCertificatesOutput) GoString() string { + return s.String() +} + +// SetCertificates sets the Certificates field's value. +func (s *AddListenerCertificatesOutput) SetCertificates(v []*Certificate) *AddListenerCertificatesOutput { + s.Certificates = v + return s +} + type AddTagsInput struct { _ struct{} `type:"structure"` @@ -3166,7 +3599,6 @@ func (s *AddTagsInput) SetTags(v []*Tag) *AddTagsInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/AddTagsOutput type AddTagsOutput struct { _ struct{} `type:"structure"` } @@ -3181,8 +3613,306 @@ func (s AddTagsOutput) GoString() string { return s.String() } +// Request parameters to use when integrating with Amazon Cognito to authenticate +// users. +type AuthenticateCognitoActionConfig struct { + _ struct{} `type:"structure"` + + // The query parameters (up to 10) to include in the redirect request to the + // authorization endpoint. + AuthenticationRequestExtraParams map[string]*string `type:"map"` + + // The behavior if the user is not authenticated. The following are possible + // values: + // + // * deny - Return an HTTP 401 Unauthorized error. + // + // * allow - Allow the request to be forwarded to the target. + // + // authenticate + OnUnauthenticatedRequest *string `type:"string" enum:"AuthenticateCognitoActionConditionalBehaviorEnum"` + + // The set of user claims to be requested from the IdP. The default is openid. + // + // To verify which scope values your IdP supports and how to separate multiple + // values, see the documentation for your IdP. + Scope *string `type:"string"` + + // The name of the cookie used to maintain session information. The default + // is AWSELBAuthSessionCookie. + SessionCookieName *string `type:"string"` + + // The maximum duration of the authentication session, in seconds. The default + // is 604800 seconds (7 days). + SessionTimeout *int64 `type:"long"` + + // The Amazon Resource Name (ARN) of the Amazon Cognito user pool. + // + // UserPoolArn is a required field + UserPoolArn *string `type:"string" required:"true"` + + // The ID of the Amazon Cognito user pool client. + // + // UserPoolClientId is a required field + UserPoolClientId *string `type:"string" required:"true"` + + // The domain prefix or fully-qualified domain name of the Amazon Cognito user + // pool. + // + // UserPoolDomain is a required field + UserPoolDomain *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s AuthenticateCognitoActionConfig) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AuthenticateCognitoActionConfig) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AuthenticateCognitoActionConfig) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AuthenticateCognitoActionConfig"} + if s.UserPoolArn == nil { + invalidParams.Add(request.NewErrParamRequired("UserPoolArn")) + } + if s.UserPoolClientId == nil { + invalidParams.Add(request.NewErrParamRequired("UserPoolClientId")) + } + if s.UserPoolDomain == nil { + invalidParams.Add(request.NewErrParamRequired("UserPoolDomain")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAuthenticationRequestExtraParams sets the AuthenticationRequestExtraParams field's value. +func (s *AuthenticateCognitoActionConfig) SetAuthenticationRequestExtraParams(v map[string]*string) *AuthenticateCognitoActionConfig { + s.AuthenticationRequestExtraParams = v + return s +} + +// SetOnUnauthenticatedRequest sets the OnUnauthenticatedRequest field's value. +func (s *AuthenticateCognitoActionConfig) SetOnUnauthenticatedRequest(v string) *AuthenticateCognitoActionConfig { + s.OnUnauthenticatedRequest = &v + return s +} + +// SetScope sets the Scope field's value. +func (s *AuthenticateCognitoActionConfig) SetScope(v string) *AuthenticateCognitoActionConfig { + s.Scope = &v + return s +} + +// SetSessionCookieName sets the SessionCookieName field's value. +func (s *AuthenticateCognitoActionConfig) SetSessionCookieName(v string) *AuthenticateCognitoActionConfig { + s.SessionCookieName = &v + return s +} + +// SetSessionTimeout sets the SessionTimeout field's value. +func (s *AuthenticateCognitoActionConfig) SetSessionTimeout(v int64) *AuthenticateCognitoActionConfig { + s.SessionTimeout = &v + return s +} + +// SetUserPoolArn sets the UserPoolArn field's value. +func (s *AuthenticateCognitoActionConfig) SetUserPoolArn(v string) *AuthenticateCognitoActionConfig { + s.UserPoolArn = &v + return s +} + +// SetUserPoolClientId sets the UserPoolClientId field's value. +func (s *AuthenticateCognitoActionConfig) SetUserPoolClientId(v string) *AuthenticateCognitoActionConfig { + s.UserPoolClientId = &v + return s +} + +// SetUserPoolDomain sets the UserPoolDomain field's value. +func (s *AuthenticateCognitoActionConfig) SetUserPoolDomain(v string) *AuthenticateCognitoActionConfig { + s.UserPoolDomain = &v + return s +} + +// Request parameters when using an identity provider (IdP) that is compliant +// with OpenID Connect (OIDC) to authenticate users. +type AuthenticateOidcActionConfig struct { + _ struct{} `type:"structure"` + + // The query parameters (up to 10) to include in the redirect request to the + // authorization endpoint. + AuthenticationRequestExtraParams map[string]*string `type:"map"` + + // The authorization endpoint of the IdP. This must be a full URL, including + // the HTTPS protocol, the domain, and the path. + // + // AuthorizationEndpoint is a required field + AuthorizationEndpoint *string `type:"string" required:"true"` + + // The OAuth 2.0 client identifier. + // + // ClientId is a required field + ClientId *string `type:"string" required:"true"` + + // The OAuth 2.0 client secret. + // + // ClientSecret is a required field + ClientSecret *string `type:"string" required:"true"` + + // The OIDC issuer identifier of the IdP. This must be a full URL, including + // the HTTPS protocol, the domain, and the path. + // + // Issuer is a required field + Issuer *string `type:"string" required:"true"` + + // The behavior if the user is not authenticated. The following are possible + // values: + // + // * deny - Return an HTTP 401 Unauthorized error. + // + // * allow - Allow the request to be forwarded to the target. + // + // authenticate + OnUnauthenticatedRequest *string `type:"string" enum:"AuthenticateOidcActionConditionalBehaviorEnum"` + + // The set of user claims to be requested from the IdP. The default is openid. + // + // To verify which scope values your IdP supports and how to separate multiple + // values, see the documentation for your IdP. + Scope *string `type:"string"` + + // The name of the cookie used to maintain session information. The default + // is AWSELBAuthSessionCookie. + SessionCookieName *string `type:"string"` + + // The maximum duration of the authentication session, in seconds. The default + // is 604800 seconds (7 days). + SessionTimeout *int64 `type:"long"` + + // The token endpoint of the IdP. This must be a full URL, including the HTTPS + // protocol, the domain, and the path. + // + // TokenEndpoint is a required field + TokenEndpoint *string `type:"string" required:"true"` + + // The user info endpoint of the IdP. This must be a full URL, including the + // HTTPS protocol, the domain, and the path. + // + // UserInfoEndpoint is a required field + UserInfoEndpoint *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s AuthenticateOidcActionConfig) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AuthenticateOidcActionConfig) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AuthenticateOidcActionConfig) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AuthenticateOidcActionConfig"} + if s.AuthorizationEndpoint == nil { + invalidParams.Add(request.NewErrParamRequired("AuthorizationEndpoint")) + } + if s.ClientId == nil { + invalidParams.Add(request.NewErrParamRequired("ClientId")) + } + if s.ClientSecret == nil { + invalidParams.Add(request.NewErrParamRequired("ClientSecret")) + } + if s.Issuer == nil { + invalidParams.Add(request.NewErrParamRequired("Issuer")) + } + if s.TokenEndpoint == nil { + invalidParams.Add(request.NewErrParamRequired("TokenEndpoint")) + } + if s.UserInfoEndpoint == nil { + invalidParams.Add(request.NewErrParamRequired("UserInfoEndpoint")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAuthenticationRequestExtraParams sets the AuthenticationRequestExtraParams field's value. +func (s *AuthenticateOidcActionConfig) SetAuthenticationRequestExtraParams(v map[string]*string) *AuthenticateOidcActionConfig { + s.AuthenticationRequestExtraParams = v + return s +} + +// SetAuthorizationEndpoint sets the AuthorizationEndpoint field's value. +func (s *AuthenticateOidcActionConfig) SetAuthorizationEndpoint(v string) *AuthenticateOidcActionConfig { + s.AuthorizationEndpoint = &v + return s +} + +// SetClientId sets the ClientId field's value. +func (s *AuthenticateOidcActionConfig) SetClientId(v string) *AuthenticateOidcActionConfig { + s.ClientId = &v + return s +} + +// SetClientSecret sets the ClientSecret field's value. +func (s *AuthenticateOidcActionConfig) SetClientSecret(v string) *AuthenticateOidcActionConfig { + s.ClientSecret = &v + return s +} + +// SetIssuer sets the Issuer field's value. +func (s *AuthenticateOidcActionConfig) SetIssuer(v string) *AuthenticateOidcActionConfig { + s.Issuer = &v + return s +} + +// SetOnUnauthenticatedRequest sets the OnUnauthenticatedRequest field's value. +func (s *AuthenticateOidcActionConfig) SetOnUnauthenticatedRequest(v string) *AuthenticateOidcActionConfig { + s.OnUnauthenticatedRequest = &v + return s +} + +// SetScope sets the Scope field's value. +func (s *AuthenticateOidcActionConfig) SetScope(v string) *AuthenticateOidcActionConfig { + s.Scope = &v + return s +} + +// SetSessionCookieName sets the SessionCookieName field's value. +func (s *AuthenticateOidcActionConfig) SetSessionCookieName(v string) *AuthenticateOidcActionConfig { + s.SessionCookieName = &v + return s +} + +// SetSessionTimeout sets the SessionTimeout field's value. +func (s *AuthenticateOidcActionConfig) SetSessionTimeout(v int64) *AuthenticateOidcActionConfig { + s.SessionTimeout = &v + return s +} + +// SetTokenEndpoint sets the TokenEndpoint field's value. +func (s *AuthenticateOidcActionConfig) SetTokenEndpoint(v string) *AuthenticateOidcActionConfig { + s.TokenEndpoint = &v + return s +} + +// SetUserInfoEndpoint sets the UserInfoEndpoint field's value. +func (s *AuthenticateOidcActionConfig) SetUserInfoEndpoint(v string) *AuthenticateOidcActionConfig { + s.UserInfoEndpoint = &v + return s +} + // Information about an Availability Zone. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/AvailabilityZone type AvailabilityZone struct { _ struct{} `type:"structure"` @@ -3224,13 +3954,15 @@ func (s *AvailabilityZone) SetZoneName(v string) *AvailabilityZone { return s } -// Information about an SSL server certificate deployed on a load balancer. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/Certificate +// Information about an SSL server certificate. type Certificate struct { _ struct{} `type:"structure"` // The Amazon Resource Name (ARN) of the certificate. CertificateArn *string `type:"string"` + + // Indicates whether the certificate is the default certificate. + IsDefault *bool `type:"boolean"` } // String returns the string representation @@ -3249,8 +3981,13 @@ func (s *Certificate) SetCertificateArn(v string) *Certificate { return s } +// SetIsDefault sets the IsDefault field's value. +func (s *Certificate) SetIsDefault(v bool) *Certificate { + s.IsDefault = &v + return s +} + // Information about a cipher used in a policy. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/Cipher type Cipher struct { _ struct{} `type:"structure"` @@ -3283,17 +4020,25 @@ func (s *Cipher) SetPriority(v int64) *Cipher { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateListenerInput type CreateListenerInput struct { _ struct{} `type:"structure"` - // [HTTPS listeners] The SSL server certificate. You must provide exactly one - // certificate. + // [HTTPS listeners] The default SSL server certificate. You must provide exactly + // one certificate. To create a certificate list, use AddListenerCertificates. Certificates []*Certificate `type:"list"` - // The default action for the listener. For Application Load Balancers, the - // protocol of the specified target group must be HTTP or HTTPS. For Network - // Load Balancers, the protocol of the specified target group must be TCP. + // The actions for the default rule. The rule must include one forward action. + // + // If the action type is forward, you can specify a single target group. The + // protocol of the target group must be HTTP or HTTPS for an Application Load + // Balancer or TCP for a Network Load Balancer. + // + // If the action type is authenticate-oidc, you can use an identity provider + // that is OpenID Connect (OIDC) compliant to authenticate users as they access + // your application. + // + // If the action type is authenticate-cognito, you can use Amazon Cognito to + // authenticate users as they access your application. // // DefaultActions is a required field DefaultActions []*Action `type:"list" required:"true"` @@ -3401,7 +4146,6 @@ func (s *CreateListenerInput) SetSslPolicy(v string) *CreateListenerInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateListenerOutput type CreateListenerOutput struct { _ struct{} `type:"structure"` @@ -3425,7 +4169,6 @@ func (s *CreateListenerOutput) SetListeners(v []*Listener) *CreateListenerOutput return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateLoadBalancerInput type CreateLoadBalancerInput struct { _ struct{} `type:"structure"` @@ -3438,8 +4181,8 @@ type CreateLoadBalancerInput struct { // The name of the load balancer. // // This name must be unique per region per account, can have a maximum of 32 - // characters, must contain only alphanumeric characters or hyphens, and must - // not begin or end with a hyphen. + // characters, must contain only alphanumeric characters or hyphens, must not + // begin or end with a hyphen, and must not begin with "internal-". // // Name is a required field Name *string `type:"string" required:"true"` @@ -3457,32 +4200,34 @@ type CreateLoadBalancerInput struct { // The default is an Internet-facing load balancer. Scheme *string `type:"string" enum:"LoadBalancerSchemeEnum"` - // [Application Load Balancers] The IDs of the security groups to assign to - // the load balancer. + // [Application Load Balancers] The IDs of the security groups for the load + // balancer. SecurityGroups []*string `type:"list"` - // The IDs of the subnets to attach to the load balancer. You can specify only - // one subnet per Availability Zone. You must specify either subnets or subnet - // mappings. - // - // [Network Load Balancers] You can specify one Elastic IP address per subnet. - // - // [Application Load Balancers] You cannot specify Elastic IP addresses for - // your subnets. - SubnetMappings []*SubnetMapping `type:"list"` - - // The IDs of the subnets to attach to the load balancer. You can specify only - // one subnet per Availability Zone. You must specify either subnets or subnet - // mappings. + // The IDs of the public subnets. You can specify only one subnet per Availability + // Zone. You must specify either subnets or subnet mappings. // // [Application Load Balancers] You must specify subnets from at least two Availability + // Zones. You cannot specify Elastic IP addresses for your subnets. + // + // [Network Load Balancers] You can specify subnets from one or more Availability + // Zones. You can specify one Elastic IP address per subnet. + SubnetMappings []*SubnetMapping `type:"list"` + + // The IDs of the public subnets. You can specify only one subnet per Availability + // Zone. You must specify either subnets or subnet mappings. + // + // [Application Load Balancers] You must specify subnets from at least two Availability + // Zones. + // + // [Network Load Balancers] You can specify subnets from one or more Availability // Zones. Subnets []*string `type:"list"` // One or more tags to assign to the load balancer. Tags []*Tag `min:"1" type:"list"` - // The type of load balancer to create. The default is application. + // The type of load balancer. The default is application. Type *string `type:"string" enum:"LoadBalancerTypeEnum"` } @@ -3570,7 +4315,6 @@ func (s *CreateLoadBalancerInput) SetType(v string) *CreateLoadBalancerInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateLoadBalancerOutput type CreateLoadBalancerOutput struct { _ struct{} `type:"structure"` @@ -3594,11 +4338,19 @@ func (s *CreateLoadBalancerOutput) SetLoadBalancers(v []*LoadBalancer) *CreateLo return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateRuleInput type CreateRuleInput struct { _ struct{} `type:"structure"` - // An action. Each action has the type forward and specifies a target group. + // The actions. Each rule must include one forward action. + // + // If the action type is forward, you can specify a single target group. + // + // If the action type is authenticate-oidc, you can use an identity provider + // that is OpenID Connect (OIDC) compliant to authenticate users as they access + // your application. + // + // If the action type is authenticate-cognito, you can use Amazon Cognito to + // authenticate users as they access your application. // // Actions is a required field Actions []*Action `type:"list" required:"true"` @@ -3641,8 +4393,7 @@ type CreateRuleInput struct { // ListenerArn is a required field ListenerArn *string `type:"string" required:"true"` - // The priority for the rule. A listener can't have multiple rules with the - // same priority. + // The rule priority. A listener can't have multiple rules with the same priority. // // Priority is a required field Priority *int64 `min:"1" type:"integer" required:"true"` @@ -3717,7 +4468,6 @@ func (s *CreateRuleInput) SetPriority(v int64) *CreateRuleInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateRuleOutput type CreateRuleOutput struct { _ struct{} `type:"structure"` @@ -3741,7 +4491,6 @@ func (s *CreateRuleOutput) SetRules(v []*Rule) *CreateRuleOutput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateTargetGroupInput type CreateTargetGroupInput struct { _ struct{} `type:"structure"` @@ -3961,7 +4710,6 @@ func (s *CreateTargetGroupInput) SetVpcId(v string) *CreateTargetGroupInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateTargetGroupOutput type CreateTargetGroupOutput struct { _ struct{} `type:"structure"` @@ -3985,7 +4733,6 @@ func (s *CreateTargetGroupOutput) SetTargetGroups(v []*TargetGroup) *CreateTarge return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteListenerInput type DeleteListenerInput struct { _ struct{} `type:"structure"` @@ -4024,7 +4771,6 @@ func (s *DeleteListenerInput) SetListenerArn(v string) *DeleteListenerInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteListenerOutput type DeleteListenerOutput struct { _ struct{} `type:"structure"` } @@ -4039,7 +4785,6 @@ func (s DeleteListenerOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteLoadBalancerInput type DeleteLoadBalancerInput struct { _ struct{} `type:"structure"` @@ -4078,7 +4823,6 @@ func (s *DeleteLoadBalancerInput) SetLoadBalancerArn(v string) *DeleteLoadBalanc return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteLoadBalancerOutput type DeleteLoadBalancerOutput struct { _ struct{} `type:"structure"` } @@ -4093,7 +4837,6 @@ func (s DeleteLoadBalancerOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteRuleInput type DeleteRuleInput struct { _ struct{} `type:"structure"` @@ -4132,7 +4875,6 @@ func (s *DeleteRuleInput) SetRuleArn(v string) *DeleteRuleInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteRuleOutput type DeleteRuleOutput struct { _ struct{} `type:"structure"` } @@ -4147,7 +4889,6 @@ func (s DeleteRuleOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteTargetGroupInput type DeleteTargetGroupInput struct { _ struct{} `type:"structure"` @@ -4186,7 +4927,6 @@ func (s *DeleteTargetGroupInput) SetTargetGroupArn(v string) *DeleteTargetGroupI return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteTargetGroupOutput type DeleteTargetGroupOutput struct { _ struct{} `type:"structure"` } @@ -4201,7 +4941,6 @@ func (s DeleteTargetGroupOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeregisterTargetsInput type DeregisterTargetsInput struct { _ struct{} `type:"structure"` @@ -4265,7 +5004,6 @@ func (s *DeregisterTargetsInput) SetTargets(v []*TargetDescription) *DeregisterT return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeregisterTargetsOutput type DeregisterTargetsOutput struct { _ struct{} `type:"structure"` } @@ -4280,7 +5018,6 @@ func (s DeregisterTargetsOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeAccountLimitsInput type DescribeAccountLimitsInput struct { _ struct{} `type:"structure"` @@ -4327,7 +5064,6 @@ func (s *DescribeAccountLimitsInput) SetPageSize(v int64) *DescribeAccountLimits return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeAccountLimitsOutput type DescribeAccountLimitsOutput struct { _ struct{} `type:"structure"` @@ -4361,7 +5097,99 @@ func (s *DescribeAccountLimitsOutput) SetNextMarker(v string) *DescribeAccountLi return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeListenersInput +type DescribeListenerCertificatesInput struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Names (ARN) of the listener. + // + // ListenerArn is a required field + ListenerArn *string `type:"string" required:"true"` + + // The marker for the next set of results. (You received this marker from a + // previous call.) + Marker *string `type:"string"` + + // The maximum number of results to return with this call. + PageSize *int64 `min:"1" type:"integer"` +} + +// String returns the string representation +func (s DescribeListenerCertificatesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeListenerCertificatesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeListenerCertificatesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeListenerCertificatesInput"} + if s.ListenerArn == nil { + invalidParams.Add(request.NewErrParamRequired("ListenerArn")) + } + if s.PageSize != nil && *s.PageSize < 1 { + invalidParams.Add(request.NewErrParamMinValue("PageSize", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetListenerArn sets the ListenerArn field's value. +func (s *DescribeListenerCertificatesInput) SetListenerArn(v string) *DescribeListenerCertificatesInput { + s.ListenerArn = &v + return s +} + +// SetMarker sets the Marker field's value. +func (s *DescribeListenerCertificatesInput) SetMarker(v string) *DescribeListenerCertificatesInput { + s.Marker = &v + return s +} + +// SetPageSize sets the PageSize field's value. +func (s *DescribeListenerCertificatesInput) SetPageSize(v int64) *DescribeListenerCertificatesInput { + s.PageSize = &v + return s +} + +type DescribeListenerCertificatesOutput struct { + _ struct{} `type:"structure"` + + // Information about the certificates. + Certificates []*Certificate `type:"list"` + + // The marker to use when requesting the next set of results. If there are no + // additional results, the string is empty. + NextMarker *string `type:"string"` +} + +// String returns the string representation +func (s DescribeListenerCertificatesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeListenerCertificatesOutput) GoString() string { + return s.String() +} + +// SetCertificates sets the Certificates field's value. +func (s *DescribeListenerCertificatesOutput) SetCertificates(v []*Certificate) *DescribeListenerCertificatesOutput { + s.Certificates = v + return s +} + +// SetNextMarker sets the NextMarker field's value. +func (s *DescribeListenerCertificatesOutput) SetNextMarker(v string) *DescribeListenerCertificatesOutput { + s.NextMarker = &v + return s +} + type DescribeListenersInput struct { _ struct{} `type:"structure"` @@ -4426,7 +5254,6 @@ func (s *DescribeListenersInput) SetPageSize(v int64) *DescribeListenersInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeListenersOutput type DescribeListenersOutput struct { _ struct{} `type:"structure"` @@ -4460,7 +5287,6 @@ func (s *DescribeListenersOutput) SetNextMarker(v string) *DescribeListenersOutp return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeLoadBalancerAttributesInput type DescribeLoadBalancerAttributesInput struct { _ struct{} `type:"structure"` @@ -4499,7 +5325,6 @@ func (s *DescribeLoadBalancerAttributesInput) SetLoadBalancerArn(v string) *Desc return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeLoadBalancerAttributesOutput type DescribeLoadBalancerAttributesOutput struct { _ struct{} `type:"structure"` @@ -4523,7 +5348,6 @@ func (s *DescribeLoadBalancerAttributesOutput) SetAttributes(v []*LoadBalancerAt return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeLoadBalancersInput type DescribeLoadBalancersInput struct { _ struct{} `type:"structure"` @@ -4589,7 +5413,6 @@ func (s *DescribeLoadBalancersInput) SetPageSize(v int64) *DescribeLoadBalancers return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeLoadBalancersOutput type DescribeLoadBalancersOutput struct { _ struct{} `type:"structure"` @@ -4623,7 +5446,6 @@ func (s *DescribeLoadBalancersOutput) SetNextMarker(v string) *DescribeLoadBalan return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeRulesInput type DescribeRulesInput struct { _ struct{} `type:"structure"` @@ -4688,7 +5510,6 @@ func (s *DescribeRulesInput) SetRuleArns(v []*string) *DescribeRulesInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeRulesOutput type DescribeRulesOutput struct { _ struct{} `type:"structure"` @@ -4722,7 +5543,6 @@ func (s *DescribeRulesOutput) SetRules(v []*Rule) *DescribeRulesOutput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeSSLPoliciesInput type DescribeSSLPoliciesInput struct { _ struct{} `type:"structure"` @@ -4778,7 +5598,6 @@ func (s *DescribeSSLPoliciesInput) SetPageSize(v int64) *DescribeSSLPoliciesInpu return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeSSLPoliciesOutput type DescribeSSLPoliciesOutput struct { _ struct{} `type:"structure"` @@ -4812,7 +5631,6 @@ func (s *DescribeSSLPoliciesOutput) SetSslPolicies(v []*SslPolicy) *DescribeSSLP return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTagsInput type DescribeTagsInput struct { _ struct{} `type:"structure"` @@ -4851,7 +5669,6 @@ func (s *DescribeTagsInput) SetResourceArns(v []*string) *DescribeTagsInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTagsOutput type DescribeTagsOutput struct { _ struct{} `type:"structure"` @@ -4875,7 +5692,6 @@ func (s *DescribeTagsOutput) SetTagDescriptions(v []*TagDescription) *DescribeTa return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTargetGroupAttributesInput type DescribeTargetGroupAttributesInput struct { _ struct{} `type:"structure"` @@ -4914,7 +5730,6 @@ func (s *DescribeTargetGroupAttributesInput) SetTargetGroupArn(v string) *Descri return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTargetGroupAttributesOutput type DescribeTargetGroupAttributesOutput struct { _ struct{} `type:"structure"` @@ -4938,7 +5753,6 @@ func (s *DescribeTargetGroupAttributesOutput) SetAttributes(v []*TargetGroupAttr return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTargetGroupsInput type DescribeTargetGroupsInput struct { _ struct{} `type:"structure"` @@ -5012,7 +5826,6 @@ func (s *DescribeTargetGroupsInput) SetTargetGroupArns(v []*string) *DescribeTar return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTargetGroupsOutput type DescribeTargetGroupsOutput struct { _ struct{} `type:"structure"` @@ -5046,7 +5859,6 @@ func (s *DescribeTargetGroupsOutput) SetTargetGroups(v []*TargetGroup) *Describe return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTargetHealthInput type DescribeTargetHealthInput struct { _ struct{} `type:"structure"` @@ -5104,7 +5916,6 @@ func (s *DescribeTargetHealthInput) SetTargets(v []*TargetDescription) *Describe return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTargetHealthOutput type DescribeTargetHealthOutput struct { _ struct{} `type:"structure"` @@ -5129,7 +5940,6 @@ func (s *DescribeTargetHealthOutput) SetTargetHealthDescriptions(v []*TargetHeal } // Information about an Elastic Load Balancing resource limit for your AWS account. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/Limit type Limit struct { _ struct{} `type:"structure"` @@ -5151,6 +5961,10 @@ type Limit struct { // * target-groups // // * targets-per-application-load-balancer + // + // * targets-per-availability-zone-per-network-load-balancer + // + // * targets-per-network-load-balancer Name *string `type:"string"` } @@ -5177,7 +5991,6 @@ func (s *Limit) SetName(v string) *Limit { } // Information about a listener. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/Listener type Listener struct { _ struct{} `type:"structure"` @@ -5258,7 +6071,6 @@ func (s *Listener) SetSslPolicy(v string) *Listener { } // Information about a load balancer. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/LoadBalancer type LoadBalancer struct { _ struct{} `type:"structure"` @@ -5392,7 +6204,6 @@ func (s *LoadBalancer) SetVpcId(v string) *LoadBalancer { } // Information about a static IP address for a load balancer. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/LoadBalancerAddress type LoadBalancerAddress struct { _ struct{} `type:"structure"` @@ -5426,31 +6237,40 @@ func (s *LoadBalancerAddress) SetIpAddress(v string) *LoadBalancerAddress { } // Information about a load balancer attribute. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/LoadBalancerAttribute type LoadBalancerAttribute struct { _ struct{} `type:"structure"` // The name of the attribute. // - // * access_logs.s3.enabled - [Application Load Balancers] Indicates whether - // access logs stored in Amazon S3 are enabled. The value is true or false. - // - // * access_logs.s3.bucket - [Application Load Balancers] The name of the - // S3 bucket for the access logs. This attribute is required if access logs - // in Amazon S3 are enabled. The bucket must exist in the same region as - // the load balancer and have a bucket policy that grants Elastic Load Balancing - // permission to write to the bucket. - // - // * access_logs.s3.prefix - [Application Load Balancers] The prefix for - // the location in the S3 bucket. If you don't specify a prefix, the access - // logs are stored in the root of the bucket. + // The following attributes are supported by both Application Load Balancers + // and Network Load Balancers: // // * deletion_protection.enabled - Indicates whether deletion protection - // is enabled. The value is true or false. + // is enabled. The value is true or false. The default is false. // - // * idle_timeout.timeout_seconds - [Application Load Balancers] The idle - // timeout value, in seconds. The valid range is 1-4000. The default is 60 - // seconds. + // The following attributes are supported by only Application Load Balancers: + // + // * access_logs.s3.enabled - Indicates whether access logs are enabled. + // The value is true or false. The default is false. + // + // * access_logs.s3.bucket - The name of the S3 bucket for the access logs. + // This attribute is required if access logs are enabled. The bucket must + // exist in the same region as the load balancer and have a bucket policy + // that grants Elastic Load Balancing permission to write to the bucket. + // + // * access_logs.s3.prefix - The prefix for the location in the S3 bucket + // for the access logs. + // + // * idle_timeout.timeout_seconds - The idle timeout value, in seconds. The + // valid range is 1-4000 seconds. The default is 60 seconds. + // + // * routing.http2.enabled - Indicates whether HTTP/2 is enabled. The value + // is true or false. The default is true. + // + // The following attributes are supported by only Network Load Balancers: + // + // * load_balancing.cross_zone.enabled - Indicates whether cross-zone load + // balancing is enabled. The value is true or false. The default is false. Key *string `type:"string"` // The value of the attribute. @@ -5480,7 +6300,6 @@ func (s *LoadBalancerAttribute) SetValue(v string) *LoadBalancerAttribute { } // Information about the state of the load balancer. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/LoadBalancerState type LoadBalancerState struct { _ struct{} `type:"structure"` @@ -5516,7 +6335,6 @@ func (s *LoadBalancerState) SetReason(v string) *LoadBalancerState { } // Information to use when checking for a successful response from a target. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/Matcher type Matcher struct { _ struct{} `type:"structure"` @@ -5561,16 +6379,25 @@ func (s *Matcher) SetHttpCode(v string) *Matcher { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyListenerInput type ModifyListenerInput struct { _ struct{} `type:"structure"` - // The SSL server certificate. + // [HTTPS listeners] The default SSL server certificate. You must provide exactly + // one certificate. To create a certificate list, use AddListenerCertificates. Certificates []*Certificate `type:"list"` - // The default action. For Application Load Balancers, the protocol of the specified - // target group must be HTTP or HTTPS. For Network Load Balancers, the protocol - // of the specified target group must be TCP. + // The actions for the default rule. The rule must include one forward action. + // + // If the action type is forward, you can specify a single target group. The + // protocol of the target group must be HTTP or HTTPS for an Application Load + // Balancer or TCP for a Network Load Balancer. + // + // If the action type is authenticate-oidc, you can use an identity provider + // that is OpenID Connect (OIDC) compliant to authenticate users as they access + // your application. + // + // If the action type is authenticate-cognito, you can use Amazon Cognito to + // authenticate users as they access your application. DefaultActions []*Action `type:"list"` // The Amazon Resource Name (ARN) of the listener. @@ -5586,8 +6413,8 @@ type ModifyListenerInput struct { // TCP. Protocol *string `type:"string" enum:"ProtocolEnum"` - // The security policy that defines which protocols and ciphers are supported. - // For more information, see Security Policies (http://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html#describe-ssl-policies) + // [HTTPS listeners] The security policy that defines which protocols and ciphers + // are supported. For more information, see Security Policies (http://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html#describe-ssl-policies) // in the Application Load Balancers Guide. SslPolicy *string `type:"string"` } @@ -5664,11 +6491,10 @@ func (s *ModifyListenerInput) SetSslPolicy(v string) *ModifyListenerInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyListenerOutput type ModifyListenerOutput struct { _ struct{} `type:"structure"` - // Information about the modified listeners. + // Information about the modified listener. Listeners []*Listener `type:"list"` } @@ -5688,7 +6514,6 @@ func (s *ModifyListenerOutput) SetListeners(v []*Listener) *ModifyListenerOutput return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyLoadBalancerAttributesInput type ModifyLoadBalancerAttributesInput struct { _ struct{} `type:"structure"` @@ -5741,7 +6566,6 @@ func (s *ModifyLoadBalancerAttributesInput) SetLoadBalancerArn(v string) *Modify return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyLoadBalancerAttributesOutput type ModifyLoadBalancerAttributesOutput struct { _ struct{} `type:"structure"` @@ -5765,14 +6589,50 @@ func (s *ModifyLoadBalancerAttributesOutput) SetAttributes(v []*LoadBalancerAttr return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyRuleInput type ModifyRuleInput struct { _ struct{} `type:"structure"` - // The actions. The target group must use the HTTP or HTTPS protocol. + // The actions. + // + // If the action type is forward, you can specify a single target group. + // + // If the action type is authenticate-oidc, you can use an identity provider + // that is OpenID Connect (OIDC) compliant to authenticate users as they access + // your application. + // + // If the action type is authenticate-cognito, you can use Amazon Cognito to + // authenticate users as they access your application. Actions []*Action `type:"list"` - // The conditions. + // The conditions. Each condition specifies a field name and a single value. + // + // If the field name is host-header, you can specify a single host name (for + // example, my.example.com). A host name is case insensitive, can be up to 128 + // characters in length, and can contain any of the following characters. Note + // that you can include up to three wildcard characters. + // + // * A-Z, a-z, 0-9 + // + // * - . + // + // * * (matches 0 or more characters) + // + // * ? (matches exactly 1 character) + // + // If the field name is path-pattern, you can specify a single path pattern. + // A path pattern is case sensitive, can be up to 128 characters in length, + // and can contain any of the following characters. Note that you can include + // up to three wildcard characters. + // + // * A-Z, a-z, 0-9 + // + // * _ - . $ / ~ " ' @ : + + // + // * & (using &) + // + // * * (matches 0 or more characters) + // + // * ? (matches exactly 1 character) Conditions []*RuleCondition `type:"list"` // The Amazon Resource Name (ARN) of the rule. @@ -5832,11 +6692,10 @@ func (s *ModifyRuleInput) SetRuleArn(v string) *ModifyRuleInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyRuleOutput type ModifyRuleOutput struct { _ struct{} `type:"structure"` - // Information about the rule. + // Information about the modified rule. Rules []*Rule `type:"list"` } @@ -5856,7 +6715,6 @@ func (s *ModifyRuleOutput) SetRules(v []*Rule) *ModifyRuleOutput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyTargetGroupAttributesInput type ModifyTargetGroupAttributesInput struct { _ struct{} `type:"structure"` @@ -5909,7 +6767,6 @@ func (s *ModifyTargetGroupAttributesInput) SetTargetGroupArn(v string) *ModifyTa return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyTargetGroupAttributesOutput type ModifyTargetGroupAttributesOutput struct { _ struct{} `type:"structure"` @@ -5933,7 +6790,6 @@ func (s *ModifyTargetGroupAttributesOutput) SetAttributes(v []*TargetGroupAttrib return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyTargetGroupInput type ModifyTargetGroupInput struct { _ struct{} `type:"structure"` @@ -6074,11 +6930,10 @@ func (s *ModifyTargetGroupInput) SetUnhealthyThresholdCount(v int64) *ModifyTarg return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyTargetGroupOutput type ModifyTargetGroupOutput struct { _ struct{} `type:"structure"` - // Information about the target group. + // Information about the modified target group. TargetGroups []*TargetGroup `type:"list"` } @@ -6098,7 +6953,6 @@ func (s *ModifyTargetGroupOutput) SetTargetGroups(v []*TargetGroup) *ModifyTarge return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/RegisterTargetsInput type RegisterTargetsInput struct { _ struct{} `type:"structure"` @@ -6107,9 +6961,7 @@ type RegisterTargetsInput struct { // TargetGroupArn is a required field TargetGroupArn *string `type:"string" required:"true"` - // The targets. The default port for a target is the port for the target group. - // You can specify a port override. If a target is already registered, you can - // register it again using a different port. + // The targets. // // Targets is a required field Targets []*TargetDescription `type:"list" required:"true"` @@ -6163,7 +7015,6 @@ func (s *RegisterTargetsInput) SetTargets(v []*TargetDescription) *RegisterTarge return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/RegisterTargetsOutput type RegisterTargetsOutput struct { _ struct{} `type:"structure"` } @@ -6178,7 +7029,72 @@ func (s RegisterTargetsOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/RemoveTagsInput +type RemoveListenerCertificatesInput struct { + _ struct{} `type:"structure"` + + // The certificate to remove. You can specify one certificate per call. + // + // Certificates is a required field + Certificates []*Certificate `type:"list" required:"true"` + + // The Amazon Resource Name (ARN) of the listener. + // + // ListenerArn is a required field + ListenerArn *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s RemoveListenerCertificatesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RemoveListenerCertificatesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *RemoveListenerCertificatesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "RemoveListenerCertificatesInput"} + if s.Certificates == nil { + invalidParams.Add(request.NewErrParamRequired("Certificates")) + } + if s.ListenerArn == nil { + invalidParams.Add(request.NewErrParamRequired("ListenerArn")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetCertificates sets the Certificates field's value. +func (s *RemoveListenerCertificatesInput) SetCertificates(v []*Certificate) *RemoveListenerCertificatesInput { + s.Certificates = v + return s +} + +// SetListenerArn sets the ListenerArn field's value. +func (s *RemoveListenerCertificatesInput) SetListenerArn(v string) *RemoveListenerCertificatesInput { + s.ListenerArn = &v + return s +} + +type RemoveListenerCertificatesOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s RemoveListenerCertificatesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RemoveListenerCertificatesOutput) GoString() string { + return s.String() +} + type RemoveTagsInput struct { _ struct{} `type:"structure"` @@ -6231,7 +7147,6 @@ func (s *RemoveTagsInput) SetTagKeys(v []*string) *RemoveTagsInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/RemoveTagsOutput type RemoveTagsOutput struct { _ struct{} `type:"structure"` } @@ -6247,7 +7162,6 @@ func (s RemoveTagsOutput) GoString() string { } // Information about a rule. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/Rule type Rule struct { _ struct{} `type:"structure"` @@ -6308,7 +7222,6 @@ func (s *Rule) SetRuleArn(v string) *Rule { } // Information about a condition for a rule. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/RuleCondition type RuleCondition struct { _ struct{} `type:"structure"` @@ -6370,7 +7283,6 @@ func (s *RuleCondition) SetValues(v []*string) *RuleCondition { } // Information about the priorities for the rules for a listener. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/RulePriorityPair type RulePriorityPair struct { _ struct{} `type:"structure"` @@ -6416,7 +7328,6 @@ func (s *RulePriorityPair) SetRuleArn(v string) *RulePriorityPair { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetIpAddressTypeInput type SetIpAddressTypeInput struct { _ struct{} `type:"structure"` @@ -6471,7 +7382,6 @@ func (s *SetIpAddressTypeInput) SetLoadBalancerArn(v string) *SetIpAddressTypeIn return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetIpAddressTypeOutput type SetIpAddressTypeOutput struct { _ struct{} `type:"structure"` @@ -6495,7 +7405,6 @@ func (s *SetIpAddressTypeOutput) SetIpAddressType(v string) *SetIpAddressTypeOut return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetRulePrioritiesInput type SetRulePrioritiesInput struct { _ struct{} `type:"structure"` @@ -6544,7 +7453,6 @@ func (s *SetRulePrioritiesInput) SetRulePriorities(v []*RulePriorityPair) *SetRu return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetRulePrioritiesOutput type SetRulePrioritiesOutput struct { _ struct{} `type:"structure"` @@ -6568,7 +7476,6 @@ func (s *SetRulePrioritiesOutput) SetRules(v []*Rule) *SetRulePrioritiesOutput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetSecurityGroupsInput type SetSecurityGroupsInput struct { _ struct{} `type:"structure"` @@ -6621,7 +7528,6 @@ func (s *SetSecurityGroupsInput) SetSecurityGroups(v []*string) *SetSecurityGrou return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetSecurityGroupsOutput type SetSecurityGroupsOutput struct { _ struct{} `type:"structure"` @@ -6645,7 +7551,6 @@ func (s *SetSecurityGroupsOutput) SetSecurityGroupIds(v []*string) *SetSecurityG return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetSubnetsInput type SetSubnetsInput struct { _ struct{} `type:"structure"` @@ -6654,20 +7559,17 @@ type SetSubnetsInput struct { // LoadBalancerArn is a required field LoadBalancerArn *string `type:"string" required:"true"` - // The IDs of the subnets. You must specify subnets from at least two Availability - // Zones. You can specify only one subnet per Availability Zone. You must specify - // either subnets or subnet mappings. + // The IDs of the public subnets. You must specify subnets from at least two + // Availability Zones. You can specify only one subnet per Availability Zone. + // You must specify either subnets or subnet mappings. // - // The load balancer is allocated one static IP address per subnet. You cannot - // specify your own Elastic IP addresses. + // You cannot specify Elastic IP addresses for your subnets. SubnetMappings []*SubnetMapping `type:"list"` - // The IDs of the subnets. You must specify subnets from at least two Availability - // Zones. You can specify only one subnet per Availability Zone. You must specify - // either subnets or subnet mappings. - // - // Subnets is a required field - Subnets []*string `type:"list" required:"true"` + // The IDs of the public subnets. You must specify subnets from at least two + // Availability Zones. You can specify only one subnet per Availability Zone. + // You must specify either subnets or subnet mappings. + Subnets []*string `type:"list"` } // String returns the string representation @@ -6686,9 +7588,6 @@ func (s *SetSubnetsInput) Validate() error { if s.LoadBalancerArn == nil { invalidParams.Add(request.NewErrParamRequired("LoadBalancerArn")) } - if s.Subnets == nil { - invalidParams.Add(request.NewErrParamRequired("Subnets")) - } if invalidParams.Len() > 0 { return invalidParams @@ -6714,7 +7613,6 @@ func (s *SetSubnetsInput) SetSubnets(v []*string) *SetSubnetsInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetSubnetsOutput type SetSubnetsOutput struct { _ struct{} `type:"structure"` @@ -6739,7 +7637,6 @@ func (s *SetSubnetsOutput) SetAvailabilityZones(v []*AvailabilityZone) *SetSubne } // Information about a policy used for SSL negotiation. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SslPolicy type SslPolicy struct { _ struct{} `type:"structure"` @@ -6782,7 +7679,6 @@ func (s *SslPolicy) SetSslProtocols(v []*string) *SslPolicy { } // Information about a subnet mapping. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SubnetMapping type SubnetMapping struct { _ struct{} `type:"structure"` @@ -6816,7 +7712,6 @@ func (s *SubnetMapping) SetSubnetId(v string) *SubnetMapping { } // Information about a tag. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/Tag type Tag struct { _ struct{} `type:"structure"` @@ -6868,7 +7763,6 @@ func (s *Tag) SetValue(v string) *Tag { } // The tags associated with a resource. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/TagDescription type TagDescription struct { _ struct{} `type:"structure"` @@ -6902,19 +7796,20 @@ func (s *TagDescription) SetTags(v []*Tag) *TagDescription { } // Information about a target. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/TargetDescription type TargetDescription struct { _ struct{} `type:"structure"` - // The Availability Zone where the IP address is to be registered. Specify all - // to register an IP address outside the target group VPC with all Availability - // Zones that are enabled for the load balancer. - // - // If the IP address is in a subnet of the VPC for the target group, the Availability - // Zone is automatically detected and this parameter is optional. + // An Availability Zone or all. This determines whether the target receives + // traffic from the load balancer nodes in the specified Availability Zone or + // from all enabled Availability Zones for the load balancer. // // This parameter is not supported if the target type of the target group is - // instance. + // instance. If the IP address is in a subnet of the VPC for the target group, + // the Availability Zone is automatically detected and this parameter is optional. + // If the IP address is outside the VPC, this parameter is required. + // + // With an Application Load Balancer, if the IP address is outside the VPC for + // the target group, the only supported value is all. AvailabilityZone *string `type:"string"` // The ID of the target. If the target type of the target group is instance, @@ -6972,7 +7867,6 @@ func (s *TargetDescription) SetPort(v int64) *TargetDescription { } // Information about a target group. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/TargetGroup type TargetGroup struct { _ struct{} `type:"structure"` @@ -7130,28 +8024,43 @@ func (s *TargetGroup) SetVpcId(v string) *TargetGroup { } // Information about a target group attribute. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/TargetGroupAttribute type TargetGroupAttribute struct { _ struct{} `type:"structure"` // The name of the attribute. // - // * deregistration_delay.timeout_seconds - The amount time for Elastic Load - // Balancing to wait before changing the state of a deregistering target - // from draining to unused. The range is 0-3600 seconds. The default value - // is 300 seconds. + // The following attributes are supported by both Application Load Balancers + // and Network Load Balancers: // - // * stickiness.enabled - [Application Load Balancers] Indicates whether - // sticky sessions are enabled. The value is true or false. + // * deregistration_delay.timeout_seconds - The amount of time, in seconds, + // for Elastic Load Balancing to wait before changing the state of a deregistering + // target from draining to unused. The range is 0-3600 seconds. The default + // value is 300 seconds. // - // * stickiness.type - [Application Load Balancers] The type of sticky sessions. - // The possible value is lb_cookie. + // The following attributes are supported by only Application Load Balancers: // - // * stickiness.lb_cookie.duration_seconds - [Application Load Balancers] - // The time period, in seconds, during which requests from a client should - // be routed to the same target. After this time period expires, the load - // balancer-generated cookie is considered stale. The range is 1 second to - // 1 week (604800 seconds). The default value is 1 day (86400 seconds). + // * slow_start.duration_seconds - The time period, in seconds, during which + // a newly registered target receives a linearly increasing share of the + // traffic to the target group. After this time period ends, the target receives + // its full share of traffic. The range is 30-900 seconds (15 minutes). Slow + // start mode is disabled by default. + // + // * stickiness.enabled - Indicates whether sticky sessions are enabled. + // The value is true or false. The default is false. + // + // * stickiness.type - The type of sticky sessions. The possible value is + // lb_cookie. + // + // * stickiness.lb_cookie.duration_seconds - The time period, in seconds, + // during which requests from a client should be routed to the same target. + // After this time period expires, the load balancer-generated cookie is + // considered stale. The range is 1 second to 1 week (604800 seconds). The + // default value is 1 day (86400 seconds). + // + // The following attributes are supported by only Network Load Balancers: + // + // * proxy_protocol_v2.enabled - Indicates whether Proxy Protocol version + // 2 is enabled. The value is true or false. The default is false. Key *string `type:"string"` // The value of the attribute. @@ -7181,7 +8090,6 @@ func (s *TargetGroupAttribute) SetValue(v string) *TargetGroupAttribute { } // Information about the current health of a target. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/TargetHealth type TargetHealth struct { _ struct{} `type:"structure"` @@ -7268,7 +8176,6 @@ func (s *TargetHealth) SetState(v string) *TargetHealth { } // Information about the health of a target. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/TargetHealthDescription type TargetHealthDescription struct { _ struct{} `type:"structure"` @@ -7313,6 +8220,34 @@ func (s *TargetHealthDescription) SetTargetHealth(v *TargetHealth) *TargetHealth const ( // ActionTypeEnumForward is a ActionTypeEnum enum value ActionTypeEnumForward = "forward" + + // ActionTypeEnumAuthenticateOidc is a ActionTypeEnum enum value + ActionTypeEnumAuthenticateOidc = "authenticate-oidc" + + // ActionTypeEnumAuthenticateCognito is a ActionTypeEnum enum value + ActionTypeEnumAuthenticateCognito = "authenticate-cognito" +) + +const ( + // AuthenticateCognitoActionConditionalBehaviorEnumDeny is a AuthenticateCognitoActionConditionalBehaviorEnum enum value + AuthenticateCognitoActionConditionalBehaviorEnumDeny = "deny" + + // AuthenticateCognitoActionConditionalBehaviorEnumAllow is a AuthenticateCognitoActionConditionalBehaviorEnum enum value + AuthenticateCognitoActionConditionalBehaviorEnumAllow = "allow" + + // AuthenticateCognitoActionConditionalBehaviorEnumAuthenticate is a AuthenticateCognitoActionConditionalBehaviorEnum enum value + AuthenticateCognitoActionConditionalBehaviorEnumAuthenticate = "authenticate" +) + +const ( + // AuthenticateOidcActionConditionalBehaviorEnumDeny is a AuthenticateOidcActionConditionalBehaviorEnum enum value + AuthenticateOidcActionConditionalBehaviorEnumDeny = "deny" + + // AuthenticateOidcActionConditionalBehaviorEnumAllow is a AuthenticateOidcActionConditionalBehaviorEnum enum value + AuthenticateOidcActionConditionalBehaviorEnumAllow = "allow" + + // AuthenticateOidcActionConditionalBehaviorEnumAuthenticate is a AuthenticateOidcActionConditionalBehaviorEnum enum value + AuthenticateOidcActionConditionalBehaviorEnumAuthenticate = "authenticate" ) const ( diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/elbv2/doc.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/elbv2/doc.go index def1b39bf8..99a2ea81fc 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/elbv2/doc.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/elbv2/doc.go @@ -60,7 +60,7 @@ // // Using the Client // -// To Elastic Load Balancing with the SDK use the New function to create +// To contact Elastic Load Balancing with the SDK use the New function to create // a new service client. With that client you can make API requests to the service. // These clients are safe to use concurrently. // diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/elbv2/errors.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/elbv2/errors.go index df475d8157..b813ebeff7 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/elbv2/errors.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/elbv2/errors.go @@ -65,6 +65,12 @@ const ( // The requested configuration is not valid. ErrCodeInvalidConfigurationRequestException = "InvalidConfigurationRequest" + // ErrCodeInvalidLoadBalancerActionException for service response error code + // "InvalidLoadBalancerAction". + // + // The requested action is not valid. + ErrCodeInvalidLoadBalancerActionException = "InvalidLoadBalancerAction" + // ErrCodeInvalidSchemeException for service response error code // "InvalidScheme". // @@ -86,8 +92,8 @@ const ( // ErrCodeInvalidTargetException for service response error code // "InvalidTarget". // - // The specified target does not exist or is not in the same VPC as the target - // group. + // The specified target does not exist, is not in the same VPC as the target + // group, or has an unsupported instance type. ErrCodeInvalidTargetException = "InvalidTarget" // ErrCodeListenerNotFoundException for service response error code @@ -150,10 +156,16 @@ const ( // The specified target group does not exist. ErrCodeTargetGroupNotFoundException = "TargetGroupNotFound" + // ErrCodeTooManyActionsException for service response error code + // "TooManyActions". + // + // You've reached the limit on the number of actions per rule. + ErrCodeTooManyActionsException = "TooManyActions" + // ErrCodeTooManyCertificatesException for service response error code // "TooManyCertificates". // - // You've reached the limit on the number of certificates per listener. + // You've reached the limit on the number of certificates per load balancer. ErrCodeTooManyCertificatesException = "TooManyCertificates" // ErrCodeTooManyListenersException for service response error code diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/elbv2/service.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/elbv2/service.go index c3733846ca..ad97e8df88 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/elbv2/service.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/elbv2/service.go @@ -29,8 +29,9 @@ var initRequest func(*request.Request) // Service information constants const ( - ServiceName = "elasticloadbalancing" // Service endpoint prefix API calls made to. - EndpointsID = ServiceName // Service ID for Regions and Endpoints metadata. + ServiceName = "elasticloadbalancing" // Name of service. + EndpointsID = ServiceName // ID to lookup a service endpoint with. + ServiceID = "Elastic Load Balancing v2" // ServiceID is a unique identifer of a specific service. ) // New creates a new instance of the ELBV2 client with a session. @@ -55,6 +56,7 @@ func newClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegio cfg, metadata.ClientInfo{ ServiceName: ServiceName, + ServiceID: ServiceID, SigningName: signingName, SigningRegion: signingRegion, Endpoint: endpoint, diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/kms/api.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/kms/api.go index ac1c5fda8f..48efb9dd4b 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/kms/api.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/kms/api.go @@ -17,7 +17,7 @@ const opCancelKeyDeletion = "CancelKeyDeletion" // CancelKeyDeletionRequest generates a "aws/request.Request" representing the // client's request for the CancelKeyDeletion operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -38,7 +38,7 @@ const opCancelKeyDeletion = "CancelKeyDeletion" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/CancelKeyDeletion +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/CancelKeyDeletion func (c *KMS) CancelKeyDeletionRequest(input *CancelKeyDeletionInput) (req *request.Request, output *CancelKeyDeletionOutput) { op := &request.Operation{ Name: opCancelKeyDeletion, @@ -59,7 +59,8 @@ func (c *KMS) CancelKeyDeletionRequest(input *CancelKeyDeletionInput) (req *requ // // Cancels the deletion of a customer master key (CMK). When this operation // is successful, the CMK is set to the Disabled state. To enable a CMK, use -// EnableKey. +// EnableKey. You cannot perform this operation on a CMK in a different AWS +// account. // // For more information about scheduling and canceling deletion of a CMK, see // Deleting Customer Master Keys (http://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys.html) @@ -84,11 +85,11 @@ func (c *KMS) CancelKeyDeletionRequest(input *CancelKeyDeletionInput) (req *requ // The system timed out while trying to fulfill the request. The request can // be retried. // -// * ErrCodeInternalException "InternalException" +// * ErrCodeInternalException "KMSInternalException" // The request was rejected because an internal exception occurred. The request // can be retried. // -// * ErrCodeInvalidStateException "InvalidStateException" +// * ErrCodeInvalidStateException "KMSInvalidStateException" // The request was rejected because the state of the specified resource is not // valid for this request. // @@ -96,7 +97,7 @@ func (c *KMS) CancelKeyDeletionRequest(input *CancelKeyDeletionInput) (req *requ // Key State Affects Use of a Customer Master Key (http://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/CancelKeyDeletion +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/CancelKeyDeletion func (c *KMS) CancelKeyDeletion(input *CancelKeyDeletionInput) (*CancelKeyDeletionOutput, error) { req, out := c.CancelKeyDeletionRequest(input) return out, req.Send() @@ -122,7 +123,7 @@ const opCreateAlias = "CreateAlias" // CreateAliasRequest generates a "aws/request.Request" representing the // client's request for the CreateAlias operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -143,7 +144,7 @@ const opCreateAlias = "CreateAlias" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/CreateAlias +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/CreateAlias func (c *KMS) CreateAliasRequest(input *CreateAliasInput) (req *request.Request, output *CreateAliasOutput) { op := &request.Operation{ Name: opCreateAlias, @@ -164,18 +165,29 @@ func (c *KMS) CreateAliasRequest(input *CreateAliasInput) (req *request.Request, // CreateAlias API operation for AWS Key Management Service. // -// Creates a display name for a customer master key. An alias can be used to -// identify a key and should be unique. The console enforces a one-to-one mapping -// between the alias and a key. An alias name can contain only alphanumeric -// characters, forward slashes (/), underscores (_), and dashes (-). An alias -// must start with the word "alias" followed by a forward slash (alias/). An -// alias that begins with "aws" after the forward slash (alias/aws...) is reserved -// by Amazon Web Services (AWS). +// Creates a display name for a customer master key (CMK). You can use an alias +// to identify a CMK in selected operations, such as Encrypt and GenerateDataKey. // -// The alias and the key it is mapped to must be in the same AWS account and -// the same region. +// Each CMK can have multiple aliases, but each alias points to only one CMK. +// The alias name must be unique in the AWS account and region. To simplify +// code that runs in multiple regions, use the same alias name, but point it +// to a different CMK in each region. // -// To map an alias to a different key, call UpdateAlias. +// Because an alias is not a property of a CMK, you can delete and change the +// aliases of a CMK without affecting the CMK. Also, aliases do not appear in +// the response from the DescribeKey operation. To get the aliases of all CMKs, +// use the ListAliases operation. +// +// An alias must start with the word alias followed by a forward slash (alias/). +// The alias name can contain only alphanumeric characters, forward slashes +// (/), underscores (_), and dashes (-). Alias names cannot begin with aws; +// that alias name prefix is reserved by Amazon Web Services (AWS). +// +// The alias and the CMK it is mapped to must be in the same AWS account and +// the same region. You cannot perform this operation on an alias in a different +// AWS account. +// +// To map an existing alias to a different CMK, call UpdateAlias. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -200,7 +212,7 @@ func (c *KMS) CreateAliasRequest(input *CreateAliasInput) (req *request.Request, // * ErrCodeInvalidAliasNameException "InvalidAliasNameException" // The request was rejected because the specified alias name is not valid. // -// * ErrCodeInternalException "InternalException" +// * ErrCodeInternalException "KMSInternalException" // The request was rejected because an internal exception occurred. The request // can be retried. // @@ -209,7 +221,7 @@ func (c *KMS) CreateAliasRequest(input *CreateAliasInput) (req *request.Request, // see Limits (http://docs.aws.amazon.com/kms/latest/developerguide/limits.html) // in the AWS Key Management Service Developer Guide. // -// * ErrCodeInvalidStateException "InvalidStateException" +// * ErrCodeInvalidStateException "KMSInvalidStateException" // The request was rejected because the state of the specified resource is not // valid for this request. // @@ -217,7 +229,7 @@ func (c *KMS) CreateAliasRequest(input *CreateAliasInput) (req *request.Request, // Key State Affects Use of a Customer Master Key (http://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/CreateAlias +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/CreateAlias func (c *KMS) CreateAlias(input *CreateAliasInput) (*CreateAliasOutput, error) { req, out := c.CreateAliasRequest(input) return out, req.Send() @@ -243,7 +255,7 @@ const opCreateGrant = "CreateGrant" // CreateGrantRequest generates a "aws/request.Request" representing the // client's request for the CreateGrant operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -264,7 +276,7 @@ const opCreateGrant = "CreateGrant" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/CreateGrant +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/CreateGrant func (c *KMS) CreateGrantRequest(input *CreateGrantInput) (req *request.Request, output *CreateGrantOutput) { op := &request.Operation{ Name: opCreateGrant, @@ -283,10 +295,13 @@ func (c *KMS) CreateGrantRequest(input *CreateGrantInput) (req *request.Request, // CreateGrant API operation for AWS Key Management Service. // -// Adds a grant to a key to specify who can use the key and under what conditions. -// Grants are alternate permission mechanisms to key policies. +// Adds a grant to a customer master key (CMK). The grant specifies who can +// use the CMK and under what conditions. When setting permissions, grants are +// an alternative to key policies. // -// For more information about grants, see Grants (http://docs.aws.amazon.com/kms/latest/developerguide/grants.html) +// To perform this operation on a CMK in a different AWS account, specify the +// key ARN in the value of the KeyId parameter. For more information about grants, +// see Grants (http://docs.aws.amazon.com/kms/latest/developerguide/grants.html) // in the AWS Key Management Service Developer Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -311,7 +326,7 @@ func (c *KMS) CreateGrantRequest(input *CreateGrantInput) (req *request.Request, // * ErrCodeInvalidArnException "InvalidArnException" // The request was rejected because a specified ARN was not valid. // -// * ErrCodeInternalException "InternalException" +// * ErrCodeInternalException "KMSInternalException" // The request was rejected because an internal exception occurred. The request // can be retried. // @@ -323,7 +338,7 @@ func (c *KMS) CreateGrantRequest(input *CreateGrantInput) (req *request.Request, // see Limits (http://docs.aws.amazon.com/kms/latest/developerguide/limits.html) // in the AWS Key Management Service Developer Guide. // -// * ErrCodeInvalidStateException "InvalidStateException" +// * ErrCodeInvalidStateException "KMSInvalidStateException" // The request was rejected because the state of the specified resource is not // valid for this request. // @@ -331,7 +346,7 @@ func (c *KMS) CreateGrantRequest(input *CreateGrantInput) (req *request.Request, // Key State Affects Use of a Customer Master Key (http://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/CreateGrant +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/CreateGrant func (c *KMS) CreateGrant(input *CreateGrantInput) (*CreateGrantOutput, error) { req, out := c.CreateGrantRequest(input) return out, req.Send() @@ -357,7 +372,7 @@ const opCreateKey = "CreateKey" // CreateKeyRequest generates a "aws/request.Request" representing the // client's request for the CreateKey operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -378,7 +393,7 @@ const opCreateKey = "CreateKey" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/CreateKey +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/CreateKey func (c *KMS) CreateKeyRequest(input *CreateKeyInput) (req *request.Request, output *CreateKeyOutput) { op := &request.Operation{ Name: opCreateKey, @@ -397,7 +412,7 @@ func (c *KMS) CreateKeyRequest(input *CreateKeyInput) (req *request.Request, out // CreateKey API operation for AWS Key Management Service. // -// Creates a customer master key (CMK). +// Creates a customer master key (CMK) in the caller's AWS account. // // You can use a CMK to encrypt small amounts of data (4 KiB or less) directly, // but CMKs are more commonly used to encrypt data encryption keys (DEKs), which @@ -409,6 +424,8 @@ func (c *KMS) CreateKeyRequest(input *CreateKeyInput) (req *request.Request, out // * AWS Key Management Service Concepts (http://docs.aws.amazon.com/kms/latest/developerguide/concepts.html) // in the AWS Key Management Service Developer Guide // +// You cannot use this operation to create a CMK in a different AWS account. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -432,7 +449,7 @@ func (c *KMS) CreateKeyRequest(input *CreateKeyInput) (req *request.Request, out // The request was rejected because a specified parameter is not supported or // a specified resource is not valid for this operation. // -// * ErrCodeInternalException "InternalException" +// * ErrCodeInternalException "KMSInternalException" // The request was rejected because an internal exception occurred. The request // can be retried. // @@ -444,7 +461,7 @@ func (c *KMS) CreateKeyRequest(input *CreateKeyInput) (req *request.Request, out // * ErrCodeTagException "TagException" // The request was rejected because one or more tags are not valid. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/CreateKey +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/CreateKey func (c *KMS) CreateKey(input *CreateKeyInput) (*CreateKeyOutput, error) { req, out := c.CreateKeyRequest(input) return out, req.Send() @@ -470,7 +487,7 @@ const opDecrypt = "Decrypt" // DecryptRequest generates a "aws/request.Request" representing the // client's request for the Decrypt operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -491,7 +508,7 @@ const opDecrypt = "Decrypt" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/Decrypt +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/Decrypt func (c *KMS) DecryptRequest(input *DecryptInput) (req *request.Request, output *DecryptOutput) { op := &request.Operation{ Name: opDecrypt, @@ -511,7 +528,7 @@ func (c *KMS) DecryptRequest(input *DecryptInput) (req *request.Request, output // Decrypt API operation for AWS Key Management Service. // // Decrypts ciphertext. Ciphertext is plaintext that has been previously encrypted -// by using any of the following functions: +// by using any of the following operations: // // * GenerateDataKey // @@ -544,8 +561,9 @@ func (c *KMS) DecryptRequest(input *DecryptInput) (req *request.Request, output // The request was rejected because the specified CMK is not enabled. // // * ErrCodeInvalidCiphertextException "InvalidCiphertextException" -// The request was rejected because the specified ciphertext has been corrupted -// or is otherwise invalid. +// The request was rejected because the specified ciphertext, or additional +// authenticated data incorporated into the ciphertext, such as the encryption +// context, is corrupted, missing, or otherwise invalid. // // * ErrCodeKeyUnavailableException "KeyUnavailableException" // The request was rejected because the specified CMK was not available. The @@ -558,11 +576,11 @@ func (c *KMS) DecryptRequest(input *DecryptInput) (req *request.Request, output // * ErrCodeInvalidGrantTokenException "InvalidGrantTokenException" // The request was rejected because the specified grant token is not valid. // -// * ErrCodeInternalException "InternalException" +// * ErrCodeInternalException "KMSInternalException" // The request was rejected because an internal exception occurred. The request // can be retried. // -// * ErrCodeInvalidStateException "InvalidStateException" +// * ErrCodeInvalidStateException "KMSInvalidStateException" // The request was rejected because the state of the specified resource is not // valid for this request. // @@ -570,7 +588,7 @@ func (c *KMS) DecryptRequest(input *DecryptInput) (req *request.Request, output // Key State Affects Use of a Customer Master Key (http://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/Decrypt +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/Decrypt func (c *KMS) Decrypt(input *DecryptInput) (*DecryptOutput, error) { req, out := c.DecryptRequest(input) return out, req.Send() @@ -596,7 +614,7 @@ const opDeleteAlias = "DeleteAlias" // DeleteAliasRequest generates a "aws/request.Request" representing the // client's request for the DeleteAlias operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -617,7 +635,7 @@ const opDeleteAlias = "DeleteAlias" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DeleteAlias +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DeleteAlias func (c *KMS) DeleteAliasRequest(input *DeleteAliasInput) (req *request.Request, output *DeleteAliasOutput) { op := &request.Operation{ Name: opDeleteAlias, @@ -638,7 +656,17 @@ func (c *KMS) DeleteAliasRequest(input *DeleteAliasInput) (req *request.Request, // DeleteAlias API operation for AWS Key Management Service. // -// Deletes the specified alias. To map an alias to a different key, call UpdateAlias. +// Deletes the specified alias. You cannot perform this operation on an alias +// in a different AWS account. +// +// Because an alias is not a property of a CMK, you can delete and change the +// aliases of a CMK without affecting the CMK. Also, aliases do not appear in +// the response from the DescribeKey operation. To get the aliases of all CMKs, +// use the ListAliases operation. +// +// Each CMK can have multiple aliases. To change the alias of a CMK, use DeleteAlias +// to delete the current alias and CreateAlias to create a new alias. To associate +// an existing alias with a different customer master key (CMK), call UpdateAlias. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -656,11 +684,11 @@ func (c *KMS) DeleteAliasRequest(input *DeleteAliasInput) (req *request.Request, // The request was rejected because the specified entity or resource could not // be found. // -// * ErrCodeInternalException "InternalException" +// * ErrCodeInternalException "KMSInternalException" // The request was rejected because an internal exception occurred. The request // can be retried. // -// * ErrCodeInvalidStateException "InvalidStateException" +// * ErrCodeInvalidStateException "KMSInvalidStateException" // The request was rejected because the state of the specified resource is not // valid for this request. // @@ -668,7 +696,7 @@ func (c *KMS) DeleteAliasRequest(input *DeleteAliasInput) (req *request.Request, // Key State Affects Use of a Customer Master Key (http://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DeleteAlias +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DeleteAlias func (c *KMS) DeleteAlias(input *DeleteAliasInput) (*DeleteAliasOutput, error) { req, out := c.DeleteAliasRequest(input) return out, req.Send() @@ -694,7 +722,7 @@ const opDeleteImportedKeyMaterial = "DeleteImportedKeyMaterial" // DeleteImportedKeyMaterialRequest generates a "aws/request.Request" representing the // client's request for the DeleteImportedKeyMaterial operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -715,7 +743,7 @@ const opDeleteImportedKeyMaterial = "DeleteImportedKeyMaterial" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DeleteImportedKeyMaterial +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DeleteImportedKeyMaterial func (c *KMS) DeleteImportedKeyMaterialRequest(input *DeleteImportedKeyMaterialInput) (req *request.Request, output *DeleteImportedKeyMaterialOutput) { op := &request.Operation{ Name: opDeleteImportedKeyMaterial, @@ -736,10 +764,11 @@ func (c *KMS) DeleteImportedKeyMaterialRequest(input *DeleteImportedKeyMaterialI // DeleteImportedKeyMaterial API operation for AWS Key Management Service. // -// Deletes key material that you previously imported and makes the specified -// customer master key (CMK) unusable. For more information about importing -// key material into AWS KMS, see Importing Key Material (http://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html) -// in the AWS Key Management Service Developer Guide. +// Deletes key material that you previously imported. This operation makes the +// specified customer master key (CMK) unusable. For more information about +// importing key material into AWS KMS, see Importing Key Material (http://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html) +// in the AWS Key Management Service Developer Guide. You cannot perform this +// operation on a CMK in a different AWS account. // // When the specified CMK is in the PendingDeletion state, this operation does // not change the CMK's state. Otherwise, it changes the CMK's state to PendingImport. @@ -770,11 +799,11 @@ func (c *KMS) DeleteImportedKeyMaterialRequest(input *DeleteImportedKeyMaterialI // The request was rejected because the specified entity or resource could not // be found. // -// * ErrCodeInternalException "InternalException" +// * ErrCodeInternalException "KMSInternalException" // The request was rejected because an internal exception occurred. The request // can be retried. // -// * ErrCodeInvalidStateException "InvalidStateException" +// * ErrCodeInvalidStateException "KMSInvalidStateException" // The request was rejected because the state of the specified resource is not // valid for this request. // @@ -782,7 +811,7 @@ func (c *KMS) DeleteImportedKeyMaterialRequest(input *DeleteImportedKeyMaterialI // Key State Affects Use of a Customer Master Key (http://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DeleteImportedKeyMaterial +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DeleteImportedKeyMaterial func (c *KMS) DeleteImportedKeyMaterial(input *DeleteImportedKeyMaterialInput) (*DeleteImportedKeyMaterialOutput, error) { req, out := c.DeleteImportedKeyMaterialRequest(input) return out, req.Send() @@ -808,7 +837,7 @@ const opDescribeKey = "DescribeKey" // DescribeKeyRequest generates a "aws/request.Request" representing the // client's request for the DescribeKey operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -829,7 +858,7 @@ const opDescribeKey = "DescribeKey" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DescribeKey +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DescribeKey func (c *KMS) DescribeKeyRequest(input *DescribeKeyInput) (req *request.Request, output *DescribeKeyOutput) { op := &request.Operation{ Name: opDescribeKey, @@ -848,7 +877,10 @@ func (c *KMS) DescribeKeyRequest(input *DescribeKeyInput) (req *request.Request, // DescribeKey API operation for AWS Key Management Service. // -// Provides detailed information about the specified customer master key. +// Provides detailed information about the specified customer master key (CMK). +// +// To perform this operation on a CMK in a different AWS account, specify the +// key ARN or alias ARN in the value of the KeyId parameter. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -869,11 +901,11 @@ func (c *KMS) DescribeKeyRequest(input *DescribeKeyInput) (req *request.Request, // The system timed out while trying to fulfill the request. The request can // be retried. // -// * ErrCodeInternalException "InternalException" +// * ErrCodeInternalException "KMSInternalException" // The request was rejected because an internal exception occurred. The request // can be retried. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DescribeKey +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DescribeKey func (c *KMS) DescribeKey(input *DescribeKeyInput) (*DescribeKeyOutput, error) { req, out := c.DescribeKeyRequest(input) return out, req.Send() @@ -899,7 +931,7 @@ const opDisableKey = "DisableKey" // DisableKeyRequest generates a "aws/request.Request" representing the // client's request for the DisableKey operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -920,7 +952,7 @@ const opDisableKey = "DisableKey" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DisableKey +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DisableKey func (c *KMS) DisableKeyRequest(input *DisableKeyInput) (req *request.Request, output *DisableKeyOutput) { op := &request.Operation{ Name: opDisableKey, @@ -942,9 +974,11 @@ func (c *KMS) DisableKeyRequest(input *DisableKeyInput) (req *request.Request, o // DisableKey API operation for AWS Key Management Service. // // Sets the state of a customer master key (CMK) to disabled, thereby preventing -// its use for cryptographic operations. For more information about how key -// state affects the use of a CMK, see How Key State Affects the Use of a Customer -// Master Key (http://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) +// its use for cryptographic operations. You cannot perform this operation on +// a CMK in a different AWS account. +// +// For more information about how key state affects the use of a CMK, see How +// Key State Affects the Use of a Customer Master Key (http://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -966,11 +1000,11 @@ func (c *KMS) DisableKeyRequest(input *DisableKeyInput) (req *request.Request, o // The system timed out while trying to fulfill the request. The request can // be retried. // -// * ErrCodeInternalException "InternalException" +// * ErrCodeInternalException "KMSInternalException" // The request was rejected because an internal exception occurred. The request // can be retried. // -// * ErrCodeInvalidStateException "InvalidStateException" +// * ErrCodeInvalidStateException "KMSInvalidStateException" // The request was rejected because the state of the specified resource is not // valid for this request. // @@ -978,7 +1012,7 @@ func (c *KMS) DisableKeyRequest(input *DisableKeyInput) (req *request.Request, o // Key State Affects Use of a Customer Master Key (http://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DisableKey +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DisableKey func (c *KMS) DisableKey(input *DisableKeyInput) (*DisableKeyOutput, error) { req, out := c.DisableKeyRequest(input) return out, req.Send() @@ -1004,7 +1038,7 @@ const opDisableKeyRotation = "DisableKeyRotation" // DisableKeyRotationRequest generates a "aws/request.Request" representing the // client's request for the DisableKeyRotation operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1025,7 +1059,7 @@ const opDisableKeyRotation = "DisableKeyRotation" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DisableKeyRotation +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DisableKeyRotation func (c *KMS) DisableKeyRotationRequest(input *DisableKeyRotationInput) (req *request.Request, output *DisableKeyRotationOutput) { op := &request.Operation{ Name: opDisableKeyRotation, @@ -1046,7 +1080,9 @@ func (c *KMS) DisableKeyRotationRequest(input *DisableKeyRotationInput) (req *re // DisableKeyRotation API operation for AWS Key Management Service. // -// Disables rotation of the specified key. +// Disables automatic rotation of the key material for the specified customer +// master key (CMK). You cannot perform this operation on a CMK in a different +// AWS account. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -1070,11 +1106,11 @@ func (c *KMS) DisableKeyRotationRequest(input *DisableKeyRotationInput) (req *re // The system timed out while trying to fulfill the request. The request can // be retried. // -// * ErrCodeInternalException "InternalException" +// * ErrCodeInternalException "KMSInternalException" // The request was rejected because an internal exception occurred. The request // can be retried. // -// * ErrCodeInvalidStateException "InvalidStateException" +// * ErrCodeInvalidStateException "KMSInvalidStateException" // The request was rejected because the state of the specified resource is not // valid for this request. // @@ -1086,7 +1122,7 @@ func (c *KMS) DisableKeyRotationRequest(input *DisableKeyRotationInput) (req *re // The request was rejected because a specified parameter is not supported or // a specified resource is not valid for this operation. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DisableKeyRotation +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DisableKeyRotation func (c *KMS) DisableKeyRotation(input *DisableKeyRotationInput) (*DisableKeyRotationOutput, error) { req, out := c.DisableKeyRotationRequest(input) return out, req.Send() @@ -1112,7 +1148,7 @@ const opEnableKey = "EnableKey" // EnableKeyRequest generates a "aws/request.Request" representing the // client's request for the EnableKey operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1133,7 +1169,7 @@ const opEnableKey = "EnableKey" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/EnableKey +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/EnableKey func (c *KMS) EnableKeyRequest(input *EnableKeyInput) (req *request.Request, output *EnableKeyOutput) { op := &request.Operation{ Name: opEnableKey, @@ -1154,7 +1190,9 @@ func (c *KMS) EnableKeyRequest(input *EnableKeyInput) (req *request.Request, out // EnableKey API operation for AWS Key Management Service. // -// Marks a key as enabled, thereby permitting its use. +// Sets the state of a customer master key (CMK) to enabled, thereby permitting +// its use for cryptographic operations. You cannot perform this operation on +// a CMK in a different AWS account. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -1175,7 +1213,7 @@ func (c *KMS) EnableKeyRequest(input *EnableKeyInput) (req *request.Request, out // The system timed out while trying to fulfill the request. The request can // be retried. // -// * ErrCodeInternalException "InternalException" +// * ErrCodeInternalException "KMSInternalException" // The request was rejected because an internal exception occurred. The request // can be retried. // @@ -1184,7 +1222,7 @@ func (c *KMS) EnableKeyRequest(input *EnableKeyInput) (req *request.Request, out // see Limits (http://docs.aws.amazon.com/kms/latest/developerguide/limits.html) // in the AWS Key Management Service Developer Guide. // -// * ErrCodeInvalidStateException "InvalidStateException" +// * ErrCodeInvalidStateException "KMSInvalidStateException" // The request was rejected because the state of the specified resource is not // valid for this request. // @@ -1192,7 +1230,7 @@ func (c *KMS) EnableKeyRequest(input *EnableKeyInput) (req *request.Request, out // Key State Affects Use of a Customer Master Key (http://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/EnableKey +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/EnableKey func (c *KMS) EnableKey(input *EnableKeyInput) (*EnableKeyOutput, error) { req, out := c.EnableKeyRequest(input) return out, req.Send() @@ -1218,7 +1256,7 @@ const opEnableKeyRotation = "EnableKeyRotation" // EnableKeyRotationRequest generates a "aws/request.Request" representing the // client's request for the EnableKeyRotation operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1239,7 +1277,7 @@ const opEnableKeyRotation = "EnableKeyRotation" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/EnableKeyRotation +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/EnableKeyRotation func (c *KMS) EnableKeyRotationRequest(input *EnableKeyRotationInput) (req *request.Request, output *EnableKeyRotationOutput) { op := &request.Operation{ Name: opEnableKeyRotation, @@ -1260,7 +1298,9 @@ func (c *KMS) EnableKeyRotationRequest(input *EnableKeyRotationInput) (req *requ // EnableKeyRotation API operation for AWS Key Management Service. // -// Enables rotation of the specified customer master key. +// Enables automatic rotation of the key material for the specified customer +// master key (CMK). You cannot perform this operation on a CMK in a different +// AWS account. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -1284,11 +1324,11 @@ func (c *KMS) EnableKeyRotationRequest(input *EnableKeyRotationInput) (req *requ // The system timed out while trying to fulfill the request. The request can // be retried. // -// * ErrCodeInternalException "InternalException" +// * ErrCodeInternalException "KMSInternalException" // The request was rejected because an internal exception occurred. The request // can be retried. // -// * ErrCodeInvalidStateException "InvalidStateException" +// * ErrCodeInvalidStateException "KMSInvalidStateException" // The request was rejected because the state of the specified resource is not // valid for this request. // @@ -1300,7 +1340,7 @@ func (c *KMS) EnableKeyRotationRequest(input *EnableKeyRotationInput) (req *requ // The request was rejected because a specified parameter is not supported or // a specified resource is not valid for this operation. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/EnableKeyRotation +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/EnableKeyRotation func (c *KMS) EnableKeyRotation(input *EnableKeyRotationInput) (*EnableKeyRotationOutput, error) { req, out := c.EnableKeyRotationRequest(input) return out, req.Send() @@ -1326,7 +1366,7 @@ const opEncrypt = "Encrypt" // EncryptRequest generates a "aws/request.Request" representing the // client's request for the Encrypt operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1347,7 +1387,7 @@ const opEncrypt = "Encrypt" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/Encrypt +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/Encrypt func (c *KMS) EncryptRequest(input *EncryptInput) (req *request.Request, output *EncryptOutput) { op := &request.Operation{ Name: opEncrypt, @@ -1366,26 +1406,29 @@ func (c *KMS) EncryptRequest(input *EncryptInput) (req *request.Request, output // Encrypt API operation for AWS Key Management Service. // -// Encrypts plaintext into ciphertext by using a customer master key. The Encrypt -// function has two primary use cases: +// Encrypts plaintext into ciphertext by using a customer master key (CMK). +// The Encrypt operation has two primary use cases: // -// * You can encrypt up to 4 KB of arbitrary data such as an RSA key, a database -// password, or other sensitive customer information. +// * You can encrypt up to 4 kilobytes (4096 bytes) of arbitrary data such +// as an RSA key, a database password, or other sensitive information. // -// * If you are moving encrypted data from one region to another, you can -// use this API to encrypt in the new region the plaintext data key that -// was used to encrypt the data in the original region. This provides you -// with an encrypted copy of the data key that can be decrypted in the new -// region and used there to decrypt the encrypted data. +// * To move encrypted data from one AWS region to another, you can use this +// operation to encrypt in the new region the plaintext data key that was +// used to encrypt the data in the original region. This provides you with +// an encrypted copy of the data key that can be decrypted in the new region +// and used there to decrypt the encrypted data. +// +// To perform this operation on a CMK in a different AWS account, specify the +// key ARN or alias ARN in the value of the KeyId parameter. // // Unless you are moving encrypted data from one region to another, you don't -// use this function to encrypt a generated data key within a region. You retrieve -// data keys already encrypted by calling the GenerateDataKey or GenerateDataKeyWithoutPlaintext -// function. Data keys don't need to be encrypted again by calling Encrypt. +// use this operation to encrypt a generated data key within a region. To get +// data keys that are already encrypted, call the GenerateDataKey or GenerateDataKeyWithoutPlaintext +// operation. Data keys don't need to be encrypted again by calling Encrypt. // -// If you want to encrypt data locally in your application, you can use the -// GenerateDataKey function to return a plaintext data encryption key and a -// copy of the key encrypted under the customer master key (CMK) of your choosing. +// To encrypt data locally in your application, use the GenerateDataKey operation +// to return a plaintext data encryption key and a copy of the key encrypted +// under the CMK of your choosing. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -1416,11 +1459,11 @@ func (c *KMS) EncryptRequest(input *EncryptInput) (req *request.Request, output // * ErrCodeInvalidGrantTokenException "InvalidGrantTokenException" // The request was rejected because the specified grant token is not valid. // -// * ErrCodeInternalException "InternalException" +// * ErrCodeInternalException "KMSInternalException" // The request was rejected because an internal exception occurred. The request // can be retried. // -// * ErrCodeInvalidStateException "InvalidStateException" +// * ErrCodeInvalidStateException "KMSInvalidStateException" // The request was rejected because the state of the specified resource is not // valid for this request. // @@ -1428,7 +1471,7 @@ func (c *KMS) EncryptRequest(input *EncryptInput) (req *request.Request, output // Key State Affects Use of a Customer Master Key (http://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/Encrypt +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/Encrypt func (c *KMS) Encrypt(input *EncryptInput) (*EncryptOutput, error) { req, out := c.EncryptRequest(input) return out, req.Send() @@ -1454,7 +1497,7 @@ const opGenerateDataKey = "GenerateDataKey" // GenerateDataKeyRequest generates a "aws/request.Request" representing the // client's request for the GenerateDataKey operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1475,7 +1518,7 @@ const opGenerateDataKey = "GenerateDataKey" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GenerateDataKey +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GenerateDataKey func (c *KMS) GenerateDataKeyRequest(input *GenerateDataKeyInput) (req *request.Request, output *GenerateDataKeyOutput) { op := &request.Operation{ Name: opGenerateDataKey, @@ -1501,7 +1544,9 @@ func (c *KMS) GenerateDataKeyRequest(input *GenerateDataKeyInput) (req *request. // data key. You must also specify the length of the data key using either the // KeySpec or NumberOfBytes field. You must specify one field or the other, // but not both. For common key lengths (128-bit and 256-bit symmetric keys), -// we recommend that you use KeySpec. +// we recommend that you use KeySpec. To perform this operation on a CMK in +// a different AWS account, specify the key ARN or alias ARN in the value of +// the KeyId parameter. // // This operation returns a plaintext copy of the data key in the Plaintext // field of the response, and an encrypted copy of the data key in the CiphertextBlob @@ -1511,7 +1556,7 @@ func (c *KMS) GenerateDataKeyRequest(input *GenerateDataKeyInput) (req *request. // We recommend that you use the following pattern to encrypt data locally in // your application: // -// Use this operation (GenerateDataKey) to retrieve a data encryption key. +// Use this operation (GenerateDataKey) to get a data encryption key. // // Use the plaintext data encryption key (returned in the Plaintext field of // the response) to encrypt data locally, then erase the plaintext data key @@ -1568,11 +1613,11 @@ func (c *KMS) GenerateDataKeyRequest(input *GenerateDataKeyInput) (req *request. // * ErrCodeInvalidGrantTokenException "InvalidGrantTokenException" // The request was rejected because the specified grant token is not valid. // -// * ErrCodeInternalException "InternalException" +// * ErrCodeInternalException "KMSInternalException" // The request was rejected because an internal exception occurred. The request // can be retried. // -// * ErrCodeInvalidStateException "InvalidStateException" +// * ErrCodeInvalidStateException "KMSInvalidStateException" // The request was rejected because the state of the specified resource is not // valid for this request. // @@ -1580,7 +1625,7 @@ func (c *KMS) GenerateDataKeyRequest(input *GenerateDataKeyInput) (req *request. // Key State Affects Use of a Customer Master Key (http://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GenerateDataKey +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GenerateDataKey func (c *KMS) GenerateDataKey(input *GenerateDataKeyInput) (*GenerateDataKeyOutput, error) { req, out := c.GenerateDataKeyRequest(input) return out, req.Send() @@ -1606,7 +1651,7 @@ const opGenerateDataKeyWithoutPlaintext = "GenerateDataKeyWithoutPlaintext" // GenerateDataKeyWithoutPlaintextRequest generates a "aws/request.Request" representing the // client's request for the GenerateDataKeyWithoutPlaintext operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1627,7 +1672,7 @@ const opGenerateDataKeyWithoutPlaintext = "GenerateDataKeyWithoutPlaintext" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GenerateDataKeyWithoutPlaintext +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GenerateDataKeyWithoutPlaintext func (c *KMS) GenerateDataKeyWithoutPlaintextRequest(input *GenerateDataKeyWithoutPlaintextInput) (req *request.Request, output *GenerateDataKeyWithoutPlaintextOutput) { op := &request.Operation{ Name: opGenerateDataKeyWithoutPlaintext, @@ -1650,6 +1695,9 @@ func (c *KMS) GenerateDataKeyWithoutPlaintextRequest(input *GenerateDataKeyWitho // This operation is identical to GenerateDataKey but returns only the encrypted // copy of the data key. // +// To perform this operation on a CMK in a different AWS account, specify the +// key ARN or alias ARN in the value of the KeyId parameter. +// // This operation is useful in a system that has multiple components with different // degrees of trust. For example, consider a system that stores encrypted data // in containers. Each container stores the encrypted data and an encrypted @@ -1691,11 +1739,11 @@ func (c *KMS) GenerateDataKeyWithoutPlaintextRequest(input *GenerateDataKeyWitho // * ErrCodeInvalidGrantTokenException "InvalidGrantTokenException" // The request was rejected because the specified grant token is not valid. // -// * ErrCodeInternalException "InternalException" +// * ErrCodeInternalException "KMSInternalException" // The request was rejected because an internal exception occurred. The request // can be retried. // -// * ErrCodeInvalidStateException "InvalidStateException" +// * ErrCodeInvalidStateException "KMSInvalidStateException" // The request was rejected because the state of the specified resource is not // valid for this request. // @@ -1703,7 +1751,7 @@ func (c *KMS) GenerateDataKeyWithoutPlaintextRequest(input *GenerateDataKeyWitho // Key State Affects Use of a Customer Master Key (http://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GenerateDataKeyWithoutPlaintext +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GenerateDataKeyWithoutPlaintext func (c *KMS) GenerateDataKeyWithoutPlaintext(input *GenerateDataKeyWithoutPlaintextInput) (*GenerateDataKeyWithoutPlaintextOutput, error) { req, out := c.GenerateDataKeyWithoutPlaintextRequest(input) return out, req.Send() @@ -1729,7 +1777,7 @@ const opGenerateRandom = "GenerateRandom" // GenerateRandomRequest generates a "aws/request.Request" representing the // client's request for the GenerateRandom operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1750,7 +1798,7 @@ const opGenerateRandom = "GenerateRandom" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GenerateRandom +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GenerateRandom func (c *KMS) GenerateRandomRequest(input *GenerateRandomInput) (req *request.Request, output *GenerateRandomOutput) { op := &request.Operation{ Name: opGenerateRandom, @@ -1787,11 +1835,11 @@ func (c *KMS) GenerateRandomRequest(input *GenerateRandomInput) (req *request.Re // The system timed out while trying to fulfill the request. The request can // be retried. // -// * ErrCodeInternalException "InternalException" +// * ErrCodeInternalException "KMSInternalException" // The request was rejected because an internal exception occurred. The request // can be retried. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GenerateRandom +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GenerateRandom func (c *KMS) GenerateRandom(input *GenerateRandomInput) (*GenerateRandomOutput, error) { req, out := c.GenerateRandomRequest(input) return out, req.Send() @@ -1817,7 +1865,7 @@ const opGetKeyPolicy = "GetKeyPolicy" // GetKeyPolicyRequest generates a "aws/request.Request" representing the // client's request for the GetKeyPolicy operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1838,7 +1886,7 @@ const opGetKeyPolicy = "GetKeyPolicy" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GetKeyPolicy +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GetKeyPolicy func (c *KMS) GetKeyPolicyRequest(input *GetKeyPolicyInput) (req *request.Request, output *GetKeyPolicyOutput) { op := &request.Operation{ Name: opGetKeyPolicy, @@ -1857,7 +1905,8 @@ func (c *KMS) GetKeyPolicyRequest(input *GetKeyPolicyInput) (req *request.Reques // GetKeyPolicy API operation for AWS Key Management Service. // -// Retrieves a policy attached to the specified key. +// Gets a key policy attached to the specified customer master key (CMK). You +// cannot perform this operation on a CMK in a different AWS account. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -1878,11 +1927,11 @@ func (c *KMS) GetKeyPolicyRequest(input *GetKeyPolicyInput) (req *request.Reques // The system timed out while trying to fulfill the request. The request can // be retried. // -// * ErrCodeInternalException "InternalException" +// * ErrCodeInternalException "KMSInternalException" // The request was rejected because an internal exception occurred. The request // can be retried. // -// * ErrCodeInvalidStateException "InvalidStateException" +// * ErrCodeInvalidStateException "KMSInvalidStateException" // The request was rejected because the state of the specified resource is not // valid for this request. // @@ -1890,7 +1939,7 @@ func (c *KMS) GetKeyPolicyRequest(input *GetKeyPolicyInput) (req *request.Reques // Key State Affects Use of a Customer Master Key (http://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GetKeyPolicy +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GetKeyPolicy func (c *KMS) GetKeyPolicy(input *GetKeyPolicyInput) (*GetKeyPolicyOutput, error) { req, out := c.GetKeyPolicyRequest(input) return out, req.Send() @@ -1916,7 +1965,7 @@ const opGetKeyRotationStatus = "GetKeyRotationStatus" // GetKeyRotationStatusRequest generates a "aws/request.Request" representing the // client's request for the GetKeyRotationStatus operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -1937,7 +1986,7 @@ const opGetKeyRotationStatus = "GetKeyRotationStatus" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GetKeyRotationStatus +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GetKeyRotationStatus func (c *KMS) GetKeyRotationStatusRequest(input *GetKeyRotationStatusInput) (req *request.Request, output *GetKeyRotationStatusOutput) { op := &request.Operation{ Name: opGetKeyRotationStatus, @@ -1956,8 +2005,11 @@ func (c *KMS) GetKeyRotationStatusRequest(input *GetKeyRotationStatusInput) (req // GetKeyRotationStatus API operation for AWS Key Management Service. // -// Retrieves a Boolean value that indicates whether key rotation is enabled -// for the specified key. +// Gets a Boolean value that indicates whether automatic rotation of the key +// material is enabled for the specified customer master key (CMK). +// +// To perform this operation on a CMK in a different AWS account, specify the +// key ARN in the value of the KeyId parameter. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -1978,11 +2030,11 @@ func (c *KMS) GetKeyRotationStatusRequest(input *GetKeyRotationStatusInput) (req // The system timed out while trying to fulfill the request. The request can // be retried. // -// * ErrCodeInternalException "InternalException" +// * ErrCodeInternalException "KMSInternalException" // The request was rejected because an internal exception occurred. The request // can be retried. // -// * ErrCodeInvalidStateException "InvalidStateException" +// * ErrCodeInvalidStateException "KMSInvalidStateException" // The request was rejected because the state of the specified resource is not // valid for this request. // @@ -1994,7 +2046,7 @@ func (c *KMS) GetKeyRotationStatusRequest(input *GetKeyRotationStatusInput) (req // The request was rejected because a specified parameter is not supported or // a specified resource is not valid for this operation. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GetKeyRotationStatus +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GetKeyRotationStatus func (c *KMS) GetKeyRotationStatus(input *GetKeyRotationStatusInput) (*GetKeyRotationStatusOutput, error) { req, out := c.GetKeyRotationStatusRequest(input) return out, req.Send() @@ -2020,7 +2072,7 @@ const opGetParametersForImport = "GetParametersForImport" // GetParametersForImportRequest generates a "aws/request.Request" representing the // client's request for the GetParametersForImport operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2041,7 +2093,7 @@ const opGetParametersForImport = "GetParametersForImport" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GetParametersForImport +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GetParametersForImport func (c *KMS) GetParametersForImportRequest(input *GetParametersForImportInput) (req *request.Request, output *GetParametersForImportOutput) { op := &request.Operation{ Name: opGetParametersForImport, @@ -2068,14 +2120,15 @@ func (c *KMS) GetParametersForImportRequest(input *GetParametersForImportInput) // You must specify the key ID of the customer master key (CMK) into which you // will import key material. This CMK's Origin must be EXTERNAL. You must also // specify the wrapping algorithm and type of wrapping key (public key) that -// you will use to encrypt the key material. +// you will use to encrypt the key material. You cannot perform this operation +// on a CMK in a different AWS account. // // This operation returns a public key and an import token. Use the public key // to encrypt the key material. Store the import token to send with a subsequent // ImportKeyMaterial request. The public key and import token from the same -// response must be used together. These items are valid for 24 hours, after -// which they cannot be used for a subsequent ImportKeyMaterial request. To -// retrieve new ones, send another GetParametersForImport request. +// response must be used together. These items are valid for 24 hours. When +// they expire, they cannot be used for a subsequent ImportKeyMaterial request. +// To get new ones, send another GetParametersForImport request. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -2100,11 +2153,11 @@ func (c *KMS) GetParametersForImportRequest(input *GetParametersForImportInput) // The request was rejected because the specified entity or resource could not // be found. // -// * ErrCodeInternalException "InternalException" +// * ErrCodeInternalException "KMSInternalException" // The request was rejected because an internal exception occurred. The request // can be retried. // -// * ErrCodeInvalidStateException "InvalidStateException" +// * ErrCodeInvalidStateException "KMSInvalidStateException" // The request was rejected because the state of the specified resource is not // valid for this request. // @@ -2112,7 +2165,7 @@ func (c *KMS) GetParametersForImportRequest(input *GetParametersForImportInput) // Key State Affects Use of a Customer Master Key (http://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GetParametersForImport +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GetParametersForImport func (c *KMS) GetParametersForImport(input *GetParametersForImportInput) (*GetParametersForImportOutput, error) { req, out := c.GetParametersForImportRequest(input) return out, req.Send() @@ -2138,7 +2191,7 @@ const opImportKeyMaterial = "ImportKeyMaterial" // ImportKeyMaterialRequest generates a "aws/request.Request" representing the // client's request for the ImportKeyMaterial operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2159,7 +2212,7 @@ const opImportKeyMaterial = "ImportKeyMaterial" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ImportKeyMaterial +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ImportKeyMaterial func (c *KMS) ImportKeyMaterialRequest(input *ImportKeyMaterialInput) (req *request.Request, output *ImportKeyMaterialOutput) { op := &request.Operation{ Name: opImportKeyMaterial, @@ -2178,27 +2231,42 @@ func (c *KMS) ImportKeyMaterialRequest(input *ImportKeyMaterialInput) (req *requ // ImportKeyMaterial API operation for AWS Key Management Service. // -// Imports key material into an AWS KMS customer master key (CMK) from your -// existing key management infrastructure. For more information about importing -// key material into AWS KMS, see Importing Key Material (http://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html) +// Imports key material into an existing AWS KMS customer master key (CMK) that +// was created without key material. You cannot perform this operation on a +// CMK in a different AWS account. For more information about creating CMKs +// with no key material and then importing key material, see Importing Key Material +// (http://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html) // in the AWS Key Management Service Developer Guide. // -// You must specify the key ID of the CMK to import the key material into. This -// CMK's Origin must be EXTERNAL. You must also send an import token and the -// encrypted key material. Send the import token that you received in the same -// GetParametersForImport response that contained the public key that you used -// to encrypt the key material. You must also specify whether the key material -// expires and if so, when. When the key material expires, AWS KMS deletes the -// key material and the CMK becomes unusable. To use the CMK again, you can -// reimport the same key material. If you set an expiration date, you can change -// it only by reimporting the same key material and specifying a new expiration -// date. +// Before using this operation, call GetParametersForImport. Its response includes +// a public key and an import token. Use the public key to encrypt the key material. +// Then, submit the import token from the same GetParametersForImport response. // -// When this operation is successful, the specified CMK's key state changes -// to Enabled, and you can use the CMK. +// When calling this operation, you must specify the following values: // -// After you successfully import key material into a CMK, you can reimport the -// same key material into that CMK, but you cannot import different key material. +// * The key ID or key ARN of a CMK with no key material. Its Origin must +// be EXTERNAL. +// +// To create a CMK with no key material, call CreateKey and set the value of +// its Origin parameter to EXTERNAL. To get the Origin of a CMK, call DescribeKey.) +// +// * The encrypted key material. To get the public key to encrypt the key +// material, call GetParametersForImport. +// +// * The import token that GetParametersForImport returned. This token and +// the public key used to encrypt the key material must have come from the +// same response. +// +// * Whether the key material expires and if so, when. If you set an expiration +// date, you can change it only by reimporting the same key material and +// specifying a new expiration date. If the key material expires, AWS KMS +// deletes the key material and the CMK becomes unusable. To use the CMK +// again, you must reimport the same key material. +// +// When this operation is successful, the CMK's key state changes from PendingImport +// to Enabled, and you can use the CMK. After you successfully import key material +// into a CMK, you can reimport the same key material into that CMK, but you +// cannot import different key material. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -2223,11 +2291,11 @@ func (c *KMS) ImportKeyMaterialRequest(input *ImportKeyMaterialInput) (req *requ // The request was rejected because the specified entity or resource could not // be found. // -// * ErrCodeInternalException "InternalException" +// * ErrCodeInternalException "KMSInternalException" // The request was rejected because an internal exception occurred. The request // can be retried. // -// * ErrCodeInvalidStateException "InvalidStateException" +// * ErrCodeInvalidStateException "KMSInvalidStateException" // The request was rejected because the state of the specified resource is not // valid for this request. // @@ -2236,8 +2304,9 @@ func (c *KMS) ImportKeyMaterialRequest(input *ImportKeyMaterialInput) (req *requ // in the AWS Key Management Service Developer Guide. // // * ErrCodeInvalidCiphertextException "InvalidCiphertextException" -// The request was rejected because the specified ciphertext has been corrupted -// or is otherwise invalid. +// The request was rejected because the specified ciphertext, or additional +// authenticated data incorporated into the ciphertext, such as the encryption +// context, is corrupted, missing, or otherwise invalid. // // * ErrCodeIncorrectKeyMaterialException "IncorrectKeyMaterialException" // The request was rejected because the provided key material is invalid or @@ -2246,15 +2315,14 @@ func (c *KMS) ImportKeyMaterialRequest(input *ImportKeyMaterialInput) (req *requ // // * ErrCodeExpiredImportTokenException "ExpiredImportTokenException" // The request was rejected because the provided import token is expired. Use -// GetParametersForImport to retrieve a new import token and public key, use -// the new public key to encrypt the key material, and then try the request -// again. +// GetParametersForImport to get a new import token and public key, use the +// new public key to encrypt the key material, and then try the request again. // // * ErrCodeInvalidImportTokenException "InvalidImportTokenException" // The request was rejected because the provided import token is invalid or // is associated with a different customer master key (CMK). // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ImportKeyMaterial +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ImportKeyMaterial func (c *KMS) ImportKeyMaterial(input *ImportKeyMaterialInput) (*ImportKeyMaterialOutput, error) { req, out := c.ImportKeyMaterialRequest(input) return out, req.Send() @@ -2280,7 +2348,7 @@ const opListAliases = "ListAliases" // ListAliasesRequest generates a "aws/request.Request" representing the // client's request for the ListAliases operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2301,7 +2369,7 @@ const opListAliases = "ListAliases" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ListAliases +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ListAliases func (c *KMS) ListAliasesRequest(input *ListAliasesInput) (req *request.Request, output *ListAliasesOutput) { op := &request.Operation{ Name: opListAliases, @@ -2326,7 +2394,14 @@ func (c *KMS) ListAliasesRequest(input *ListAliasesInput) (req *request.Request, // ListAliases API operation for AWS Key Management Service. // -// Lists all of the key aliases in the account. +// Gets a list of all aliases in the caller's AWS account and region. You cannot +// list aliases in other accounts. For more information about aliases, see CreateAlias. +// +// The response might include several aliases that do not have a TargetKeyId +// field because they are not associated with a CMK. These are predefined aliases +// that are reserved for CMKs managed by AWS services. If an alias is not associated +// with a CMK, the alias does not count against the alias limit (http://docs.aws.amazon.com/kms/latest/developerguide/limits.html#aliases-limit) +// for your account. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -2344,11 +2419,11 @@ func (c *KMS) ListAliasesRequest(input *ListAliasesInput) (req *request.Request, // The request was rejected because the marker that specifies where pagination // should next begin is not valid. // -// * ErrCodeInternalException "InternalException" +// * ErrCodeInternalException "KMSInternalException" // The request was rejected because an internal exception occurred. The request // can be retried. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ListAliases +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ListAliases func (c *KMS) ListAliases(input *ListAliasesInput) (*ListAliasesOutput, error) { req, out := c.ListAliasesRequest(input) return out, req.Send() @@ -2424,7 +2499,7 @@ const opListGrants = "ListGrants" // ListGrantsRequest generates a "aws/request.Request" representing the // client's request for the ListGrants operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2445,7 +2520,7 @@ const opListGrants = "ListGrants" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ListGrants +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ListGrants func (c *KMS) ListGrantsRequest(input *ListGrantsInput) (req *request.Request, output *ListGrantsResponse) { op := &request.Operation{ Name: opListGrants, @@ -2470,7 +2545,10 @@ func (c *KMS) ListGrantsRequest(input *ListGrantsInput) (req *request.Request, o // ListGrants API operation for AWS Key Management Service. // -// List the grants for a specified key. +// Gets a list of all grants for the specified customer master key (CMK). +// +// To perform this operation on a CMK in a different AWS account, specify the +// key ARN in the value of the KeyId parameter. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -2495,11 +2573,11 @@ func (c *KMS) ListGrantsRequest(input *ListGrantsInput) (req *request.Request, o // * ErrCodeInvalidArnException "InvalidArnException" // The request was rejected because a specified ARN was not valid. // -// * ErrCodeInternalException "InternalException" +// * ErrCodeInternalException "KMSInternalException" // The request was rejected because an internal exception occurred. The request // can be retried. // -// * ErrCodeInvalidStateException "InvalidStateException" +// * ErrCodeInvalidStateException "KMSInvalidStateException" // The request was rejected because the state of the specified resource is not // valid for this request. // @@ -2507,7 +2585,7 @@ func (c *KMS) ListGrantsRequest(input *ListGrantsInput) (req *request.Request, o // Key State Affects Use of a Customer Master Key (http://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ListGrants +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ListGrants func (c *KMS) ListGrants(input *ListGrantsInput) (*ListGrantsResponse, error) { req, out := c.ListGrantsRequest(input) return out, req.Send() @@ -2583,7 +2661,7 @@ const opListKeyPolicies = "ListKeyPolicies" // ListKeyPoliciesRequest generates a "aws/request.Request" representing the // client's request for the ListKeyPolicies operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2604,7 +2682,7 @@ const opListKeyPolicies = "ListKeyPolicies" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ListKeyPolicies +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ListKeyPolicies func (c *KMS) ListKeyPoliciesRequest(input *ListKeyPoliciesInput) (req *request.Request, output *ListKeyPoliciesOutput) { op := &request.Operation{ Name: opListKeyPolicies, @@ -2629,7 +2707,10 @@ func (c *KMS) ListKeyPoliciesRequest(input *ListKeyPoliciesInput) (req *request. // ListKeyPolicies API operation for AWS Key Management Service. // -// Retrieves a list of policies attached to a key. +// Gets the names of the key policies that are attached to a customer master +// key (CMK). This operation is designed to get policy names that you can use +// in a GetKeyPolicy operation. However, the only valid policy name is default. +// You cannot perform this operation on a CMK in a different AWS account. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -2650,11 +2731,11 @@ func (c *KMS) ListKeyPoliciesRequest(input *ListKeyPoliciesInput) (req *request. // The system timed out while trying to fulfill the request. The request can // be retried. // -// * ErrCodeInternalException "InternalException" +// * ErrCodeInternalException "KMSInternalException" // The request was rejected because an internal exception occurred. The request // can be retried. // -// * ErrCodeInvalidStateException "InvalidStateException" +// * ErrCodeInvalidStateException "KMSInvalidStateException" // The request was rejected because the state of the specified resource is not // valid for this request. // @@ -2662,7 +2743,7 @@ func (c *KMS) ListKeyPoliciesRequest(input *ListKeyPoliciesInput) (req *request. // Key State Affects Use of a Customer Master Key (http://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ListKeyPolicies +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ListKeyPolicies func (c *KMS) ListKeyPolicies(input *ListKeyPoliciesInput) (*ListKeyPoliciesOutput, error) { req, out := c.ListKeyPoliciesRequest(input) return out, req.Send() @@ -2738,7 +2819,7 @@ const opListKeys = "ListKeys" // ListKeysRequest generates a "aws/request.Request" representing the // client's request for the ListKeys operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2759,7 +2840,7 @@ const opListKeys = "ListKeys" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ListKeys +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ListKeys func (c *KMS) ListKeysRequest(input *ListKeysInput) (req *request.Request, output *ListKeysOutput) { op := &request.Operation{ Name: opListKeys, @@ -2784,7 +2865,8 @@ func (c *KMS) ListKeysRequest(input *ListKeysInput) (req *request.Request, outpu // ListKeys API operation for AWS Key Management Service. // -// Lists the customer master keys. +// Gets a list of all customer master keys (CMKs) in the caller's AWS account +// and region. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -2798,7 +2880,7 @@ func (c *KMS) ListKeysRequest(input *ListKeysInput) (req *request.Request, outpu // The system timed out while trying to fulfill the request. The request can // be retried. // -// * ErrCodeInternalException "InternalException" +// * ErrCodeInternalException "KMSInternalException" // The request was rejected because an internal exception occurred. The request // can be retried. // @@ -2806,7 +2888,7 @@ func (c *KMS) ListKeysRequest(input *ListKeysInput) (req *request.Request, outpu // The request was rejected because the marker that specifies where pagination // should next begin is not valid. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ListKeys +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ListKeys func (c *KMS) ListKeys(input *ListKeysInput) (*ListKeysOutput, error) { req, out := c.ListKeysRequest(input) return out, req.Send() @@ -2882,7 +2964,7 @@ const opListResourceTags = "ListResourceTags" // ListResourceTagsRequest generates a "aws/request.Request" representing the // client's request for the ListResourceTags operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2903,7 +2985,7 @@ const opListResourceTags = "ListResourceTags" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ListResourceTags +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ListResourceTags func (c *KMS) ListResourceTagsRequest(input *ListResourceTagsInput) (req *request.Request, output *ListResourceTagsOutput) { op := &request.Operation{ Name: opListResourceTags, @@ -2924,6 +3006,8 @@ func (c *KMS) ListResourceTagsRequest(input *ListResourceTagsInput) (req *reques // // Returns a list of all tags for the specified customer master key (CMK). // +// You cannot perform this operation on a CMK in a different AWS account. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -2932,7 +3016,7 @@ func (c *KMS) ListResourceTagsRequest(input *ListResourceTagsInput) (req *reques // API operation ListResourceTags for usage and error information. // // Returned Error Codes: -// * ErrCodeInternalException "InternalException" +// * ErrCodeInternalException "KMSInternalException" // The request was rejected because an internal exception occurred. The request // can be retried. // @@ -2947,7 +3031,7 @@ func (c *KMS) ListResourceTagsRequest(input *ListResourceTagsInput) (req *reques // The request was rejected because the marker that specifies where pagination // should next begin is not valid. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ListResourceTags +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ListResourceTags func (c *KMS) ListResourceTags(input *ListResourceTagsInput) (*ListResourceTagsOutput, error) { req, out := c.ListResourceTagsRequest(input) return out, req.Send() @@ -2973,7 +3057,7 @@ const opListRetirableGrants = "ListRetirableGrants" // ListRetirableGrantsRequest generates a "aws/request.Request" representing the // client's request for the ListRetirableGrants operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -2994,7 +3078,7 @@ const opListRetirableGrants = "ListRetirableGrants" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ListRetirableGrants +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ListRetirableGrants func (c *KMS) ListRetirableGrantsRequest(input *ListRetirableGrantsInput) (req *request.Request, output *ListGrantsResponse) { op := &request.Operation{ Name: opListRetirableGrants, @@ -3042,11 +3126,11 @@ func (c *KMS) ListRetirableGrantsRequest(input *ListRetirableGrantsInput) (req * // The request was rejected because the specified entity or resource could not // be found. // -// * ErrCodeInternalException "InternalException" +// * ErrCodeInternalException "KMSInternalException" // The request was rejected because an internal exception occurred. The request // can be retried. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ListRetirableGrants +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ListRetirableGrants func (c *KMS) ListRetirableGrants(input *ListRetirableGrantsInput) (*ListGrantsResponse, error) { req, out := c.ListRetirableGrantsRequest(input) return out, req.Send() @@ -3072,7 +3156,7 @@ const opPutKeyPolicy = "PutKeyPolicy" // PutKeyPolicyRequest generates a "aws/request.Request" representing the // client's request for the PutKeyPolicy operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -3093,7 +3177,7 @@ const opPutKeyPolicy = "PutKeyPolicy" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/PutKeyPolicy +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/PutKeyPolicy func (c *KMS) PutKeyPolicyRequest(input *PutKeyPolicyInput) (req *request.Request, output *PutKeyPolicyOutput) { op := &request.Operation{ Name: opPutKeyPolicy, @@ -3114,7 +3198,8 @@ func (c *KMS) PutKeyPolicyRequest(input *PutKeyPolicyInput) (req *request.Reques // PutKeyPolicy API operation for AWS Key Management Service. // -// Attaches a key policy to the specified customer master key (CMK). +// Attaches a key policy to the specified customer master key (CMK). You cannot +// perform this operation on a CMK in a different AWS account. // // For more information about key policies, see Key Policies (http://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) // in the AWS Key Management Service Developer Guide. @@ -3146,7 +3231,7 @@ func (c *KMS) PutKeyPolicyRequest(input *PutKeyPolicyInput) (req *request.Reques // The request was rejected because a specified parameter is not supported or // a specified resource is not valid for this operation. // -// * ErrCodeInternalException "InternalException" +// * ErrCodeInternalException "KMSInternalException" // The request was rejected because an internal exception occurred. The request // can be retried. // @@ -3155,7 +3240,7 @@ func (c *KMS) PutKeyPolicyRequest(input *PutKeyPolicyInput) (req *request.Reques // see Limits (http://docs.aws.amazon.com/kms/latest/developerguide/limits.html) // in the AWS Key Management Service Developer Guide. // -// * ErrCodeInvalidStateException "InvalidStateException" +// * ErrCodeInvalidStateException "KMSInvalidStateException" // The request was rejected because the state of the specified resource is not // valid for this request. // @@ -3163,7 +3248,7 @@ func (c *KMS) PutKeyPolicyRequest(input *PutKeyPolicyInput) (req *request.Reques // Key State Affects Use of a Customer Master Key (http://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/PutKeyPolicy +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/PutKeyPolicy func (c *KMS) PutKeyPolicy(input *PutKeyPolicyInput) (*PutKeyPolicyOutput, error) { req, out := c.PutKeyPolicyRequest(input) return out, req.Send() @@ -3189,7 +3274,7 @@ const opReEncrypt = "ReEncrypt" // ReEncryptRequest generates a "aws/request.Request" representing the // client's request for the ReEncrypt operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -3210,7 +3295,7 @@ const opReEncrypt = "ReEncrypt" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ReEncrypt +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ReEncrypt func (c *KMS) ReEncryptRequest(input *ReEncryptInput) (req *request.Request, output *ReEncryptOutput) { op := &request.Operation{ Name: opReEncrypt, @@ -3234,6 +3319,8 @@ func (c *KMS) ReEncryptRequest(input *ReEncryptInput) (req *request.Request, out // decrypted and then reencrypted. You can also use this operation to change // the encryption context of a ciphertext. // +// You can reencrypt data using CMKs in different AWS accounts. +// // Unlike other operations, ReEncrypt is authorized twice, once as ReEncryptFrom // on the source CMK and once as ReEncryptTo on the destination CMK. We recommend // that you include the "kms:ReEncrypt*" permission in your key policies (http://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) @@ -3258,8 +3345,9 @@ func (c *KMS) ReEncryptRequest(input *ReEncryptInput) (req *request.Request, out // The request was rejected because the specified CMK is not enabled. // // * ErrCodeInvalidCiphertextException "InvalidCiphertextException" -// The request was rejected because the specified ciphertext has been corrupted -// or is otherwise invalid. +// The request was rejected because the specified ciphertext, or additional +// authenticated data incorporated into the ciphertext, such as the encryption +// context, is corrupted, missing, or otherwise invalid. // // * ErrCodeKeyUnavailableException "KeyUnavailableException" // The request was rejected because the specified CMK was not available. The @@ -3275,11 +3363,11 @@ func (c *KMS) ReEncryptRequest(input *ReEncryptInput) (req *request.Request, out // * ErrCodeInvalidGrantTokenException "InvalidGrantTokenException" // The request was rejected because the specified grant token is not valid. // -// * ErrCodeInternalException "InternalException" +// * ErrCodeInternalException "KMSInternalException" // The request was rejected because an internal exception occurred. The request // can be retried. // -// * ErrCodeInvalidStateException "InvalidStateException" +// * ErrCodeInvalidStateException "KMSInvalidStateException" // The request was rejected because the state of the specified resource is not // valid for this request. // @@ -3287,7 +3375,7 @@ func (c *KMS) ReEncryptRequest(input *ReEncryptInput) (req *request.Request, out // Key State Affects Use of a Customer Master Key (http://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ReEncrypt +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ReEncrypt func (c *KMS) ReEncrypt(input *ReEncryptInput) (*ReEncryptOutput, error) { req, out := c.ReEncryptRequest(input) return out, req.Send() @@ -3313,7 +3401,7 @@ const opRetireGrant = "RetireGrant" // RetireGrantRequest generates a "aws/request.Request" representing the // client's request for the RetireGrant operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -3334,7 +3422,7 @@ const opRetireGrant = "RetireGrant" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/RetireGrant +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/RetireGrant func (c *KMS) RetireGrantRequest(input *RetireGrantInput) (req *request.Request, output *RetireGrantOutput) { op := &request.Operation{ Name: opRetireGrant, @@ -3380,6 +3468,9 @@ func (c *KMS) RetireGrantRequest(input *RetireGrantInput) (req *request.Request, // API operation RetireGrant for usage and error information. // // Returned Error Codes: +// * ErrCodeInvalidArnException "InvalidArnException" +// The request was rejected because a specified ARN was not valid. +// // * ErrCodeInvalidGrantTokenException "InvalidGrantTokenException" // The request was rejected because the specified grant token is not valid. // @@ -3394,11 +3485,11 @@ func (c *KMS) RetireGrantRequest(input *RetireGrantInput) (req *request.Request, // The system timed out while trying to fulfill the request. The request can // be retried. // -// * ErrCodeInternalException "InternalException" +// * ErrCodeInternalException "KMSInternalException" // The request was rejected because an internal exception occurred. The request // can be retried. // -// * ErrCodeInvalidStateException "InvalidStateException" +// * ErrCodeInvalidStateException "KMSInvalidStateException" // The request was rejected because the state of the specified resource is not // valid for this request. // @@ -3406,7 +3497,7 @@ func (c *KMS) RetireGrantRequest(input *RetireGrantInput) (req *request.Request, // Key State Affects Use of a Customer Master Key (http://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/RetireGrant +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/RetireGrant func (c *KMS) RetireGrant(input *RetireGrantInput) (*RetireGrantOutput, error) { req, out := c.RetireGrantRequest(input) return out, req.Send() @@ -3432,7 +3523,7 @@ const opRevokeGrant = "RevokeGrant" // RevokeGrantRequest generates a "aws/request.Request" representing the // client's request for the RevokeGrant operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -3453,7 +3544,7 @@ const opRevokeGrant = "RevokeGrant" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/RevokeGrant +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/RevokeGrant func (c *KMS) RevokeGrantRequest(input *RevokeGrantInput) (req *request.Request, output *RevokeGrantOutput) { op := &request.Operation{ Name: opRevokeGrant, @@ -3474,8 +3565,11 @@ func (c *KMS) RevokeGrantRequest(input *RevokeGrantInput) (req *request.Request, // RevokeGrant API operation for AWS Key Management Service. // -// Revokes a grant. You can revoke a grant to actively deny operations that -// depend on it. +// Revokes the specified grant for the specified customer master key (CMK). +// You can revoke a grant to actively deny operations that depend on it. +// +// To perform this operation on a CMK in a different AWS account, specify the +// key ARN in the value of the KeyId parameter. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -3499,11 +3593,11 @@ func (c *KMS) RevokeGrantRequest(input *RevokeGrantInput) (req *request.Request, // * ErrCodeInvalidGrantIdException "InvalidGrantIdException" // The request was rejected because the specified GrantId is not valid. // -// * ErrCodeInternalException "InternalException" +// * ErrCodeInternalException "KMSInternalException" // The request was rejected because an internal exception occurred. The request // can be retried. // -// * ErrCodeInvalidStateException "InvalidStateException" +// * ErrCodeInvalidStateException "KMSInvalidStateException" // The request was rejected because the state of the specified resource is not // valid for this request. // @@ -3511,7 +3605,7 @@ func (c *KMS) RevokeGrantRequest(input *RevokeGrantInput) (req *request.Request, // Key State Affects Use of a Customer Master Key (http://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/RevokeGrant +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/RevokeGrant func (c *KMS) RevokeGrant(input *RevokeGrantInput) (*RevokeGrantOutput, error) { req, out := c.RevokeGrantRequest(input) return out, req.Send() @@ -3537,7 +3631,7 @@ const opScheduleKeyDeletion = "ScheduleKeyDeletion" // ScheduleKeyDeletionRequest generates a "aws/request.Request" representing the // client's request for the ScheduleKeyDeletion operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -3558,7 +3652,7 @@ const opScheduleKeyDeletion = "ScheduleKeyDeletion" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ScheduleKeyDeletion +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ScheduleKeyDeletion func (c *KMS) ScheduleKeyDeletionRequest(input *ScheduleKeyDeletionInput) (req *request.Request, output *ScheduleKeyDeletionOutput) { op := &request.Operation{ Name: opScheduleKeyDeletion, @@ -3586,6 +3680,8 @@ func (c *KMS) ScheduleKeyDeletionRequest(input *ScheduleKeyDeletionInput) (req * // and all AWS KMS data associated with it, including all aliases that refer // to it. // +// You cannot perform this operation on a CMK in a different AWS account. +// // Deleting a CMK is a destructive and potentially dangerous operation. When // a CMK is deleted, all data that was encrypted under the CMK is rendered unrecoverable. // To restrict the use of a CMK without deleting it, use DisableKey. @@ -3613,11 +3709,11 @@ func (c *KMS) ScheduleKeyDeletionRequest(input *ScheduleKeyDeletionInput) (req * // The system timed out while trying to fulfill the request. The request can // be retried. // -// * ErrCodeInternalException "InternalException" +// * ErrCodeInternalException "KMSInternalException" // The request was rejected because an internal exception occurred. The request // can be retried. // -// * ErrCodeInvalidStateException "InvalidStateException" +// * ErrCodeInvalidStateException "KMSInvalidStateException" // The request was rejected because the state of the specified resource is not // valid for this request. // @@ -3625,7 +3721,7 @@ func (c *KMS) ScheduleKeyDeletionRequest(input *ScheduleKeyDeletionInput) (req * // Key State Affects Use of a Customer Master Key (http://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ScheduleKeyDeletion +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ScheduleKeyDeletion func (c *KMS) ScheduleKeyDeletion(input *ScheduleKeyDeletionInput) (*ScheduleKeyDeletionOutput, error) { req, out := c.ScheduleKeyDeletionRequest(input) return out, req.Send() @@ -3651,7 +3747,7 @@ const opTagResource = "TagResource" // TagResourceRequest generates a "aws/request.Request" representing the // client's request for the TagResource operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -3672,7 +3768,7 @@ const opTagResource = "TagResource" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/TagResource +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/TagResource func (c *KMS) TagResourceRequest(input *TagResourceInput) (req *request.Request, output *TagResourceOutput) { op := &request.Operation{ Name: opTagResource, @@ -3694,7 +3790,7 @@ func (c *KMS) TagResourceRequest(input *TagResourceInput) (req *request.Request, // TagResource API operation for AWS Key Management Service. // // Adds or overwrites one or more tags for the specified customer master key -// (CMK). +// (CMK). You cannot perform this operation on a CMK in a different AWS account. // // Each tag consists of a tag key and a tag value. Tag keys and tag values are // both required, but tag values can be empty (null) strings. @@ -3705,6 +3801,10 @@ func (c *KMS) TagResourceRequest(input *TagResourceInput) (req *request.Request, // value of Prod, it does not create a second tag. Instead, the original tag // is overwritten with the new tag value. // +// For information about the rules that apply to tag keys and tag values, see +// User-Defined Tag Restrictions (http://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/allocation-tag-restrictions.html) +// in the AWS Billing and Cost Management User Guide. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -3713,7 +3813,7 @@ func (c *KMS) TagResourceRequest(input *TagResourceInput) (req *request.Request, // API operation TagResource for usage and error information. // // Returned Error Codes: -// * ErrCodeInternalException "InternalException" +// * ErrCodeInternalException "KMSInternalException" // The request was rejected because an internal exception occurred. The request // can be retried. // @@ -3724,7 +3824,7 @@ func (c *KMS) TagResourceRequest(input *TagResourceInput) (req *request.Request, // * ErrCodeInvalidArnException "InvalidArnException" // The request was rejected because a specified ARN was not valid. // -// * ErrCodeInvalidStateException "InvalidStateException" +// * ErrCodeInvalidStateException "KMSInvalidStateException" // The request was rejected because the state of the specified resource is not // valid for this request. // @@ -3740,7 +3840,7 @@ func (c *KMS) TagResourceRequest(input *TagResourceInput) (req *request.Request, // * ErrCodeTagException "TagException" // The request was rejected because one or more tags are not valid. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/TagResource +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/TagResource func (c *KMS) TagResource(input *TagResourceInput) (*TagResourceOutput, error) { req, out := c.TagResourceRequest(input) return out, req.Send() @@ -3766,7 +3866,7 @@ const opUntagResource = "UntagResource" // UntagResourceRequest generates a "aws/request.Request" representing the // client's request for the UntagResource operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -3787,7 +3887,7 @@ const opUntagResource = "UntagResource" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/UntagResource +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/UntagResource func (c *KMS) UntagResourceRequest(input *UntagResourceInput) (req *request.Request, output *UntagResourceOutput) { op := &request.Operation{ Name: opUntagResource, @@ -3809,7 +3909,7 @@ func (c *KMS) UntagResourceRequest(input *UntagResourceInput) (req *request.Requ // UntagResource API operation for AWS Key Management Service. // // Removes the specified tag or tags from the specified customer master key -// (CMK). +// (CMK). You cannot perform this operation on a CMK in a different AWS account. // // To remove a tag, you specify the tag key for each tag to remove. You do not // specify the tag value. To overwrite the tag value for an existing tag, use @@ -3823,7 +3923,7 @@ func (c *KMS) UntagResourceRequest(input *UntagResourceInput) (req *request.Requ // API operation UntagResource for usage and error information. // // Returned Error Codes: -// * ErrCodeInternalException "InternalException" +// * ErrCodeInternalException "KMSInternalException" // The request was rejected because an internal exception occurred. The request // can be retried. // @@ -3834,7 +3934,7 @@ func (c *KMS) UntagResourceRequest(input *UntagResourceInput) (req *request.Requ // * ErrCodeInvalidArnException "InvalidArnException" // The request was rejected because a specified ARN was not valid. // -// * ErrCodeInvalidStateException "InvalidStateException" +// * ErrCodeInvalidStateException "KMSInvalidStateException" // The request was rejected because the state of the specified resource is not // valid for this request. // @@ -3845,7 +3945,7 @@ func (c *KMS) UntagResourceRequest(input *UntagResourceInput) (req *request.Requ // * ErrCodeTagException "TagException" // The request was rejected because one or more tags are not valid. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/UntagResource +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/UntagResource func (c *KMS) UntagResource(input *UntagResourceInput) (*UntagResourceOutput, error) { req, out := c.UntagResourceRequest(input) return out, req.Send() @@ -3871,7 +3971,7 @@ const opUpdateAlias = "UpdateAlias" // UpdateAliasRequest generates a "aws/request.Request" representing the // client's request for the UpdateAlias operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -3892,7 +3992,7 @@ const opUpdateAlias = "UpdateAlias" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/UpdateAlias +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/UpdateAlias func (c *KMS) UpdateAliasRequest(input *UpdateAliasInput) (req *request.Request, output *UpdateAliasOutput) { op := &request.Operation{ Name: opUpdateAlias, @@ -3913,19 +4013,26 @@ func (c *KMS) UpdateAliasRequest(input *UpdateAliasInput) (req *request.Request, // UpdateAlias API operation for AWS Key Management Service. // -// Updates an alias to map it to a different key. +// Associates an existing alias with a different customer master key (CMK). +// Each CMK can have multiple aliases, but the aliases must be unique within +// the account and region. You cannot perform this operation on an alias in +// a different AWS account. // -// An alias is not a property of a key. Therefore, an alias can be mapped to -// and unmapped from an existing key without changing the properties of the -// key. +// This operation works only on existing aliases. To change the alias of a CMK +// to a new value, use CreateAlias to create a new alias and DeleteAlias to +// delete the old alias. +// +// Because an alias is not a property of a CMK, you can create, update, and +// delete the aliases of a CMK without affecting the CMK. Also, aliases do not +// appear in the response from the DescribeKey operation. To get the aliases +// of all CMKs in the account, use the ListAliases operation. // // An alias name can contain only alphanumeric characters, forward slashes (/), -// underscores (_), and dashes (-). An alias must start with the word "alias" -// followed by a forward slash (alias/). An alias that begins with "aws" after -// the forward slash (alias/aws...) is reserved by Amazon Web Services (AWS). -// -// The alias and the key it is mapped to must be in the same AWS account and -// the same region. +// underscores (_), and dashes (-). An alias must start with the word alias +// followed by a forward slash (alias/). The alias name can contain only alphanumeric +// characters, forward slashes (/), underscores (_), and dashes (-). Alias names +// cannot begin with aws; that alias name prefix is reserved by Amazon Web Services +// (AWS). // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -3943,11 +4050,11 @@ func (c *KMS) UpdateAliasRequest(input *UpdateAliasInput) (req *request.Request, // The request was rejected because the specified entity or resource could not // be found. // -// * ErrCodeInternalException "InternalException" +// * ErrCodeInternalException "KMSInternalException" // The request was rejected because an internal exception occurred. The request // can be retried. // -// * ErrCodeInvalidStateException "InvalidStateException" +// * ErrCodeInvalidStateException "KMSInvalidStateException" // The request was rejected because the state of the specified resource is not // valid for this request. // @@ -3955,7 +4062,7 @@ func (c *KMS) UpdateAliasRequest(input *UpdateAliasInput) (req *request.Request, // Key State Affects Use of a Customer Master Key (http://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/UpdateAlias +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/UpdateAlias func (c *KMS) UpdateAlias(input *UpdateAliasInput) (*UpdateAliasOutput, error) { req, out := c.UpdateAliasRequest(input) return out, req.Send() @@ -3981,7 +4088,7 @@ const opUpdateKeyDescription = "UpdateKeyDescription" // UpdateKeyDescriptionRequest generates a "aws/request.Request" representing the // client's request for the UpdateKeyDescription operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -4002,7 +4109,7 @@ const opUpdateKeyDescription = "UpdateKeyDescription" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/UpdateKeyDescription +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/UpdateKeyDescription func (c *KMS) UpdateKeyDescriptionRequest(input *UpdateKeyDescriptionInput) (req *request.Request, output *UpdateKeyDescriptionOutput) { op := &request.Operation{ Name: opUpdateKeyDescription, @@ -4023,7 +4130,10 @@ func (c *KMS) UpdateKeyDescriptionRequest(input *UpdateKeyDescriptionInput) (req // UpdateKeyDescription API operation for AWS Key Management Service. // -// Updates the description of a customer master key (CMK). +// Updates the description of a customer master key (CMK). To see the decription +// of a CMK, use DescribeKey. +// +// You cannot perform this operation on a CMK in a different AWS account. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -4044,11 +4154,11 @@ func (c *KMS) UpdateKeyDescriptionRequest(input *UpdateKeyDescriptionInput) (req // The system timed out while trying to fulfill the request. The request can // be retried. // -// * ErrCodeInternalException "InternalException" +// * ErrCodeInternalException "KMSInternalException" // The request was rejected because an internal exception occurred. The request // can be retried. // -// * ErrCodeInvalidStateException "InvalidStateException" +// * ErrCodeInvalidStateException "KMSInvalidStateException" // The request was rejected because the state of the specified resource is not // valid for this request. // @@ -4056,7 +4166,7 @@ func (c *KMS) UpdateKeyDescriptionRequest(input *UpdateKeyDescriptionInput) (req // Key State Affects Use of a Customer Master Key (http://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/UpdateKeyDescription +// See also, https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/UpdateKeyDescription func (c *KMS) UpdateKeyDescription(input *UpdateKeyDescriptionInput) (*UpdateKeyDescriptionOutput, error) { req, out := c.UpdateKeyDescriptionRequest(input) return out, req.Send() @@ -4079,7 +4189,6 @@ func (c *KMS) UpdateKeyDescriptionWithContext(ctx aws.Context, input *UpdateKeyD } // Contains information about an alias. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/AliasListEntry type AliasListEntry struct { _ struct{} `type:"structure"` @@ -4121,22 +4230,21 @@ func (s *AliasListEntry) SetTargetKeyId(v string) *AliasListEntry { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/CancelKeyDeletionRequest type CancelKeyDeletionInput struct { _ struct{} `type:"structure"` // The unique identifier for the customer master key (CMK) for which to cancel // deletion. // - // To specify this value, use the unique key ID or the Amazon Resource Name - // (ARN) of the CMK. Examples: + // Specify the key ID or the Amazon Resource Name (ARN) of the CMK. // - // * Unique key ID: 1234abcd-12ab-34cd-56ef-1234567890ab + // For example: + // + // * Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab // // * Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab // - // To obtain the unique key ID and key ARN for a given CMK, use ListKeys or - // DescribeKey. + // To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. // // KeyId is a required field KeyId *string `min:"1" type:"string" required:"true"` @@ -4174,7 +4282,6 @@ func (s *CancelKeyDeletionInput) SetKeyId(v string) *CancelKeyDeletionInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/CancelKeyDeletionResponse type CancelKeyDeletionOutput struct { _ struct{} `type:"structure"` @@ -4198,7 +4305,6 @@ func (s *CancelKeyDeletionOutput) SetKeyId(v string) *CancelKeyDeletionOutput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/CreateAliasRequest type CreateAliasInput struct { _ struct{} `type:"structure"` @@ -4209,13 +4315,18 @@ type CreateAliasInput struct { // AliasName is a required field AliasName *string `min:"1" type:"string" required:"true"` - // An identifier of the key for which you are creating the alias. This value - // cannot be another alias but can be a globally unique identifier or a fully - // specified ARN to a key. + // Identifies the CMK for which you are creating the alias. This value cannot + // be an alias. // - // * Key ARN Example - arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012 + // Specify the key ID or the Amazon Resource Name (ARN) of the CMK. // - // * Globally Unique Key ID Example - 12345678-1234-1234-1234-123456789012 + // For example: + // + // * Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab + // + // * Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab + // + // To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. // // TargetKeyId is a required field TargetKeyId *string `min:"1" type:"string" required:"true"` @@ -4265,7 +4376,6 @@ func (s *CreateAliasInput) SetTargetKeyId(v string) *CreateAliasInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/CreateAliasOutput type CreateAliasOutput struct { _ struct{} `type:"structure"` } @@ -4280,7 +4390,6 @@ func (s CreateAliasOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/CreateGrantRequest type CreateGrantInput struct { _ struct{} `type:"structure"` @@ -4312,12 +4421,16 @@ type CreateGrantInput struct { // The unique identifier for the customer master key (CMK) that the grant applies // to. // - // To specify this value, use the globally unique key ID or the Amazon Resource - // Name (ARN) of the key. Examples: + // Specify the key ID or the Amazon Resource Name (ARN) of the CMK. To specify + // a CMK in a different AWS account, you must use the key ARN. // - // * Globally unique key ID: 12345678-1234-1234-1234-123456789012 + // For example: // - // * Key ARN: arn:aws:kms:us-west-2:123456789012:key/12345678-1234-1234-1234-123456789012 + // * Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab + // + // * Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab + // + // To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. // // KeyId is a required field KeyId *string `min:"1" type:"string" required:"true"` @@ -4337,7 +4450,9 @@ type CreateGrantInput struct { Name *string `min:"1" type:"string"` // A list of operations that the grant permits. - Operations []*string `type:"list"` + // + // Operations is a required field + Operations []*string `type:"list" required:"true"` // The principal that is given permission to retire the grant by using RetireGrant // operation. @@ -4379,6 +4494,9 @@ func (s *CreateGrantInput) Validate() error { if s.Name != nil && len(*s.Name) < 1 { invalidParams.Add(request.NewErrParamMinLen("Name", 1)) } + if s.Operations == nil { + invalidParams.Add(request.NewErrParamRequired("Operations")) + } if s.RetiringPrincipal != nil && len(*s.RetiringPrincipal) < 1 { invalidParams.Add(request.NewErrParamMinLen("RetiringPrincipal", 1)) } @@ -4431,7 +4549,6 @@ func (s *CreateGrantInput) SetRetiringPrincipal(v string) *CreateGrantInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/CreateGrantResponse type CreateGrantOutput struct { _ struct{} `type:"structure"` @@ -4469,14 +4586,13 @@ func (s *CreateGrantOutput) SetGrantToken(v string) *CreateGrantOutput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/CreateKeyRequest type CreateKeyInput struct { _ struct{} `type:"structure"` // A flag to indicate whether to bypass the key policy lockout safety check. // - // Setting this value to true increases the likelihood that the CMK becomes - // unmanageable. Do not set this value to true indiscriminately. + // Setting this value to true increases the risk that the CMK becomes unmanageable. + // Do not set this value to true indiscriminately. // // For more information, refer to the scenario in the Default Key Policy (http://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-root-enable-iam) // section in the AWS Key Management Service Developer Guide. @@ -4513,28 +4629,29 @@ type CreateKeyInput struct { // The key policy to attach to the CMK. // - // If you specify a policy and do not set BypassPolicyLockoutSafetyCheck to - // true, the policy must meet the following criteria: + // If you provide a key policy, it must meet the following criteria: // - // * It must allow the principal that is making the CreateKey request to - // make a subsequent PutKeyPolicy request on the CMK. This reduces the likelihood - // that the CMK becomes unmanageable. For more information, refer to the - // scenario in the Default Key Policy (http://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-root-enable-iam) - // section in the AWS Key Management Service Developer Guide. + // * If you don't set BypassPolicyLockoutSafetyCheck to true, the key policy + // must allow the principal that is making the CreateKey request to make + // a subsequent PutKeyPolicy request on the CMK. This reduces the risk that + // the CMK becomes unmanageable. For more information, refer to the scenario + // in the Default Key Policy (http://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-root-enable-iam) + // section of the AWS Key Management Service Developer Guide. // - // * The principals that are specified in the key policy must exist and be - // visible to AWS KMS. When you create a new AWS principal (for example, - // an IAM user or role), you might need to enforce a delay before specifying - // the new principal in a key policy because the new principal might not - // immediately be visible to AWS KMS. For more information, see Changes that - // I make are not always immediately visible (http://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_general.html#troubleshoot_general_eventual-consistency) - // in the IAM User Guide. + // * Each statement in the key policy must contain one or more principals. + // The principals in the key policy must exist and be visible to AWS KMS. + // When you create a new AWS principal (for example, an IAM user or role), + // you might need to enforce a delay before including the new principal in + // a key policy because the new principal might not be immediately visible + // to AWS KMS. For more information, see Changes that I make are not always + // immediately visible (http://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_general.html#troubleshoot_general_eventual-consistency) + // in the AWS Identity and Access Management User Guide. // - // If you do not specify a policy, AWS KMS attaches a default key policy to - // the CMK. For more information, see Default Key Policy (http://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default) + // If you do not provide a key policy, AWS KMS attaches a default key policy + // to the CMK. For more information, see Default Key Policy (http://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default) // in the AWS Key Management Service Developer Guide. // - // The policy size limit is 32 KiB (32768 bytes). + // The key policy size limit is 32 kilobytes (32768 bytes). Policy *string `min:"1" type:"string"` // One or more tags. Each tag consists of a tag key and a tag value. Tag keys @@ -4614,7 +4731,6 @@ func (s *CreateKeyInput) SetTags(v []*Tag) *CreateKeyInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/CreateKeyResponse type CreateKeyOutput struct { _ struct{} `type:"structure"` @@ -4638,7 +4754,6 @@ func (s *CreateKeyOutput) SetKeyMetadata(v *KeyMetadata) *CreateKeyOutput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DecryptRequest type DecryptInput struct { _ struct{} `type:"structure"` @@ -4705,7 +4820,6 @@ func (s *DecryptInput) SetGrantTokens(v []*string) *DecryptInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DecryptResponse type DecryptOutput struct { _ struct{} `type:"structure"` @@ -4713,8 +4827,8 @@ type DecryptOutput struct { // no errors are encountered during the operation. KeyId *string `min:"1" type:"string"` - // Decrypted plaintext data. This value may not be returned if the customer - // master key is not available or if you didn't have permission to use it. + // Decrypted plaintext data. When you use the HTTP API or the AWS CLI, the value + // is Base64-encoded. Otherwise, it is not encoded. // // Plaintext is automatically base64 encoded/decoded by the SDK. Plaintext []byte `min:"1" type:"blob"` @@ -4742,12 +4856,11 @@ func (s *DecryptOutput) SetPlaintext(v []byte) *DecryptOutput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DeleteAliasRequest type DeleteAliasInput struct { _ struct{} `type:"structure"` // The alias to be deleted. The name must start with the word "alias" followed - // by a forward slash (alias/). Aliases that begin with "alias/AWS" are reserved. + // by a forward slash (alias/). Aliases that begin with "alias/aws" are reserved. // // AliasName is a required field AliasName *string `min:"1" type:"string" required:"true"` @@ -4785,7 +4898,6 @@ func (s *DeleteAliasInput) SetAliasName(v string) *DeleteAliasInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DeleteAliasOutput type DeleteAliasOutput struct { _ struct{} `type:"structure"` } @@ -4800,20 +4912,22 @@ func (s DeleteAliasOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DeleteImportedKeyMaterialRequest type DeleteImportedKeyMaterialInput struct { _ struct{} `type:"structure"` // The identifier of the CMK whose key material to delete. The CMK's Origin // must be EXTERNAL. // - // A valid identifier is the unique key ID or the Amazon Resource Name (ARN) - // of the CMK. Examples: + // Specify the key ID or the Amazon Resource Name (ARN) of the CMK. // - // * Unique key ID: 1234abcd-12ab-34cd-56ef-1234567890ab + // For example: + // + // * Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab // // * Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab // + // To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. + // // KeyId is a required field KeyId *string `min:"1" type:"string" required:"true"` } @@ -4850,7 +4964,6 @@ func (s *DeleteImportedKeyMaterialInput) SetKeyId(v string) *DeleteImportedKeyMa return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DeleteImportedKeyMaterialOutput type DeleteImportedKeyMaterialOutput struct { _ struct{} `type:"structure"` } @@ -4865,7 +4978,6 @@ func (s DeleteImportedKeyMaterialOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DescribeKeyRequest type DescribeKeyInput struct { _ struct{} `type:"structure"` @@ -4875,17 +4987,24 @@ type DescribeKeyInput struct { // in the AWS Key Management Service Developer Guide. GrantTokens []*string `type:"list"` - // A unique identifier for the customer master key. This value can be a globally - // unique identifier, a fully specified ARN to either an alias or a key, or - // an alias name prefixed by "alias/". + // A unique identifier for the customer master key (CMK). // - // * Key ARN Example - arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012 + // To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias name, + // or alias ARN. When using an alias name, prefix it with "alias/". To specify + // a CMK in a different AWS account, you must use the key ARN or alias ARN. // - // * Alias ARN Example - arn:aws:kms:us-east-1:123456789012:alias/MyAliasName + // For example: // - // * Globally Unique Key ID Example - 12345678-1234-1234-1234-123456789012 + // * Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab // - // * Alias Name Example - alias/MyAliasName + // * Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab + // + // * Alias name: alias/ExampleAlias + // + // * Alias ARN: arn:aws:kms:us-east-2:111122223333:alias/ExampleAlias + // + // To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. To + // get the alias name and alias ARN, use ListAliases. // // KeyId is a required field KeyId *string `min:"1" type:"string" required:"true"` @@ -4929,7 +5048,6 @@ func (s *DescribeKeyInput) SetKeyId(v string) *DescribeKeyInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DescribeKeyResponse type DescribeKeyOutput struct { _ struct{} `type:"structure"` @@ -4953,17 +5071,20 @@ func (s *DescribeKeyOutput) SetKeyMetadata(v *KeyMetadata) *DescribeKeyOutput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DisableKeyRequest type DisableKeyInput struct { _ struct{} `type:"structure"` - // A unique identifier for the CMK. + // A unique identifier for the customer master key (CMK). // - // Use the CMK's unique identifier or its Amazon Resource Name (ARN). For example: + // Specify the key ID or the Amazon Resource Name (ARN) of the CMK. // - // * Unique ID: 1234abcd-12ab-34cd-56ef-1234567890ab + // For example: // - // * ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab + // * Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab + // + // * Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab + // + // To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. // // KeyId is a required field KeyId *string `min:"1" type:"string" required:"true"` @@ -5001,7 +5122,6 @@ func (s *DisableKeyInput) SetKeyId(v string) *DisableKeyInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DisableKeyOutput type DisableKeyOutput struct { _ struct{} `type:"structure"` } @@ -5016,16 +5136,20 @@ func (s DisableKeyOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DisableKeyRotationRequest type DisableKeyRotationInput struct { _ struct{} `type:"structure"` - // A unique identifier for the customer master key. This value can be a globally - // unique identifier or the fully specified ARN to a key. + // A unique identifier for the customer master key (CMK). // - // * Key ARN Example - arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012 + // Specify the key ID or the Amazon Resource Name (ARN) of the CMK. // - // * Globally Unique Key ID Example - 12345678-1234-1234-1234-123456789012 + // For example: + // + // * Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab + // + // * Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab + // + // To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. // // KeyId is a required field KeyId *string `min:"1" type:"string" required:"true"` @@ -5063,7 +5187,6 @@ func (s *DisableKeyRotationInput) SetKeyId(v string) *DisableKeyRotationInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DisableKeyRotationOutput type DisableKeyRotationOutput struct { _ struct{} `type:"structure"` } @@ -5078,16 +5201,20 @@ func (s DisableKeyRotationOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/EnableKeyRequest type EnableKeyInput struct { _ struct{} `type:"structure"` - // A unique identifier for the customer master key. This value can be a globally - // unique identifier or the fully specified ARN to a key. + // A unique identifier for the customer master key (CMK). // - // * Key ARN Example - arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012 + // Specify the key ID or the Amazon Resource Name (ARN) of the CMK. // - // * Globally Unique Key ID Example - 12345678-1234-1234-1234-123456789012 + // For example: + // + // * Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab + // + // * Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab + // + // To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. // // KeyId is a required field KeyId *string `min:"1" type:"string" required:"true"` @@ -5125,7 +5252,6 @@ func (s *EnableKeyInput) SetKeyId(v string) *EnableKeyInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/EnableKeyOutput type EnableKeyOutput struct { _ struct{} `type:"structure"` } @@ -5140,16 +5266,20 @@ func (s EnableKeyOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/EnableKeyRotationRequest type EnableKeyRotationInput struct { _ struct{} `type:"structure"` - // A unique identifier for the customer master key. This value can be a globally - // unique identifier or the fully specified ARN to a key. + // A unique identifier for the customer master key (CMK). // - // * Key ARN Example - arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012 + // Specify the key ID or the Amazon Resource Name (ARN) of the CMK. // - // * Globally Unique Key ID Example - 12345678-1234-1234-1234-123456789012 + // For example: + // + // * Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab + // + // * Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab + // + // To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. // // KeyId is a required field KeyId *string `min:"1" type:"string" required:"true"` @@ -5187,7 +5317,6 @@ func (s *EnableKeyRotationInput) SetKeyId(v string) *EnableKeyRotationInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/EnableKeyRotationOutput type EnableKeyRotationOutput struct { _ struct{} `type:"structure"` } @@ -5202,7 +5331,6 @@ func (s EnableKeyRotationOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/EncryptRequest type EncryptInput struct { _ struct{} `type:"structure"` @@ -5218,17 +5346,24 @@ type EncryptInput struct { // in the AWS Key Management Service Developer Guide. GrantTokens []*string `type:"list"` - // A unique identifier for the customer master key. This value can be a globally - // unique identifier, a fully specified ARN to either an alias or a key, or - // an alias name prefixed by "alias/". + // A unique identifier for the customer master key (CMK). // - // * Key ARN Example - arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012 + // To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias name, + // or alias ARN. When using an alias name, prefix it with "alias/". To specify + // a CMK in a different AWS account, you must use the key ARN or alias ARN. // - // * Alias ARN Example - arn:aws:kms:us-east-1:123456789012:alias/MyAliasName + // For example: // - // * Globally Unique Key ID Example - 12345678-1234-1234-1234-123456789012 + // * Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab // - // * Alias Name Example - alias/MyAliasName + // * Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab + // + // * Alias name: alias/ExampleAlias + // + // * Alias ARN: arn:aws:kms:us-east-2:111122223333:alias/ExampleAlias + // + // To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. To + // get the alias name and alias ARN, use ListAliases. // // KeyId is a required field KeyId *string `min:"1" type:"string" required:"true"` @@ -5297,12 +5432,11 @@ func (s *EncryptInput) SetPlaintext(v []byte) *EncryptInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/EncryptResponse type EncryptOutput struct { _ struct{} `type:"structure"` - // The encrypted plaintext. If you are using the CLI, the value is Base64 encoded. - // Otherwise, it is not encoded. + // The encrypted plaintext. When you use the HTTP API or the AWS CLI, the value + // is Base64-encoded. Otherwise, it is not encoded. // // CiphertextBlob is automatically base64 encoded/decoded by the SDK. CiphertextBlob []byte `min:"1" type:"blob"` @@ -5333,7 +5467,6 @@ func (s *EncryptOutput) SetKeyId(v string) *EncryptOutput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GenerateDataKeyRequest type GenerateDataKeyInput struct { _ struct{} `type:"structure"` @@ -5352,18 +5485,23 @@ type GenerateDataKeyInput struct { // The identifier of the CMK under which to generate and encrypt the data encryption // key. // - // A valid identifier is the unique key ID or the Amazon Resource Name (ARN) - // of the CMK, or the alias name or ARN of an alias that refers to the CMK. - // Examples: + // To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias name, + // or alias ARN. When using an alias name, prefix it with "alias/". To specify + // a CMK in a different AWS account, you must use the key ARN or alias ARN. // - // * Unique key ID: 1234abcd-12ab-34cd-56ef-1234567890ab + // For example: // - // * CMK ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab + // * Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab + // + // * Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab // // * Alias name: alias/ExampleAlias // // * Alias ARN: arn:aws:kms:us-east-2:111122223333:alias/ExampleAlias // + // To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. To + // get the alias name and alias ARN, use ListAliases. + // // KeyId is a required field KeyId *string `min:"1" type:"string" required:"true"` @@ -5437,11 +5575,11 @@ func (s *GenerateDataKeyInput) SetNumberOfBytes(v int64) *GenerateDataKeyInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GenerateDataKeyResponse type GenerateDataKeyOutput struct { _ struct{} `type:"structure"` - // The encrypted data encryption key. + // The encrypted data encryption key. When you use the HTTP API or the AWS CLI, + // the value is Base64-encoded. Otherwise, it is not encoded. // // CiphertextBlob is automatically base64 encoded/decoded by the SDK. CiphertextBlob []byte `min:"1" type:"blob"` @@ -5450,8 +5588,9 @@ type GenerateDataKeyOutput struct { // and encrypted. KeyId *string `min:"1" type:"string"` - // The data encryption key. Use this data key for local encryption and decryption, - // then remove it from memory as soon as possible. + // The data encryption key. When you use the HTTP API or the AWS CLI, the value + // is Base64-encoded. Otherwise, it is not encoded. Use this data key for local + // encryption and decryption, then remove it from memory as soon as possible. // // Plaintext is automatically base64 encoded/decoded by the SDK. Plaintext []byte `min:"1" type:"blob"` @@ -5485,7 +5624,6 @@ func (s *GenerateDataKeyOutput) SetPlaintext(v []byte) *GenerateDataKeyOutput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GenerateDataKeyWithoutPlaintextRequest type GenerateDataKeyWithoutPlaintextInput struct { _ struct{} `type:"structure"` @@ -5501,21 +5639,26 @@ type GenerateDataKeyWithoutPlaintextInput struct { // in the AWS Key Management Service Developer Guide. GrantTokens []*string `type:"list"` - // The identifier of the CMK under which to generate and encrypt the data encryption - // key. + // The identifier of the customer master key (CMK) under which to generate and + // encrypt the data encryption key. // - // A valid identifier is the unique key ID or the Amazon Resource Name (ARN) - // of the CMK, or the alias name or ARN of an alias that refers to the CMK. - // Examples: + // To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias name, + // or alias ARN. When using an alias name, prefix it with "alias/". To specify + // a CMK in a different AWS account, you must use the key ARN or alias ARN. // - // * Unique key ID: 1234abcd-12ab-34cd-56ef-1234567890ab + // For example: // - // * CMK ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab + // * Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab + // + // * Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab // // * Alias name: alias/ExampleAlias // // * Alias ARN: arn:aws:kms:us-east-2:111122223333:alias/ExampleAlias // + // To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. To + // get the alias name and alias ARN, use ListAliases. + // // KeyId is a required field KeyId *string `min:"1" type:"string" required:"true"` @@ -5589,11 +5732,11 @@ func (s *GenerateDataKeyWithoutPlaintextInput) SetNumberOfBytes(v int64) *Genera return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GenerateDataKeyWithoutPlaintextResponse type GenerateDataKeyWithoutPlaintextOutput struct { _ struct{} `type:"structure"` - // The encrypted data encryption key. + // The encrypted data encryption key. When you use the HTTP API or the AWS CLI, + // the value is Base64-encoded. Otherwise, it is not encoded. // // CiphertextBlob is automatically base64 encoded/decoded by the SDK. CiphertextBlob []byte `min:"1" type:"blob"` @@ -5625,7 +5768,6 @@ func (s *GenerateDataKeyWithoutPlaintextOutput) SetKeyId(v string) *GenerateData return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GenerateRandomRequest type GenerateRandomInput struct { _ struct{} `type:"structure"` @@ -5662,11 +5804,11 @@ func (s *GenerateRandomInput) SetNumberOfBytes(v int64) *GenerateRandomInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GenerateRandomResponse type GenerateRandomOutput struct { _ struct{} `type:"structure"` - // The random byte string. + // The random byte string. When you use the HTTP API or the AWS CLI, the value + // is Base64-encoded. Otherwise, it is not encoded. // // Plaintext is automatically base64 encoded/decoded by the SDK. Plaintext []byte `min:"1" type:"blob"` @@ -5688,22 +5830,26 @@ func (s *GenerateRandomOutput) SetPlaintext(v []byte) *GenerateRandomOutput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GetKeyPolicyRequest type GetKeyPolicyInput struct { _ struct{} `type:"structure"` - // A unique identifier for the customer master key. This value can be a globally - // unique identifier or the fully specified ARN to a key. + // A unique identifier for the customer master key (CMK). // - // * Key ARN Example - arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012 + // Specify the key ID or the Amazon Resource Name (ARN) of the CMK. // - // * Globally Unique Key ID Example - 12345678-1234-1234-1234-123456789012 + // For example: + // + // * Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab + // + // * Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab + // + // To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. // // KeyId is a required field KeyId *string `min:"1" type:"string" required:"true"` - // String that contains the name of the policy. Currently, this must be "default". - // Policy names can be discovered by calling ListKeyPolicies. + // Specifies the name of the key policy. The only valid name is default. To + // get the names of key policies, use ListKeyPolicies. // // PolicyName is a required field PolicyName *string `min:"1" type:"string" required:"true"` @@ -5753,11 +5899,10 @@ func (s *GetKeyPolicyInput) SetPolicyName(v string) *GetKeyPolicyInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GetKeyPolicyResponse type GetKeyPolicyOutput struct { _ struct{} `type:"structure"` - // A policy document in JSON format. + // A key policy document in JSON format. Policy *string `min:"1" type:"string"` } @@ -5777,16 +5922,21 @@ func (s *GetKeyPolicyOutput) SetPolicy(v string) *GetKeyPolicyOutput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GetKeyRotationStatusRequest type GetKeyRotationStatusInput struct { _ struct{} `type:"structure"` - // A unique identifier for the customer master key. This value can be a globally - // unique identifier or the fully specified ARN to a key. + // A unique identifier for the customer master key (CMK). // - // * Key ARN Example - arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012 + // Specify the key ID or the Amazon Resource Name (ARN) of the CMK. To specify + // a CMK in a different AWS account, you must use the key ARN. // - // * Globally Unique Key ID Example - 12345678-1234-1234-1234-123456789012 + // For example: + // + // * Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab + // + // * Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab + // + // To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. // // KeyId is a required field KeyId *string `min:"1" type:"string" required:"true"` @@ -5824,7 +5974,6 @@ func (s *GetKeyRotationStatusInput) SetKeyId(v string) *GetKeyRotationStatusInpu return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GetKeyRotationStatusResponse type GetKeyRotationStatusOutput struct { _ struct{} `type:"structure"` @@ -5848,20 +5997,22 @@ func (s *GetKeyRotationStatusOutput) SetKeyRotationEnabled(v bool) *GetKeyRotati return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GetParametersForImportRequest type GetParametersForImportInput struct { _ struct{} `type:"structure"` // The identifier of the CMK into which you will import key material. The CMK's // Origin must be EXTERNAL. // - // A valid identifier is the unique key ID or the Amazon Resource Name (ARN) - // of the CMK. Examples: + // Specify the key ID or the Amazon Resource Name (ARN) of the CMK. // - // * Unique key ID: 1234abcd-12ab-34cd-56ef-1234567890ab + // For example: + // + // * Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab // // * Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab // + // To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. + // // KeyId is a required field KeyId *string `min:"1" type:"string" required:"true"` @@ -5930,7 +6081,6 @@ func (s *GetParametersForImportInput) SetWrappingKeySpec(v string) *GetParameter return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GetParametersForImportResponse type GetParametersForImportOutput struct { _ struct{} `type:"structure"` @@ -5945,7 +6095,7 @@ type GetParametersForImportOutput struct { // The time at which the import token and public key are no longer valid. After // this time, you cannot use them to make an ImportKeyMaterial request and you - // must send another GetParametersForImport request to retrieve new ones. + // must send another GetParametersForImport request to get new ones. ParametersValidTo *time.Time `type:"timestamp" timestampFormat:"unix"` // The public key to use to encrypt the key material before importing it with @@ -6001,7 +6151,6 @@ func (s *GetParametersForImportOutput) SetPublicKey(v []byte) *GetParametersForI // context as input. A grant that allows the Encrypt operation does so only // when the encryption context of the Encrypt operation satisfies the grant // constraints. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GrantConstraints type GrantConstraints struct { _ struct{} `type:"structure"` @@ -6043,7 +6192,6 @@ func (s *GrantConstraints) SetEncryptionContextSubset(v map[string]*string) *Gra } // Contains information about an entry in a list of grants. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GrantListEntry type GrantListEntry struct { _ struct{} `type:"structure"` @@ -6142,7 +6290,6 @@ func (s *GrantListEntry) SetRetiringPrincipal(v string) *GrantListEntry { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ImportKeyMaterialRequest type ImportKeyMaterialInput struct { _ struct{} `type:"structure"` @@ -6172,13 +6319,16 @@ type ImportKeyMaterialInput struct { // The identifier of the CMK to import the key material into. The CMK's Origin // must be EXTERNAL. // - // A valid identifier is the unique key ID or the Amazon Resource Name (ARN) - // of the CMK. Examples: + // Specify the key ID or the Amazon Resource Name (ARN) of the CMK. // - // * Unique key ID: 1234abcd-12ab-34cd-56ef-1234567890ab + // For example: + // + // * Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab // // * Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab // + // To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. + // // KeyId is a required field KeyId *string `min:"1" type:"string" required:"true"` @@ -6257,7 +6407,6 @@ func (s *ImportKeyMaterialInput) SetValidTo(v time.Time) *ImportKeyMaterialInput return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ImportKeyMaterialResponse type ImportKeyMaterialOutput struct { _ struct{} `type:"structure"` } @@ -6273,7 +6422,6 @@ func (s ImportKeyMaterialOutput) GoString() string { } // Contains information about each entry in the key list. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/KeyListEntry type KeyListEntry struct { _ struct{} `type:"structure"` @@ -6310,7 +6458,6 @@ func (s *KeyListEntry) SetKeyId(v string) *KeyListEntry { // // This data type is used as a response element for the CreateKey and DescribeKey // operations. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/KeyMetadata type KeyMetadata struct { _ struct{} `type:"structure"` @@ -6463,7 +6610,6 @@ func (s *KeyMetadata) SetValidTo(v time.Time) *KeyMetadata { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ListAliasesRequest type ListAliasesInput struct { _ struct{} `type:"structure"` @@ -6519,11 +6665,10 @@ func (s *ListAliasesInput) SetMarker(v string) *ListAliasesInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ListAliasesResponse type ListAliasesOutput struct { _ struct{} `type:"structure"` - // A list of key aliases in the user's account. + // A list of aliases. Aliases []*AliasListEntry `type:"list"` // When Truncated is true, this element is present and contains the value to @@ -6531,7 +6676,7 @@ type ListAliasesOutput struct { NextMarker *string `min:"1" type:"string"` // A flag that indicates whether there are more items in the list. When this - // value is true, the list in this response is truncated. To retrieve more items, + // value is true, the list in this response is truncated. To get more items, // pass the value of the NextMarker element in this response to the Marker parameter // in a subsequent request. Truncated *bool `type:"boolean"` @@ -6565,16 +6710,21 @@ func (s *ListAliasesOutput) SetTruncated(v bool) *ListAliasesOutput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ListGrantsRequest type ListGrantsInput struct { _ struct{} `type:"structure"` - // A unique identifier for the customer master key. This value can be a globally - // unique identifier or the fully specified ARN to a key. + // A unique identifier for the customer master key (CMK). // - // * Key ARN Example - arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012 + // Specify the key ID or the Amazon Resource Name (ARN) of the CMK. To specify + // a CMK in a different AWS account, you must use the key ARN. // - // * Globally Unique Key ID Example - 12345678-1234-1234-1234-123456789012 + // For example: + // + // * Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab + // + // * Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab + // + // To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. // // KeyId is a required field KeyId *string `min:"1" type:"string" required:"true"` @@ -6643,7 +6793,6 @@ func (s *ListGrantsInput) SetMarker(v string) *ListGrantsInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ListGrantsResponse type ListGrantsResponse struct { _ struct{} `type:"structure"` @@ -6655,7 +6804,7 @@ type ListGrantsResponse struct { NextMarker *string `min:"1" type:"string"` // A flag that indicates whether there are more items in the list. When this - // value is true, the list in this response is truncated. To retrieve more items, + // value is true, the list in this response is truncated. To get more items, // pass the value of the NextMarker element in this response to the Marker parameter // in a subsequent request. Truncated *bool `type:"boolean"` @@ -6689,17 +6838,21 @@ func (s *ListGrantsResponse) SetTruncated(v bool) *ListGrantsResponse { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ListKeyPoliciesRequest type ListKeyPoliciesInput struct { _ struct{} `type:"structure"` - // A unique identifier for the customer master key (CMK). You can use the unique - // key ID or the Amazon Resource Name (ARN) of the CMK. Examples: + // A unique identifier for the customer master key (CMK). // - // * Unique key ID: 1234abcd-12ab-34cd-56ef-1234567890ab + // Specify the key ID or the Amazon Resource Name (ARN) of the CMK. + // + // For example: + // + // * Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab // // * Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab // + // To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. + // // KeyId is a required field KeyId *string `min:"1" type:"string" required:"true"` @@ -6769,7 +6922,6 @@ func (s *ListKeyPoliciesInput) SetMarker(v string) *ListKeyPoliciesInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ListKeyPoliciesResponse type ListKeyPoliciesOutput struct { _ struct{} `type:"structure"` @@ -6777,12 +6929,12 @@ type ListKeyPoliciesOutput struct { // use for the Marker parameter in a subsequent request. NextMarker *string `min:"1" type:"string"` - // A list of policy names. Currently, there is only one policy and it is named - // "Default". + // A list of key policy names. Currently, there is only one key policy per CMK + // and it is always named default. PolicyNames []*string `type:"list"` // A flag that indicates whether there are more items in the list. When this - // value is true, the list in this response is truncated. To retrieve more items, + // value is true, the list in this response is truncated. To get more items, // pass the value of the NextMarker element in this response to the Marker parameter // in a subsequent request. Truncated *bool `type:"boolean"` @@ -6816,7 +6968,6 @@ func (s *ListKeyPoliciesOutput) SetTruncated(v bool) *ListKeyPoliciesOutput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ListKeysRequest type ListKeysInput struct { _ struct{} `type:"structure"` @@ -6872,11 +7023,10 @@ func (s *ListKeysInput) SetMarker(v string) *ListKeysInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ListKeysResponse type ListKeysOutput struct { _ struct{} `type:"structure"` - // A list of keys. + // A list of customer master keys (CMKs). Keys []*KeyListEntry `type:"list"` // When Truncated is true, this element is present and contains the value to @@ -6884,7 +7034,7 @@ type ListKeysOutput struct { NextMarker *string `min:"1" type:"string"` // A flag that indicates whether there are more items in the list. When this - // value is true, the list in this response is truncated. To retrieve more items, + // value is true, the list in this response is truncated. To get more items, // pass the value of the NextMarker element in this response to the Marker parameter // in a subsequent request. Truncated *bool `type:"boolean"` @@ -6918,17 +7068,21 @@ func (s *ListKeysOutput) SetTruncated(v bool) *ListKeysOutput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ListResourceTagsRequest type ListResourceTagsInput struct { _ struct{} `type:"structure"` - // A unique identifier for the CMK whose tags you are listing. You can use the - // unique key ID or the Amazon Resource Name (ARN) of the CMK. Examples: + // A unique identifier for the customer master key (CMK). // - // * Unique key ID: 1234abcd-12ab-34cd-56ef-1234567890ab + // Specify the key ID or the Amazon Resource Name (ARN) of the CMK. + // + // For example: + // + // * Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab // // * Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab // + // To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. + // // KeyId is a required field KeyId *string `min:"1" type:"string" required:"true"` @@ -6999,7 +7153,6 @@ func (s *ListResourceTagsInput) SetMarker(v string) *ListResourceTagsInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ListResourceTagsResponse type ListResourceTagsOutput struct { _ struct{} `type:"structure"` @@ -7013,7 +7166,7 @@ type ListResourceTagsOutput struct { Tags []*Tag `type:"list"` // A flag that indicates whether there are more items in the list. When this - // value is true, the list in this response is truncated. To retrieve more items, + // value is true, the list in this response is truncated. To get more items, // pass the value of the NextMarker element in this response to the Marker parameter // in a subsequent request. Truncated *bool `type:"boolean"` @@ -7047,7 +7200,6 @@ func (s *ListResourceTagsOutput) SetTruncated(v bool) *ListResourceTagsOutput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ListRetirableGrantsRequest type ListRetirableGrantsInput struct { _ struct{} `type:"structure"` @@ -7127,14 +7279,13 @@ func (s *ListRetirableGrantsInput) SetRetiringPrincipal(v string) *ListRetirable return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/PutKeyPolicyRequest type PutKeyPolicyInput struct { _ struct{} `type:"structure"` // A flag to indicate whether to bypass the key policy lockout safety check. // - // Setting this value to true increases the likelihood that the CMK becomes - // unmanageable. Do not set this value to true indiscriminately. + // Setting this value to true increases the risk that the CMK becomes unmanageable. + // Do not set this value to true indiscriminately. // // For more information, refer to the scenario in the Default Key Policy (http://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-root-enable-iam) // section in the AWS Key Management Service Developer Guide. @@ -7145,44 +7296,47 @@ type PutKeyPolicyInput struct { // The default value is false. BypassPolicyLockoutSafetyCheck *bool `type:"boolean"` - // A unique identifier for the CMK. + // A unique identifier for the customer master key (CMK). // - // Use the CMK's unique identifier or its Amazon Resource Name (ARN). For example: + // Specify the key ID or the Amazon Resource Name (ARN) of the CMK. // - // * Unique ID: 1234abcd-12ab-34cd-56ef-1234567890ab + // For example: // - // * ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab + // * Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab + // + // * Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab + // + // To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. // // KeyId is a required field KeyId *string `min:"1" type:"string" required:"true"` // The key policy to attach to the CMK. // - // If you do not set BypassPolicyLockoutSafetyCheck to true, the policy must - // meet the following criteria: + // The key policy must meet the following criteria: // - // * It must allow the principal that is making the PutKeyPolicy request - // to make a subsequent PutKeyPolicy request on the CMK. This reduces the - // likelihood that the CMK becomes unmanageable. For more information, refer - // to the scenario in the Default Key Policy (http://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-root-enable-iam) - // section in the AWS Key Management Service Developer Guide. + // * If you don't set BypassPolicyLockoutSafetyCheck to true, the key policy + // must allow the principal that is making the PutKeyPolicy request to make + // a subsequent PutKeyPolicy request on the CMK. This reduces the risk that + // the CMK becomes unmanageable. For more information, refer to the scenario + // in the Default Key Policy (http://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-root-enable-iam) + // section of the AWS Key Management Service Developer Guide. // - // * The principals that are specified in the key policy must exist and be - // visible to AWS KMS. When you create a new AWS principal (for example, - // an IAM user or role), you might need to enforce a delay before specifying - // the new principal in a key policy because the new principal might not - // immediately be visible to AWS KMS. For more information, see Changes that - // I make are not always immediately visible (http://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_general.html#troubleshoot_general_eventual-consistency) - // in the IAM User Guide. + // * Each statement in the key policy must contain one or more principals. + // The principals in the key policy must exist and be visible to AWS KMS. + // When you create a new AWS principal (for example, an IAM user or role), + // you might need to enforce a delay before including the new principal in + // a key policy because the new principal might not be immediately visible + // to AWS KMS. For more information, see Changes that I make are not always + // immediately visible (http://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_general.html#troubleshoot_general_eventual-consistency) + // in the AWS Identity and Access Management User Guide. // - // The policy size limit is 32 KiB (32768 bytes). + // The key policy size limit is 32 kilobytes (32768 bytes). // // Policy is a required field Policy *string `min:"1" type:"string" required:"true"` - // The name of the key policy. - // - // This value must be default. + // The name of the key policy. The only valid value is default. // // PolicyName is a required field PolicyName *string `min:"1" type:"string" required:"true"` @@ -7250,7 +7404,6 @@ func (s *PutKeyPolicyInput) SetPolicyName(v string) *PutKeyPolicyInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/PutKeyPolicyOutput type PutKeyPolicyOutput struct { _ struct{} `type:"structure"` } @@ -7265,7 +7418,6 @@ func (s PutKeyPolicyOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ReEncryptRequest type ReEncryptInput struct { _ struct{} `type:"structure"` @@ -7279,17 +7431,24 @@ type ReEncryptInput struct { // Encryption context to use when the data is reencrypted. DestinationEncryptionContext map[string]*string `type:"map"` - // A unique identifier for the CMK to use to reencrypt the data. This value - // can be a globally unique identifier, a fully specified ARN to either an alias - // or a key, or an alias name prefixed by "alias/". + // A unique identifier for the CMK that is used to reencrypt the data. // - // * Key ARN Example - arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012 + // To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias name, + // or alias ARN. When using an alias name, prefix it with "alias/". To specify + // a CMK in a different AWS account, you must use the key ARN or alias ARN. // - // * Alias ARN Example - arn:aws:kms:us-east-1:123456789012:alias/MyAliasName + // For example: // - // * Globally Unique Key ID Example - 12345678-1234-1234-1234-123456789012 + // * Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab // - // * Alias Name Example - alias/MyAliasName + // * Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab + // + // * Alias name: alias/ExampleAlias + // + // * Alias ARN: arn:aws:kms:us-east-2:111122223333:alias/ExampleAlias + // + // To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. To + // get the alias name and alias ARN, use ListAliases. // // DestinationKeyId is a required field DestinationKeyId *string `min:"1" type:"string" required:"true"` @@ -7367,11 +7526,11 @@ func (s *ReEncryptInput) SetSourceEncryptionContext(v map[string]*string) *ReEnc return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ReEncryptResponse type ReEncryptOutput struct { _ struct{} `type:"structure"` - // The reencrypted data. + // The reencrypted data. When you use the HTTP API or the AWS CLI, the value + // is Base64-encoded. Otherwise, it is not encoded. // // CiphertextBlob is automatically base64 encoded/decoded by the SDK. CiphertextBlob []byte `min:"1" type:"blob"` @@ -7411,7 +7570,6 @@ func (s *ReEncryptOutput) SetSourceKeyId(v string) *ReEncryptOutput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/RetireGrantRequest type RetireGrantInput struct { _ struct{} `type:"structure"` @@ -7424,9 +7582,9 @@ type RetireGrantInput struct { // Token that identifies the grant to be retired. GrantToken *string `min:"1" type:"string"` - // The Amazon Resource Name of the CMK associated with the grant. Example: + // The Amazon Resource Name (ARN) of the CMK associated with the grant. // - // * arn:aws:kms:us-east-2:444455556666:key/1234abcd-12ab-34cd-56ef-1234567890ab + // For example: arn:aws:kms:us-east-2:444455556666:key/1234abcd-12ab-34cd-56ef-1234567890ab KeyId *string `min:"1" type:"string"` } @@ -7477,7 +7635,6 @@ func (s *RetireGrantInput) SetKeyId(v string) *RetireGrantInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/RetireGrantOutput type RetireGrantOutput struct { _ struct{} `type:"structure"` } @@ -7492,7 +7649,6 @@ func (s RetireGrantOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/RevokeGrantRequest type RevokeGrantInput struct { _ struct{} `type:"structure"` @@ -7502,12 +7658,17 @@ type RevokeGrantInput struct { GrantId *string `min:"1" type:"string" required:"true"` // A unique identifier for the customer master key associated with the grant. - // This value can be a globally unique identifier or the fully specified ARN - // to a key. // - // * Key ARN Example - arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012 + // Specify the key ID or the Amazon Resource Name (ARN) of the CMK. To specify + // a CMK in a different AWS account, you must use the key ARN. // - // * Globally Unique Key ID Example - 12345678-1234-1234-1234-123456789012 + // For example: + // + // * Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab + // + // * Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab + // + // To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. // // KeyId is a required field KeyId *string `min:"1" type:"string" required:"true"` @@ -7557,7 +7718,6 @@ func (s *RevokeGrantInput) SetKeyId(v string) *RevokeGrantInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/RevokeGrantOutput type RevokeGrantOutput struct { _ struct{} `type:"structure"` } @@ -7572,21 +7732,20 @@ func (s RevokeGrantOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ScheduleKeyDeletionRequest type ScheduleKeyDeletionInput struct { _ struct{} `type:"structure"` - // The unique identifier for the customer master key (CMK) to delete. + // The unique identifier of the customer master key (CMK) to delete. // - // To specify this value, use the unique key ID or the Amazon Resource Name - // (ARN) of the CMK. Examples: + // Specify the key ID or the Amazon Resource Name (ARN) of the CMK. // - // * Unique key ID: 1234abcd-12ab-34cd-56ef-1234567890ab + // For example: + // + // * Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab // // * Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab // - // To obtain the unique key ID and key ARN for a given CMK, use ListKeys or - // DescribeKey. + // To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. // // KeyId is a required field KeyId *string `min:"1" type:"string" required:"true"` @@ -7640,7 +7799,6 @@ func (s *ScheduleKeyDeletionInput) SetPendingWindowInDays(v int64) *ScheduleKeyD return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ScheduleKeyDeletionResponse type ScheduleKeyDeletionOutput struct { _ struct{} `type:"structure"` @@ -7676,7 +7834,10 @@ func (s *ScheduleKeyDeletionOutput) SetKeyId(v string) *ScheduleKeyDeletionOutpu // A key-value pair. A tag consists of a tag key and a tag value. Tag keys and // tag values are both required, but tag values can be empty (null) strings. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/Tag +// +// For information about the rules that apply to tag keys and tag values, see +// User-Defined Tag Restrictions (http://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/allocation-tag-restrictions.html) +// in the AWS Billing and Cost Management User Guide. type Tag struct { _ struct{} `type:"structure"` @@ -7732,17 +7893,21 @@ func (s *Tag) SetTagValue(v string) *Tag { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/TagResourceRequest type TagResourceInput struct { _ struct{} `type:"structure"` - // A unique identifier for the CMK you are tagging. You can use the unique key - // ID or the Amazon Resource Name (ARN) of the CMK. Examples: + // A unique identifier for the CMK you are tagging. // - // * Unique key ID: 1234abcd-12ab-34cd-56ef-1234567890ab + // Specify the key ID or the Amazon Resource Name (ARN) of the CMK. + // + // For example: + // + // * Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab // // * Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab // + // To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. + // // KeyId is a required field KeyId *string `min:"1" type:"string" required:"true"` @@ -7803,7 +7968,6 @@ func (s *TagResourceInput) SetTags(v []*Tag) *TagResourceInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/TagResourceOutput type TagResourceOutput struct { _ struct{} `type:"structure"` } @@ -7818,17 +7982,21 @@ func (s TagResourceOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/UntagResourceRequest type UntagResourceInput struct { _ struct{} `type:"structure"` - // A unique identifier for the CMK from which you are removing tags. You can - // use the unique key ID or the Amazon Resource Name (ARN) of the CMK. Examples: + // A unique identifier for the CMK from which you are removing tags. // - // * Unique key ID: 1234abcd-12ab-34cd-56ef-1234567890ab + // Specify the key ID or the Amazon Resource Name (ARN) of the CMK. + // + // For example: + // + // * Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab // // * Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab // + // To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. + // // KeyId is a required field KeyId *string `min:"1" type:"string" required:"true"` @@ -7879,7 +8047,6 @@ func (s *UntagResourceInput) SetTagKeys(v []*string) *UntagResourceInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/UntagResourceOutput type UntagResourceOutput struct { _ struct{} `type:"structure"` } @@ -7894,7 +8061,6 @@ func (s UntagResourceOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/UpdateAliasRequest type UpdateAliasInput struct { _ struct{} `type:"structure"` @@ -7905,16 +8071,19 @@ type UpdateAliasInput struct { // AliasName is a required field AliasName *string `min:"1" type:"string" required:"true"` - // Unique identifier of the customer master key to be mapped to the alias. This - // value can be a globally unique identifier or the fully specified ARN of a - // key. + // Unique identifier of the customer master key to be mapped to the alias. // - // * Key ARN Example - arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012 + // Specify the key ID or the Amazon Resource Name (ARN) of the CMK. // - // * Globally Unique Key ID Example - 12345678-1234-1234-1234-123456789012 + // For example: // - // You can call ListAliases to verify that the alias is mapped to the correct - // TargetKeyId. + // * Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab + // + // * Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab + // + // To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. + // + // To verify that the alias is mapped to the correct CMK, use ListAliases. // // TargetKeyId is a required field TargetKeyId *string `min:"1" type:"string" required:"true"` @@ -7964,7 +8133,6 @@ func (s *UpdateAliasInput) SetTargetKeyId(v string) *UpdateAliasInput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/UpdateAliasOutput type UpdateAliasOutput struct { _ struct{} `type:"structure"` } @@ -7979,7 +8147,6 @@ func (s UpdateAliasOutput) GoString() string { return s.String() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/UpdateKeyDescriptionRequest type UpdateKeyDescriptionInput struct { _ struct{} `type:"structure"` @@ -7988,12 +8155,17 @@ type UpdateKeyDescriptionInput struct { // Description is a required field Description *string `type:"string" required:"true"` - // A unique identifier for the CMK. This value can be a globally unique identifier - // or the fully specified ARN to a key. + // A unique identifier for the customer master key (CMK). // - // * Key ARN Example - arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012 + // Specify the key ID or the Amazon Resource Name (ARN) of the CMK. // - // * Globally Unique Key ID Example - 12345678-1234-1234-1234-123456789012 + // For example: + // + // * Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab + // + // * Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab + // + // To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. // // KeyId is a required field KeyId *string `min:"1" type:"string" required:"true"` @@ -8040,7 +8212,6 @@ func (s *UpdateKeyDescriptionInput) SetKeyId(v string) *UpdateKeyDescriptionInpu return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/UpdateKeyDescriptionOutput type UpdateKeyDescriptionOutput struct { _ struct{} `type:"structure"` } diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/kms/doc.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/kms/doc.go index 0b6a33ca97..3bab059f30 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/kms/doc.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/kms/doc.go @@ -82,7 +82,7 @@ // // Using the Client // -// To AWS Key Management Service with the SDK use the New function to create +// To contact AWS Key Management Service with the SDK use the New function to create // a new service client. With that client you can make API requests to the service. // These clients are safe to use concurrently. // diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/kms/errors.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/kms/errors.go index 0358c94437..2a6511da97 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/kms/errors.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/kms/errors.go @@ -28,9 +28,8 @@ const ( // "ExpiredImportTokenException". // // The request was rejected because the provided import token is expired. Use - // GetParametersForImport to retrieve a new import token and public key, use - // the new public key to encrypt the key material, and then try the request - // again. + // GetParametersForImport to get a new import token and public key, use the + // new public key to encrypt the key material, and then try the request again. ErrCodeExpiredImportTokenException = "ExpiredImportTokenException" // ErrCodeIncorrectKeyMaterialException for service response error code @@ -42,11 +41,11 @@ const ( ErrCodeIncorrectKeyMaterialException = "IncorrectKeyMaterialException" // ErrCodeInternalException for service response error code - // "InternalException". + // "KMSInternalException". // // The request was rejected because an internal exception occurred. The request // can be retried. - ErrCodeInternalException = "InternalException" + ErrCodeInternalException = "KMSInternalException" // ErrCodeInvalidAliasNameException for service response error code // "InvalidAliasNameException". @@ -63,8 +62,9 @@ const ( // ErrCodeInvalidCiphertextException for service response error code // "InvalidCiphertextException". // - // The request was rejected because the specified ciphertext has been corrupted - // or is otherwise invalid. + // The request was rejected because the specified ciphertext, or additional + // authenticated data incorporated into the ciphertext, such as the encryption + // context, is corrupted, missing, or otherwise invalid. ErrCodeInvalidCiphertextException = "InvalidCiphertextException" // ErrCodeInvalidGrantIdException for service response error code @@ -100,7 +100,7 @@ const ( ErrCodeInvalidMarkerException = "InvalidMarkerException" // ErrCodeInvalidStateException for service response error code - // "InvalidStateException". + // "KMSInvalidStateException". // // The request was rejected because the state of the specified resource is not // valid for this request. @@ -108,7 +108,7 @@ const ( // For more information about how key state affects the use of a CMK, see How // Key State Affects Use of a Customer Master Key (http://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. - ErrCodeInvalidStateException = "InvalidStateException" + ErrCodeInvalidStateException = "KMSInvalidStateException" // ErrCodeKeyUnavailableException for service response error code // "KeyUnavailableException". diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/kms/service.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/kms/service.go index 3ff65de5e5..6d062f32fc 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/kms/service.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/kms/service.go @@ -29,8 +29,9 @@ var initRequest func(*request.Request) // Service information constants const ( - ServiceName = "kms" // Service endpoint prefix API calls made to. - EndpointsID = ServiceName // Service ID for Regions and Endpoints metadata. + ServiceName = "kms" // Name of service. + EndpointsID = ServiceName // ID to lookup a service endpoint with. + ServiceID = "KMS" // ServiceID is a unique identifer of a specific service. ) // New creates a new instance of the KMS client with a session. @@ -55,6 +56,7 @@ func newClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegio cfg, metadata.ClientInfo{ ServiceName: ServiceName, + ServiceID: ServiceID, SigningName: signingName, SigningRegion: signingRegion, Endpoint: endpoint, diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/sts/api.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/sts/api.go index 3b8be4378a..b46da12ca3 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/sts/api.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/sts/api.go @@ -14,7 +14,7 @@ const opAssumeRole = "AssumeRole" // AssumeRoleRequest generates a "aws/request.Request" representing the // client's request for the AssumeRole operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -35,7 +35,7 @@ const opAssumeRole = "AssumeRole" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/AssumeRole +// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/AssumeRole func (c *STS) AssumeRoleRequest(input *AssumeRoleInput) (req *request.Request, output *AssumeRoleOutput) { op := &request.Operation{ Name: opAssumeRole, @@ -88,9 +88,18 @@ func (c *STS) AssumeRoleRequest(input *AssumeRoleInput) (req *request.Request, o // Scenarios for Temporary Credentials (http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html#sts-introduction) // in the IAM User Guide. // -// The temporary security credentials are valid for the duration that you specified -// when calling AssumeRole, which can be from 900 seconds (15 minutes) to a -// maximum of 3600 seconds (1 hour). The default is 1 hour. +// By default, the temporary security credentials created by AssumeRole 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 (http://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 operations but +// does not apply when you use those operations to create a console URL. For +// more information, see Using IAM Roles (http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html) +// in the IAM User Guide. // // The temporary security credentials created by AssumeRole can be used to make // API calls to any AWS service with the following exception: you cannot call @@ -121,7 +130,12 @@ func (c *STS) AssumeRoleRequest(input *AssumeRoleInput) (req *request.Request, o // the user to call AssumeRole on the ARN of the role in the other account. // If the user is in the same account as the role, then you can either attach // a policy to the user (identical to the previous different account user), -// or you can add the user as a principal directly in the role's trust policy +// or you can add the user as a principal directly in the role's trust policy. +// In this case, the trust policy acts as the only resource-based policy in +// IAM, and users in the same account as the role do not need explicit permission +// to assume the role. For more information about trust policies and resource-based +// policies, see IAM Policies (http://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) +// in the IAM User Guide. // // Using MFA with AssumeRole // @@ -168,7 +182,7 @@ func (c *STS) AssumeRoleRequest(input *AssumeRoleInput) (req *request.Request, o // and Deactivating AWS STS in an AWS Region (http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html) // in the IAM User Guide. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/AssumeRole +// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/AssumeRole func (c *STS) AssumeRole(input *AssumeRoleInput) (*AssumeRoleOutput, error) { req, out := c.AssumeRoleRequest(input) return out, req.Send() @@ -194,7 +208,7 @@ const opAssumeRoleWithSAML = "AssumeRoleWithSAML" // AssumeRoleWithSAMLRequest generates a "aws/request.Request" representing the // client's request for the AssumeRoleWithSAML operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -215,7 +229,7 @@ const opAssumeRoleWithSAML = "AssumeRoleWithSAML" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/AssumeRoleWithSAML +// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/AssumeRoleWithSAML func (c *STS) AssumeRoleWithSAMLRequest(input *AssumeRoleWithSAMLInput) (req *request.Request, output *AssumeRoleWithSAMLOutput) { op := &request.Operation{ Name: opAssumeRoleWithSAML, @@ -247,11 +261,20 @@ func (c *STS) AssumeRoleWithSAMLRequest(input *AssumeRoleWithSAMLInput) (req *re // an access key ID, a secret access key, and a security token. Applications // can use these temporary security credentials to sign calls to AWS services. // -// The temporary security credentials are valid for the duration that you specified -// when calling AssumeRole, or until the time specified in the SAML authentication -// response's SessionNotOnOrAfter value, whichever is shorter. The duration -// can be from 900 seconds (15 minutes) to a maximum of 3600 seconds (1 hour). -// The default is 1 hour. +// 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 (http://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 operations but +// does not apply when you use those operations to create a console URL. For +// more information, see Using IAM Roles (http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html) +// in the IAM User Guide. // // The temporary security credentials created by AssumeRoleWithSAML can be used // to make API calls to any AWS service with the following exception: you cannot @@ -341,7 +364,7 @@ func (c *STS) AssumeRoleWithSAMLRequest(input *AssumeRoleWithSAMLInput) (req *re // and Deactivating AWS STS in an AWS Region (http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html) // in the IAM User Guide. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/AssumeRoleWithSAML +// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/AssumeRoleWithSAML func (c *STS) AssumeRoleWithSAML(input *AssumeRoleWithSAMLInput) (*AssumeRoleWithSAMLOutput, error) { req, out := c.AssumeRoleWithSAMLRequest(input) return out, req.Send() @@ -367,7 +390,7 @@ const opAssumeRoleWithWebIdentity = "AssumeRoleWithWebIdentity" // AssumeRoleWithWebIdentityRequest generates a "aws/request.Request" representing the // client's request for the AssumeRoleWithWebIdentity operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -388,7 +411,7 @@ const opAssumeRoleWithWebIdentity = "AssumeRoleWithWebIdentity" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/AssumeRoleWithWebIdentity +// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/AssumeRoleWithWebIdentity func (c *STS) AssumeRoleWithWebIdentityRequest(input *AssumeRoleWithWebIdentityInput) (req *request.Request, output *AssumeRoleWithWebIdentityOutput) { op := &request.Operation{ Name: opAssumeRoleWithWebIdentity, @@ -438,9 +461,18 @@ func (c *STS) AssumeRoleWithWebIdentityRequest(input *AssumeRoleWithWebIdentityI // key ID, a secret access key, and a security token. Applications can use these // temporary security credentials to sign calls to AWS service APIs. // -// The credentials are valid for the duration that you specified when calling -// AssumeRoleWithWebIdentity, which can be from 900 seconds (15 minutes) to -// a maximum of 3600 seconds (1 hour). The default is 1 hour. +// 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 (http://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 operations but +// does not apply when you use those operations to create a console URL. For +// more information, see Using IAM Roles (http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html) +// in the IAM User Guide. // // The temporary security credentials created by AssumeRoleWithWebIdentity can // be used to make API calls to any AWS service with the following exception: @@ -492,7 +524,7 @@ func (c *STS) AssumeRoleWithWebIdentityRequest(input *AssumeRoleWithWebIdentityI // the information from these providers to get and use temporary security // credentials. // -// * Web Identity Federation with Mobile Applications (http://aws.amazon.com/articles/4617974389850313). +// * 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. @@ -543,7 +575,7 @@ func (c *STS) AssumeRoleWithWebIdentityRequest(input *AssumeRoleWithWebIdentityI // and Deactivating AWS STS in an AWS Region (http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html) // in the IAM User Guide. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/AssumeRoleWithWebIdentity +// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/AssumeRoleWithWebIdentity func (c *STS) AssumeRoleWithWebIdentity(input *AssumeRoleWithWebIdentityInput) (*AssumeRoleWithWebIdentityOutput, error) { req, out := c.AssumeRoleWithWebIdentityRequest(input) return out, req.Send() @@ -569,7 +601,7 @@ const opDecodeAuthorizationMessage = "DecodeAuthorizationMessage" // DecodeAuthorizationMessageRequest generates a "aws/request.Request" representing the // client's request for the DecodeAuthorizationMessage operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -590,7 +622,7 @@ const opDecodeAuthorizationMessage = "DecodeAuthorizationMessage" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/DecodeAuthorizationMessage +// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/DecodeAuthorizationMessage func (c *STS) DecodeAuthorizationMessageRequest(input *DecodeAuthorizationMessageInput) (req *request.Request, output *DecodeAuthorizationMessageOutput) { op := &request.Operation{ Name: opDecodeAuthorizationMessage, @@ -655,7 +687,7 @@ func (c *STS) DecodeAuthorizationMessageRequest(input *DecodeAuthorizationMessag // invalid. This can happen if the token contains invalid characters, such as // linebreaks. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/DecodeAuthorizationMessage +// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/DecodeAuthorizationMessage func (c *STS) DecodeAuthorizationMessage(input *DecodeAuthorizationMessageInput) (*DecodeAuthorizationMessageOutput, error) { req, out := c.DecodeAuthorizationMessageRequest(input) return out, req.Send() @@ -681,7 +713,7 @@ const opGetCallerIdentity = "GetCallerIdentity" // GetCallerIdentityRequest generates a "aws/request.Request" representing the // client's request for the GetCallerIdentity operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -702,7 +734,7 @@ const opGetCallerIdentity = "GetCallerIdentity" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/GetCallerIdentity +// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/GetCallerIdentity func (c *STS) GetCallerIdentityRequest(input *GetCallerIdentityInput) (req *request.Request, output *GetCallerIdentityOutput) { op := &request.Operation{ Name: opGetCallerIdentity, @@ -730,7 +762,7 @@ func (c *STS) GetCallerIdentityRequest(input *GetCallerIdentityInput) (req *requ // // See the AWS API reference guide for AWS Security Token Service's // API operation GetCallerIdentity for usage and error information. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/GetCallerIdentity +// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/GetCallerIdentity func (c *STS) GetCallerIdentity(input *GetCallerIdentityInput) (*GetCallerIdentityOutput, error) { req, out := c.GetCallerIdentityRequest(input) return out, req.Send() @@ -756,7 +788,7 @@ const opGetFederationToken = "GetFederationToken" // GetFederationTokenRequest generates a "aws/request.Request" representing the // client's request for the GetFederationToken operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -777,7 +809,7 @@ const opGetFederationToken = "GetFederationToken" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/GetFederationToken +// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/GetFederationToken func (c *STS) GetFederationTokenRequest(input *GetFederationTokenInput) (req *request.Request, output *GetFederationTokenOutput) { op := &request.Operation{ Name: opGetFederationToken, @@ -899,7 +931,7 @@ func (c *STS) GetFederationTokenRequest(input *GetFederationTokenInput) (req *re // and Deactivating AWS STS in an AWS Region (http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html) // in the IAM User Guide. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/GetFederationToken +// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/GetFederationToken func (c *STS) GetFederationToken(input *GetFederationTokenInput) (*GetFederationTokenOutput, error) { req, out := c.GetFederationTokenRequest(input) return out, req.Send() @@ -925,7 +957,7 @@ const opGetSessionToken = "GetSessionToken" // GetSessionTokenRequest generates a "aws/request.Request" representing the // client's request for the GetSessionToken operation. The "output" return -// value will be populated with the request's response once the request complets +// value will be populated with the request's response once the request completes // successfuly. // // Use "Send" method on the returned Request to send the API call to the service. @@ -946,7 +978,7 @@ const opGetSessionToken = "GetSessionToken" // fmt.Println(resp) // } // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/GetSessionToken +// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/GetSessionToken func (c *STS) GetSessionTokenRequest(input *GetSessionTokenInput) (req *request.Request, output *GetSessionTokenOutput) { op := &request.Operation{ Name: opGetSessionToken, @@ -1027,7 +1059,7 @@ func (c *STS) GetSessionTokenRequest(input *GetSessionTokenInput) (req *request. // and Deactivating AWS STS in an AWS Region (http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html) // in the IAM User Guide. // -// Please also see https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/GetSessionToken +// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/GetSessionToken func (c *STS) GetSessionToken(input *GetSessionTokenInput) (*GetSessionTokenOutput, error) { req, out := c.GetSessionTokenRequest(input) return out, req.Send() @@ -1049,20 +1081,27 @@ func (c *STS) GetSessionTokenWithContext(ctx aws.Context, input *GetSessionToken return out, req.Send() } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/AssumeRoleRequest type AssumeRoleInput struct { _ struct{} `type:"structure"` // The duration, in seconds, of the role session. The value can range from 900 - // seconds (15 minutes) to 3600 seconds (1 hour). By default, the value is set - // to 3600 seconds. + // 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. If you specify a value + // 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 (http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html#id_roles_use_view-role-max-session) + // in the IAM User Guide. // - // This 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, separately from the DurationSeconds - // parameter on this API. For more information, see Creating a URL that Enables - // Federated Users to Access the AWS Management Console (http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-console-custom-url.html) + // 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 + // AWS Management Console (http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-console-custom-url.html) // in the IAM User Guide. DurationSeconds *int64 `min:"900" type:"integer"` @@ -1241,7 +1280,6 @@ func (s *AssumeRoleInput) SetTokenCode(v string) *AssumeRoleInput { // Contains the response to a successful AssumeRole request, including temporary // AWS credentials that can be used to make AWS requests. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/AssumeRoleResponse type AssumeRoleOutput struct { _ struct{} `type:"structure"` @@ -1295,22 +1333,30 @@ func (s *AssumeRoleOutput) SetPackedPolicySize(v int64) *AssumeRoleOutput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/AssumeRoleWithSAMLRequest type AssumeRoleWithSAMLInput struct { _ struct{} `type:"structure"` - // The duration, in seconds, of the role session. The value can range from 900 - // seconds (15 minutes) to 3600 seconds (1 hour). By default, the value is set - // to 3600 seconds. An expiration can also be specified in the SAML authentication - // response's SessionNotOnOrAfter value. The actual expiration time is whichever - // value is shorter. + // The duration, in seconds, of the role session. Your role session lasts for + // the duration that you specify for the DurationSeconds parameter, 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. If you specify + // a value 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 (http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html#id_roles_use_view-role-max-session) + // in the IAM User Guide. // - // This 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, separately from the DurationSeconds - // parameter on this API. For more information, see Enabling SAML 2.0 Federated - // Users to Access the AWS Management Console (http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-console-saml.html) + // 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 + // AWS Management Console (http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-console-custom-url.html) // in the IAM User Guide. DurationSeconds *int64 `min:"900" type:"integer"` @@ -1436,7 +1482,6 @@ func (s *AssumeRoleWithSAMLInput) SetSAMLAssertion(v string) *AssumeRoleWithSAML // Contains the response to a successful AssumeRoleWithSAML request, including // temporary AWS credentials that can be used to make AWS requests. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/AssumeRoleWithSAMLResponse type AssumeRoleWithSAMLOutput struct { _ struct{} `type:"structure"` @@ -1548,20 +1593,27 @@ func (s *AssumeRoleWithSAMLOutput) SetSubjectType(v string) *AssumeRoleWithSAMLO return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/AssumeRoleWithWebIdentityRequest type AssumeRoleWithWebIdentityInput struct { _ struct{} `type:"structure"` // The duration, in seconds, of the role session. The value can range from 900 - // seconds (15 minutes) to 3600 seconds (1 hour). By default, the value is set - // to 3600 seconds. + // 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. If you specify a value + // 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 (http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html#id_roles_use_view-role-max-session) + // in the IAM User Guide. // - // This 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, separately from the DurationSeconds - // parameter on this API. For more information, see Creating a URL that Enables - // Federated Users to Access the AWS Management Console (http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-console-custom-url.html) + // 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 + // AWS Management Console (http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-console-custom-url.html) // in the IAM User Guide. DurationSeconds *int64 `min:"900" type:"integer"` @@ -1711,7 +1763,6 @@ func (s *AssumeRoleWithWebIdentityInput) SetWebIdentityToken(v string) *AssumeRo // Contains the response to a successful AssumeRoleWithWebIdentity request, // including temporary AWS credentials that can be used to make AWS requests. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/AssumeRoleWithWebIdentityResponse type AssumeRoleWithWebIdentityOutput struct { _ struct{} `type:"structure"` @@ -1804,7 +1855,6 @@ func (s *AssumeRoleWithWebIdentityOutput) SetSubjectFromWebIdentityToken(v strin // The identifiers for the temporary security credentials that the operation // returns. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/AssumedRoleUser type AssumedRoleUser struct { _ struct{} `type:"structure"` @@ -1847,7 +1897,6 @@ func (s *AssumedRoleUser) SetAssumedRoleId(v string) *AssumedRoleUser { } // AWS credentials for API authentication. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/Credentials type Credentials struct { _ struct{} `type:"structure"` @@ -1906,7 +1955,6 @@ func (s *Credentials) SetSessionToken(v string) *Credentials { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/DecodeAuthorizationMessageRequest type DecodeAuthorizationMessageInput struct { _ struct{} `type:"structure"` @@ -1951,7 +1999,6 @@ func (s *DecodeAuthorizationMessageInput) SetEncodedMessage(v string) *DecodeAut // A document that contains additional information about the authorization status // of a request from an encoded message that is returned in response to an AWS // request. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/DecodeAuthorizationMessageResponse type DecodeAuthorizationMessageOutput struct { _ struct{} `type:"structure"` @@ -1976,7 +2023,6 @@ func (s *DecodeAuthorizationMessageOutput) SetDecodedMessage(v string) *DecodeAu } // Identifiers for the federated user that is associated with the credentials. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/FederatedUser type FederatedUser struct { _ struct{} `type:"structure"` @@ -2017,7 +2063,6 @@ func (s *FederatedUser) SetFederatedUserId(v string) *FederatedUser { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/GetCallerIdentityRequest type GetCallerIdentityInput struct { _ struct{} `type:"structure"` } @@ -2034,7 +2079,6 @@ func (s GetCallerIdentityInput) GoString() string { // Contains the response to a successful GetCallerIdentity request, including // information about the entity making the request. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/GetCallerIdentityResponse type GetCallerIdentityOutput struct { _ struct{} `type:"structure"` @@ -2080,7 +2124,6 @@ func (s *GetCallerIdentityOutput) SetUserId(v string) *GetCallerIdentityOutput { return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/GetFederationTokenRequest type GetFederationTokenInput struct { _ struct{} `type:"structure"` @@ -2189,7 +2232,6 @@ func (s *GetFederationTokenInput) SetPolicy(v string) *GetFederationTokenInput { // Contains the response to a successful GetFederationToken request, including // temporary AWS credentials that can be used to make AWS requests. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/GetFederationTokenResponse type GetFederationTokenOutput struct { _ struct{} `type:"structure"` @@ -2242,7 +2284,6 @@ func (s *GetFederationTokenOutput) SetPackedPolicySize(v int64) *GetFederationTo return s } -// Please also see https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/GetSessionTokenRequest type GetSessionTokenInput struct { _ struct{} `type:"structure"` @@ -2327,7 +2368,6 @@ func (s *GetSessionTokenInput) SetTokenCode(v string) *GetSessionTokenInput { // Contains the response to a successful GetSessionToken request, including // temporary AWS credentials that can be used to make AWS requests. -// Please also see https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/GetSessionTokenResponse type GetSessionTokenOutput struct { _ struct{} `type:"structure"` diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/sts/doc.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/sts/doc.go index a43fa80555..ef681ab0c6 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/sts/doc.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/sts/doc.go @@ -56,7 +56,7 @@ // // Using the Client // -// To AWS Security Token Service with the SDK use the New function to create +// To contact AWS Security Token Service with the SDK use the New function to create // a new service client. With that client you can make API requests to the service. // These clients are safe to use concurrently. // diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/sts/service.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/sts/service.go index 1ee5839e04..185c914d1b 100644 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/sts/service.go +++ b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/sts/service.go @@ -29,8 +29,9 @@ var initRequest func(*request.Request) // Service information constants const ( - ServiceName = "sts" // Service endpoint prefix API calls made to. - EndpointsID = ServiceName // Service ID for Regions and Endpoints metadata. + ServiceName = "sts" // Name of service. + EndpointsID = ServiceName // ID to lookup a service endpoint with. + ServiceID = "STS" // ServiceID is a unique identifer of a specific service. ) // New creates a new instance of the STS client with a session. @@ -55,6 +56,7 @@ func newClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegio cfg, metadata.ClientInfo{ ServiceName: ServiceName, + ServiceID: ServiceID, SigningName: signingName, SigningRegion: signingRegion, Endpoint: endpoint, diff --git a/cluster-autoscaler/vendor/github.com/google/cadvisor/accelerators/nvidia.go b/cluster-autoscaler/vendor/github.com/google/cadvisor/accelerators/nvidia.go index 054d206b2a..496feba5ee 100644 --- a/cluster-autoscaler/vendor/github.com/google/cadvisor/accelerators/nvidia.go +++ b/cluster-autoscaler/vendor/github.com/google/cadvisor/accelerators/nvidia.go @@ -31,7 +31,10 @@ import ( ) type NvidiaManager struct { - sync.RWMutex + sync.Mutex + + // true if there are NVIDIA devices present on the node + devicesPresent bool // true if the NVML library (libnvidia-ml.so.1) was loaded successfully nvmlInitialized bool @@ -51,20 +54,9 @@ func (nm *NvidiaManager) Setup() { return } - nm.initializeNVML() - if nm.nvmlInitialized { - return - } - go func() { - glog.V(2).Info("Starting goroutine to initialize NVML") - // TODO: use globalHousekeepingInterval - for range time.Tick(time.Minute) { - nm.initializeNVML() - if nm.nvmlInitialized { - return - } - } - }() + nm.devicesPresent = true + + initializeNVML(nm) } // detectDevices returns true if a device with given pci id is present on the node. @@ -91,20 +83,18 @@ func detectDevices(vendorId string) bool { } // initializeNVML initializes the NVML library and sets up the nvmlDevices map. -func (nm *NvidiaManager) initializeNVML() { +// This is defined as a variable to help in testing. +var initializeNVML = func(nm *NvidiaManager) { if err := gonvml.Initialize(); err != nil { // This is under a logging level because otherwise we may cause // log spam if the drivers/nvml is not installed on the system. glog.V(4).Infof("Could not initialize NVML: %v", err) return } + nm.nvmlInitialized = true numDevices, err := gonvml.DeviceCount() if err != nil { glog.Warningf("GPU metrics would not be available. Failed to get the number of nvidia devices: %v", err) - nm.Lock() - // Even though we won't have GPU metrics, the library was initialized and should be shutdown when exiting. - nm.nvmlInitialized = true - nm.Unlock() return } glog.V(1).Infof("NVML initialized. Number of nvidia devices: %v", numDevices) @@ -122,10 +112,6 @@ func (nm *NvidiaManager) initializeNVML() { } nm.nvidiaDevices[int(minorNumber)] = device } - nm.Lock() - // Doing this at the end to avoid race in accessing nvidiaDevices in GetCollector. - nm.nvmlInitialized = true - nm.Unlock() } // Destroy shuts down NVML. @@ -139,12 +125,21 @@ func (nm *NvidiaManager) Destroy() { // present in the devices.list file in the given devicesCgroupPath. func (nm *NvidiaManager) GetCollector(devicesCgroupPath string) (AcceleratorCollector, error) { nc := &NvidiaCollector{} - nm.RLock() - if !nm.nvmlInitialized || len(nm.nvidiaDevices) == 0 { - nm.RUnlock() + + if !nm.devicesPresent { return nc, nil } - nm.RUnlock() + // Makes sure that we don't call initializeNVML() concurrently and + // that we only call initializeNVML() when it's not initialized. + nm.Lock() + if !nm.nvmlInitialized { + initializeNVML(nm) + } + if !nm.nvmlInitialized || len(nm.nvidiaDevices) == 0 { + nm.Unlock() + return nc, nil + } + nm.Unlock() nvidiaMinorNumbers, err := parseDevicesCgroup(devicesCgroupPath) if err != nil { return nc, err diff --git a/cluster-autoscaler/vendor/github.com/google/cadvisor/api/handler.go b/cluster-autoscaler/vendor/github.com/google/cadvisor/api/handler.go deleted file mode 100644 index bf9e2c80a0..0000000000 --- a/cluster-autoscaler/vendor/github.com/google/cadvisor/api/handler.go +++ /dev/null @@ -1,250 +0,0 @@ -// Copyright 2014 Google Inc. 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 api provides a handler for /api/ -package api - -import ( - "encoding/json" - "errors" - "fmt" - "io" - "net/http" - "path" - "regexp" - "sort" - "strconv" - "strings" - "time" - - "github.com/google/cadvisor/events" - httpmux "github.com/google/cadvisor/http/mux" - info "github.com/google/cadvisor/info/v1" - "github.com/google/cadvisor/manager" - - "github.com/golang/glog" -) - -const ( - apiResource = "/api/" -) - -func RegisterHandlers(mux httpmux.Mux, m manager.Manager) error { - apiVersions := getApiVersions() - supportedApiVersions := make(map[string]ApiVersion, len(apiVersions)) - for _, v := range apiVersions { - supportedApiVersions[v.Version()] = v - } - - mux.HandleFunc(apiResource, func(w http.ResponseWriter, r *http.Request) { - err := handleRequest(supportedApiVersions, m, w, r) - if err != nil { - http.Error(w, err.Error(), 500) - } - }) - return nil -} - -// Captures the API version, requestType [optional], and remaining request [optional]. -var apiRegexp = regexp.MustCompile(`/api/([^/]+)/?([^/]+)?(.*)`) - -const ( - apiVersion = iota + 1 - apiRequestType - apiRequestArgs -) - -func handleRequest(supportedApiVersions map[string]ApiVersion, m manager.Manager, w http.ResponseWriter, r *http.Request) error { - start := time.Now() - defer func() { - glog.V(4).Infof("Request took %s", time.Since(start)) - }() - - request := r.URL.Path - - const apiPrefix = "/api" - if !strings.HasPrefix(request, apiPrefix) { - return fmt.Errorf("incomplete API request %q", request) - } - - // If the request doesn't have an API version, list those. - if request == apiPrefix || request == apiResource { - versions := make([]string, 0, len(supportedApiVersions)) - for v := range supportedApiVersions { - versions = append(versions, v) - } - sort.Strings(versions) - http.Error(w, fmt.Sprintf("Supported API versions: %s", strings.Join(versions, ",")), http.StatusBadRequest) - return nil - } - - // Verify that we have all the elements we expect: - // //[/] - requestElements := apiRegexp.FindStringSubmatch(request) - if len(requestElements) == 0 { - return fmt.Errorf("malformed request %q", request) - } - version := requestElements[apiVersion] - requestType := requestElements[apiRequestType] - requestArgs := strings.Split(requestElements[apiRequestArgs], "/") - - // Check supported versions. - versionHandler, ok := supportedApiVersions[version] - if !ok { - return fmt.Errorf("unsupported API version %q", version) - } - - // If no request type, list possible request types. - if requestType == "" { - requestTypes := versionHandler.SupportedRequestTypes() - sort.Strings(requestTypes) - http.Error(w, fmt.Sprintf("Supported request types: %q", strings.Join(requestTypes, ",")), http.StatusBadRequest) - return nil - } - - // Trim the first empty element from the request. - if len(requestArgs) > 0 && requestArgs[0] == "" { - requestArgs = requestArgs[1:] - } - - return versionHandler.HandleRequest(requestType, requestArgs, m, w, r) - -} - -func writeResult(res interface{}, w http.ResponseWriter) error { - out, err := json.Marshal(res) - if err != nil { - return fmt.Errorf("failed to marshall response %+v with error: %s", res, err) - } - - w.Header().Set("Content-Type", "application/json") - w.Write(out) - return nil - -} - -func streamResults(eventChannel *events.EventChannel, w http.ResponseWriter, r *http.Request, m manager.Manager) error { - cn, ok := w.(http.CloseNotifier) - if !ok { - return errors.New("could not access http.CloseNotifier") - } - flusher, ok := w.(http.Flusher) - if !ok { - return errors.New("could not access http.Flusher") - } - - w.Header().Set("Transfer-Encoding", "chunked") - w.WriteHeader(http.StatusOK) - flusher.Flush() - - enc := json.NewEncoder(w) - for { - select { - case <-cn.CloseNotify(): - m.CloseEventChannel(eventChannel.GetWatchId()) - return nil - case ev := <-eventChannel.GetChannel(): - err := enc.Encode(ev) - if err != nil { - glog.Errorf("error encoding message %+v for result stream: %v", ev, err) - } - flusher.Flush() - } - } -} - -func getContainerInfoRequest(body io.ReadCloser) (*info.ContainerInfoRequest, error) { - query := info.DefaultContainerInfoRequest() - decoder := json.NewDecoder(body) - err := decoder.Decode(&query) - if err != nil && err != io.EOF { - return nil, fmt.Errorf("unable to decode the json value: %s", err) - } - - return &query, nil -} - -// The user can set any or none of the following arguments in any order -// with any twice defined arguments being assigned the first value. -// If the value type for the argument is wrong the field will be assumed to be -// unassigned -// bools: stream, subcontainers, oom_events, creation_events, deletion_events -// ints: max_events, start_time (unix timestamp), end_time (unix timestamp) -// example r.URL: http://localhost:8080/api/v1.3/events?oom_events=true&stream=true -func getEventRequest(r *http.Request) (*events.Request, bool, error) { - query := events.NewRequest() - stream := false - - urlMap := r.URL.Query() - - if val, ok := urlMap["stream"]; ok { - newBool, err := strconv.ParseBool(val[0]) - if err == nil { - stream = newBool - } - } - if val, ok := urlMap["subcontainers"]; ok { - newBool, err := strconv.ParseBool(val[0]) - if err == nil { - query.IncludeSubcontainers = newBool - } - } - eventTypes := map[string]info.EventType{ - "oom_events": info.EventOom, - "oom_kill_events": info.EventOomKill, - "creation_events": info.EventContainerCreation, - "deletion_events": info.EventContainerDeletion, - } - allEventTypes := false - if val, ok := urlMap["all_events"]; ok { - newBool, err := strconv.ParseBool(val[0]) - if err == nil { - allEventTypes = newBool - } - } - for opt, eventType := range eventTypes { - if allEventTypes { - query.EventType[eventType] = true - } else if val, ok := urlMap[opt]; ok { - newBool, err := strconv.ParseBool(val[0]) - if err == nil { - query.EventType[eventType] = newBool - } - } - } - if val, ok := urlMap["max_events"]; ok { - newInt, err := strconv.Atoi(val[0]) - if err == nil { - query.MaxEventsReturned = int(newInt) - } - } - if val, ok := urlMap["start_time"]; ok { - newTime, err := time.Parse(time.RFC3339, val[0]) - if err == nil { - query.StartTime = newTime - } - } - if val, ok := urlMap["end_time"]; ok { - newTime, err := time.Parse(time.RFC3339, val[0]) - if err == nil { - query.EndTime = newTime - } - } - - return query, stream, nil -} - -func getContainerName(request []string) string { - return path.Join("/", strings.Join(request, "/")) -} diff --git a/cluster-autoscaler/vendor/github.com/google/cadvisor/api/versions.go b/cluster-autoscaler/vendor/github.com/google/cadvisor/api/versions.go deleted file mode 100644 index 7fb0c01de4..0000000000 --- a/cluster-autoscaler/vendor/github.com/google/cadvisor/api/versions.go +++ /dev/null @@ -1,559 +0,0 @@ -// Copyright 2015 Google Inc. 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 api - -import ( - "fmt" - "net/http" - "path" - "strconv" - - info "github.com/google/cadvisor/info/v1" - "github.com/google/cadvisor/info/v2" - "github.com/google/cadvisor/manager" - - "github.com/golang/glog" -) - -const ( - containersApi = "containers" - subcontainersApi = "subcontainers" - machineApi = "machine" - machineStatsApi = "machinestats" - dockerApi = "docker" - summaryApi = "summary" - statsApi = "stats" - specApi = "spec" - eventsApi = "events" - storageApi = "storage" - attributesApi = "attributes" - versionApi = "version" - psApi = "ps" - customMetricsApi = "appmetrics" -) - -// Interface for a cAdvisor API version -type ApiVersion interface { - // Returns the version string. - Version() string - - // List of supported API endpoints. - SupportedRequestTypes() []string - - // Handles a request. The second argument is the parameters after /api// - HandleRequest(requestType string, request []string, m manager.Manager, w http.ResponseWriter, r *http.Request) error -} - -// Gets all supported API versions. -func getApiVersions() []ApiVersion { - v1_0 := &version1_0{} - v1_1 := newVersion1_1(v1_0) - v1_2 := newVersion1_2(v1_1) - v1_3 := newVersion1_3(v1_2) - v2_0 := newVersion2_0() - v2_1 := newVersion2_1(v2_0) - - return []ApiVersion{v1_0, v1_1, v1_2, v1_3, v2_0, v2_1} - -} - -// API v1.0 - -type version1_0 struct { -} - -func (self *version1_0) Version() string { - return "v1.0" -} - -func (self *version1_0) SupportedRequestTypes() []string { - return []string{containersApi, machineApi} -} - -func (self *version1_0) HandleRequest(requestType string, request []string, m manager.Manager, w http.ResponseWriter, r *http.Request) error { - switch requestType { - case machineApi: - glog.V(4).Infof("Api - Machine") - - // Get the MachineInfo - machineInfo, err := m.GetMachineInfo() - if err != nil { - return err - } - - err = writeResult(machineInfo, w) - if err != nil { - return err - } - case containersApi: - containerName := getContainerName(request) - glog.V(4).Infof("Api - Container(%s)", containerName) - - // Get the query request. - query, err := getContainerInfoRequest(r.Body) - if err != nil { - return err - } - - // Get the container. - cont, err := m.GetContainerInfo(containerName, query) - if err != nil { - return fmt.Errorf("failed to get container %q with error: %s", containerName, err) - } - - // Only output the container as JSON. - err = writeResult(cont, w) - if err != nil { - return err - } - default: - return fmt.Errorf("unknown request type %q", requestType) - } - return nil -} - -// API v1.1 - -type version1_1 struct { - baseVersion *version1_0 -} - -// v1.1 builds on v1.0. -func newVersion1_1(v *version1_0) *version1_1 { - return &version1_1{ - baseVersion: v, - } -} - -func (self *version1_1) Version() string { - return "v1.1" -} - -func (self *version1_1) SupportedRequestTypes() []string { - return append(self.baseVersion.SupportedRequestTypes(), subcontainersApi) -} - -func (self *version1_1) HandleRequest(requestType string, request []string, m manager.Manager, w http.ResponseWriter, r *http.Request) error { - switch requestType { - case subcontainersApi: - containerName := getContainerName(request) - glog.V(4).Infof("Api - Subcontainers(%s)", containerName) - - // Get the query request. - query, err := getContainerInfoRequest(r.Body) - if err != nil { - return err - } - - // Get the subcontainers. - containers, err := m.SubcontainersInfo(containerName, query) - if err != nil { - return fmt.Errorf("failed to get subcontainers for container %q with error: %s", containerName, err) - } - - // Only output the containers as JSON. - err = writeResult(containers, w) - if err != nil { - return err - } - return nil - default: - return self.baseVersion.HandleRequest(requestType, request, m, w, r) - } -} - -// API v1.2 - -type version1_2 struct { - baseVersion *version1_1 -} - -// v1.2 builds on v1.1. -func newVersion1_2(v *version1_1) *version1_2 { - return &version1_2{ - baseVersion: v, - } -} - -func (self *version1_2) Version() string { - return "v1.2" -} - -func (self *version1_2) SupportedRequestTypes() []string { - return append(self.baseVersion.SupportedRequestTypes(), dockerApi) -} - -func (self *version1_2) HandleRequest(requestType string, request []string, m manager.Manager, w http.ResponseWriter, r *http.Request) error { - switch requestType { - case dockerApi: - glog.V(4).Infof("Api - Docker(%v)", request) - - // Get the query request. - query, err := getContainerInfoRequest(r.Body) - if err != nil { - return err - } - - var containers map[string]info.ContainerInfo - // map requests for "docker/" to "docker" - if len(request) == 1 && len(request[0]) == 0 { - request = request[:0] - } - switch len(request) { - case 0: - // Get all Docker containers. - containers, err = m.AllDockerContainers(query) - if err != nil { - return fmt.Errorf("failed to get all Docker containers with error: %v", err) - } - case 1: - // Get one Docker container. - var cont info.ContainerInfo - cont, err = m.DockerContainer(request[0], query) - if err != nil { - return fmt.Errorf("failed to get Docker container %q with error: %v", request[0], err) - } - containers = map[string]info.ContainerInfo{ - cont.Name: cont, - } - default: - return fmt.Errorf("unknown request for Docker container %v", request) - } - - // Only output the containers as JSON. - err = writeResult(containers, w) - if err != nil { - return err - } - return nil - default: - return self.baseVersion.HandleRequest(requestType, request, m, w, r) - } -} - -// API v1.3 - -type version1_3 struct { - baseVersion *version1_2 -} - -// v1.3 builds on v1.2. -func newVersion1_3(v *version1_2) *version1_3 { - return &version1_3{ - baseVersion: v, - } -} - -func (self *version1_3) Version() string { - return "v1.3" -} - -func (self *version1_3) SupportedRequestTypes() []string { - return append(self.baseVersion.SupportedRequestTypes(), eventsApi) -} - -func (self *version1_3) HandleRequest(requestType string, request []string, m manager.Manager, w http.ResponseWriter, r *http.Request) error { - switch requestType { - case eventsApi: - return handleEventRequest(request, m, w, r) - default: - return self.baseVersion.HandleRequest(requestType, request, m, w, r) - } -} - -func handleEventRequest(request []string, m manager.Manager, w http.ResponseWriter, r *http.Request) error { - query, stream, err := getEventRequest(r) - if err != nil { - return err - } - query.ContainerName = path.Join("/", getContainerName(request)) - glog.V(4).Infof("Api - Events(%v)", query) - if !stream { - pastEvents, err := m.GetPastEvents(query) - if err != nil { - return err - } - return writeResult(pastEvents, w) - } - eventChannel, err := m.WatchForEvents(query) - if err != nil { - return err - } - return streamResults(eventChannel, w, r, m) - -} - -// API v2.0 - -type version2_0 struct { -} - -func newVersion2_0() *version2_0 { - return &version2_0{} -} - -func (self *version2_0) Version() string { - return "v2.0" -} - -func (self *version2_0) SupportedRequestTypes() []string { - return []string{versionApi, attributesApi, eventsApi, machineApi, summaryApi, statsApi, specApi, storageApi, psApi, customMetricsApi} -} - -func (self *version2_0) HandleRequest(requestType string, request []string, m manager.Manager, w http.ResponseWriter, r *http.Request) error { - opt, err := getRequestOptions(r) - if err != nil { - return err - } - switch requestType { - case versionApi: - glog.V(4).Infof("Api - Version") - versionInfo, err := m.GetVersionInfo() - if err != nil { - return err - } - return writeResult(versionInfo.CadvisorVersion, w) - case attributesApi: - glog.V(4).Info("Api - Attributes") - - machineInfo, err := m.GetMachineInfo() - if err != nil { - return err - } - versionInfo, err := m.GetVersionInfo() - if err != nil { - return err - } - info := v2.GetAttributes(machineInfo, versionInfo) - return writeResult(info, w) - case machineApi: - glog.V(4).Info("Api - Machine") - - // TODO(rjnagal): Move machineInfo from v1. - machineInfo, err := m.GetMachineInfo() - if err != nil { - return err - } - return writeResult(machineInfo, w) - case summaryApi: - containerName := getContainerName(request) - glog.V(4).Infof("Api - Summary for container %q, options %+v", containerName, opt) - - stats, err := m.GetDerivedStats(containerName, opt) - if err != nil { - return err - } - return writeResult(stats, w) - case statsApi: - name := getContainerName(request) - glog.V(4).Infof("Api - Stats: Looking for stats for container %q, options %+v", name, opt) - infos, err := m.GetRequestedContainersInfo(name, opt) - if err != nil { - if len(infos) == 0 { - return err - } - glog.Errorf("Error calling GetRequestedContainersInfo: %v", err) - } - contStats := make(map[string][]v2.DeprecatedContainerStats, 0) - for name, cinfo := range infos { - contStats[name] = v2.DeprecatedStatsFromV1(cinfo) - } - return writeResult(contStats, w) - case customMetricsApi: - containerName := getContainerName(request) - glog.V(4).Infof("Api - Custom Metrics: Looking for metrics for container %q, options %+v", containerName, opt) - infos, err := m.GetContainerInfoV2(containerName, opt) - if err != nil { - return err - } - contMetrics := make(map[string]map[string]map[string][]info.MetricValBasic, 0) - for _, cinfo := range infos { - metrics := make(map[string]map[string][]info.MetricValBasic, 0) - for _, contStat := range cinfo.Stats { - if len(contStat.CustomMetrics) == 0 { - continue - } - for name, allLabels := range contStat.CustomMetrics { - metricLabels := make(map[string][]info.MetricValBasic, 0) - for _, metric := range allLabels { - if !metric.Timestamp.IsZero() { - metVal := info.MetricValBasic{ - Timestamp: metric.Timestamp, - IntValue: metric.IntValue, - FloatValue: metric.FloatValue, - } - labels := metrics[name] - if labels != nil { - values := labels[metric.Label] - values = append(values, metVal) - labels[metric.Label] = values - metrics[name] = labels - } else { - metricLabels[metric.Label] = []info.MetricValBasic{metVal} - metrics[name] = metricLabels - } - } - } - } - } - contMetrics[containerName] = metrics - } - return writeResult(contMetrics, w) - case specApi: - containerName := getContainerName(request) - glog.V(4).Infof("Api - Spec for container %q, options %+v", containerName, opt) - specs, err := m.GetContainerSpec(containerName, opt) - if err != nil { - return err - } - return writeResult(specs, w) - case storageApi: - label := r.URL.Query().Get("label") - uuid := r.URL.Query().Get("uuid") - switch { - case uuid != "": - fi, err := m.GetFsInfoByFsUUID(uuid) - if err != nil { - return err - } - return writeResult(fi, w) - case label != "": - // Get a specific label. - fi, err := m.GetFsInfo(label) - if err != nil { - return err - } - return writeResult(fi, w) - default: - // Get all global filesystems info. - fi, err := m.GetFsInfo("") - if err != nil { - return err - } - return writeResult(fi, w) - } - case eventsApi: - return handleEventRequest(request, m, w, r) - case psApi: - // reuse container type from request. - // ignore recursive. - // TODO(rjnagal): consider count to limit ps output. - name := getContainerName(request) - glog.V(4).Infof("Api - Spec for container %q, options %+v", name, opt) - ps, err := m.GetProcessList(name, opt) - if err != nil { - return fmt.Errorf("process listing failed: %v", err) - } - return writeResult(ps, w) - default: - return fmt.Errorf("unknown request type %q", requestType) - } -} - -type version2_1 struct { - baseVersion *version2_0 -} - -func newVersion2_1(v *version2_0) *version2_1 { - return &version2_1{ - baseVersion: v, - } -} - -func (self *version2_1) Version() string { - return "v2.1" -} - -func (self *version2_1) SupportedRequestTypes() []string { - return append([]string{machineStatsApi}, self.baseVersion.SupportedRequestTypes()...) -} - -func (self *version2_1) HandleRequest(requestType string, request []string, m manager.Manager, w http.ResponseWriter, r *http.Request) error { - // Get the query request. - opt, err := getRequestOptions(r) - if err != nil { - return err - } - - switch requestType { - case machineStatsApi: - glog.V(4).Infof("Api - MachineStats(%v)", request) - cont, err := m.GetRequestedContainersInfo("/", opt) - if err != nil { - if len(cont) == 0 { - return err - } - glog.Errorf("Error calling GetRequestedContainersInfo: %v", err) - } - return writeResult(v2.MachineStatsFromV1(cont["/"]), w) - case statsApi: - name := getContainerName(request) - glog.V(4).Infof("Api - Stats: Looking for stats for container %q, options %+v", name, opt) - conts, err := m.GetRequestedContainersInfo(name, opt) - if err != nil { - if len(conts) == 0 { - return err - } - glog.Errorf("Error calling GetRequestedContainersInfo: %v", err) - } - contStats := make(map[string]v2.ContainerInfo, len(conts)) - for name, cont := range conts { - if name == "/" { - // Root cgroup stats should be exposed as machine stats - continue - } - contStats[name] = v2.ContainerInfo{ - Spec: v2.ContainerSpecFromV1(&cont.Spec, cont.Aliases, cont.Namespace), - Stats: v2.ContainerStatsFromV1(name, &cont.Spec, cont.Stats), - } - } - return writeResult(contStats, w) - default: - return self.baseVersion.HandleRequest(requestType, request, m, w, r) - } -} - -func getRequestOptions(r *http.Request) (v2.RequestOptions, error) { - supportedTypes := map[string]bool{ - v2.TypeName: true, - v2.TypeDocker: true, - } - // fill in the defaults. - opt := v2.RequestOptions{ - IdType: v2.TypeName, - Count: 64, - Recursive: false, - } - idType := r.URL.Query().Get("type") - if len(idType) != 0 { - if !supportedTypes[idType] { - return opt, fmt.Errorf("unknown 'type' %q", idType) - } - opt.IdType = idType - } - count := r.URL.Query().Get("count") - if len(count) != 0 { - n, err := strconv.ParseUint(count, 10, 32) - if err != nil { - return opt, fmt.Errorf("failed to parse 'count' option: %v", count) - } - opt.Count = int(n) - } - recursive := r.URL.Query().Get("recursive") - if recursive == "true" { - opt.Recursive = true - } - return opt, nil -} diff --git a/cluster-autoscaler/vendor/github.com/google/cadvisor/container/crio/handler.go b/cluster-autoscaler/vendor/github.com/google/cadvisor/container/crio/handler.go index 13311c57fe..4d7efbf400 100644 --- a/cluster-autoscaler/vendor/github.com/google/cadvisor/container/crio/handler.go +++ b/cluster-autoscaler/vendor/github.com/google/cadvisor/container/crio/handler.go @@ -65,9 +65,6 @@ type crioContainerHandler struct { ignoreMetrics container.MetricSet - // container restart count - restartCount int - reference info.ContainerReference libcontainerHandler *containerlibcontainer.Handler @@ -166,7 +163,10 @@ func newCrioContainerHandler( // ignore err and get zero as default, this happens with sandboxes, not sure why... // kube isn't sending restart count in labels for sandboxes. restartCount, _ := strconv.Atoi(cInfo.Annotations["io.kubernetes.container.restartCount"]) - handler.restartCount = restartCount + // Only adds restartcount label if it's greater than 0 + if restartCount > 0 { + handler.labels["restartcount"] = strconv.Itoa(restartCount) + } handler.ipAddress = cInfo.IP @@ -210,10 +210,6 @@ func (self *crioContainerHandler) GetSpec() (info.ContainerSpec, error) { spec, err := common.GetSpec(self.cgroupPaths, self.machineInfoFactory, self.needNet(), hasFilesystem) spec.Labels = self.labels - // Only adds restartcount label if it's greater than 0 - if self.restartCount > 0 { - spec.Labels["restartcount"] = strconv.Itoa(self.restartCount) - } spec.Envs = self.envs spec.Image = self.image diff --git a/cluster-autoscaler/vendor/github.com/google/cadvisor/container/docker/handler.go b/cluster-autoscaler/vendor/github.com/google/cadvisor/container/docker/handler.go index 22b9455f3f..64726053a7 100644 --- a/cluster-autoscaler/vendor/github.com/google/cadvisor/container/docker/handler.go +++ b/cluster-autoscaler/vendor/github.com/google/cadvisor/container/docker/handler.go @@ -91,9 +91,6 @@ type dockerContainerHandler struct { // zfsParent is the parent for docker zfs zfsParent string - // container restart count - restartCount int - // Reference to the container reference info.ContainerReference @@ -226,7 +223,10 @@ func newDockerContainerHandler( } handler.image = ctnr.Config.Image handler.networkMode = ctnr.HostConfig.NetworkMode - handler.restartCount = ctnr.RestartCount + // Only adds restartcount label if it's greater than 0 + if ctnr.RestartCount > 0 { + handler.labels["restartcount"] = strconv.Itoa(ctnr.RestartCount) + } // Obtain the IP address for the contianer. // If the NetworkMode starts with 'container:' then we need to use the IP address of the container specified. @@ -356,10 +356,6 @@ func (self *dockerContainerHandler) GetSpec() (info.ContainerSpec, error) { spec, err := common.GetSpec(self.cgroupPaths, self.machineInfoFactory, self.needNet(), hasFilesystem) spec.Labels = self.labels - // Only adds restartcount label if it's greater than 0 - if self.restartCount > 0 { - spec.Labels["restartcount"] = strconv.Itoa(self.restartCount) - } spec.Envs = self.envs spec.Image = self.image spec.CreationTime = self.creationTime diff --git a/cluster-autoscaler/vendor/github.com/google/cadvisor/fs/fs.go b/cluster-autoscaler/vendor/github.com/google/cadvisor/fs/fs.go index 996f8577b4..8b95a249f0 100644 --- a/cluster-autoscaler/vendor/github.com/google/cadvisor/fs/fs.go +++ b/cluster-autoscaler/vendor/github.com/google/cadvisor/fs/fs.go @@ -533,6 +533,21 @@ func (self *RealFsInfo) GetDirFsDevice(dir string) (*DeviceInfo, error) { } mount, found := self.mounts[dir] + // try the parent dir if not found until we reach the root dir + // this is an issue on btrfs systems where the directory is not + // the subvolume + for !found { + pathdir, _ := filepath.Split(dir) + // break when we reach root + if pathdir == "/" { + break + } + // trim "/" from the new parent path otherwise the next possible + // filepath.Split in the loop will not split the string any further + dir = strings.TrimSuffix(pathdir, "/") + mount, found = self.mounts[dir] + } + if found && mount.Fstype == "btrfs" && mount.Major == 0 && strings.HasPrefix(mount.Source, "/dev/") { major, minor, err := getBtrfsMajorMinorIds(mount) if err != nil { diff --git a/cluster-autoscaler/vendor/github.com/google/cadvisor/healthz/healthz.go b/cluster-autoscaler/vendor/github.com/google/cadvisor/healthz/healthz.go deleted file mode 100644 index 83d723497c..0000000000 --- a/cluster-autoscaler/vendor/github.com/google/cadvisor/healthz/healthz.go +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2014 Google Inc. 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 healthz - -import ( - "net/http" - - httpmux "github.com/google/cadvisor/http/mux" -) - -func handleHealthz(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusOK) - w.Write([]byte("ok")) -} - -// Register simple HTTP /healthz handler to return "ok". -func RegisterHandler(mux httpmux.Mux) error { - mux.HandleFunc("/healthz", handleHealthz) - return nil -} diff --git a/cluster-autoscaler/vendor/github.com/google/cadvisor/http/handlers.go b/cluster-autoscaler/vendor/github.com/google/cadvisor/http/handlers.go deleted file mode 100644 index 8950072b4b..0000000000 --- a/cluster-autoscaler/vendor/github.com/google/cadvisor/http/handlers.go +++ /dev/null @@ -1,112 +0,0 @@ -// Copyright 2015 Google Inc. 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 http - -import ( - "fmt" - "net/http" - "os" - - "github.com/google/cadvisor/api" - "github.com/google/cadvisor/healthz" - httpmux "github.com/google/cadvisor/http/mux" - "github.com/google/cadvisor/manager" - "github.com/google/cadvisor/metrics" - "github.com/google/cadvisor/pages" - "github.com/google/cadvisor/pages/static" - "github.com/google/cadvisor/validate" - - auth "github.com/abbot/go-http-auth" - "github.com/golang/glog" - "github.com/prometheus/client_golang/prometheus" - "github.com/prometheus/client_golang/prometheus/promhttp" -) - -func RegisterHandlers(mux httpmux.Mux, containerManager manager.Manager, httpAuthFile, httpAuthRealm, httpDigestFile, httpDigestRealm string) error { - // Basic health handler. - if err := healthz.RegisterHandler(mux); err != nil { - return fmt.Errorf("failed to register healthz handler: %s", err) - } - - // Validation/Debug handler. - mux.HandleFunc(validate.ValidatePage, func(w http.ResponseWriter, r *http.Request) { - err := validate.HandleRequest(w, containerManager) - if err != nil { - http.Error(w, err.Error(), http.StatusInternalServerError) - } - }) - - // Register API handler. - if err := api.RegisterHandlers(mux, containerManager); err != nil { - return fmt.Errorf("failed to register API handlers: %s", err) - } - - // Redirect / to containers page. - mux.Handle("/", http.RedirectHandler(pages.ContainersPage, http.StatusTemporaryRedirect)) - - var authenticated bool - - // Setup the authenticator object - if httpAuthFile != "" { - glog.V(1).Infof("Using auth file %s", httpAuthFile) - secrets := auth.HtpasswdFileProvider(httpAuthFile) - authenticator := auth.NewBasicAuthenticator(httpAuthRealm, secrets) - mux.HandleFunc(static.StaticResource, authenticator.Wrap(staticHandler)) - if err := pages.RegisterHandlersBasic(mux, containerManager, authenticator); err != nil { - return fmt.Errorf("failed to register pages auth handlers: %s", err) - } - authenticated = true - } - if httpAuthFile == "" && httpDigestFile != "" { - glog.V(1).Infof("Using digest file %s", httpDigestFile) - secrets := auth.HtdigestFileProvider(httpDigestFile) - authenticator := auth.NewDigestAuthenticator(httpDigestRealm, secrets) - mux.HandleFunc(static.StaticResource, authenticator.Wrap(staticHandler)) - if err := pages.RegisterHandlersDigest(mux, containerManager, authenticator); err != nil { - return fmt.Errorf("failed to register pages digest handlers: %s", err) - } - authenticated = true - } - - // Change handler based on authenticator initalization - if !authenticated { - mux.HandleFunc(static.StaticResource, staticHandlerNoAuth) - if err := pages.RegisterHandlersBasic(mux, containerManager, nil); err != nil { - return fmt.Errorf("failed to register pages handlers: %s", err) - } - } - - return nil -} - -// RegisterPrometheusHandler creates a new PrometheusCollector and configures -// the provided HTTP mux to handle the given Prometheus endpoint. -func RegisterPrometheusHandler(mux httpmux.Mux, containerManager manager.Manager, prometheusEndpoint string, f metrics.ContainerLabelsFunc) { - r := prometheus.NewRegistry() - r.MustRegister( - metrics.NewPrometheusCollector(containerManager, f), - prometheus.NewGoCollector(), - prometheus.NewProcessCollector(os.Getpid(), ""), - ) - mux.Handle(prometheusEndpoint, promhttp.HandlerFor(r, promhttp.HandlerOpts{ErrorHandling: promhttp.ContinueOnError})) -} - -func staticHandlerNoAuth(w http.ResponseWriter, r *http.Request) { - static.HandleRequest(w, r.URL) -} - -func staticHandler(w http.ResponseWriter, r *auth.AuthenticatedRequest) { - static.HandleRequest(w, r.URL) -} diff --git a/cluster-autoscaler/vendor/github.com/google/cadvisor/http/mux/mux.go b/cluster-autoscaler/vendor/github.com/google/cadvisor/http/mux/mux.go deleted file mode 100644 index 791580b478..0000000000 --- a/cluster-autoscaler/vendor/github.com/google/cadvisor/http/mux/mux.go +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2015 Google Inc. 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 mux - -import ( - "net/http" -) - -// Mux interface expected by cAdvisor components. -type Mux interface { - HandleFunc(pattern string, handler func(http.ResponseWriter, *http.Request)) - Handler(r *http.Request) (http.Handler, string) - Handle(pattern string, handler http.Handler) -} diff --git a/cluster-autoscaler/vendor/github.com/google/cadvisor/manager/watcher/raw/raw.go b/cluster-autoscaler/vendor/github.com/google/cadvisor/manager/watcher/raw/raw.go index 137cd9b978..5a8b79d39e 100644 --- a/cluster-autoscaler/vendor/github.com/google/cadvisor/manager/watcher/raw/raw.go +++ b/cluster-autoscaler/vendor/github.com/google/cadvisor/manager/watcher/raw/raw.go @@ -110,6 +110,11 @@ func (self *rawContainerWatcher) Stop() error { // Watches the specified directory and all subdirectories. Returns whether the path was // already being watched and an error (if any). func (self *rawContainerWatcher) watchDirectory(events chan watcher.ContainerEvent, dir string, containerName string) (bool, error) { + // Don't watch .mount cgroups because they never have containers as sub-cgroups. A single container + // can have many .mount cgroups associated with it which can quickly exhaust the inotify watches on a node. + if strings.HasSuffix(containerName, ".mount") { + return false, nil + } alreadyWatching, err := self.watcher.AddWatch(containerName, dir) if err != nil { return alreadyWatching, err diff --git a/cluster-autoscaler/vendor/github.com/google/cadvisor/pages/containers.go b/cluster-autoscaler/vendor/github.com/google/cadvisor/pages/containers.go deleted file mode 100644 index 8f29815224..0000000000 --- a/cluster-autoscaler/vendor/github.com/google/cadvisor/pages/containers.go +++ /dev/null @@ -1,253 +0,0 @@ -// Copyright 2014 Google Inc. 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. - -// Page for /containers/ -package pages - -import ( - "fmt" - "html/template" - "net/http" - "net/url" - "path" - "strconv" - "strings" - "time" - - info "github.com/google/cadvisor/info/v1" - "github.com/google/cadvisor/manager" - - "github.com/golang/glog" -) - -const ContainersPage = "/containers/" - -// from http://golang.org/doc/effective_go.html#constants -type ByteSize float64 - -const ( - _ = iota - // KB - kilobyte - KB ByteSize = 1 << (10 * iota) - // MB - megabyte - MB - // GB - gigabyte - GB - // TB - terabyte - TB - // PB - petabyte - PB - // EB - exabyte - EB - // ZB - zettabyte - ZB - // YB - yottabyte - YB -) - -func (b ByteSize) Size() string { - for _, i := range [...]ByteSize{YB, ZB, EB, PB, TB, GB, MB, KB} { - if b >= i { - return fmt.Sprintf("%.2f", b/i) - } - } - return fmt.Sprintf("%.2f", b) -} - -func (b ByteSize) Unit() string { - switch { - case b >= YB: - return "YB" - case b >= ZB: - return "ZB" - case b >= EB: - return "EB" - case b >= PB: - return "PB" - case b >= TB: - return "TB" - case b >= GB: - return "GB" - case b >= MB: - return "MB" - case b >= KB: - return "KB" - } - return "B" -} - -var funcMap = template.FuncMap{ - "printMask": printMask, - "printCores": printCores, - "printShares": printShares, - "printSize": printSize, - "printUnit": printUnit, -} - -func printMask(mask string, numCores int) interface{} { - masks := make([]string, numCores) - activeCores := getActiveCores(mask) - for i := 0; i < numCores; i++ { - coreClass := "inactive-cpu" - if activeCores[i] { - coreClass = "active-cpu" - } - masks[i] = fmt.Sprintf("%d", coreClass, i) - } - return template.HTML(strings.Join(masks, " ")) -} - -func getActiveCores(mask string) map[int]bool { - activeCores := make(map[int]bool) - for _, corebits := range strings.Split(mask, ",") { - cores := strings.Split(corebits, "-") - if len(cores) == 1 { - index, err := strconv.Atoi(cores[0]) - if err != nil { - // Ignore malformed strings. - continue - } - activeCores[index] = true - } else if len(cores) == 2 { - start, err := strconv.Atoi(cores[0]) - if err != nil { - continue - } - end, err := strconv.Atoi(cores[1]) - if err != nil { - continue - } - for i := start; i <= end; i++ { - activeCores[i] = true - } - } - } - return activeCores -} - -func printCores(millicores *uint64) string { - cores := float64(*millicores) / 1000 - return strconv.FormatFloat(cores, 'f', 3, 64) -} - -func printShares(shares *uint64) string { - return fmt.Sprintf("%d", *shares) -} - -// Size after which we consider memory to be "unlimited". This is not -// MaxInt64 due to rounding by the kernel. -const maxMemorySize = uint64(1 << 62) - -func printSize(bytes uint64) string { - if bytes >= maxMemorySize { - return "unlimited" - } - return ByteSize(bytes).Size() -} - -func printUnit(bytes uint64) string { - if bytes >= maxMemorySize { - return "" - } - return ByteSize(bytes).Unit() -} - -func serveContainersPage(m manager.Manager, w http.ResponseWriter, u *url.URL) { - start := time.Now() - - // The container name is the path after the handler - containerName := u.Path[len(ContainersPage)-1:] - - // Get the container. - reqParams := info.ContainerInfoRequest{ - NumStats: 60, - } - cont, err := m.GetContainerInfo(containerName, &reqParams) - if err != nil { - http.Error(w, fmt.Sprintf("failed to get container %q with error: %v", containerName, err), http.StatusNotFound) - return - } - displayName := getContainerDisplayName(cont.ContainerReference) - - // Get the MachineInfo - machineInfo, err := m.GetMachineInfo() - if err != nil { - http.Error(w, fmt.Sprintf("failed to get machine info: %v", err), http.StatusInternalServerError) - return - } - - rootDir := getRootDir(containerName) - - // Make a list of the parent containers and their links - pathParts := strings.Split(string(cont.Name), "/") - parentContainers := make([]link, 0, len(pathParts)) - parentContainers = append(parentContainers, link{ - Text: "root", - Link: path.Join(rootDir, ContainersPage), - }) - for i := 1; i < len(pathParts); i++ { - // Skip empty parts. - if pathParts[i] == "" { - continue - } - parentContainers = append(parentContainers, link{ - Text: pathParts[i], - Link: path.Join(rootDir, ContainersPage, path.Join(pathParts[1:i+1]...)), - }) - } - - // Build the links for the subcontainers. - subcontainerLinks := make([]link, 0, len(cont.Subcontainers)) - for _, sub := range cont.Subcontainers { - if !m.Exists(sub.Name) { - continue - } - subcontainerLinks = append(subcontainerLinks, link{ - Text: getContainerDisplayName(sub), - Link: path.Join(rootDir, ContainersPage, sub.Name), - }) - } - - data := &pageData{ - DisplayName: displayName, - ContainerName: escapeContainerName(cont.Name), - ParentContainers: parentContainers, - Subcontainers: subcontainerLinks, - Spec: cont.Spec, - Stats: cont.Stats, - MachineInfo: machineInfo, - IsRoot: cont.Name == "/", - ResourcesAvailable: cont.Spec.HasCpu || cont.Spec.HasMemory || cont.Spec.HasNetwork || cont.Spec.HasFilesystem, - CpuAvailable: cont.Spec.HasCpu, - MemoryAvailable: cont.Spec.HasMemory, - NetworkAvailable: cont.Spec.HasNetwork, - FsAvailable: cont.Spec.HasFilesystem, - CustomMetricsAvailable: cont.Spec.HasCustomMetrics, - SubcontainersAvailable: len(subcontainerLinks) > 0, - Root: rootDir, - } - err = pageTemplate.Execute(w, data) - if err != nil { - glog.Errorf("Failed to apply template: %s", err) - } - - glog.V(5).Infof("Request took %s", time.Since(start)) -} - -// Build a relative path to the root of the container page. -func getRootDir(containerName string) string { - // The root is at: container depth - levels := (strings.Count(containerName, "/")) - return strings.Repeat("../", levels) -} diff --git a/cluster-autoscaler/vendor/github.com/google/cadvisor/pages/docker.go b/cluster-autoscaler/vendor/github.com/google/cadvisor/pages/docker.go deleted file mode 100644 index 4fb2f6bc76..0000000000 --- a/cluster-autoscaler/vendor/github.com/google/cadvisor/pages/docker.go +++ /dev/null @@ -1,162 +0,0 @@ -// Copyright 2014 Google Inc. 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 pages - -import ( - "fmt" - "net/http" - "net/url" - "path" - "strconv" - "time" - - "github.com/google/cadvisor/container/docker" - info "github.com/google/cadvisor/info/v1" - "github.com/google/cadvisor/manager" - - "github.com/golang/glog" -) - -const DockerPage = "/docker/" - -func toStatusKV(status info.DockerStatus) ([]keyVal, []keyVal) { - ds := []keyVal{ - {Key: "Driver", Value: status.Driver}, - } - for k, v := range status.DriverStatus { - ds = append(ds, keyVal{Key: k, Value: v}) - } - return []keyVal{ - {Key: "Docker Version", Value: status.Version}, - {Key: "Docker API Version", Value: status.APIVersion}, - {Key: "Kernel Version", Value: status.KernelVersion}, - {Key: "OS Version", Value: status.OS}, - {Key: "Host Name", Value: status.Hostname}, - {Key: "Docker Root Directory", Value: status.RootDir}, - {Key: "Execution Driver", Value: status.ExecDriver}, - {Key: "Number of Images", Value: strconv.Itoa(status.NumImages)}, - {Key: "Number of Containers", Value: strconv.Itoa(status.NumContainers)}, - }, ds -} - -func serveDockerPage(m manager.Manager, w http.ResponseWriter, u *url.URL) { - start := time.Now() - - // The container name is the path after the handler - containerName := u.Path[len(DockerPage)-1:] - rootDir := getRootDir(containerName) - - var data *pageData - if containerName == "/" { - // Get the containers. - reqParams := info.ContainerInfoRequest{ - NumStats: 0, - } - conts, err := m.AllDockerContainers(&reqParams) - if err != nil { - http.Error(w, fmt.Sprintf("failed to get container %q with error: %v", containerName, err), http.StatusNotFound) - return - } - subcontainers := make([]link, 0, len(conts)) - for _, cont := range conts { - subcontainers = append(subcontainers, link{ - Text: getContainerDisplayName(cont.ContainerReference), - Link: path.Join(rootDir, DockerPage, docker.ContainerNameToDockerId(cont.ContainerReference.Name)), - }) - } - - // Get Docker status - status, err := m.DockerInfo() - if err != nil { - http.Error(w, fmt.Sprintf("failed to get docker info: %v", err), http.StatusInternalServerError) - return - } - - dockerStatus, driverStatus := toStatusKV(status) - // Get Docker Images - images, err := m.DockerImages() - if err != nil { - http.Error(w, fmt.Sprintf("failed to get docker images: %v", err), http.StatusInternalServerError) - return - } - - dockerContainersText := "Docker Containers" - data = &pageData{ - DisplayName: dockerContainersText, - ParentContainers: []link{ - { - Text: dockerContainersText, - Link: path.Join(rootDir, DockerPage), - }}, - Subcontainers: subcontainers, - Root: rootDir, - DockerStatus: dockerStatus, - DockerDriverStatus: driverStatus, - DockerImages: images, - } - } else { - // Get the container. - reqParams := info.ContainerInfoRequest{ - NumStats: 60, - } - cont, err := m.DockerContainer(containerName[1:], &reqParams) - if err != nil { - http.Error(w, fmt.Sprintf("failed to get container %q with error: %v", containerName, err), http.StatusNotFound) - return - } - displayName := getContainerDisplayName(cont.ContainerReference) - - // Make a list of the parent containers and their links - var parentContainers []link - parentContainers = append(parentContainers, link{ - Text: "Docker Containers", - Link: path.Join(rootDir, DockerPage), - }) - parentContainers = append(parentContainers, link{ - Text: displayName, - Link: path.Join(rootDir, DockerPage, docker.ContainerNameToDockerId(cont.Name)), - }) - - // Get the MachineInfo - machineInfo, err := m.GetMachineInfo() - if err != nil { - http.Error(w, fmt.Sprintf("failed to get machine info: %v", err), http.StatusInternalServerError) - return - } - data = &pageData{ - DisplayName: displayName, - ContainerName: escapeContainerName(cont.Name), - ParentContainers: parentContainers, - Spec: cont.Spec, - Stats: cont.Stats, - MachineInfo: machineInfo, - ResourcesAvailable: cont.Spec.HasCpu || cont.Spec.HasMemory || cont.Spec.HasNetwork, - CpuAvailable: cont.Spec.HasCpu, - MemoryAvailable: cont.Spec.HasMemory, - NetworkAvailable: cont.Spec.HasNetwork, - FsAvailable: cont.Spec.HasFilesystem, - CustomMetricsAvailable: cont.Spec.HasCustomMetrics, - Root: rootDir, - } - } - - err := pageTemplate.Execute(w, data) - if err != nil { - glog.Errorf("Failed to apply template: %s", err) - } - - glog.V(5).Infof("Request took %s", time.Since(start)) - return -} diff --git a/cluster-autoscaler/vendor/github.com/google/cadvisor/pages/pages.go b/cluster-autoscaler/vendor/github.com/google/cadvisor/pages/pages.go deleted file mode 100644 index 7568b2ac3d..0000000000 --- a/cluster-autoscaler/vendor/github.com/google/cadvisor/pages/pages.go +++ /dev/null @@ -1,163 +0,0 @@ -// Copyright 2014 Google Inc. 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 pages - -import ( - "fmt" - "html/template" - "net/http" - "net/url" - "strings" - - httpmux "github.com/google/cadvisor/http/mux" - info "github.com/google/cadvisor/info/v1" - "github.com/google/cadvisor/manager" - - auth "github.com/abbot/go-http-auth" - "github.com/golang/glog" -) - -var pageTemplate *template.Template - -type link struct { - // Text to show in the link. - Text string - - // Web address to link to. - Link string -} - -type keyVal struct { - Key string - Value string -} - -type pageData struct { - DisplayName string - ContainerName string - ParentContainers []link - Subcontainers []link - Spec info.ContainerSpec - Stats []*info.ContainerStats - MachineInfo *info.MachineInfo - IsRoot bool - ResourcesAvailable bool - CpuAvailable bool - MemoryAvailable bool - NetworkAvailable bool - FsAvailable bool - CustomMetricsAvailable bool - SubcontainersAvailable bool - Root string - DockerStatus []keyVal - DockerDriverStatus []keyVal - DockerImages []info.DockerImage -} - -func init() { - containersHtmlTemplate, _ := Asset("pages/assets/html/containers.html") - pageTemplate = template.New("containersTemplate").Funcs(funcMap) - _, err := pageTemplate.Parse(string(containersHtmlTemplate)) - if err != nil { - glog.Fatalf("Failed to parse template: %s", err) - } -} - -func containerHandlerNoAuth(containerManager manager.Manager) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - serveContainersPage(containerManager, w, r.URL) - } -} - -func containerHandler(containerManager manager.Manager) auth.AuthenticatedHandlerFunc { - return func(w http.ResponseWriter, r *auth.AuthenticatedRequest) { - serveContainersPage(containerManager, w, r.URL) - } -} - -func dockerHandlerNoAuth(containerManager manager.Manager) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - serveDockerPage(containerManager, w, r.URL) - } -} - -func dockerHandler(containerManager manager.Manager) auth.AuthenticatedHandlerFunc { - return func(w http.ResponseWriter, r *auth.AuthenticatedRequest) { - serveDockerPage(containerManager, w, r.URL) - } -} - -// Register http handlers -func RegisterHandlersDigest(mux httpmux.Mux, containerManager manager.Manager, authenticator *auth.DigestAuth) error { - // Register the handler for the containers page. - if authenticator != nil { - mux.HandleFunc(ContainersPage, authenticator.Wrap(containerHandler(containerManager))) - mux.HandleFunc(DockerPage, authenticator.Wrap(dockerHandler(containerManager))) - } else { - mux.HandleFunc(ContainersPage, containerHandlerNoAuth(containerManager)) - mux.HandleFunc(DockerPage, dockerHandlerNoAuth(containerManager)) - } - return nil -} - -func RegisterHandlersBasic(mux httpmux.Mux, containerManager manager.Manager, authenticator *auth.BasicAuth) error { - // Register the handler for the containers and docker age. - if authenticator != nil { - mux.HandleFunc(ContainersPage, authenticator.Wrap(containerHandler(containerManager))) - mux.HandleFunc(DockerPage, authenticator.Wrap(dockerHandler(containerManager))) - } else { - mux.HandleFunc(ContainersPage, containerHandlerNoAuth(containerManager)) - mux.HandleFunc(DockerPage, dockerHandlerNoAuth(containerManager)) - } - return nil -} - -func getContainerDisplayName(cont info.ContainerReference) string { - // Pick a user-added alias as display name. - displayName := "" - for _, alias := range cont.Aliases { - // ignore container id as alias. - if strings.Contains(cont.Name, alias) { - continue - } - // pick shortest display name if multiple aliases are available. - if displayName == "" || len(displayName) >= len(alias) { - displayName = alias - } - } - - if displayName == "" { - displayName = cont.Name - } else if len(displayName) > 50 { - // truncate display name to fit in one line. - displayName = displayName[:50] + "..." - } - - // Add the full container name to the display name. - if displayName != cont.Name { - displayName = fmt.Sprintf("%s (%s)", displayName, cont.Name) - } - - return displayName -} - -// Escape the non-path characters on a container name. -func escapeContainerName(containerName string) string { - parts := strings.Split(containerName, "/") - for i := range parts { - parts[i] = url.QueryEscape(parts[i]) - } - return strings.Join(parts, "/") -} diff --git a/cluster-autoscaler/vendor/github.com/google/cadvisor/pages/static/assets.go b/cluster-autoscaler/vendor/github.com/google/cadvisor/pages/static/assets.go deleted file mode 100644 index ec854945f3..0000000000 --- a/cluster-autoscaler/vendor/github.com/google/cadvisor/pages/static/assets.go +++ /dev/null @@ -1,442 +0,0 @@ -// Copyright 2018 Google Inc. 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. -// generated by build/assets.sh; DO NOT EDIT - -// Code generated by go-bindata. -// sources: -// pages/assets/js/bootstrap-4.0.0-beta.2.min.js -// pages/assets/js/containers.js -// pages/assets/js/gcharts.js -// pages/assets/js/google-jsapi.js -// pages/assets/js/jquery-3.0.0.min.js -// pages/assets/js/popper.min.js -// pages/assets/styles/bootstrap-4.0.0-beta.2.min.css -// pages/assets/styles/bootstrap-theme-3.1.1.min.css -// pages/assets/styles/containers.css -// DO NOT EDIT! - -package static - -import ( - "bytes" - "compress/gzip" - "fmt" - "io" - "io/ioutil" - "os" - "path/filepath" - "strings" - "time" -) - -func bindataRead(data []byte, name string) ([]byte, error) { - gz, err := gzip.NewReader(bytes.NewBuffer(data)) - if err != nil { - return nil, fmt.Errorf("Read %q: %v", name, err) - } - - var buf bytes.Buffer - _, err = io.Copy(&buf, gz) - clErr := gz.Close() - - if err != nil { - return nil, fmt.Errorf("Read %q: %v", name, err) - } - if clErr != nil { - return nil, err - } - - return buf.Bytes(), nil -} - -type asset struct { - bytes []byte - info os.FileInfo -} - -type bindataFileInfo struct { - name string - size int64 - mode os.FileMode - modTime time.Time -} - -func (fi bindataFileInfo) Name() string { - return fi.name -} -func (fi bindataFileInfo) Size() int64 { - return fi.size -} -func (fi bindataFileInfo) Mode() os.FileMode { - return fi.mode -} -func (fi bindataFileInfo) ModTime() time.Time { - return fi.modTime -} -func (fi bindataFileInfo) IsDir() bool { - return false -} -func (fi bindataFileInfo) Sys() interface{} { - return nil -} - -var _pagesAssetsJsBootstrap400Beta2MinJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xdc\xbd\x6b\x77\xe3\xb6\x76\x30\xfc\xbd\xbf\x42\xe2\xe9\xab\x21\x6a\x98\x23\x27\xa7\x3d\x3d\xd4\x70\xbc\x3c\xb6\x92\xf8\x8d\xc7\x76\x6d\x39\x69\xea\xa3\x7a\xd1\x22\x24\x21\x43\x01\x2a\x09\x8d\xc7\xb5\xd8\xdf\xfe\x2c\x5c\x09\x90\xa0\x6c\x4f\x92\xf3\x74\x3d\x5f\x66\x2c\x60\x13\xd7\x8d\x7d\xc3\xde\x1b\x6f\xff\xa9\xff\x0f\xbd\xde\x3f\xf5\x3e\x50\xca\x4a\x56\xa4\xeb\xde\xe7\x3f\x47\xc3\x68\xb8\x7f\x8f\x58\x1a\x7d\xd3\x0b\x97\x8c\xad\xcb\xf8\xed\xdb\x05\x62\xf7\x1a\x26\x9a\xd1\x15\x10\x9f\x1d\xd3\xf5\x63\x81\x17\x4b\xd6\xfb\x66\x78\x70\xb0\xff\xcd\xf0\xe0\x2f\xbd\xc9\x12\x59\xcd\x1d\x6d\xd8\x92\x16\xa5\xd5\x10\x66\xcb\xcd\x3d\x6f\xe2\x2d\x7b\xb8\x2f\xdf\x9a\x56\xdf\x2e\x8a\x74\xbd\x2c\xdf\xce\x28\x61\x05\xbe\xdf\x30\x5a\x94\xb2\x97\x33\x3c\x43\xa4\x44\x59\x6f\x43\x32\x54\xf4\x3e\x9e\x4e\x5e\xd2\xdc\x7d\x4e\xef\xdf\xae\xd2\x92\xa1\xe2\xed\xd9\xe9\xf1\xf8\xfc\x7a\x2c\x9a\x7b\xfb\x0f\x9f\xd3\xa2\x67\xe0\x92\xf9\x86\xcc\x18\xa6\x24\x64\x10\x41\x02\x9e\x82\x4d\x89\x7a\x25\x2b\xf0\x8c\x05\x23\x5d\xd9\xc3\xbc\x1a\x3c\xcd\x69\x11\xf2\xcf\x49\x32\x1c\x91\x77\x28\xca\x11\x59\xb0\xe5\x88\xec\xed\x81\x27\x5e\x8e\x13\x74\x4b\xa6\x23\x1c\x21\xb2\x59\xa1\x22\xbd\xcf\x51\x62\xff\xd8\x6e\xfb\x07\x10\x47\x33\x4a\xe6\x78\xb1\x91\xf5\xfd\x21\x0c\x3e\xa7\xf9\x06\x05\x98\xf4\xf0\x60\x10\xe2\xe8\xa1\xc0\x4c\xd5\x01\x78\x71\xff\x2b\x9a\xb1\x28\x43\x73\x4c\xd0\x65\x41\xd7\xa8\x60\x8f\x21\x83\x38\xfa\x84\x1e\x21\x06\x55\x85\x12\x34\x18\xa0\x68\x99\x96\x17\x0f\xc4\x40\x04\x19\x9a\xa7\x9b\x9c\x05\xe0\x10\x45\xea\xef\x18\x41\x92\x90\xc1\x80\xec\x00\x26\x06\x98\x8c\xf8\x9c\xca\x7a\x89\xc0\x93\x59\x10\x16\x32\xf0\x54\x20\xb6\x29\xc8\x53\x15\x31\x7a\xcd\x0a\x4c\x16\xd1\x2c\xcd\xf3\x90\x81\x68\x95\xb2\xd9\x32\x7c\xfb\xb7\x32\xbc\x4d\xf7\xff\xfb\x68\xff\x3f\xa6\x7b\xe0\x2d\xb8\x3d\x98\x46\x8c\x9e\xd1\x07\x54\x1c\xa7\x25\x0a\x41\x65\xda\xe3\x8d\xab\xe6\xee\x31\xc9\x26\x8f\x6b\x14\x17\x11\x22\x19\xcc\x50\x8e\x16\x29\x43\x56\xd1\x32\x25\x59\x8e\xe2\x7a\xeb\xc0\x13\x9e\x87\x28\x64\x11\x4b\x8b\x05\x62\x20\xc2\x65\xc8\x96\xb8\x04\x40\xb6\xd9\x63\x91\xfc\xe6\xe2\xfe\x57\xf5\x57\x11\xa5\xeb\x75\xfe\x28\xc0\x60\x5a\x2c\x36\x2b\x44\x58\x09\xaa\xaa\xb2\x36\x5d\xb4\xfb\x80\x49\x46\x1f\xa2\x7f\xbb\x21\x98\xa9\xf6\xfa\x07\x62\x69\x58\x92\xd1\x99\xf8\x30\x9a\x15\x28\x65\x68\x9c\x23\xfe\x2b\x0c\x0c\x7e\x05\x60\xa4\x91\x06\xf5\x30\xe9\x51\x80\xe7\x61\xc0\x31\x99\x6f\x67\x16\xf4\x13\xf6\xb8\x46\x74\xde\x63\x51\xc9\x1e\x73\x74\x8b\xa6\xaa\x8f\x27\x44\xb2\x98\xde\xa2\x69\x35\xd2\x9d\xd6\x43\x2b\xf9\x9c\x25\x26\x8a\x09\xe0\xa4\x7f\xa0\xc0\x7a\x48\x4e\x3d\xa2\x04\x85\x69\x34\xb9\x3a\x3a\xbf\x3e\x9d\x9c\x5e\x9c\xdf\x8d\xcf\x4f\xa0\xb5\x97\x38\xe9\x0f\x2b\x00\x4b\xc4\x26\x78\x85\xe8\x86\x85\x76\xe5\x76\x9b\x46\xac\xc0\x8b\x05\x2a\x26\x45\x4a\x4a\xcc\x2b\xc6\x24\x0b\x09\xa8\x20\x03\x90\xf7\x51\xf1\x11\x14\x49\xff\x00\xd2\xe4\xe9\x67\x74\xff\x09\xb3\x1a\x36\x0e\x1e\x1a\x25\x63\x92\x05\xf0\x23\xfd\x6f\x1b\x86\x99\xbf\x11\xaf\xbd\xb0\xeb\xa8\xf3\x69\x8f\x36\x60\x59\x67\x33\x15\x4c\x93\x27\x77\xe2\x71\x70\x5f\x36\x46\xb2\x40\xec\xe6\xf4\xc4\xc1\xa2\x8c\x3e\xb1\xbd\xe4\x7f\xfe\x27\x3c\x40\xff\xf2\x4f\x1f\x53\xb6\x8c\x8a\x94\x64\x74\x15\x02\x50\x3d\x2c\x71\x8e\x42\xb3\xe1\x0b\xc4\xd4\x6e\x7f\x78\x3c\xcd\x42\x06\x80\x5e\x7f\x56\xf1\xa6\xaf\x51\x8e\x66\x8c\x16\xdf\x15\x74\xa5\x00\x9d\xae\xd4\xe6\xf1\x76\x8e\x98\xa4\x78\x28\x0c\xb2\x94\xa5\xfb\x12\x89\x03\x30\x22\x83\x41\xf0\xa7\xa0\x9f\x24\x64\xbb\x0d\xdb\xc0\xcb\x02\xcd\x03\xb0\xdd\x06\x01\x18\xb1\xe2\xf1\xc9\xec\xbf\x1e\x24\x88\xe6\x58\xec\x98\x22\x54\xef\x87\x87\x24\x26\x9b\x3c\xaf\x66\xe2\x7c\x9a\x23\xdc\x13\x85\x15\x2c\xd0\x3c\xa7\x0f\xce\x38\xcd\x01\xa2\xf3\x79\x89\xd8\x0f\x88\xd3\xfb\x0a\xfa\x50\xc3\xf9\x0e\x71\x32\xa0\xa0\x42\x71\x6c\x41\x05\xcb\xcd\x7a\x4d\x0b\x56\x76\x7c\x66\x7a\xfb\x40\x69\x8e\x52\x12\x16\xa0\x82\xb8\xf4\x2d\x9f\x04\x0c\xd9\xed\x70\xba\xdd\x32\x10\x11\x9a\x09\x0a\x51\x41\x7e\x9e\x8e\x97\x68\xf6\xe9\x58\x50\xd9\xfa\x2b\x04\x09\xc4\x35\x0d\x2f\xf9\x71\xc4\xfc\x38\x2a\x0a\xbb\x2e\x28\xa3\xfc\xeb\x06\x71\x94\x44\x0d\xc3\x12\xc8\x5d\x2b\x12\x7c\x5b\x4e\x21\x4d\x08\xff\x2f\x4f\xe8\x60\x90\x46\x66\x94\x21\x05\x87\x01\x92\x7f\x07\x31\xff\x39\xc2\xf3\xb0\x4f\xd0\x43\xef\x0a\x2d\xc6\x5f\xd6\x61\x01\x22\x86\x4a\x16\xe6\x00\xb0\x65\x41\x1f\x7a\xbc\x6e\x5c\x14\xb4\x08\x51\xc4\xe8\xcd\x7a\xad\xc9\xe3\xde\x9b\xb8\x77\xb1\x16\x07\x3e\x78\xb3\x57\xee\xbd\x09\x7a\xeb\x82\x7e\xc6\x19\xca\x7a\x7c\xa0\xbc\x34\xe7\xa5\xf7\x1b\xd6\x43\x5f\xd6\x68\xc6\xac\x9a\x62\xef\x4d\x10\xbd\xe1\x14\x4d\x63\x66\x91\xe0\x10\x40\x14\xcd\x49\x84\x56\x9b\x9c\x13\x55\x7b\x23\x92\x12\xa6\x91\x77\x8b\x42\x30\x18\x84\x28\x42\x9f\x39\xe6\x97\x6b\x34\xc3\x69\x7e\xdb\xa4\x2d\xd3\x84\x84\x00\xc0\xb4\x0a\x01\x2c\x5a\x7c\x55\x23\xe7\x60\x80\x43\x6b\xad\x21\x02\x90\x88\x32\x48\x00\x64\x15\xa4\xce\x97\xe0\xc9\x82\x4d\xd4\x46\x49\x5a\x1b\xa2\xba\x06\x40\x7b\xfb\x66\x94\x94\xac\xd8\xf0\xd3\x97\x30\xc8\xa2\xbb\x3b\x51\x77\x77\x97\x20\x4e\x19\x2c\x74\x93\x44\x3c\x48\x73\x54\xb0\x00\x92\x84\x2f\xcd\x2d\x9b\x42\x9c\x3c\x1d\x9f\x5d\x5c\x8f\xe3\x60\x96\xd3\x12\x45\xf7\x65\xa4\x60\x44\xf1\x89\x2a\xcf\x9c\x8a\xd3\xe3\x1f\xef\x4e\x8e\x26\x47\x77\x47\x97\xa7\x1c\x00\xcf\x3e\x99\xfa\x48\x1c\xec\x74\x8d\x03\x3e\xc3\xa7\xa3\xb3\xf1\xd5\x24\xd6\xfd\x7e\x77\x74\x32\x8e\x83\x79\x9a\xa1\x00\x5e\xff\x70\xf1\x73\x1c\x94\x4b\xfa\x10\x34\xc6\xea\xb2\x5e\x4e\x7e\xa3\x3b\x85\x67\x09\xab\x34\x39\x31\xab\xa0\xf7\x9c\x44\x62\xa8\x89\x7d\x78\x58\xc2\xb6\x5b\xa7\x05\xc1\xce\x50\x22\xcb\x16\x88\x5d\x51\xaa\xc9\x5b\xc8\xc0\x48\x96\xab\xd3\x7c\xcc\xdb\x1b\x73\x54\x08\x11\xe7\xb4\x27\x52\x5c\xb8\x2c\x04\x7a\xa0\x2c\x04\xba\xf1\x02\xad\xe8\x67\xc3\x14\x11\xa8\x20\x89\x32\x5c\xae\x9d\xf1\x80\x27\x14\x49\xc0\x93\x94\xa5\xa1\x33\x2c\x18\x98\x05\x96\x1c\xa7\x9e\xb2\xa0\x58\x90\x34\x47\x9b\xb4\x69\x6c\x19\xf9\xc9\x71\xc8\x80\xc3\x37\x09\x97\xbd\x12\x14\x12\x70\x3b\x9c\x02\x88\xb7\x5b\xf1\x93\x01\xb9\x82\x25\x0b\x83\x28\xd8\xa3\x91\xd8\x3c\x05\x23\x46\xd0\x5a\x17\xcf\x20\x50\x24\x57\x0c\x47\x02\x83\x80\xc5\xac\x6b\x32\x49\x00\x24\xa2\x45\x67\xe1\x3c\xad\xf1\xa5\x18\x89\x4f\x25\xe4\x71\x9e\x96\x65\x48\x23\x8e\x3d\x00\x96\xdd\x87\x58\x7c\xb3\x4c\x4b\xfd\x01\x47\x3d\x70\x28\x4a\xb9\xb8\x50\x76\x8a\x0b\xa8\x66\x15\xd1\x5d\x86\x4a\x56\xd0\x47\xb3\x8e\x10\x81\x0a\x78\x49\x4a\x78\xf0\xcf\x43\x10\xcb\x9d\x6b\x7e\x25\xd0\xa1\x51\x9a\xb4\x58\x48\x86\x58\x3a\x5b\x86\xf5\x22\xa9\x15\x3c\xd1\x73\x0f\xb9\x3c\x12\xdd\xfd\xfa\x6f\x1b\x54\x3c\x9e\x12\x86\x8a\x79\x3a\xb3\xf0\xab\xa6\x3d\x62\x18\x88\xb7\xd6\x20\x01\x62\x9b\xb9\xcc\x04\xcb\x04\x8b\xa3\x1a\x5a\x88\x37\x2a\xb7\xdb\xb0\x4c\x38\x95\x66\x0a\xac\x05\xc4\x99\x03\x94\x44\x21\x48\x12\x2e\x62\x97\xb7\x64\x2a\xa1\x2b\x39\x40\x29\x76\x9e\xe0\x72\x85\xcb\x32\xf1\xb0\x58\x7b\xad\x85\x40\xbf\x96\x27\x4a\x9d\xaf\x90\x13\x39\xd1\x83\x6a\xb6\x82\x05\xa7\x9a\x9b\x3c\x87\xb7\x4f\x9f\xd0\x63\x1c\xfc\x34\xbe\xba\x3e\xbd\x38\x17\xa2\x4d\x9b\xab\x06\xb6\x6a\x17\x54\xd5\x94\xd3\xdb\xd0\xc2\xc4\x5a\x6c\xa0\x44\x2c\xb3\x4d\xd1\xe0\xd3\xc9\xe9\xf5\xc7\xd3\xeb\xeb\xf8\xcd\xad\x20\x66\x99\x9a\x89\xa2\x62\xd3\x37\x55\xa4\x20\x60\xda\x98\x6d\xc8\xd7\x2e\x05\x92\xf5\xdc\xb2\x69\x92\xb6\xf6\x4b\x57\x45\xc7\x16\xf1\x4e\x4d\x29\xa1\x9c\x9b\xe7\x78\xc6\x92\xb6\xb4\xa0\x5b\x25\xb0\xdd\x6e\x25\xf9\x51\xee\xa1\xfa\xf7\x1b\xc6\x28\x69\x90\xfd\xa3\xe3\xc9\xe9\x4f\xe3\x38\x48\x67\x0c\x7f\x46\x01\xfc\x70\x33\x99\x5c\x9c\xc7\xc1\x3d\x23\x01\xfc\xee\xe2\xf8\xe6\x3a\x0e\xe6\x74\xb6\x29\x83\x0a\x96\xc9\x93\x58\x9d\xc9\xc5\xf7\xdf\x9f\x8d\xef\x8e\x8f\xae\xae\x2e\x26\x7a\x79\x18\x5d\x2c\x72\xf4\x9f\xa6\x9b\xe9\x1b\x68\x01\xbb\x50\x1a\xa8\xe4\x50\xa7\xe7\x97\x37\x93\x38\xc0\x64\xbd\x61\x01\xd4\xe3\x89\x9a\x03\x8a\xf8\x88\x04\x33\xe9\xe4\x3c\xb2\xd1\x9a\xf5\xc8\xf1\xdf\x7d\x38\xbb\xb9\xb2\xc0\xc5\x6c\x3c\xe0\xbd\xfb\x7c\x53\xf8\x9a\xf9\xbd\xf8\x92\x9a\x7b\x6b\x63\xfa\x43\x48\xf8\x3f\x85\x3a\x95\xa6\xb9\x9a\x10\x97\x91\xb5\x96\x9c\x14\x73\x19\xab\x90\x0d\xd0\xf6\x67\x42\x0a\x2e\x23\xb1\xb2\x1a\x9a\x0a\xdd\x2e\x28\xd2\x0c\x53\x7e\x64\x69\x24\x04\x09\x5e\x13\xcd\xb8\xf8\x88\x32\x41\x2e\xdd\x96\x0c\xe9\xc4\x91\xdc\x19\x00\x18\x67\x21\x28\x2f\x91\xe8\x3d\x4d\x10\x17\xf0\x54\x8f\x0a\x86\x77\x99\xf2\xd6\x52\x97\x60\x9b\x46\x2a\x3c\x57\x4a\x2c\xe5\x5d\xd8\x0a\x01\x2e\xd3\xfb\x1c\x65\x5c\xce\x2f\x76\xd4\xd1\x68\xc6\x9b\x3c\xc3\x25\xe3\xf2\x0f\x4b\x31\x29\x9b\x5f\xef\x86\x50\x6a\xe7\xc8\x4c\x3f\xe9\xbf\x60\xfa\x10\x85\xb4\xa6\xcd\xc1\x6c\x99\x92\x05\x0a\x40\x45\x23\x81\x57\x21\xe0\x7b\x79\x50\x55\x64\x30\x70\xda\x8a\x4a\x47\x95\x49\x0b\x9c\xee\xaf\x0b\x54\x96\x28\x0b\xe0\x4b\x3a\x06\x90\x79\xf6\x47\xe2\x54\x73\x75\xbf\x4a\xec\x50\xe7\xd6\x2f\x77\xfc\x5e\x0c\xa7\xe6\x23\xba\xbb\x91\x94\x3b\x6c\x6e\xd3\x05\x0b\x31\x67\x3a\x72\xca\x8a\xeb\x60\xce\x75\x04\xc7\xf9\x23\x79\x03\x6d\xf2\x06\xe7\x3c\x2a\x42\x08\x1d\x89\xb3\xc5\xcc\x46\x9a\x32\x48\x6d\x77\xc4\xe5\x2e\x7b\x9b\x25\x9d\x03\x42\xf1\x15\x75\xf5\xd9\x57\x55\xc0\x43\xee\xa5\xae\xc6\xe1\xcd\xc2\x70\xd1\x44\x8c\xd9\x43\xfd\x9e\x1f\xb8\x92\xde\x2c\xd3\x52\x6b\x1c\xfc\x74\x8b\x11\xba\xc8\x27\xba\x83\x6f\xff\x53\x9e\x03\x4c\xc0\xe1\x3f\xbe\x95\x8a\x1f\x93\xa4\x06\x54\xff\x17\x19\xe2\xd2\xc3\x10\x67\x69\x41\x37\x25\xca\x39\x4b\xe4\x68\x56\xff\xc6\x09\x17\x7d\x09\xa4\x86\x55\xa6\xc9\x13\xe6\x4d\x7e\x4e\xf3\xf8\x9f\xd1\xb7\xf0\x13\x7a\xbc\xa7\x69\x91\xc5\xfd\x21\x2c\x73\x9c\xa1\xb8\x7f\x00\xd7\xe9\xa6\x44\x71\xb0\xa4\x9f\x51\x11\xc0\x87\x22\x5d\xc7\xfd\x61\x05\x73\xeb\xdb\x20\x24\x9b\xd5\x3d\x2a\xb6\xf7\x52\xe5\x07\x41\xdd\x54\xa0\xca\x02\xd5\x62\x10\xaa\x82\x6d\x29\xac\x8d\x20\xd0\x3d\x84\xb2\xc0\x6a\x44\x74\x66\x1a\xa8\xe0\x32\x79\x3a\x1f\xff\xfb\x24\x0e\x08\xfa\xc2\x02\x78\x79\x35\xfe\x29\x0e\x38\x4e\x06\xf0\x6c\xfc\xdd\x24\x0e\x72\x34\x67\x01\xbc\x3a\xfd\xfe\x87\x49\x1c\x08\xa3\x76\x50\xc1\x59\xf2\x74\x7d\x76\xca\xb5\x33\x31\x82\x60\x0f\x43\xfe\x5b\xfe\xe4\xbf\x7e\x1c\xff\x72\x72\xf1\xf3\x79\x1c\x7c\x42\x8f\x19\x7d\x20\xbc\xec\xe3\xc5\xcd\xf5\x78\x7c\x3e\x19\x5f\xc5\xc1\x8a\x2f\x20\xd7\x8a\x0a\x53\x73\x36\x3e\xe2\x0c\x5d\xd4\xe4\x28\xfd\x2c\x5a\x9d\x5c\xdc\x1c\xff\x20\xcc\x54\x8c\x6e\x66\x4b\x44\x44\xeb\x67\x17\x47\x27\x16\xa7\xce\x69\x2a\x34\x4e\xbd\x2f\x16\x67\xef\x94\x01\xda\xb0\x15\xdc\x24\x4f\xc7\x47\x57\x62\x2c\xb1\xb5\xe9\x4d\xd1\xc7\x99\xb9\x5e\x19\x0d\xbe\x8f\x19\x5a\xed\xcb\x75\x52\x2b\xe8\x56\xc9\xf5\x94\x6b\xee\xd6\xd8\x3b\xe0\xd6\xc8\xfd\x38\x9d\x8c\x3f\x36\x6a\x82\x0a\x66\xb5\x6c\x66\x64\x21\x59\x70\x27\x3f\x50\xa5\x91\xfb\xa1\x6a\xad\x59\xca\xc7\x75\x27\x87\x10\xb5\x47\x07\x7b\x91\x77\x60\xe7\x27\xa7\xc7\x47\x93\x8b\xab\x6b\xe7\x2b\x92\xe1\x59\xca\x68\x51\x06\x52\xc2\x53\xeb\x26\x05\x3c\xb1\x7a\x53\xd8\xb3\x7e\xed\x33\x3a\x55\xa0\x57\x1c\x52\x89\x82\x05\xce\x90\x75\x06\xa7\x6f\x2a\x38\xf7\xca\x59\x54\xd8\x4a\x94\xa4\xc5\x87\x57\x0a\xa6\xa4\xf8\x94\x3e\x59\x76\x99\x5c\x99\xb1\xc5\xc1\x34\x70\x79\xc9\x0f\x50\x96\xf4\x0f\x4c\xc9\x75\x8e\x33\x4c\x16\xa6\x48\x20\xa4\xb2\x10\xdb\xdf\xca\x4b\x8c\xda\x64\x20\xcd\x6d\x9c\xf2\xba\x0c\x93\x6b\x71\xb7\xc3\xa9\x19\x9e\x5e\xad\x71\x5d\xef\x91\xd6\xb2\xa8\x5e\x6d\xeb\xf3\x34\xcb\x84\x1e\xcd\xa5\x18\x44\x50\x51\x86\x40\x88\x98\xf3\x84\xb6\x45\xcc\x79\xc4\x37\xd3\x5e\xc3\xc6\x1c\xb5\x9d\x42\x6c\x4b\xb8\x8c\x38\x56\x80\x0a\xca\xef\x7e\x5e\x22\xf2\x13\x2e\xf1\xbd\x2b\xa3\xf6\x8d\x05\x78\x89\xb3\x0c\x11\x8f\x10\x82\xcb\x30\x88\x3f\xcb\x4f\x03\x30\x18\x04\x12\x32\xe8\x27\x1e\x89\xb6\x2c\xc3\x40\xc0\xe2\x1c\xb3\x47\x0e\x2e\x20\xf8\x08\x42\x31\x16\x8e\x7b\xaf\x98\x03\x47\x6a\xf9\x1d\xdf\x59\xd7\xec\xb3\xdd\x86\xcd\x7d\x1f\x6a\xf1\xa2\xbd\x01\xe6\x8c\xf0\xf5\x1f\x0c\x76\x58\x15\xc2\xd2\x7f\x55\xe0\xb6\x2b\xb7\x70\xf6\x38\xcb\x51\xd8\x1f\x02\x00\x67\x39\x4a\x8b\x53\x85\xaf\xa1\x8b\xbe\xc0\x87\xce\x7c\x5a\xe2\xfb\x67\xa7\x75\xd0\xfc\x7e\x30\x08\x5f\xdd\x1d\x70\x30\x3d\xaa\x9b\xea\xbb\xdd\x0d\x06\x8d\xd6\x92\x12\x31\xd3\x51\x7d\x65\x50\x6f\xf3\x35\x4b\x19\x3a\x34\x1b\x6d\xa1\x5a\x6c\x0a\x41\x74\x8f\xd5\x1a\x76\x0c\x04\x88\x7d\x66\xb4\xcb\x40\xe4\x3b\xfc\x5d\x9b\x6d\x91\x52\x21\xd0\x48\x29\xd5\x1c\xee\x53\x86\x56\xa7\x24\x43\x5f\x42\x4f\xa3\xd2\xc2\x1d\xb2\xf7\x16\x49\x52\x37\x0e\xfb\x07\xdb\x2d\x7b\x37\x04\x5c\xaf\x6a\x20\x2e\x68\x0d\x85\x12\x14\xce\x22\x4e\x3e\x61\x5b\xa6\xe1\xfa\x62\xc8\x40\x05\xa4\xae\x85\xe7\x21\x4e\x92\x84\x01\x5b\xd4\x16\x28\x1f\x02\xf8\x99\xe2\xac\x67\x61\x1b\x50\x17\x99\xec\x3d\x3e\x94\xa7\x3c\x96\x07\x65\x64\x9f\x9d\x12\x5a\xe3\xbf\x65\x53\x50\xf1\xe5\xf5\x29\x0e\xad\x81\xcf\xe7\x21\xe6\xc2\x5c\xa7\x42\x61\xa8\x62\x8b\x5e\x2b\x32\x6a\x95\x20\x0f\x9d\xf6\x10\x75\x83\xec\x4e\x99\xa6\xde\x2f\xa2\xfe\x2d\x5a\xac\x0f\x59\x4d\xcf\x7d\x6a\x0d\x49\x50\x84\xbe\x30\x44\xb2\xf0\xa9\x82\x29\x9f\x5c\x19\x35\xae\x5d\x38\x8f\x82\xb9\xb0\x67\xce\x3d\x64\xbb\x2d\x7d\x5a\x18\xab\xd0\x5c\xcb\x81\x1e\x0a\x4b\x49\x38\x8b\x94\xec\xe5\xb3\x51\xb2\xe8\x4e\x09\x64\x21\xe2\x62\xb6\x12\x41\x39\xc2\xd8\x3d\x08\x7c\x19\x0c\x42\x7f\xfb\xb5\x1c\xe7\xef\x42\x62\x1b\x52\xfa\x85\x82\x17\xd2\x9d\x1f\x5e\xe2\xa2\x1c\x0f\x25\x82\xad\x96\x2c\x2d\x58\x80\x49\xcf\xd0\x08\xfd\x87\xda\x91\xae\xb9\x6b\x79\xd1\x3e\x28\xcc\xe0\x3f\x73\x98\xf6\x60\x20\x28\x9f\xbe\xe4\x75\x2b\x9b\xc0\x89\xef\x3a\xd8\x3b\x0b\xf8\xcf\xc3\xe1\x1e\x6b\x13\xa5\x4a\x92\x25\xbd\x01\x49\xe3\x96\xbe\xff\x56\x58\xb6\xb6\x0c\x7d\x61\x69\x81\xd2\xb7\xd8\x28\x45\x42\xc1\x8a\x58\xba\x38\x4f\x57\x08\x80\xf2\x01\x8b\x4b\xca\xe8\x61\x89\x67\x4b\xf0\x34\x4b\x4b\xd4\xfb\xf6\x2f\x71\x5b\x97\x94\xf8\xcc\x4b\x43\x30\xba\x2f\x50\xfa\x69\x24\x81\xff\xda\x09\x2c\xf9\xab\x02\xd6\x0e\x0f\x72\x92\x95\x3e\x01\x86\xe8\xf9\xac\xb5\xf6\x71\x46\xd1\x2a\xfd\x84\x8e\x8a\x22\x7d\x0c\x85\xd1\x7a\x9d\x16\x88\xb0\xb0\x96\x65\x38\x59\x75\x48\x40\x84\x79\xc3\x17\x73\x61\x06\xaf\xbb\xfb\xf0\x78\x82\x0b\x24\xfa\x6a\xdc\x83\x29\xba\x9e\x24\x89\xa4\x60\x10\xab\x1f\x9c\x8e\xc1\xd2\x47\xaa\x11\x80\x45\xe2\xa3\xc9\x9c\x5e\x87\x78\x30\x18\x26\x49\x52\x6e\xb7\x64\x30\x28\x93\x24\x29\x80\xe1\x6c\x6a\x4f\xb9\x12\xa5\x09\x2c\x1a\x49\xe3\x5a\x58\xee\x85\x75\xc7\x87\xfb\x07\xf1\x01\x00\xff\x5f\xbb\x17\x25\x84\xed\x1f\x24\x49\x42\x0f\x1d\xca\xea\x19\xd1\x34\xb6\x21\xe8\x54\xac\x89\x92\x29\x38\x49\x6b\xdd\xab\x70\x09\xb8\x9b\x47\x81\x8e\x05\x79\x19\xf3\xe3\xcb\xa6\xef\x6b\x24\x3f\x1a\xc3\xa7\x02\xe5\x29\x43\xd9\x44\x20\x69\xcc\x60\xa6\xf7\x29\x26\x70\x5e\xd0\x55\x5c\x42\x46\x63\x5c\x01\xd7\x0d\xc3\xb6\x4d\xe9\xcb\x70\x00\x0b\x31\xbf\x12\xb1\x23\x41\x9b\x4f\x35\x21\xf6\xdd\x82\xd4\x9c\xb3\x49\xae\x6b\x4e\xd4\xae\x72\xa7\xe6\x9a\x1d\x37\xba\x74\x54\x0b\x0b\x9e\x36\xa2\xd9\x12\xe7\x59\x81\xc8\xad\x77\x89\xa7\x23\x21\xfb\x12\x10\xa5\x59\xd6\x68\x58\x1e\x21\xc1\x56\x7d\x7b\x06\x0b\x48\x61\x2a\x3d\x57\xf2\x97\x8a\x24\x70\xee\xdb\xd2\x1c\xc0\xbb\x84\x6c\xb7\xb9\xb6\x2f\xb6\x0f\x52\xc8\x38\x23\x5a\xf8\xbe\xbe\x03\x70\x95\x68\x67\x83\x86\x44\xc8\x0f\x49\x7d\xdc\x0e\x43\x9c\x6c\x22\xae\xe8\xc2\x22\xd9\xc8\x13\x48\x93\xa5\x28\x01\xb1\xa8\x14\x1a\xb2\xa8\x15\x47\x92\xd7\x8a\x22\x00\xef\xf8\x42\xdd\x59\xe6\xad\x4d\x6d\x3d\x6e\x69\x5d\x42\xbe\xe9\x71\x4a\xe9\xdc\xba\xd6\xa7\x20\xbc\x83\xd4\x7f\xef\x3a\x18\xe4\x83\xc1\x5d\x4b\x45\x48\xfa\x43\xb8\x52\xeb\x63\x58\x84\x14\x7c\xba\x30\x30\xbc\x93\xc8\xb1\x6e\x1c\x84\xe6\x39\xb8\xb3\xce\x01\x95\xe7\x60\xce\xcf\xc1\xa2\x02\xa3\xdd\xd7\x90\x1d\xf6\xdd\x8d\x3c\x6f\xe0\x30\x14\x2b\x66\x50\xab\xe0\x32\x86\x74\x4f\xe1\xbb\x86\xc2\xdc\xaa\xe4\xb2\x97\x03\x8d\x15\xc4\xee\x3b\x4d\x7e\x7e\xee\x1a\x16\xf9\xbd\xa0\x17\xec\x15\x3e\x9c\x96\x2d\xfa\xce\x91\xfc\x46\xfc\x8b\x85\x51\xd2\x51\xa2\xfd\xfe\x55\x86\x48\xa4\x1e\x0a\xb1\x06\x15\x1c\x76\x5e\xa9\xfe\xcb\x70\x08\x40\x1c\x76\x0e\xa7\xb9\x18\x75\xb9\x47\xc5\xef\xa4\x52\x6b\x00\x0c\xd2\x28\x29\xba\xaa\x20\xdd\x61\xf7\x66\xaf\xb6\x7b\x73\xc1\xb1\x21\x4b\x3a\xf5\x00\x8c\x02\x2a\x7c\x3e\x82\xc4\xf8\xc9\x0d\x06\xe6\x8b\x12\x32\x89\xa6\x45\x12\x48\x0b\xa0\x05\x77\xc8\xe2\x32\x12\x24\x88\x9f\xe4\xda\xaa\x4e\xa5\xcb\x5f\xd3\xae\x4e\xa4\x35\x5d\x5a\x23\xad\x66\x00\x96\x8a\x87\x39\x96\xad\x9e\x0a\x79\x93\x54\xfb\xf4\x99\x1a\x7c\x5b\x4c\x5b\x3e\x3e\x6f\xce\x69\x6f\x85\xd8\x92\x66\x3d\x92\xae\x50\xa6\x5d\x75\xde\x80\x11\x87\x0f\x41\x25\x7a\x2a\x2d\x7d\x33\xc4\xe6\xdc\x62\xbd\x19\xc2\xc8\x4f\xa3\x3b\x3e\xf8\xa3\x35\x3e\xce\xf1\xec\xd3\x0f\xd2\xb3\xb1\xa5\x0f\xe2\x1d\x3e\x10\x7c\x05\xc4\x02\x69\xe7\x26\x14\x62\x73\xa3\xc6\x4f\x6a\xe1\x9c\x4e\x6d\x38\x54\xbe\x50\xa9\xb3\x7d\x02\x58\xee\x5c\x73\x23\x61\x2e\xe9\xaf\xc7\xdd\x4d\x1b\xc5\x02\x30\xe2\x73\x4d\xcd\xc4\x85\x1a\xdf\xc6\x38\x6d\xe3\x2f\x00\x4c\x01\xcc\xd5\x18\x15\x42\xf1\xcd\xca\xa5\x3b\x90\x2b\xf6\x55\xe2\xbe\x9c\xfe\x86\x3b\x11\x28\x3f\x52\x2d\x76\x7c\xd4\x4b\xc5\xe5\x09\xed\xbe\x3c\x99\x35\x2f\x4f\xb2\xa8\x36\x1b\x72\xb6\xe9\xd9\x51\xbe\x9c\xd2\x0d\x55\x35\xe1\x58\x86\x5d\x8a\xa6\x9a\xbb\xe2\x54\xd4\x7b\x08\xb5\x11\x00\x8c\xe6\x1d\x6b\xcb\x20\xd3\xfb\x56\xd9\xb7\x14\x6d\x78\xef\x2d\xc5\xfc\x75\xb7\x14\x14\xb6\xdb\xad\xe0\xbc\x0a\x01\x9c\xf9\x6e\x29\x68\x9e\xa7\xeb\x12\x99\x5b\x0a\xf3\x1b\x9b\xdb\x09\x9a\x3c\xc9\xcb\x98\xb8\x3f\x84\x52\x18\x8f\x03\xe9\x16\xaa\xca\xeb\xbb\x05\x5d\xad\xef\x10\x34\x25\x0c\xc4\x45\x45\xed\x8f\x15\x39\x7d\xf1\xf2\x73\x59\x41\xdc\x9a\x1f\x84\xf5\x77\x89\x33\xd4\x2a\x3f\x19\x9f\xc7\xca\x18\xe8\xd6\x75\x9b\xef\x15\x88\x6d\xbe\x5f\xda\xa3\x0a\xe0\xf1\xc5\xd9\xd9\xd1\xa5\xf0\x55\xab\xdb\x93\x65\xa7\xe7\xdf\x9b\x52\x4e\xb2\x0c\xec\x49\x0d\x9c\xc9\x6b\x8e\x9f\x4f\x4f\x26\x3f\xc4\xc1\x03\xce\xd8\x32\x80\x3f\x8c\xa5\xb5\x7f\x89\xd4\x45\xc8\x46\x5b\xdf\xaf\xe3\x20\xe2\xfd\xc2\x5e\x64\x37\xbc\xc3\xb5\xc1\x8c\x6a\xfa\xa6\x82\x99\xd7\xa2\x8d\x1d\x8b\xb6\x25\x2e\xd8\x76\xe8\xda\xa9\xe0\x85\x06\x68\xc5\xc9\x84\x5a\xd6\x50\xd1\x3a\x87\x78\xbb\x2c\xd0\x3c\x09\xfe\xf4\x66\x8f\x45\x38\xdb\x7b\x13\x4c\x61\x27\xa8\xe5\xab\xeb\x7c\xf1\x06\xd4\x3e\xdf\x9c\xe1\x6d\x1c\x67\x05\x58\x24\xc3\x51\xf1\x0e\x1b\x35\x49\xc7\x0e\xd0\x84\x93\x7f\x98\x76\xd3\x6a\x0a\x46\x9c\x7a\xf5\x93\x44\x3b\x13\xcc\x71\xce\x50\xc1\x35\x4e\xed\xe0\xab\xc5\x60\x7b\xf2\xd1\x7a\x53\x2e\x43\x0a\x2a\x59\x25\x11\xbe\x69\x09\xe1\x65\x87\x66\x2d\x2f\x95\x02\x1b\xb7\x2c\x55\x0a\x54\x9b\x9d\xd3\x2c\x3b\x2a\x70\x7a\x44\xb2\x63\x8d\x50\x92\x55\xb8\xf6\xaf\xf6\xa0\x1a\x36\x4d\xb9\xbe\x6a\xf4\xf2\x87\x32\xed\x67\x09\x6e\x9b\xf6\x33\x8f\xf7\x48\xb7\x50\xb9\x94\x8e\x71\x72\x7a\xfc\x64\x86\xca\x27\x8d\x63\x72\x08\x2a\x98\x89\xbf\x3a\x8c\x52\xb5\x28\xde\x40\xcd\xc1\x60\x87\xa3\x82\xea\x53\x71\x55\x48\x47\x46\x8f\x93\x0b\x38\x18\x84\x61\xd1\xb4\x1c\x58\xf5\xc0\xa8\x5f\xa1\xf5\xa7\x96\xe5\xae\x01\xd0\x7b\xbe\xdd\x86\x85\x34\x57\x03\xd8\xe7\x2c\x3b\xa4\x89\xcd\x11\xc1\x60\x40\x5b\x43\xb7\xd8\xb7\x14\xef\x73\x39\xdc\x91\x8c\xa3\xf0\x8b\x84\x29\x80\xfd\xd4\xab\x78\x80\xa7\x42\x48\x29\x3b\x58\xb5\xa0\x88\x01\x80\x74\xbb\xb5\x46\x07\xe5\xc0\x85\x10\x37\xab\x8f\xf2\x09\x5e\x21\x52\x8a\x9d\x18\xb5\x86\x63\xcb\xbc\xcb\x48\x93\x34\x4b\xe0\x35\x85\xa7\xe7\xdf\x37\x6e\xa3\x54\x90\xc5\x6c\x9a\x0c\x3d\x38\xa9\x56\xb4\xd6\x4f\x1c\x84\xed\xe8\xf8\x04\x44\x29\x63\x85\xf2\x61\x41\x5f\xd6\x29\xc9\x84\x13\xcb\x50\xf5\xcd\x15\x00\x7b\xed\xc3\xfe\x50\x4e\x38\x6b\x60\xef\x73\x73\xe4\xd3\xf1\xcc\xd2\x9d\xba\x74\x01\x65\x9e\x19\x07\x01\x64\x9e\xc1\x1c\x08\x59\xcd\xb3\xdd\x12\x25\xce\x41\xc5\x91\xa2\x53\x99\x93\x88\x34\x4f\x82\x72\x56\xd0\x3c\x0f\xf6\xc2\xd9\xed\x70\xda\xf0\x63\x9f\x71\x41\x7c\x86\xc2\x03\xe0\xd9\x4f\xaf\x92\x96\xed\x50\x7e\xba\xb6\xd4\x29\xbe\x9d\x4f\xf7\x82\xf5\x97\x40\x4a\xd3\x99\x10\x00\xf9\x41\x5f\x3a\x36\x89\x97\x1e\xf4\x17\x9e\x73\x62\x9d\x27\x2e\x07\xec\x3e\x4f\x04\xc0\x3e\xe9\x38\x4f\x0d\xdb\x96\x7d\x20\x0c\x21\x71\x17\x00\x37\x16\x80\x73\x91\x0f\x74\x43\xb8\xa6\x77\x9c\x63\x44\xd8\x15\x9a\xb1\x10\xdc\x62\xb9\x30\xb5\x3e\xdd\xb8\xa6\x6b\x8d\xd7\x7f\xb0\x3a\xcf\xa1\x5b\xae\xf0\xb1\xeb\xac\x01\xcd\x29\x25\x5b\xec\x84\xb3\xf9\x64\x1b\xe8\x35\x8c\x33\x14\x9c\xb3\xb9\x7f\x9c\x2a\x51\xef\xe9\xea\x3c\xdf\x07\x40\x71\xd4\xce\x03\xee\x88\xaf\x2f\x3a\x7b\xaf\x3c\xf7\xf5\x51\x95\xd2\x25\xa8\x46\x1d\xa8\x11\x04\xdd\x6e\xe1\x87\x2f\x3b\x92\xb3\x1d\x47\x32\x9e\x49\x0d\x2b\x6b\x4d\xd2\xbd\xaa\xf5\x4a\x78\x8c\x7f\xf7\x3a\x07\x3d\x02\x3a\xaf\xcf\x94\x78\xb3\xfb\x42\xcd\x91\x0d\x9d\x0b\x34\x77\x68\xf2\x42\x2c\x7b\xd5\x85\x18\xe5\xa3\x33\xee\xad\xda\xba\xa8\x0b\xba\xee\xca\x52\x71\x57\x96\xb9\xa7\xdd\xa7\x35\x75\x52\xa2\x59\x24\x84\x78\x70\xa8\xfe\x88\x67\x91\x94\xe3\x75\xb3\x52\xa8\xf3\x13\x3f\x48\xc4\x5c\x47\xa5\x15\xc9\xe4\x11\xfb\xc0\x61\x48\x7c\x92\x23\xf4\x86\x34\xb6\xe1\xa2\x5f\xff\x8b\x0b\x08\x83\x81\xbf\x99\xdb\xe1\x14\x80\x98\x18\x93\xb0\xdb\xb7\xbe\x97\x2e\x92\x6e\xf9\x5d\x94\x2b\x14\x08\xde\xec\x79\x9a\x11\x22\x7a\xad\x9b\x13\x65\x6f\x2e\x9a\xca\xb2\x88\x5a\x62\x3b\x24\x5c\x2c\x16\x55\x1a\x42\x6d\x6a\x43\x00\xbc\x25\x53\xae\x37\xcb\x0d\xed\x6a\xa0\x61\x19\x97\x2e\xc0\xc6\x4a\xd6\x26\x51\x23\x62\xc9\x27\x0d\x77\x43\x8b\x5c\xc1\x3e\xee\xa0\x58\x18\x54\x15\xec\x18\xf5\xeb\xe2\x66\x8c\x13\xf7\xa1\x0a\x97\x91\x51\x85\xb0\x2d\x01\xbe\xca\x3c\x58\x9a\x38\x8c\x22\x29\x8d\x89\x30\x6d\x9c\xae\x52\x9b\x98\x7c\xb6\x41\xe5\x8c\x50\x0c\x06\xa9\xd1\x29\xde\x72\xe1\x7e\xcb\x19\xbf\x76\xc0\x04\xc2\xce\xa4\xd0\x87\x53\xe1\x42\x4a\xd1\xe8\x81\xeb\xa2\x22\x22\x18\xe8\x7e\x08\x2c\x00\x80\x6d\xfb\x62\xa7\xd5\xaf\xb8\x65\x2f\xb3\xfa\x31\x69\xf5\xe3\xf0\x9c\x7a\x0a\xa7\x5d\xfc\x87\x1b\xa8\xa8\x30\x50\xe1\x6e\x03\x55\xde\x34\x50\x39\x0a\xac\xe3\x1d\x1b\x1c\x89\x3b\xf5\x68\xb6\x29\xf8\xd1\x9a\x38\x37\xb8\x83\x41\x87\xd7\x2f\x76\xb6\x79\xa7\x61\x12\xb5\xcf\x65\xc3\x88\x05\xcb\x84\x69\x54\x39\xd4\x3e\xbf\xb1\x0a\xd0\x01\xa3\xac\xd3\xc4\x55\xba\xb6\xad\x36\xa0\xd7\xb6\x95\xbd\xce\xb6\x85\x61\xbb\xdd\x0a\x66\x55\x08\xe0\xc6\xfe\xac\x03\x95\x48\x0b\x8f\x82\x3a\xb7\x42\x56\xd0\x75\x46\x1f\x48\xaf\x40\xff\xb5\xc1\x05\xea\x5d\x52\x2e\x72\x47\xbf\x5a\xe9\x16\xd6\xba\x28\xa2\xc5\x02\x04\x40\x85\xad\x07\xfa\x5b\xe1\xda\x7b\x5f\x46\xf5\x6f\x2a\x5c\x7d\xb1\x38\x75\xd2\x98\x96\x27\x56\xf0\x6a\xf0\xed\xbf\x6e\xff\x3c\xdc\x7e\xf3\x97\x00\xc0\x65\xf2\x54\x1b\xbb\x82\x3d\xda\x30\x71\xf1\x12\xcb\x50\xa5\x7e\x69\xa3\x19\xff\x2d\xf0\x4c\x59\xbb\xcc\x6f\x9f\x19\x4c\x0f\xcf\xf2\x78\x55\xde\x1f\x16\xb4\x72\x38\xe8\x86\xbf\xb9\x74\xa1\x37\x6b\x3f\xac\x30\x88\x9d\x9c\x5e\x1f\x7d\x38\x1b\x9f\xc4\x75\x88\x84\x3d\x1b\x78\x72\x75\x71\x79\x73\x19\x8b\x95\xdc\xac\x03\xf8\x71\x7c\x7e\xa3\x7c\x64\x75\x8b\xfb\x2b\x44\x36\xda\x47\x96\xd7\x4b\x3f\x59\xb7\x5a\xf8\xc9\x0a\x03\xdb\x0e\x1b\x9a\xd9\x9e\xe9\x1b\xf8\xdd\xc5\xd5\xc7\xbb\xe3\x1f\x4e\xcf\x4e\xe2\xc0\x0c\xbe\x37\xa7\xc5\x4a\x76\x62\x95\x8a\x1e\x02\x78\x7e\xf4\xd3\x87\xa3\xab\xbb\xf3\xa3\x9f\xe2\x20\x22\xe9\xe7\xfb\xb4\xd8\x27\xe9\xe7\x00\xfe\x74\x7a\x7d\xfa\xe1\x4c\x5e\xb1\x5e\x37\xbf\xeb\xd5\x3f\x31\x43\xab\x98\x50\x16\x46\x7a\x2d\x80\xf4\xc8\x9d\x5c\x5c\xc6\x01\xa3\xeb\x7d\xe9\xc8\x02\x27\x17\x97\xca\x89\x79\xbd\x2f\x62\xf4\x3f\x5c\x4c\x26\x17\x1f\xe3\xe0\x9e\x32\x46\x57\x1a\x4c\x96\xca\xa8\x7c\x59\x21\xa3\xf6\xe7\xc9\x93\x8c\x32\x8f\x87\x70\x9e\x63\xe9\x2d\x7e\x67\x0a\x8d\xaf\xb8\xb2\xd4\xea\xf3\x03\x02\x09\x6d\xb9\x7b\x2f\xbc\x76\xc6\x54\x85\x14\x7b\xcd\x89\xf2\xa8\xbc\xc0\xc3\x15\x69\xd9\x93\xaf\x52\x5d\xfb\x11\x91\x8d\x26\x5e\xb5\x3b\xe1\xb9\x58\x6e\x05\x95\x21\x86\x66\x4c\x16\x19\x98\x2e\x97\xd6\x45\x92\xb6\xed\x5e\x0b\x8f\xdd\xab\x56\x5b\xb5\xd4\xaf\x77\x69\xa7\x81\x6a\x16\x69\x14\x07\x9a\xa4\xa6\x96\x98\xd8\xa4\xc5\x96\x82\x88\x8d\x7c\xc6\x57\xc0\x69\xd2\x18\x91\xd2\xe8\x4e\x78\x1d\xf1\x55\x29\x43\xc0\x85\x12\xc5\xe2\x9b\x9e\x14\x76\xdb\x95\xe5\x79\x21\xa5\x1e\x58\x6a\x1d\xda\x71\xa0\xe8\x17\x3b\xf4\x66\xea\x2a\xc2\x23\x57\x9a\x9a\x45\xf2\xe8\x02\xcb\xf1\xab\x35\x0f\x7d\x5a\x85\x5e\xb8\x03\x46\x5e\xf0\x03\x61\x74\xd3\x1e\xae\x06\x93\xd0\x43\x8f\x84\xd4\x42\x16\x58\xdb\x57\x05\x88\x42\x28\xf0\x2a\x87\xb0\xbe\x13\x92\xbc\x89\xea\xd3\x0d\x2c\xf9\x30\xb8\xa7\xd9\x63\xe0\x18\x11\x29\x09\x65\xd4\x81\x0c\xc7\x10\x88\x8e\x22\x42\xe9\xba\x69\x51\xd1\xa1\x5b\x0d\x5d\xb2\x1d\xb1\xe5\x5a\xbb\xdc\x95\xb2\xc5\x53\x85\x18\x50\x6e\x63\xbb\xc2\x6c\xad\xbb\xf9\xe7\xb0\x04\xd2\x6e\xb3\x78\xa5\x7e\x88\x3d\x66\x0c\x3a\x9f\x87\xd4\x17\xce\x65\x1f\x67\xf1\x5b\x19\x0b\xec\xdd\xd4\x76\x75\xc5\x50\x55\xd4\x72\xd8\xdc\x72\x21\x05\x2f\xa2\xcd\x3a\x4b\x19\xf2\x78\x6d\xef\xa4\x07\xcf\x77\x5b\xce\x96\x28\xdb\xe4\xe8\x46\xb4\x1f\x02\xde\xd7\x8b\x9d\x2b\x7d\x9e\x84\x4b\x29\xeb\x39\x0e\x8b\x9e\xc0\x63\x14\x95\x8c\xae\x2f\x0b\xba\x4e\x17\xa9\x6c\x59\xf8\x0d\x2a\x33\xbd\x1c\xc7\x2b\x54\x64\xe9\x55\x50\x8b\x55\x91\xea\xaa\xbd\x69\x4a\xd4\xef\x74\x31\xed\x6a\x69\x22\xb2\x42\x10\x3d\x30\x8b\x38\xfb\x49\xa7\xc0\xd9\x57\x91\xc1\x91\x85\x35\x02\xaf\x85\x1a\xb9\x11\x64\x81\xab\x44\x95\xe3\x28\xc8\xc1\xf4\x60\x2e\xf3\x74\xd6\x1a\x8a\x2d\xd4\x5a\xf3\xd7\x9e\x84\x90\x24\x59\x24\xf9\xe6\xc8\xca\x69\xd4\xa4\x69\x5c\x3d\xcf\xa2\xc9\xc5\x25\x7c\x01\xd9\x12\x5a\xb8\x80\x1e\x9f\x9f\x00\x10\xbf\xfc\x13\xc3\xc0\xf5\x12\xdb\x98\xfc\x12\xa3\x45\x9d\x51\x41\xca\x23\x41\x7d\x83\x65\x56\xc9\x22\x91\x9d\x36\x8b\xa7\x6a\x14\xe8\x3a\x4b\x37\xb3\xb5\x7e\x29\x3c\x1c\x92\x68\x4e\xbc\x88\xa9\x00\x5c\x47\x14\x53\x0a\x59\xa3\xa1\xd0\x54\x81\xed\xf6\x49\x28\xf9\xb1\x2e\x4a\x3c\x1d\x2b\x8d\xe7\x69\xad\x37\x3d\xae\x99\x80\x2e\x0a\x01\x5c\xd1\x0c\xcf\x31\x2a\xca\x58\x4b\x3b\x44\x0a\x35\x4f\x88\x08\x5e\x1e\x3b\x6d\xf3\x2a\x2b\xb1\x8b\x4b\x5d\xc4\x55\x8c\x69\x50\xe6\xb9\xba\x66\x8f\x39\x4a\x4c\x63\x7d\xf7\x8b\x4a\xa4\xb2\x68\x07\x0b\xbe\x4a\x7b\x27\xae\x73\x0f\xe6\xaa\x59\x5b\x45\x3f\x64\xc2\x56\xc0\x99\xba\xcc\x6a\x24\x72\x03\xf8\x7d\x72\x30\x24\xaf\x53\xbd\xc9\x2b\x55\x6f\x52\xab\xde\x8e\xc0\xd2\x72\x5a\x66\xdb\xed\xb7\x9c\x34\x4b\x5f\xe4\xc1\x20\x94\xfa\x43\x20\xca\x78\xe7\xdb\xed\x5f\x13\x53\x0f\x40\x9d\x28\xce\xbd\xe1\x73\xef\x82\xf9\x0a\x0d\x47\xe5\x3b\x6d\xd8\x19\x95\xda\xc8\x5d\x74\x12\x21\x72\x5b\x4e\x01\xa4\x09\x92\x7f\x99\xb5\xce\x9b\x82\x15\xaf\xae\x54\xa4\xbb\xbc\x6d\xa2\xf2\x68\x4b\x79\xaa\x68\xcb\x6d\x83\x41\x3f\x64\x7c\x6e\x52\x21\x4b\xf4\xdc\x06\x83\x97\xfa\x6c\x6f\xb7\x6a\x5d\xac\x6f\xed\x75\x19\x0c\x50\x1d\x7b\x5e\x40\x13\x54\x6b\x6e\x91\x6a\xfe\xcf\x35\x4b\x98\x2b\x0b\x80\x16\x0f\xe6\x00\xce\x3b\x32\xce\x84\xaf\xf2\xa9\xf7\x89\x47\xf3\x79\xb7\x7c\xc4\x17\x73\xb7\x00\x14\xcc\xd3\xbc\x44\x01\xc7\xe0\xcc\xb5\xe3\xd7\xc2\x4f\xe1\xad\xf0\x08\x3f\x52\x91\x86\x39\x50\xe2\x4f\x07\x32\xb4\x8d\x76\x70\x97\xab\x97\x31\xf8\x60\x41\xc6\x95\xa3\x17\x80\x64\xbb\x65\x8a\xd1\x9c\xd3\x0c\x89\xee\x94\x13\xd2\x8f\x52\xa7\xf6\x39\x96\x89\x98\x9f\x7e\xae\x31\x41\x6e\xf0\x76\xfb\x56\x06\xa7\x77\xa2\xc8\x60\xf0\xed\x37\x35\x46\x6c\xb7\x2f\x47\xad\xd0\xe7\xcb\xef\x13\x4c\x38\x81\xd2\x2a\x90\x96\xdf\x3b\x14\x1f\x73\x6f\xb7\x8b\xe7\x4b\x8d\x87\xf8\x15\x9d\x10\x6f\xb7\xdf\xfc\x25\xb1\x68\x83\x3d\x3f\xce\x30\xfb\x02\xa2\xef\x40\xf4\x2d\x5a\x61\x4c\x9f\xc4\xc8\x10\x8e\x62\x0e\xf8\x86\xca\x7b\x3f\xed\x30\xaf\x89\x84\x15\x46\xa0\x8f\xd2\xe8\xdb\x7f\xb5\x07\x53\xbc\x1f\x0e\x06\xc5\xfe\x3e\xfc\xf3\xd0\x29\x7e\x57\xfb\xde\x0f\x06\xc5\xde\x1e\x2c\xde\x0d\x07\x83\xb0\x48\x86\x00\x96\xb7\xc5\x54\xeb\x00\x55\xa5\xc3\xad\xec\x49\xd6\x99\x36\xea\x31\x37\x33\x72\xb8\x89\x21\x64\xce\x14\x50\xe9\xdd\xa8\x33\x46\x08\x5a\xa3\xdc\xf3\xd2\x3f\xdc\xfa\x39\x6f\x02\x72\x41\xb1\x0b\xf8\x4e\x98\x4a\xd3\x6e\x53\xe9\x32\x6a\x9a\xa1\x1a\xc6\xd2\x45\xc7\x49\xea\xfe\x9a\xcb\x5a\xcf\x7d\xe6\xda\xc9\x84\xe3\xb1\x68\xcb\x32\x70\xf1\x26\x6a\x7e\xe6\xfd\x6e\x87\x5d\xf7\x85\x27\x6d\xd1\xe9\xf0\x21\x8f\x4d\x23\x05\x83\x67\x00\xb5\x31\xab\xd1\x7f\xab\x33\xcb\x54\xdb\xee\xd6\x6b\xaa\x5d\xbc\xce\x54\x9b\x7a\xa6\x53\xc1\x45\x15\x02\xd7\x6b\x4d\x59\x50\x57\x34\x4b\x65\xa6\x84\xe8\xbe\x8c\xd4\x2f\xc7\x03\xf1\x3e\x9d\x7d\xca\x0a\xba\x8e\xfb\x43\x27\x3d\x82\x38\x0a\x22\x4f\xc2\x92\x3e\x08\x13\x57\x6a\x01\x7b\x92\x1c\x78\x12\x22\xc8\x36\xac\x04\x09\xbc\x29\xcb\xfe\x95\xdb\xa6\x59\x6b\x80\x6d\x27\x44\x55\xe1\xfa\x39\x5a\x85\xb6\x93\xa3\x2a\x16\x99\x2d\x4e\xcf\x55\xea\x20\x6c\x57\x5d\x8d\xaf\x4f\xff\x63\x1c\x07\x05\x2a\xf1\x7f\xdb\x1d\xab\x9d\x57\x29\xa4\x94\x65\x57\xa5\x90\xb2\xc0\xcc\x81\xd0\x80\xda\xa8\xdb\x06\x15\xe1\x76\x1c\xe3\x35\xa8\xe0\xdd\x9b\x75\x17\xa8\xdb\xae\x00\xee\x68\xb9\xd3\x0c\x2d\xea\x9b\xae\x98\xc7\x57\x17\x67\x67\x1f\x8e\xae\xee\x3e\x8e\x8f\xae\x6f\xae\x64\xd6\x87\x2c\xcd\xf7\xa5\x43\xcc\x7d\x5a\xec\xaf\x50\x5a\x6e\x0a\x14\xc0\x0f\x47\xc7\x3f\x72\x4d\x4d\x83\xe8\x5d\x0f\x20\xd7\xc1\x74\x29\x5d\x23\xb2\x23\x2b\xa0\x30\x4e\x1f\x9d\x5d\x7c\x1f\x07\x72\x44\xfb\x19\x4e\x73\xba\xdb\x0b\x53\x4e\x4d\x27\xa1\xea\x4a\xe5\x65\xa0\xbe\x3b\xfd\xf7\xf1\xc9\xdd\xf1\xc5\xf9\x64\x7c\x3e\x89\x83\x68\x8e\xbf\xa0\x6c\x9f\xd1\x35\xec\xa9\xbf\xa5\xe1\x16\xf6\x22\x5c\xee\x8b\x12\xd8\x8b\x4a\x86\x67\x9f\x1e\x39\x58\x00\xaf\x27\xa7\xc7\x3f\xfe\x62\x35\x61\x57\x2a\x9b\x95\x1c\xea\x55\x6d\x95\x96\xa3\x2d\x84\x3d\xfc\x59\x47\xd1\x97\x26\x20\xd0\x06\x5e\xb9\x4a\x96\xae\xce\x05\x01\xbe\x8e\x56\x7e\x01\xbd\x21\x8d\xa0\x5a\x7e\x00\xec\x1c\x09\x1f\x68\xf6\x78\xf1\x19\x15\xf3\x9c\x3e\x38\x3e\xaa\x78\x41\x68\x81\x3e\xa8\x56\x84\x0b\x77\x5d\x49\x0b\xbc\xc0\x24\xcd\xf9\xd7\x97\x69\x26\x42\x30\xb4\x1b\x9a\x41\x96\x9f\x71\xc6\x96\xc9\x50\x98\x80\x37\x3e\xd7\xc7\x4d\xcb\x04\xdc\x0a\x4a\x94\x03\xee\x70\x77\x64\xa0\x82\x9b\x86\xbf\xa3\x1b\x37\xbe\xcb\xe1\xd1\xe9\x01\x3c\x7d\x55\x8c\xcf\x52\xa6\x1d\xac\xc3\xe6\x9b\x1e\xbf\x43\x73\x4f\xe8\x78\x27\xb6\x82\xf0\x2a\x8f\x37\x99\x49\x13\x08\xdc\xed\xdb\x6e\x71\x97\xe6\xd0\xd8\x66\xbd\x25\x22\x0d\xd6\xb5\xde\x17\x3b\x66\xaa\x5d\x98\x66\xbf\x6e\x4a\x76\x22\x30\x4c\x04\x3f\x18\xe5\x83\x2b\x1a\x8e\xf7\x0e\x3f\xe9\x56\x5b\xe3\x72\x96\xae\x55\x60\x97\x55\x7c\x25\x08\xa8\x2e\xf6\x99\xee\xcc\x35\xad\x4a\xba\x37\x8b\xec\xa3\x0d\x3d\xd8\x41\x24\x32\x30\xc1\x4b\x43\xfb\x50\xa8\x06\x5b\x74\xd2\x8d\x2c\x20\x0d\x0f\x21\xf5\x41\x4d\x83\x61\x23\x7b\xa3\x9d\x8e\xdb\xfa\x98\x6b\x1f\x1d\x47\x65\x28\x2f\x65\xd5\x32\x2c\xe9\x83\xae\xf7\xc4\x4e\x11\x09\x61\xe5\x93\xe4\xda\x12\xdc\x34\x5c\xfc\x5a\xb8\xcd\x7c\x17\xd3\xb0\x0b\xe3\x1b\x08\xdf\xc4\xcb\xe7\xbd\xfc\x9a\x88\x38\x18\xf4\xfd\x98\x68\xc5\xed\x29\x7a\x33\xd2\x52\xfe\xd7\x1f\xb2\x51\xb1\xeb\x98\xbd\x1a\x0d\x2d\xe9\x77\x3e\x0f\xf3\x48\x89\x02\x1e\x0c\xf5\x79\x01\x7a\x4d\xf2\x0d\x3c\xf6\xa0\xa6\x00\x6a\xe1\x26\x80\xc5\x0b\x1d\xd7\xbc\x47\xe1\x8e\x63\xc9\x47\xce\xef\x04\xe6\xf8\x5d\xdb\xbe\x1d\x9a\xec\xa5\x35\xb8\xd0\x55\x36\x5f\x91\x51\x4e\x72\xd7\x3a\x96\x07\xea\xd5\x74\x19\x56\x83\x15\xc9\x05\xd8\xe1\xf0\xe6\xb9\xca\x50\xac\xce\x2a\xd9\xc5\xd8\x9c\xa2\x26\x6b\xb3\x2b\x3d\x27\xd6\xaa\x6e\xb0\x30\x79\x17\xb2\x51\xe9\xf6\x6f\x3a\x6e\x44\x5c\xc2\xc9\xe1\x5f\xed\x6a\xb7\xcb\x9f\x6e\xe3\xd0\x88\x0e\xa2\x20\x8c\x26\xbf\xe1\x88\xb9\xd7\x64\xb5\x21\xa5\x99\xf2\xb0\xae\x31\xe9\xca\x93\x24\x11\xbf\xc7\x67\xe3\x8f\xe3\xf3\xc9\xdd\xf9\xc5\xc9\x78\xbb\x75\x98\x47\x94\xae\xd7\x88\x64\xc7\x4b\x9c\xfb\x33\xea\xb8\xce\x9e\x02\x2f\xf3\xf4\x31\x09\xee\x73\x3a\xfb\x14\x34\x60\x24\x82\x36\xcd\x58\xca\x61\xa3\xd5\xa0\xd8\xd1\x09\x5d\x27\x43\x88\x07\x83\xaf\x71\x18\xb6\xdd\x7f\xb5\xed\x9a\x6b\x0d\x66\x6d\xc8\x9c\x16\x33\xf4\x9d\xb4\x36\x28\x82\xe7\xb2\xfd\x73\x0f\xdf\xb7\xd3\x84\x83\x27\xd2\x6c\x9b\xb4\xef\x32\x89\x37\xb2\xc8\x65\x6a\xf5\x05\x73\x35\xc2\x87\x6d\x16\xe9\xa1\x2d\x74\x17\xe5\xa0\x0a\xa3\xed\x49\x76\x5e\xce\x75\x91\x56\xc9\x9a\xd5\x2f\x68\x1f\x09\xfd\x45\x92\x24\x44\xb1\xda\xed\xb6\xf6\x26\x76\x8a\x5d\x37\xe3\x65\xca\x19\xb2\xe6\xce\x3a\x8e\x84\xb5\x56\xad\x92\xe3\x77\xf9\xc3\xce\xdc\x2d\x86\xc9\x39\x5b\xae\x35\x58\x1f\xc1\x0e\xf3\xa8\xa1\xf5\x39\xb7\x91\xc2\xec\x84\x8c\xdd\xdd\x9b\x15\x59\xca\xb8\xa0\xd2\xb4\xda\x88\x7c\x1d\x0c\xa7\xd1\x9f\x99\xa4\xc5\xed\x5e\x32\xc9\x43\x27\x28\x33\x8f\xa4\xf2\xeb\x4f\xfe\x62\x53\x41\x91\x03\x26\xb6\x3e\x16\x83\x92\x5f\xcb\xb1\x18\x66\xb3\x73\x18\x1d\xe7\x9e\x50\x82\x9a\xc7\xde\x63\xba\x56\x67\xbe\x8e\x53\xe9\x8e\xbc\xeb\x12\xc4\x5a\x62\xae\xcb\xf4\x95\xa4\x1b\xdd\x15\x88\xf7\x2f\x28\x3d\x07\x16\xae\x05\xaa\xd4\x16\xa5\xbb\xc2\x50\xb4\x6f\xbb\x5c\x1b\xd9\x87\x1e\x4e\x9b\xa3\x68\x4e\x67\xb9\x77\xd4\xac\x54\xa7\x0c\xf7\x71\x45\x60\xd8\x45\xbb\xf1\x26\xbf\x78\x96\x29\x1c\xca\xff\xe3\x20\x18\xd9\xa9\xaf\x3c\x67\xc3\x0c\xee\xe9\x59\x69\x0f\xd7\x6d\x99\x91\x77\xbd\x40\x93\xe1\xcf\x41\x73\x9a\x32\x03\xf0\x79\xba\x42\xc9\x32\xd2\xb6\x08\x4e\xd9\xdb\x0b\xe5\xa6\x52\x68\xd5\x0a\x96\x34\xa1\x8d\xfd\x7f\x91\x9e\x62\xaf\xa9\x5f\x0d\x38\xec\xd2\x0e\x0e\x62\xad\x52\xb4\xbd\x4e\x07\x83\x30\x28\x59\xca\xf0\x4c\xa4\xc2\x6d\x2d\xef\x61\x9b\x27\xc4\xa4\xa6\x1c\xb0\x68\xf1\x37\x33\x5d\xdf\x02\x34\x39\x5c\x5f\x67\x22\x93\xee\xc7\x3a\x6b\x8e\xcc\x44\x66\x45\xb1\x59\x52\x9d\x8f\x9d\xb0\x1d\x69\xf4\xab\x46\x62\x90\x06\x3a\xd5\x78\xd4\x85\xf6\xae\x37\xb9\xb4\xe0\xbb\x5c\xd4\x3d\x5b\xa1\xc8\xb1\xcc\x42\x50\x7d\x5d\x2e\x8f\x65\xfd\xbc\xc0\x4b\xe6\xde\xc5\x4a\xc5\x13\x02\x54\xe7\x45\x50\x23\xe2\x47\xd5\x96\x1d\xfd\x84\xb2\x29\xca\xc8\xd7\x6b\xde\x77\xdd\x0c\x46\x33\x11\x27\x25\xa1\x46\xfd\x0e\x91\x78\x30\x60\x46\xa7\x72\x49\xf0\x5a\x1a\x75\xce\xd0\x5c\x77\xef\xca\xc4\x22\xee\x0a\x74\x89\xda\x83\x41\xff\x99\x86\xaf\xf8\xb8\x76\xb4\xac\xe8\xa3\x4b\x6c\xdb\x14\xb2\x7b\xd0\x41\x8b\x6f\xb4\xbb\x0f\x02\xd1\x8d\x6b\x1d\x69\x2f\xbf\x2b\xc3\x76\xc4\xa2\x8d\xba\xb4\x0e\x16\xe5\x68\xce\xf6\x58\x24\xbc\x67\xdf\xa9\x27\xb8\x30\x21\x48\xce\xd7\xaf\x72\x18\x53\xe0\xb5\x53\x1e\x1a\x06\xbf\x63\xbc\xc6\x3a\xe0\x1f\x11\x3f\x55\xb3\xc8\x31\x8b\x36\x1d\xd3\xc5\xeb\x42\xfa\x2e\x4f\x5c\xad\x7a\x96\x0f\xca\x04\x1b\x32\xef\xa7\xaa\x50\x2e\xc2\x9c\x48\x60\x9d\xe5\xdb\xad\x82\xa5\xf7\x0b\xb8\x4e\x8b\x12\x7d\x97\xd3\x94\x85\x05\xd8\x63\x1d\x58\xc1\x09\xd8\x2c\x72\x0d\xb2\x2f\x1e\xfc\x2a\x2d\x16\x98\xb4\xc7\x2e\xcb\x7d\x43\x77\x6a\xcc\xc8\xdd\x52\x67\xe0\xfb\xbb\x07\xee\x1a\x8b\xff\x37\x0d\xbc\x7b\xc5\x55\x66\x2d\xf7\x10\x78\xb0\x81\x4b\x12\xc6\x17\xc1\x8f\x12\xba\xda\x8b\x17\xe4\x59\xbc\xc0\x60\x6f\x07\xc1\xa8\x29\x86\xf7\x68\x3c\x8b\xf3\x56\x1e\x36\x71\x17\xec\x1b\x24\x18\xf9\x82\xc3\xb0\x8a\x62\xf2\x0d\x1f\x03\xdb\x90\xd2\x6c\xce\x8b\xcf\x7b\x01\xec\x05\x7b\xcf\x21\x8b\x7f\xb8\x0d\x8c\x78\x76\xb4\x2e\x46\x34\x06\xeb\x36\x56\xe9\x88\x8b\xdd\xfb\xe8\xef\xd4\xf5\x54\xf1\xac\x13\xdb\xbd\x4e\xca\x98\xe2\x12\xc3\x1d\x94\xda\x27\x41\x8e\x98\x23\x34\xb6\x6f\xbb\xe0\x0e\x63\x05\xd0\xcf\x4a\x75\xd1\xff\x48\xe4\x1b\xd9\xd7\x8c\x57\x0c\xd0\xa4\x78\x70\xda\x55\x12\x8c\x6a\x17\xa2\x67\x62\xcd\xe0\x0b\x1e\x61\x28\xdb\x8f\x30\x68\x0b\x5d\xe1\x58\x99\x70\xc3\x3d\x15\x3c\x1f\x80\x56\x3f\x19\xa4\xe2\xc9\x0a\xcf\x33\x0e\xea\xba\xb1\x7c\x9d\x8f\x5b\xf9\x4a\x1f\x37\x0e\x1f\x12\x25\x3d\x15\xe2\xe2\x47\x24\x73\x5e\xd2\x07\x5e\xfc\xbf\x36\xea\x6c\xd6\xe9\x9d\xa0\x3d\x9d\xe4\xc2\x3e\x17\x42\x56\x28\x67\xa7\x42\x38\x3b\x8d\x2c\xc7\x95\xe6\xb6\xd7\xe1\x63\x6e\x52\x2b\xd2\x95\xd4\x6a\x14\x1c\x05\xda\x61\xdb\x04\xbd\x05\x47\x57\xe3\x56\xb1\xf0\xb0\xf2\xc5\xc2\xa5\x72\x28\xf2\x3a\x45\x5c\x72\xb9\x7e\x10\xfe\x2b\xab\x54\x7d\xa0\xfc\xc4\x1c\x8a\x8d\xdb\x09\xc8\xb1\x65\xcf\x01\xa3\xcd\xae\x57\x33\x64\xb8\x82\xed\x6d\xd1\x06\xf7\x7a\x5b\x6c\x5e\x1b\x18\xd7\x6e\xb7\x82\x9b\x2a\x04\x6e\xd6\xfb\xaf\x09\x8c\x63\x94\xe6\x0c\xaf\xcb\xaf\x09\x8c\x53\xdf\xca\x27\x2f\xee\xcb\xc8\xfc\xb6\x9f\xbe\xb0\xe3\xe1\xc2\xff\xdc\xfe\xed\x6f\x25\xb8\x2f\xf7\x15\xe8\xdf\xfe\x76\xbd\x17\xc0\x60\x11\x08\x9f\xcc\x94\xe0\x95\xf0\x60\xb1\x9c\x35\x18\x5a\xad\xb9\x9a\x13\xeb\x53\x0f\x19\x66\x39\x6a\xa5\xa0\xb2\x03\x9c\x94\x35\xa4\xfe\x24\x43\x79\xfa\x58\x87\x44\x49\x4a\x04\x02\xb8\x64\xab\xdc\x76\x0c\x51\xe7\xc2\xf7\x46\x46\xed\x92\x6c\x2a\xad\x1e\xfd\x41\x57\x20\x80\xca\x81\x13\x15\xed\x01\xd7\x6d\xcf\x53\xce\x72\x66\x9f\x2e\xdb\x7d\xa4\x22\x9b\x8a\xf4\x9e\x38\xba\x99\x5c\xc4\x41\xba\x61\x54\x04\x8f\x89\xc8\xb1\xc6\x2b\x1c\x8d\x18\x32\xe7\xbd\x0e\xe1\x0c\x51\x2f\x71\x7f\x58\xaf\xed\x9b\x77\x19\xfe\xdc\x13\xbc\xab\xde\xd5\x5e\x41\x73\x54\xff\x7c\x6f\xc3\xa4\x45\x41\x1f\x82\xf7\xef\xde\x66\xf8\xf3\x7b\xcf\xc7\xfb\x42\xfb\x30\x00\xe2\xdf\x37\xf5\xbe\x88\x0c\xd3\x3d\xe9\xe6\xa6\xf7\x53\xef\xd2\x50\xee\x8a\x48\x06\xa9\xb6\xa3\x7f\x60\x2f\xbf\x98\xb5\x09\x7d\xab\x17\xb8\x7f\xe0\x5b\xc8\x79\x8e\xd7\x32\x64\xd0\x0e\x48\xbc\xb8\x99\xc4\x01\xdd\x30\x19\x99\x67\x07\x66\xe2\x56\x60\x26\x76\x02\x33\x71\x23\x30\x13\xc3\xd3\xf3\xeb\xf1\xd5\x64\x7c\x12\x07\x98\x94\xa8\x60\x48\x3c\x47\xe2\x86\x6b\xe2\x96\x1f\x90\x29\x13\x43\x11\x85\x7c\x3c\x5f\xf7\x24\x8a\x88\x06\xec\xf4\x81\xb9\x4b\x9e\x26\x17\x17\x67\x93\xd3\xcb\x38\xa8\xcf\xa8\x2a\xba\x3b\x3d\x3f\x17\x5e\x25\xee\xce\xc1\xa3\xab\x2b\xde\x44\x24\x77\xba\x82\x8b\xe4\xe9\x87\x8b\x9f\x38\xa4\x7a\xa1\xc6\x79\xdf\xcd\x9d\x2e\xfc\x78\x74\x7e\x73\x74\x16\x07\xab\x94\x6c\xd2\x3c\xa8\xe0\xaa\xf3\x71\x0e\x54\xdf\xe4\x8e\xa5\xbf\x7d\xed\x54\xc0\x54\x9a\x6d\xfd\x5b\xf4\x2c\x9e\x03\xa8\x95\x6f\x99\xb0\x7d\x22\x31\x2b\xd1\xe1\x32\xed\x00\xc5\x86\x83\xcb\x33\xe1\x8a\x0c\x3b\x97\x7f\x25\x6a\x45\x1c\xae\x7c\x8f\x68\xac\x22\x19\x33\xe0\x7b\x82\xa2\x9e\x5d\x05\x57\xda\xe5\x76\x27\xe0\x01\x07\x94\x5c\x56\x97\xed\x02\x6f\x14\xd4\x1f\x77\x64\x48\xd6\x80\xa0\x4e\xa6\xa0\xf2\x4c\x38\x21\x42\x5c\xae\xf8\x71\xfc\x8b\xb4\xe3\xba\x66\x44\x93\x36\xcb\x7e\x87\xab\xd1\x40\xf3\x9b\x3a\xac\xef\x44\xbd\x55\x5e\x07\xf6\x75\x76\x20\xd2\x8d\xe2\xc6\x66\x47\x33\x69\xe8\xf4\x97\x73\x70\x5c\xfe\x8c\xd9\xf2\xc8\xae\x0c\xc1\x21\x8e\xee\xc4\x89\x0a\xc5\x06\x63\x10\xe3\xe8\x4e\x1c\x24\x5d\x60\xbc\x78\x95\x2d\x6e\x81\xd8\x04\xaf\x4d\xb8\xaa\x65\xb4\x9b\xab\x7c\x46\x8e\x01\x53\xcc\xcf\x6a\x50\x4a\x56\xfa\x06\xcf\x74\xcc\xd4\xbb\x94\x2b\xdf\xe5\xb8\x9b\x84\xde\x3e\x0c\xbe\x97\x13\x9c\xbb\x70\xdf\xe6\x19\xab\xac\x73\xb7\xd3\x02\x1f\xff\x34\x3e\x9f\xf8\xe1\xeb\x18\x24\x25\xff\xc9\x10\x00\xd7\x63\xb2\x3e\x3c\xc6\xd2\xc9\x70\xfb\x22\xa1\xc6\x59\x3b\xc9\x4c\xfb\xd1\x1c\xeb\xb8\xb7\x5e\x68\xd0\x07\xfe\xb7\x87\x20\xba\xe4\xa1\x2e\x69\xf9\x0e\x68\x9a\xc0\xb7\x6c\x77\x06\x3c\x79\xab\x94\x98\x17\x6c\xdc\x07\x6c\xd4\xdd\x53\xd0\x7e\xd1\x3a\xb8\xcc\x51\x5a\xa2\xde\xa6\x44\x3d\xde\x43\x8f\x92\x9e\x92\x4c\x7b\xaa\x8d\x32\x68\xba\x7b\xb5\x77\x51\x3c\x3c\x6d\x7c\xee\x45\xbd\x3c\x09\xc7\x94\x30\x81\xc2\xb5\xa7\x8e\xa6\x01\x4f\xcd\xa1\xd6\x1e\x39\xe6\x9e\xd9\x04\xa3\xd8\x90\x11\x7d\x20\xa8\x38\xe9\x30\x12\x3b\x8b\x2b\x53\xe7\x76\x48\xe9\xe6\x1a\x40\x49\xfa\xbe\x93\x07\x73\xa9\xbf\xdc\x9c\x9e\xb4\xa7\x7d\x7e\xf4\x71\x0c\x46\x69\xe3\xf6\x0e\x67\x01\xd4\x6f\xd3\xec\xb8\xdf\xcb\x50\x39\x2b\xf0\x3d\xca\xee\x1f\x6b\xf8\x52\xb0\x05\x66\x79\xf9\xa8\x6b\x12\x23\x44\xa9\xcc\x92\xe6\x82\x63\xae\x9c\x1c\xf8\x14\x96\x49\x57\xb0\x9d\xce\xb0\xa3\x85\x94\x43\x6f\xa9\x4a\xbd\x21\xf2\xab\xb8\xcb\x18\x7b\xe1\xa1\x95\x12\xf0\x88\xb1\x74\xb6\x14\x8b\xb6\x54\xa4\x27\xcd\xb2\xba\x54\x05\x66\xe8\xcc\x7a\xfd\x03\xfd\xd8\x87\x6a\xd4\x08\x55\x87\x8e\x61\x41\x07\x3d\x36\xa1\xc0\x48\x2c\x43\x66\x08\x92\x97\x81\x30\xf9\x3e\xe3\xd7\xa3\x11\xa7\x25\xdb\xad\x5c\x71\x73\xa7\xd6\x26\x55\x1a\x73\x3b\x0e\x86\x16\xd7\xbc\x01\xe8\x0e\x39\x4d\xa1\x15\x88\x38\xf3\x44\x1d\xea\xff\xed\x45\x91\x45\x95\x8a\x47\xbc\x47\xcb\xf4\x33\xa6\x85\x03\xd2\x92\x52\x2b\x28\xa4\xac\xf8\x49\xf5\x1c\xdf\x45\x42\xfc\xaa\x2a\x48\xc9\xb1\x30\x34\xc5\x6e\xd0\xb1\xf6\x8e\x35\x4d\xf4\x93\x04\xd5\xb8\x30\x18\x98\x37\x94\xa5\x3a\x67\xe0\x8e\xc5\x9b\xa3\xe2\x49\x12\x4a\xe4\x0d\xbb\xd3\xf4\xf3\xdf\x09\x8b\xa2\x8b\xf4\xf2\x56\xef\x37\xc7\x94\x75\x87\xdc\x8f\x64\x8e\x07\x27\x41\x5c\xfb\x2c\xb2\xe8\x6e\x8e\xbf\xd4\xf7\x61\xd6\xbb\x99\x16\x2f\x19\xb1\x36\x67\xe1\x82\x47\x1b\x7f\x3a\xa8\xea\x39\x80\x24\x49\x92\x4d\x74\x71\x33\x11\x9d\xda\xbc\xfe\x45\xd7\x7f\x82\x29\x5a\x42\x84\x73\xf3\x27\x2a\xbd\x77\x7e\x8b\x8e\x3b\x3f\x1a\xdd\x59\x90\x27\x37\x57\x47\xfc\x0f\x10\x2f\x42\x29\x5f\xec\x70\xf1\x54\x86\xa1\x16\xa1\x2d\x9e\x63\x2f\xc2\x95\xb3\xe5\x58\x54\xaf\x6b\x9f\x2f\x10\x5f\xad\xc1\x00\x3b\x5e\x5e\xf6\x2f\xc7\x50\x89\x85\xdb\x11\x17\x7c\xc8\x04\xaf\xe5\xd2\xf0\xa2\xdd\xce\x58\x36\xe1\x06\xc2\x43\xa9\x9d\x39\xd2\x3f\xfc\x93\xf1\xb9\xc9\x22\x40\x6a\xb1\x81\xf8\x64\x06\x75\xb1\xdb\x45\x69\x0a\x00\xfd\x29\x36\xb6\xdb\x50\xd8\x98\xec\x2b\xe5\xdf\xed\xb8\xec\x0a\xc1\xf4\x88\x4a\xb7\x0b\x69\x34\x9c\xd6\xae\x2a\xcd\x7a\xa1\xd2\xed\xa8\x17\x0a\xa0\xa8\xff\x7a\x1c\xc7\x5f\x79\xa1\xed\x53\x01\x01\xc7\xee\x76\xfa\x88\xaf\x49\x0d\xb1\x72\x45\x24\x8f\x31\xce\x79\xf9\x44\x9c\x17\x26\x9f\x16\x80\x2b\x0f\x73\x6d\xbe\xcd\xef\xd5\x23\x0c\x09\x0d\x6a\x8b\xd8\x7e\xb0\xc7\x44\x9b\x0e\xb4\x67\x3c\x46\x26\xd5\x7f\x18\x0f\x2e\x9d\x25\x5a\x59\x77\xea\x88\x0d\x86\xd7\x42\x78\x35\x72\x4d\x67\x4e\x85\xe6\x50\x47\x5a\x20\x52\x45\x5a\x2e\x62\x32\x38\xe4\x2e\x72\xac\x09\x6a\xb3\xac\x45\x82\xac\x71\x06\x38\x3a\x88\x58\x3c\x75\x1c\xd4\xb8\xdc\xe6\xbb\x9f\x30\x52\x53\x5c\xb2\x55\xde\x7e\xf5\x82\x08\x9f\x79\xed\x35\xba\xdd\x12\x95\x48\x11\x1c\x62\x91\x82\xaf\x7e\x71\x0a\x97\x21\x03\xdb\x2d\x8b\xd0\x6a\xcd\x1e\x43\x2d\x57\x84\x04\xc4\x2c\x62\xe8\x0b\x0b\x65\xf2\x40\xf1\xfe\x15\x88\xd9\x2d\x3e\x0c\x78\x9f\x41\x1c\xf0\xb2\x40\xdc\x15\xe8\xbd\x62\xbe\xf7\xd9\x1d\x19\xc7\xf3\x9e\x83\x66\xe4\xfb\xc2\x0a\x16\x18\x83\xbf\x78\xa7\xf1\x39\x09\x52\x7c\x73\xd8\x2a\xa9\x25\x47\xbf\xc8\x28\x80\x00\x64\x7c\xe4\xae\xb4\xe8\x0b\x93\x59\xde\x32\x37\x41\xf1\x54\x7c\x67\x9b\x44\x76\x39\xde\xe9\x3e\x95\x6e\x5e\xae\x73\xcc\xc2\xa0\x17\x80\x68\x4e\x8b\xb1\x7b\x3b\x2d\x2d\xd8\x26\xa0\x9e\x00\x87\x2f\xf3\x51\x79\x48\xb9\xcc\xc9\x62\xe4\x01\x6d\x34\xf4\x7b\x16\xaa\x2c\x2c\x48\x3f\x8d\xd8\xc3\xf3\x90\xf4\x93\x64\x11\x49\x93\x95\x46\x32\xce\xe0\x15\xbd\x3b\xf4\x75\x6a\xd9\xe8\x7c\xd5\xda\x01\xb5\x7c\x59\x43\xd2\xa4\xd7\xd9\xd0\xc5\xcd\x64\xd4\x5c\x09\xfc\xd2\x19\x2b\x93\x83\x7e\x79\xaf\x7c\xf1\x77\x52\xaa\xe1\xdf\x55\x4e\xe7\x1e\x4b\x00\x69\x1a\x02\x3c\x4f\x52\x6a\xc7\xd3\x3a\x64\xa5\x31\x0c\x1b\x8f\xbd\xf9\x6f\xe6\x78\x01\x9f\x8c\x09\x59\x99\x16\x2d\x9b\x7d\x60\x5c\x5a\xb9\x14\x28\x09\x8f\x40\x55\xfd\xd3\x83\xa6\xd6\x99\x7a\xcd\x21\x0d\x77\x7c\xa1\x60\xb6\x5b\x7d\xfb\xc0\x59\x91\x89\xdf\xf2\xeb\xa0\xbe\x5e\xe0\x8b\xfa\x08\x76\xea\xb6\xaa\xa5\x20\x90\x6c\x4a\xe2\xc2\x4e\xaa\xda\x52\xdb\x46\x21\x49\xa4\x73\xb0\xd7\x34\x87\x01\x30\x89\x49\xfe\x08\xd3\x9f\xcc\x6a\xc2\x64\x14\x94\x2b\x8f\x18\x4b\xba\xc9\x9f\x71\xa8\x44\x98\xb8\x16\x55\x86\x52\x28\x7c\xd6\x84\xc7\xb9\x84\x2d\x5c\x68\xf1\xf5\xd0\x2d\x96\x85\x71\xe8\xd8\xe7\x88\x65\x9c\xf3\x81\x43\xa2\x71\x5d\xdc\x70\x70\x19\xd3\xfe\x2d\x8c\x49\x87\x75\x23\xde\x57\x25\x1b\xe2\x75\x52\x8b\xd7\xc4\x3c\xcc\xe0\x69\x16\xc4\xba\x5a\x22\x80\x38\xd4\xff\x6f\x21\x00\xdd\xb0\x9d\x18\x70\xa0\xc2\x19\x3c\xa6\xe0\xed\xf6\xe5\x1b\x79\x71\x33\x79\x6e\x1f\x39\x81\xfb\x9a\x7d\x14\x7a\xa4\x76\xaf\x6d\x6d\x23\x2f\xb6\xbd\x6f\xf9\x36\x7a\x66\xe3\x5c\xb0\xa8\x84\x3a\xac\x87\x75\x98\xab\xb3\x72\xf5\x03\xc3\xee\x82\xb2\xa9\xb2\xc1\xf5\x87\x4a\x0e\x91\x77\x10\x3b\xa3\x8c\x9a\xaf\x80\x85\xaf\xcb\x5e\xd6\x4e\x5e\x06\xf4\xf2\x86\x44\xfe\x95\x3c\x89\x88\x7d\xf5\x0b\xf2\x85\xd0\x3f\x2a\xcf\x2b\x64\x44\x0a\x38\xe2\x7b\xf1\x57\xa2\xfe\x8f\x18\xbd\x16\x24\x39\xf4\x3d\x5e\x26\x96\x9d\xc9\xc7\x46\xcc\xdf\x89\xf9\xcb\xf9\xf8\x2b\xd3\xab\xad\x3c\xb8\xdf\x66\x4a\x4f\x95\x31\xdb\x4a\x44\x30\x09\x92\x90\xd9\x4f\x55\xd1\xd5\xe3\x2d\x9a\xf6\x1d\x8b\xde\x2d\x9a\x72\x0e\x74\x8b\xa6\x8d\xd2\x5a\xe0\x14\xc3\x73\xd4\xef\x17\x6b\x07\x90\x24\x4c\x65\xd1\x16\xd7\xc0\x01\x88\x56\x29\x9b\x2d\xc3\xd4\xbc\x25\x40\x38\x86\x5b\xef\xee\x38\xea\x00\x89\x7e\xa5\x98\x84\x86\x4d\xed\xb0\x40\x79\x32\xe4\x37\x4d\x06\x5d\xe6\x4e\x9f\x75\x94\xd5\x36\x33\x50\x0b\x0b\x46\x01\xed\x90\xe7\x9b\xd6\x12\x92\x78\xad\xc3\x62\xee\x82\x34\xb9\xdc\xfb\xcb\xbe\xe9\x34\x50\x89\x35\x9b\x26\x02\xa1\x2d\xfb\x6d\xce\x46\x3d\x97\x04\x41\x99\xaa\x05\x8d\xef\xf8\x80\x80\xdf\xfc\x16\x21\x69\xbb\x7f\xe9\x8b\x64\x00\xb1\x27\x73\xd9\x60\xc0\x44\xc2\x1f\xb2\xdd\xf6\xdf\xaa\x0b\x2e\x37\xab\xb8\x88\x6c\x36\xac\x43\x3d\x34\x88\x3d\x9e\x5f\xe6\xc6\xba\x23\xbf\xd9\x1f\x91\xe0\xec\xef\xf1\xf8\xdd\xcc\x00\x9e\x1f\x7d\x1c\x77\x41\xb1\xba\x39\xc5\x90\xbb\x06\x61\x2d\x95\xf9\x46\x68\x11\x5d\x4d\x67\x35\x98\xbe\xf8\xeb\x02\xc5\xaf\xc9\x04\x94\xb7\x5f\xf5\x53\x8e\x4c\xab\x97\xb9\x47\xad\x5e\xfb\x26\x5e\xbb\xdd\x0a\xae\xaa\x10\xc0\x3b\x4f\x32\x9a\x35\x5d\x2b\x8b\x99\xf4\x5a\x32\xbf\xeb\x84\x34\x65\x87\xd7\x92\x02\xb5\xbc\x96\xdc\x7c\xfb\x73\xc3\xdd\xac\x9b\x03\xed\x9a\x63\x54\x17\xe5\x24\xa1\x18\x4b\x1c\x04\x1d\x8e\x38\x7a\x60\x2f\x77\xc4\x59\x7e\xdb\xf8\x76\x7f\x89\xd2\x4c\x3a\xe2\x2c\xbf\x7d\xef\x69\x7c\x5f\x18\x16\x5d\x3f\x9d\x0a\xc0\xdc\x3f\x2d\xbe\xeb\xf0\xc9\x0c\xbc\xdb\x05\xab\x12\x09\xcf\x77\x65\x65\x99\x9c\x4e\xce\xc6\x71\x10\x35\x06\x0a\xeb\x1c\x28\xce\x08\x85\x07\x8f\xed\xa7\x43\x5a\x7e\x3a\xc4\xf1\xd3\x21\x0d\x3f\x1d\xe2\xf5\xd3\x21\x0d\x3f\x1d\xe2\xf1\xd3\x21\x5e\x3f\x1d\xd2\xe9\xa7\x43\x3a\xfd\x74\x88\xf3\xa6\x1f\xb6\x3c\x61\x32\xeb\xa8\xc9\x1c\x94\xea\xe6\xaf\x58\x08\x53\x70\x09\xe4\x1b\x72\x15\x0d\x33\xa8\xae\x64\xe7\x49\xd6\xf6\x40\x99\x3f\x6b\xc7\x6c\x98\xe6\xf4\xdb\x74\x0b\xeb\xb2\x93\xef\xf8\xef\x61\xd2\xd4\x3b\x28\x4d\x9a\xf3\x3f\xcc\xa4\x39\xff\x03\x4c\x9a\xb3\x48\x60\xa8\xcf\x94\xf9\xcc\x77\xda\xfb\x1f\xb6\x17\xb6\x69\x07\x5d\xd6\x76\xd0\xa5\xb6\x83\xce\xed\x4f\xba\x16\x69\x87\xb1\x42\x9d\xce\x40\xa4\x79\xdc\x6d\x3f\x54\xa0\x87\x9e\xb2\xe7\x6c\x88\x0a\x4c\x8e\xf7\x77\x96\x1a\xcb\xaf\x90\x1a\xdb\x2f\x47\xfc\x56\xf9\x46\x53\x5f\xbf\x7c\x63\x65\x66\x55\x32\x8e\xbc\x2d\xda\x25\xe3\x64\xdd\x32\x4e\xcd\x93\xfe\x9e\x32\x4e\xf6\xf7\x78\xe0\xf7\xf7\x96\x71\xf4\x52\xbd\x4c\xc6\xd9\xbc\x5c\xc6\x21\xaf\x97\x71\xb2\x2a\x9c\xb7\x84\x9c\xbf\xfb\xe3\x28\x1e\x1d\x52\x3d\x30\x58\xae\x1f\xb9\x98\xa3\xc5\x1a\x6c\x5e\x87\x38\x18\x42\x89\x20\xda\x9f\x58\x46\x0a\x8b\x77\x7f\x69\xfd\x86\x84\xd2\x91\x0d\xac\x71\xc1\x56\xd0\x9e\x67\x80\x53\xf5\xf8\xed\xd1\x64\x1c\x07\xc2\xbc\x90\x32\x61\x19\xb6\x46\x24\x03\x63\x62\x35\xc8\x46\xa5\xf3\x5a\x73\x1c\xe4\x34\xcd\x1c\x08\x3b\xa5\x5c\x9e\x3c\x9d\x5c\x5d\x5c\x8a\xfc\x04\xa7\x93\xf1\x47\xeb\xbd\x10\xcc\xd0\x4a\x3e\x3c\x22\x6a\xe5\x63\x1f\x8d\xb7\x3e\xe4\xf3\xa0\x6a\x98\x48\x3a\x59\xcb\xe7\xa5\x2f\x7f\xd1\xe9\xde\xca\xf5\xa3\x79\xae\x71\xfa\xc6\x7c\x12\xa9\x6f\xe0\xf9\xd1\x4f\x77\x67\xa7\xd7\x93\xbb\xef\xaf\x2e\x6e\x2e\x65\x76\x36\xd8\x8b\x72\x5c\xb2\xfd\x45\x41\x37\x6b\x0d\x72\xfe\xe3\xb5\xac\xdd\xcf\x31\xf9\x24\x4b\xf5\x5b\x22\xbc\x54\x0e\x58\x34\xa5\x8b\xeb\x46\x1a\xd3\xb1\x9e\x1f\xb1\xe6\xd8\x7a\x99\xa4\xb1\x06\x2a\xd9\x9d\x05\xa0\x42\x38\x84\x40\x76\xf1\xdd\x77\xd7\xe3\x49\x1c\xc8\xbd\x0f\xe0\xe5\x85\xbc\x9d\x8d\x83\x35\x95\xda\x70\x67\xa6\xb9\x96\x21\xd1\xcd\xb9\x60\x92\xca\xc9\x65\xd4\xfc\x3f\xf8\x70\x71\xf2\x8b\x32\xdd\xc9\xc0\x8f\x43\x19\xba\x1a\xbf\xf4\xd1\x62\x6d\xfb\x77\x53\x89\x4b\xe4\x54\x4c\xd5\xac\x3d\x17\xd8\xf7\xba\xe1\xea\x75\x7f\x06\xd0\x5d\x6d\x9d\xac\x4e\x65\x45\xbf\xd5\xa9\xf1\xe4\x27\x56\x81\x32\xb4\xc9\x78\xfc\x56\x1e\x20\x19\x44\x9d\x0c\x4d\xf0\xbc\xb3\x52\xe2\x86\x25\x55\xe1\x64\xbe\x04\x4d\x38\xba\x5b\x17\x74\x86\xca\x52\xe6\x2b\x13\x6d\x14\x68\x5e\xa0\x72\x59\xbb\x3c\x2a\x08\xa0\xb2\xe5\x11\x5f\xb6\x3c\xf5\x51\x67\x0a\x79\xcf\xe8\xcc\x4d\xbb\x53\x1a\xc9\xad\x3c\x9c\x45\x06\x8f\x66\x91\x44\x31\xce\x4f\x05\xd1\xd1\x4e\x67\x7a\x9d\x25\x95\x39\x24\xb1\xa7\x14\x16\x09\x4e\x92\xa4\x6e\xae\x7e\x7e\xf9\x5a\x27\xde\x09\x41\x3c\x1c\xbd\x74\x43\x9c\x85\x6f\xb4\x25\x4b\xc5\x53\x0e\xed\x17\x87\x35\xd2\x01\x2e\xae\x58\x19\x3e\x4c\xac\x15\xdd\x99\x55\x1a\xcf\x43\xaa\x82\xac\xa8\xca\x28\xad\x9f\x17\x26\x9d\x91\xdf\xe2\x8d\x18\x11\xfe\xb7\xdd\xa6\x91\x7c\x68\x5c\x99\x6a\x6f\xc5\xa3\x72\x78\x1a\x82\x88\xd1\xf5\x5e\x01\xa9\x79\x4c\x41\x38\xab\x9a\x77\xaf\x7d\xe2\x50\x05\xa2\x92\x16\xcc\x8e\xf9\xb4\xee\x00\x6f\x87\xd3\x7d\x74\x3b\x9c\x56\x9e\xbb\x5a\xe9\x2a\xa6\x96\x59\xbe\x99\x8d\xc4\x6c\x98\x59\x6b\x5d\x7a\x30\x55\xd9\x48\x5e\x9f\x04\xac\x66\x0b\xa0\xf3\x68\xcc\xe7\x61\x10\x35\x60\x5d\xf2\xd3\x3a\x6e\xe3\x76\x45\x3b\x53\x98\x21\x2e\x56\x99\x46\x2b\xdb\x6f\x59\x21\x56\xdb\x43\x79\xf7\x59\xd7\x19\xbf\x3a\x6c\xeb\x5c\xdc\x33\xf7\x87\x5e\xc3\xba\xb8\x18\xd1\x69\x89\x54\x3a\x14\x64\x25\x2a\x92\x92\x35\xce\x02\x30\x92\x0f\xf6\xd5\xae\xb3\xf2\x4e\xac\x05\x28\xde\xee\xd3\xe5\x49\xf0\xa7\x60\xaf\xd0\xa8\xe4\x37\x78\x53\x9d\x36\xcc\x3e\x85\x5d\x2a\x4b\x63\xed\x93\x44\x51\x08\x1f\xf1\x58\xa7\x0b\xf4\xcb\x85\xe5\x5c\xd9\xa8\x37\xb9\xb6\xdc\xde\xd5\xd2\xbe\x68\x00\x4e\x92\x8b\xed\xf6\x63\xca\x96\xd1\x2a\xfd\x12\x36\xa2\xd0\x2d\x20\xd8\x99\x09\xc3\x86\x32\x91\xc4\x72\xf8\xaf\x19\x52\xbd\x26\x76\x0a\x07\xd9\x82\x77\x19\xba\x02\x85\x25\x81\x10\x03\x51\x54\xbf\x2b\xe3\x87\x4b\x3e\x5d\xb6\x27\x91\x1d\xa2\x4e\xea\x48\x7c\x4f\x78\xec\xa1\x7d\x03\x6f\x2f\x81\xfd\x16\xb3\xbd\x5e\xfd\x24\xd1\xb9\xdf\x2c\x8e\xf5\x3e\x71\x2f\x26\xf5\x31\xbb\x75\x7e\x99\xac\xec\xd3\x51\xfb\xe4\xf5\x93\x04\x6b\xb7\x2f\x2d\x87\x86\x56\x70\x47\xfb\x8b\xc1\x80\xbd\x73\xce\xf9\xed\x70\xaa\x5b\xa8\x4b\xde\x0f\x81\xb3\x85\xed\xd3\x6e\x85\x81\x88\xeb\xc5\x10\x8c\xf4\x0d\x4e\x99\x38\xcd\x99\xa7\x2c\xf6\xf7\x47\xc0\x3b\x05\x77\xf6\x25\x1f\xcf\x7b\xb7\x0d\x51\xe8\xd5\x0d\x1b\x60\x7b\x07\xd3\xed\xb6\x39\x43\x5e\x0a\x5a\xcb\xd4\xec\x55\xe5\x3e\xd0\xf5\x9e\x4b\x18\x67\x15\x8c\xfc\xa6\x66\x6f\x85\x16\x19\xb2\xaa\x3d\x81\x60\x00\x46\x24\x21\x2e\x2f\xad\x99\x10\xda\xd3\xb9\x99\x15\x55\x92\x9a\xec\x14\xbe\xd9\xe3\x55\xcb\x02\xcd\x4d\xd9\x9b\xaa\x7e\x32\x53\x1b\x07\x60\x00\xc0\x08\xd7\xd7\xfd\xb9\x2b\xc0\x81\xc3\x10\x1b\x8f\x96\x5a\xb8\x53\x39\x8f\x2d\x69\x4f\xe5\xea\xaf\xed\x5b\x79\x24\x55\x01\x00\xb1\xa7\x10\xc4\xa1\xaf\x18\x6a\xef\xd7\x32\xd4\xa2\xa9\xd6\x1c\x80\x08\x79\x0e\x5d\x89\xb5\x21\x9a\x76\x74\xff\xa2\x26\x55\x03\xc6\x81\xd4\xea\xc8\xd7\x6c\x27\xbf\xd5\x3e\xaf\x69\xa4\xd5\x3c\x4f\xc6\x41\x99\xf4\x86\xef\x7e\xe3\xd5\x7e\x57\x82\xd2\xa2\xc9\x52\xf7\xea\xd8\x77\xcc\x58\x2a\x48\x7e\x9b\x75\x07\xb7\xad\x3b\xb6\xb4\xe0\x7b\x79\x47\xdd\x5f\xd5\x71\x6d\xc4\xff\xea\x8e\xdb\x96\x88\x53\x7b\x45\x7a\x02\xfc\x4a\xeb\x0d\xb6\xad\x37\xe4\x0f\xb7\xde\x60\x61\xe4\x20\x4e\x1e\x02\x2b\x89\x5f\x1a\x39\xba\x3a\xf4\x79\x20\x34\x9e\xf4\x59\x46\x5a\xbf\x56\xf6\x3f\x45\x00\x09\x27\x80\xf5\x5e\xdd\x92\x69\x77\xe8\x3d\x86\xfa\xc1\x5a\x19\x8c\xf0\x87\x86\xde\x93\xee\xd0\xfb\x95\xc7\xd2\x19\xcd\xb9\xfc\x74\x0f\x49\xf3\x49\x01\x96\xde\xfb\x1e\x14\x10\xc5\xee\x73\x02\xa6\xc8\x7e\x4c\x40\x14\x76\xa6\xda\x67\xe9\xbd\x6d\x15\xc1\x96\x55\xe4\x25\x76\x0f\xe8\x7b\xbe\xb5\xf3\xee\x86\xd6\xad\x3b\x66\x88\x17\x18\x42\x5a\xc6\x13\x59\x70\x77\x73\x16\x07\xef\x7b\x39\xee\xbd\xef\x99\xaa\x1d\xe9\xf9\xf9\x62\x4c\x61\xcf\x2d\x5c\xe3\x3c\x6f\x97\xf2\xde\x45\x22\xff\x67\x6d\x20\x35\x88\x1a\x94\x7a\x35\xf6\x7d\xaf\xf9\xd2\xab\xb1\x16\xa5\x5e\x63\x08\xab\x99\xa2\xb1\x7f\x54\x2a\xa6\xad\xad\x72\xa7\xcf\x84\x12\xf6\x1b\x29\xce\x7e\x73\xc2\xdc\x5d\x39\xe8\xb0\xa6\xb8\x9e\x64\xa0\x16\x90\xf5\x22\x90\xd4\x3b\x60\x0a\xf3\x76\x96\x47\xcd\x56\x69\x93\x2d\xdd\x0e\xa7\x70\xb9\x3b\x13\x89\xf5\x72\x20\x9e\x87\xb9\xec\x67\x96\x04\x37\x67\x41\x92\x24\xb9\x98\xa1\xb0\x18\xd1\xa8\xc6\x21\xfd\xf7\x28\x6d\x50\x9d\x5c\xbf\x61\x00\x00\x4c\x93\xf4\x36\xad\x05\x47\x65\x0c\xd1\xd1\x2e\x44\x3e\xa5\xb5\xf3\xd9\x55\x00\x33\x0b\xde\x97\x6b\x3f\xad\xa4\xca\xae\xc2\x03\x35\xcb\xdc\x78\x72\x3e\xea\xba\x0c\xc0\x7e\xe6\x8d\x21\x19\x0c\xfa\x9b\x8e\x14\xe8\x4b\xf1\x08\x11\x0a\x97\xd2\x90\xe0\x15\xe2\xb4\x3a\x9d\xeb\x4b\xc3\x36\x6f\xb4\xe7\x7e\x32\x6e\x67\x10\xb6\xa7\x5e\x36\xa6\xde\x82\x4e\x2b\x15\x0d\x68\xa5\x74\xf7\xe7\x2a\x2d\x41\x35\x52\x5e\xbf\xf5\xa0\x0b\x58\x58\x98\x0c\xe7\x20\x9e\xcb\x1c\xe2\xe9\x57\x98\x0f\x38\xa1\xf0\x19\x03\xc4\xa3\x5d\x1e\x61\x16\x12\x58\x28\x63\x0c\xcc\xa5\xc9\x6b\x99\x84\xa9\x46\x3b\x52\xa3\x5d\xfd\x96\x93\x85\x80\x20\x96\x69\xaf\xb4\x88\x45\x8d\x30\xc5\x31\x7e\x96\x88\xac\x99\x9d\x71\x33\xe2\x25\xda\xa5\x73\xd0\xa4\x17\xd0\xc6\xc3\x9e\xf2\xe8\x8e\x99\x06\x8e\xe9\x6a\x9d\x23\xbe\xe3\x70\x09\x67\xb0\x00\xd5\x68\x39\x18\xcc\x0e\x45\x73\xde\x60\x9b\xcd\xae\x60\x9b\x4d\x08\xa0\x1e\x8c\x2d\x8f\x61\x7d\x43\x99\xfa\x3a\x6f\x2c\x23\x4c\x85\xd0\x43\xc4\x53\x08\xcd\x76\xd4\xb2\x08\x84\xcc\x85\xb0\x5e\x6f\xb9\x59\x56\x2f\x3d\x16\x8f\x65\xe5\x7c\x70\x79\x47\xa3\x50\xb0\x07\xb1\x5b\xee\xe5\x68\x41\x65\x7e\x1f\xe2\x8b\xff\x95\x22\xa9\x78\x9b\xf7\x00\x54\xfa\x0d\xe5\x3a\xaf\x6b\xab\xf5\xe6\xd5\xab\x6e\xdd\x1b\x5d\x6c\xb5\x3e\x04\xb0\x38\x0c\xeb\xe4\xa9\xea\x99\x5f\xab\x27\x99\x51\x20\x6e\x39\x85\x69\x74\x70\x79\x00\x3f\x5a\xf6\xe2\xd9\x64\xda\x96\x01\x14\xa9\x5e\x26\xce\x83\xc8\xf5\x2a\x8b\x85\xd5\xbb\xde\xdc\x81\x96\xf2\x53\xaf\xc7\xf3\x2f\x1d\x57\xe9\x60\x90\x86\xa0\x82\x6c\x87\x10\xff\x82\x0c\x64\x46\x88\x87\x65\x82\x2d\xef\x30\x7e\xc6\xdd\x2c\x62\xe6\x21\x3a\x17\xca\x9f\x3b\x8c\xec\xc8\x1d\x46\x5e\x26\x9c\x13\x9d\x3b\x8c\xd4\xc2\x39\xfb\x0d\xc2\x39\x27\xe5\xdd\xb9\xbf\x48\x33\xf7\x17\x7d\xcd\xcb\x64\xed\x67\x4b\x1b\xaf\x90\x09\x29\x4f\xa7\xb4\xe2\xeb\x96\xb4\x3f\x31\x75\x8e\x64\x9d\xd6\xc5\xcf\x8a\xd6\xa2\x61\xe6\x19\x4d\xe5\xbc\x20\xf7\x7c\x6e\x2b\xb4\x23\xb7\xd5\x9b\xb2\xf7\xff\xa7\x9f\xd3\xeb\x59\x81\xd7\x4c\xe7\xb7\x2a\x7b\xb2\xc7\x48\xfd\xdf\x5b\x6d\x4a\xd6\xbb\x47\x3d\x4c\x66\xf9\x26\x43\x59\xef\x1e\xcd\x69\x81\x7a\xfe\x66\x22\x93\xfd\x4a\x4c\x43\x06\x96\x59\x51\x4d\x22\xa5\xa6\xfc\x15\x49\xbc\x64\xb7\xc3\xe9\xbb\x6f\x06\x03\x76\x7b\x30\x7d\xf7\xd7\xed\x56\xc4\xda\x0b\xcb\x92\x78\xec\xf3\xf6\x60\xca\xeb\xbe\x99\xbe\x3b\xd8\x6e\x79\xf9\xfb\xe4\xcf\xaf\x9f\x53\xca\x7a\x39\x4a\x4b\xa6\x27\xf5\xf9\x20\xfa\x6b\x74\xd0\xbb\xdf\xf0\xf2\xb2\xec\xb1\x65\x4a\x7a\x9f\x05\x9e\x05\xa0\x12\x29\xc5\x6f\x18\xce\x93\x12\xb2\xe8\x28\x47\x05\x4b\x52\xc8\xa2\x0f\xe2\x35\xca\x24\x87\x2c\x3a\x4e\x0b\xe1\xb8\x94\x2c\xf9\x0f\x9a\xe7\xe9\xba\x44\xc9\x0c\xb2\xe8\x44\x49\xc3\xc9\x06\xb2\x48\xe6\x5d\xcf\x20\x8b\x2e\xe5\xb5\x7c\x72\x07\x59\x74\xad\x15\xe2\x64\x01\x59\x34\x49\xef\x93\x15\xff\x5f\xfa\xaf\x25\x73\x8e\xdd\x4f\x15\xfc\x47\x28\x3d\x7c\xc1\xe8\x1f\xde\xbe\xfd\x53\xaf\xa4\x9b\x62\x86\x3e\xa6\xeb\x35\x26\x8b\x9b\xab\xb3\xe4\x5e\xcf\x39\x5a\x61\x12\xfd\x5a\x46\xab\x74\xfd\x7f\x02\x00\x00\xff\xff\x83\xb8\xb6\x8d\x84\xc5\x00\x00") - -func pagesAssetsJsBootstrap400Beta2MinJsBytes() ([]byte, error) { - return bindataRead( - _pagesAssetsJsBootstrap400Beta2MinJs, - "pages/assets/js/bootstrap-4.0.0-beta.2.min.js", - ) -} - -func pagesAssetsJsBootstrap400Beta2MinJs() (*asset, error) { - bytes, err := pagesAssetsJsBootstrap400Beta2MinJsBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "pages/assets/js/bootstrap-4.0.0-beta.2.min.js", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _pagesAssetsJsContainersJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\xeb\x72\x1b\xb9\xd1\xe8\xef\xa3\xa7\xe8\x75\x36\x3b\xe4\x27\x72\x48\x79\x2f\xa7\x96\x32\x5d\x25\xcb\xf6\x46\x5f\x7c\x2b\x49\x4e\x2a\x25\xab\x54\xd0\x0c\x48\xc2\x1e\x0e\x26\x00\x46\x14\x77\x57\xef\x7e\x0a\xb7\x01\x30\x17\x92\xd2\x6a\x37\x39\x95\xf8\x87\x45\xce\x34\x1a\x8d\x46\xa3\x6f\x68\x80\xa3\x11\x1c\xd3\x62\xcd\xc8\x7c\x21\xe0\xe9\xf8\xe0\x3b\xf8\x89\xd2\x79\x86\xe1\x24\x4f\x62\x38\xca\x32\x38\x95\xaf\x38\x9c\x62\x8e\xd9\x0d\x4e\xe3\xbd\xd1\x68\x6f\x34\x82\x37\x24\xc1\x39\xc7\x29\x94\x79\x8a\x19\x88\x05\x86\xa3\x02\x25\x0b\x6c\xdf\x0c\xe0\x6f\x98\x71\x42\x73\x78\x1a\x8f\xa1\x27\x01\x9e\x98\x57\x4f\xfa\x87\x12\xc5\x9a\x96\xb0\x44\x6b\xc8\xa9\x80\x92\x63\x10\x0b\xc2\x61\x46\x32\x0c\xf8\x36\xc1\x85\x00\x92\x43\x42\x97\x45\x46\x50\x9e\x60\x58\x11\xb1\x50\xfd\x18\x2c\x92\x12\xf8\x87\xc1\x41\xaf\x05\x22\x39\x20\x48\x68\xb1\x06\x3a\xf3\x01\x01\x09\x43\xb4\xfc\xb7\x10\xa2\x98\x8c\x46\xab\xd5\x2a\x46\x8a\xe0\x98\xb2\xf9\x28\xd3\xa0\x7c\xf4\xe6\xe4\xf8\xd5\xbb\xb3\x57\xc3\xa7\xf1\xd8\x34\xfa\x98\x67\x98\x73\x60\xf8\x9f\x25\x61\x38\x85\xeb\x35\xa0\xa2\xc8\x48\x82\xae\x33\x0c\x19\x5a\x01\x65\x80\xe6\x0c\xe3\x14\x04\x95\x44\xaf\x18\x11\x24\x9f\x0f\x80\xd3\x99\x58\x21\x86\x25\x9a\x94\x70\xc1\xc8\x75\x29\x02\x9e\x59\x12\x09\x0f\x00\x68\x0e\x28\x87\x27\x47\x67\x70\x72\xf6\x04\x5e\x1c\x9d\x9d\x9c\x0d\x24\x92\xbf\x9f\x9c\xff\xe5\xfd\xc7\x73\xf8\xfb\xd1\xe9\xe9\xd1\xbb\xf3\x93\x57\x67\xf0\xfe\x14\x8e\xdf\xbf\x7b\x79\x72\x7e\xf2\xfe\xdd\x19\xbc\x7f\x0d\x47\xef\xfe\x01\x7f\x3d\x79\xf7\x72\x00\x98\x88\x05\x66\x80\x6f\x0b\x26\x47\x40\x19\x10\xc9\x4d\x3d\x89\x70\x86\x71\x40\xc2\x8c\x6a\x92\x78\x81\x13\x32\x23\x09\x64\x28\x9f\x97\x68\x8e\x61\x4e\x6f\x30\xcb\x49\x3e\x87\x02\xb3\x25\xe1\x72\x56\x39\xa0\x3c\x95\x68\x32\xb2\x24\x02\x09\xf5\xa8\x31\xae\x78\x6f\x6f\x56\xe6\x89\x7c\x0b\x8b\x72\x89\x72\xf2\x33\xee\xe5\xe5\x72\x00\x9c\xfc\x8c\x07\x50\xe6\x44\xf0\x3e\xfc\xb2\x07\x70\x83\x98\xfa\x7a\xb8\x07\x8a\x94\x9e\xfc\x02\x53\x0d\x12\x17\xb4\xe8\xf5\x0f\xcd\x97\x0c\xe7\x73\xb1\x80\x6f\xbe\x81\xbc\x5c\xc2\xf3\xa9\x42\xa6\x5f\x86\x0d\x34\x66\x50\x60\x23\x03\xb6\x07\x70\xb7\x07\xc0\xb0\x28\x59\x0e\x17\x8a\x18\xd9\xe4\xf2\x70\xef\x6e\x4f\x0e\xe8\x35\xcd\x32\xba\x92\xa3\x95\x03\x39\x79\x75\x0c\x39\x5a\xca\xaf\x09\xcd\x6f\x70\x2e\xc7\xd2\x1c\xd4\xc9\xab\x63\x39\x2e\x37\x14\x86\x25\x2d\xe1\x98\x0f\xc6\x4f\xbf\x1b\xc0\x45\x74\x4e\x5e\x44\x03\x88\x7e\xd2\x7f\xde\xea\x3f\x7f\xd5\x7f\x5e\x44\x97\xfd\x43\x47\x1f\xc3\xe2\x62\x7c\x19\x0b\xfa\x9a\xdc\xe2\xb4\xf7\xb4\x0f\xfb\x10\x41\x04\xfb\xea\xcd\x81\x22\xba\x41\xf3\x5b\x2c\x18\x49\x5a\xc8\x6e\xd2\xad\x41\x77\x21\x7d\x3c\x56\xa4\x6b\xca\x35\xe1\x9a\x6e\x4d\xf6\x5a\x60\x7e\x7f\xd2\x25\xed\x2f\x19\x5a\x01\x02\x21\x97\x53\xec\x28\x4c\x19\x5a\x9d\xcb\x67\x3d\x35\x85\x1c\x33\x82\xf9\x39\x11\x19\xe6\x03\x10\xf2\xef\xf9\xba\x90\x9f\x53\x24\xd0\x00\x70\x86\x97\x38\x17\x27\xe9\x40\xce\xf6\x07\x34\x97\xaf\x38\x65\xe2\x24\x4f\xf1\xad\x1b\x9c\x84\x56\x68\x61\x0a\x39\x5e\xc1\x5c\xa9\xbb\xf8\x86\xf0\x12\x65\xe4\x67\x25\xc8\xf1\x4b\x0b\xd4\xeb\x57\xe2\x28\x1b\x13\x98\xc2\xf8\x10\x08\x3c\x0b\xe8\x31\x02\x79\x08\x64\x7f\xdf\x8a\x5c\xd5\x4f\x8c\xd2\xf4\x98\x66\xe5\x32\xef\x39\xaa\x2f\xc8\xe5\x20\x40\x71\x41\x34\xef\xa4\x68\x06\x4d\x4f\xe9\x8a\xf7\xe4\x13\xf5\x9a\xcc\xa0\xf7\x55\xaf\x1a\xab\x52\x36\x24\x4f\xe9\x2a\x4e\x16\x88\x09\x5e\x49\x7c\xf0\xf4\xa2\x6a\x70\x09\x53\xf5\x5a\x2d\x8a\xae\xd1\xeb\x91\xa7\x34\x29\x65\xa3\x78\x8e\xc5\x2b\xdd\xfe\xc5\xfa\x24\x75\x9d\xf7\x0d\xc1\x86\xb1\x09\xe7\xc7\x19\xe2\xfc\x1d\x5a\x62\x0e\x53\x43\x47\xb4\xc0\x28\xc5\xec\x94\xae\xa2\x09\x44\xd1\x40\x3f\x54\x73\x6d\x9e\xa9\xcf\x43\x46\x57\xf6\x25\x4d\xd3\xf3\xd6\xf7\xb2\xb7\x43\xd3\x1b\x2d\x84\xeb\x04\x65\x02\xb3\x1c\x49\x9d\x7b\x4a\x57\x67\x62\x9d\xe1\x09\x08\x56\x62\x8d\xb1\x40\x73\x3c\x81\x08\xe7\x12\x53\xe4\x9e\x9d\x91\x9f\xf1\xc4\x49\x8b\x41\x95\xd1\xd5\x5f\xc4\x32\xf3\x11\x48\x31\xd2\x53\x38\x71\x22\xe5\x5e\x1d\xf1\x04\xe7\x29\xc9\xe7\x13\x98\xa1\x8c\x9b\x46\x01\x3f\x26\xe1\x57\x3b\x92\xae\x59\x8a\xa5\xf0\xf7\x2a\x39\x18\xa8\xe1\xf6\x6b\x0b\x26\x23\x39\x06\xd5\xb4\xb6\x6a\xde\x90\x1c\x1f\xcb\xe7\xbd\x70\xd1\x34\x16\x8a\x54\x7b\x6e\x65\x2c\x49\x0e\x53\x38\xc9\x67\x24\x27\x62\x6d\x19\xbd\x44\xb7\x30\x85\xa1\xff\xb8\x6d\x39\x48\xdc\x6d\xcb\x40\xf9\x17\xf9\x0d\x66\x42\x69\xa6\x19\x61\x5c\x40\xa2\x78\x29\x8d\x25\x82\x97\x48\xe0\x58\x81\x4a\xd9\x96\x68\x2e\xc8\x25\x7c\x35\x85\xbc\xcc\x32\x8b\x45\xaf\x89\x0b\x72\x79\x31\xbe\x34\xeb\x56\xb6\xeb\xb9\xa7\x4a\x16\x8d\x34\xaa\x5e\x5f\x93\x3c\x95\x43\x1a\xc8\x11\xe8\x0e\x2a\xba\x3f\xc3\x14\x0e\x0e\xe1\xb3\xa1\xfb\x82\x5c\x56\xa4\x7f\x76\xa4\xeb\xf1\xdf\xa0\x0c\xa6\x55\xf7\x9f\x2f\x0f\xcd\x3b\x49\xad\x7c\xf7\x4c\x76\xe2\x9a\x80\x61\xe3\x0d\xca\x2c\xe4\x5d\xad\xc5\x73\x49\x51\xd0\x42\xb1\xb8\xd1\xe2\xce\xae\x2e\x69\xf7\x31\xa4\x34\x8f\x04\xac\x50\x2e\x24\xe3\xf8\x82\xae\x00\xe5\x6b\xd9\xac\xc4\x1c\x94\x8b\x22\x16\x28\x87\x31\x70\x0a\x09\x2a\x14\xbf\x25\x31\x0a\x02\x90\x9c\x00\x24\x62\x8d\xef\x48\x4f\x07\x47\x4b\x0c\x82\x2c\xf1\x40\x23\x3c\x18\xff\xd9\xfa\x4e\x73\x86\x8a\x05\x5c\xe3\x8c\xae\x6a\x98\xc8\x0c\x56\x18\x12\x94\xc7\x4e\x70\xfe\xae\x04\x19\xa6\x0a\x6c\x08\x3d\x39\xa4\xa1\xe6\xcc\x08\x0e\xc6\x56\x75\x39\xc8\x67\x30\xb6\x2c\xf0\x9b\x8f\x0f\xbd\x41\x1f\xa5\xa9\xea\x3a\xc5\x4a\xf6\xa4\x78\xd3\x19\x60\x94\x2c\xac\x04\xa1\x5c\x43\xe4\x38\xc1\x9c\x23\xb6\xd6\x72\xf8\x1b\x54\x7d\x9b\xda\x8e\x52\x24\xb0\xe4\x52\x54\xd3\xd9\x46\xec\x82\xf5\x70\xf0\x70\xf3\x10\xe5\xe5\xf2\x1a\xb3\x7a\x2f\xbb\x58\x06\xcd\xb0\x63\x86\x91\xc0\x8a\x2b\x52\x0f\x28\xd6\x84\xa3\xfd\xa3\x4c\x88\x53\x41\xf7\x31\x23\xa3\x11\x9c\xbf\x7f\xf9\xbe\x77\xb3\x44\x6c\x49\xb3\xfe\x04\xde\x50\xfa\x05\x48\x2e\xa8\x54\x74\xf9\xdc\x3a\x38\x37\x04\xaf\x0c\x7d\x72\x31\xcc\xb1\x00\x04\x7c\x49\xa9\xf4\x77\x35\x22\x94\x93\x65\x35\xe6\x86\xc5\x48\x4a\x76\xa3\x2c\xf1\x04\x22\xab\x3b\x8d\x65\x58\x60\x19\xf0\x4c\xe0\xdb\xf1\x58\x3f\xc8\xf0\x1c\xe7\xe9\x04\x7e\x29\x28\x57\x52\x38\x81\x28\xa7\x39\x8e\xee\x06\x46\xad\x24\x25\x3f\x47\x6c\x8e\xc5\x04\xa2\x04\x09\x3c\xa7\x6c\x6d\xb0\xdd\x1c\xdd\x12\x3e\xa9\x16\xbb\xf2\x00\x26\x4a\xf1\x0e\xac\x92\x21\x78\xa5\xe5\x7f\x12\x6a\x91\x89\x5b\x19\x83\x50\x31\xd4\xe8\x32\x2f\x3d\xf2\xae\xa9\x10\x74\x19\x39\x35\x72\xa8\x99\x72\xa2\xd7\xf6\x6a\x41\x33\xac\x84\xc9\x48\x1a\x2c\x10\x77\x0a\x41\x2d\xf3\x01\x08\xb6\x96\xcc\x4d\x70\x2e\x30\x03\xa2\xc2\x31\x09\x63\x4c\x4e\xb5\xa2\x61\x3a\xf5\x35\x9a\xe4\x73\xac\x86\x1d\xbb\xa1\xc5\x5a\xc7\x1d\xc4\x07\xf0\x3f\x12\xf8\x70\x13\xa8\x52\xa0\xe3\xf8\x47\x07\xaa\xa4\xe3\x61\xc6\xf2\x27\x2c\xf4\xd0\x4c\xd0\x60\xd4\x1b\x91\x83\x92\xda\x98\xe4\x90\xa3\x9c\x72\x9c\xd0\x3c\xe5\x9e\x25\x9d\x63\x71\x62\x80\x7a\x49\xc9\x18\xce\xc5\x00\x0a\x86\x6f\x08\x2d\xbd\x90\x25\x29\x99\x6f\x91\x0c\x64\xdf\x9a\x4f\xd9\xc0\x7f\x5f\x21\xb0\x6b\x76\xc9\x61\xf8\x1c\x72\x1e\x3b\xc7\x59\x22\x91\xcb\xe5\x9c\x2c\x71\xaf\x0f\x43\x85\xc4\x3d\xe8\xc3\xff\x28\x77\x7c\x3c\x1e\xdb\x41\x1e\x2f\x70\xf2\x85\xcb\x09\xf1\x02\x38\x9c\x02\x17\x48\x70\x20\x79\x92\x95\x29\xae\xbd\x63\x98\xd3\x92\x25\xbe\xcb\xbd\x40\xfc\xd4\x3c\xed\xa9\xa6\x83\x0a\x4a\x0f\xd8\x10\xa8\xde\xc5\xfa\x7f\xc3\xd6\xe7\x30\x96\xf1\x98\xf7\xe6\x62\x7c\x79\x61\x5b\x5f\x36\x09\x45\x59\x26\x23\x13\x19\xb5\x63\x26\x69\x84\x82\xd1\x1b\x92\xe2\x14\x32\xc2\xc5\x83\x88\x7e\x4d\xd9\x51\x96\xf5\x2a\xb4\x27\xf9\x8c\x36\xc6\x20\xa5\x36\x84\xb0\x63\x98\x4e\xa7\xce\x2a\x99\xa1\x2a\x87\xce\xaa\xdf\x36\xc7\xa7\x15\x55\xa0\xea\x95\xc2\xf5\x59\x1b\x36\x51\xa1\x40\x45\xa2\xf3\x0b\xea\x04\x58\x87\xa0\x7a\x23\xfd\xd3\x9a\x4b\xc8\xb1\x90\x02\x3e\x47\xe5\x1c\xf3\x58\x4a\x1c\x02\xc2\x55\x12\x85\x11\x8e\x53\xf9\x12\xe5\x80\x18\x43\x2a\x49\xa2\x3e\x70\x93\x59\x59\x51\x89\xc9\xac\x2b\x3e\x91\x5f\x10\x70\xc1\xa4\xd2\xcd\xd0\x35\xce\x94\x61\x41\xd2\x61\xc6\x32\xbc\xd4\xde\x80\xcd\x1a\xa8\x3e\x6b\x8e\xe8\x4f\x8a\x8e\x9e\xe7\x71\x6a\xca\xf4\x20\x0d\x95\x65\xce\x17\x64\x26\x7a\x17\xd1\x1b\xd9\x89\x0c\x26\xff\x26\x31\xab\x60\xb2\x61\xd7\x0a\x5a\x94\x99\xfc\xa2\x1c\x03\x39\x3e\x13\x37\x3a\x93\x0f\xd3\x76\x9b\xa4\x06\x7b\x4e\x9d\xc1\x37\xc4\xdc\xcb\x7a\x1a\x4b\xa2\xb2\x1d\xd6\x98\x58\x8b\x71\x60\x2d\x06\xc3\xe9\x6b\x46\x97\x13\xf8\xd1\x3d\x38\xa7\x1e\xc0\x1a\xcb\x30\x43\xc3\xfc\xdf\xef\xfd\x67\x12\xcc\xb6\x5a\x92\x9c\xb2\x73\x92\x7c\xe1\x13\x30\x40\x95\x55\x9b\xc0\x2f\x69\xc9\xcc\xc7\x1f\x65\x6c\x8e\x11\x57\x21\x48\x24\xe3\x02\xc4\xa2\x3b\x3f\x5c\x52\x4a\xb3\x32\xdc\x9d\x66\x5b\x4d\xd8\xae\x26\x5b\xdb\x81\x4a\xf9\x0e\x2c\x5f\x7c\xd5\xab\x5d\x47\x94\x2c\x64\xac\x42\xf2\x19\x0d\x15\xec\x5b\xfd\x46\xae\x83\x1e\xa3\x54\xbc\x24\x6c\x00\x09\xca\xb2\x6b\x94\x7c\xd1\x52\xf2\xb5\xa4\xe2\x7f\xcf\xde\xbf\xb3\x00\xb0\x0f\x11\x2a\xc8\xe8\xe6\x20\x1e\x8f\x0c\xea\x68\x00\x16\xad\xf6\x88\xe0\x97\x0a\x8d\x71\x91\xe0\x2e\xa0\xab\xe0\x2d\xe4\x7c\x60\x54\xfa\x91\x35\x72\xec\x6a\x95\x91\xdb\xee\xd4\x3d\x8d\xc7\xa3\x82\x47\xb0\x1f\x22\xe8\x9b\x29\x88\x53\x9a\xe3\xde\x0e\x44\x5b\xf8\x19\x22\x99\x83\xff\xfc\xcf\xc5\x2d\x1b\x80\xc0\xb7\xe2\x4c\x20\x51\xf2\x01\x60\xc6\x28\x0b\x70\x5c\x5c\x36\x86\xad\xec\xb7\xa5\xc7\x98\x87\x5a\xde\x0f\xa7\x0e\x22\x64\x8f\xec\x89\xef\xc8\x98\xd1\x08\x4e\xf1\x3f\x4b\xcc\x05\xfc\x30\xe6\x52\xd7\xb8\x6e\x17\x84\x0b\xca\xd6\x6a\xa5\xe5\x54\xfa\x1c\x85\xf4\x92\xab\xec\x93\x6e\x36\x05\xc9\xd7\x58\x2b\x20\x32\x5b\xf7\xaa\x80\xf2\x63\x21\x1d\x72\x58\x22\x92\x6b\x53\x63\x7a\xc2\xe9\x8b\xf5\xc7\x13\x58\x2d\x48\x86\xa1\x94\x40\x52\x75\x3d\xc9\xcb\xe5\x95\x02\x7b\x02\x0b\xcc\x4c\xb0\x19\x55\x4f\xa3\x09\xfc\x60\x16\x9c\x7e\xa8\xc9\x89\x26\x30\x96\x2b\x48\xab\x87\xaf\xe3\xd5\x02\xe7\x3d\xeb\x9e\x7d\x1d\x17\x94\x8b\x56\x89\x74\x36\xad\x31\xf7\x03\x3b\xb6\xfe\x60\x2b\xa2\x83\x11\x2f\xaf\x77\xc2\xd5\x21\x51\xae\xed\x29\xe6\xc5\x00\x02\x74\xf2\x91\x1f\x81\x56\x22\x13\x82\x5c\x8c\x2f\x5b\x1a\xba\x68\x1b\x3c\xe9\x7a\x69\x55\xa6\x0e\x1c\xa5\x50\x1d\x7f\xf8\x08\x25\x47\x0d\xb3\x70\x5c\x94\xe7\x54\xa0\xec\xa3\x7c\xe7\x5b\x87\xa5\x53\x07\x03\x2d\x9c\xce\x64\x1b\xcf\xa2\xc0\x49\xbc\x40\xfc\x2a\x29\x4a\xe9\x6f\x7c\xd5\xe2\xb2\x44\x49\x51\x46\xfd\xd0\x8e\x07\x99\x2a\xe5\x84\x4b\xf5\x7d\x11\x9d\xeb\xa8\x2e\x52\xf4\x44\x97\x87\xa1\x19\xb9\xb8\xec\x0c\xef\x1a\x1e\x50\x60\xf2\x9d\x63\xe8\x3b\x44\xc4\x24\x0f\x3c\xbf\x30\x78\x0d\x43\x38\xf0\x40\xac\x8b\xfa\x4e\x92\x5a\xf3\x46\x63\x19\x8e\x72\x81\x96\x85\xf6\x49\xdd\x77\x2d\xaf\x1a\x83\xb5\xe5\xd5\x50\xa0\x7a\x14\x17\x25\x5f\x84\x98\xfa\x6d\x10\x0a\x24\x29\xca\x58\x4f\xa4\x90\x7c\xb2\x1e\x69\xed\xb1\x0c\xf5\x1d\xcd\x06\x9b\x8a\xc7\x15\x26\x8b\xd7\x05\xb3\x41\xaa\x4a\x74\x25\xa9\xa2\x63\xca\x30\x8f\xb6\x09\x5a\x46\x51\xda\x94\xb3\x37\x14\xa5\xbb\x48\x58\x87\x58\x1c\xdd\x60\x86\xe6\xf8\x8f\x10\x8c\xc7\x9c\x34\x3b\x67\x92\x27\x57\x48\x8f\x41\xe5\x61\xc6\xe3\xc7\x9b\x96\xd3\x32\x57\x09\x55\x10\x0b\x86\x51\xba\x79\x86\x0a\xcc\x86\x09\x65\x78\x93\x4e\xf8\x80\x99\x9c\xea\x7f\x85\x56\x30\xc9\x26\xa4\x65\x40\x51\x6c\xd2\x4c\xac\x72\x2d\xeb\xe2\xd1\x14\x01\x13\x11\x78\xf4\xc6\xd2\xa0\x48\x24\x3c\x90\x02\x8d\x4a\xf3\x5f\x89\xb7\xda\x15\x21\xd5\x14\xfc\xa7\xab\xa0\x20\x51\x3b\xd6\x89\xda\x0e\xae\x06\xf9\xda\x10\x73\x65\xdd\x00\x6a\x5a\xac\xc0\x4c\x8a\xca\x95\xfa\x76\xf1\xf9\xb2\xa9\xd0\xea\x10\x7d\x18\x79\xe8\x1a\x5a\xee\xee\x8f\xd5\x75\x8a\x2a\xb8\x66\x18\x7d\x49\xe9\x2a\x6f\x2e\x25\xb5\x86\x5e\xd8\xf7\x9d\x8b\x29\x08\x44\x3b\xa2\xe3\xcd\x8b\x2b\x00\x7d\x98\xe9\xfd\xc8\x55\xca\x33\xfa\x2b\x66\x39\xbe\x8f\x0d\xae\x91\xb9\x7d\x21\xb4\x34\x68\x5b\x10\xad\x60\xff\x1e\x0b\x63\xa3\x6d\x2e\x39\x66\x4d\x49\x96\x4f\x5b\x2d\x73\xc7\x62\xa9\x21\xe5\x6b\x2e\xf0\xb2\x89\x56\x3f\xff\x83\x4c\xfe\xa9\x4e\x78\xe8\x20\xd6\x88\x90\x0a\xd3\xa5\x88\xcc\x18\x5d\x06\x49\x0d\xdf\x61\x35\x19\xa0\x92\x9b\xcc\xb1\xc4\x56\x20\xce\xb1\x6e\xfc\x5a\x6d\x42\xd9\x7c\x8a\x4a\x0b\xa6\xe4\x86\xa4\x25\xca\x34\xf2\x82\x12\xc9\xa2\x30\x0c\xf2\xf0\xab\x81\xbc\x44\x02\xf5\x5a\x7a\xd5\x3d\x74\x3b\x18\x3b\x88\xba\xdd\x6c\xae\x23\x6f\x13\x74\xdf\xaa\x34\x1a\x5c\x90\xcb\x38\x97\xf1\x67\x8b\x86\x35\x5b\x61\xad\x6d\xc2\x65\xd5\xd8\x1d\x33\x16\xa6\xb3\xa5\xb7\x61\xe6\x9b\x9c\x0d\xf0\x66\xa1\x99\x46\x2a\x6c\xcd\x31\x53\x89\x19\xe0\x05\x62\x1c\x9b\x99\xd6\x49\x2b\xbb\x40\x00\x09\x39\x79\xf8\x16\x7e\xc6\x8c\x3a\xe9\x50\x13\x08\x48\x38\x7c\x1a\x8a\xec\x1f\x0c\xe4\xdc\x5f\x63\x28\xa5\x34\x20\xae\xf7\x22\xcd\x86\x11\xa3\xab\xd8\xa3\xdb\x5f\xac\xc1\xba\xac\x46\xd7\x9c\xa1\x19\x65\xaf\x50\xb2\x70\x11\x99\x1f\x70\x85\x8b\x4f\x6d\x75\xfa\x21\x55\x08\x74\x41\xf6\x0f\x2e\xcd\x26\xe4\xeb\x5c\x2e\x50\xad\x58\x2a\xc0\x8e\x15\xd7\xc8\x18\xfa\x72\x32\x31\x7f\x07\xd5\x9a\x9d\xe8\x85\xa8\x9a\x6c\x74\xe4\xfc\xb1\x6e\x71\xe8\xfc\xb5\xd2\x70\xec\x1a\x3c\x73\x26\xe8\xab\x66\x56\xb7\x65\x81\x6d\x35\x37\x89\x5d\x9e\x5a\x4b\xef\xba\x72\x0d\x5b\x5d\x2c\x5d\x71\xdc\xb3\x29\x0f\x36\x01\x8e\xd6\xba\xb2\xdd\x3d\xba\x3a\xdc\xb3\x82\x12\xaa\xd4\x6a\xc0\xb1\x55\xae\xee\xc9\x43\xbc\x8d\xc6\x74\x2f\xf1\x92\xb2\x75\xeb\x8c\xbf\x55\xaf\x7e\xff\x49\xd7\x24\xfc\x4b\xe6\xdd\x4c\x9b\x9c\x35\x4d\x85\x9e\x21\x18\x01\xcd\xf1\x5b\x3c\x47\xd7\x6b\x81\x1f\x67\x6e\x2c\x36\x3b\x3f\xe1\x04\xa9\xcc\xb5\x9a\x21\x2a\xc3\xbb\x2c\xab\x76\x10\x5a\xa7\xe6\xbd\x06\xda\x1c\x5a\xb5\x78\x83\x9b\x7d\xa7\x6e\x07\xac\xf2\x96\x24\x02\x43\xac\xb6\x6f\x16\xa9\xf1\x51\xed\x96\xff\x76\xb7\x73\x43\x67\xcf\xa7\xf0\xd4\x5f\x99\x1b\xfc\xb8\x8d\x24\x3f\xf5\x1c\x3c\x86\x56\x96\xc0\xdd\xd7\xe8\x63\xf9\x87\x7e\xd1\x0c\x85\x25\xc9\x32\xa2\xc2\x1d\x5d\xef\x80\xbe\xe8\xdd\x8f\x02\xb3\x04\xe7\x02\xcd\xb1\xde\xd2\xae\x58\x5a\x59\x99\xb7\x48\x2c\x62\x46\xcb\x3c\xed\xf5\x7a\xd5\x88\x02\x97\x0d\x46\xed\x91\x95\xd9\x64\x34\xea\x4a\x4d\x8f\xc5\xff\x5c\xbd\xa8\x8c\x99\x37\x95\x07\xe3\xb1\x1f\x0f\x99\x0d\x1e\x65\x98\x2e\xa2\xe3\x0f\x1f\xa3\x41\x05\x7d\x19\x16\x8f\xe9\xd5\xb4\xab\x48\x68\x68\xaf\xc4\xe8\x0c\x89\x52\xf9\x08\x82\x06\x3b\x0e\x9c\xfc\x6c\xf2\xbd\xb2\x13\x55\xa9\xda\x14\x0c\x89\xd5\xac\x66\x05\xe1\x86\xac\x1b\x3c\x0f\x38\xa4\x21\xaf\x12\x54\xa0\x84\x88\xb5\xe3\x83\xc5\xbe\x01\x38\xa8\x51\x0a\x87\xec\x4f\x55\x8b\x7a\x51\xc8\xc3\x39\x09\xb9\xab\x95\x6f\x34\xf0\xd1\xd6\x78\x9c\x97\xcb\x9f\xec\x52\x34\x8d\x8d\x5f\x67\xb9\x5d\xb2\x78\x46\x32\x6c\x7d\xfb\x5f\x42\x57\xd1\xdf\xf4\x0c\x20\xdb\x9c\xd1\xc0\xb1\x0d\xc1\xab\x98\xcb\x78\xc5\x55\x2a\xd8\xb2\x61\x96\x51\xca\x7a\x6a\x0b\xc4\x30\x40\x8d\x3b\x1e\x4b\x69\x55\x4f\x2b\xee\x1f\x06\x4e\x9a\x1c\x99\xad\x12\x40\xe9\x0d\xe1\x94\xc5\x33\xae\x70\xc7\x95\x33\xa5\x10\xa4\xf8\x86\xa8\x6d\x69\xe7\x17\x9a\x5d\x05\x4f\xbd\x9a\x7a\x07\x5d\x1b\x4f\x59\x8a\x99\xf5\x09\x35\xc0\x85\xe3\xe8\xbe\xec\x3d\x56\xae\xe5\xa5\x72\xf0\x5f\x9f\xc1\x9f\x22\xd8\x87\x5e\xf5\x1c\xf6\xe1\xa0\x3f\xf0\x86\x7b\x59\x2f\x59\x7b\xa3\x24\x48\xd5\x33\xa9\x42\x20\x19\xcc\x38\xb6\x59\xaa\x52\xc2\x8b\x0c\xad\x75\xb1\xf9\xf7\xb1\x6d\x1c\xbd\x76\x90\x29\x16\x88\x64\x3c\x02\x8e\xb5\x0d\xe0\x82\x64\x99\x2a\xf1\xd2\xdb\x5e\x4c\x6f\x22\xaa\xb9\x95\xc6\xc3\xf5\xc2\xdd\x72\x59\xa2\xdb\xab\x4a\x77\xfb\x43\xfd\xde\xad\x90\x40\x8e\x74\x65\xdb\x95\xbf\xc7\xeb\x98\xe5\x84\x8e\x67\x24\xc1\xbd\xf1\xc0\x07\xf6\xdd\x55\x63\x38\x3b\x37\x8f\x95\x39\x54\xfb\xb0\xce\xe6\x2a\xe5\xf3\xf4\x3b\x25\x28\x4f\xbf\x3b\xb4\xaf\x7f\x22\xf5\xd7\x81\x9d\x6e\xf3\x5f\xee\x6d\x23\xb7\xea\xa9\xad\x49\x93\x1d\x1c\x9a\xce\x2d\x8b\x01\x44\x7f\xa1\xe2\x1e\xa1\xe4\xa3\x65\x4d\x1e\x3b\x61\xdd\xed\x50\x6d\x6b\xb2\xa2\xec\x0b\xc9\xe7\x57\x1c\x8b\xd6\x86\x9d\x09\x89\x3d\x13\x60\x9a\x6d\x6a\x3d\x5b\x4a\xd5\x0e\x80\x6f\x31\x29\xce\x6a\x5d\xed\xa8\xf9\x3b\x04\xc5\x37\x3d\xf0\xcd\x37\x7b\x36\x0d\xb3\x05\xf2\x59\xd0\x7b\x25\x3b\x35\x92\x76\x30\x75\x96\x0d\x1f\xed\x86\xa9\xf2\x2d\x18\x9d\xab\x33\x23\xd7\x88\xc5\x8f\xe5\x08\x2e\xa8\xd0\x6b\xac\xa6\xe8\x3b\xa6\xd2\x53\xfa\xc1\x50\x2d\x3a\xa5\x49\xb7\x21\x6c\xd8\x8f\x56\x54\x09\xcd\xd2\x0a\x93\x8f\x77\xe8\x88\x96\xb0\x5f\xf7\xa2\x3f\x59\xd6\x0c\x17\x54\x0c\xed\xd2\x8d\x57\x24\x15\x8b\x9e\x1b\xe1\x3e\x44\x7f\x8e\xfa\x8d\x36\xb2\xa3\x7a\x23\xaf\xf3\xb0\x95\x86\x1b\x0a\x7c\x2b\xa2\x6a\x97\x57\x7e\xf3\x53\xdb\xfe\x01\x94\xfa\xb8\xf5\x89\x8b\x91\xda\x5d\xf0\xe1\x02\x1e\xc0\xbe\x87\x2d\x82\x9e\x04\xf6\x59\x20\x69\xea\x47\xda\x35\xdd\x35\x7f\x57\x0f\x5e\xbc\x55\xa6\x6d\xa1\x5f\x85\x37\x43\xfe\xe1\x2e\x57\x85\x90\xa3\x25\x0e\x33\x6f\xef\xb0\x90\x02\x72\x62\x5b\xa9\x3a\xfc\x5e\x85\x44\xef\x8b\x57\x5f\x8d\x09\x6a\x53\x82\x0e\xa6\xab\x60\xcb\x41\xd8\xcc\x19\x4c\xa7\x10\x74\xd5\x28\xd5\x22\xad\x49\x97\xe1\xc1\x86\xf8\x3a\xd7\x23\x02\x71\x3b\x62\xb7\xa0\x58\x56\x0b\xdd\xcc\x98\xd5\xf9\x9a\x07\xee\x8a\xd9\x4e\xba\x76\xc6\xcc\xfb\x4d\xbb\x63\x72\xf6\xdc\x64\xa9\x39\xb4\x6a\x81\x04\xb3\x01\x53\x35\xe0\x80\x8e\x5a\x9d\x60\xc5\xe6\x7a\xc3\xce\x19\xae\x04\xb4\xee\xdc\x19\xca\xe3\x0a\xd5\xa0\x56\x81\xd8\x84\x70\xc9\xe8\x60\x9a\x35\x0d\x5e\x55\x7a\x42\x73\x4e\x33\x1c\x67\x74\xee\xfa\x8f\x3e\x9a\x2d\x4f\x0a\x33\x92\xa7\x6e\x08\x4f\xa2\x01\xd4\xe4\x30\x7a\x22\x1d\xc8\xa8\x2a\xf5\x08\x36\xec\x0c\x59\x41\x36\x68\xab\xc1\x37\x02\x22\x3f\x9f\xda\xcf\xff\x9e\x25\x0b\x27\xf9\x19\x4e\xee\x15\xf9\x9a\xed\x69\x5b\xd6\xfa\x98\xce\x45\xb8\xb5\xd1\x14\x88\x8b\x50\x08\x2e\x63\x71\x7b\xa5\x98\x0b\x43\xa7\x19\x15\xb9\xf7\x68\xeb\x6f\x18\x06\x5c\x79\x1c\x12\xd9\x6f\x20\x91\xed\x48\xe2\x23\xec\xe3\x28\xad\x05\x05\x66\xa0\xeb\xab\x37\xe6\x1a\xad\x9a\x52\x85\x6c\xbc\x55\x0b\xbe\x52\xaf\xfe\xab\x06\xff\xb3\xd5\xa0\x56\x80\xff\x55\x7d\xbf\x8f\xea\xd3\xcb\xef\x81\xba\x4f\x37\xfe\xfd\x95\xdf\xc3\x89\x64\xbb\x12\xf9\x08\xea\x4f\xab\xab\x56\xfd\xe7\x65\x9b\xbc\x14\x8f\x8e\x56\xf4\x91\xbe\x9a\x1f\xf8\x9a\x64\xf8\x4c\x41\xe9\x0c\xc5\xa6\x4a\xb6\xa6\x30\xb7\xa8\x20\x2b\xbe\x6a\xe7\xa5\x3d\xf5\xd7\xb2\x20\x71\x06\x53\x19\x9c\x3c\x4b\xc9\xcd\xf3\xa8\xf3\x74\xf4\xf6\x04\xe1\xf6\xf4\xe0\x23\x24\x07\x6d\x72\xcc\x70\xfb\xe5\xfb\xb7\x4e\xf6\xbc\x75\xf6\x80\xbc\xa1\x16\x63\x1e\xdb\xc8\xce\xd4\xc9\x9b\x90\xce\x23\xdb\x85\x74\xba\x81\x8c\xdf\x2c\x70\x18\xcb\xd5\x8e\xe4\xbb\x11\xb6\x85\x71\x3e\x90\xcb\x45\xbb\x50\xce\x0f\xe4\x1c\x21\xfd\xc8\xc8\xf0\x5d\x2d\xf7\x75\xb2\x44\x73\xcc\x7b\x44\xfd\x71\x16\x54\x7f\x97\x91\x4f\x5e\x66\x19\xfc\xfa\x2b\xe8\x27\xee\xc4\x4c\xfd\xc0\x8c\x5d\x22\xc1\x61\x2d\x98\xc2\x2f\xd5\x51\x04\x4f\xa5\x9f\x62\x75\x66\x4d\x27\xae\xa3\x73\x34\x57\xbe\xed\xc9\x4b\x75\x06\x84\x30\x51\xa2\x0c\xce\xc8\xcf\x4a\xed\xab\xd3\x19\x92\xdc\xb0\x74\xc2\x1d\xa9\x57\x18\x75\xb5\xb8\x84\x6f\xfb\x54\x9d\xaf\xb4\x9f\x2a\x34\xd5\xa9\x6e\xbb\xfb\xb0\x53\x2e\x2d\x60\x46\x43\xba\x5b\xf4\xb7\xa2\x18\xcd\xeb\x8f\x98\xe4\x03\x4c\x0d\x3e\x19\x70\xca\x27\x57\x12\x52\x1a\x6f\x5e\x64\x44\xf4\xa2\x49\x54\xd9\xc9\x82\x72\xf5\x34\xc1\xbd\xe1\xc1\x00\x0e\x36\xd4\xcd\xb5\xe0\xec\x2e\xe7\x50\x3d\x75\x51\xf2\xb9\x49\x89\xf1\x6f\x54\x2b\xe7\xda\x1c\xf8\x95\x0e\xaa\x43\x5d\x93\xa2\xc0\x2e\x42\x68\xa9\x85\x5c\xe9\x83\xb7\x79\x14\xda\x08\x3d\xe4\xcf\x94\xe4\xaa\xf7\x56\x3b\xa2\x7a\xd2\x20\x03\xe8\x80\x71\xe3\x22\x69\xcc\xcb\x6b\x2e\x58\x6f\x3c\x80\xa7\xdf\xb5\x83\x57\xa3\xf8\xe5\x66\xe2\xf1\xe4\x46\xcb\xe6\x95\xbe\xc3\x64\x36\x09\x92\x2b\xed\x60\x7d\x5b\xd6\xa1\x04\xcb\x3f\x11\xe8\xe0\x13\x75\x00\x29\x35\xc7\xfb\x5a\x09\x0a\xe9\x30\x0d\x14\x09\x69\x2c\xe8\x1b\x9a\xa0\x0c\x9f\x29\x79\xef\x55\x3d\x6e\x31\x64\xfa\x2c\x94\xe8\xbc\x58\x23\x4a\x69\xf2\x05\xb3\xa1\xee\x36\x1a\xc0\xb7\x63\xff\x62\x8d\xc3\x86\x2e\x31\xa7\x68\xa4\x3a\xe1\xa7\x94\x8a\x01\x54\x47\x46\x0a\x77\xc0\xc6\x29\x19\xef\x61\x9b\x5e\x31\xf9\x33\x8d\x72\x28\x68\x11\xf5\xb5\xe2\x8c\xde\x51\xa8\x5e\xc0\x8c\x96\xda\xbe\x36\x75\x51\xa8\x75\xf6\xb4\x07\x6b\xaa\x0e\x3f\x68\x6d\xf3\xc1\xfc\x3d\x13\x88\x09\xb0\xae\xe6\xf1\x87\x8f\xf0\x67\x75\xd3\xc9\xab\xb7\xfa\xc3\xe9\xd9\x99\xbd\xa6\xa2\xae\xa0\xf4\x39\x9c\xc8\x54\x46\x93\x7c\xee\xd0\xd0\xe5\x12\xe5\x69\xb4\x07\xd0\xa1\xb7\x34\xc6\x0d\x8a\x6a\xb3\x1a\xf3\x3e\x69\x4c\x6d\xad\x1a\x9f\x7c\x72\x7c\xfd\xf7\x9d\xf5\x0a\xf4\xf4\x75\x14\x2d\x9b\x8c\xaf\xe5\xb8\x1b\x8f\x81\x30\x9d\xec\x58\xd3\x6c\x14\x6a\x53\x14\x76\xd1\xaa\xe1\x12\xf1\x70\xc8\x35\xa2\xea\x1f\x77\x80\x2b\x48\xba\x13\x18\x62\x38\x17\x57\x3b\x42\x73\x29\x4e\x57\xd2\x47\x6f\x5f\xcd\x56\xf5\x4e\xa0\xde\x8d\xde\xdb\xbf\x4a\x8a\xb2\xaa\x4a\xd9\x04\xe4\xdd\xb2\xa3\x75\xe8\x03\xfb\x5b\xe2\xe5\xf6\xfe\x96\x78\xb9\x63\x7f\xcd\x8e\x18\xe7\x0d\x8d\xd9\x04\xe9\xdf\x97\xfe\x40\x23\xbb\x01\x6c\xe8\x25\x50\xce\x1b\xc6\xd0\x9c\x51\x51\xb6\x97\xd0\xd6\x87\xa1\xb5\x40\xf7\xec\xd7\xe0\x93\x65\xea\x55\x5b\x84\x6b\xcf\xb8\xf5\x73\x46\xcb\x02\xa6\xf5\xc1\xeb\xe7\x57\x05\xd2\x5b\xf9\xd6\xe7\xe5\x3a\xbc\x60\x68\x65\x5b\x66\x24\xff\x02\x88\x03\x11\x20\xc3\x24\x5e\xed\xff\xba\x03\x5e\x71\xa3\xbf\x37\xb2\xd1\x14\xa2\x67\x08\x16\x0c\xcf\xa6\x4f\xd4\x0d\x4e\xee\xc0\x9a\x6b\x3b\x52\xa7\xd4\x74\x57\xfb\x10\x3d\x79\x1e\x05\x7b\x0b\xfa\x8d\x67\x75\xbf\x1d\x6b\xcf\xf6\xd9\x08\x3d\x8f\xea\x45\x8f\x4e\x82\x74\x3b\x25\x35\x8e\xa2\xbb\xfb\x54\xde\x6f\x35\x71\xa1\x7d\x19\xc0\xd3\xef\x1b\x26\xce\xcf\x59\x35\x22\xb6\x9c\xa6\x41\xc0\xa6\xd6\x7d\x3d\x62\xdb\x21\x6b\xd5\x11\x84\x18\xff\xd9\x1c\x54\x81\x25\x2a\x80\xce\x40\xc7\x22\x6a\x9b\x04\x04\x6d\x04\x37\xdb\x02\x1a\x87\xf4\xde\x21\x63\x47\x20\xb8\x63\x24\xf9\xfb\x45\x8c\x38\x8b\x51\x51\xe0\x3c\x75\x8e\x9b\xa3\xd0\x93\x44\x00\x75\xeb\x4a\x86\x38\xef\x45\x8c\xae\x20\xa1\xd9\x90\x2f\x87\x07\x4f\x1b\x60\x1a\x9d\xc4\xb2\xf8\xee\x79\xe5\x79\x54\xd5\x1d\x44\x55\x75\x48\x29\x9e\xa8\xf0\xcc\x0b\x12\xfb\x7d\xbf\xdc\xbf\x16\x27\x7a\x45\x5a\x8e\x42\x8f\xa8\x6a\xc3\xf0\xda\x6b\x2b\xbf\x0c\x53\x94\xcf\x9d\xd9\x7d\xd0\x88\xcd\x68\x7f\xdc\x30\xd8\x4e\x82\xe4\x43\x0d\x56\x1b\x51\x38\x5c\x2f\xca\x0d\xc4\xa4\x49\xc5\xb7\xcd\xa1\x78\x8d\x2d\xce\x7b\x45\xe7\xd5\xc1\x7c\x80\xa8\x46\x65\x34\xa9\xcf\x84\xb5\x16\x91\xd7\x6b\x34\xf1\x07\x50\x41\xa8\x7c\x6f\x34\x01\xa2\x9f\xdc\x59\x71\x96\x1e\x6a\xa4\x4a\x80\xec\xf9\xf8\x18\x2f\x0b\xb1\xee\x55\xbc\xc2\x99\xdb\x3f\xdd\x21\x91\x63\x15\xce\xab\xdb\x02\x27\x82\x07\xa7\x1b\x92\x8c\xf2\x92\x61\xae\xae\x66\x41\x59\x16\xc3\xd1\x4c\x60\x73\x5e\x0d\xdf\xe2\xa4\x54\x1a\x48\xaa\xa9\xff\x3d\x03\x56\xe6\xd2\xfe\x00\xe1\x12\xdf\x9c\xdc\xe0\x5c\x29\x7b\x46\x33\xb8\x46\xc9\x17\xb8\xc6\x33\xca\xf4\x99\x70\x92\x97\x24\x9f\xab\xab\x21\xcf\xd5\x4d\x9c\x56\x9b\xe9\xc5\xcb\x01\xf1\x75\x9e\x2c\x18\xcd\x69\xc9\xb3\xb5\xaf\xed\x70\xf1\x4a\xf5\x8c\x7b\xf2\x33\xaf\x8e\x80\xbf\xa3\xea\x25\x97\x03\xa3\x45\x5c\xe5\xc3\x71\xb1\x35\x85\xe0\x12\xee\x48\xe1\x50\xb5\x8f\x7a\x7c\x18\x88\xb0\x69\x77\xf5\x6a\xaa\x7b\x89\xf5\x45\x12\x4a\x9e\xe4\x83\x5e\x75\xb5\xc3\x59\xb2\xc0\x69\x99\x61\x73\x59\xd4\xad\x50\xef\x25\x0e\xae\x6f\x55\xa1\xa5\x08\x0a\xf5\x5b\xc6\x74\x08\x77\x03\x18\xd7\x2e\x61\xcb\x32\x77\x25\x0e\x07\xc3\xf7\xa2\xa5\x1a\x5e\x01\xf4\xba\x6b\x89\x6a\xe7\xac\x5d\x2e\x4f\x75\xee\x8a\x67\xb7\x14\xca\xfe\xfa\x6b\x5b\xc9\x47\xb3\x66\x52\xf3\x4b\x59\xcc\x96\xf3\x09\x8d\x92\xe1\x48\x99\xb9\xa1\x2a\xc0\x8a\x36\x96\x44\x1d\x7a\xae\x94\x9d\xc4\xe3\x0f\x1f\xe3\xad\xa4\xef\x4e\x59\x78\x7c\x3c\x4a\x8a\x72\xa8\xd2\x5c\x43\x4d\xa4\x9a\x8b\xdd\x89\x74\xb7\x4e\xb1\xcf\x39\x9a\xa3\xac\x3f\x81\x53\x3c\xd4\x97\x05\xaa\xd3\x0d\x6f\x28\x4a\x01\xa9\x45\xa6\xee\x37\xe5\x02\xa9\xdb\xfe\x1a\x25\xd7\x06\xd9\xa6\x11\x8c\x46\xf0\x7f\xfc\xa3\xc9\x4f\x24\xf5\x19\x45\xa9\x26\xfb\xc9\x0e\x64\x8f\x46\x15\xe5\x3b\xf1\x2a\x38\x56\xeb\x29\x7c\xc5\x38\x7b\x2e\xf7\xa1\xbc\xdb\x89\x82\xda\x69\xc4\x3a\x0d\xba\xeb\xea\x34\xe3\x7d\x89\xb0\x52\xa6\xcb\x55\xb6\x08\xda\x7d\x57\x81\x5f\x13\x68\xea\xf4\x1e\xc6\x2a\x4b\xa5\xd9\xd9\xdb\x42\xa6\xdd\x17\xdb\x99\xce\xa0\x4a\xc4\xee\x64\x0e\xd5\x36\xef\xef\x31\xa9\xe1\x76\x6c\xd5\x9f\xde\x58\x79\x28\x6b\x5c\x01\xeb\x16\xee\x34\xdd\xcb\x0e\x8a\xb7\xdb\xdb\x1a\x55\x75\xc5\x55\x72\x41\x97\xe6\x3a\x5d\xbe\x45\x85\x29\xd8\xab\xa5\x86\xdd\x6d\xe6\xe6\x58\xe8\x2e\x4c\x0f\xfe\xd2\xa8\x7b\x3c\x55\x0e\xad\xfe\x22\xbc\x16\xc4\xc3\x50\x75\x68\x68\x72\x59\x37\xf7\x4f\xad\xd0\x2e\x12\xf4\x0a\x55\x6f\x87\x06\x47\x35\xb7\x35\xe3\xe5\x77\x71\xe8\xa1\xb8\x6b\x9d\x69\xff\x3c\x4e\x75\xef\x4b\xe3\x38\x0e\x4c\x65\xa0\x25\xc2\xf3\x44\xbc\x5e\x3d\x1b\x9a\xcd\x6a\xcb\xbd\xe3\xc0\x64\xb0\xf1\x3e\x83\xde\x03\x8e\x99\x6d\x9b\x54\x13\xa8\xe8\x2a\xed\x63\x5a\x5a\x0f\xf8\x4f\x56\xdf\xfa\x3d\x0c\x0d\xdc\x30\x91\x80\x51\x3f\xbe\x41\x59\xcf\xe3\xe0\xa6\x93\x74\x7b\xe1\x3c\xb5\x61\x0f\x54\x55\x00\xaf\x8a\xb0\x5f\xac\x8f\x8b\xb2\xf5\xe4\xaa\x47\x7d\xbf\x71\x32\xd1\x54\xac\xef\xce\xbf\x7a\x81\xf3\x83\x59\x68\x34\xf0\x43\xb8\xb8\xe1\x74\x5a\xc8\xc8\xae\x3e\xb6\xf2\x52\xf7\xf0\x10\x76\x1a\x96\xb6\xf8\x9c\xe1\x01\x68\x94\xeb\xbe\xea\xa7\x9c\xb9\x4a\x56\xe8\xab\xe9\x8f\x3f\x7c\x1c\xe8\x6a\x4a\x24\x60\x49\xb9\x80\x48\x73\x05\x70\x2e\x18\x09\xd3\x14\x1b\x85\x40\x35\xd3\x93\xd2\x5c\x4e\xb2\x43\x37\x75\x68\x00\xd7\xfe\xb2\x42\xb1\xb9\x75\x84\xc7\xd2\x2b\x7d\x0e\xd7\xc1\x83\x46\xe5\xa4\xae\x95\x01\xb8\x03\x9c\x71\xdc\x86\xe2\xd9\x36\x14\x21\x86\xda\xcb\x84\x2e\x0b\xc4\xf0\x8b\xb5\xd4\x91\x9a\x5a\x8f\xf7\xfe\xa5\xe5\x2d\x23\xb5\xc7\x15\xd4\xf6\xf3\x92\xe4\x9d\xca\xc5\xb2\xac\xaa\xd5\x55\x4c\x0a\xfa\x7e\xc8\x8c\x6a\x81\x6c\x9f\x54\x75\x63\x5f\xd7\xbc\x76\x0b\xe4\xe3\x4c\xad\x29\x98\x0f\x66\x37\x74\xb0\x76\x9c\x60\x83\xe8\xd9\x0e\x88\xfe\xff\x9c\x66\x09\x61\xa8\x23\x82\x32\xb8\x46\x5c\xff\xc8\x83\xe9\x83\xd1\x2c\xc3\xac\x5e\xf1\x1c\x0e\x87\x97\xd7\x47\xca\xdc\xbd\xf0\x2a\xdc\xca\xeb\x23\x5d\x9c\xfc\x5c\xbd\xd1\x47\xfc\xc3\xc3\xaa\x8a\x63\x1e\xdf\x5d\x9b\x67\x9d\x6d\x86\x7e\xa3\xe0\xcd\xf8\xd0\x3b\x1f\x6e\x85\xd8\x66\x24\x65\xf0\x6b\x27\xd0\x7e\x0f\x4e\x0f\xeb\x6c\x62\xe7\x6d\x0a\xe6\xba\x25\x1e\xb0\xde\x2b\x6b\x29\xca\xb3\x72\xe9\xef\xd0\x6b\x21\xf1\x1e\xfa\x0d\x4d\xee\xb2\x71\x0e\x5f\x3e\xae\xca\xdb\x34\xca\x7d\x9d\xfa\x6c\x3f\xcf\xe9\x3a\xb1\x60\xbb\x9c\xfd\x0d\x8e\xdc\x27\x45\x39\xb1\x7d\x8d\xda\x88\x34\x92\xe5\xf5\x37\xf1\xfa\xdd\xd2\xa4\x31\x1d\xea\x02\x55\x3a\x03\xb2\x5c\xe2\x94\x20\x11\xce\x02\x1f\x98\xcb\x55\x65\x0c\xab\x1d\xb7\x6a\xd6\xbc\xb9\xb9\xb7\xef\xe5\xce\x71\xd7\x5c\xe4\x40\xaf\xfd\xfa\xab\x59\x36\x1b\x80\x82\x0b\x59\x5d\x8b\xaf\x5a\xfa\x73\x3f\xe4\x71\x19\xd4\x29\xf9\xa0\xd5\x2f\x12\xa8\x8c\xdd\xa6\x7e\x9b\xb2\xd2\x10\x44\x68\xa2\xbe\x08\x66\x47\x2e\xa7\xcb\xda\x25\x17\xea\xe1\xa1\xbb\x4e\xb0\xcb\xdf\xd5\x83\x78\x00\x4d\x75\x9f\xb7\x93\xae\xaf\xa6\x53\x95\xc5\x98\x91\x1c\xa7\x9e\x3f\xe6\x43\x56\x4b\xb8\x71\x78\xbe\x7d\x81\x1e\xb6\x20\xd1\x0a\xb3\x71\x17\x49\x4d\x1f\x6f\x50\xc8\x61\x5d\x01\xaf\x6a\x62\x7b\x2d\x67\x30\xa4\x6b\x68\x63\x50\x8e\x33\x7d\xe8\xb1\x76\x6e\xc6\x64\x64\xed\x57\x2f\xd7\xcd\x0b\x94\xbb\xd4\x7e\x55\x73\x3b\x81\xa8\xdf\x06\x7e\x5d\xc1\x86\x94\xa8\xa1\x6d\xad\xcc\x85\xda\x21\x12\x9b\xa1\xac\xf6\x96\x72\xbc\xb2\x6a\x52\x32\x67\xc6\x30\x5f\xe8\x8b\x37\x2b\xa3\xa2\x2f\xaa\xe5\x06\x5c\x17\x35\x57\xc3\x86\x94\xd1\xa2\x76\x2b\x94\xda\x8e\xb2\xfc\xab\x20\x6d\x7a\xbb\xeb\x50\xe3\xc6\x33\x8b\x55\xb1\x74\xe7\x82\xf6\x37\x8e\x6a\xeb\xb8\xed\x0c\x59\x6b\x91\xf2\x46\xe4\xed\x4d\x76\xc8\x2b\x77\x4c\x52\xa5\x21\x76\x99\xc4\x28\x3a\xf4\x2f\x8e\xcb\x32\xef\x4c\x91\x3d\x32\xe8\x66\x22\xdc\x32\x53\x9b\x05\xf5\x69\xe8\x2e\xa5\xbc\xe7\xc8\x1b\x7b\x66\x81\xbc\x75\x9c\xe0\x6b\x45\x68\x4f\x3e\xd5\xf7\x67\xe4\x2a\xc8\x48\x7d\x83\xc9\xae\x14\x21\x58\x2f\x62\x34\x53\xa5\x2f\x05\xc3\x1c\xe7\xfa\xe7\xa1\x3a\xe0\x1d\x4e\xd4\x8e\x72\x03\xfa\x25\xce\x4b\x22\xf0\x72\xd7\x76\x02\x5d\xeb\x4d\x9c\x01\x0c\x0f\xb6\xb6\x49\x32\x92\xc8\xf5\x62\x97\x4e\x2c\x1b\xab\xcb\x7a\x6a\x55\xee\xfd\xad\xa8\xda\xf4\x45\xb5\x45\xed\x29\xb7\xdd\xe7\x66\x5c\xdd\xe7\x64\x8d\xbf\x52\x15\xda\xe7\x52\xf7\xfa\xb6\xef\x46\x84\x2a\xa5\xf2\xad\xbc\xac\x58\x4b\x31\xac\xf7\x56\x12\x5d\xdd\x05\x6c\x86\xfd\xdb\x72\x55\xcd\x2b\x6b\x3b\xbd\x0b\xfd\x4f\x2a\xa7\xc6\x86\x20\x61\x5c\x9c\x96\x79\x98\xe0\xea\x82\x82\xa9\xbd\x57\xdd\x03\xbe\x57\xc6\xd1\xfe\x6b\xdd\xe9\x6f\x48\x43\xe4\x10\xe8\x3c\xc2\x2e\xd9\x51\xfd\xef\x6e\x37\x0a\x6b\x19\xe3\x80\x3c\x2b\x5c\x51\xc3\x46\xd6\x13\x79\x0f\xe9\xb9\x3d\xf1\x19\x10\x10\x66\x18\x77\x4a\x29\x76\x50\x72\x17\x66\xc6\xee\xbb\xab\xe6\xa7\x5e\x7c\xf7\x02\xa5\xe9\x51\x96\xa9\xfb\xe7\x1b\x4e\x6e\x23\x7b\xaa\x7e\xf6\xc2\x3d\xdc\x5e\x0b\xad\x23\x15\xd9\xe0\xac\x50\x67\x43\x5a\x38\x19\x72\x31\xb0\x05\xc1\xa2\x01\x92\x37\x29\xb2\x87\x98\x6d\x98\x35\xf5\x41\x2e\x82\xf6\x97\x5e\xa5\xb0\x7f\x67\x69\x45\x5e\xfb\x65\x1e\xfa\xbd\x31\x20\x0e\x38\xb4\x10\x16\x4c\xf1\xf1\x6f\xea\x77\x93\xaa\xbe\x2f\x1c\x86\xea\xf6\x0f\xb5\x1a\x15\x30\x4c\xcd\xaf\x19\x98\x17\x76\xe8\xfa\x67\x07\xaa\x21\x5b\xc4\x75\x65\xa0\xc1\xa6\xd2\x2a\x87\xf2\x27\x8d\xed\x75\x29\x04\xcd\x87\xd2\xe6\x3a\x1a\xfa\xf1\x82\xa4\xd8\xcf\x11\xde\x39\x55\x60\x4d\xb4\x37\xe8\x7d\x88\xae\x54\x2f\xbc\xa3\x68\xa2\xb1\xe4\x37\x19\xc9\xfb\x9b\xc9\x7b\x1b\xca\x87\x9b\x4a\xdf\xf0\x29\x86\xfb\x66\xcf\xb1\x64\xa0\x27\x67\xab\xe9\xb3\xc6\xcf\x40\x7b\x1c\x97\x33\xe7\x44\x20\x9c\xb8\x40\x34\xbc\x9f\xc0\xd0\xff\x2c\x65\xbd\x26\x39\x87\x0d\x55\xe1\xff\x98\x96\xbf\xe6\xe7\x58\x68\x8d\xa4\x0f\xd7\x79\xb2\xe1\x8e\x8d\x7b\x2b\xa4\x61\x12\x9d\x44\x7e\x40\x84\x55\xcb\x66\x7f\x9f\xf8\x41\xd9\x96\x66\xf6\x27\xcd\xa6\x10\xf4\xef\x4e\x94\x77\x9c\x26\xf7\x03\x23\x9f\x15\x96\x0d\x55\x58\xe4\xe4\x58\xca\xf0\x6f\x8e\x8e\x54\x5f\xdb\x23\x23\x33\xd9\xba\x62\xc1\x1d\x6b\x6c\xf2\xbb\xda\xb0\x31\x50\x53\xe9\x97\x19\xf6\x6d\xe3\xb8\xbe\xf9\x28\x18\xb7\xb9\xf1\xc8\xcf\x5b\x6d\x9d\x00\x75\x2c\xec\x42\x5d\xb0\xa8\x70\x54\x61\x42\x4b\xf0\x15\x24\xae\x14\x2b\x71\x5a\x97\x44\x63\x24\x36\x8d\xfa\x9d\xbd\x88\xb3\x39\x72\x3b\xcf\x51\x74\xe8\x4f\xfb\xce\xa3\xa8\x49\x47\xd3\xfa\x7a\x55\x88\x1d\x17\xbe\xdd\xdf\x54\x79\xad\x94\xe7\xd9\x1a\x63\x74\xb4\x6b\xd4\x11\x06\x16\xd6\xb3\x48\x6d\x6b\x10\xdd\x06\x83\xeb\x94\x9c\x1a\x5c\x60\xc3\xbc\x4b\xb0\x76\x58\xf5\x35\x4c\x0f\x33\x93\x7a\x77\xeb\xe6\x1c\xdf\xfa\x85\x80\x00\x8a\x09\x90\x64\x88\xf3\xe9\xa7\xc8\x86\x8f\x9f\xa2\xe7\xf0\x4c\x5b\xb1\xea\xdd\xb5\xc8\xe1\x5a\xe4\xc3\x14\xcf\x50\x99\x89\xa8\x76\x89\x87\x6d\x3a\x14\x74\x3e\xcf\xf0\xa7\x08\xc4\xba\xc0\xb2\x9d\x42\xf3\x29\x02\x92\x56\xdf\x6a\xa6\xd1\x12\x69\x09\xdc\x0f\x28\xfc\x14\xa9\x1a\x47\x83\x38\xa0\x12\x10\x23\x68\xb8\x40\xbc\xa0\x45\x59\x4c\x3f\x45\xd2\xa4\x7f\x8a\xea\xb4\x29\x28\x7c\x5b\xa0\x3c\xc5\x92\x08\xa5\xdd\x3f\x45\xae\x02\xd8\x75\x0c\x5a\xfd\x68\x62\xeb\x16\xd9\x47\x5a\xd3\x6b\x9f\xa2\xe7\xcf\x46\x4a\x71\x81\x46\x60\xd9\x96\x20\x86\x83\xb7\x23\xcd\x82\x8e\xce\xcb\x6c\x7b\xd7\xc6\x2d\xf8\x14\x35\xe6\x6d\x28\x4d\xee\xa7\x08\xa4\x05\x9e\x7e\x8a\xf4\xb7\x56\x6e\x28\x14\x19\x4e\xaf\xd7\x5d\x93\x22\x95\xb7\x92\x83\x51\x99\xc9\xff\xd5\x62\x69\xa5\x59\x4a\x50\x45\xb4\xfb\x95\x3f\xa9\xfc\xbb\x50\x06\xc8\xfc\x30\xdf\x20\xee\xd7\x6e\x93\x0d\x33\x01\xba\xb9\x51\xf6\x2d\xa5\x90\x7e\x09\x64\x4d\x85\x86\x9a\xe9\x31\x7e\x71\x07\x15\x85\xd1\x2f\xa3\x7f\x9b\x9f\xde\x09\x0b\x01\x77\x52\xc6\xff\x21\x51\xc7\xef\xa3\x5d\xf5\x9b\x8f\xb9\x3e\xc9\x18\xc2\xa9\xdf\x06\xf7\xd5\x70\xf3\x82\x81\x96\x40\xe5\x7e\x61\x4d\x67\x7a\x42\x8f\xed\x98\x66\x46\x57\xf9\x2e\xef\x4e\x0d\x9a\xbe\xf0\xae\x81\xeb\xe1\x5e\xe8\x14\x37\x4e\x63\x81\x72\xab\x3d\x8f\xc6\x24\xff\xbb\x9c\x9c\x90\x35\x9a\x2b\x21\x9b\x2e\x02\x74\x97\x8d\xd8\xce\xdc\xc3\x9d\x3b\x14\x3e\x3f\x8c\xcf\x3a\x75\x6f\x8d\x8f\xe3\xc6\xde\x71\x1a\x2c\xe8\x44\xc6\x40\xea\x27\xf5\x5d\x47\x61\xa0\xa1\x7f\xc4\xce\x76\x73\x51\xc1\x5f\xfa\xf1\x46\x78\x26\x45\x35\x69\x09\x34\xf4\xcc\x57\xb0\x95\xd7\xf2\x34\xec\x31\x44\x36\x6e\x45\xd4\x79\xa1\xb7\x03\xda\xe9\x0e\x82\x16\xb5\x3f\xf0\xd7\x47\xa0\xd8\x6d\xcd\xb9\x2a\x40\x49\x61\xb5\xc0\x2e\x81\x08\x33\x92\x13\xbe\xc0\x5c\xfd\xce\x8e\x2a\x13\x0f\x9d\xcc\x0f\x68\xee\x6d\x12\xe8\x8e\x16\x88\x1f\x17\xa5\xfa\xfb\xd6\xd4\x30\x54\x3a\xde\x3f\xdf\x34\x1a\xc1\x4b\xf5\xe3\xc6\x33\x2c\x92\x85\x96\x4b\xfd\x23\xc3\xfa\x37\x8f\x17\xe8\x06\xab\xdf\x3a\x76\xbf\xfe\xe8\x76\x28\x8e\xdd\xaf\x52\xbc\x0d\x4a\x06\x3a\x92\xfe\xe1\x81\xf4\xda\xb2\xeb\xdc\x02\xf0\x12\x87\x36\x51\xd1\x91\xf4\x84\xa9\x1d\x64\x1b\x50\xa8\x55\xa7\xa1\x96\x3d\x6c\xdb\x9c\xe8\x52\x04\x5d\x64\xd4\x22\x83\x6a\x61\xec\xe0\x13\x1f\x8c\x83\xdd\x28\x73\x28\x2a\xb8\x30\x14\x09\x3d\xdd\xaa\x1a\xdf\x04\x48\x80\x6f\x30\x5b\xc3\x0f\x63\xb5\x65\xb5\xe3\xcf\xe8\x55\xe6\xb4\x71\x24\x18\xee\x73\x88\xd8\xed\xb7\x73\xef\xbe\x95\x46\x49\xd9\x23\x10\x75\x6f\xb2\xaa\xa2\xc7\x01\xfc\x30\xd6\xe7\xb9\xdd\x99\x06\xff\x27\x11\x07\x72\x95\x29\x7f\xc8\x4b\xde\x6b\x9e\x1e\x58\x96\xb6\xfe\x50\xa2\x2b\xf0\x74\x6f\xbb\x43\x20\x3f\xbf\x5f\xcb\xe7\x77\x73\xaf\x1e\x04\xcb\xd1\x54\x87\xd3\xb5\x7f\xf3\xff\x02\x00\x00\xff\xff\x38\xce\x15\xfe\x42\x86\x00\x00") - -func pagesAssetsJsContainersJsBytes() ([]byte, error) { - return bindataRead( - _pagesAssetsJsContainersJs, - "pages/assets/js/containers.js", - ) -} - -func pagesAssetsJsContainersJs() (*asset, error) { - bytes, err := pagesAssetsJsContainersJsBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "pages/assets/js/containers.js", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _pagesAssetsJsGchartsJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\xfd\x7b\x7b\xd3\xba\xd2\x38\x80\xfe\xcf\xa7\x68\xb5\xd8\x59\x36\x51\xd3\xa4\xdc\x4a\x5c\x35\xbf\x16\x0a\x14\xe8\x85\xb6\x50\xc0\x78\xef\x47\x37\x27\x6e\x9c\x38\x75\x9c\x5e\x20\x3d\x9f\xfd\x3c\x33\xf2\x45\x4e\x53\xf6\x7a\xdf\xf3\x9e\xc5\x7a\x1a\x5d\x46\xd2\x68\x34\x1a\x8d\x46\x23\xd9\x09\x67\x63\x99\x45\xc9\xd8\x71\x57\x7e\x3f\xba\xe2\xe9\x0a\xe7\x4c\x8f\x65\xa2\xf4\x97\x93\xfd\xd7\xc9\x68\x92\x8c\xf5\x38\xa3\x82\xb3\xeb\x68\xac\x92\x6b\x2a\x39\x3b\x12\x17\x5a\x66\x54\x71\xb6\x3f\x0e\xa3\x71\x94\xdd\x52\xcd\x99\x4a\xe4\x6c\x04\xb0\x21\x67\xd1\xf4\x90\x1f\xd2\x01\x3b\xe0\xd9\x80\xf6\x39\xdb\x49\x53\x7e\x4b\x07\x9c\x1d\xce\x46\x42\xa7\x34\xe2\x0c\x00\x46\x6c\x2f\x4d\x93\x94\x5e\x70\xb6\x9b\x24\xb1\xe6\x63\x3a\xe4\x6c\xc2\xd3\xa9\xde\x1f\x67\x34\xce\xc3\x6f\xe3\x84\x67\x74\x0c\xd5\xbe\x85\xe6\x34\x4d\x38\x53\x7a\x11\x49\xaf\xe8\xcb\xca\x84\x3b\x9c\x0a\xf7\x77\xaa\xb3\x59\x3a\x5e\xe1\xad\xeb\x48\x65\x03\x26\xee\x4a\x88\xcb\x45\x08\xc5\x33\x6e\x03\xa4\x8b\x00\x52\x47\xb1\x0d\x30\x5d\x04\x08\xe3\x24\x49\x6d\x88\xec\x1e\x44\x92\x8e\x78\x66\x83\xcc\x16\x41\x52\x3d\x4a\xae\xb4\x0d\x72\x75\x0f\x91\x58\xf3\x5a\x3b\xd7\x8b\x10\x7d\x9d\xbd\x4e\xe2\xd9\x68\xbc\x3f\x56\xfa\x86\x89\xbb\x47\x25\xec\xcd\x22\xec\x34\x4b\x93\x61\xad\xc1\xdb\x25\xd5\x9d\x45\xa3\x1a\xcc\xaf\x7b\x5d\x8b\xe2\x1a\x75\x76\x16\x01\xb2\xe4\x34\x4b\xa3\x71\xdf\x06\xda\x5d\x04\x9a\x24\xd3\x08\x72\x6c\xa0\xd7\xf7\x6b\xfa\x70\x7a\x74\x68\x83\xbc\x59\x04\x19\xeb\x9b\x1a\x99\xf7\xee\xd1\x30\x19\x4f\xb3\x74\x26\xb3\xfa\x88\xbd\xbd\x3f\x62\xe3\xec\x34\xfa\x55\xeb\xfb\xbb\x45\xa0\x91\x9e\x4e\x79\xbf\x06\xb3\x7f\x7f\xd0\x92\x71\x0d\xe2\xe3\xfd\x81\xe0\x69\x0d\xe9\x4f\x8b\x10\xc0\xfa\x36\xc0\xc1\x22\x80\x48\xb2\x2c\x19\xd5\xc6\xfb\xf0\x5e\x33\x92\xc7\x35\x44\x8e\xee\xb1\x60\x72\x3d\xb5\x01\x8e\x97\x10\x2f\xe3\xd1\xb8\x06\xf4\x79\x11\x28\xe6\x42\xd7\x38\xe2\xe4\xde\x8c\x8b\xa6\x93\x98\xdf\xda\x30\xa7\x8b\x30\x03\x1d\xf5\x07\xb5\x4e\x9f\xdd\x43\x77\x11\xe2\xcb\x3d\xba\x4d\xf7\x46\x93\xac\xd6\xd0\xf9\xfd\x4e\xcf\xc6\xca\x86\xf8\x76\x9f\xfa\x63\x9d\xbe\x3f\x3b\xf8\x64\x43\x7d\xbf\x4f\x9b\xb8\xce\x52\x3f\xee\x11\x46\x87\x35\x74\x1f\x2f\x02\xe8\xcb\x19\x8f\x6b\xc4\xe5\x62\xb1\x95\xe9\xf4\xcc\xb0\x78\x35\xd2\x62\x11\xa8\xaf\xb3\xf7\xf7\xc8\x27\x17\xa1\xb2\xdb\x49\x8d\x1d\xd4\x3d\x00\x2e\x0a\x31\x52\x02\xe9\x7b\x40\x29\x1f\x4f\x63\x9e\xd5\xaa\x0a\x17\xa1\xc6\xbc\x2e\x45\xfa\x4b\x50\xfe\xca\xe3\x59\x0d\x68\xb0\x08\x84\x4b\x82\x0d\x11\x2d\x42\x5c\x45\xd3\x48\x44\x71\x54\x1f\xf3\x8b\x45\x30\x91\xc4\xb5\x21\x1f\x2e\x02\xc4\x7a\xdc\xaf\x2f\x1b\xf1\x3d\x64\xd2\x24\x4b\x16\x69\x38\xba\x37\x5e\x31\x9f\x4e\x0f\x17\x7a\x3f\x5e\x84\x4a\x26\x5c\x1a\x9c\xab\x51\x4d\x16\x81\xa6\x09\x4a\x09\x5c\xaa\x2f\x19\xe1\x93\x89\x1e\xab\xd7\x83\x28\x56\x84\x4e\x04\x23\x61\x14\x67\x3a\x25\xf4\x52\x30\xc2\x65\x16\x5d\xe9\xbd\x58\xc3\xb2\x4c\x68\x2a\x18\xe9\xeb\x6c\x17\x58\x3d\x1a\xf7\x5f\xc7\x91\x1e\x67\x27\x5a\x66\x84\x4e\x05\x23\xd3\x41\x14\x66\x84\x66\x82\x11\x7d\xa3\x25\xa1\x29\x23\xb8\x6e\x12\x3a\x13\x8c\xc8\x24\x8e\xf9\x64\xaa\x09\xbd\x12\x8c\x4c\x78\x96\xe9\x74\x4c\xe8\xb5\x60\x24\xd5\x93\x98\x4b\x4d\xe8\x8d\x60\x24\x4b\xde\x46\x37\x5a\x11\x7a\x0b\x85\x74\x14\x13\x9a\x31\x82\x8b\x23\xa1\xbf\xb0\xa2\x71\x86\xf8\xec\x08\x46\x92\x30\x9c\xea\xec\xdc\x34\xb3\x6b\x72\x25\xcf\x08\x7d\x0d\xe1\x01\x4f\x77\x32\x42\xdf\x40\x38\xd5\x3c\xd3\xc0\xf5\x87\x89\xd2\x84\xee\x99\xce\xbc\xe1\x99\x26\xf4\xad\x60\x24\x1a\x4f\x75\x9a\xed\xea\x30\x49\x35\xa1\xef\x30\x25\xd3\xe9\x15\x8f\x09\x7d\x0f\x78\xf1\x14\x16\xb2\x64\x26\x07\x7a\x4a\xe8\x3e\xf4\x58\xa6\x5a\x8f\xbf\x11\xfa\xb1\x8c\x7c\x27\xf4\x93\x60\x64\xc4\x33\x39\x20\xf4\xc0\x34\xf2\xe5\xec\xf5\xdb\x59\x1c\x7f\xd7\x3c\x25\xf4\x10\x88\x8c\x0b\x39\xa1\x47\x05\x45\x6f\x8c\x4a\xf4\x16\xfa\x78\x6c\x88\x35\x25\xf4\x33\xd2\x06\x16\x74\x42\x4f\x04\x23\x97\x33\x9d\xde\x9e\xea\x58\xc3\xba\x43\xe8\x69\xd9\xad\x72\x88\xce\x0c\x22\x49\x1c\x9b\xa9\x4b\xe8\x17\x1c\xd3\x74\x9a\xe5\x63\xfc\xe8\xab\x69\x7f\x8f\x03\x82\xe7\x50\x05\x8e\xe3\x27\x0d\x83\x77\xcd\xc8\x54\x67\x3b\x59\x96\x46\x62\x06\x94\xf9\x56\x02\x9c\x25\x13\x42\xbf\x63\x14\xfb\xf1\x03\x09\x1c\xc5\x0a\xe8\x39\x25\xf4\x31\x34\x8d\xca\x00\xa1\x5c\x32\x22\xa2\xb1\x22\x54\x48\xec\xe1\xfb\x64\x96\x4e\x09\x95\x92\x11\x98\xc4\x53\x42\x15\x04\xf5\x4d\x76\x1a\x89\x38\x1a\xf7\x09\xd5\x06\x12\x34\x05\x42\x43\x13\xc9\xfb\x35\xdd\xbd\x3d\xe3\x7d\xe0\x7f\x42\xfb\x92\x91\x42\x53\x2c\xbb\x3d\x90\x8c\x4c\x67\x62\x9a\xa5\x84\x46\x12\x99\x38\x26\xf4\x42\x32\x32\x49\xf5\x55\x94\xcc\xa6\x65\x33\x43\x09\x2c\x66\x74\x09\x42\x63\x04\x49\x26\x3a\xcd\x6e\xf7\xa7\x7b\xe3\xd9\x48\xa7\x5c\xc4\x9a\xd0\x11\xe4\xe4\xea\x04\xa1\x63\x99\x73\xcb\x2d\xa1\x09\x34\x96\xcc\x52\xa9\x51\xae\x11\x3a\x91\xc0\x2b\x18\xbc\xcc\x7b\x45\x68\x0a\x50\x93\x38\x82\x19\x21\x0b\x3e\x3d\xe6\x29\xe2\x3b\x93\xc8\xa8\x85\x0a\x41\xe8\x95\x64\x64\x36\xd5\xe9\x4e\x1f\xf3\xaf\xa1\x70\xc6\xe5\x90\xd0\x1b\xc9\x48\x9c\x48\x6e\xf0\xb8\x85\xce\xe5\x3a\x05\xa1\xbf\x24\x23\x03\x3e\x3d\xba\x1e\x1f\xe7\x7d\x20\xf4\x06\x4a\xde\x42\x0f\x76\xa0\xd9\xeb\xb1\x4e\xdf\xe4\xe4\x22\xf4\xd1\x2e\x34\x0c\xaa\x04\xa1\xaf\xa1\x0d\xcd\x53\x60\x83\x37\xd0\x08\x2f\x79\x64\x4f\x16\x6c\x7b\x90\x8c\x61\x62\xbd\x35\x09\x86\x81\xdf\xc9\x82\xc7\xf2\x69\x77\x8b\xc8\xa6\x19\xa1\xef\x25\x23\x29\x1f\xab\x64\x44\xe8\x3e\xd6\x9f\x55\x98\x7d\x30\x95\x54\x33\xe1\x23\xd2\x0d\x28\xf4\xa9\xac\xd2\xb0\xe1\x01\xf0\x0f\x2a\x23\x84\x1e\x42\x27\x53\x1d\x12\x7a\x64\x6a\x34\x1c\x72\x0c\x4d\x25\xd7\x53\x42\x4f\x0c\x31\x51\xa5\x20\xf4\x54\xa2\x50\x8b\x6f\x09\x3d\x83\xa1\x2e\xf8\xe6\x8b\x2c\xe6\x92\xc5\xdd\x5f\x0d\x4a\x07\xd1\x78\x96\x01\x53\x9e\x23\x1d\x84\x8e\x09\xfd\x06\x7c\x66\x34\x0c\x42\xbf\x97\x23\x88\xb3\x60\x87\x91\x41\x3e\xbd\x7e\x94\x39\xc5\x84\x7b\x2c\x19\x39\xe1\xe3\x3e\x4c\x03\x65\x44\xe1\xa9\x4c\xa3\x49\x46\xa8\x50\x8c\x8c\x13\xa5\x71\x8d\x22\x54\x2a\x46\x52\x53\xe8\x35\x23\x93\xd9\x74\x40\xa8\x52\x8c\xe4\xfa\x06\xa1\xa1\x62\xe4\x0a\x60\x8f\x42\x42\xfb\x0a\xe7\x57\x34\xee\x47\xe1\x2d\xa1\x03\xc5\x48\xa6\xa7\x19\xa1\x11\x86\x80\xe7\xf6\x80\x24\x33\x98\x76\x17\x00\x1c\x47\x20\x53\x87\x8a\x3d\xc2\x56\xcf\x6e\x27\x9a\xd0\x58\x01\x3f\x71\x45\xe8\x48\xd9\x73\x6c\xf7\x76\x5f\x11\x3a\x86\xe6\x0b\x45\x85\xd0\xa4\x40\x80\xd0\x09\xe4\x64\x7a\x44\xe8\xa5\xca\xd9\x1d\xb0\x7a\x8b\xb2\x0a\x58\x38\x55\x10\x1c\x4d\x78\xaa\x0b\x86\x3b\x2e\xe7\xcf\x34\xef\xb9\x19\x8b\x4c\x15\x82\x2b\x27\xd4\x3b\x46\x62\x1c\xf8\x99\xc2\x21\xce\xd9\xee\x4a\x31\x12\xa6\xc9\xe8\xf5\x80\xa7\xaf\x51\x6a\x5f\x9b\xfc\x8a\x87\x6e\x14\x23\x3c\xe3\xe3\x0d\x42\x6f\x55\x2e\x90\x52\x3d\x26\xf4\x17\x40\x5e\x02\x53\xee\x28\x46\xde\xe6\x02\xf7\x3d\x23\x19\x92\x61\x57\x31\xa2\x74\xc8\x67\x71\xf6\x35\xd2\xd7\x84\xbe\x56\x46\x34\x11\xba\x8f\x64\xc9\xc7\xe8\x8d\x2a\xe4\xdf\x37\x42\xf7\xca\xc8\x77\x42\xdf\x1a\x54\xcc\x02\xf2\x4e\x15\x0c\x8c\x0c\xf2\xde\x90\x36\xef\xc6\xbe\x02\x6e\x86\x89\xf5\x01\xfa\x09\x3a\x01\xa1\x1f\x51\xf0\x98\xb5\x9f\xd0\x0f\x58\x73\xbe\xc8\x13\xfa\xb1\x6c\x28\x9f\x62\x9f\x54\x25\xf5\x08\x3d\x30\xd5\x9f\x6a\x99\x8c\xd5\x94\xd0\x43\x55\xcc\x57\x83\xcd\x91\x62\x24\x57\x06\x08\x7d\x74\x9c\x23\x13\xc5\x71\x34\x2d\x8a\x7c\x86\x91\x8d\xa6\x33\x1e\x47\xbf\x72\xd9\x72\xa2\x90\xe3\x41\xfc\x29\x42\x4f\x55\xc1\xd8\x66\x4a\x9e\x61\x27\xd4\x2d\xa1\x5f\x54\x31\x93\x72\x71\xf1\x89\x11\xc9\x41\xe0\x7e\x05\x2a\x24\xd0\x81\x73\x65\x04\xca\x7e\xc1\x27\xdf\x0c\x12\xd6\xdc\xfb\xae\x16\x16\xb4\x1d\xa8\xe2\x87\xa1\x6a\x25\x7a\x1e\x97\xa4\x28\x26\x18\xd7\x66\x65\x07\x8e\x80\xd5\x5d\xe8\x9c\xf1\xb2\x03\xe4\x11\xa9\x01\x0b\x18\x79\x05\x39\xb3\x14\x64\xee\xa9\x91\x89\x5a\x17\x0b\x05\x8a\xff\x50\x57\x64\x35\x85\xfb\x9a\x11\x7d\xa5\x53\x98\x61\xba\x94\x82\x85\x7c\x88\xca\xa4\x7c\x41\xbb\xd0\xa0\xca\x40\x03\x46\xab\x18\x6a\x58\x5d\xbe\x4c\x26\x3a\x7d\xcd\x41\xd7\x89\xb5\x59\x06\x60\x26\x8e\x34\x23\x17\x49\x34\x26\x34\xd1\x8c\xcc\xc6\xb9\xc2\x34\xc1\x32\x9f\x92\xeb\xa2\xcc\xa5\x2e\x57\xc2\x5f\xc9\x58\x1f\xe1\x28\x10\x7a\xc4\x08\xa1\x9c\x73\x46\x7e\xde\xb4\xdb\x84\xa6\x9a\x91\x9f\x30\xb7\x34\x23\x2b\x84\x66\xf0\xc3\xc7\x6a\x85\x50\xc1\x39\x7b\x44\x56\x54\xa2\xa7\x2b\xe3\x24\x5b\x41\x6d\x64\x05\x38\x6d\x85\x50\xc9\x39\xfb\x7b\x05\x55\x69\xf2\x37\x55\x18\x43\x05\x94\xfc\x4d\x67\x9a\xfd\x4d\xfe\xa6\x57\xf0\xb3\xb2\xbe\xfd\x37\xbd\xd6\x8c\xfc\x45\xa8\x86\x56\xff\x7a\xdc\x79\xdc\x79\xbc\xf1\x78\xe3\xf1\xd3\xc7\x4f\x09\xbd\x81\xac\x36\xfe\x47\xe8\x2d\x44\x36\xdb\xf0\x8f\xd0\x5f\x10\x09\xc3\x90\xd0\x9d\x3c\x84\x91\x5d\xcd\xc8\x63\x42\x5f\xc3\x4f\x87\xd0\x37\x9a\x91\x7f\x11\xba\xa7\x19\x69\x10\xfa\x16\x7e\xfe\x6a\x7b\x84\xbe\xc7\xd0\xd3\x57\x1e\xa1\xfb\x10\xe4\xa3\x89\x47\x68\x08\x18\x34\x0c\x23\xb0\x7e\x92\xf4\x63\xbd\xd6\xbf\x8a\x7e\x11\xfa\x01\x80\xfa\x99\x47\xe8\x47\x08\xc5\x10\xfa\x04\xa1\xcb\x59\x02\xe1\x03\xe8\x19\xa1\x7d\xa8\xe0\xef\xbf\x09\x3d\xd4\x8c\x38\x84\x0e\x20\xee\xfc\x9b\xd0\x23\xcd\x88\x4b\x68\x04\x71\xd7\xf1\xf9\xda\xaf\xc0\x25\xf4\x58\x33\xf2\x84\xd0\xcf\x9a\x91\x26\xa1\x27\x9a\x11\x4a\xe8\x29\xfc\xac\x10\x7a\xa6\x19\x59\x23\xf4\x02\x8a\xac\x8d\x92\x5f\x84\x0e\x4d\x70\x4a\x68\x8c\xa1\x84\xd0\x11\x06\x70\x63\x03\xea\x1e\xa1\x63\x4c\xb8\xd6\x62\x08\x4b\xde\x17\xcd\x48\x8b\xd0\xaf\xf0\xd3\x6a\x11\x7a\x0e\x81\xd3\xd3\x53\x42\x13\x18\x92\xd6\x64\xdc\x27\x2b\xf9\xf6\x95\x74\x36\xc8\x8a\x31\x41\x91\xbf\xe9\x04\xea\x59\x5f\xe7\x17\xfc\xa6\x65\x28\xc1\x27\xd1\xb4\x25\x93\x11\xa6\x11\xfa\xe8\x12\x21\xa6\x19\xcf\x22\xb9\x3e\x4a\xd4\x2c\xd6\xd3\x75\xa0\xd6\x3a\xa1\x29\xe6\xcd\xb2\x28\x5e\x17\x3c\xfd\x0f\xa1\xd3\x2a\xc1\xa8\xa5\xb0\x3b\x24\xf4\x9b\x66\xa4\x4d\xe8\x77\xf8\x69\x3d\x27\xf4\x07\x06\x5e\x10\x9a\x01\x3c\x8c\xf9\x63\x48\x81\xc0\xcc\xa4\xd4\xff\x23\x94\x87\x8c\x74\x08\xbd\x82\xdc\x4e\xab\x4d\xe8\xb5\x09\xbd\x22\x54\x40\x56\x9b\x50\x19\x32\xf2\x94\x50\x15\x32\xf2\x8a\x50\x1d\x32\xd2\x25\x34\x84\x1f\x40\xa1\x1f\x32\xe2\x11\x3a\x08\x19\xd9\x22\xf4\x06\x4a\x6f\xad\x4f\x27\x7c\xbc\xfd\x73\xd6\x6e\x73\x60\x3b\x93\x96\x81\xcc\xda\x26\xf4\x57\x1e\x4d\xb7\x09\xbd\x80\x52\x02\x42\x3b\x40\xcf\xad\x68\xd4\x5f\x41\xc5\x08\x26\xac\x82\xfd\x4b\x77\xa5\x4d\x56\xa6\xa0\xa7\xfd\x4d\x77\x11\x06\xea\xbe\x0f\xe4\xad\x84\x71\xc2\xb3\xee\x0a\x2c\x51\xde\xca\xf5\x20\xca\xf4\xda\x74\xc2\xa5\xee\xae\x8c\x93\xeb\x94\x4f\x3c\xb2\xfd\x37\x7d\x8d\x8d\x17\xa8\xbc\x31\x31\xb5\xdd\x18\x8b\xe9\xc4\xdb\x5a\xcf\xd4\x36\xa1\x7b\x45\x6a\x1e\x1f\x02\x92\x88\x6e\x1c\x32\xc2\x08\x1d\x85\x8c\x6c\x13\x3a\x0e\x19\xe9\x11\xfa\x16\xc0\xff\x1f\xa1\x49\xc8\xc8\x0e\xa1\xef\x20\xba\x73\x7c\xfc\x69\xef\x8c\xd0\xf7\x18\x39\xd9\xdb\x21\x74\x1f\x82\xbb\x3b\xa7\x7b\x84\x3e\x9a\x84\x8c\xec\x9e\x10\x7a\x09\xbf\x5f\xce\xce\x8e\x0e\x09\xfd\x00\xf9\xaf\x8f\x3e\x11\xfa\xd1\x84\x0e\x0e\x76\x0e\xdf\x10\x9a\x86\x8c\xbc\x3e\x3d\xed\xbc\x46\xe1\x49\xe8\x27\xcc\xe5\xe3\xbf\xb3\x15\x99\x8c\x44\x34\xd6\x2b\xd3\xa8\x3f\x8e\xc2\x48\xf2\x71\xb6\xa2\xa2\x7e\x94\x4d\x51\xc4\x8c\xa2\x71\x34\x9a\x8d\x56\xc2\x94\xe7\xbb\x7e\xcc\x23\x74\x0a\x55\xa2\xe9\x10\x24\x12\x46\x50\x31\xd3\xe9\x4a\x64\x64\x91\xd2\x61\x34\x86\x05\x66\x16\x32\xf2\x66\xe7\x3b\xa1\x57\x10\xd8\xff\x4a\xe8\x01\xb4\x0f\x2b\x98\x43\xe8\x2d\x24\x6a\xa9\x47\x02\x36\xa3\xbf\x42\x46\xf6\x08\x3d\x04\x80\xbd\x83\xdd\xbd\x37\x84\x1e\x61\x38\x93\xeb\xef\x0e\xce\x08\xdd\x09\x19\x79\x4b\xe8\x31\x24\xbe\x3d\xd9\x39\xd8\x23\x74\x17\x92\xb4\x48\x67\x1c\x84\xf9\x67\xc8\x79\x47\xe8\x09\xfe\x42\x91\x53\x08\xbd\x27\xf4\x75\xc8\xc8\xfb\xf7\xdd\xd1\x88\xd0\x33\x4c\x3a\xfa\x72\x42\xe8\x1b\x48\x3d\x21\xf4\x0b\x24\xed\xe7\x55\x7e\xc5\xc8\xc1\x3b\x42\xf7\x42\x46\xf6\x0f\x8f\xbf\x9c\x11\x7a\x8e\x89\xa7\xfb\x87\x6f\xf6\xbe\x11\xfa\x0d\x62\x1f\xf8\x15\x2f\x74\xbe\xef\x90\xf0\x91\xd0\x1f\xf8\xbb\xf7\xfd\xdd\xde\x21\xa1\x6f\x43\x46\x3e\x11\xfa\x18\xd2\x3e\xed\x1f\x7e\x24\xf4\x5d\xc8\xc8\x01\xa1\x5c\x70\x46\x0e\xf6\xce\x76\x08\x7d\x0f\x29\xfb\x9f\x3e\xed\x9f\xee\xbd\x3e\x82\xe1\x12\x98\xb7\x7f\xf8\xe5\x6c\x8f\xd0\x7d\xc8\x3d\x38\x58\x01\xa5\x22\x64\x8f\xc8\xc1\xd1\xe1\xd9\x7b\x42\x3f\x42\xf2\xe9\xfe\x1e\xa1\x12\xa1\x41\x36\xa9\x3c\x74\x54\x68\x04\x9f\x42\x46\x0e\x09\xd5\x90\x7e\x78\x84\x7d\x3b\x25\x34\x34\xd1\xd3\xd7\x27\xfb\xc7\x67\x84\x1e\x00\x50\x72\x95\x0f\xc0\x61\xc8\xc8\x11\xa1\x7d\x80\x39\xda\xfd\xb0\xf7\xfa\x8c\xd0\x01\x44\x8e\x77\x4e\x76\x0e\x08\x3d\x0a\x19\xf9\x4c\x68\x04\x49\x9f\x57\x6e\x6f\x6f\x6f\x09\x3d\x86\xb4\x2f\x3b\x27\x67\x7b\x27\x84\x7e\x0e\x19\x39\x25\xf4\x04\x7e\xf2\x16\x2e\x00\xb8\xe8\xdc\x29\x64\xec\x7d\xc2\x8a\xcf\x20\x7c\xf4\xe5\xe4\xf5\x1e\xa1\x43\x04\x3a\xfb\xfe\x69\x8f\xd0\x18\xc3\x5f\xdf\x11\xfa\x05\x20\x78\x36\x4b\x15\x68\xe7\x5f\x21\xa6\x27\x59\x8e\xeb\x08\xc1\xcc\x7a\x7f\x1e\x32\x72\x46\xe8\x37\xf8\xd9\xfb\x76\x66\xe6\xcb\x77\x88\x7d\x22\xf4\x07\xfc\x9e\x10\x3a\x86\x02\x67\x27\x3b\xaf\x3f\x12\x2a\xfa\x8c\x9c\x0d\x66\xe9\x14\x6b\x4e\x30\x27\x49\x56\x46\x7c\x7c\xbb\x32\xd1\xa9\xd4\xe3\x6c\x7d\xa2\xd3\x11\x6e\x30\x27\x98\x0d\xcb\xea\x28\x9a\xe2\x22\xdb\x5a\x41\xbd\x71\x85\xd0\x4b\xc8\xfb\x72\xf6\x9a\xd0\x14\x43\x63\x7d\xa5\xc7\x2b\x63\x3c\xbe\x58\x49\xc2\x15\x9e\xf6\x51\xed\x98\x12\xaa\xfb\x8c\x9c\x13\x3a\x05\xb8\x73\x98\xbc\x19\x86\xf6\xf6\x3e\x12\x3a\xc3\x60\xbe\x66\x84\x00\xa8\xd5\x58\x1b\xec\x1e\x5d\x61\xa6\xd1\x10\xfb\x7d\x46\xbe\xef\xed\x9c\x10\x3a\xe8\x33\xf2\x83\xd0\x6b\xc8\xf4\x09\xbd\xc1\xdf\x04\xed\x0b\x2b\x78\x8e\x12\x10\x7a\x6b\x27\xbe\xcd\x8d\x45\x01\xa1\xbf\xec\xf4\x73\x3c\xb0\x09\x08\xdd\x81\xd4\x9f\x3f\x09\xdd\x35\x01\x58\xbe\xa3\x3e\x84\x20\xf1\x02\x43\x53\x42\x5f\x9b\xdc\x19\xa1\x6f\x4c\xe8\xa6\xbd\x49\xe8\xb0\xcf\x48\x40\xe8\x1e\x24\x05\x4d\x42\xdf\x42\xe0\x3f\xb0\xf6\x98\xe5\xe6\x3f\x49\xac\xfe\x93\x6f\x32\xe2\x3e\x23\xff\xc9\xd5\xf2\xff\x10\x3a\xea\x33\xc2\x09\x9d\xc0\x8f\x98\x26\x31\xea\x8d\xef\xa0\x3c\x8f\x27\x03\xee\x14\x06\x2f\x42\xdf\x63\xe2\x68\x42\xe8\x25\x00\xa7\x11\x5f\x23\x34\xc5\x60\x0a\xa4\x9a\x42\x70\x96\x25\x84\x66\x7d\x46\x04\xa1\x33\xf8\xe1\x72\xd8\xc7\x0d\xd3\x1a\xee\x61\xba\x84\xee\x43\x3d\x82\xa7\x2d\x48\x9f\xe4\xa4\xbd\xea\x17\xaa\xef\x35\x86\xf0\xa0\x89\xd0\x0f\x08\x9b\xa4\x4a\xa7\xbb\xf9\x5e\xf5\xe3\x62\x52\xa1\xbe\x57\xe9\xf9\x06\xb7\x9e\x90\x83\x1d\x56\xa9\x27\x46\xd7\x3d\x5a\x48\xc9\x01\x1f\x1d\x57\xe9\xb8\xe1\xf8\x5c\x8b\xe7\x50\x37\x88\x2d\xee\xd0\xfb\x8c\x48\x42\x4f\x00\xca\xa8\xea\xa7\x45\x50\x6b\x42\xcf\x30\x02\xdb\x0f\x42\xbf\x94\x61\xb3\x15\xf9\x6a\xe2\x9a\xa7\xd5\x2e\x19\x93\x72\x8a\xfd\xea\x63\x78\x36\x1a\x13\xfa\x2d\xcf\x98\x8d\xc6\x6f\xd1\x8c\x38\xf5\x09\xfd\x6e\x12\x71\x63\x48\xe8\x4e\x9f\x11\x45\xe8\x0f\x48\x54\x3c\x83\x61\xda\xed\x63\x50\x13\xfa\x3a\x0f\x65\xb8\xc3\x7f\x8c\x30\x5a\x46\x23\x1e\x9f\xde\x8e\x44\x12\x13\xca\x25\xa6\x4d\x25\xa1\x6f\x00\x38\x4a\xb5\x34\xbb\x97\xbd\xbe\xb5\x5f\x3f\x86\xf0\x15\xa1\x02\xc1\xcb\x7d\xd3\xdb\x3e\x23\x21\xa1\xef\xe0\x87\xc7\xa0\x6a\xef\xf7\x2b\x8b\xe7\x07\x0c\xa3\xe9\xf1\x23\x04\x13\x39\x43\x93\x15\x47\x7b\x19\xa1\x2a\x0f\x8d\x78\x66\xb6\xd2\x1a\x13\xf2\x25\xf0\x4d\xbe\x02\x7e\x82\xa2\x33\x20\xf1\x01\x86\xc6\x39\x7e\x87\x7d\x46\x60\xc7\x01\x65\x72\xfd\xb5\xb6\xff\x5a\x33\x35\x03\xd1\xd6\x78\x9a\x26\xd7\x6b\x2a\x25\xb4\xff\xcf\xc1\xb5\xb1\x19\x3c\x1a\xfc\xf3\x22\xb3\x3e\xa1\x51\x05\xde\x82\x5d\x55\x36\x6d\x11\x7a\x61\x25\xc6\x09\x57\x3a\x6d\xbd\xc3\xd8\xce\x24\x9a\xee\xe2\x26\x65\x68\x81\x8c\xf8\x64\xda\x7a\x53\x8c\xc5\xf4\x54\xa7\x57\xb8\xe1\x89\x2d\x98\x1a\x2a\x2d\x42\x47\x0f\xe6\x1d\xa0\xc2\x7a\xcc\x81\x71\xc7\x0f\x42\x99\x83\xe0\x62\x5f\x9f\x3c\x08\xf7\x55\xa7\x53\x1c\x80\x09\x82\xc0\xb4\x8e\xc6\xfd\x82\x9f\x2e\x31\x11\x26\x5a\x9f\x91\x01\xa1\xc7\xf0\xd3\x1d\x8d\x56\x38\xa1\x9f\x21\xac\xb9\x22\xf4\xa4\x5f\x19\x7c\x52\x28\x31\xd0\x37\x84\x9e\x42\x6a\xa4\x94\x1e\x13\x7a\x06\xe1\x24\x8d\x7e\x81\xba\x13\x13\xfa\xa5\x5f\x18\xad\xbe\x42\x28\x1b\xc5\x84\x9e\x63\x28\x9b\x4c\x09\xfd\xd1\x67\x24\x1a\xc7\xd1\x58\x13\x3a\x85\x0a\xd1\xe6\x72\x86\x46\x9c\xc7\x7d\x46\x86\x84\xf2\x41\x61\x13\x11\x10\x8a\xc6\x43\x42\x25\x84\x12\xd8\xb8\x66\x50\x28\x86\x2d\xee\x80\x91\x11\xa1\x8f\x66\x90\x00\xe3\x40\xa8\x86\x24\x7e\x93\x1b\x30\x42\x88\x69\x15\xcd\x46\x84\xf6\x21\x1c\x8d\xf3\x9c\x2b\x2c\x32\x25\xf4\x1a\x02\xb0\x21\x54\x84\xde\x98\x70\x16\x5d\xe9\x15\x89\x5b\xda\x5b\x4c\xd1\x7d\x4c\x7b\x6d\x6c\x3d\xbf\xec\x34\x34\x6a\x4e\x09\xdd\x31\x89\xd7\x2b\x84\x7e\x66\x64\x8c\x46\xc6\xc1\x80\x91\x31\xce\x86\x33\x08\x98\x05\x3a\x1a\x30\x92\x10\x7a\x01\x3f\xb8\xd2\x10\x3a\x84\xf0\x98\xd0\x78\x60\x59\x2e\x76\xa1\xc2\x64\x96\x95\xd6\x28\xc8\xbc\xd2\x69\x18\x27\xd7\x84\xbe\x86\xdc\x5c\x4b\x2f\xe4\xef\x1b\x2b\xcd\x08\xda\x3d\x2b\x25\x97\xa9\x6f\xad\x24\x14\x9e\x93\x81\x75\x1e\xf1\x0e\x73\xa3\x1b\x5d\x5a\xd0\xdf\x97\x29\xa6\xca\xfd\x32\x9e\xcb\xd9\xcb\x81\x6d\x2a\x4e\x07\x68\x75\x0e\xa3\x1b\x42\xbf\x30\x32\xb9\x21\xf4\x03\x94\x80\xed\x28\xa1\xd3\x01\x23\x29\xa1\xb0\x93\x4b\x75\x8c\xf4\x23\x74\x06\xb1\xbe\x20\xf4\x0a\x02\x09\x28\x2e\xd7\x10\xca\x62\x42\x6f\x06\x8c\x4c\x09\xfd\x08\x55\xe0\xd9\xeb\x5b\x6e\x4c\xc6\xb7\x03\xf6\x88\x4c\x73\x2d\xf3\x17\x40\xa1\x1d\x05\x71\xf8\x84\xd0\x7a\x3c\x4d\x52\x96\x4b\xba\x1d\x80\x18\xa0\x59\x64\x17\x82\xd1\xb8\x0f\xed\xbc\x86\x70\x12\x47\x8a\xd0\x03\x2c\x94\xa4\xf9\xd9\xff\x94\xd0\xc3\x85\x14\x9f\xd0\x23\x93\x64\x59\xbf\x8f\x31\x25\x37\x71\xbc\x19\xa0\x2d\x38\x8b\x24\xa1\x7b\x83\xc2\x60\x49\xe8\xdb\x41\x69\x96\xfe\x8c\xf0\x10\x9e\x0e\xb4\xce\x08\x7d\x07\x79\xb3\x10\x09\x76\x02\x99\xc5\x89\x21\xa1\xa7\x79\x34\xb7\xae\x9f\x61\x54\xdf\x64\xeb\xb8\x45\x7d\x3f\xc8\x63\x17\xfc\x8a\x17\x94\xf8\x52\xc0\xbc\x2e\x8e\x89\xf6\x01\x0c\x57\x94\xaf\x98\x17\x8d\xf4\x0f\x64\xce\x0f\x79\x46\x12\xa2\x3a\xf5\x11\xa2\xd5\x76\xfd\x53\x11\x9d\xe4\x46\xfb\x03\x4c\x80\x99\x73\x38\x28\xcc\x88\x47\x03\x34\xe4\x20\xe5\xcd\xb9\xc1\xf1\x80\x91\x2b\x42\x3f\x0f\x4a\xcb\xe9\x39\xb4\x8a\x61\xb3\x6c\x7c\x33\xf1\x74\x85\xd0\xef\x45\xf0\x3f\x3a\xfb\xcf\x0a\x5b\xe9\x78\x84\x9e\x40\x49\x9d\x66\x91\x04\x41\x72\x3a\x40\x3b\x5d\x84\x75\xff\x40\xf0\xba\xd5\xee\xd1\xd9\x80\x91\x6b\x42\xbf\xc0\x0f\x6c\x4d\x09\xfd\x3a\x28\x0f\xde\xce\x07\x8c\xdc\x12\xfa\x6d\xc0\xc8\x2f\x42\x1f\x43\xf9\x5f\x49\x32\xda\x9d\x65\x59\x32\x9e\x1e\x81\xbe\x40\xe8\xf7\x01\x23\xbf\x09\xe5\x8a\x33\xf2\xbb\x7d\x47\xa8\xc0\x50\xe7\x8e\x50\x09\xa1\xb9\x4f\xe8\x8f\x01\x23\x77\x84\x3e\x1e\x30\x52\x6c\xbe\x15\xe4\x61\xe4\x19\xa1\xda\x44\x36\xda\x4f\xdb\x84\x9e\x53\x1e\x31\x1e\xcd\xe7\xbf\xef\xa8\x88\x58\x36\x88\xa6\x95\x6f\x8d\x8c\x1c\x5e\x9e\x47\x5e\x25\x91\x5a\x69\xaf\x32\xc6\xad\x13\xe4\xc8\xe1\x54\x50\xe9\xfe\xe6\x8c\xfb\xa9\x0c\x9c\x2f\xda\xf5\x24\x93\xf3\xb9\x88\x3c\xee\xb7\x83\x68\xbc\x22\xe7\xf3\x55\xe9\x73\x15\xcc\xe7\xf8\xe3\x7c\x93\xbc\x09\x79\xae\x17\x26\xa9\x03\x34\x55\x1e\xf7\x3f\x04\x8d\x86\xa3\x18\xf7\xa7\x22\x70\x5c\xd7\x73\x57\x4d\x9a\x8c\x1c\xe1\xf6\xa4\xaf\x02\x26\xba\x92\x41\x00\x63\x5d\x4c\xfa\x7d\x67\x1d\x55\x47\xe6\x00\xb5\xa8\x55\x56\x38\x51\xc5\x04\xe0\x44\xb5\xa7\x99\x34\x4d\x78\x6e\x14\x3a\x20\xf1\x56\x99\xf2\x75\xe0\x2a\xfc\xf1\x74\x3c\xd5\x2b\x79\x9f\x21\xd7\xcb\xc3\xca\x3a\xed\x8e\x1c\xf7\xb7\x75\x72\xdb\x47\x3a\xf1\xd6\x57\xc1\x2a\x1f\x2b\xeb\xf0\x39\xe4\x3d\xfc\xdb\xc5\xbf\x0c\x04\x2f\xb7\xf0\x1e\x60\x71\xc0\x58\x30\xe0\x55\xd8\x72\x78\x51\xe8\x08\xc6\x2e\x06\x80\x24\x77\x7f\xc3\xdf\x95\x68\x3c\xcd\xf8\x58\x02\x40\x9f\xbb\x79\xfd\x69\xdf\x5b\xcc\x94\x65\xa6\xf0\x0c\x21\x24\xf7\x3f\x06\xfe\x50\x06\xfe\xa7\xc0\xe1\x2e\x94\x90\x8c\xfd\x12\x25\xe0\xc5\x20\x4f\xbb\x11\x7c\x3e\x2f\xb0\xf0\x3f\x04\x8c\x9d\x35\x1a\x64\x36\x2e\x8c\x01\xab\x25\x8a\x7e\xac\x83\x07\xb3\x64\xd0\x68\xac\xe2\xaf\x73\x2c\xb9\x5b\x47\x56\x32\x76\x0b\xcd\x2c\x2f\xfb\xe9\x1f\xd5\x7a\x22\xaa\x5a\x0f\xfa\x77\xf6\xa8\x0d\x06\x66\x10\x0d\x09\x0f\xfa\xb5\xea\x98\xdd\x90\xd5\xfb\x82\x60\xd6\xb0\x46\x36\xfb\x03\x2b\xb0\x1a\xf3\x5f\x2c\x66\xaf\xda\xb9\x43\x3b\x17\x47\x98\xb1\xb4\x6f\xb9\x17\x58\x83\x8e\xd9\x25\x06\x00\x37\x9f\xe3\xe0\x37\x1a\xf5\x91\xb0\xfc\x0e\x6a\x8d\x43\xc4\x86\x95\x01\xf4\xbb\x82\x4e\x6c\xe8\x02\x8c\xb1\xbd\x41\x05\x32\x59\x0e\x72\x6d\xd5\x72\xb9\x1c\xc4\xc2\x2a\x5d\xd2\x69\x1b\x8f\xf1\x32\x4e\xaf\xfa\x0d\x1d\xce\x09\x89\x04\xb0\x8b\x66\x76\xd5\xdc\x0f\x15\x0f\xe6\x73\xc7\x04\x58\xb3\xd9\x57\xdc\xbd\x83\x8a\x43\x85\x9b\xa0\x64\x3a\x4b\xf5\x7f\x66\x91\xfa\x0f\x69\x3a\x9d\xbd\x57\x4f\x06\xfe\x7b\x19\x38\xee\xf6\xf6\x76\xdb\xa5\x7d\xc5\x59\xdb\xab\x46\x7a\xa0\x78\x21\xc8\xca\x16\x3e\x05\xfe\xa9\x0c\x1c\xee\x73\x19\xd0\xd2\x04\xe0\x5a\xbe\x28\x55\xa1\x28\x74\x56\xb9\x9b\x0d\xd2\xe4\x7a\x65\xe4\xe0\xf4\xda\xd8\x2a\xcb\xf8\x1f\x02\xd3\x69\xc5\xfa\x38\x0f\x2f\x94\x99\x87\x05\x00\xdd\x28\x47\xdf\x92\x1f\x66\xe6\x2e\x2f\xe1\x7a\x26\x3d\xd1\x06\x4b\x49\x55\x59\x05\xc7\x14\xc0\xeb\xee\xee\x7e\xad\x0b\x40\x56\xc7\x2c\x87\xa8\xa2\x5f\xdf\x58\x61\x70\x80\xc6\x38\x4c\xbf\xb5\xce\xea\x62\x22\xc8\x15\xc7\xf5\x2f\x55\xe0\xdc\x48\xee\xf6\x06\x8a\x77\x23\x55\x0e\xec\x37\x6c\x0a\xc6\xd5\x6e\xad\x22\xfe\x2c\x17\xdb\x7f\xea\x2f\xed\x3c\x44\x21\xc1\x24\x40\x3b\xae\x27\xfc\xd7\xc1\xbd\x5e\xd5\x89\x02\xcb\x1b\x15\xee\x1d\x72\xca\x55\xc4\xde\xf0\x4c\xb7\xc6\xc9\xf5\x7c\x7e\x8f\x42\x4d\x90\xd2\x90\x7f\x57\xad\x87\x17\x30\xe2\x38\xda\x22\x82\x95\xcc\x35\x3f\x0e\xa7\xdf\x38\x77\x2b\xa1\x13\xb5\xf4\x15\x8f\x8b\xe5\x85\xb1\xeb\xa8\xd1\x28\x52\x9d\xef\x92\xbb\x74\x99\x7c\x13\x51\x0b\x74\x8b\x9e\xa3\x74\xac\x33\x5d\xc4\xe9\x75\xc4\x56\xdb\x6e\x17\x7e\x3a\x2e\xbd\x8e\xdc\xa2\xa6\xbc\xc9\x9c\x0c\x22\xf2\x3f\xa9\x80\x4a\x26\xfc\x53\x11\x38\xb7\x03\xd7\x93\xc2\x91\xf4\x3d\x04\x5a\x4a\x87\x3a\x65\xab\x1d\x4f\xfa\x97\x81\x23\xfc\x37\x02\xd6\x01\x20\xda\x99\x0a\x20\x49\x16\xe1\x2f\x0a\x22\x46\xa0\x16\x1c\x8d\xfb\xb5\x56\x3f\x4e\x04\x8f\xf7\xae\x78\x8c\xe6\x61\x7e\xc5\xa3\x18\x35\x29\xd7\x43\x82\x5e\x47\x0c\x17\xcc\x6a\x68\xbf\xe7\x0b\x72\xa9\x50\xc0\xba\x19\x03\x56\xc2\xff\x18\xb8\x1e\x6f\x69\x06\x21\x0f\x9d\xad\x80\xe2\xd2\xf5\xf6\xb8\x03\x3c\x40\x39\xe4\x5f\xe8\x6a\x49\xe5\x54\xd2\xd0\x8c\x7a\xff\xbf\xcf\x24\xa8\xd7\x97\xf9\x24\xa6\x7d\xf7\xee\x0e\xd7\x42\xb3\xf3\xcc\xcf\xa5\xe6\x73\xc1\x5b\x45\xf0\xb7\x35\xd2\x37\x51\x3e\xd0\xa3\x96\xe4\x93\x6c\x96\xea\xd3\x8c\xcb\xe1\x59\xca\xa5\x76\x97\xa4\x19\xce\xba\x89\x6a\x23\x32\x72\x5c\xff\x5a\x06\x9e\x68\x34\x30\xbf\x85\x7e\x22\x4c\xb8\x77\xbc\xd1\x78\xc7\x4d\x19\xe3\xde\x02\x63\x71\xf7\xdd\xb9\x89\xe8\xc8\xf5\x42\xe1\xdc\x44\x40\x01\xf2\x7a\x36\xcd\x92\x11\x3a\x4e\x13\x17\xd1\x1f\x2a\x5e\x61\x79\x1b\xd5\x3c\xc6\xda\x8c\x71\xff\x5c\xc1\x04\x68\x5b\x72\x2a\x36\x5c\x6b\x70\x82\x85\x64\xad\x53\xd0\xa8\xbd\xc5\x44\xa3\xc1\x71\xea\xbe\xd1\x54\xb8\xac\xe6\xf9\x6b\x89\xdc\xf5\x7f\xfb\x3f\xa7\x3f\x6f\x78\x3b\x78\xf2\x78\xdd\x1f\x00\xd3\x5b\x4d\xec\xd8\xc2\xf9\x57\xe4\xec\x46\xd8\xa1\xca\xb1\xd7\xca\x5f\x5d\xf7\xff\xdd\x5e\x7b\x15\xdc\xaf\x65\x64\x10\x2d\x67\xec\xb5\x08\x9c\x75\xff\x67\xf6\x33\xfd\x39\x5e\x09\x9a\xeb\x7d\x3a\xd5\xae\x49\xfd\x77\x95\x3c\xaf\x82\x8f\xd7\xfb\xf4\xc8\xaa\xf0\x4d\x74\xbf\xbe\xb2\x1f\x50\x30\x0f\xe5\xe5\x2a\xbe\xdd\xcb\x09\x0b\x93\xd9\x05\xd5\x16\x8a\x8e\x15\xa7\xfb\x39\x02\x89\xe2\xf4\x63\x1e\x9e\x28\x4e\x3f\xe4\xe1\x4b\xc5\xe9\xa7\x3c\x9c\x2a\x4e\xdf\xe7\xe1\xa9\xe2\xf4\xad\xce\xb9\x03\x56\x8b\x4c\xf1\xbc\xff\x85\x0e\xc2\x3d\x10\xad\x66\x2c\xf6\xb4\xdb\x68\x38\x0b\x0d\xbb\x16\xc0\x20\xb4\x01\x72\x6c\x6c\x80\x51\x0d\x20\x47\xd1\x06\x98\xd5\x9a\xc8\xf1\xb6\x01\x0e\x6a\x00\x79\x67\x6c\x00\xce\xb9\x0d\x91\x77\xd1\x2d\xd6\x1c\x8e\x32\x61\xac\x38\x5b\x6f\xac\xf7\x69\x02\x81\xad\xf5\x3e\x9d\x40\x60\x7b\xbd\x4f\x2f\x21\x40\xd6\xfb\x34\x85\xc0\xdf\x30\xbc\x10\xf8\x79\xd3\x6e\xaf\xf7\x69\x06\x61\x1f\x22\x8d\xad\x6d\xf2\x77\xb0\x5e\xb1\xfd\xac\xc6\x27\x6f\x61\xac\xf6\xb4\xdb\x13\x12\x94\xe0\x15\x11\xf5\xae\x10\xa0\x7b\x6d\x7e\xb8\x35\xb0\x57\xf6\x5c\xf8\x9d\x9f\x58\x77\xf7\x34\x35\xa7\xd1\xdd\x41\x48\xcd\x09\x75\x77\x04\x21\x73\x2e\xdd\x9d\xe9\x3b\x2a\x3d\x99\x8b\x58\x14\xaf\xc7\xd6\xca\x02\xbd\xbf\x51\x9c\x5a\x82\x4a\x9b\x36\x42\x26\x7c\x1e\x80\x3a\x10\x16\xc3\x1c\x42\x4c\xfb\xaf\x45\xe0\xb4\x5d\xc6\xae\x75\x21\xd0\x06\xdc\xf9\xa6\x9b\xda\x1f\xc8\xc0\xe9\xb8\xae\x17\x72\xa7\xef\xce\xe7\x4e\xc8\x8c\x88\xf0\xaf\x54\xe0\xf4\x61\x56\xcd\xe7\xce\x37\xee\x48\xca\x9b\x53\xed\xd2\x90\x49\xff\x8b\x08\x7c\xa1\x50\x1c\x3a\x6d\xba\x06\xc5\x4b\x29\xc8\x03\x16\xde\x59\x93\xe2\x7a\xd9\x2c\x6b\x38\xfe\xbf\xbd\xa0\xe9\x7a\xeb\x7d\xbb\x1b\xd2\xfd\x3d\xbd\x8e\x32\x39\x70\xa4\xfb\x5b\xf2\xa9\x5e\x79\x2f\x78\x37\x2f\xba\xa7\x3d\x4c\xca\x64\x99\x34\x08\x4d\xd2\x65\x95\x34\xca\x93\x3e\x54\x49\x33\xed\xe5\x07\x07\x5d\xd8\x0c\xdc\xa3\x85\xca\x69\x21\x4b\x5a\xc0\x8c\x09\xb9\xa3\xca\xc9\x62\x91\x44\x59\x1c\x77\x67\x74\xc0\x1b\x64\x3a\xe8\xd2\xcf\xe9\x56\x03\xba\xd5\x5b\xef\x5b\xcb\xd2\xbb\x7c\x7a\x83\x30\xdc\x16\x39\x0f\x6b\x0d\xb4\x13\x6b\x4f\xdd\xe6\x57\x5d\x8d\xae\x75\x63\xa0\x26\x6d\xab\x79\x20\x2c\xe2\xbe\xaf\x4b\xe4\x3e\x77\x44\xb3\xe3\xfa\x23\x5d\x97\x74\xfb\x35\x95\x47\x46\x8e\xd9\x5c\xbb\x3d\xee\xdf\x88\xa0\x88\x75\xcb\xb5\x81\x2a\x26\xb1\x2d\xd8\x5e\xaf\x75\x18\x53\xb8\x57\x96\xa0\x59\x16\x98\xbe\x8f\x9c\x6f\x9a\x0e\x5a\x23\x7e\x83\xfd\x50\xae\xdb\x94\xd6\x05\x8c\xfb\x9b\x19\xde\x3b\xaa\x9a\xb0\x2e\x85\xd4\x18\xc4\xac\xb3\x23\xbd\xb0\xce\xd6\xc4\xe5\x87\x7b\x1b\xef\x36\x55\xec\x4d\xe4\x54\x8b\x5b\xb9\x11\xd7\x56\xba\xb0\xd2\x43\x66\x50\x57\xfe\x87\x80\x6a\xe8\x18\xed\xb3\xb6\xd7\x66\x4c\x36\x1a\xfd\xad\xd0\xeb\x37\x9b\x86\x60\x43\xa6\xfc\x7e\x30\x9f\x1f\xd1\x98\xe9\x3c\x34\x66\xeb\xce\x4f\xf5\xc4\x75\x7e\xbe\x79\xe2\x82\x90\xa9\xc7\x3d\x95\x60\xd1\x29\x1b\xfb\x99\x08\x9c\xa1\x3b\x9f\xfb\x47\xf4\x88\x1e\x05\x74\xc6\x26\x98\x16\x57\x69\xc0\x6f\x6d\xc6\xa6\x7e\x3b\x40\x13\x44\x9b\xb1\x99\x09\xbb\x22\xd5\x7c\xe8\x49\xf6\x31\x32\x10\x1d\x48\xed\xb5\xbb\x43\xee\x40\x84\x76\xda\x2e\x45\x70\x2b\x63\x96\x67\xb8\xf3\x79\x51\x6c\x03\x72\x0d\x20\x06\x4d\x16\xa4\x53\x48\x71\xef\xae\x07\x51\xac\x01\x56\x96\xec\x6d\x0d\xe6\xc7\x3a\x9b\xf1\x2d\xd1\x5b\xeb\x74\xf9\xb6\xe8\x75\xba\x6d\xeb\x5a\x09\x8e\x79\x31\x2a\x82\xb5\xa9\x64\x6d\x4f\x6e\x01\xdf\x7b\xcd\xa6\x74\x05\x7b\xda\x79\x22\x9a\xdc\xe7\x1a\x94\x3e\x2a\xfe\xc5\x9e\x6d\xbc\x7a\xf6\xea\xc5\xcb\x8d\x57\x2f\xac\x2d\x31\x14\xff\xa5\x38\xdb\xe8\x3c\x7b\xf9\x6c\xf3\xe9\x8b\x67\x9b\xc5\x7e\x6a\xde\xae\xe4\xf2\x81\xbd\xa5\xe5\xd6\x96\xb6\xcd\x40\xcd\x40\x75\xa2\x17\xf1\xae\xa5\x62\x1c\xda\x5c\x59\x72\x8b\x91\x49\x3f\xd7\x72\x17\x9f\x7b\x32\xa9\x20\x88\x3f\xd4\x81\xe3\xda\xc2\x6d\xc7\x96\xef\x49\x35\xaf\x2c\x7d\xdb\x54\xee\xf8\x6b\x8e\xfb\xd3\xff\x19\xfc\xbe\x6b\xf6\x9e\xb4\x1e\xff\xfc\xf7\x9c\x76\xff\xda\x5a\xfd\xf9\x13\xdb\xdb\x15\x25\x16\x37\xed\xcd\xf5\x3e\x7d\x23\xb8\xdb\xbd\xe8\xd7\x85\x3e\x28\xac\x27\xba\xbf\x77\x33\x71\x06\x9c\x37\x1d\xd1\x93\x8a\x37\x45\x73\x4f\xf0\xee\x91\xdb\x8c\x38\xa7\x87\x7d\xd7\x46\x5e\xc0\xca\x50\xd0\xb5\xa9\xcb\x0e\x54\x44\x3c\xaa\xeb\x2c\x46\x5f\x0b\xcc\x10\x1c\x47\x46\xed\xa5\x9f\x23\x76\x1c\x81\x40\xe8\xd5\xea\xae\x48\x63\x72\x71\xca\x62\xfa\x5d\x77\x11\x50\x32\x23\x04\x64\xaf\xdd\x6d\x6f\xcb\x5e\x21\x38\xa0\xc1\xa6\x74\xbb\x12\x26\x01\xda\x0d\x0a\x99\x9b\x44\x8e\x70\x1b\x8d\x0e\x63\x02\x58\x3b\x17\x7e\x54\xba\xdd\xb5\x0e\x5a\xf2\x0a\xce\x92\xcd\x26\xec\x7d\x24\xac\xc6\x1c\xd4\x4b\x19\x30\xc6\x44\x51\x8f\xf4\x0a\x09\x7a\x47\x77\x15\x87\x9e\x9c\xff\xb1\x27\xe7\x55\x4f\x0a\x9c\x0d\x59\xba\x7f\xee\x58\x01\xe4\xb5\xb7\x65\xa3\xe1\x48\xb6\xd0\x47\xf7\xbf\x77\xf1\x7c\xb1\x8b\xed\x2d\x26\x3d\xb9\xb6\xf6\x4f\x3b\xf8\x03\xba\xf7\x55\xdc\xef\x9e\x49\xfe\xd3\x08\x95\xc6\x51\xf6\x88\xa3\x50\x64\x88\x6b\xcf\x18\x35\x8f\xdc\x2e\xa7\x21\x6b\x7b\xe1\x96\xf2\xc2\x66\xd3\x0d\x01\x1b\xdd\x68\x08\xa8\x53\x52\xed\x87\x01\x0d\x29\xb7\x79\xeb\x24\xba\x5f\xf7\x43\x55\x2b\xa6\xd6\x3a\xd0\x5d\xe5\xad\xad\x29\x57\x2d\xd6\xae\x02\xaa\xa0\x76\x64\xcc\x53\xe4\xc7\xc9\x92\x6e\x56\xa3\x38\xf9\xa7\xbd\xcd\x31\xf2\x03\xe8\x1e\xed\xdf\x47\x6d\xc8\xda\xde\x70\x4b\x79\x43\xc3\x67\x43\x40\xad\x6f\x26\x7d\xcc\xfa\xfe\x30\xf0\x72\x2c\x63\x3a\xa4\xa8\xa3\x6a\x3f\x6c\x36\x03\x16\x97\xb2\x54\xdf\xd1\x33\xc0\xb9\x35\xe2\x93\x87\x71\x86\xdc\xff\x11\xce\x7d\xd0\x51\x68\x78\x1f\x65\x58\xca\xfa\x5b\x0a\x17\xb1\x3e\xe0\x1b\x22\x56\xfd\x80\xe5\xa8\x86\x7e\x3f\xa0\x7d\xca\x2b\xcd\x4d\xdf\xd1\x2f\x88\x62\xaa\xd5\x4c\xea\x05\x2c\xa9\x72\x7f\x83\x12\x20\xd8\x37\x47\x50\x55\x15\x2b\x0b\x3c\x8c\x38\x94\x05\xb4\x35\x93\xde\x0f\xc7\xd2\x5b\x25\xed\xbb\xbf\xb5\x41\x49\x51\x4d\x25\x62\x74\x67\xa3\xf4\x15\x47\xfa\xab\x0a\x7a\x8f\x1e\x1e\xea\xaf\x7f\x16\x3d\xff\x9d\xf9\x6c\xbe\x06\xe5\xf9\x01\xd6\xce\x27\xdc\x6a\x3b\x47\x70\xb5\x73\x47\xcf\x11\xc1\xbe\xfe\x13\x2b\xf6\xf5\xff\x7f\xf0\x5b\x7d\x08\xc1\x62\xc3\xbd\xda\xb6\x66\xe3\x6b\xc5\x6d\x2d\xb0\x5d\x1f\x0b\x4e\x35\x0d\xdd\xdf\x58\xa3\x59\xc5\xa8\x49\x6a\x34\x9a\x4d\x79\x47\xf3\x95\xcd\xbb\xaf\x1c\x7c\x2b\x67\xb9\x60\xdf\x8b\x70\xb9\x14\x6f\x8b\x1e\xc8\xc7\x6e\xd1\x27\x50\xbe\x85\xdb\xe5\xbe\x08\x2c\x8d\xee\xfb\xff\x40\x52\xfc\xcf\x06\x6b\x25\xac\xa4\x63\x75\x73\xd2\xd6\x87\xbd\xac\xfb\xbb\x6a\xd1\x93\xf7\x5a\x44\x49\xac\xd6\x58\x2e\x9e\x94\x91\xc6\x28\xa1\x64\xde\x6e\x4e\x31\x59\x88\x29\x58\x16\x94\x87\xca\xdb\x4a\x76\x27\xd9\x5a\xe7\xae\x24\x88\xbc\x4f\x10\x09\x04\x91\x81\x75\x73\x73\xc1\xd2\xb2\xc5\x3e\x9b\x14\xeb\xe6\xe6\x85\xb5\x70\xa3\x29\xe6\x83\x55\x81\xb8\xc8\x0d\x4a\xab\x78\x30\xe0\x56\x4a\x59\x6e\x91\x69\x6f\x31\xe1\x89\xb5\x35\x37\xb7\xfe\xc1\x80\x78\x78\x4d\xd1\xb6\xe5\xc8\x8b\x62\x5c\xd4\x05\xda\xc3\xda\x80\x43\x35\x6e\xfa\xc2\x66\xa9\x1c\x47\xaa\x3c\x47\x31\x58\xb9\xdc\x46\xe3\x38\xf2\xe3\x82\xfd\xa5\x65\x56\xb5\x8f\xb7\xec\x9e\x1c\x47\xfe\xae\x30\x56\xb4\xe3\x68\xa9\x1d\xbc\x7f\x51\x37\x2f\xa1\xf6\xbc\x55\xdb\x0e\xc0\x3e\x08\x36\x31\x6d\x4f\x6d\x09\x4f\x35\x9b\x2e\x1e\xde\x71\x5f\x05\x15\x03\x9b\x80\x6f\x11\x2d\xba\x58\xdc\x57\x74\x40\xc7\xb0\xec\xea\xa8\x6b\x14\xdc\x52\xa6\xcb\x80\x6a\xc0\x62\x18\x39\x0a\xb6\xd0\x9a\xc5\x10\x72\x1b\x0d\x73\x0e\xf6\xcb\x9c\x83\x29\x7a\x2a\xb8\xeb\xf2\xc2\x6e\xcc\xa9\xaa\x8c\xb8\xba\x1c\xa2\xd0\x70\x7e\x9f\xe1\xd6\xc4\x2c\x3e\x7d\x5c\x7c\xb8\x1f\x36\x87\x01\x53\xb0\xe4\x60\x39\xa8\x0a\x36\xa4\xd6\x09\xe9\x45\x25\x73\x2b\x8a\xc6\xba\x68\xf1\xe2\xa2\x66\xe4\xb6\xc7\xf2\xe2\x62\x41\x72\x6d\x6c\x33\xbb\xef\xbd\xe3\xa8\xb4\x7f\x52\xe1\x76\x6b\x51\x10\x6c\x95\x1d\xcc\x68\xc5\x15\xcf\xfd\xbe\xa3\x66\x8f\x06\x03\x82\x63\x56\xac\x08\xdc\x57\xcd\x26\xac\xbc\xe3\xc8\xd1\x6e\x2f\x1a\x34\x33\x08\x74\x9d\xdc\x48\xad\xdd\x7c\xbb\xde\x84\xdd\xbf\x45\x4c\x41\x43\x20\xb5\xf0\xc3\x80\xad\x82\x8a\x25\x61\xc5\xd5\xee\x1d\xf2\xb0\x8d\xcd\x70\xb1\x5f\x7b\x28\x08\xe5\x7c\x1e\x5f\xd0\xd5\x4e\x6d\x52\xbd\xbd\x77\x30\xb3\x97\xa7\xac\xb6\x69\x31\xc9\x2d\xf8\x22\x57\x52\x05\x9a\x76\x35\x84\xa0\x48\xe0\x30\x0e\xbd\x70\xab\xef\x15\xda\x42\xd8\xec\x6f\x6f\x77\xe8\xd8\x1b\x33\xd9\x43\xc9\xa1\x29\xf7\xe3\x80\xc6\x94\xbb\x5d\xe1\x28\x8c\xb9\x5e\x7b\x6b\xdc\x0b\x59\xdc\xec\x74\x9d\x3e\x8b\xe9\x90\xad\x8e\x4b\x5d\x62\xd8\x0b\xbb\xff\x9f\xd0\x32\x63\x5e\x14\xd6\x05\xa9\x03\x47\x40\xb7\xec\x61\x1d\xdf\x63\xea\xb6\xad\x38\xa3\x32\xf9\x1b\xbd\x28\xba\x92\xa2\x2f\x82\x91\x45\x9e\xe1\x72\xac\xcf\xc3\x36\xec\x75\xab\xa4\x8f\x72\xb8\x9f\xa8\x80\x0a\xf8\xeb\xce\xe7\xdc\x9f\xc8\x60\x4d\xc0\xdf\x3b\x73\xe0\xbe\xac\x41\xf8\x03\x05\xac\xa7\x0f\xec\x9d\xd4\x92\x16\x2b\x7e\x16\x0e\x6f\xdd\x50\xd5\xba\xa9\xed\xc4\x92\x8b\xd2\x84\xba\x8a\x67\x9d\xf3\x39\xfc\x0a\x44\xe9\x43\xb0\x8a\x1a\x76\xb5\x3e\xda\x67\xf6\x1f\x02\xaa\xd8\x7b\xc5\xa9\x66\x6d\x4f\x6f\x49\x4f\x9b\x95\x65\x15\xfa\xa6\xa1\x6b\x3a\x58\xb6\xb4\x56\x16\xef\x8b\xfa\xf6\x18\xf7\xc5\xf9\x26\xd9\x02\x7b\xaf\x16\xee\xe3\x83\x12\x6f\x8d\xd4\x7e\x91\x5f\x21\xf7\xfb\xce\x9e\x34\xaa\x10\x3e\x38\x6f\x60\xd6\xd8\x8b\x8f\xc6\x95\xc7\x93\x91\x83\xb6\x58\xe9\x87\xc1\x7c\x8e\x3f\xcc\x0f\x5c\x17\x44\x85\x5e\xb6\xb9\x9f\x58\xf2\xd4\x37\xd2\x74\xbb\xf3\xc4\xe1\x6b\xed\xa2\xd3\x7e\xe0\x2d\x70\x8f\x27\x9b\xac\xe3\x0a\xa8\xb3\x5a\xeb\xed\x37\x50\xee\x31\x9d\x1f\x2c\x91\xc7\x4b\xb4\x89\xab\x8b\xba\xe8\xf0\x83\xc2\x88\xf0\x0f\xc4\xb0\x87\x12\xb8\x67\x9d\xcc\x5d\x5d\x54\xa7\x81\xca\x75\xbb\x22\x97\x98\x4b\x8e\xdf\xaf\xcb\x25\xb3\x76\x92\x7a\x8f\x04\x25\x4e\x06\x8b\x4a\x61\xf1\x83\x9c\x83\x6a\xa8\xea\x02\xd5\xd0\x42\x55\x23\x9d\xe5\x36\x0b\xab\x26\x56\x84\xa7\x00\xbb\xd0\x97\x81\x7b\x57\x20\x6a\x1f\x12\xd9\xeb\xe4\x92\x23\x56\x73\xcc\xf8\x41\x71\x76\x73\xe1\xac\xb6\x5d\x7a\x7b\x01\x21\xe8\xbb\x5b\xd5\xf2\xcb\xae\xc5\x32\x37\x7e\xb4\x26\xa0\x27\x60\xde\xb7\x97\x1c\x81\xde\x3f\xde\x7c\xe0\x60\x0c\x14\x05\x7b\x61\xfa\xa4\xb8\xf3\x30\xf2\xab\x51\x54\xd5\x68\x9f\x11\x57\x78\xef\x2c\x8a\xf1\x41\x6b\x14\x8d\x1d\xb3\xc7\x46\xb5\xc3\x16\xcc\xbb\x35\xc5\x84\xff\x4b\x54\x0a\xa9\x7c\x22\x7a\xb2\x29\xba\x16\xd3\xbd\x5e\xac\x9b\x37\xe5\x13\x47\xac\xd9\x66\xca\x37\x35\xba\x3d\x19\xb4\x8e\xf7\xd7\x3b\x9b\xd6\xf4\xde\xab\x4b\x01\xf1\x64\xd0\x92\xc9\xd4\xc1\x72\xf6\x12\x73\x1f\x6c\x1a\x8d\xef\x81\xbd\xbb\xbf\x90\xef\x5e\x38\x9d\xcd\xf6\x93\x81\x7f\xa3\x02\x47\xad\x09\x2a\xd7\xb8\xbb\x0e\x88\xd0\xa7\x2f\x6c\xad\xed\xfd\xa2\x6a\x88\x36\x17\x0e\xe2\xc8\x52\x82\xf7\x6d\xa8\x2f\x91\x35\x76\x4b\xad\x5f\x1c\x76\x01\x76\x2b\x1f\xec\xf2\xfb\x17\xcb\x4e\xdd\xd7\xed\x99\x60\xb1\x9a\x5d\x72\xcc\xd1\x99\x04\xd0\xfc\x57\xc7\x9a\x8e\x9f\x96\x00\xad\x86\xf0\x6b\x96\xa6\x83\x0b\x46\x4e\xb3\x64\xb2\x9f\xe9\xd4\x38\xbc\x99\xc3\x18\x11\xb5\x6a\xc9\xdd\x91\xb3\x00\x67\x4d\x86\xc3\x0b\xc7\xfd\x7d\xf7\x86\x3b\x87\x17\xfe\xc7\x80\x5a\x7c\x69\x8e\xa2\x0f\x2e\xbc\x3b\xd7\xc3\xcc\x16\xcf\x96\x78\x5b\x01\xc3\x5a\x4c\x7a\x7c\xb1\xcc\x79\xea\xf0\xa2\x3a\x74\x8b\xc2\x42\xb5\xe1\x50\x23\x3b\xe8\x97\x79\x2d\x9e\x39\xab\x1d\xb4\x12\xe1\x0a\x56\x08\xe5\x36\x95\xe8\xc3\x75\x78\xe1\xbd\xe1\xb0\x77\xaf\xb0\x40\x1b\x91\x67\x0e\x0e\xb7\x71\x29\x73\x4b\xc4\x21\x0d\x2d\x46\x65\x03\xbe\x68\x36\x03\x4f\x34\x9b\x77\x77\xd6\x46\xae\x3c\x74\x3f\x4c\xb2\x95\x68\x34\x31\x97\xbe\xb5\x22\xae\x67\x0d\xc7\xe7\x0b\xcb\xf9\xc4\xa0\x97\xa5\xb7\xbf\x7f\x14\xca\x9f\xe4\x99\x1c\x38\x0a\xb3\xd5\x2a\x63\x07\x17\x39\x26\xca\xc3\xb3\xfd\xdf\x9c\x21\x71\x3c\x28\x95\xa3\x9d\x6f\xd9\xb8\x7f\x29\x03\xc7\x2d\xf4\x2b\x5e\x54\xa6\xb1\x32\x6d\x57\xa6\xbd\x3b\x4b\xa6\x9c\x94\x38\x19\x01\xdc\xa6\x9a\xc1\xfe\x50\xce\xe7\x1d\xaf\x53\x13\xc3\xc6\xd7\x8f\x6a\x26\xdc\xdc\xda\x1e\x96\xfe\x33\xe6\x4e\xfe\xca\x34\xd3\x93\xf2\xee\xcd\xca\x68\x36\xcd\xd0\xed\x40\xe8\x95\x5f\x3a\x4d\xf2\xf3\xf0\xbe\x35\x12\x7d\x7b\x24\x70\x13\x12\x36\x1a\x6a\x9b\xe9\xf9\xbc\xbd\x0d\xc1\x2d\xa6\xab\xe1\xc0\x07\xd0\x60\xfb\xd8\x64\x61\x75\xda\x53\x8e\x83\xe5\x7a\x74\x50\x29\xa1\xa6\x5f\x86\x70\xdc\x6a\x9a\xd3\x05\xb7\x14\xce\x94\xa1\x62\x75\x10\x67\x68\x5b\x50\x55\x59\x76\x15\xfb\x84\xf2\xd0\xd6\xbb\x8e\xad\xdd\x81\x5b\x72\x1d\x55\xc6\xcf\xe2\x0f\xcc\x67\x4c\xa0\xaa\xc0\x45\xe4\xb8\xe4\xa8\xdf\xc1\x98\x17\xfa\xa2\xc9\xca\x87\xd8\xb0\x93\xb4\x87\x58\x7a\xa6\xb9\xbb\x1a\x93\x56\xf6\xea\xd2\x27\x26\xb6\x2d\xa9\xfd\x9c\x44\x86\x54\xa5\x32\xf3\xb9\xae\x45\xba\xbf\x71\x59\xb5\x6d\x4c\xf6\x6b\x54\xa6\x6a\x0b\x59\xac\xad\x86\x70\x7e\x48\xbf\x5a\xe1\x5b\xae\x2c\x06\xe9\x4a\x16\x9c\x5e\xdc\xb3\x69\x98\xe9\x58\xb2\x7d\x61\xd3\x2c\x8b\x7c\x5d\x60\xe8\xdf\x77\x54\xa3\xde\xa1\x4d\x49\xe5\xeb\xd2\x82\x87\xaa\xa9\xa6\x7c\xd9\x8e\xfa\x7c\x51\xfd\x32\xc5\x01\x73\xdb\xbe\x03\x1b\x57\xb9\xdc\xae\x55\x59\x77\x1e\xea\x05\x28\x4a\x8b\x3d\xf9\x93\x92\xfc\xd9\x66\xb4\x36\x95\x66\x6f\x90\x53\xa4\xd9\x5c\x32\x1e\xdf\xeb\xaa\xe0\xa2\x2c\xb3\x16\x94\x1f\x35\x15\xd6\xec\x35\x8d\xd5\xa6\xa0\x38\xee\x0e\xed\xfd\xbf\xfd\x06\xd6\xf0\x1f\x95\x56\xcb\x7c\x36\xc5\xf0\x21\x4a\x1b\x2b\xbd\xf8\x13\x6d\xe5\xf0\xc1\x0e\x2e\x25\xa1\xca\x1b\x13\xf9\x41\x80\x65\xba\xb1\xbc\x92\x87\x96\xa0\xce\xeb\x2c\x24\xdd\xdf\x67\x03\xbd\x92\x5f\xe1\xe3\x71\xaa\xb9\xba\x5d\x29\xde\x47\x59\xc9\x06\x7a\x65\xa8\x6f\x57\xc8\xdf\x4d\xd1\x9c\x69\xd7\x83\x7a\x99\x35\xf5\xc2\xe1\x82\x96\x64\x6a\xef\x01\x5c\x77\x11\xb8\x6f\x11\x15\xb6\xff\xb5\xe1\x2e\xb6\x80\x4b\x06\x63\x30\x5c\xf4\x53\x2d\x3c\x93\xd1\x45\x33\xed\x9b\xe5\xd5\xdf\x95\x41\xc5\x0b\xbb\x28\x6d\x72\xbf\x34\x00\xea\xf9\x41\x77\x69\xab\x50\x3d\xe8\xd7\x55\xcb\x4b\x64\x62\xf4\x47\xdc\xa1\x7c\xc0\x64\x55\x03\x00\x9e\xa0\x1b\x68\xf5\x6e\xcf\x4a\xfd\xf1\x9d\x95\x68\x7a\x5c\x3c\xe9\x71\x14\xae\x2c\x7b\x57\x68\x25\x4b\x3e\x25\x92\xc7\xda\x1c\x4b\xae\x14\x2f\x11\xad\x14\xcf\xbc\xb4\xf0\xcd\x20\x87\xac\xd8\x0a\xcc\xc5\x22\xff\x51\x45\x35\xeb\x2c\xdd\x84\xa8\xfa\x06\xa4\xec\x94\x32\x7b\x72\x05\x03\x62\x59\x30\xbc\x70\xeb\x44\xe1\xbe\x33\x84\x0d\x1b\x83\x48\x18\xd0\x05\x93\x96\x44\x9f\x9c\xa2\xbc\x7b\x67\x91\xf1\xb4\xe6\x08\x66\xa3\x13\x85\x4e\x07\xcf\x68\x87\x96\xda\xe9\xb7\x83\xca\xdf\x42\xf1\x25\xfa\x24\xfa\xf0\x03\x3b\xfc\x6b\xa3\x64\xe9\x54\x70\xd7\x5b\xb2\x61\x86\x6d\x26\xdb\x70\xa5\x5f\x95\x56\x41\x60\xa1\xa1\x9a\x9d\x60\xc9\xfa\x32\x1c\xfe\x6f\x71\x1e\x0e\x1f\x42\xf9\x01\xf4\x9a\xf7\xb0\x2b\xa5\xc4\x8a\xb4\x16\x92\x38\x1f\x63\xf4\xe9\xeb\x03\x4b\x7a\x18\x1c\x6b\x58\xe2\x30\x78\x74\x8b\x57\x29\x5a\x67\x82\xb5\x73\x17\xfc\x7b\xc8\x6f\xe5\x8b\xed\x43\xc4\x33\x88\x49\x43\x37\xe3\x3f\xa8\x33\xc7\x46\x90\xd6\xa9\x97\x3b\x6d\xf2\x46\x03\xa1\x2f\xde\xc0\xc2\x7a\xce\xe2\xa1\xff\x31\xf0\xce\x5b\x4a\x3e\xa0\x2f\xb7\xce\xc4\x9d\x77\xde\xfa\xc2\xed\xfc\xd1\x10\x37\x7f\x15\x3a\x1c\x64\x31\x74\x47\x6c\xe5\xbd\x85\x8e\x08\xb4\x20\xbd\x36\x3b\xc5\x56\x5f\xf8\x45\x9e\x08\x02\x4b\xbf\xf1\xce\x5b\x07\xc3\xa5\xd5\xdb\x78\x8c\xb5\xbf\x2b\x60\x6d\xf7\xce\x5b\x22\x64\xb6\x9e\x50\xac\xe9\xc3\xa2\x21\x3c\xd9\x3c\x6f\x3d\x3e\xab\x81\x59\xbe\x0e\xf7\xf1\xcc\x37\x9f\x15\x86\x30\x0c\x56\x8d\x30\x75\x8a\x6e\xc0\x5a\x51\xca\xfe\xf6\x5d\xb9\x56\x78\x8f\x1e\x73\xe7\x7c\xc1\xf4\x06\x7b\x88\x41\x34\x65\x76\x11\x2f\x4f\x6c\x9d\x89\x55\xc6\x5b\x4a\x3a\xd6\x6a\x6c\x10\x11\xf3\xf9\x99\xe2\xde\x3d\x4a\x2b\x34\x5b\xa8\x12\x51\x1d\x94\x16\x30\x99\x23\xab\x33\x47\xb9\x94\xe7\x81\x65\xeb\xbc\x25\x93\xce\x96\xda\xb9\xbe\xd4\xfa\x61\x6f\x4f\x0b\x9e\x00\x09\x5e\x87\xb1\x38\x7e\x28\x9c\x1c\x3f\xda\x76\xef\x33\xfd\x9d\xeb\xcd\xea\x84\x5a\x3e\x86\xa5\xb7\x73\x41\x78\x1e\xd0\xbc\x92\xb5\x35\x9a\x57\xdb\x6c\xd2\x6a\x28\xb7\x37\x9e\xe4\x00\x8d\x46\x41\x3a\xba\xda\x76\xbb\xab\x9d\x3b\xd7\x72\xf2\x1a\x0d\x8b\xad\x5f\x3e\x04\x58\xfa\xbe\x3b\x8c\xd8\xca\xb3\xbc\xd2\x82\x95\x73\xc7\x78\xe8\x70\xc0\x52\xa1\x48\x85\x44\xa3\x77\xb8\xb8\x65\x1b\x0a\x4c\x83\xbd\xd6\xc3\x8d\x68\x63\x6a\x17\xf5\x76\xca\x26\xe8\x78\xe8\x68\x8a\x67\x14\x56\xfd\x78\xba\xce\x3a\x2e\x05\x35\xcc\x6a\xe6\xee\x1c\xc6\x9b\x2d\x35\xfb\xd6\x89\x5a\x11\xb3\x8b\x53\x7b\x7a\xaf\x58\x0d\x7e\x3e\x2f\x58\xd5\xa2\x34\xea\xe5\xd5\x08\xe4\x63\x8c\x95\x32\xac\xf4\xe2\x4d\x6d\xea\x19\x43\x55\x6d\x9f\x1d\x0f\x7b\x8e\x60\xbc\x75\x30\x74\x5c\xca\x19\x6f\x7d\xe1\x8e\xeb\x76\x21\x0d\x06\x87\x72\x86\x8a\xa2\xbb\x60\xcd\x14\x85\x45\xb1\x14\x7a\x30\x1f\x51\x3d\x76\xef\xbc\x47\xe7\xad\xfc\x4d\xc4\x85\x2e\x55\x95\x60\x39\x6c\x34\x97\xa1\x0b\xc6\x5a\x69\x8c\xb5\xe5\x54\x42\xdd\xca\x9c\x61\x50\x8d\x5d\x76\xef\xee\xbc\xfd\xe5\x13\x04\xf6\x60\x71\xce\x77\x77\xae\x77\x6e\x1e\x44\x9d\x24\x53\xcd\x16\xf6\x62\x46\x6a\x1a\xf8\xe5\x92\xf3\xbe\x44\xe2\xd8\xdf\x4a\x0a\x51\x69\xb9\x37\x7a\xe7\x35\xa3\x07\xb7\xc4\x68\xc5\xd1\xc5\xac\xcc\xe5\x47\x5f\x50\xcd\xf2\x51\xcc\xfb\x4c\x1f\xdc\x34\x5b\x3b\x48\xbd\xca\xc2\xd6\xd1\x6d\xb5\x29\x07\x55\x75\xc4\x27\xa0\x48\xad\xc8\x01\xec\xd0\xd5\xca\x34\x1a\x4b\x8d\x8a\x6a\x84\xd6\x9c\x24\x5d\xb9\x86\x6c\x7c\x30\x4e\x11\xa3\x1c\x6c\x1b\x3f\xc5\xda\xc6\xbb\xcf\xa4\x31\x7e\x14\x7d\xeb\xf5\xbb\xca\xef\x07\x77\xf6\x06\xdc\x9a\xcc\xe3\x61\x8d\xdb\x6b\x3a\x0f\x1e\xc3\x56\xd2\xee\x4b\xcd\x7d\xb1\xb4\xed\x28\xc9\xd8\x41\xbf\x67\x24\x71\x37\x3f\x91\x28\xce\x7c\x3f\x04\x5d\xb3\x1d\xb2\xce\x2f\x0a\xf1\x51\xd6\xf0\x85\xd7\xad\x43\xc0\xcc\xf7\x3c\x88\x8a\x53\x6a\xcb\x68\xb4\x60\xa7\xce\xcf\x37\x8a\xb5\xbd\x69\xac\xf6\xb0\x15\xba\xaf\x04\xe3\xf4\xb0\x4e\x06\xee\xe1\x74\x30\xac\xe3\x04\x4c\xef\xd5\x91\x5e\x05\x80\x72\x7f\x9e\xf7\xd9\x3a\x5f\xe0\xe6\xd0\xf6\xfe\x81\x42\xf3\xfe\x79\x42\xd1\x0e\xe0\x61\x6b\x96\x97\xf6\x1e\xa7\xbc\x86\xf6\x55\xe0\x35\x34\x17\x43\xe8\x46\x55\x9e\xae\xd6\x70\x29\x6c\x56\x26\xb7\x52\x7f\xb0\xbb\x54\x33\x1c\x0a\x1a\x32\x6d\x8e\x61\xdb\x5e\xe1\x0e\x5a\xba\x18\xf4\x03\xaa\x1a\x0d\x60\xa0\xfa\xf6\xbd\x76\x43\xab\xc4\x6b\x92\xe3\x55\x0e\xd9\xa4\x40\x6f\x11\xb3\x42\xfb\x2d\xbd\x28\x8a\xe5\x79\x92\xa3\x64\x50\xeb\xe3\xb1\x01\x3a\x76\x83\x56\xff\xfb\xae\xa4\xa6\x7d\x5a\x5c\x7a\xfa\x0c\x03\xaa\xe1\x0f\xba\x26\x29\x1f\xc2\x01\x83\xe4\x5c\x81\xc3\xad\x2e\x30\xcb\x43\xa5\x4b\xc3\x1c\xf4\x19\x4f\x28\x86\x81\x65\x76\xa8\xc6\xe5\x7c\x29\x01\x5a\x23\x3e\xa9\xb3\xcd\x88\x4f\xfe\x48\x80\xb3\xff\x13\x02\x14\x5d\x5d\x42\x88\x3f\x74\x5c\xf9\xc3\x7a\x91\xb2\xf7\x4b\x0c\x2d\xdf\x96\x8f\x78\x5f\x2f\x8c\x78\x5f\xff\x79\xc4\xcf\xcb\x0e\xff\x0f\xd8\xd1\xb2\xc0\x2c\xb0\xe4\x1f\xfd\x80\xa6\x38\xab\x0b\xd5\xca\x2c\x17\x5e\x5d\x89\x2f\x61\xb3\xe1\x7f\xbd\x40\x59\x5c\x9d\xcc\xcf\xee\xb9\xdb\x15\xe8\x47\xdf\xa6\x1d\xb7\xc9\xef\xce\xd9\xf4\xbf\xee\x07\xfa\x02\xa5\x24\xae\x37\x4a\xd5\x16\x9c\x22\x1f\x57\x29\xb3\x88\xbb\x4b\x94\x01\x6e\xa8\xe4\xd5\xdd\x5c\xf2\x93\x43\x51\x2d\xee\x5c\x29\x27\x5f\xd7\xcf\x5b\x23\xf9\xbf\xa9\xc3\xff\x2c\x82\xa2\x8e\x87\x54\xce\x62\x3d\x05\x50\xc4\xda\x7d\x58\xb9\xf5\xbf\xe3\x16\xc4\xf5\x1e\x50\x90\x0b\x30\xa5\x0c\xd8\xf1\x9f\xdb\x6c\x89\xb0\x6a\xf2\xd1\x79\xeb\xf0\xd7\x7d\xad\x09\x07\x7d\x3a\xf4\x16\x7b\xbc\x70\x52\x5f\x7a\x45\x49\xb3\xcb\xf4\x4f\x64\xe0\x80\x72\x2a\x90\x8e\xf6\x29\xaa\x77\xde\x8a\x46\x4b\x1a\xc2\x62\xc6\x3a\x23\x5a\x23\x69\x5f\x3b\xbe\xbf\x05\x5c\xe8\x08\xac\x77\x7f\xd4\x8a\xa6\x95\x56\xf4\xf8\x4f\x44\x01\xde\x62\xcc\xac\xd3\x39\x9b\xdf\x7c\x31\x46\xe0\xf3\xd6\xcd\x97\x25\x68\x1b\xd8\x72\x4b\x05\x15\x6c\x8b\x6a\x52\xad\xd6\x8f\x77\xa6\x43\xb7\xd1\x78\xbe\x65\x2e\x76\xe4\x88\x59\x8e\x95\x20\x23\x50\x0d\x2a\xdb\x11\x25\x69\xbd\xba\xda\xa0\x80\xc4\x38\x99\x30\xe4\x08\xb7\x5b\xe4\xc0\xce\x13\x33\x5a\x8f\xcf\x20\x3d\x36\xbe\x46\x09\x1e\x78\x3f\x8e\x1c\x45\x85\xdb\x15\x43\xfc\xbd\x33\x6a\xeb\x83\x07\x56\x40\x5d\x73\xd6\x64\x8e\xd2\x66\xc3\xc2\x07\xee\xbb\xe2\x4c\x44\xad\x31\xbf\x8a\xfa\xa0\x5e\x01\x09\xbe\xab\x9c\x2e\x3f\x14\x67\xdf\x15\xf7\xaf\x24\x8a\xde\x1f\x90\x3e\x1b\xb2\x1f\x8a\x97\x9e\x6e\x77\xb3\x21\x3b\x32\x95\x5e\x0d\xe9\xf5\x90\xde\x0c\xe9\xe3\xda\x15\xc2\x61\x85\x8a\xdd\xd0\x7c\x8e\xe6\x73\x74\xfc\x1f\xb2\xb7\x91\x33\x1b\x52\x72\x34\xd1\x29\x27\xee\x7c\x5e\xc4\x8f\x4f\x88\x4b\x77\xca\xfc\xb3\x34\x52\x7a\x9c\x55\x10\x1f\x43\x97\xee\x96\xd9\xef\xb4\x1c\x26\xc4\x6d\x34\x56\x31\xc1\x9f\xe8\xc0\x71\x29\xc9\x9f\xd9\x84\x74\xe7\x0f\x15\xb9\x74\x2f\xaf\x69\xb1\x20\xe5\x9a\xb3\xbd\x61\xa3\x91\x97\x3e\x48\x44\x14\x6b\xe2\x52\xa1\x39\x83\x0e\xd2\xb7\x43\x26\x34\x6f\x34\x84\xe6\xad\x49\xcc\xb3\x30\x49\x47\xf3\xf9\x91\x77\x85\x35\xbe\x85\x32\x5c\x12\xd7\xbb\x2e\xe3\xe7\xd1\x98\xb8\xde\x4d\x19\xff\x14\x8d\x67\x37\xc4\xf5\x1e\x2b\xce\x56\x57\xa1\x52\x6c\x0e\x02\x2d\x3e\x99\xe4\x4f\x17\xcd\xe7\x47\x94\x7c\xeb\x74\xf2\xc3\xa9\x77\x43\x36\x1b\x7a\xef\x0c\x66\xef\x86\x94\xec\x8c\x55\x9a\x44\xa0\x18\x5b\x89\xd1\xf1\x20\x19\xeb\xc5\x34\xae\x6c\xb3\xa2\xd4\xbc\x3c\x58\x32\xb7\xd0\x2a\xcd\x99\xfb\xa1\x0e\xba\x66\x55\x34\xee\xd8\xef\x6b\xa6\x16\x53\xea\x88\x0a\x60\x92\x5f\xc3\x46\x43\x44\xad\x04\x46\xb2\x5c\x0e\x59\x91\xd2\xba\x32\xfd\xa0\xa9\x51\x8c\x1d\xb7\xcb\xbd\xdd\x61\x4f\xb0\xf5\xf4\xea\x67\xd7\xf1\xff\xfd\xd3\xf5\x82\xa6\xeb\xfc\x74\xe7\x9e\xbb\xde\xdd\xc1\xac\x9f\xc2\xe9\x75\x0f\x4e\xf7\xf7\xe6\xe9\x95\xeb\x77\x57\x82\x7b\x70\x30\x38\x8e\x60\xeb\xe7\x5a\x7c\x8c\xb2\x9f\xeb\xce\xcf\xd3\xa6\xbb\xee\x7a\x66\x8a\x3a\x9c\x09\xbc\x82\x33\x1b\xba\xa0\x8d\x77\x82\xee\x51\x39\x5b\x77\x4c\x51\x24\x00\x15\xdb\x31\x08\x02\xb7\x57\x5e\x20\xea\xf2\x3b\xd8\xe6\x69\xce\xec\xeb\xbb\xfb\x43\x4b\xe6\x28\xcd\x7d\x7c\x2c\xc0\x04\x58\x7b\x8b\x7d\x88\x9c\xf7\x43\x5a\x3b\xdf\xff\x60\x17\x81\x46\xb5\xe6\xdb\xcc\x5c\x62\x0c\x75\x41\x75\xaa\x35\x67\x21\xb0\xd2\xce\xb0\x87\x38\xcd\xe7\x4e\xa8\xb9\x2f\x40\xc3\x48\xc3\xde\x90\x43\xcd\x9d\xb6\xdb\x7d\xee\xe6\x63\x52\xa1\xf5\xd1\x36\x1c\xde\x30\x69\x88\xdc\x6d\x9b\xad\xf5\x2d\x33\x4f\x9d\x88\x6e\xfb\xee\x9c\x7d\xc4\x55\xfa\x0f\xd2\xf6\x63\xbe\x83\xbf\x31\x7b\xf4\x5b\xd7\x36\xf9\x7c\x1a\x2e\x5a\x7c\x44\x6f\xb5\xdd\x85\x29\xd0\xe3\xad\x1b\xc6\x44\xeb\xa6\xd1\xe0\xad\x5b\x08\xdd\x76\xed\x43\x90\x83\x61\xcd\x53\xa3\x75\xb3\x26\x5a\x37\x54\x31\xde\xba\x5d\x13\xad\xdb\x62\x5c\x06\xfe\x2f\x15\x38\xf2\x89\x6c\xaa\x27\xca\xa2\xe3\x61\xbd\xe5\x1c\xd3\xa2\x9a\xbc\x12\x0b\xfe\xe8\x21\xf8\x66\x0e\xdf\x44\xf8\x74\xd9\x62\x7d\xc3\x06\xfe\xad\xc8\x6d\x8f\x37\x6e\x41\x46\x2b\xf1\xb6\x66\x60\xbc\x73\xbd\xe9\x43\xf5\x64\x4b\xaa\xc9\x1e\xaa\xe5\xd1\xf9\x43\xd5\xec\x2d\xa9\x66\xef\xa1\x6a\xb4\xb8\x67\x4a\xac\x2d\x64\x1f\x87\xbd\xbc\xb6\x26\x0c\x44\x3e\xd0\x10\xbe\x75\xbb\x55\x0e\xbd\x34\xd7\x56\x9c\x22\x5f\xb8\x8b\x2d\x1d\xde\x37\x5a\x9a\xf1\xbd\xcc\x59\x8e\x1b\x74\x6f\x9e\xb0\x3c\x74\xfb\xa4\x3a\x52\xc9\x2b\xa9\x0e\x66\xf3\x31\x9b\xe4\x0b\x29\x77\xbd\x53\x5e\x3e\xae\x50\x9d\x30\xfe\x89\x09\xfd\x34\x60\x4c\xf8\x69\xd0\x68\x70\x7f\x07\xc3\x3b\x01\x30\xe2\x39\x3b\xfe\x6f\xac\x7f\x6c\x58\xdf\x4f\x8d\xad\xd0\xdf\x09\x6a\xcc\x7f\x62\x4f\x65\xe3\x95\x04\xcd\x51\x8e\x80\xe7\x2d\x9e\xea\x87\xf4\x1c\x3f\x0d\x9e\xe4\x55\xde\x3d\xa0\x00\xae\x1a\xc5\x35\x85\xc9\x7f\xe7\x7a\x8b\x8c\x59\xd0\xa4\x62\x42\x3f\x0d\xdc\x8a\x40\x56\xfa\x4e\x70\x6f\x9c\x16\xd9\xb3\xaa\x2d\x5b\x5e\x59\xf6\x70\x5d\x8b\x3c\x5a\xd5\xb5\xb7\xbc\xae\xbd\x87\xeb\x7a\xf4\x0f\x18\xa8\xa8\xbf\xa0\xa3\xc5\x15\x79\xb5\x4f\xe4\x62\xbd\x68\x0b\xd2\x9c\xad\xee\x0c\xe7\xf3\x0f\x43\xe7\x95\x4b\x07\x10\xdd\x1d\x36\x1a\x98\x06\x92\x18\xd3\xe7\x73\x48\xdb\x1f\x3a\xa4\xd3\x7a\xd5\xea\x10\x97\x46\x9a\x33\xc8\x5e\xdd\x1f\x3a\x2a\x74\xe9\x05\xc6\xe7\xf3\x5f\xc3\xf9\x7c\x6f\x68\x9d\xfb\xdb\xec\xc0\x7b\xc0\x40\x67\x43\xe7\x0b\xea\x84\xdd\xa1\xe2\xf3\xb9\x33\x54\x46\x51\x3c\x1b\xda\xd6\x03\xbb\x9c\xb1\x14\x69\xee\x8f\xf0\xd2\x7e\xd7\x72\xd4\x3b\x5f\x3c\x86\xfd\x36\x74\x34\xa7\x8b\x4e\xd8\xdf\x6b\x72\x55\xcc\xe7\xba\x72\xb7\xf4\xbf\xab\xa0\xd1\x90\xfe\x89\x08\x7a\x18\x71\xbe\xe8\x26\x77\xbb\xa6\xa6\x63\x4d\xeb\x57\x0d\x7e\xdc\xaf\xaa\xf0\x09\x31\x35\xe2\xdd\xe0\x5a\x9d\x27\x62\x69\x9d\x7e\x3b\x70\x73\x55\xaf\xb2\x1a\x7c\x1b\x56\xae\x6e\x9c\xa9\xf9\x9c\x7b\x82\x89\x46\x43\xac\xb2\x63\xdd\x13\xe6\xd2\x62\xf7\x08\x9f\x9d\x32\xad\x70\xa8\x1f\xd6\xe9\xf9\x5c\x5a\xa6\x30\xe8\x88\x68\x3a\xb2\xf7\x45\x37\x65\xf7\xc8\x5c\xb8\x93\xb0\xee\xd4\x3e\x18\xf3\xba\x78\xc2\x14\x9f\x11\x7b\x20\xcf\x31\x9b\x75\xb1\x60\x5f\xd0\xac\x6d\xae\x89\x79\x7d\xc6\xfd\xd0\x9c\x8d\x0a\xc6\xfa\xfe\x54\x05\xc6\xbc\xd2\x6c\x06\xac\xef\x7a\x43\xe1\x28\xaa\x2d\xa3\x41\x69\x56\xe5\x50\x52\xa2\xab\xf6\xb1\x36\x38\x5a\xad\x84\x4c\xc3\x1e\xdf\xae\xbd\xef\x7f\x50\x01\x2d\x9e\x6d\xf1\x53\xb3\x47\x68\x34\x1e\x47\x0e\xc6\x9c\xf5\x9f\xd3\xe6\xba\x6b\xce\x62\xff\x09\x06\x15\xed\x1f\xe7\x43\x7b\x7a\xe1\x08\x6b\x83\x82\xd7\xbd\x18\x7b\x3b\xe8\x71\xe1\x70\xff\x26\x80\xdd\x85\x62\xec\x4c\xf0\x5e\xfe\x09\x2a\x88\x4a\xc9\x7b\xbc\x35\xc8\x46\xf1\xdb\x24\x65\xa2\x8b\x0e\x13\x43\x0d\x3a\xe2\x75\xe0\x0c\x35\x3a\x86\x08\xb7\x7b\x0b\xfb\x93\xcb\xbe\x3b\x9f\x63\xe8\x87\x40\x2b\xe8\x75\x60\x76\x2d\x1c\xdf\x5a\xcb\xef\xd2\x0f\x41\xb5\x92\x3a\x8e\x8b\x57\xd6\x09\x44\x8e\x4d\x84\x50\x88\x4c\x27\x5c\x96\x39\xa7\x26\x42\xa8\x4c\x20\x63\xdc\x25\x32\x81\xc4\x31\xa1\x61\xca\x47\xda\xbc\x7c\xdb\x25\x18\xd9\x4d\xcc\xb3\x76\xe6\xc5\xce\xee\x49\x9f\x8e\xf8\x8d\xf9\xec\x46\x97\x8c\xf8\xcd\xa7\xfc\x0b\x1c\x69\x12\xeb\xee\xd5\x80\xa6\xc9\xb5\xa9\x33\x4d\xae\x4d\x9d\x30\x08\xdd\xc3\x01\x9d\x4d\xf5\x88\x4f\xba\x64\x36\xd5\x07\x7c\x42\xe8\x15\x8f\xa3\xfe\xb8\x4b\xae\x76\xe0\x97\x50\x7c\x64\xaf\xfb\x75\x60\x29\x89\xf8\x82\x0e\x3e\x5c\x07\xea\x34\xfc\x16\x4a\x1c\xf7\xfb\x32\xe8\x72\xff\xac\x52\xb3\xf3\x65\x87\xfb\x1f\x15\x2c\x24\x8f\x55\x60\xbf\xb0\xa2\x6d\x93\xf3\xde\x70\x3e\xc7\xba\x56\x4d\x5d\x67\x2a\x80\x04\x53\x65\x5f\xda\xd7\xac\x44\x5c\x13\x4d\xf8\xc1\x33\xfc\x92\xc8\x58\x25\xd7\x50\x68\x57\x05\x5d\x61\xc9\x1a\x19\x2f\xc8\x9a\x91\xe6\x28\x6c\x96\xdc\xcb\x81\x2c\x5b\x4c\xf8\xed\x80\x2a\x26\xfc\x0e\xee\x16\x57\xfb\xa0\xc5\xe2\x3b\x02\xfe\x6b\xc0\x50\xf9\xef\x03\xbc\x27\xe5\x0f\x42\x2a\x03\x0f\x93\x41\x80\xbc\x0e\x1c\xc9\x39\xdd\x8b\x0c\xa4\x4b\x67\x66\x92\x60\x81\xdf\x98\xaf\x8a\xfc\xf7\x79\x76\x71\xf6\xe5\x5d\x98\x03\x2e\x2f\x3f\xe5\xd3\xfe\xfb\xc0\x53\x4c\xdf\x61\xb1\x51\x88\x8f\x05\xe2\xf3\x08\x47\xee\x9d\x64\x1c\xdf\xd6\x90\xae\x07\x78\x99\xad\xf4\x48\xe0\xe3\x56\xdd\xa1\x15\xc3\x02\x53\xed\xba\xdd\xc7\x43\xcc\x75\xbd\x0d\x3c\x35\x6a\x34\xc6\xd8\x69\x49\x85\xf5\x12\x90\xe5\x4d\x60\xb2\x73\xd9\x56\xb9\xe8\xe0\xf3\x16\x8d\x86\xf0\x2f\x03\x68\x56\xc2\x6c\x78\x63\xee\x81\x81\x08\x4f\x52\xe7\xde\x29\x52\x88\xa7\x48\x5e\x6c\xbc\xfb\x57\x55\xec\x84\x6e\xef\x87\x93\x68\x0e\x81\xfe\x85\x13\xba\xdd\x90\x6a\xb7\xab\x9d\xb0\x66\x2b\xd7\xf6\x98\x6b\xd3\x63\xdb\xc4\x17\xc6\xb9\x91\x1f\x1f\x98\x18\x2a\xeb\x92\x44\xfe\x16\x07\xf7\xcf\x64\x90\xbf\xc7\xf1\x8e\xf3\xae\x79\x98\xa3\x08\xec\x17\x81\x49\x68\x7e\x3f\x14\x09\x1f\x8b\xc0\x61\x11\x38\x2e\x02\x6f\x72\xd8\xaf\x45\xc2\x5e\x9e\xf0\xa5\x48\x38\x2f\x02\x3f\x8a\xc0\xe3\x22\xa0\x45\x1e\x08\x8b\x00\x2f\x02\xfd\x22\x30\x28\x02\x27\x79\xc5\x67\xf9\xef\xb0\xc8\x18\x17\x81\x69\xf9\xc4\xc8\x6a\x71\x4b\xcf\x76\xba\x9a\x14\x6c\xcd\xf1\x25\x2b\xfb\x22\x5a\x9c\x9f\x6d\x6a\x6e\x96\x77\x6a\x4d\x0c\xda\xb1\x20\x07\x71\xcd\x59\xc0\x13\x8c\xfb\x5f\x44\xe0\xb9\x1c\x9f\xbf\xb2\x2b\x8d\xf2\x4a\x85\x7f\xa1\x03\x60\x91\x0b\x1d\xf8\x6f\x45\x7e\xec\x64\xdd\xd6\xfa\x03\x9c\xaf\xa4\x2d\x2e\x86\xb5\x59\x0f\xab\xe7\x85\x0e\x7a\xf8\x17\x9b\xe7\x6e\x17\x57\xe4\x4a\xbe\xd8\x05\x06\x30\x6f\x8b\xc7\x38\xb9\x7f\xab\xa0\xe8\xad\x0a\xba\xa7\x91\xc3\xfd\x1f\x22\x58\x66\x77\xeb\x30\xc3\x4b\xf6\x0d\x9d\x51\xbc\xe4\x75\x4f\xde\xc2\x2f\xd0\xe5\x0b\x30\x7e\x35\xa8\xb7\x24\xad\x7b\x09\xa3\x00\x34\xb3\x2a\xbc\xd4\xe5\x35\x33\x8f\x37\x1a\x05\xff\x7a\xf8\x82\x92\xaa\xbc\xcb\xec\x07\x44\xe3\xfb\xcf\x18\xb6\xb7\x0c\xaa\xd5\xa4\x5d\x02\x54\x76\xc8\xfa\x7e\x62\x5c\x1d\x43\x47\xa1\x73\x01\x74\x5a\x75\x76\x8c\xd6\xa8\x70\x96\xee\x0f\x1d\x01\x01\x11\xb5\x4e\xbf\xbe\xcb\x3b\xd4\x68\xd4\x36\x5d\xb5\x3c\x17\x8d\x0f\x85\x5c\x2e\x12\xab\x0b\x22\xc0\x38\x17\xba\x5a\x25\x62\xa3\x0c\xd7\x87\x6f\x12\x97\x6e\x22\xdc\x3f\x91\x41\xfe\xc0\x40\x35\xb5\x71\x6b\x04\xe2\xde\xd8\x18\x01\xfb\xe5\x0f\x60\xa6\x8b\x45\x2e\x60\x14\x52\x64\xd9\x46\xe7\x85\xb1\x1c\x7b\xa2\xd1\xe0\xab\x4c\x78\xae\x60\xc2\xc6\x4e\x30\x66\xab\x1a\x69\x31\x91\x00\x2f\xeb\xf9\x82\xb6\x51\xec\xec\xb6\x8a\x26\x36\x7a\x9d\xee\x5a\x07\xf2\x51\xf1\x46\xc5\x1c\xcb\xbf\x62\x35\x59\x65\x60\x5e\x2d\xf4\xb2\x73\x17\x85\xce\x91\x79\xa5\x89\x43\x77\x71\xa6\x14\x09\x10\x2b\xd6\xaa\x62\x74\xa9\x62\x05\xa9\x72\xd5\x51\x55\x38\x25\x78\xaf\x2d\x91\x81\x57\x5c\xc1\xba\xd0\xe6\x0e\x96\xd5\x67\xcd\x58\xd8\x9b\xe6\x3d\xed\xae\xca\x46\x63\x12\x3b\x9a\x0a\xb7\xb7\xd6\x79\x92\x95\xe9\x0a\xd3\x43\xf4\x9d\xd0\xdc\x11\x94\xbb\x5d\x47\xf6\xb0\x91\xae\x86\xbf\xee\x9a\xa3\x7a\xd8\x5c\x37\xc4\xf8\x9d\x62\x28\x64\x3c\xc9\x94\x9f\xe1\x0b\x84\xb2\x65\x9e\x17\x3e\x4c\x94\xc6\x1c\x7f\x26\x02\x67\xb5\xed\x7a\xaa\x84\x51\x36\x8c\x70\x3d\x55\xc2\x14\xab\x55\x2b\x7f\x81\x1f\x3f\xde\xc9\xd3\xdb\xe3\x24\x1a\x67\x53\x47\x44\xfe\x63\x19\xb4\x4e\xcf\x76\x4e\xce\xfe\x73\x76\xf4\x9f\xbd\xc3\x37\x54\xd9\x12\x28\xab\xaf\xf7\x86\x31\xcd\x6b\xab\xa2\x1a\x97\xea\x3c\x4b\x78\x0a\x40\x56\x99\xf4\xf0\xed\x5b\x8b\x6a\x40\xb0\xba\x27\x74\x41\x42\xcb\xcb\x42\xe0\xda\x7d\x21\x03\x7c\x48\x57\x56\xce\x4f\xd5\xfb\x72\x96\x59\xe9\x8b\xbd\x9b\x2a\xd8\xa5\xc7\xbb\xdc\xdf\x91\xa8\x1f\x7d\xb2\xa7\xfc\x65\x35\x65\xbe\xe4\xfc\xe1\xf2\x96\xf5\x56\x34\x13\xe5\x59\xf2\xd3\x82\xf7\xf2\x0f\x7d\x97\x19\x28\x9f\x1a\x0d\xcc\xff\x22\x02\x84\xc9\xa5\x93\xff\x46\x06\xab\x75\xa1\x8f\x69\xae\x77\x99\xcb\x35\x90\xee\x78\x4f\x02\xd7\x8a\xdc\x63\xcb\x0c\x38\x2e\x3c\x12\x15\x84\xea\x21\x23\xfb\x6e\xd5\x4c\x17\x3e\xf1\xbb\x05\xf2\xe5\x51\x6b\xf9\x48\x7a\xee\xb2\x81\x55\x16\x4f\x8a\xa1\x02\x92\x7f\x41\x1a\x19\x64\xb5\x6d\x3f\xe5\x35\xae\xc9\xbb\xab\xfa\x78\xfb\xe5\xe8\x65\xb9\x92\x48\x57\xdb\x6e\x4f\xfa\xed\xd2\x38\x5c\x16\xbd\xbe\x57\xb4\x2a\xd3\x59\xa6\x37\x95\xd9\xaa\xbc\x5e\xb0\xca\x38\x5e\x91\xe6\x39\x19\x79\x7e\xed\x05\xc5\xb3\x23\x73\xff\x21\xe5\xce\xe7\x56\xe1\xca\x3d\x2e\x5f\x13\x2a\xcf\x3a\x40\xe5\x06\x36\x1b\xe6\xa3\x33\xdd\x0e\xc5\x6f\xc9\x74\x3b\xf4\xfd\xde\xce\x9b\x6e\x87\x9a\x4f\xfb\x74\x3b\xd4\x7c\xd5\xa6\xdb\xb9\xa3\xb7\x00\xbf\x7f\xf0\xae\x3b\xd5\x74\xf7\xa4\x9b\xda\x8f\x75\xce\x8a\x05\xb9\xa7\xcc\x2d\xfa\xae\x83\x81\xb5\x8e\x4b\xb9\xff\x45\x06\xce\x89\xac\x59\x80\xaf\x8a\xfd\x40\xcb\xfe\xfa\x1d\x0e\xc3\xa9\xac\x0e\xca\xf2\xbe\xc3\x2e\x76\x3a\xd1\x32\x0a\x23\x6d\x1d\x40\x5f\x97\x95\x14\x4f\xa3\x17\xe5\x2e\x8b\xd5\x0d\xca\x3e\xdd\x78\xf9\x62\x73\xdb\x96\xc6\x37\x85\xda\x17\xc1\xba\x35\x2d\x99\x9e\xe5\x9f\xa3\x3e\xd3\x37\x59\xfe\x74\xd1\xcf\xf4\xe7\x78\xfe\x33\x9d\xff\x1c\xbb\xeb\x7d\x9a\xea\xda\xa3\x93\x7e\xe0\xdd\xc6\xf9\x0d\x69\xd7\xe3\x4c\x14\xda\x75\xf1\x4e\xdf\xfa\xca\xcf\x9b\x9d\x37\x2b\xf6\x6b\x8a\x90\x80\x4f\x20\x7a\x25\xd0\xcf\xd9\x46\xbb\xbd\x6b\x12\x23\xcd\xe7\x73\xa7\x2a\x9f\xbf\xc4\xe8\x7a\x7c\x95\x4d\xb5\xf5\x04\xe0\xfa\xbf\x7f\x4e\x9f\xac\xd3\x23\x77\xd9\xf3\x69\xbf\xe2\xda\xb5\xd6\x02\xc9\x8e\xc5\xdf\x39\xa6\xd5\xe1\x54\x6c\x1d\xe6\xaf\x3a\x1c\xf6\xf4\xd1\x18\xb8\xc4\x75\xed\x89\x2f\xf1\x86\x69\xf9\xda\x98\x2f\x54\xe0\x2e\xa5\xd5\x51\x71\xe3\xd4\xc0\x58\x92\xc2\xd4\x7c\xab\xb9\x71\x7a\xb9\xd5\xdc\xc7\xc4\xc0\xf2\x4a\xb1\x38\xbd\xc4\x8c\x16\x7c\x6c\xe9\x21\xe5\xec\xe7\x8b\xef\x37\x9b\xc9\x63\x3b\x1a\x54\x4e\x29\x0a\x8d\x08\xd6\xdb\xdb\x98\xb2\x87\xef\x72\xa7\x7f\x2a\x52\x4d\xa1\x8a\xd6\xb5\x0d\xe9\x4e\xbc\x70\xe9\xa6\x5c\x42\xa7\x50\x43\x2c\x40\x51\x6a\xdf\x01\xc3\x58\x2f\x69\x95\xb4\x97\xf9\xe0\xc3\xfa\x5c\x5e\x20\xb7\x66\x7b\x75\x97\x2e\x87\xf2\x64\xb3\x79\x67\xcd\x16\xeb\x16\x68\xbc\x70\xa1\x07\xb5\xdf\x4b\x11\x54\xb7\x79\x96\x17\x3c\xab\x7c\x24\x2e\x43\x7c\x1d\x1a\x8f\x63\xe6\x73\xcd\xef\xce\xd9\x59\xee\xd1\x10\x71\x76\x3a\xf4\xce\x5b\xfd\x07\x3d\x1b\x2e\x43\x74\x6a\x58\xe6\x5a\x6c\x2c\x7c\x39\x54\x65\xe6\xf3\x1e\x9d\xb7\x4e\x1f\x70\xba\x34\x76\xb8\xf9\x3c\x2f\x84\x4e\x0c\xe1\xe6\x3f\x87\xbd\xb8\x66\x8f\x01\xdf\x8b\x5a\x91\x85\xdd\x7d\x5e\xc0\xde\xe2\x7b\xe7\xad\xda\xc7\xa4\x97\x75\xa7\xe8\x48\xbe\xbd\x2c\x8b\x14\x9f\xd5\xfe\x53\x19\x6b\x65\x03\x09\xe9\x9d\xb7\x74\x9f\xdf\xc3\xd1\x68\x11\x05\x7a\x9a\xad\xae\x4a\x4f\x32\x7f\x18\x2e\xde\x5a\x10\xe6\xc2\x02\x5e\x78\xef\xbd\xe1\xbc\xbb\xc7\x51\x39\x7a\x1d\x38\xbf\x30\x54\x9a\x00\x3c\xc1\xfc\xd7\x9c\x07\xb9\xe1\x0d\x0a\x73\x63\x73\xcb\x3d\xd1\xcc\xe4\xe4\x78\xb5\x4c\x61\xdf\xae\x42\xd7\x33\x1f\xf0\xcf\xeb\xb0\x1e\xe6\x34\xcb\x3a\x6e\x52\x2c\x5f\xc2\xd7\xb1\xfd\xd8\x4c\xe1\xf2\x7b\x19\xa2\x22\x97\x2f\xc4\x3b\xc3\x9e\x79\x63\xf3\x22\x6c\x0a\x97\x4a\xf3\x2a\x32\x56\xe5\x76\x31\xc3\xa8\xe9\x1d\xc6\x24\xec\xb9\xfc\x0f\x81\x0b\xdd\xa8\xc0\x8c\x4c\x36\x1e\x4d\x2a\xa7\x7d\xf1\xb1\xdd\xb7\x29\xef\xc3\x2f\xa8\x8c\x46\x05\x51\x46\xa5\xc0\x82\x92\xa9\x25\xaf\x02\xbc\xa9\x6d\x1a\x61\x94\x72\x6b\xd5\xdd\x79\xeb\xf3\xee\xfd\xf3\xde\x7c\x5c\x4a\x62\x2c\x33\x2d\x59\xab\xe5\x9e\x25\x9d\x91\x18\x9c\xc5\xa0\x08\xc3\x90\x88\x85\xb2\x02\xca\xda\xe7\xb3\xe5\xb6\xaa\x35\xe1\x7d\xfd\xdd\x7c\x05\x15\xd4\xab\x77\x2a\xe8\x15\x27\x7a\xfe\x27\xf4\xe1\x7d\xa7\x02\xb7\x9b\xa7\x19\xf8\x6f\x06\x1e\x75\x40\x19\xd0\x5a\x25\x90\x08\x25\xee\xce\x5b\x57\x6f\x97\xb1\x2c\x48\x94\xfa\xa4\xb2\x3e\x93\xcf\x26\x9a\xa3\xe3\x05\x26\xb1\x7e\xec\x9d\xb7\x0e\x25\x1b\xc0\x2f\xff\x0f\x8b\xe0\xf7\x34\xe2\xec\x02\x02\xe6\x3b\xb9\x38\x35\x86\x10\xff\x16\xb2\x18\x7e\xc7\x87\x6c\x04\xbf\xea\x80\x29\xf8\xfd\x10\x73\x36\x8e\x8d\xdb\xcf\x24\x76\x01\x72\xc2\xd9\x25\x64\x5d\xa5\x4b\x3c\xa2\x61\xff\xe8\x9f\xc9\x80\xb1\x24\x84\xee\x60\x70\xaf\x0a\x7e\xab\x82\xa7\x55\xf0\x32\xec\xad\x72\xff\x04\x6d\xd8\xab\xa8\x99\xcc\xe7\xa8\x5b\xb8\x5d\x8c\x35\x1a\x26\x86\x07\xd1\x0e\x67\xb0\x42\xf8\xa9\x08\xf0\x9d\x24\x11\x38\x6e\xf7\x77\x6e\x54\xe5\xfe\x0f\x19\xe4\xf6\x4f\xee\xef\x88\xe0\x8e\x72\x56\x2a\x31\xb0\xd9\xde\x09\xcc\x6f\x1a\xb8\x5d\xce\x84\x75\x6b\xa3\x5a\x0d\xb4\xf5\x5a\xc0\xde\xb0\x37\x13\xbc\xbb\x3b\xec\x49\xc1\xbb\x3b\xc3\xde\x95\xe4\xdd\x5f\xc3\xde\x61\xb8\xb0\xf1\xdd\x5d\x28\x35\xe6\x58\xea\x82\x63\xa9\x21\xc7\x52\x31\xe7\xa6\x58\xd5\xda\x5b\x4b\xdb\xc4\xa1\xcd\x92\x09\xe3\xde\x59\x79\xc6\xe8\x1d\xe4\x41\xe9\x7a\x3f\xf2\xa0\x72\xef\xce\xd9\xdb\xd8\xac\x04\xa3\x65\x5f\xe2\xc0\x53\x28\xa9\x82\x35\x0c\xbc\x0b\xee\x3c\x21\x1e\x74\xf1\xf2\x0f\xa4\x01\x84\xc6\xef\xdc\x3f\x1d\x47\xbe\x8d\x9d\x02\x90\x16\x6d\xd0\xa2\x0e\x9a\x37\xf6\xdf\x5c\xc5\x1a\x0d\xde\xab\xd9\x21\xde\xc6\x3d\xee\xbf\x0b\xb6\x59\x5e\x01\xbe\x33\xa8\x82\x2d\x56\x34\x01\x1a\x68\x96\x4c\x0c\x00\x84\x00\xe2\x40\x16\x10\x07\x32\xe8\xf2\xd6\x8d\x5d\xbe\x75\x53\x2f\x7d\x5b\x2b\xdb\xba\xb5\x4a\x9a\xcb\x14\xe7\x2d\x7d\x33\xe1\x63\xb5\x20\xfb\x61\x5c\x50\x8b\xe9\x95\x1d\x5f\x63\x88\x0c\x3d\xb3\x4f\xfc\xa4\x0a\x9a\x88\xb4\x4b\x0f\xec\xf4\x03\x09\xe9\x07\x32\x70\xe9\x0f\x3b\xfd\x5d\xb0\x06\x5d\x76\x8b\xc3\x6d\x53\xef\xfd\x3a\xc5\x92\xfa\xe4\xfd\xba\xd4\xc2\x31\x66\xc5\x60\xef\xf2\x25\xe0\x07\x2c\x1c\xc5\x09\xf1\xbb\x80\x0a\x6c\xdd\xc3\xae\xb0\x3c\x1d\xbb\x25\xe0\xaf\x0b\x1c\xc8\xf3\x27\x76\xb1\x5f\x54\x60\xef\x90\x1f\xab\x0c\x18\x75\x81\xdd\xb3\xdf\x80\x88\xeb\x87\xe1\xfe\xbb\x60\x8b\x09\x33\x12\x02\x23\xdc\x1a\x54\xc8\x3a\x90\x90\x65\x62\x58\xe9\xdd\xa3\xa5\x5e\x10\x88\x6b\xe5\xf2\x50\x20\xba\x78\xda\x5c\x22\xba\x98\x81\x88\x96\xd3\xc8\xca\x78\xf7\xdf\xcf\xa7\x2d\x04\xb2\xe5\xed\x67\x0f\x34\x9f\x3d\xd0\x7a\xf6\x70\xe3\x4b\x9d\x2e\x4c\xe3\x7b\xcb\x1b\xdf\x7b\xa0\xf1\xbd\x07\x1a\xdf\x7b\xb8\xf1\x47\xff\xc4\x59\x63\x81\x03\x9b\xbc\x75\xe3\x2e\x99\x12\x90\x5a\xa0\x8b\xde\x1c\x4b\xa6\x47\xeb\x16\xa6\xc1\xbd\x0a\x97\x55\xe7\xd6\x1d\x40\xb0\x52\x71\xbf\x4a\xe1\xfe\x6f\xdc\x42\x16\x30\x78\xc2\x2b\xfa\x16\x18\x40\x5a\xd1\xf2\x13\x26\xbd\xc5\x96\xef\x1f\xfb\x57\x8e\x5a\x96\xa4\xff\x51\x79\x93\x94\x23\x2b\x4a\xaf\x02\x59\x79\x13\xa0\xa4\xdf\x8f\xff\x8b\x93\xc8\x7e\x5c\x8c\x25\xad\x4b\xe7\x07\xbc\x46\x3e\xd4\xac\xcc\x46\xac\x9b\xc9\xcf\x91\xf2\xe8\x41\x82\xc4\x85\x15\x13\x13\xad\xe9\xfd\x71\xb1\x34\xf4\x0c\xda\x2e\xaa\x80\x75\xc7\x24\xe0\xca\x82\xc9\x56\xf9\x4f\xf1\x9f\x7c\x65\xde\xa1\x7f\x8c\x59\x03\x2c\xbf\x19\x24\x11\x13\x85\xec\xb7\xbd\x68\x1e\xf2\x34\x36\x32\xaa\x20\x0c\x76\x82\xca\x5c\xd4\x15\x4c\x56\x50\xa9\xec\xb7\x39\x79\xdf\x62\xa5\xd2\x5f\xd5\x62\x7a\x67\xe6\x1d\xb7\xea\x41\x42\xe5\x64\xb6\xc8\x66\x0e\x0e\xb7\x4a\x53\xe1\xca\x8f\x72\x4d\x2f\x47\x89\x29\x5a\x0e\xfa\x9a\x70\x69\x31\xec\x7c\x4d\xb9\xb4\x76\x17\xb3\x52\xe9\xeb\xf6\xac\x42\x10\x17\x12\x9d\x2a\x56\x09\x79\x33\x92\x90\xde\x14\x45\xdf\xe4\x16\x2b\xdf\x44\xcd\x0b\x5b\x62\xdf\xbc\x4d\x5e\xac\x05\x66\xf8\x31\xa7\x29\x8a\x2e\xe9\x2d\x56\xbe\xf0\x9f\x8f\xbe\xa4\x9a\xaa\x35\x49\xc3\xb5\xea\x95\x2f\xe3\x68\xf1\x80\x6f\xf6\x6b\x5d\x4d\x00\xa0\x37\xac\x0b\x3b\xb8\x3a\xa4\x41\xed\x39\x84\x92\xee\x66\xf7\x05\xe8\x68\xb6\x38\x78\x21\xbb\x37\x0c\x7d\x56\xf5\x7f\xc8\xaa\xce\x98\xf5\x6e\xbb\x52\x05\x1c\xdc\x66\xfd\xb7\x49\x84\xa5\x4a\x15\xc9\x05\x3e\x32\x54\x53\xb9\x32\x50\xe5\x79\xc3\xad\xf0\x81\x6a\x87\x65\x7d\xe1\xda\xd0\x85\xa1\x1a\xae\x49\xd7\x43\xd5\xa7\xd4\x5c\x96\x15\x94\xc8\x9f\x85\x2e\x87\x87\xc0\xfd\x2d\x5d\x87\xed\x53\x49\xf5\x5a\x1f\x33\x39\x13\xf9\xfd\x68\x86\x97\x94\x8d\x1b\xbc\x75\x28\xe5\x3d\x7a\x48\x3f\xab\xc9\xf9\xfd\xb8\x97\xb7\xb9\x85\xf4\x34\x1e\xec\x16\xe9\xb7\x2b\x32\xe7\xde\xed\x66\x09\x37\xb4\x5d\x1c\x95\x6d\x6b\x20\x1e\xd4\xd7\xaa\xca\x1f\x56\xdb\xec\x4a\x6d\xb9\xf6\x66\xc1\x0d\xa0\x75\xb3\x05\xf8\xa1\x54\x59\x13\xad\x9b\xae\x61\x78\xd1\xba\x59\xab\xe6\x87\x4b\xdb\xf8\xcd\xbc\xd6\xed\x16\xa2\xd7\x33\x03\x2a\x5a\xb7\x25\xf8\xed\x9a\x35\x1f\x00\xbe\x34\x1b\x1b\x9f\xd0\xbb\xf3\x96\x8a\x0c\xd5\x96\x6d\xdc\x8c\xff\xe8\x9b\x8a\xe7\xcd\xe6\x6d\x99\xe5\xe6\x21\x97\x3f\xd0\x4f\xfb\x3a\x7b\xad\xc7\x99\x4e\x1f\x28\x97\x7b\xc9\x5a\x14\x5c\xdf\xa0\x8b\xe4\x5a\xdf\x70\xef\xee\x39\xf2\x3d\xa4\x10\x3d\xa8\x73\xfd\xdf\x7a\xfe\x3d\xa0\x11\x3d\xa4\x70\xfd\x5f\x3a\x0a\x3e\xa0\x0f\x3d\xa4\x6e\xfd\xff\xe4\x57\xf8\xbf\xd6\xaa\x6a\xfa\xd3\x72\x4d\x69\x89\x56\xf4\x7f\xa4\x01\x2d\x71\x75\xb4\x15\xa0\xff\xea\xf6\x58\x39\x5b\x97\x56\x56\x7c\x7a\xbe\xb7\x57\xb8\xaf\xb8\x5d\xf4\x00\x9b\x45\xce\x9e\xe6\x75\x4f\xf5\x3d\x5d\xde\x71\x73\x24\x7b\x6b\x4a\xb8\xe6\xd9\x8f\x9b\xc0\x97\x01\xab\xbd\xa0\x5a\x9f\xfe\x87\x51\x7e\xc0\x6c\x8e\x84\x18\x63\x79\xa1\x62\x69\xc7\x9d\x7e\x73\x47\xf1\xdc\xe1\xae\xfa\xec\x27\xc0\x55\x87\xb9\xcb\x6c\x54\xef\x16\x4f\x20\x6f\x02\x1f\x1b\x2c\xa4\x6c\xed\x54\xbb\x38\xd6\x96\x3d\xd9\x45\xd0\x02\xd5\x60\x3e\x3f\xb2\x1c\xca\x6d\x73\x5d\x7e\x02\x57\xfa\x4d\xee\x1a\x17\xa5\x5d\x15\xa0\x24\x48\x46\x93\x59\xa6\xd5\x69\x76\x1b\x6b\x7c\xf1\x7f\x79\x96\xc3\xf1\x43\x02\xae\xdb\x93\xbe\x08\xe6\x73\x09\x10\xc5\xd3\x30\xf8\xc9\x65\x7c\xa7\xf4\xa8\x6b\xa1\x71\x54\x57\xd0\x72\xac\xf0\x13\x84\x0a\xbd\x37\x94\x0e\x7c\x11\xa0\x29\x03\xdf\x38\xbd\x41\x6d\xed\x26\xa8\x3f\xac\x7d\x6c\xeb\x89\x58\xe7\xe5\xc0\x76\x99\x8e\x6b\xd6\x55\xaa\xd9\xee\xb0\xd1\x70\xae\x86\xf3\xf9\x63\xc5\x5d\x34\xb5\x5d\x73\xee\x7a\x62\x71\x92\x80\xb0\xbe\xa1\x02\x44\xb6\xdb\x85\x18\x15\xcc\x58\x47\xd0\x5d\xf0\x24\x46\xdf\x43\x58\x58\x6f\x02\x9c\xc5\x27\xb1\x23\xa8\xb6\xda\x3e\x5d\x54\x61\xd1\x6a\x77\x8a\xfe\x6e\xdf\x6b\x0e\x2c\x67\xc5\x21\x57\x0f\x87\xa3\x5b\x7a\xb2\x56\x6e\xbc\xf3\xf9\x9b\xd8\x41\xcf\x5b\xd7\x76\xa7\xb3\xce\x83\x2d\x6f\x8d\x2c\xbd\xfd\x2d\x58\x6e\xb8\xaa\x5e\x22\x33\x75\xfe\x8e\x75\x98\x75\xdb\x34\x4b\x26\xdd\x36\x4d\xd1\xa6\xd5\xa6\x02\x3f\x23\xdd\x6d\xdf\xdd\xed\x0c\x51\xf7\x95\x01\xd4\x9f\x1f\x46\xed\xc8\x80\xfe\xe0\x8e\x40\x35\x0f\x96\xb5\xbe\x0c\xfc\x73\x01\x6b\xdb\x99\xc2\x90\xeb\x1a\x15\x6e\x8d\x99\xcc\x6f\x65\xe6\x37\x61\x5f\xc4\xae\x46\xee\x7d\x79\xac\x53\xf8\x3e\x6c\x5a\xae\xae\x59\xee\x86\x90\x1f\xe8\x52\xc9\x8a\xc1\xa5\x8a\x49\xc6\x3e\xf4\xe7\x73\xc9\xd8\xa4\xef\x15\x27\x49\x17\x3a\xf0\x78\xee\xa9\x51\x1c\xaf\xe0\x39\xba\x55\x50\x35\x1a\x92\xb1\x37\x03\x03\x06\x88\xe6\xa1\x33\x15\xd0\x55\x85\x53\xfe\x9d\x0c\xb6\xd1\x2d\x11\x6d\x87\x02\x22\x8f\xf1\x5b\xbb\x56\xa3\xf8\x93\x0d\xac\xa3\x9a\x9a\x42\x5a\xb9\x3c\xd7\xfd\xa2\x58\xbe\x0d\x6a\x53\xc5\xe1\xff\x36\xf4\x0b\x07\x15\x3a\xd5\xea\x4b\xc7\x45\x4c\x74\x11\xe9\x4b\x50\x3c\x63\xcd\x1d\xd9\xba\x0c\x41\xe7\x32\x54\x43\x0f\x01\xe3\x8b\x83\x2f\xa3\x23\xb6\x7b\x45\xec\x31\x9a\x3d\x18\x53\x2e\xf6\x4e\xe1\x5f\xdd\x68\x20\x21\x92\x81\xbb\xca\x4e\x07\xc5\x57\xb2\xce\x01\x43\x3a\xf4\x86\x0c\x9f\x6e\xdc\xcd\xfd\xbf\x61\x4e\x14\x6f\x3a\xc7\xdc\x39\x8c\x9d\x21\x3d\x10\xdc\x78\x1c\x7f\x8b\x9d\xa1\xeb\x42\xe6\x98\x0d\xfd\x1d\x11\xac\x0d\x01\x83\xb5\x78\xad\x00\x3d\x02\x50\x1a\xb3\xb8\x39\xf6\x86\x2c\xe7\xfd\x98\x16\xd9\x9f\x21\x3b\xbf\xa3\x5c\x66\x0f\x81\x8d\xe8\xd0\xf0\x4b\xbf\x75\xd3\x64\xc3\xd6\x8d\xd7\x6f\xdd\x42\xe0\xd6\x13\x85\x0d\x09\x95\x25\x50\x8b\xfb\xad\x5b\xdc\x3b\x8b\xdc\xe2\x84\xc6\x1f\x0a\x25\x91\x20\xc6\x40\x51\x65\x1e\x48\xc8\xbc\x6d\x1a\x67\x53\x9c\xc9\x22\x37\x31\x01\x57\x43\x41\xd7\xbd\x53\x2c\xf4\x3f\xc9\xc0\x0b\x59\xe8\xbf\x53\xc1\x3d\x28\xd0\x7c\xef\xa3\x82\x7e\x97\x8f\x64\xeb\xf3\xae\x03\x21\x1e\x3b\x72\x3e\x17\x7c\x09\x7a\xaa\x29\xcd\x72\x7e\x0f\xb7\xb0\x29\x6b\x2b\x7a\x7b\xab\xd8\x89\x42\x28\x57\xdb\x0f\x64\xb0\x9d\xa7\x62\x7d\xdb\x90\x51\x38\x48\x59\xf7\xd4\x2b\x61\x40\x73\x19\x4f\x55\x35\x11\x8c\x14\x94\xfe\x91\x30\xdf\xff\x4d\xe1\x57\x01\x63\x9b\xbb\x61\x90\x61\x8c\xe1\x4e\x7b\x5b\xf8\xfb\x20\xd3\x21\xf0\x51\x04\xb0\x79\xcb\x07\xac\x0d\xfc\xdb\x67\x67\x71\xbe\xb2\x71\xc6\xfa\xb5\xaf\xb2\x19\x03\xba\x60\x28\x9a\x28\x67\x7b\x28\xc1\xa4\xeb\xd2\xb0\x75\x83\x5d\x02\xd5\x83\x86\xad\x5b\xd3\xd3\x26\x6f\xdd\x96\x47\xc8\x05\x76\xda\xad\x10\xa2\x3c\x0f\xf6\x8b\x2a\xf6\x45\xb0\xc6\xe1\xaf\xa9\x05\x30\x5c\xe3\xf0\xd7\x1c\x17\x09\xc6\x3d\x95\xfc\x0e\x81\x9b\x04\x88\x5e\x2f\xc4\xfb\x3c\x20\x7f\x3d\x81\x06\x7b\x27\xcf\x3c\xc7\x4e\xd2\x3c\xff\x1b\xc6\xb0\x5b\x30\xad\x8e\x63\x47\xb8\x30\xff\x5d\x53\x97\x44\xc9\x86\x7c\x02\xf0\x26\x0a\xec\x82\xf7\x44\xef\x04\x13\x20\xc0\xf2\x8f\x4e\x19\x4f\x7f\xb3\x09\x35\x77\x29\x72\x62\xbb\x61\xeb\x76\x2d\x2f\xfc\x3d\x7f\x9b\x0c\x30\x76\x04\x4e\x73\x01\x03\x20\x56\x0d\x00\x86\xfa\x9e\x1b\xb6\x6e\xd6\x98\xc0\x83\x1d\xbc\x7a\x68\x4e\x37\x1e\xfd\x08\xe7\x73\x07\xab\x13\xe6\x7c\xa7\x18\x07\xeb\xbe\x44\x6d\xdd\xff\x11\x1b\x9e\xf8\x01\x3d\xf3\xea\x8b\x94\x6c\xdd\xac\xa9\xd6\x0d\x95\xad\xdb\x35\x55\xbb\x5c\xb6\xaf\x79\xcd\x27\xb0\x3e\xc2\xa2\xe0\x0c\x9c\x29\xb9\x89\x37\x1f\x87\xbd\x62\xf5\xca\x3d\x7f\x90\x43\xbd\xb2\x84\xcc\xef\xb3\xc9\xe2\x3e\x9b\x25\x8b\x3a\x1b\xae\xfb\x3b\xea\xfe\x46\x65\xeb\xe3\x60\xa9\xb6\x85\xca\x89\xad\x6a\xd1\xba\x9e\x25\x8d\x2b\x36\x1e\xa0\x34\x47\xbc\xb8\xd0\x1b\xdd\x49\xf6\x71\x70\x87\x57\x26\x71\x76\x48\x50\x53\x20\xf0\x71\xe0\xba\x3d\x5c\x57\x3e\x89\xc0\xf9\xa0\x61\xdd\x2d\xe4\x18\xa8\x00\x9d\xc0\xa5\x18\xd8\x08\xdc\xf2\xfc\x0d\x66\x84\x1d\xf6\x38\x3b\x1a\xa2\xf3\x5b\xb1\x53\x16\xcb\x9e\x28\xfd\x51\x7a\x28\xd7\xbd\xfe\x72\x72\xe7\xeb\x60\x1a\x39\xbc\x75\x35\xc5\xb5\x90\x7b\xdc\x7f\x2f\x82\x1e\xe8\x84\xef\x45\xe0\xb7\x83\xae\x80\xad\xeb\x67\x8c\x22\x31\x8a\x08\x3e\xd0\xb6\x30\xbe\xfe\x1b\x15\x50\xe9\xef\xd5\x9c\xee\x1f\xc7\x0b\xef\x2a\x96\xea\xd0\xf1\xd0\x95\x68\x08\x03\x75\xc8\x4f\x83\x72\x8e\x16\xa3\x20\xab\x57\x6d\x46\xd1\x74\x1a\x8d\xfb\x2b\xe6\xb0\xac\x7c\x6e\x96\xb8\x1e\x1f\x19\x6f\x32\x39\x5a\xf8\x7e\xc1\x49\xce\x98\xd6\x17\xb0\xcd\x35\x56\xd1\xc3\xbd\x0e\x77\xbb\xdc\x6d\x7e\x59\xe6\x03\x23\x47\xf9\xed\x8e\x4a\x2b\x43\x3f\x1d\xfb\x33\x22\xa3\xf2\x6e\xdd\x43\x20\x6a\x64\x7b\x90\x43\xc4\x76\x2f\x1f\x55\x16\xa5\x8f\x1a\x17\x49\x64\x90\xbd\xbe\xbb\xca\x3e\x97\x9e\xab\x95\x4f\x1b\xb6\xa2\x98\xf4\xbf\x49\xb3\x92\x5f\x45\xd3\x48\x44\x71\x94\xdd\xe2\xb7\x25\x47\x32\xf0\x22\xe1\x48\x7a\xda\x77\xbd\x5d\xee\x48\x3a\xe9\xbb\xde\x09\x04\x7e\xf4\xd1\xac\x02\x75\x61\x5c\xe5\x00\xa1\x6b\x4a\x2c\xfd\x8c\xe2\x47\x5d\xfb\x1c\xed\x8e\x30\x8f\xe2\xfc\x90\x80\x05\xc8\x9a\x55\xd1\x68\xac\x96\x77\x0f\xa5\xd9\xc4\xad\xaa\xf9\xdc\x48\xfe\x5e\x6e\x0e\xc0\xcf\x72\x39\x3c\x9f\xcb\xe5\xfd\x8c\xa5\x76\x56\xdb\xbd\xde\xa2\x8f\x99\xd4\x9c\x21\xcd\xbc\xba\xf9\x0e\xb5\xe9\xd6\x2d\xb5\x6e\x0e\x56\x8e\xe6\xa3\xc5\x6d\x8e\x17\x0f\xf0\xf3\x33\xbd\x31\x7e\xdc\xd8\xed\x2a\xc1\x4d\x82\x6c\x1d\x24\xbf\x8e\x26\x5c\x46\xd9\x2d\x13\xdd\xfd\x7e\xfe\x99\x1a\x47\xb6\xc2\x28\xce\x74\xca\x04\x63\xec\xa8\x77\xd4\x7d\x27\x78\xb3\xd3\x6e\x3f\x11\xcd\x23\x5b\x2d\x1f\xe4\x8d\x9d\xe4\x0c\x21\x7a\x47\xdd\xcf\xf6\x88\x47\x56\x8f\x4e\x87\xc5\x27\xef\xa8\xf9\x0e\x1a\x95\x4c\xa0\x6e\x56\x38\xed\xca\xdc\x17\x01\x37\x42\xa7\x03\xad\x33\x58\xb0\xd8\xfd\x64\xc7\xa5\x08\x1f\x39\xa2\x25\xa7\xd3\x33\x7d\x93\xb9\x3d\x2e\x8c\x6f\xec\x37\xe3\x23\x5b\x39\x9e\x29\xf6\x6d\xe8\x88\xd6\x65\x48\x3f\xf7\x8b\x17\x5a\x72\x4c\xfc\x76\xe0\xa9\xf9\xdc\x91\x25\xc8\xd5\x12\x10\xb4\x36\x5d\x38\x9f\xfb\x2e\x95\xa5\xef\xbc\x82\x8d\x6d\xee\xde\x2b\x31\xff\xed\xc0\xf5\x72\xb4\x74\x0d\x2d\x9d\xa3\x85\x2f\xf0\xa2\x1f\xa5\xa2\x4b\xbf\x9d\xf8\xcd\xde\xe6\x5c\x0f\x98\x11\xa4\x6f\xfa\xe6\xba\xd3\xc5\x88\xed\x0e\x7b\xe4\x20\xf9\xf5\x65\xaa\xd3\x53\x74\xd5\x25\xdd\xbd\x61\x8f\x9c\xe3\x6b\x03\x76\xea\xc2\xc7\xae\x87\xa3\xd2\x63\x8a\xe5\xdf\x14\x32\xf7\xca\xf2\x4b\x65\x17\x23\x23\xaa\x98\xe8\x7d\xee\x1e\x51\x94\xf3\x17\xa3\x80\x61\x11\xce\xda\x95\x6b\xae\x07\xd3\x91\x07\x1e\xc7\xe7\x6f\x0a\xb0\xbb\xbb\x42\x8e\x99\x5b\x8e\x6e\x5e\xd9\x70\x80\xb5\x5d\x07\xce\xd1\xc0\x3c\xbb\x6f\xb6\x18\xed\x7a\x35\x45\xbe\x75\xad\xc0\x62\x9c\x62\xd7\x62\x76\x53\x4a\x17\xfe\xd6\x66\x17\x87\x4b\x3b\x28\x82\xab\x6c\xda\x87\xd0\x4e\x1e\x5a\x95\x2d\x91\xdc\x9c\x46\xbf\xa2\x71\xa9\x4b\x09\x36\x42\x91\x09\x13\xe7\xeb\x80\xee\x4b\x54\x84\xf2\xb4\x9d\x80\x9e\xf4\xe9\x3b\x59\x4d\x59\xe4\x23\xf3\xb4\x35\x4e\x60\x10\x08\x28\x0e\x70\xb9\x1d\x99\x19\x9a\x2c\xce\xd0\x63\x58\x16\x52\x33\xd5\xd7\x84\xf9\x63\xa6\xbe\xc4\xb5\x62\x27\x9f\xfa\x6b\x66\x97\x27\x8c\x30\xc0\x03\x3f\x6b\xea\x8c\x46\x35\xb7\xd6\xf5\x7f\xff\x54\xcd\xc9\x4d\x2f\xff\xc2\xb5\xa8\x9e\x12\x05\x76\xef\xb4\xdd\xd2\xd3\x1c\x97\x68\x1a\x32\xde\x4a\x67\xe3\x2c\x1a\x99\x79\xe3\xcb\xc0\xbb\x97\xc2\x8c\x69\x00\xb2\x0a\xf3\x0c\x5e\x1b\x40\x6b\x4a\x99\xa6\x97\x14\x0c\x97\x3c\xc7\x3b\x59\x10\x3d\xf7\x6c\x0f\xa5\xdc\xec\x19\x8a\x53\x3e\xa0\xef\x25\x77\xed\x0f\x9f\x20\x55\xcd\x4e\xb6\x18\x7f\xac\xf7\x8d\x44\x1e\xc0\xf0\x9e\x44\x7d\x0b\xc3\x6f\x25\x0e\x02\x86\x5f\xcb\xfa\x40\xbc\x8d\x61\xa2\x99\x0b\xaa\x82\xa1\x59\x04\xaa\xf1\xa4\x09\x43\x35\x9e\x32\xe1\xbc\x1a\x0c\x2f\xa9\x26\xc6\x8f\xe7\xc5\xa8\x0d\xe1\x33\x0f\xf0\x57\xb8\x66\x5e\x7e\xd2\x9c\xfd\xce\x06\xd1\xb8\xbb\x41\x47\x5a\x45\xb3\x51\xf7\x19\xcd\x06\x91\x1c\x76\x5f\xd8\xce\x5d\x97\xa3\xd2\x71\xbc\x6e\x99\x69\x8e\x04\xcf\xad\x33\xac\x5a\x07\xcb\xc7\x59\x6b\xa0\x57\x05\x68\x49\x4c\x10\xda\x9f\x34\xef\x7d\xd2\xdc\x97\x41\xb7\x4e\x5a\xeb\xd1\xb8\xd1\x82\x89\xe0\x55\xf9\xd2\x1a\x22\xf6\x49\x20\x81\x31\x7c\x28\x90\xc0\x18\x3e\x16\x48\x19\x0c\x7f\x10\xff\x95\xc0\xb0\xb3\x2d\x08\x0c\x5b\xd7\x82\xc0\x9f\x45\x45\xe0\x8f\xf7\xab\x79\x90\xc0\xd5\x95\x90\x91\xfd\xd0\xb2\xf7\xc3\xe1\xc5\x75\xd6\x27\xde\xcf\xe9\x93\x75\xb7\x76\x3a\x02\xda\x66\x91\xdd\xc5\x6c\x6f\xc3\x7c\xf7\x0c\xcf\x7a\x0e\x23\x87\xfb\xed\xc0\xbc\xd6\xe2\xc2\x3c\xe8\x04\xb5\x87\xde\xa1\x9d\x0f\x9a\xb3\xf5\x11\xcf\xd2\xe8\xe6\xa7\xe3\xb7\xd7\x5e\xfd\x6c\xfd\x5c\x0b\x9a\x74\xe5\x9f\x84\xad\x02\xee\xa4\x77\xd3\xbb\x9f\xf2\xd3\x5d\x37\x1f\xa7\x80\x66\xfe\xed\xf4\xba\x8e\xff\xef\xee\x7a\xef\xaf\x56\xd0\x74\xbb\x6e\xcf\xe9\x75\x7f\xae\xff\x5c\x37\xe9\xeb\xbd\xbf\x82\x27\xee\xff\x73\x7b\x10\xfe\xab\x17\x3c\xe9\xb9\x4e\xaf\xdb\xc5\x2a\x83\x26\xa8\xd7\x3d\xe6\x43\xc6\xfc\xb1\x8b\x40\xbd\xbf\x82\xa6\xa9\x03\x62\x50\x18\x63\x7f\x39\x2d\x08\x3d\xb6\xbe\x58\x3e\x2d\xf8\x22\x1b\xb9\xbf\xb3\x11\xcb\x9f\x80\x15\x4c\x44\xfe\x8d\x79\xbd\xc7\xba\xa7\x79\x28\x0b\xe9\xeb\x48\x36\x1b\x39\x68\xdc\x95\xab\x4c\xb4\x06\xc9\x34\x1b\xf3\x51\xf1\x15\x03\xa8\xa9\x4d\x47\x8e\xeb\xdd\x95\x77\x89\x51\xff\x3f\xd0\xdc\x4c\x9b\x6c\xc4\xec\xab\xf0\x33\x4b\x73\x74\x38\x43\xb4\xfc\xa7\x81\xb9\x01\xee\x36\x1a\x49\xfd\x0d\xc4\xab\x65\xe0\xcf\x17\xc1\xad\x2f\xf6\x58\xe2\xb4\xba\xa0\x8d\xf7\x26\xdb\x5b\x0c\x1d\xe1\x2e\x55\x80\x0a\x12\x6c\x15\xb7\x94\x57\x7e\x89\x07\xbf\x40\x2c\xd6\xcc\xd7\x36\x9e\x6e\x32\x16\xce\xe7\x2f\x9e\x32\x16\xe2\x27\x05\x8b\xfc\xa6\x76\xe9\x2a\xe4\x74\x10\x20\x87\x7b\xfa\x9c\x55\xa7\xaf\xc2\x13\x4d\xa6\x9b\xc5\xcd\xc1\xb5\xfc\x62\xc1\x88\xad\xff\x35\xb7\x87\xe4\x76\x41\x90\xbe\x96\x81\x73\x33\x82\x19\x89\xbd\x68\xd3\xe2\x79\xb8\xf6\x76\x79\xe7\x08\x45\x42\xb1\x04\x98\xef\xf4\x83\xce\x8b\x40\x7a\x3e\xd7\xdb\xd2\xd5\x0c\x1f\x6c\x16\xfe\x87\xa0\x59\x5e\x83\x01\x3a\xe1\x1b\x6c\x8a\xea\x35\x55\x38\xdd\x17\x6e\xf4\x88\xe0\x21\x30\xa8\xdf\x6b\x04\xce\xe3\xf9\x5f\xae\x85\xe7\xaf\xd1\xe2\xbd\x1b\x1b\xd7\x36\xd5\x34\x64\xbe\xa1\xaf\x36\xa8\x2b\x44\xdd\xf5\xdc\xd0\x78\xba\x6b\x1d\x18\xdb\xaf\x75\x0c\x9e\x23\xaf\xdd\x66\x67\x3e\x97\xf8\xce\x9d\x01\x46\x2c\x2b\xa3\x4e\x98\x3b\xd5\x22\xca\x87\x9a\xd3\xd7\xda\x1e\xf0\x9d\x52\xe5\xe1\xcc\xcf\x31\xa5\x7b\x9a\x8a\xc0\x33\x1e\x86\x12\xb4\x89\xd7\x81\x13\x87\x94\xf3\xc2\xa7\x58\xba\x68\x87\xee\xe4\x1b\x3f\x50\xfe\x44\xfe\x7d\xf3\x6b\xed\xd2\xf6\x16\xc3\x77\x81\xd0\xe5\x17\x11\x12\xae\x4b\x01\x0c\xf4\xd4\xfc\x2d\x3b\x48\x2a\x0a\x8d\x43\x97\xb6\xb7\x05\xbe\x1c\xc4\xc6\x61\x57\x30\xe4\xb9\xb5\x0e\xd6\xd2\x09\x58\xae\x65\x5a\x9e\xc1\xf9\x4d\x03\x1c\xcc\xdd\x11\xfb\xcd\xe3\x48\x6a\x11\xcf\x74\x97\xfc\x15\xb6\xc3\xcd\x30\x24\x94\x8f\xb3\xe8\x72\xa6\xaf\x07\x51\x86\xc9\x5c\x0b\xf5\x92\x50\x7e\x39\xe3\x5d\xf2\x57\xbb\x1d\x86\x08\x75\x39\xe3\x23\x9e\x46\x63\x80\x79\x19\x86\xa1\x7a\x46\x28\xff\x35\x4b\xf3\xaa\x10\x48\xe8\xa8\x8f\xf1\xe7\xe1\x73\x25\x09\x15\xd1\xf4\xd2\xb4\x15\xea\x67\xf2\x19\xa1\x22\xe6\x72\xd8\xbd\xd1\x10\x18\xcb\x81\x56\x3c\x1e\x25\x63\x65\x20\x84\x54\x00\x81\x05\xda\x6d\x68\xd8\x44\xaf\xa2\x24\xd6\x59\x97\xfc\xb5\xc9\x37\x84\xde\x20\x54\xa4\xc9\xf5\xb8\x4b\xfe\xe2\xcf\x37\xf8\x06\x27\x54\xcc\xd2\xf8\xf6\x3a\x49\xa0\x1e\xa5\xc5\xe6\xe6\x4b\x42\x25\x57\x3a\xcb\x2b\x7b\x1e\xbe\xd2\xbc\x4d\xa8\x1c\xf0\x34\x4b\xf5\x6c\x5a\xf4\xa1\x8d\x89\x89\x4c\x62\x8e\x7d\x57\x1b\x2f\x5e\x75\x34\xa1\x32\x49\x79\x8c\x48\xbd\x0c\x9f\xb7\x31\x3e\x0e\xe3\xe4\x5a\xa7\x79\x8d\x2f\x9e\xbd\x7a\xae\x95\xc9\x98\x46\xf1\x10\x61\xc3\x4d\xe8\xb3\x4c\xa3\xd1\x34\x01\xf4\x94\xec\x3c\x7b\x0a\x29\xb7\x7c\x6c\x51\x52\xf1\x74\x68\xf5\x72\x53\x98\xa4\x12\x6a\x53\x14\x49\xfd\x24\x56\x7a\x9c\x62\xbf\xc4\xe6\xe6\x8b\x76\x91\x9e\xf2\x5b\xe8\xfe\x2b\xf8\x57\x24\x69\x6d\x8a\xbf\x78\x06\xbd\xca\xd3\x6c\xb0\x47\x90\x36\x1c\xf0\x61\x04\xd5\x29\xf1\xf2\x45\x5e\xdd\x88\xf7\xf5\x38\x83\xc1\xde\x14\x15\x3e\x49\x1c\x5d\xe9\xa2\xda\xe7\xcf\x5f\x88\x8d\x1c\xf7\x24\xe5\x63\x33\xca\xe1\xa6\x2c\xda\x4a\x52\x39\x88\x00\xcf\x57\xaf\x9e\x6e\x48\x69\x12\x53\xad\xf2\x4a\x0b\xb0\x29\x8e\x77\x97\xfc\xa5\x5f\xbd\x7a\xf1\x92\xe7\x89\x9a\x17\xed\x6c\x86\x42\x6e\xe6\xed\x4c\x61\x50\x72\x42\x3d\xdb\x7c\xaa\x0a\xc4\x30\x3d\x27\xc1\x46\xf8\x2c\x7c\x16\xd6\xd2\xf5\x62\x7a\x36\x4b\x2f\x67\x49\x34\x35\x04\x97\x5a\x75\x4c\x7a\xc9\x56\xaf\x9e\xb5\xdb\xea\x29\xa1\x4a\xeb\xc9\x24\x1a\x9b\xc1\xec\x3c\x7b\x95\x27\x4d\x87\xb7\xe5\x70\x09\x33\x82\xd1\x28\x6f\xff\xc5\x2b\xf8\x97\xa7\xe8\x5a\x4a\xa2\xfa\x25\xbb\x74\xf4\x2b\xe4\xe6\x30\x4a\xb5\x48\x41\x99\x23\x7f\x89\x0d\xf8\x8f\xd0\x30\x06\x66\x2b\x67\x5f\x18\xf2\xb0\x4d\x68\x98\xa4\x7a\x9a\x15\x64\xd9\xd8\xd8\x14\x08\x3b\x93\x83\x69\xc4\x11\xce\xcc\x8f\x3e\x8f\xc6\x53\x91\xa4\x09\xf2\x1b\xfc\x23\xb4\x0f\xcb\x67\x59\xe1\xa6\x99\xe5\x8f\x80\x99\xb0\xa0\x7a\x09\xa3\x61\xf3\x96\xe2\xfc\xf9\x06\xa4\x41\xa7\x6e\x35\xad\x98\x69\x13\x47\x0e\xe3\xb7\x3a\x8e\x93\x6b\xe0\x27\x15\x86\xc0\x0b\xd8\xe1\x5b\x4d\x07\xc9\x58\xdf\x2a\x7d\x5d\xc8\x81\x36\xa1\x83\x24\x2b\x09\xf9\xe2\x95\x78\x46\x68\x34\x56\x11\x1f\x1b\x86\x90\xea\xb9\x7c\x2e\x4d\x5a\x1f\x10\x7f\x06\x6c\xb7\x41\x68\x74\x95\xa4\xb7\x86\x08\x58\x4d\xc1\xac\x61\x5b\xbf\xd8\x94\x84\xc6\xfc\x4a\x8f\xf1\x55\x8d\xbf\xf4\x0b\xfd\x22\xe4\x55\x92\x88\x67\xd3\x81\x29\xda\x0e\x9f\x43\xfa\xf5\xb8\xe8\xc6\x4b\x19\x22\x9f\xc6\x7a\x94\x8c\xe5\x20\x0a\x43\x64\x41\x20\x35\x48\x9c\x38\xea\x0f\x0a\x49\xc1\x95\xda\xd4\x2f\xf2\xb4\x52\x0a\xb4\x37\xdb\x9b\xed\x22\xd1\x4c\x53\x9d\x4f\x66\x4c\x2b\x69\x59\xd2\x28\xe4\x21\x57\x1b\x45\xb6\xe1\x15\xf5\x14\xfe\x95\x69\x06\xb7\x57\x6d\xad\x5f\xb5\xab\xc4\x7b\x80\x25\x1d\xc5\x0b\xd9\xc9\xd3\xca\x59\x14\x86\xbc\x0d\xb3\xc8\xa4\x56\xd3\x68\xa3\x2d\x36\x78\x99\x5e\xf2\xef\xe6\x4b\xa9\x81\x68\x8f\x4c\xba\x35\x8f\x5e\xbe\xdc\xdc\x7c\xf5\xaa\x28\x60\x4d\xa4\x7a\x46\xa6\x75\x9c\xd7\x25\xda\xf2\x99\xd2\x79\x46\xd5\xef\x30\x0c\x35\x76\x67\xa4\x73\x91\xd7\xce\xa3\x05\x6e\x4f\x37\xa4\x7a\x8a\xa4\x19\x63\x1c\xf8\x1d\x48\x5e\x49\xa1\x82\xb7\x47\x3c\x4d\xb0\x9b\xc0\x85\x50\x8d\xd9\x10\xd5\x56\xa2\x17\x2f\xa4\x82\x9e\x9a\x2c\x4b\xac\xc2\xc8\x9a\xc4\x52\x34\x09\xfe\xfc\x39\xd0\xd5\x24\x4f\x66\xe9\x24\x06\xe8\x57\x4f\x5f\xb6\x95\x28\x92\x2d\x2a\x3e\x95\xe2\xe9\xcb\x4e\x99\x61\x89\xa3\x97\xe2\xc5\xa6\xd6\x65\xce\x04\x96\xfb\x6a\xd2\x84\xfc\x55\x89\x91\x2d\x7c\x9e\x6d\xaa\x0e\x88\x46\x93\x63\xc4\x4f\x3e\x23\x5e\x76\x9e\x6f\x3e\x27\x74\x14\xa9\xb1\xc5\x8d\x9d\x57\x9d\x57\x2f\xa1\xdf\xd1\x38\x93\xa9\xe6\x23\xb3\xb4\x86\x30\x86\xa3\x68\x9a\xdd\xa6\xc9\xb4\x58\x5d\x35\x20\x9a\x48\xc9\xa7\xd1\x38\x4f\x12\xcf\x09\x1d\xf3\x2b\x7e\x91\x54\xd2\x45\x69\xae\x08\x7d\x34\xe6\x57\xb7\xc5\xfa\xd3\x26\x34\x89\x55\xcc\x25\x42\xa8\xf0\x39\x8c\x06\x4a\x7f\x24\xbd\x11\x01\x18\x57\x29\x17\x40\x73\xb1\xa9\x37\x9e\x12\x6a\x2d\x04\xfc\x39\x02\x61\x82\xe9\x52\x18\x3e\xcb\xd3\x72\xea\x2b\xfe\xb2\xad\x5e\x10\x3a\xe1\xb1\xb6\x85\x8f\xd6\x7a\x13\x46\x10\xd3\x8b\x59\xb1\x19\x8a\x57\x9b\x26\xcd\xa6\x20\x0f\xb5\x06\xba\x43\xba\x4d\x3f\x25\x5e\xb6\x41\x5c\x4f\xf8\x84\xdf\xf2\xeb\x41\x34\x31\x24\x08\xd5\x73\x42\x27\x9a\xcb\xc1\x64\x16\x86\x86\x00\x5c\xbc\x82\xb4\x74\x86\x92\x68\xf3\xf9\xd3\x90\xd0\x72\x92\xc9\xb6\x14\x84\x4e\xe2\x19\x90\x5a\x29\xde\x56\x8a\xd0\x49\x72\xad\x4a\x51\x2e\xda\x1a\xd9\xb5\x64\x9f\xcd\x9c\x86\x45\xb7\x0d\xab\xa6\xc9\xf4\xb6\x50\x53\x60\x49\x83\x45\x2d\x4d\x6e\x79\x31\x7d\x9e\x75\x5e\xbc\x82\x21\x9b\x72\xa5\x62\x5d\x40\x6e\x8a\x67\xcf\x3b\x4f\x21\xb5\x98\xe0\x7c\xb3\xfd\x72\x03\x12\xc6\xaa\xac\x2f\x7c\xc6\x9f\xbd\x68\x13\x6a\x4f\x78\xbd\x29\x9e\xbf\xc4\xa4\xe9\x40\xc7\x46\x77\x09\x9f\x03\xad\xa6\x91\x1e\x8f\x61\x5a\xf1\xf6\xf3\x8d\x0d\x18\xfc\x69\x14\x5f\xa1\x10\x95\x6d\xf8\x47\x68\x5d\x42\x68\x41\xa8\xcd\xec\x2f\xf8\x73\x94\x93\x35\x79\xd1\xde\x6c\x83\xd8\xaa\x89\x8a\x22\x6d\x5c\x88\x02\x0e\x8c\x7a\x6f\x76\x84\x2f\x43\x42\x6d\x51\xf2\xec\xc5\xe6\x06\xac\x11\x19\x4a\x56\xb5\x21\x9e\x81\xb0\xcf\x34\x0a\xdf\x76\x2e\x7c\xb3\x41\x34\xcd\x90\xe0\x6a\x53\x84\x6a\x93\xd0\x2c\x19\xf1\x2c\x31\x6b\xcc\xd3\x67\x2f\x09\xad\xcd\xb5\xb6\x6e\xab\x36\xa1\xe5\x22\xaf\xf5\xe6\x06\x90\xe3\x7a\xa0\x79\x86\xf3\x48\x69\xf1\x14\xe2\x30\x35\x76\xb4\x09\x4c\x47\xc9\xb0\x50\x60\x61\x19\xa9\x09\x36\x18\x57\x93\x50\xf2\x29\x47\x59\x66\x7b\xe8\xd6\x2d\x0b\x9c\x95\xf7\x0b\x4b\x0b\x8c\xf9\xae\x34\x63\xd7\xba\xc7\xbb\xd7\xba\x89\x67\x17\x6f\x46\x68\x8a\xab\x5e\x15\x13\xad\x44\xb1\x3d\xd8\x14\x53\x29\x1c\x41\x53\xc9\x5d\x2a\x3c\xc9\x8e\x74\xf1\x46\xb0\xb4\xbf\xe1\x0a\xe0\x6f\x2b\xf0\xd9\xc0\x35\x0f\xa1\xee\x8e\x70\xf7\xb1\x3b\xf2\xb9\xb1\x50\x04\xf5\x26\xa4\x81\xbf\x36\xd5\x17\xe7\x45\xbc\x49\x56\xa2\x29\x7e\x87\x90\xaf\x5c\xf1\x38\x52\x2b\x32\x89\x93\x74\x65\x8a\xdd\x21\xae\x67\x79\x43\x59\xbb\xe7\xd5\xd5\xa2\x27\x4b\xfa\xe9\xce\xe7\x06\x79\xff\x43\x30\x9f\x03\x62\x36\x56\xb8\x3d\x3c\x86\xed\xe1\x5f\x4e\xcb\x35\xff\x5b\xfb\xc3\xbd\xc2\xb4\xb0\x5a\x34\xe0\x96\xa7\x5b\x07\xba\xc9\x9b\xe4\xef\x45\x8c\x07\xfa\xc6\x60\x4d\x5c\xef\x59\x69\xb0\x29\x2e\x71\x1f\x6b\x4e\x35\xe7\xf6\x6e\x09\x31\xb1\x5d\x61\x46\xc6\xfc\xb3\x67\x59\x65\xfd\x61\xb1\xc9\xed\xd0\x0d\x97\x76\x5e\xb8\xb4\x4c\x79\x7a\x2f\xe5\x79\x9e\x62\x39\x04\xed\x5b\x7b\xc9\x01\x37\xa7\xad\x03\xbc\x81\x28\xe1\xd7\x6c\xc6\xf1\x7b\xa3\xf3\x79\x7b\x9b\xcf\xe7\x1b\xcf\x9f\x6f\xf1\xf9\x3c\xe4\xe8\xac\xd5\xde\x16\x26\x49\x60\x92\xc4\x24\x69\x92\xaa\xf3\xbe\xbf\x89\xf3\x77\x93\x37\x4f\x74\x53\xc0\x1f\xd9\xfc\x9b\xb8\x8b\xe4\x39\x79\xb7\x6b\xc8\xf3\xb7\xeb\x71\xf6\x61\xe4\x70\x7f\x08\xdd\x7a\xe1\x02\x4a\x1f\x46\x8e\xa8\xe2\x12\xe2\xb2\x8a\x17\xc7\x0a\x40\x78\xd1\xb4\x4e\x1d\xde\xda\x67\x76\xd0\x55\xd8\xf5\xc2\xe6\x94\xe2\x91\xac\xfd\x61\xcf\xfa\xf9\x58\x3b\x58\xdf\x78\xfe\x1c\x8f\xc8\x3a\x18\x44\x67\xa1\x0d\x13\xb4\xbd\xf1\x05\x7e\x3a\x90\xea\x7c\x8f\x9f\x47\xcd\x97\xcf\xdb\x74\xc8\x5a\xcf\x9f\x38\xaa\xa9\x5d\x4f\xa1\x73\x8d\xa3\x18\x13\xbd\x90\xbd\x68\x3f\x71\xf0\xbb\xb5\x8e\x5a\xd3\xe6\x11\xb9\x3c\x95\xaf\x89\x3c\xb5\xd9\xd9\x68\x43\x0e\xba\x1f\x60\x9e\x58\x93\x45\xde\xc6\x33\x74\xab\x68\x6f\x0d\x1b\x8d\xd6\xf3\x6d\x36\xec\x61\xfa\xba\xb3\xf1\x64\xe8\x76\x8b\xf0\x1a\xc4\x4a\x5e\xc1\x73\xd2\xb0\xf9\xf4\x45\xdb\xfd\xd7\xd3\x17\x6d\xda\xa7\x43\xfb\x73\xb4\x25\x27\xb4\xb7\x65\x4f\x36\x59\xa7\xdb\xd9\x42\x6b\xd8\x1a\xab\x9e\x0b\xe8\x6c\xbf\x78\x22\x7b\xbc\xf9\xc2\x7c\x18\xf8\x89\xec\x76\xb6\x37\x9e\xc8\x9e\xe8\x6e\x6c\x3f\xc5\x1c\x93\xee\x6c\xac\x3f\x5d\x93\xee\x93\x17\x5d\xfb\x0c\xfb\xa4\x4e\xe5\x8e\x39\x84\xdc\x08\x8c\x4d\xc5\x3c\x2a\x88\x94\x6e\x07\xeb\x4f\x5f\xb4\xf3\x6f\x94\x0a\x57\x31\xcd\x42\xb6\xf1\xfc\xf9\x13\x69\x8e\x95\x8d\x5b\x92\x21\x73\xeb\x39\xe0\xfb\xc4\xe9\x34\x85\xdb\x95\x4d\xb1\x26\x9e\x48\x1a\xb2\x8d\x27\x72\xad\x4f\x15\x96\xfa\x38\x72\x42\xda\xa7\xbc\xd9\x59\x7f\x0a\x83\x65\xa7\xc1\x68\xd9\xf1\x35\x80\xa9\x91\x4c\xb9\xc6\x9d\x56\xe7\xbf\xa1\x1b\xa0\x78\x78\x33\x62\xeb\xff\xfe\xcb\xe9\x75\xfd\xf6\xda\x2b\xbe\x16\x06\xbf\x9f\xde\xb9\xbf\x3b\x74\xe3\xee\xf1\x7a\x44\x4f\x0b\xe3\x67\xda\x17\x6e\xef\xa7\xe3\xb4\xe7\x7e\x67\xed\x55\xf0\x53\xfd\x6e\xd3\x8d\x3b\x97\xfe\x9c\xf6\xfe\x49\xda\x4f\xf7\xf1\x7a\x54\x49\x9e\xa3\x3a\x09\x3f\x89\xc0\x39\xd5\xbc\x78\xa5\x11\x27\xb1\xf0\x3b\x41\x21\xe0\x31\xba\x11\xb8\xd4\x4c\x6b\xff\xa9\xb9\x39\x61\xde\xc3\xd8\x78\xfe\x7c\xdb\x5c\x47\x65\x32\x8f\x49\xe3\x48\x94\xc7\x8a\x17\x6c\x7c\xf4\x8e\x2d\x9e\x0d\xf1\x6d\xd7\xca\x0f\xa3\xc5\x07\xaf\x3e\x04\xbd\x6f\xba\xc9\xed\xc7\x3a\x3f\x59\x87\x74\x3b\x17\x8e\xa4\x6d\xda\xa9\xd3\x58\x3e\x81\x41\x6f\xfe\x7f\x69\x7b\xd7\xb6\xb6\x71\xe6\x71\xf8\x3d\x9f\x22\xf8\xee\xa6\x76\x23\x8c\x03\xdd\x6e\xd7\x46\xcd\xc5\x21\x2d\x94\x33\x84\xd2\x36\xf8\xde\x4b\xb6\x65\xc7\x24\xd8\xc1\x71\x80\x40\xf2\xdd\x9f\x4b\x23\xc9\x96\x93\xd0\xdd\xbd\xff\xbf\xe7\x05\x41\x96\x46\xa3\xd1\xe8\x34\x92\x46\x33\x7a\x93\x75\x1a\xaf\x6b\xb9\x82\xd7\x2c\xbe\x59\xc6\x37\xd5\xf8\x8d\x32\x7e\xc3\x55\x27\xb5\xe3\xbb\x8a\xd6\xe8\xd1\x9d\xde\xb5\x90\x85\xd8\xd8\xaf\x5c\xc5\x9d\x2c\xc2\xb1\x51\x2f\xfe\xe6\xa1\x4f\x17\xce\x04\x4b\x6f\xee\xd2\x48\x1d\x3c\xaf\x7f\x81\x79\xcc\xf6\xba\x81\x8b\xf6\x7a\x76\x87\x32\xc6\x07\x2e\x22\x46\xe3\xaa\x0c\xcf\x0c\xc7\xef\xfa\xd4\xd5\x97\x1a\x2e\xf0\xcc\xbd\xde\x1a\x31\xf7\x7a\x8a\xfb\xd7\xae\xe5\x76\x3f\x2b\xd5\xec\xd0\xaa\x87\xb1\x9e\x49\xbc\x91\x0e\xec\xd1\x37\xfe\xfc\x93\x73\xf4\xf7\x8f\x7f\x70\x16\x36\x9b\xef\x81\x67\xc6\x7a\xb3\xbd\x69\xac\x95\x60\x9e\x04\xf3\x24\x98\x57\x80\xa9\x53\xe4\xd5\xd2\xe2\x58\x21\x6b\xd0\x60\x0d\x19\xd1\x64\x11\x4d\x25\x62\x83\x45\xb0\xf9\x56\x31\x66\x2c\x98\x79\x28\x5f\x22\x6c\x79\x2d\x62\x7b\x42\xa3\x9b\x26\x01\x66\x31\x9e\x4d\x66\x07\x44\x3f\xbb\x9b\x73\x4b\xad\x5e\x49\xde\x71\x35\xf7\x89\x78\x2b\x43\x13\xf0\xf1\x0b\x59\xcc\x88\xe6\xdc\x98\xe5\x6b\x96\x29\x68\x12\xac\x89\xec\x0a\x71\xe7\x25\x71\xe5\x43\xd5\x89\x8b\x3c\x78\xa5\xca\x88\x93\xcf\x95\x68\x12\x54\xfa\xc8\xc5\xdd\x1c\x8b\xf8\x93\x28\x96\xb7\x3b\x71\x8d\xad\xe2\x49\x13\x64\xe4\xc4\x96\xaa\xc0\x77\x73\x8f\x55\x27\x2e\x0c\x45\x80\xfe\x84\x3d\x85\xc2\x8e\x00\x25\xe0\x23\x6d\x90\x46\xb1\x4f\x06\x09\xb9\xa3\x15\x2d\xf4\x6f\xaa\x41\x12\x9d\xe0\xd7\x4c\x92\x88\x77\xe9\x2a\x1e\xb0\x4b\x62\xb4\x2a\x71\xf6\x20\x52\x3d\x3e\xa9\x03\x9f\x60\x7c\x3e\x9d\x12\x8c\x4f\xe1\xf7\xa8\xd7\x3a\xb7\x41\xf8\x34\x53\xc5\x4c\xcf\x37\x29\x35\x11\xe5\x32\xf0\xdc\x21\x78\x5f\x5c\x38\xf3\x4e\x09\xfd\x16\xfa\x2c\xef\xaf\xc5\x74\xcc\xa5\x15\x52\x31\x91\x75\xcd\xeb\x48\x30\xb8\x5a\x75\xb8\x0b\x66\xd2\x3d\x08\xdc\x7a\xfd\xd6\xd3\x09\x52\x8c\x7c\x29\x33\xd2\xf7\x39\xa5\x79\xf3\x56\xf7\xba\xbb\x81\x8b\x3c\xf3\xd2\x67\xad\x7c\xfb\xa8\xfb\xe8\x65\x94\x4f\x06\xd4\xf6\xba\x4f\xee\x0c\xe6\x4d\xce\x29\xaf\xfb\xec\x15\xaa\xfb\xfd\x58\xe7\xdf\x2d\xf8\x67\x77\xe1\x9f\xeb\xfc\xd4\x83\x8a\xaf\x0b\xee\xb3\xca\x33\x0c\x6e\xc8\x0a\x71\x5b\x97\xac\x4b\xc1\x8a\xe6\xe1\x54\x22\xaa\xd7\x3d\xf3\x73\x42\x5a\xdc\x64\x06\x44\xd9\x92\x5e\x24\x72\x83\x7b\x0b\x41\x8d\x19\x07\xf5\x7a\xe7\x8e\xc5\x9a\x71\x60\x2c\x73\x9e\x79\x2d\xfb\x0b\x26\xd3\xe9\xcb\x8c\x55\x65\x03\x57\x9c\x63\x16\x9c\x28\xe2\x9a\xae\xea\x00\xd8\x37\xe2\x50\xef\xc7\xba\xdf\x0d\x5c\x56\x87\xc0\xc5\xd1\x2d\xff\x2a\x34\xbd\x0a\x1b\x39\x81\x8b\xb9\x5b\x1c\xd1\xb3\x18\x14\xc4\x32\x3a\xba\xa0\x2a\xb0\x24\x9f\x3f\x9f\xcf\x57\xf3\xbd\xcc\xe6\x72\xc9\xa6\x0e\xc4\xd5\x98\x0a\xcf\x42\x85\xe2\xc6\x46\xc5\x0b\xac\xc1\x8d\xe9\x34\x51\x50\x75\x0e\xea\x6f\x05\xe0\xef\x85\x00\x91\x8a\x93\x4f\xdf\x5d\xda\x81\xee\xe6\xac\xc6\x70\xad\xf2\xf3\x16\x57\xe4\x3c\x6f\x7d\xbe\xd3\x8f\xee\x74\xe8\xd9\x68\xff\x4e\x07\x15\x11\xc3\x26\xb6\xaa\xdd\xfe\xa3\xbc\x37\xe7\xb5\xf1\x4a\x5d\x71\xde\x1c\x62\x8a\xf3\x50\xa9\x7f\xc9\x8d\x69\x9f\xdd\xe9\xca\xcc\xe4\xb3\xd9\x05\xa9\xb3\x92\x0f\x93\x8b\x61\x2b\xd2\xf0\x0f\x3a\xe7\x51\x5d\xf4\x1f\x36\xcd\x16\x2c\xaf\xd7\xfd\x2d\x86\xb2\xe5\xdb\xa4\xc5\x02\xfc\x4a\x5e\x1a\xaf\x80\x67\x23\x12\x98\x55\xf5\x13\x14\xc7\x50\xb4\x20\x54\xb9\xc1\xe7\x60\x41\xd1\x0f\x24\xe5\x01\x5a\xb0\xb6\xf9\x53\xce\x0d\x16\x97\x21\x2a\xb7\x7f\xaa\x33\x22\xcb\xe5\x6f\x08\x91\x8f\x9b\xaa\x9f\x9e\x2f\x03\xdd\x43\x73\x5e\x8d\x15\x0b\xcf\x95\x8b\xc7\x3e\xf7\x0c\x2e\x24\x21\xbf\xbc\xc5\xf4\xf1\x9a\xee\x37\x9a\xd2\x3b\xbe\x5f\x3e\x35\xb0\xa4\x55\x3f\x95\xb8\xd3\x58\x6e\xa5\xc1\x41\xd0\x9a\x10\x68\x4b\xa3\x9b\x7c\x05\xf4\xd6\x02\x98\xfa\x79\xd8\x37\x5a\x81\xad\x0e\x4e\x52\x18\xf7\x81\x35\x69\x12\x48\x6f\x00\x57\x7d\x7c\xc5\x7a\x0e\xff\xda\x9e\xb0\xaf\xb2\x19\xb6\xa9\x31\xbb\xc6\x24\xe1\xb6\x37\x0e\x5e\xb3\xbd\x61\x4e\x82\x99\x73\x6d\x7e\x0b\x5e\x4b\xbf\xea\xb3\xf4\xde\xe8\xb5\xf4\xed\xc9\x2f\xfd\x0f\x11\xf1\xf4\x78\x12\x20\x81\x0e\x89\x6c\xdc\xb5\xd0\x60\xff\x95\x47\x82\x4a\xc6\x6f\x7c\x11\x37\xaf\xfa\x46\x11\xde\x9e\x18\xaa\xc0\xe0\x49\xe5\x07\x98\xbf\x00\x62\x77\x17\x9f\x3b\x72\x86\x89\x7d\xf9\xee\xf3\x94\xea\xf0\x29\xd8\x76\x46\x71\x53\x42\x99\xbb\x54\x00\xed\xf6\x74\xf6\x25\x60\x32\xaa\x60\x7a\xe3\x49\x4c\xbd\x40\x87\x4f\x01\x75\xe2\x29\x98\xc6\xd2\x57\xd8\x5d\x5f\x67\x5f\x02\xe6\x3e\x56\x60\xbe\x47\xf5\xba\x9f\x08\x01\xc7\xfc\x1e\x09\x98\x64\x80\x77\x7b\x05\x90\x7f\x2e\x1f\xcb\x25\x03\xf8\x14\x50\xdf\xf6\xa5\xbd\x18\xf3\x4b\xdc\x62\x3f\x7c\x68\x41\xe2\x75\x99\xb8\xcf\x12\xf7\xd5\xc4\xfd\x88\x5b\xa5\x27\x66\xbb\x27\x71\xef\x47\xb0\x40\x9a\xed\x9e\x78\xc4\xb7\x1f\x99\xb7\x11\xeb\x50\xe5\x57\x99\x72\x11\xaa\x29\x17\xa1\x7c\x87\xf8\x20\xec\xdd\x93\xee\x03\x28\x10\xcb\x48\xf8\x16\x30\xde\x9f\x00\x33\xbb\xc6\x1e\x74\xcd\x95\x6b\xf3\xf6\x76\xb1\x0b\xbc\x84\xf1\x60\x60\x43\x0e\xdf\xd3\x0d\xb4\x4b\x6d\xd1\x5c\x68\x94\x67\x69\x5f\x7c\x66\x14\x8d\x89\x2d\xd8\x8f\xbe\x47\xb6\xe0\x32\xf2\xcf\x6d\xc1\x34\xf4\x25\xb6\x05\xc7\xd0\xbe\x08\x5e\xef\xa3\x76\xcf\xee\xf5\x65\x1d\x0c\x34\x24\x79\x4e\xb3\xa4\x88\x7b\x08\x8c\xd9\xcc\x59\xd9\x9d\xeb\xd8\x8a\x19\xa7\xfd\x88\xaf\x2b\x0e\x08\x59\x98\x4b\xf5\x4d\x9b\x98\xb7\x11\x82\xf0\x86\x4d\xcc\x8b\x10\xa5\x5c\xcd\x94\xa5\xfc\x78\x90\x5f\x2c\xed\xe7\x03\x7a\x62\xb1\x4f\x4d\x04\xa9\x93\x26\x7a\x62\xf1\xfb\x1e\x82\xf4\x23\x0f\x8d\x47\xf4\x14\x1c\xd1\x83\xd9\xd1\x38\x89\x76\xd2\xa7\xab\x24\xce\x47\x36\x31\x1f\x72\x34\xea\x91\x6c\xd8\xc9\x48\x32\x8a\x19\x7d\xac\xbc\xf6\x4c\xaa\x7a\x8b\x6a\x08\x22\x3d\x78\x94\x21\x05\x16\xf3\x80\xf1\x54\xec\x43\xcc\x6f\x81\x6e\x20\x2f\x92\x9f\xbd\x11\xf8\xd0\x20\x78\xbe\x0d\xd8\xa7\x50\x9a\x7d\xad\x31\xf8\xe7\x35\xd8\x35\x92\xad\xc2\xe3\x2a\x19\xef\x63\x11\xbb\x47\x46\x3d\x50\xad\x2b\x5a\x2b\x7b\x2a\x5a\x2b\x9b\x14\xad\x15\x65\x24\x88\x69\x92\xdb\xa4\x68\x29\x6f\xf6\xab\xf7\x8b\x5f\x2f\x4f\x4f\xea\x75\xf6\xdb\x8d\x02\xb7\x25\x03\x3a\x31\xec\x20\xe1\x6e\xcd\x7e\x31\x69\x79\x62\xee\xb9\xbd\xd5\xa5\x8b\xb8\xea\x3c\x55\xf6\x03\xe1\xb8\x8d\xb0\x79\x45\xce\x4d\xbb\xbb\xb0\x13\xe8\x05\x45\x4c\x46\x8d\xd2\x53\xda\x7e\x24\x37\xe8\x51\xd9\x03\x1d\x8f\x0d\xb8\x6f\x95\x01\xe7\x78\x6c\xa8\x7d\xab\x0c\x35\x18\xb6\xd8\x9b\x89\xe6\x85\x66\x15\x61\x73\xb0\xaf\x1b\x88\xb0\x11\xe7\x19\xcb\x0c\x46\xfd\xac\x58\x20\x14\x02\x12\x48\xe4\xe7\xb3\x6b\xf3\x94\x2e\x3a\x15\xdc\xdd\xc5\x20\xc8\x83\xa9\xba\x57\x97\x90\xdd\x5d\x96\xbe\xdb\x5b\xcc\x7f\x46\xd9\x86\x9e\xc0\x86\x1e\x96\x91\x60\xce\x10\x9f\x9c\x5f\xa1\x14\xa7\x90\x1b\xe4\xd4\xe9\x41\xae\x43\xff\x55\x17\x78\x19\x05\x27\x85\xfd\xc5\xa2\x4f\x3c\xac\xd6\x9d\x56\x76\x34\x09\x38\x79\x32\x4f\x3c\xdb\x52\xa4\x00\x5f\x3e\x76\x66\xf3\xf4\xf6\xad\xee\x71\xba\xe1\x41\xfb\x65\x8f\x04\xe9\xe3\x6b\x64\x78\x7f\x2a\x45\x55\x36\x4f\xd6\x16\x31\xcf\x68\xbd\xae\xaf\x02\xf7\x59\xdf\x90\xf2\x28\x29\xe6\x10\x16\x7e\x50\xf7\x7a\xc9\x3c\x8a\x13\x0f\xcc\x81\x99\xf7\x71\xbd\x2e\x30\x65\xaa\x42\xfa\xb0\x62\x35\x31\xe1\xe6\xb8\xb7\x30\x2b\x1b\x0e\xa3\xee\x13\x2c\x3a\xf6\xcb\x2e\xb5\x2d\x18\xcb\xf6\x55\x8f\x4d\x99\x96\x1c\xc4\x57\x3d\xf5\x15\x74\x96\x2c\xf8\x80\x62\xb9\x05\xec\x39\xc7\x40\xd8\xc4\x5c\xca\x89\x4d\xd5\x94\xf9\x48\x31\x4c\xb5\x1c\x09\x61\x93\x37\x4c\xdb\x42\x12\x6c\x05\x76\x93\x23\x2e\xc5\xcd\xd6\x33\xb5\xcf\x67\xea\x49\xc3\x9b\xca\xe6\x4c\xbc\x1a\xc3\x9e\xe1\xe3\x55\x6b\x5e\xfc\xe7\xfc\x15\xa9\x4d\xae\x1a\x0f\x82\x1a\x6b\x09\x8c\x3d\x73\x77\x97\xed\xa0\xcf\x28\x0b\xb3\x76\x62\x7c\x65\xe1\x0c\xc2\x27\x1e\x0b\x9f\xc0\x2e\xfb\x3e\x66\x61\xd6\x00\x84\xad\xc5\xd8\x33\x93\x01\x0b\x7f\xdb\x67\xe1\x6f\xfb\x2c\x7c\x0d\xe1\xeb\x7d\xe3\x85\x95\xd0\xee\x09\xe1\xcf\x63\x41\x1f\xfb\x18\xe3\xa0\xb5\x6a\xd9\x9c\x26\x5f\x12\x17\xb4\x56\x9b\xb6\xcf\xc6\x3f\x0e\xcc\x5b\x26\x15\xb0\x71\x8f\x03\xf3\x22\x64\xe1\xa7\x26\x0b\x3f\x35\x59\x78\x02\xe1\x09\x84\xf7\x3d\x16\xde\xf7\x58\xf8\x08\xc2\x47\x10\x7e\xc8\x59\x39\xe6\x43\x3e\xf3\xc5\x2b\x9e\x87\x00\x34\xf9\x1f\x02\xf4\xb7\x44\x6c\x4f\x58\xde\xed\x09\x43\x74\xd5\x67\xe1\x2b\x78\xa0\x30\x09\xa0\xe0\x40\xd1\xde\x87\xca\xe5\x09\x1a\x27\x58\xfb\x4a\x92\xda\x67\xea\xd5\x8e\x49\x56\xdb\x1e\x66\xb5\x63\x32\xa9\x7d\x1d\x27\xb5\xaf\xe3\x41\x6d\x7b\x1c\xd5\x2e\xe9\xb0\x76\xea\xe7\xb5\x93\xf4\xa1\xb6\x47\x7d\xcd\x1c\x0d\x07\x71\xae\x6b\x35\xcd\x40\x24\x24\xb8\xab\x5d\x8e\x93\x80\x4c\x34\xa4\x1d\xa7\x22\xd0\x19\xd3\x11\x84\xc2\x08\x79\x11\xd2\x3e\x67\x31\x7c\x5e\x85\xae\xb3\x92\x27\xf8\xa5\x7d\xb1\x7d\x69\x77\xb5\x9d\x5d\x0d\x69\xdb\x7b\x9a\x8b\xda\x17\xdb\x27\xdb\xc7\x6d\x88\xa4\x61\x9a\xd1\xda\x6e\x2f\x8b\x47\x39\x4b\x4f\x92\xb4\xb6\x97\xde\xc5\x49\xac\xb9\xe8\x64\xfb\xe2\xe2\xf4\xfa\xf8\xf4\xa4\xb3\xcf\x80\xbf\x6a\x68\x3b\x44\x5f\x42\x94\xc2\x2f\xfb\x66\x7f\x69\x88\xce\x43\x74\x12\xa2\xa3\x10\x69\x0c\xff\x65\x67\xfb\x64\x6f\xfb\xe8\xf4\xa4\xfd\x3f\x22\x28\x33\x90\x64\x4c\xb2\x89\x86\x76\x42\xa4\x1d\x93\xcc\xef\x31\x1a\x87\x59\x3c\x60\x1c\x80\xea\x7f\x1d\x27\x14\xfe\x0d\xd8\xd7\xf6\x38\x1a\xb3\x8a\x7c\x0b\x91\x76\xea\xe7\xa9\x47\x33\x0d\x1d\x87\x68\x12\xaa\x64\xfd\xff\x84\x7f\xff\xf4\xa2\x23\x50\xff\x3f\xb5\x74\x49\xe8\xff\x19\xca\x95\xeb\x76\xfb\x70\x6f\xfb\x07\xab\xf4\xbf\xea\x42\x0a\x31\xff\x3b\x0a\x56\x8b\x22\x37\xcb\x5c\x3b\x4e\x93\x5a\x67\x4c\x6b\xd7\x34\xa8\x75\x7a\xe3\xda\xe7\x2c\xae\x5d\x92\xfc\x57\x6c\xf8\xf7\x08\x78\xef\x2b\xc9\x3e\x87\x5e\x77\x1d\x22\x1a\xb1\xdf\x6d\xd6\xed\x16\x7b\xeb\xdf\xc2\x33\x62\xce\xaf\xb6\x2f\x3a\xed\x0b\xc6\x8b\xf3\xa6\x86\xb4\xf3\x0d\xf6\xb3\xc9\x7e\xde\x6b\x2e\x52\x92\x9b\xa3\xbc\x76\x3f\x26\x59\xce\x7a\x8a\xb6\x91\x04\xca\xd7\x66\xa6\x7e\xbd\xcf\x7b\xc5\x97\x8b\xb6\x8f\xcf\x8e\x59\xfe\xed\x63\x0d\x69\x67\xc7\x9a\x8b\xf6\xb6\x3b\xed\xcf\xa7\x17\xc7\xdb\x1d\x16\xdf\x6e\xb7\xdb\xa8\x76\x7c\x7c\x7c\x5c\x0b\x50\x0d\xda\xa2\x1a\x16\xc1\x15\xed\x78\x3d\x58\x9f\x4c\x34\x17\x75\x0e\x8e\x15\x04\x3d\xfb\xee\xce\x1e\x8d\x6a\xa4\xf6\xfc\xfc\xfc\xac\x21\x35\x42\xfd\xd2\xd0\x59\xc4\x0b\xaf\xe6\x7f\x69\xce\x6a\x6f\x49\xfe\xb6\xf6\x62\xcd\x34\xb4\xe4\x13\xcd\x07\x5d\xf4\xf9\xe0\xe2\xb2\xb3\xb7\xfd\xe3\xf4\x33\xe3\xb2\xfd\x01\xb1\x7f\xed\x93\xbd\x8b\xed\x93\x2f\x6d\xbb\xfb\x3b\xfa\x20\x60\x58\xfc\xee\x55\xe7\xf4\xf3\xe7\xbd\xed\x1f\xf6\xef\x8a\xd8\xf0\x20\x16\x5c\xe1\x50\xc6\x13\xce\x64\x9a\xb6\x14\x03\x56\x31\xf9\xed\xfd\x74\x6a\x61\x4c\x7e\x6b\x5a\x56\xbd\xce\x63\x2c\xab\xb5\xf1\xd1\xde\xf8\xd3\x01\xf0\xdf\xb9\xbf\x96\x8f\xfc\x5f\xd3\xe2\xff\x37\x25\x92\x4d\x69\xaa\xab\xb6\xa9\x98\xa6\xf6\x42\x32\xe7\xbc\x8c\xad\xd4\x7b\x24\xa7\xfa\x43\xac\xab\xb7\xce\x5f\x99\xb4\x0b\xaa\xbc\x2c\xa0\x98\x58\x2f\x0e\x29\xee\x55\x1b\x94\x1e\xf6\x39\xea\xe9\xd4\x42\xfe\x74\xda\x34\xd0\x93\xd8\xf1\xc2\x97\x61\x27\x4b\xc0\x39\x72\x44\xba\xfb\x01\xff\xdf\xf6\x5c\xdd\x28\xb3\xca\x88\xc2\x24\x25\x7f\x02\x5c\xd2\x2b\x0c\xd1\x80\x47\xec\xfd\x74\x9c\x8d\x74\xab\x12\x77\x1c\x27\xe3\x9c\xce\xc7\x5e\x52\x3f\x4d\x82\x45\xd8\xc1\x20\x1e\x15\x49\xaa\x20\x22\xea\xc6\x6a\xad\x50\x20\x7c\x94\xf3\x3b\xb4\xa6\x65\x7d\x22\xf5\xba\xd7\x7d\x0c\x5c\xdd\xe3\x15\x5b\x6b\xfe\x69\x59\xca\x31\xd4\x35\x7e\x14\xa7\x34\xe7\x94\xe0\x3c\x31\xab\x9d\xc9\xb9\x36\x2f\x94\xf8\x4a\x07\x5a\xd8\xc4\xf0\x8d\x09\xa3\xe5\x51\xda\x7c\xf3\xd8\x9e\x01\x30\xb3\xcf\x73\x4a\x1c\xc2\x11\xb2\xcf\x8b\xd2\xe1\x1d\x81\xf3\x98\x88\xe6\x9f\xc7\x83\xc1\x0f\x4a\x96\x59\x6f\x12\x18\x45\xeb\x73\xf0\x5f\x80\x56\xe0\x8e\xd3\xe4\xf5\x9b\x96\xdc\xe3\x8d\x2d\x60\x19\x23\x7f\x01\x0a\xcd\x3f\x73\x26\xbf\x70\x06\x9e\x7b\x5d\xea\x73\x67\xe0\x02\xe3\xe4\x17\x08\x13\x85\xce\xab\xce\xee\x3f\xe0\xc0\x31\x27\x61\x45\x66\xf9\xbb\xda\xb5\xab\x25\xfc\x4d\x05\x4f\x82\x0a\x34\xf4\xe1\x5f\x80\xc7\xb4\x02\x2e\xba\xf7\x2f\x32\xf4\x94\x0c\x9d\xf8\x8e\x3e\xa7\x09\xe5\xc6\x9d\x7f\x91\xe9\x5e\x66\xaa\x80\xc9\xfd\x96\x3a\x08\x5f\x1b\xc1\x22\xf3\x22\x7b\x4b\x24\x30\x50\x88\x84\x9c\xe3\xaa\x02\x36\x56\xc1\xaa\xdc\x54\xa0\x3e\xab\x50\xac\xa2\x4b\xa1\x4e\x7d\x05\x6a\x69\xf3\x97\xc0\x73\x20\x90\x6f\x45\x66\x7c\x9d\xdc\x9f\x41\xb5\x88\xd7\x28\x56\x92\x05\xfc\xbc\xb3\x7f\xb6\xdd\x31\x27\x94\x64\xa3\xe9\x94\x98\x77\xac\xc4\x51\xc5\x93\x3c\xb0\xbc\x21\x93\x1a\xcd\x8d\x77\x02\x5e\x58\x29\xec\x7e\x66\x6d\xd3\x00\xeb\x63\xde\x7a\x73\xc3\x40\x1e\xf6\x7e\x6b\x6e\x38\xd6\x27\x38\x25\x6a\xe0\xe6\x86\x51\x6a\xb1\xc4\x89\xfe\x90\xc0\x95\x12\x37\x9d\xc5\x5b\x92\xfb\xba\x67\xec\x6d\x8a\xf0\x23\x68\x84\xf1\xf0\x18\x1e\x6a\x96\x30\x81\x31\x23\x66\x40\x26\xa3\xc2\xfb\x3b\x54\x50\x2f\x42\x25\x5d\xa8\xac\x83\x52\x1e\x6a\x6e\x18\x06\x1f\xd0\x8d\x8f\x1f\xde\xb7\x7f\x7f\xc7\xf1\x09\x18\x4e\x07\x2a\xe8\x10\xfd\x4f\xc4\x40\x57\xe1\x28\x15\xf8\xd7\x57\x15\xee\x17\xfe\x71\xc9\x99\x43\xb7\x9c\xd4\xd0\x41\xac\x2b\xec\x06\xfd\x2a\x19\xc5\x49\xde\x30\x5c\xf1\xa4\xa5\x71\x3a\x7b\xcd\xf9\xfe\xaa\xbe\x2a\x4c\xa5\xf3\xea\xaf\x62\xc2\x03\x22\x12\xb0\xb3\x48\x08\x88\x48\xc0\xcf\x22\xc5\xa8\x32\x9c\xed\x5f\xcc\x84\xe4\x91\x3b\xc5\x2d\x96\xad\x27\x79\xcc\x21\x11\xc1\xf6\xb6\xe8\x7b\x7c\xc1\x24\xc5\xbc\xd2\x90\xac\xda\xf2\xc0\xd3\x94\x01\x86\xdf\xc9\x60\x4c\x4f\xc3\x5f\xcc\x16\x21\x9f\xc2\xca\xb7\x5d\xc9\xdc\xf5\x35\xb4\xe6\x9a\x9c\xa6\x95\xc7\x55\xc9\xdc\xad\x97\xb8\x50\x52\xaf\xbf\xd8\x7e\xbf\xdc\xf8\x0b\x56\xca\x77\xa3\xbd\x98\x9b\x25\xe9\x49\xb3\x6a\xfe\x2a\x0e\x4a\x87\x7d\xbc\x67\xdf\x01\x10\x65\xff\x39\x50\xb0\x8a\xe9\x82\x57\x3f\x5f\x08\x61\xb7\x3d\x9b\x81\xd4\xeb\xb4\x78\xa4\x8a\xb1\xa8\x51\xe9\x58\x81\x7b\x87\x01\x93\x26\xcf\xbe\x0b\x3e\x08\xf5\x55\x4f\x84\xa7\xd3\x55\x56\xb3\x6e\xe8\x22\xaf\x1b\xba\x86\x51\x16\x26\x11\x80\x19\x02\x0f\x9e\x90\x43\xa6\xc8\x00\xcb\x3a\x3c\x58\x82\x17\xd5\x05\xd2\xb2\xc8\x86\x12\xbf\xba\xab\xf0\xc2\xad\x8a\xd6\xc7\x96\xbc\x05\x6b\x34\xe0\x92\x96\x53\x01\xd6\xb0\x7d\xf7\x55\xac\xc7\x91\x5d\x8d\x68\xf7\x84\x8b\x40\xfe\xef\xb1\x48\x6f\x3a\x01\x0d\xc9\x78\x90\xdb\x85\xfd\x8e\x76\x96\xa5\x59\x0d\x0c\xd7\xd4\xb8\xdf\xac\x38\x89\x6a\x5a\x83\x34\x72\xda\xf0\x1a\x9a\x5d\x1b\x27\xf4\x69\x48\xfd\x9c\x06\xe0\x39\xa5\x96\x86\xb5\xd4\xbb\x6d\xd6\xb4\xc6\x8a\x6f\x38\x8a\xd7\xa6\x6d\x39\xe7\x41\x7b\xc9\x79\x4e\xce\x1b\x8e\x98\xbb\x79\x67\x9b\x7b\xc5\x2a\x3a\x82\xb8\x97\xbb\xed\x81\xbd\xad\x2c\x12\x2e\xdf\x76\x7c\xc5\x93\x1a\x3f\xc3\x85\xb3\x91\x2c\x6a\x75\x5d\x5b\xb8\x99\xf5\x78\x8b\xfa\x5d\xcf\xc5\x8c\x92\xae\x62\x86\xcc\x9f\x2d\x39\x61\xdd\x29\xe7\xf2\x4e\x8c\xc9\x74\xda\x7d\x99\x29\x2a\x39\xbb\xa2\x6b\xfb\xb7\x3a\x31\x3b\x31\xf2\x2a\x0e\x10\x83\x70\xde\x9d\x17\xef\x0f\x49\xac\x43\x5b\x81\xb1\x79\xb7\x05\x60\x45\x03\xda\x04\x5e\xaf\x77\x7d\xa5\x18\x2a\x11\x2d\x71\x58\x9b\x08\xd3\x1d\x7d\x30\x6d\x08\xd7\xed\xe2\x92\xfc\x65\x86\x20\x23\x77\x47\x6b\xd8\xc5\x61\x2c\x07\x02\x95\x82\xa2\x88\xbd\xa4\xa2\x3a\x7c\x11\xf3\x0a\xa9\x13\x1c\x43\xe6\x71\x4d\xa6\xc5\x27\xf3\xed\xf2\x52\xd3\x7e\x01\x8b\x30\xbe\xab\x5f\x51\x70\x76\x34\x9d\x7a\xb1\xe2\x12\xad\xa2\x41\x25\xec\x01\x7b\x5d\xee\x7c\x4e\x5e\xca\x51\x17\xfc\x19\xd2\xc2\x64\x13\xbf\xf4\x00\xfb\x3c\xf9\x6c\xe6\x61\x32\xab\xdc\x39\x7b\xf5\x7a\x06\x2e\x45\x7d\xdd\x33\x6c\x6f\xb6\xb2\xc3\x24\x70\xf3\x72\xc1\x9f\x4a\x49\x06\x18\xee\xa0\xd8\x72\xe8\x96\x68\x5f\x46\x13\x65\x34\xe5\xb6\xea\x77\xa5\x13\x77\xc1\xe5\x1d\x41\x11\x86\xd3\xc9\x34\xd6\x43\xc3\x08\x70\x3b\xd1\x03\x14\xa2\x48\x71\x43\x02\xce\x7c\xb1\xe5\xf4\xb7\x42\x3e\x44\xfb\xd2\x60\x1a\x07\xee\xf6\x5d\x06\x5f\xd4\x74\x60\xbc\x04\x58\xa9\x18\x27\x6b\x36\x2b\x00\x82\xd2\x14\x64\x50\x1a\x0a\xf2\xc1\x4f\x6b\xb0\xe0\xd2\x41\x39\xa1\xf5\x8b\x1b\xfc\xa8\xaf\xfb\x86\x5d\x71\xe7\x4c\x78\x6d\xd7\x9a\x6c\x57\x43\x1d\xba\xb6\x56\xf8\x5b\x45\x11\x4f\xa5\x2e\xea\x63\x0f\x0d\x70\xe0\xa4\xb1\xde\x67\x53\x5f\x1f\x77\xfb\x6e\x39\x3d\x26\xb8\x5f\xe0\x48\x9c\xb5\xb5\x84\xe3\x18\xb2\xaa\x46\xa8\xdf\x4d\x5c\x34\x30\xe0\xfa\xf6\xb6\xaf\x87\x68\x68\xcc\xca\xa3\xc6\x72\xcf\xf5\x25\x29\x75\x05\x17\x28\x4e\x85\x71\x51\x0f\xc3\x48\x2d\x1b\xaf\x52\x81\xc0\x09\xd6\xd6\x8c\xb2\x76\x9e\x52\xb5\xb5\x35\x2a\xab\xc6\xba\x28\xcb\x06\x1e\x05\xa8\xcb\x49\xbb\xbe\x03\x53\x3a\x4b\x4c\x98\xec\xcb\x99\x4a\x2c\x5a\x15\x0d\x05\x45\xfb\x05\xe3\xc7\x48\xf5\xce\x54\xea\xdc\x97\x8b\x1b\x01\x9f\x23\xa0\xe1\x8d\xf1\x71\x0f\x8c\x8e\x63\xfc\x9d\x2a\xb1\x5f\xa2\xd6\x6a\x73\x4e\x49\xe2\x20\x29\xb5\xb5\xbf\x26\x85\x0e\x83\x74\x0c\x57\x14\xea\xc7\xa0\x8a\xad\xfb\x78\xb9\x63\xb9\xaf\x73\x4b\xb5\x79\xa9\x7b\x60\x9c\x13\xed\x27\xaa\x79\xf5\x7f\x5c\xe3\x8e\x5a\xe1\xe3\x58\xf1\x63\x54\xbc\x69\x26\x3a\x31\x84\x7d\x16\xa5\xb5\x8f\x96\xe8\xa1\xb5\xfa\x70\x64\xd0\x89\x75\x82\x0e\x13\x3e\x4f\xcd\x31\x22\x0c\xc9\xaf\x49\xbb\x8f\xe7\x7c\x64\x71\xe5\xf6\x65\xc4\x94\x6a\xa3\x0a\x77\x4f\xfe\x11\x77\xad\x65\xcc\x8d\xca\x43\x03\x82\x15\xd6\x86\x21\xf9\x9f\xf0\x9d\xbc\xda\x58\x87\x6a\x63\x9d\x0a\x05\x09\x68\xb4\x05\xb7\x79\xd6\x16\x26\x2d\x32\xc7\xc5\xb3\x64\x29\xa1\xa7\xc9\xbf\xa1\x53\xd1\xa1\x17\x14\x9c\x2e\xa1\xa0\x55\xdc\x12\xce\xd1\x70\xb1\x9c\x86\xf3\x7f\x45\x43\xa9\x42\xb9\xac\x3b\x15\x9d\x71\xae\xe8\x4e\x39\xd3\x14\x58\x4f\xcb\x51\x0a\xc4\xf8\xe8\x52\x65\xf2\xd5\xab\x6d\x51\x01\xfb\x56\x31\x6a\x0c\x44\x81\xf7\x6f\x7f\xbe\x9b\xbe\x89\x75\x6f\x3a\xed\xba\xa8\x7c\x6a\xe3\x3b\x8a\xa7\xb6\xab\x3b\xdd\x97\xb6\x59\x83\x4a\xc5\x14\x11\xea\x7a\xde\x81\x99\x24\xfd\x9b\x4a\xd3\xf7\xc5\xdb\x3a\x0e\x17\x2c\x53\x09\x85\x1a\xf8\x46\xe5\x5a\xee\xc7\xab\x95\xaf\x14\xd4\x0b\x15\xf3\x7f\xbc\x51\xdf\xf8\xdc\xf6\x2f\x8a\x7f\x31\x06\xc0\xae\xaf\x87\xbb\xee\x32\x71\x22\x0e\xe7\x6f\xb6\xe7\x26\x0a\xde\xc8\x4b\x27\x8b\x9f\xf3\xad\x51\x5e\x9e\x7b\x7d\xa8\x66\xcb\x9f\xcb\xf2\xe6\x75\x66\x7d\xd7\x7f\x26\xbc\x32\x7e\xc5\x82\x5c\xba\xb4\x11\x00\xf0\x95\x2c\x5e\xba\xd8\xff\xc0\xc6\xc7\x5c\x17\xac\x9c\x48\xa6\xaa\xb9\x2b\x1f\x14\x18\xa4\x86\x5e\xb1\xda\xab\xed\x09\xc7\xaf\xe0\x4b\x90\x6b\x7b\x90\x42\x7f\xe4\x65\x86\x7c\xcc\xda\x99\x2b\x4b\x15\x17\xb2\xcf\x04\x0a\x75\x7c\xcc\x06\xb4\xa9\x28\x85\x28\x40\xba\x67\xee\x52\x0c\x50\x80\x02\xb4\xa4\x8a\xd4\xa7\x02\x05\x9b\x0b\x4c\x45\x69\xa4\x8a\x62\x4c\x70\x59\x50\x45\x8d\xa4\x0a\xf7\x3d\xe2\x70\x47\x25\x5c\xa1\x58\xa2\x40\xf6\x19\x1b\x21\x83\x7f\xce\x33\xb0\xc9\xd0\xcc\x9e\xaa\xd8\xbe\xc4\x6a\xe2\x5c\x51\xfb\x90\xa8\x83\x43\x52\xa1\x93\x62\x14\xfa\x8b\x26\xd7\x01\x9a\xfb\xde\x28\xbf\x9f\x94\xb4\x89\x12\x7e\x52\x60\x26\x1b\x70\x69\xcb\xd8\x0f\x1a\x21\x8c\x0a\x8e\xd7\x40\x70\x2f\x5c\xc6\x6c\x18\x68\xc5\x37\x7f\x3c\x70\x06\x49\x45\x23\x06\xf6\xb3\x1a\xb7\xc1\xe2\x9e\x9a\x40\x01\x82\x4b\x64\x50\x37\x82\x2b\x64\x56\x3a\x82\x0b\x64\x56\x36\x82\xeb\x63\x26\xcb\x98\xaf\x2a\x1f\x19\xc8\x33\xdb\x3d\xec\x2b\x03\x91\xc9\xed\xe2\x72\x9f\x18\x0e\x74\x2d\xd6\xa9\xcc\x53\xaa\xdf\x27\xa0\x3d\x64\x20\x62\xee\xf6\xd8\xd7\x19\x35\x0c\x27\x29\x40\x7a\x01\x8b\xcc\xa8\x81\x40\xfd\xe2\x3e\x31\xef\x63\xd5\x57\xa9\x62\x45\x31\x55\x07\xea\xcb\x0c\x05\xbc\x73\x7d\x66\xfb\x15\xa7\x50\x26\xfd\x21\xac\x1e\x06\xc0\x82\xee\x69\xe0\x2a\x89\x60\x0a\x10\x12\x81\x8d\x64\x9c\x91\x5d\xc6\xca\x0a\x06\xdd\x37\x07\x3e\xe6\x46\x64\x02\xde\x47\x19\x20\xef\xa1\x86\x6f\x9e\x3f\x12\x1c\xf0\xc4\x4b\x18\x03\x69\x92\x9f\x90\x3b\xca\xd2\x88\x87\x03\x47\xe4\xea\x4e\xd8\x0e\xbb\x5e\xff\x5c\x50\xc4\x18\xdb\x3d\xa8\x50\x74\xeb\xa9\x89\x66\x9c\x93\x41\xec\x57\x89\xe9\x00\x31\x02\x60\x9c\x04\x34\x1b\xc4\x09\xad\xc2\x5c\x52\x1c\x2c\x5b\xf2\xc2\xf9\x89\x67\xe9\x34\x20\xd2\x18\x87\x2b\xdb\xbc\x5b\x29\xac\x28\x33\x9d\x40\xb0\x74\x5d\x80\x26\x9a\x5b\x17\xfa\xd5\xcb\x25\x91\x5d\x98\x7f\x71\xa4\xba\x5f\x9a\xdd\x91\xdc\xf6\xbb\x27\x9e\x8b\xe2\x24\xa7\xd9\x03\x19\xd8\x7e\xf7\x8b\xe7\x2a\x4b\xd9\xa0\x8a\x0a\xe6\xcc\x80\x0d\x54\x55\x14\x0b\x0c\x1f\x07\x85\x1e\x48\xc0\x67\x74\x54\xf0\x6a\x10\x10\x3d\x30\x24\x8a\x00\x64\x7f\x44\x71\xe0\xf0\x67\x4e\xfe\x56\xc0\x9f\x5e\x52\x1c\x08\xb3\x36\xbe\xd1\xe0\x41\xbf\xd1\x44\x90\xc1\x5f\x6b\xc2\x3b\x43\xf2\xee\x38\xd6\xa9\xb1\xde\xb4\xac\x59\x39\x4b\x14\x8f\x98\x14\xf9\x56\x69\x91\xbb\x4a\x25\x50\x80\x23\xc6\xb4\x03\xaf\x2a\x50\x96\x1b\xb9\xbf\x15\x28\x7f\xb9\xb4\x0c\x42\x52\xae\x2d\x2b\xb0\x0f\x0b\x09\x7e\x69\x4f\x88\xad\xdd\x8d\x07\x79\x3c\x1c\x50\x0d\xf9\xcf\xc4\xde\xe9\xcd\x50\x2f\xc5\x2f\x27\xa7\x27\x6d\xfb\x1c\x1d\x8d\x89\x7d\x18\xa1\xce\x98\xd8\xcf\x3d\x74\x31\xb1\x9f\xa2\x19\x4a\x59\xde\x5f\x01\x0c\x01\xe0\xca\xee\x44\xe8\xf4\xca\xbe\x90\xf1\xe5\x9e\xf3\x3e\x24\xd2\x4b\xd8\x24\xc1\xab\x4d\xa1\x61\xfb\x1e\x77\xdd\x59\x14\xeb\xf7\x4c\x02\x28\x75\x90\xc2\x39\x95\x74\xdf\xf4\xc9\x60\xe0\x11\xbf\xef\x94\xc1\x79\xc5\x3c\x0f\x07\xdd\x4b\xdf\x15\xa7\xba\x85\x87\x56\xc7\xda\x22\x66\xf6\xbe\xfb\xd5\x6d\xe9\x10\x18\x79\xae\x6e\x80\xc6\x1c\xa3\xc4\x32\x6c\x22\x48\x2a\xa6\x35\xc7\xc3\xdf\xf5\x28\x4d\xa3\x01\xed\x0e\xd8\x3e\x30\x36\xf9\x17\xfa\xe9\x93\xc2\x18\x15\xcb\x66\x00\xc6\x5d\x38\xf6\xe6\x66\x7a\x39\x52\xe4\x55\xce\x36\xe3\xf9\xb6\xf2\xcc\x4b\xfd\x5b\xaf\x10\xac\xa7\x53\xb0\xff\xd8\xcd\xdc\xe9\xd4\x9f\x4e\xdf\x5b\x8a\x81\xc0\xdb\x65\x79\x2f\xa2\x85\xbc\xdb\x3c\xef\x86\x9a\xb7\x9f\x2e\x0c\x63\xae\x11\xea\x75\x33\x17\x89\x6d\xf3\x6e\xb1\x7b\x96\xa6\x15\x0d\x24\xf6\x70\x1e\xd8\xd3\xdd\x14\x56\xa0\x56\x83\xe9\xd4\xdb\xc2\x81\x61\x4c\xa7\x04\x32\x80\xb1\x74\xb4\x98\xde\xf2\xec\xf9\x6a\x0c\x0a\x52\x10\x5d\x20\x66\xfb\x9f\x13\xe3\x7d\xc2\x3a\x9d\x4e\x37\x2d\xe3\x15\x8a\xde\xb0\x06\x5b\x0e\xc4\xc9\xaa\x70\x68\xa4\x88\xa5\x38\x0f\x09\xf2\xb9\x3b\x71\x58\x68\x47\x8e\x0f\xb7\xed\x3e\x3c\x06\xd7\x7d\xcc\x04\x80\x7a\x9d\x2d\x3d\x46\xab\x4b\x5c\xdb\x5b\xba\xe3\xb9\x4b\x8b\x1b\x59\x1a\xeb\x77\xfe\x2b\xc2\x2d\xa4\xde\xfa\x85\xfe\x23\x77\xec\x3d\x24\x85\xd5\x66\x1a\xeb\x69\x99\xec\x81\x1c\xfc\x40\x94\x13\x83\xc6\x3d\x21\x0d\x45\x1c\x1e\xc3\x20\xe3\x8f\x14\x28\xb7\x77\x7a\x1e\x19\xc5\x33\x1e\x22\x23\xbf\x45\x06\x37\xf4\x25\xbe\x1f\xf8\xb7\xcf\xbe\x2f\x3d\xc8\xe4\x10\x30\xfa\x0a\x4f\x8a\xe4\x24\x5f\x62\xb4\x94\x53\xc7\x24\xe5\xfb\x3b\x56\xeb\x06\x51\x1e\x65\x08\xf8\x37\x04\xec\x2c\x5a\x8e\xcf\x8f\xf3\xfc\x46\x83\x1f\x75\x83\x4b\xc5\xae\xef\x76\xbf\x07\xae\x7e\x15\x19\xd5\x2f\x5c\x6e\xdf\x1d\x4f\x12\xe6\xf5\x0c\xc7\x33\x7b\x19\x0d\x31\x71\x3c\x33\xa3\x03\x7c\xee\x13\x07\xac\x03\x74\x18\xab\x80\x03\xdd\x7b\x36\x1e\xe1\x30\x38\x4d\x71\xd7\x55\x4c\x52\x3e\xf0\xe6\x2e\x85\x6d\xce\xaf\x47\x96\x4d\x32\x29\x4d\x1d\x9e\xed\xe7\xdc\xbb\x38\xb8\x4f\xe1\xef\x87\xaa\x67\xde\x76\xcd\x27\x49\x92\xe6\xb5\x41\x4a\x82\xda\x31\x19\x8e\x6a\xdb\x67\x07\xa6\x66\x38\x33\xc0\xdc\x22\xba\x61\xeb\x69\x2a\xfc\xf0\x37\x31\x4e\x53\xf9\xd0\xff\xc8\x27\xe8\x89\x01\xb1\xaf\x06\x0e\x19\xb7\xca\xa9\x47\x1f\xfb\x04\xf9\x21\x7a\x91\x93\x9e\xed\xa1\x34\xef\xd1\xec\xaf\x21\xc9\xc8\xdd\x88\x09\xee\xea\xe6\x01\x30\x89\x7a\x70\x7b\x86\xd2\x82\xe1\xea\x36\x3f\x49\x8f\x43\x5d\xe7\xc6\x03\x9b\xd2\x78\xe0\x2a\xbe\x8e\xca\x0b\x01\x82\xc1\x32\xa1\x9a\x87\xb7\xe7\xfa\x7f\xc9\x2d\x79\xba\x11\x53\x21\x19\xc6\xa3\x1b\xd3\x4f\xef\x84\x81\xd6\xa2\x5b\xae\x4b\x88\x6a\xea\x74\xea\xcd\x96\x78\x47\x07\xfe\x14\x86\x19\x68\xac\xf7\xfd\x8a\x19\xc3\x61\x5a\x0e\xcf\x44\xd8\x50\x96\xb3\xb1\xa3\xfb\xb0\x74\x77\xcf\xb9\xe7\x99\xf3\xc0\x35\x8f\x52\x9f\x0c\xa8\x51\xaf\xfb\xe6\x90\xf8\x7d\x12\xd1\x91\x1a\xee\x12\x97\xbb\x29\x30\x07\x1c\x70\xc9\xa6\xf2\xbe\x22\x6f\xf2\xcb\x04\x0f\xeb\x9b\xcd\x77\x5e\xe3\x88\xad\xc9\xc6\x6f\x1f\xfe\x68\x5a\x1f\x3f\x7e\x78\xbf\xfc\xbe\x88\x74\xc7\xbe\x8b\xf1\x1e\xc9\xa9\xa1\x64\xdc\x89\x94\x9c\xc8\xc3\xac\x1c\x7e\x0b\x86\xc4\xea\xf1\xe2\x63\x02\xef\x15\xef\x6e\x75\x5f\xbe\xd5\xee\xf7\x75\xdf\xa8\xbe\xb9\x13\x79\x03\x17\xdd\xa7\x7a\x80\x3c\xc3\x98\xc1\xd1\x70\x71\x33\xc4\x5d\x5d\x5b\x4e\xc0\xaf\x80\x82\x46\xa3\x9a\x47\x9c\x7d\x04\x06\x3c\x5e\xe5\x79\xe5\x75\x8e\x42\x71\x79\x5e\x57\x12\x3e\x5b\x64\x58\x96\x4a\xb3\x17\xc1\x40\x35\x79\x91\x87\x4b\xe5\xf9\x91\x98\x30\xbe\xc7\x7a\x27\xd6\xbb\x03\x9f\x34\x08\x8a\xe1\x97\xb8\x4b\xa5\xcb\x18\xc4\x53\x94\xc5\x0b\xe7\x47\x0b\xee\x8a\xc7\x69\x71\x13\xe3\x89\x57\x41\x49\xaa\x8f\x08\x31\x66\x39\xd1\xc7\x69\xe5\xc9\xb0\xbc\x6f\x24\xe6\x1e\xf8\x68\xe8\x18\xe5\x2b\x6e\x8e\xc2\xf4\xc8\x88\x4e\xa7\x96\x78\xd1\x4d\xcc\x63\xdd\x50\x2f\x24\x48\xf7\xc0\x85\x16\x40\x21\xef\x9e\x21\xa6\x5b\x7e\x2b\xf4\x89\x4d\x3f\xf9\xad\x9e\x4f\xec\xc8\x27\x0e\xe9\x1e\x80\xc5\x49\x0f\x5d\x79\x04\x85\xc6\x4c\xbd\x97\x7d\x10\xfc\x28\x4f\x84\xb9\xf9\xe3\xd1\xbb\x62\xf0\xb4\x2c\x7b\xfd\xbf\xdd\x1b\x17\xd9\x2f\xb3\x9b\xd1\xcd\x78\xc3\xda\xf8\x08\xbf\x7f\xba\x05\x90\xb0\x64\x79\xd3\xd5\x6e\x6e\x6e\xd6\xbd\x30\xc9\xf2\xb1\xbb\x1e\xa1\xcf\x84\x08\x2b\x97\x5a\xf7\xbf\x2c\x2d\xb9\xc9\x54\x0c\x37\x4f\x96\xb5\x76\xf3\x64\x7d\xbc\x79\xb2\xc8\xda\xcd\x53\x33\x74\xdf\x69\xd3\x3c\x1b\xd3\x69\x48\x06\x23\x0a\x73\xc4\x74\xad\x75\x13\x34\xf4\x96\x7d\x63\xde\x04\xef\xc0\xb4\x6a\x97\xb6\xdd\x6e\xe3\x66\xcd\x65\x29\x46\x6b\x3d\x42\xfd\x48\x14\xa4\xb7\xec\xff\x4e\xed\x29\x32\x18\xd8\x3c\xbd\x37\x5d\xa3\xb1\x1e\xa1\x53\xc3\x30\x94\x23\x2d\xfa\x40\x06\xfa\x09\x6d\x10\x30\xb8\xce\x8f\xb6\x3c\xe3\x65\x56\x4c\xb4\x07\x09\xb7\x08\xf2\xf5\xf2\xf4\x44\x58\x78\xb1\x6b\x5a\x83\xa8\x56\x5e\x9e\x53\xb5\xd7\x54\x30\x96\xb7\x6d\x4a\xcf\x02\x45\x84\x49\x48\xa4\x9d\x76\xc3\xcc\xa2\x8a\xd1\xd5\x09\x5f\x2e\xf8\x73\x94\x2b\x4c\x66\x93\x90\x74\x0f\x5d\x33\x8b\x96\xf8\x8c\xec\xba\xce\x76\x2a\xa4\x4f\xe5\x61\xa6\x57\x18\xb8\x54\x6c\x75\x16\x32\x9d\x98\x40\xa4\x88\x23\xe6\x91\x76\xcf\x7e\x0e\xc5\x69\x89\x32\xb2\x3b\x36\x58\x12\x48\x08\xbf\xcb\x03\x6b\x2b\x2d\xcf\xee\xf5\x2a\x50\x8f\x11\x07\xf3\x2a\xb1\xca\x73\x19\x9e\x3c\x97\x8b\x4f\x5d\xf2\xc2\xfd\xa5\x0a\x32\xe3\xaf\x7c\x3d\x43\x0a\xe4\x7c\x25\x67\x30\x8f\x1e\x31\x94\x2b\xa3\x53\x30\xd6\x11\x6e\x05\x4e\x28\x0d\x1f\x50\x03\x51\xec\x75\x43\x17\x41\xb5\x89\x79\x7d\xd5\x62\x3f\xdd\x23\x57\xf7\xc4\x09\x9d\x1e\x1a\x88\x1a\x36\x45\x3e\x03\xbe\xa0\x1c\x77\x3f\x92\xe5\xc3\xe7\x8f\x1e\xdb\x0d\x9f\x42\x69\x21\xbf\x23\xf5\x59\x73\x74\x9f\x7d\x97\x23\x83\xab\x77\x51\x98\x60\x29\x5d\xc5\xc7\x11\xdb\x9d\x31\x0c\x81\x81\x18\x5f\x43\x56\x0c\xa7\x2d\x34\x96\x52\x15\x16\xd4\x04\xf8\x82\xb2\x4d\x1f\x83\xfe\x59\x65\xd9\x71\x64\x57\xa7\xce\xa2\xb3\x5e\x25\xfd\x24\x7d\x4c\xe0\x92\x9b\xf5\xd2\x95\xa2\x7d\x9d\x19\xc8\x25\x3b\x29\x7e\x79\xab\xbd\xb5\xdf\xde\xdc\x68\x6f\x91\x76\x73\xa3\xd9\x71\x84\xb4\x75\xcd\xd6\x6e\x6e\xd6\x35\xa4\xdd\x78\x10\xf4\x58\x30\x84\x60\xc8\x82\x09\x04\x13\x16\xcc\x20\x98\xb1\x60\x0e\xc1\x9c\x05\x9f\xac\x1d\xf8\x18\x5b\x96\xe5\x69\x33\xb4\x1d\x12\xbc\x7e\x33\x0e\xc3\x30\xe4\xf3\x84\xc6\x3f\x34\xa3\xb5\xde\xbd\xb9\xb9\xd1\xc4\xf0\x6f\x86\x37\x4f\x7f\x84\x6b\x3c\xd1\x5d\x8f\xec\xa5\xa9\x4f\x90\xa6\xe8\x6c\xc8\x3d\x2d\x38\xfa\x1c\x53\xc4\x67\xa1\xed\xb0\x2a\x38\xb1\x29\x96\xb5\xd7\x4e\x2a\xa5\xdf\x9d\xb4\x4b\xa4\x93\x2e\x6e\x4f\xd8\x62\x0d\xbf\xeb\x11\xa7\xf9\xe1\x93\xd7\xa2\x0d\xfc\x86\xda\x1b\xbf\x8b\x70\x4e\x88\xfd\xde\xfa\xf3\x03\x68\x2a\xd1\x06\xfe\x5e\x2e\xdc\x80\x09\xd3\x46\x61\x08\x68\x66\xa0\x31\x55\x37\x5f\xbb\xea\xac\x10\x24\xfa\x1e\x6b\xef\x76\xaa\x8a\x4d\x9f\xb9\x94\x91\x2a\x37\x14\x3b\x61\xd5\xfe\x32\xff\x7e\x21\xf8\x8b\x0a\xf5\xca\x24\xb3\x97\xca\x87\xf5\x8a\x73\x8f\x57\xd4\x12\x78\xa2\xa2\x82\xa0\xae\xf5\x8a\x5a\x89\x3c\xbc\xa0\x78\x2f\x95\xb7\xf5\x8e\x1f\xeb\x4c\xd8\x81\x17\xf7\x98\x1a\xc2\x2d\x81\x8f\xc9\x92\x03\x83\x2f\x2a\x1f\xc4\x72\xa1\xe9\x4c\x4a\xb9\xd1\xbb\x37\x01\xba\x19\xb9\xef\x6e\x0c\x43\x5b\x8f\xd4\x15\xb2\xdc\x77\x6e\xfb\xa4\xe1\x57\x8e\x78\xda\x80\x11\x54\x34\x40\x96\xe5\x2e\x73\xce\x02\x57\x67\xdb\xa3\xe5\xca\x80\x88\x74\x3d\x11\xff\x4d\xfc\x3f\x16\xe9\x90\xd1\xb5\x39\x96\x63\xae\xf8\xc4\x3f\xbe\xf9\xca\x07\x64\xff\xd7\xf8\x5d\xfb\xb5\x1c\x2e\x22\xf8\x98\x90\x06\xb7\x44\x7c\x49\x0d\xd6\x96\xca\x3b\x3a\xc6\xf4\xdd\x90\xe0\x97\xfb\x27\x62\x3f\x46\xe8\xcb\x84\xd8\x1d\x74\xfb\x4c\xec\x76\x0f\x7d\x19\x13\x7b\x27\x42\xd9\x33\xb1\xbf\xf6\xd0\xfe\x98\xd8\xbb\x11\xcf\xb2\xc7\xb2\x3c\x4f\x88\xbd\x1f\xa2\xeb\x09\xb1\x6f\x3d\x82\xb6\x27\xc4\xf6\x3c\x82\xbe\x3f\x11\xbb\x43\x08\x3a\x7e\x22\xf6\x38\x44\xbb\xcf\xc4\xce\x3d\x82\x76\x27\xc4\xfe\x1a\xa2\xcb\x09\xb1\xcf\x42\xf4\xe5\x99\xd8\x91\x7a\x86\xb2\x0f\xec\x16\x2b\x06\x11\x4b\xc5\x7e\x28\x75\xbc\x9b\x62\x22\xf7\x48\x11\xd3\xde\xe4\x71\x5e\x19\xf7\xa1\xfd\x5e\x2c\x26\xa4\x88\xdb\xfc\xd0\xfe\x9d\x47\x8e\x0b\x6c\xa0\x6e\xc7\x23\x73\x25\xb7\xf5\xfe\xa3\x8c\xfe\x5a\xc0\x6e\x7c\xd8\xf8\xf3\x8f\xf7\x1f\x64\x69\x67\x45\xc2\x1f\x1f\x3f\xfe\xb9\xb1\xf9\x51\x26\x44\x51\x51\x62\xf3\xf7\xdf\x3f\xfc\xf9\xfb\x46\x7b\x53\xca\x93\x96\x52\xd1\x03\xb6\x81\x56\xee\xa5\xa5\x7c\xa9\xde\x2c\x2b\x2a\x41\x07\xa9\xe3\x99\x4f\x21\xc1\xc2\x3c\x82\xe3\x73\x87\x74\xf0\x54\xdf\xc7\xa7\x84\xa8\xbe\x51\xba\xa7\x84\x20\xeb\x93\xdf\xea\x50\xfb\x9c\xba\x8e\x2f\x9e\xe0\xfb\x86\x13\xc0\xa2\xd7\xcd\x5d\xdd\x5f\xff\x60\x19\xbf\x35\x2d\xcb\x70\xfc\xdf\xf0\x07\xcb\xb1\xe0\x8c\x2f\xe0\x6b\x06\x3a\x88\x75\x1f\x6d\xc0\x59\x60\x20\x97\x77\xcf\x9c\x84\x04\xfb\x8e\x85\x99\x5c\x8a\xef\x3d\x62\xeb\x3e\xee\xde\x7b\xac\x34\xd2\x3a\xa7\x76\x87\xb2\xae\x26\xcc\xdf\x88\x05\x08\x4a\x23\x45\x69\x88\xb0\xd2\x90\x05\xb7\xb3\x62\x85\x42\xc2\x79\x19\x2f\x87\x6d\x80\xef\xde\xe3\x2e\x13\x96\x1d\xcf\x3c\xdb\x63\x72\x47\x21\x93\x2b\x0c\x61\xd4\x10\x33\x0e\x04\x6f\xd6\x88\x39\xca\x83\xbf\x52\xd0\xf6\xe5\x38\x48\xd7\xf7\x05\x0e\x62\xe6\xc5\x7b\xe2\x91\xaa\xa2\x7e\x90\x8a\xd7\xda\x5c\x97\x1a\x2c\xa9\x6e\x07\xb7\xe3\x51\x7e\x47\x93\xaa\x3a\x30\x81\x1d\x8f\x79\xd5\xd9\xd5\x09\xd7\x93\x66\x23\x4c\x8c\xb8\x13\x31\xe2\x40\xb5\x10\x11\xae\x89\x6c\xac\x43\xcf\x2b\x8f\x0c\x2c\xc7\xe3\x5a\x36\x67\x7b\xb0\x3f\x26\xc2\xbb\xf2\xd9\x5e\xd7\x73\x1d\xc3\x6b\xe0\x0d\xa7\x54\xc4\xf3\x5a\x96\x5d\x24\xaf\x35\x5d\xa1\xd8\xfc\xe5\xb8\xc3\x85\x8a\x39\xea\x00\x34\xa2\x39\x57\x78\x2e\x9d\x63\x75\x2f\x08\x63\x25\x63\xb6\xf5\x09\x8b\x96\xe2\x1e\xd4\x79\x4b\xf1\xb4\x83\x78\xae\xb1\xd0\x86\x81\x78\x5f\x20\xbf\x7d\xb0\xa0\x3b\x2c\x88\x7c\x40\xd0\x51\x9a\x44\x27\xe4\x6e\xa9\xeb\x65\xfe\xe2\xf5\x3d\x68\x98\x9a\xf1\x48\xb2\xb8\x13\xdf\x51\x26\xf7\x6f\xda\x45\xb5\xe6\xf5\xb4\xe7\x70\x3c\x85\x64\x4d\xd6\x70\xb1\xa1\xa4\xbe\x72\x44\xf3\x8b\xcf\xbb\x0c\xfb\xcf\x34\xa1\x4b\xd9\xb4\xf6\x2a\x9f\x58\x37\x16\x83\xe6\x1f\x31\xe7\xef\x39\x73\xd9\x4b\xb3\xfc\x7f\x64\xcd\x86\x6d\xb9\x8a\x2a\x3b\xab\xcf\xc1\xab\xd6\x2c\x26\x21\x61\xb0\x55\x2c\xcb\x0a\xb5\xb6\xfe\x86\x89\xa5\x1a\x4c\xaa\x3c\x65\x7e\xbc\x62\xc3\x10\x82\xe3\x10\x7b\xd3\x69\x9e\x38\xca\x6c\x05\x5e\xca\xcd\x5e\x47\x27\x06\xef\xb1\x21\x20\x63\x7c\x6d\x87\x04\x77\xd7\xff\x7b\xf3\x96\xed\x95\xfe\x7b\xf3\xd6\x9d\xde\xbc\xbd\x79\x6b\xbc\xbb\x79\xbb\x8e\xc0\x50\xdc\x97\xc6\x74\xd2\x98\x1e\x37\xa6\xfd\xc6\xf4\xb2\x31\x6d\x37\xa6\xa4\x31\xed\x35\xa6\x87\x8d\xe9\x7e\x63\xea\x37\xa6\x47\x8d\xe9\x79\x63\x1a\x34\xa6\x77\x8d\xe9\xa8\x31\x7d\x68\x4c\x1f\x1b\xd3\xe7\xc6\xf4\x67\xc3\x60\x28\x18\xd2\x2f\x93\xe3\xfe\x65\x9b\xf4\x0e\xf7\xfd\xa3\xf3\xe0\x6e\xf4\xf0\xf8\xfc\xd3\x6d\xac\xbb\xce\x21\x1b\xde\x66\x58\xed\x56\x6c\x3c\x3a\xc4\x31\xaa\xe3\xb2\x1d\x0a\x75\x52\xc5\x51\xc3\x91\xe7\xea\x2c\xde\x13\xae\xfb\xe1\xfe\xb9\x6b\xb9\x60\xad\x8f\x52\x97\x9b\xff\x64\x53\xa2\x07\x17\x24\x38\x22\xa4\xe5\xe3\x63\x6a\x83\x3f\x60\x06\xd1\x44\xdc\x3f\x80\x81\x58\x0c\xdf\xc3\xbe\x65\x95\x3f\xa6\x86\x34\x30\xf1\x78\x05\x06\xd4\x72\xfa\x94\xdb\x3e\x08\xf6\xb6\x37\x93\x5b\x83\xd9\xcc\x59\xc9\x89\x7e\xb8\x7c\x6b\xbf\x4a\x4a\xff\x72\x9d\x1e\xad\x05\x24\xa7\xb5\x3c\xad\xf1\x8b\xa7\xda\xdd\x78\x94\xd7\x3c\x5a\x4b\xd2\x64\x8d\xed\x7d\x4c\x4d\x4a\x6b\x5e\xeb\x43\xfb\xfd\x3b\x9d\xf0\xe7\x0f\x6b\x5e\x65\x44\x18\xb6\x85\x02\xec\xb7\x94\x97\x0f\x5c\x49\xdd\x37\x6c\x02\xb7\x4a\x1e\x5b\x2c\x20\xeb\x2a\x16\x38\x18\x07\x1a\xd8\xda\xf2\x5b\x6b\xb0\xb8\xda\xf0\x8b\x28\x5e\x82\xa5\xdc\x52\x81\x3d\x39\xbe\xa7\x92\xbc\x80\x56\x08\xa5\x17\x56\x19\x1b\xba\xdd\x38\x70\x9d\x26\x56\x63\xf6\xdd\x16\xac\x22\x9f\x43\x61\x51\x2d\x42\x04\x05\x88\x82\xa6\x27\xa4\x44\xa5\x52\x9b\x1c\x9b\x86\xb3\xc2\xfb\x45\xaf\xb3\xb8\xcd\x65\xed\xfc\xfe\x13\x31\x84\xf9\x81\x71\x68\x2a\xcf\xf8\x98\x50\x2f\x6f\xe0\x3e\x56\x80\x94\xa7\x76\x5d\xb2\xf6\xbe\x04\x6b\x6e\x2c\x20\xab\xc2\x7e\xe4\xae\x03\x59\xcf\xf0\x02\x82\x96\x96\xba\xf6\x11\x6c\x19\x72\x28\xa2\x40\xcd\xa3\x12\xe7\x6c\x72\x38\x36\x8b\x9b\xb5\x99\x1c\x96\x9e\x3a\xc6\x8f\xd4\xa3\x40\xc7\x97\x47\x34\x5e\x61\xdd\xc7\x1c\x87\x30\xd6\x55\xe7\xdc\x81\x19\xe7\x44\x75\xba\x52\x34\x20\x78\x5f\x09\xe5\xe9\x51\x84\x7d\xd8\xf9\x84\x86\x43\x59\x4b\xbc\xff\xb8\x85\xa3\x7a\xfd\xf7\x3f\x3e\xe1\x48\x68\x27\x75\x1f\x02\x57\x07\x7c\x8d\x68\xed\xfd\x47\x68\x32\x8f\xe5\x30\x66\x3e\xa6\xb2\xbd\x96\x5c\x41\x1c\x17\x47\x72\x3a\xc8\xc3\xf5\x3a\x88\xc1\xec\xdf\x37\xdf\x35\x7e\x39\x26\x7a\x64\x54\x4b\xd2\x5a\x1e\xdf\xd1\x9a\x3e\xcc\x52\x8f\x78\x83\x49\x8d\xd4\xa2\x34\x8d\x4c\x06\x6b\xc2\xc9\xa6\x59\xbb\x1a\x51\xe8\xb7\xb5\x34\x9b\x4b\x64\xb3\x2b\x62\xd1\xe3\x11\xad\x91\x9a\xb0\xdd\x51\x7b\x8c\xf3\x5e\x3a\xce\x39\xea\x30\xa6\x83\x60\x04\x87\xe4\x25\xdd\x9f\xcb\x8b\x67\x44\x51\xd1\xc7\xe1\xb8\x41\x3e\x90\x14\x46\x7b\x85\xfc\x7b\x5e\x8a\xb1\x3e\xb6\xb6\x02\x2e\xe3\xb7\x9a\xb6\x85\xde\x6f\xe1\xa8\xc5\x9a\xc8\x94\x0f\xc4\xbb\xbe\x6b\xcb\x08\xf6\xc1\xc5\xd2\xeb\x5e\x89\x41\xe4\x67\x02\x22\xcc\x58\x6b\xbe\x81\x36\x30\x86\x13\x84\xdf\x30\x88\x68\xd0\x29\x40\x02\x8c\x98\x04\xc8\x30\x7c\x09\xed\xdc\x96\x67\xc1\x38\x10\xfb\x8b\x48\x90\xf8\xbb\x4d\xa0\xa7\x98\xea\xeb\x71\x56\xba\xd0\xe7\xe5\x38\xde\x4b\xa8\x57\xd2\x37\x65\xba\xf2\x86\x5a\x05\x92\x87\x10\x04\x17\x04\x36\x9a\x8c\xc4\x59\xa9\x4e\xc5\xf0\xbc\x29\x84\xf0\xe3\x54\xa7\x65\x75\x28\xdf\x37\x4d\xa7\x1b\xef\xcb\x8a\x9d\x87\x25\x6b\x28\x9f\x9d\x7e\x6b\xb6\x37\xd7\x9b\xed\x4d\x9e\xd1\xef\x3e\x79\xae\xb0\x39\xb6\xc9\xf2\xc1\x8d\xf9\x86\xd1\xd0\x37\xb7\xa2\xd6\x41\xac\x5b\x28\x5a\xdb\x34\xec\x53\x89\xf1\x59\xc1\xb8\x12\xf0\x17\x78\x4a\x4b\xc9\xc7\xca\x45\x4b\x55\x9e\x4a\x17\x4d\x76\x37\x57\x89\x08\x53\xb9\xed\x63\x99\xe0\xad\x71\xb7\xb9\x01\x03\x6a\xe3\xfd\xa7\x88\xf5\x07\x91\xf5\xf4\xd7\xf5\xff\xad\xb9\x31\x9d\x36\x37\x4a\x16\xfc\x28\x3b\xd8\x6b\x19\x4a\xe0\xcb\xbf\x01\x2e\x21\x27\x51\xb5\xcb\x24\xfe\xd2\x2e\xf3\xda\x63\xee\xd7\xbb\xcf\xe2\xfb\xf6\x5f\x74\xa5\xe5\x2f\xd2\xff\xa6\x5b\xa1\xe6\x42\xa7\xfa\xfc\xcf\x06\xc0\x72\x43\x0a\xac\xb8\x95\xbf\xab\xcc\xdf\x8e\x8a\x65\x36\x06\xfe\x97\xf1\x71\xaa\x74\x50\x90\x69\x45\x6d\xd6\x37\x0d\xc4\x7a\x52\xd9\x2b\xe5\xa3\xf8\xa2\xaf\x2a\x11\x1c\xd7\x76\xd1\xd7\x64\x99\x81\x38\xa5\x28\xfa\x41\xd0\x7b\xad\xc3\x7c\xab\x76\x98\xa7\x57\x01\x8f\x83\x0a\xe0\x59\x01\x48\x70\x38\x9d\x7e\x4d\x75\x9f\x0b\x20\x6c\x70\x54\xa4\x65\x5d\xe4\xe8\x28\x13\x60\x21\x8c\x50\x31\x13\x52\xd1\x98\x54\x3e\x9c\xf3\x38\xc3\xab\xaf\x95\xe1\xa1\x37\xf6\xf9\x8b\x1c\xf1\x56\x4f\xd7\xf5\x12\xb2\xf2\x7e\x79\x3a\xdd\x34\xd6\xbc\xc6\x1f\xc6\x6f\x2b\x7f\xac\xe9\xba\xcf\x7b\x7f\xe3\x83\xf1\xdb\x1f\x3c\xfa\x0f\x26\x0e\x02\xf7\xb9\xf1\x4f\x7f\x4d\x5f\xf2\x7c\xd0\x37\x0c\x39\x5d\xb3\x3e\x29\x9e\x03\xad\x43\xe9\xc6\xfa\x1f\x46\xa3\xb9\x6c\xb2\xfe\xfe\x3a\x7f\x78\xfb\xaa\x1b\x13\x9d\x49\x74\xea\x26\x4e\xf7\x05\x9a\x5e\xd1\xb6\xde\x32\x34\xde\xd2\xbd\x16\x43\xc7\x85\x8a\xca\x4e\x95\xd5\xa4\xe8\xa0\x02\xeb\xe9\x8c\x9f\x23\x7d\x09\x09\x7e\xf9\xd1\xde\xbe\xf8\xeb\xf3\xd5\xd1\x91\x7d\xdd\x43\xc5\xc7\x5f\xd7\x07\x9d\xfd\xbf\xda\x17\xdb\xb6\x36\xa9\x7d\xd1\x78\x02\xf4\xfc\xbf\xb6\x77\x76\x2e\x6c\xb0\x9a\x30\xa9\xc4\x03\x0e\x6e\x59\x61\xa2\x71\xbb\x24\x7f\xed\x6d\xff\xe0\xf0\x07\xa1\x12\xa3\x40\x06\x81\x0a\x0a\x7d\xdf\xd6\x8e\xd7\x2b\xb1\xc7\xed\xbd\x83\xab\x63\x99\x41\x4d\xe1\xa5\x97\xc9\xc2\x8e\x83\x98\x6c\xfe\x5a\x44\x21\x0d\x41\x30\x34\x8b\x50\x15\x74\x25\x28\xe0\x2c\x6a\xb2\x1d\xcd\xd0\x49\x8a\xbf\x84\x44\xfc\x03\x56\xee\x33\x56\x76\x72\x62\xbf\x34\xdb\x9b\xf6\x0b\x5c\xa4\xdb\x9a\x75\xa8\xcd\x50\xb3\xfd\xbe\x8c\x10\x31\xbf\x2b\x31\x22\xea\x43\x19\x75\x0c\x11\x7f\x28\x30\x3c\xe6\xa3\x9a\x8b\x47\xfd\x59\x46\xed\x40\x44\xd3\x52\x80\x44\x54\x53\xcd\x27\xe2\x36\xca\xb8\x0e\x8f\x51\xc8\x96\x51\x2a\xe1\x2c\x6e\x86\x2e\x17\xaa\x58\x63\x82\xd7\x88\x24\xc1\x42\x55\xab\x29\x95\x2a\x57\x93\x94\xaa\xd7\xee\xe2\xc1\x20\x4e\x93\x05\x0e\x54\x12\x2a\x8c\xa8\xa4\x28\xfc\xa8\x79\x4a\x7c\x85\x2d\xd5\x94\x0a\x77\xaa\x49\x1b\x6a\x35\x33\x35\x65\xb3\x52\xcf\x32\x69\x65\x9e\x6b\x4a\xe2\x6c\x86\x4e\x53\xbc\x1f\x12\xf1\x4f\x39\x95\x54\x55\x85\xce\x52\xb3\x3d\x26\xc8\xc7\xdd\xef\x70\x1c\x72\x9e\x76\x89\xdb\xb5\xdc\xfa\x1f\xdc\x7c\x28\x11\x57\x68\x57\xd4\x98\x7b\xd3\x46\x4a\x93\xe0\xdf\x69\xb1\xf8\xf0\xad\xcb\xba\x65\x5a\xd6\x7a\x84\x8a\xc3\x3e\xae\xba\x77\x9e\xe2\x97\xed\xf6\x9e\xdd\xdd\x40\x5a\xd0\xd3\x90\x76\x33\xb6\x3e\x6c\x84\x26\xfc\xfb\xdd\xd4\x90\xb6\xb7\xaf\xb9\x68\xfb\xe8\xc8\xee\x5a\x48\x3b\xa2\x7d\x8d\xff\xba\x68\xfb\x0a\xb2\xed\x50\xa4\x6d\x5f\xbd\xd1\x5c\xb4\xb3\xd7\x01\x3c\x37\x63\xeb\xcf\x70\x53\x43\x5a\x87\x81\xed\x7c\x39\x81\xd8\x01\x7d\xd0\xf8\xaf\x8b\x76\x2e\x8e\x20\xee\xe2\x8d\x06\x3f\x2e\xda\xdd\x2e\x90\xed\xc2\xf7\xde\x67\x80\xf8\x9c\xed\xee\x69\x48\xdb\xdd\xfb\xcc\x22\xf7\x79\xe4\xee\xfe\x67\x8d\xff\xba\x68\xf7\xe8\x8c\x51\x06\x19\x8f\x20\xe7\xc9\x0f\x49\x85\x45\x7e\x67\xf8\x8f\x77\x44\xd8\x45\xbb\xa7\x25\xf4\x29\x07\xbf\xd8\x85\x9a\xdd\x8c\x37\x2c\xd2\x64\x68\x2f\x44\xd0\x45\xbb\x3f\x0f\xed\xee\xef\x16\xd2\x0e\x6f\xc6\x56\xd3\x0a\xb4\x32\xe4\xa2\xbd\xc3\x43\xbb\xdb\xfc\x88\xb4\x7e\xa6\xc1\x8f\x8b\xf6\x18\x76\x5e\x89\x8b\x3d\x86\xbc\xfd\xe5\xac\xa4\x85\x71\xe4\xa8\xcd\x62\x3b\x3b\x10\xbb\x13\x67\x2c\x2b\xfc\x73\x51\xfb\xea\x42\xc0\x6e\x58\xc4\xd7\x8a\x80\x8b\xbe\xec\xcc\x61\xf9\xb2\x23\x82\x2e\xda\x3f\x2c\xf8\xb6\x7f\xc8\x8a\xdc\xbf\x38\x04\xe0\x7e\xa2\xc1\x8f\x8b\xf6\xaf\x3e\x43\x0d\x3f\xe7\x1a\xfc\xb8\x68\xe5\x60\xef\x02\xa2\x2e\x86\x1a\xfc\xb8\xe8\xe0\xe8\xb2\x2c\x9d\x68\x48\x3b\x38\x12\x41\x17\x1d\x9c\x94\x94\x79\x7f\xb2\x1c\x23\x16\x7b\x21\x70\xc4\x64\xc0\xe0\x2f\x2e\x58\xe4\xe5\x21\x44\x96\x3c\xf9\x7a\x5c\x10\xf8\x75\x9b\x11\xf8\xf5\xec\x87\x60\xb8\x68\x9f\xaf\x67\x45\xf3\x1c\x5e\x5c\x97\x8d\xc1\x4a\x3a\xbc\x10\x41\x17\x1d\x1d\x72\x2a\x2e\x46\x1a\xd2\x2e\x8f\x80\x86\xa3\x0e\xef\x47\x47\xac\x6a\x47\xac\x6a\x47\xdf\x44\x0c\x83\x3a\x62\x30\xc7\x27\x9d\x12\x27\xd5\x90\x76\x7c\x22\x82\x2e\x3a\xfe\x7e\x22\x89\x3b\xa6\x4f\x8c\xba\xe3\x1f\xa2\x94\x63\xe8\x39\x9a\x8b\x4e\x4e\x45\x27\x80\x3a\x9d\x9c\x42\xad\xce\xb6\x45\x13\xae\xb3\x21\xc2\x7e\x5d\x74\xd6\xe6\x1d\xfd\x12\xe2\x2e\x79\xdc\xfe\x59\xc9\x3a\xd6\xbb\xce\x7a\x8c\xdb\x67\x87\x82\x77\x8c\xca\xb3\xc3\x8b\x11\xc0\x1e\x9d\xf0\x82\x9e\x59\x1f\x7b\xbf\xa1\x95\x21\x17\x5d\x9c\x72\xe4\x17\xa7\x27\x1a\xff\x75\xd1\xc5\xe5\x1e\x60\x09\x62\xd6\xd6\x17\x97\x7b\x2c\xee\x6a\x87\x23\xb9\x19\x5b\xef\xdf\x5b\xf0\xbb\xc9\x7e\x37\x9b\xa6\x86\x56\x96\x46\xbb\xe8\x72\x5b\xd4\x9a\xb7\x25\xfc\x73\xd1\x65\x5b\x74\xa5\xa2\x31\x2f\xbf\x14\x8d\x79\xc9\xb8\xd5\xd9\xdf\x91\x3d\x93\x6e\x86\x6c\xc4\xef\xef\xb0\xe8\x0b\x18\x82\x3f\x42\xa4\xfd\xe8\x1c\xb1\x88\x6b\x3e\xc3\x9c\x74\xd8\x80\x67\xbf\x2e\xea\xfc\xbc\x04\xea\x3b\x97\x6c\xda\x61\xbf\x2e\xba\xda\xde\x2f\xd9\xf5\x5e\x43\xda\xd5\x36\x9b\x7d\xae\x2e\x8b\x62\xaf\xa0\xdc\xab\x1f\x57\x32\xe2\xcd\x95\xe6\xa2\x6f\x27\x7b\x65\x1b\x7b\x1a\xd2\xbe\x9d\x88\xa0\x8b\x7e\xb4\x2b\xfd\x54\xd4\xed\xa7\xac\xb1\x86\xb4\x9f\xdb\x17\x9a\xcb\x25\xa2\xaf\x6c\x19\xdf\x6b\xef\x1e\x1c\x6f\x1f\xfd\x75\xd9\x3e\xb3\xaf\x28\xfa\x72\x71\x7a\x75\x06\x1f\x17\x14\xd1\x23\x7b\x8f\xa2\xc9\xa6\xfd\x9d\xa2\x2c\x27\xf6\x39\x45\xf7\x39\xb1\x3b\x14\xdd\x53\x62\x3f\x87\xa8\x4f\x89\x4d\x03\x82\xfc\x4d\x9b\x91\xb3\xd1\xa4\x1a\xda\xcf\x88\xad\x9d\x90\x13\x0d\x49\xd4\x67\xdb\x9d\x4e\xfb\xe2\xc4\xd6\xfe\x83\xfe\xf3\x1f\xcb\xfc\xcf\x7f\xfe\xa3\xa1\x3b\xf0\xfe\xd6\xb6\x34\x44\xde\x8b\x84\xdf\x34\xd4\x1e\x13\x9b\x8f\x95\xf7\x1c\xd6\xb2\x34\x34\xbe\x27\xb6\x76\x75\xb9\xa7\xcd\xd0\x59\x8a\xbf\x86\x44\xfc\x2b\x57\x94\x8b\xb4\x62\xe2\x79\xfb\x10\x7b\xd3\xe9\x59\x6a\x8e\xef\x85\xa9\xe7\xbb\x7b\x82\xfd\xe9\xd4\xe2\x5f\x9d\x4b\xfc\x5e\x04\xaf\x52\x2c\x54\xa8\xbd\x67\x2c\xe3\x26\x78\x53\xc4\x75\xf8\x79\x9a\x9f\xcb\x34\x2f\x10\xf7\x1f\x8f\x3e\x29\xb4\xaf\xfb\x87\xc2\x36\xd0\x04\x9f\x0a\x63\xd2\x0f\xb8\x43\x85\x59\xe3\x3d\x19\x99\xdf\xca\xb2\x7e\x36\x65\x09\xdf\x2f\x85\xf5\x51\x05\xdd\xe3\xa1\x2c\x8d\x04\xdc\x30\xf8\x3f\x3c\x02\xbf\x4c\x19\x8e\x6b\x7c\x91\x72\x73\x48\xdc\x52\x53\x7c\x37\xbe\xfb\x9c\x11\xe0\xd4\x5e\x1c\xc5\xf9\x68\xde\x1e\x8a\x38\xab\xf7\x9e\xc1\x46\x66\x71\xa6\x75\x44\xa4\xd9\x65\x3f\x2f\x2f\xc2\x59\x84\xb4\x2e\x43\x9e\xfe\x06\xb9\xe4\xe7\x5c\x6e\x6e\xf0\xe5\x32\x8e\x92\x38\x8c\x7d\x92\xe4\xbf\xa4\xcb\xcf\xf9\x03\xcb\x25\x84\x79\xcf\x4b\x50\x87\x4b\xac\xeb\x80\x15\x65\x90\x0c\x6a\xeb\x11\x7a\xd3\x2b\xef\x62\xc4\x6d\xc3\xf9\x04\x77\x54\xa5\xa3\xf2\xd8\xd8\xeb\x5a\x2e\x0a\x30\xbc\x72\xb0\x14\xdf\x43\x6b\x4d\x34\x00\x73\xe5\x28\xc1\xab\x96\xc3\xc0\xb6\x06\xf5\x7a\x02\xa1\x46\xc3\x90\xf7\xcb\x70\xcc\x06\x2e\x3c\xc4\x2e\xfe\x91\xda\xd6\x56\xd8\x8a\x1a\x0d\x9b\x36\x1a\x8e\xb5\x85\xfb\xf5\xba\xf5\x29\xa8\xd7\xfb\x8d\x86\xaa\x17\xf3\x9d\xda\xc0\x85\xa8\x74\xf5\x74\x55\x1a\x7e\xd0\x2c\xad\x16\x27\xc5\x99\xa0\xf6\xb6\x41\x1a\x63\x26\x25\xfd\x12\xe7\x05\xb5\xfb\xd8\x52\x63\xae\x44\x29\x38\x28\x8b\x39\x16\x2f\x1b\x6a\x01\xf5\xe3\x3b\x32\xa8\x8d\xe8\x90\x64\x24\x4f\xb3\xd1\xd2\x32\x03\x4c\x1b\x61\x23\x52\xd1\x3e\x87\xb6\x34\xd8\xfb\xfd\x72\x09\x66\xfa\x34\x4c\x13\x9a\xe4\x31\xc3\x3e\xb9\xf3\xd2\xc1\x72\xd4\x72\x98\xac\x5a\xc5\x98\xe4\xcc\x6e\x34\x19\xbb\x4b\xf6\x36\x56\x9a\x06\xc6\xe7\x14\xfc\xb4\xb3\x16\x40\xe5\x40\xb5\x78\x83\x2e\xcf\xc7\xb2\x7d\xa7\x8e\xa1\xe6\xf2\x3a\x8d\x06\x13\x40\x9b\x9f\x68\x23\x9c\x4e\x9b\x9f\x44\xac\x52\x11\x32\x08\xd3\xec\x8e\x06\x95\x9a\x2c\x90\x0f\x0f\x22\xe6\x14\x43\xbb\x96\xbb\xb6\xc6\x7a\x4d\x73\x66\x61\x1c\xb2\xde\x4d\xa1\x8b\x07\xe0\x8b\x2a\x40\x3c\x36\x6c\x34\x50\x84\xe9\x5a\x88\x28\x0e\xd7\x9a\x28\xc4\x4d\xe9\xbc\x9b\x41\x47\xd3\xa9\xc8\x12\x6c\xd1\xe9\x34\x60\x94\x1a\x60\xde\xae\xbf\x8c\xca\x05\xca\x22\xd1\x66\x72\x8c\x32\x64\xad\x68\x2d\xb0\x2d\x47\xe0\x95\x63\x9f\x36\xc2\xb5\x00\x59\x9f\x8a\xd1\x58\xa4\x58\xf2\x66\xe9\x2a\xc5\xd0\x85\x5a\x81\x1d\x19\x6b\x54\xb6\x9a\x04\xed\x5c\x62\xda\x10\x80\xac\x76\xa2\xcc\x7a\xbd\x08\xa7\x12\x94\xcd\xc8\x12\xeb\xcf\xa6\x70\x05\x63\xa1\xbe\xb4\x91\xee\x13\x6c\x61\x1c\x4c\xa7\x01\xc6\x91\xe3\xe3\x15\x60\xa7\x5f\xcc\xc4\x95\x51\x0c\x83\x92\xfb\x82\x53\xc6\x21\xc6\x51\xd8\xaa\x74\x12\x36\x5f\x2b\xf9\x10\xa4\x61\x1f\xc9\x19\x5c\x4d\x94\x56\xf3\xb6\x1f\xe4\xac\xdf\x10\xdf\x12\xbc\x81\x05\x31\xdc\x66\x73\xf5\xf2\x67\x4e\xed\xa4\x59\x4c\xe2\x67\xa9\x39\xb7\x60\x56\x94\xe4\x36\x54\xc0\xbb\x9c\x54\x12\x37\xd5\x44\xf2\xbe\x92\xf6\xbe\x48\x3b\x10\x97\x57\xe6\xf6\xa1\x51\x01\xf9\xdd\x3e\x94\xf7\x5a\xcd\x4a\xc2\x87\x32\x61\x63\x5e\xbf\x59\x51\xd2\x1b\x8d\x87\xc3\x34\xcb\x95\x5e\xc6\x16\x2c\xb8\x92\x50\xb5\x35\x0f\xa5\x96\x1b\x61\x6b\x9c\xe7\x90\xd7\xaa\x4d\x5e\x5d\xba\x74\x4b\xa6\x2e\x5b\x7b\xf4\x0d\x91\xba\xb0\xb4\xe8\x1b\xc6\x6c\xa5\xe7\x55\x6c\x48\x55\x0c\x36\x0a\x0f\x14\xd6\xaa\x58\xde\x0f\xcb\xab\x9d\x33\x92\x8d\xe2\x24\xaa\xa5\x21\xb7\xc6\xe3\xe7\xb5\x64\x7c\xe7\x51\x36\x17\x8e\x6a\xe3\x24\xbe\x1b\x0e\xe8\x1d\x4d\x72\x1a\x68\xf2\x42\x2b\x26\x0e\x59\xb6\xe2\x48\x27\xfb\xa2\xe7\x20\x9f\xf7\x47\xf6\x0f\x85\x6a\xda\xf6\x83\x9a\xe6\xd0\x7a\x3d\x94\x23\xe4\x7c\xd2\xfd\xea\x7e\x12\x50\xdd\xaf\x6e\x2b\xc4\xab\xa2\x1b\x41\xd2\x56\x99\x04\x5a\x9c\xab\x6c\x3c\xd1\x96\x0f\x7d\xba\x04\xb3\x43\xd0\x77\x2b\x22\x21\x03\x7f\x90\x05\x64\x9c\xa5\xa6\xbf\xa9\x12\x61\x70\x60\x88\x67\xcb\x5e\x80\x83\x8a\x42\x10\x41\x11\x5e\x6d\xa2\x3e\xfb\x19\xb0\x9f\x04\x37\xd1\x10\x2b\x0d\x7c\xd9\x3e\x43\x23\x16\x51\x48\x99\x68\xcc\x3e\xef\x29\xf9\x17\xcc\x07\x23\xfc\x6a\x13\x24\x69\x5e\xab\x36\x82\x5c\xbd\x1f\xf0\xa9\xc3\xa8\xde\x5a\x09\xb8\xa2\x2d\xac\xcc\x40\xef\x33\x0e\x60\x46\x80\x9a\xa1\x1d\x7c\x14\x12\xfd\x59\xfa\x2c\xd9\xa9\xd7\xff\xfc\x84\x77\x8c\x87\x06\xde\x61\x75\x29\xed\x62\x3f\x63\x3c\x2c\x2e\xce\xe2\x50\x8f\xa6\xd3\xbe\xc1\x07\xc6\x43\x03\x5f\x51\x27\xc2\xab\xd6\x4c\x81\x1e\x09\xe8\x7a\x5d\x7f\xd3\x5b\x2d\x3e\xa7\x53\x9f\xaf\x45\xfc\xb9\xa4\xb5\x05\x04\x94\x24\x35\x9a\x86\x31\x5f\x82\x8a\x76\xac\x12\xa1\x50\xf0\x1c\x3a\xfd\x39\x0a\xce\xe9\x74\xfa\x8c\x71\x87\xb2\xea\x3c\xab\x35\x39\x4b\x4d\x7a\xa4\x22\x6a\xae\xe2\x44\xe0\x4a\x70\xd3\x02\x17\x81\x03\xe3\x85\xf3\x4d\xea\x09\x54\x11\xf4\x29\x79\x1d\x43\x7b\xf3\x75\x0c\x3c\x1c\xe0\x01\xd1\x1f\x8c\xf5\x64\x16\x87\x3a\x15\xc6\xa5\x8a\x51\xd0\x3f\xe4\x1d\x70\x95\x77\x40\x21\xe9\xc5\xc4\x51\xfa\x6d\xff\xb0\xfb\xb5\xf4\x46\x14\xce\xa3\x38\xd9\x43\x2b\x7f\x8b\xe3\x64\x8f\xe1\x90\xe6\x4b\x5a\x6b\x81\x1d\xcc\x0c\x50\x87\xb8\x9e\x57\xc0\x85\xc3\x2b\x89\xe5\x2c\x35\xf7\x33\x22\x65\x49\x17\xf9\x4e\x69\xec\x08\x8b\xa5\x8d\x04\xa4\x25\x7c\x6c\x90\x80\x20\x8a\x89\x23\x57\xbd\xc7\xc3\x96\x8f\xaf\x52\x5b\x0f\x84\x1a\x50\xc0\x7d\x5d\xb2\x20\x35\x90\x8f\x8f\x8b\x69\xf9\x13\x0e\x5a\x96\xfd\x2d\xd5\x03\xc3\x30\x83\xf8\x21\x1e\xa5\xd9\x0e\x19\x51\x44\xd7\x71\xcf\x1c\xa6\x8f\x7a\xd3\x42\xbe\x81\xae\xc5\x4a\x45\x0d\x14\x54\x53\x02\x2c\xd3\x82\x0a\x6a\xbf\xc1\xb0\x9a\xe3\x80\x18\x86\xe1\x10\x35\x93\x5a\x90\x50\x50\xf2\xcd\x61\x46\xc3\xf8\x89\xc9\x7c\xe0\xb1\xd4\x02\x03\x73\xd6\xa7\xe6\x3a\xe1\x10\x41\x4b\x4c\x27\x72\x4a\xe2\xaf\xf6\x80\x6d\x60\x72\x8e\xbc\xd3\x83\xd6\x5a\xd3\x6e\x1a\xef\xc4\xbe\x08\x49\x31\x51\x38\x28\x32\xbe\x17\xeb\xad\x14\x1a\x3c\x03\x9d\x48\x8a\xad\xe2\x9d\x0f\x63\xd6\x20\x8d\x74\x62\xac\xf3\x40\xd3\x32\x1c\xca\x2f\x3c\x68\x63\xa3\xbd\xd6\xfc\xbd\x5a\x25\xca\xa7\xe1\x50\x4a\x1d\x20\xe3\x09\x83\x54\x97\xc2\x6f\x42\xe7\xf2\xd3\x8a\x48\x16\x3a\x3c\xd6\x2a\xa6\xbf\x89\x34\xc7\x20\xef\x30\xc3\xb4\xb6\xe6\x84\xb8\xc9\x3b\x9e\x90\x0f\xaf\xd2\x96\x4e\x1b\x0d\x44\xd6\x71\xd3\x32\x6c\x9d\xae\xc9\x72\xd6\x9a\x88\xbc\x2b\xc9\x28\x62\x0d\xc3\x29\xeb\x1a\xb2\x7a\x15\xb5\xa4\xc8\x13\x8f\xe4\x96\x71\x43\xb8\x35\x63\x0c\x87\x09\xd9\xa8\x30\xff\x64\xcf\x96\x22\x88\x6c\xb6\xd1\x38\x84\x66\x9b\x57\x20\x53\x1e\xd0\x5c\x57\x1f\x6c\x49\x62\x89\x79\x35\x61\xdd\xc7\xfa\x84\x89\xe9\x3d\xb7\xe0\x26\xc9\x7b\xe7\x1b\x36\x84\x4e\x43\xc2\xbe\x10\x4b\xe3\xb0\x06\xa2\x4e\x42\xf4\xc0\x68\xe9\xa2\x2d\x82\x75\xbf\xb8\x88\x0a\xd6\xe8\x3b\x9f\x49\x51\x14\x7b\x48\x79\x93\xfd\x32\x0e\x88\x4d\xd1\x97\x11\xb1\xfd\x99\xa2\xca\xf0\x5d\x79\x7b\x0b\x6f\x8c\xfc\xfc\x13\x14\x53\xac\x11\xc7\x71\x52\x03\x83\x8a\x85\x1a\xd2\x80\x8e\x46\xb5\xbc\x47\x92\xda\x1d\x79\xe2\x69\x9a\xe1\x78\x58\xd4\x50\x2c\xc5\x73\x35\x0c\xb1\xc7\x46\x01\x8a\xb0\x67\x7e\x19\x11\xd4\x67\x82\x66\xc8\x47\x5d\x68\x34\xd8\xa2\x66\x6d\xb1\xe2\x99\xe0\x1d\x4d\xa7\xc4\xf4\x02\x52\xaf\xf7\xb7\x58\xcd\x1d\x0f\xb3\x24\x67\xc0\x5f\xcf\xf2\x24\x0b\x92\x5a\xec\x67\xad\x6f\xb3\x74\xd5\x9c\xd7\x29\xea\xe3\xd0\x69\xb6\x37\xac\xad\xbe\x63\x24\xf8\x3b\x6d\x24\xa8\xcf\xbd\xf4\xf5\xd7\x59\x4f\x16\x66\xbf\x1a\xc9\xdf\x2e\xa3\x7d\x7c\x99\xb6\xde\x7f\xb4\xcf\x52\x73\xb2\x29\xdf\x01\x8c\x71\xc2\x56\x3d\x58\xd2\x42\x46\xb4\x30\xc8\x16\xe2\xb1\x13\x6e\xf9\xa0\x41\x03\x9a\xb8\x8a\x92\x4c\x5f\xa8\x4c\x71\x45\x9b\xf1\x72\x98\x46\xf3\x5d\x22\x15\x68\x0c\xd4\xdc\x1a\xaf\x85\xbc\xb2\x3f\x9b\xf5\x7a\x13\x63\x7d\xbc\x16\x1a\xbf\xf1\x4f\xc8\x3c\x12\x3d\x79\x30\x9d\x2e\x2b\x50\x27\x4c\xae\x9f\x4e\x07\x46\xbd\xbe\x02\x00\x43\xc3\x21\xf8\xb4\xa1\x47\x0d\x71\xee\xef\xc3\x56\xdb\xe1\x6b\x8d\xbf\xc6\xf7\x6c\xf5\xba\xff\xc9\x6b\x34\x1d\xc3\x67\x83\x11\xa8\x6e\xbe\x5e\xb3\x46\xf3\x1d\x29\xa8\x56\x0c\x40\x95\x8f\xe4\x7d\x31\x9c\xee\x29\x31\x1c\xeb\x93\xd7\xd2\x3d\xbc\xe6\xa1\x22\x3a\x27\x86\x61\x13\xb6\xa5\x14\x4a\xc5\x67\xa9\x99\x81\x28\x8e\x4f\x1b\x9e\x72\x3f\x71\x99\xb6\xbe\x53\xde\x18\x88\x1b\x48\x73\x28\xeb\x0b\x1d\x30\x78\x27\x9e\xd0\x38\xe2\x75\x91\xe2\xc8\x55\xbe\x8d\x90\x4f\x39\x40\x49\xec\x23\x58\xc2\xfe\xfd\xe3\xa7\xf2\xcd\xf3\xda\xfb\x8f\x4e\x71\x7f\x52\x34\x78\x31\xb6\x21\x03\xd9\xf2\x1a\x4d\xab\x45\xd6\x3c\x7b\xad\xa9\x8c\xa7\x4e\xba\x68\x9c\xef\x14\x31\x31\x91\x8d\x00\x29\x26\x6d\x85\x15\x69\x29\xc2\x5e\x29\x2d\x31\xaa\x22\x8c\x8f\xa9\x21\x64\x98\xb0\x5e\xf7\x54\xc9\x85\xa5\xb5\xf8\x47\x03\x05\x0d\x06\x69\x53\xbc\x4a\x0b\xd9\x83\x1a\x41\x03\x47\xfc\x53\x6c\x88\xa2\xf2\x74\x44\x1e\x7e\xc8\x03\x0b\x79\x4c\xc1\x75\xdf\x0b\xb5\x82\x40\x5c\xfc\x07\xc4\x06\x07\xe9\xaf\x90\x12\x04\xc4\x28\x49\x21\xe6\xf6\x61\xa5\x5c\x62\xde\xdd\xcb\xcd\x98\x65\x07\x0d\xb8\x81\x32\xb7\x0f\xdd\x6e\xd3\xad\xee\xbf\x38\x1f\x58\x1a\xea\x33\xa8\x08\x44\xe0\x06\x63\x45\xbf\xdb\x74\x5b\x91\x1d\x35\x46\xb4\xd1\x07\xff\xc0\x4a\xce\x66\x05\xeb\x86\xab\xbe\x31\xdd\x83\xc3\x97\xe6\x2a\x26\x66\x7e\x5b\xcc\x68\xa9\x47\xd8\x46\x26\xbf\x05\x19\x2c\x68\x70\x41\x4d\xc5\x49\x79\xa5\x7f\x91\xb1\xbd\xc9\x32\xae\x70\x09\x6d\x6e\xeb\xc6\x98\x5f\x58\x07\x0c\xe0\xec\xf0\x2a\xc5\x2f\x7c\x65\xb7\x4f\x11\x5f\x2b\xec\x53\xa4\xac\xff\xb6\xfa\xb0\xe0\xb8\x6a\x48\xa4\x89\x31\xdb\xd2\xb5\x4e\x53\xb3\x93\x13\xfb\x34\x35\x2f\x73\x90\xe8\x37\x3f\x15\x36\x67\xaf\x52\xc7\x13\xf6\x90\x9b\xef\xe1\xc9\x0d\xf6\xbb\xc5\x0c\xec\x19\x6e\xd5\x84\xd7\x55\xca\x00\x4c\xb8\x5a\x2c\xde\xe0\xd4\xeb\xfe\x2a\xfe\xce\xba\x16\x5e\xd7\xbb\xff\xb5\xdc\x77\x86\x6e\x35\x0c\xdd\x7c\x67\xac\x77\x73\x0f\x5c\xea\xb7\x64\x35\xfc\x6e\xd3\x95\x35\xf1\xbb\x9b\x6e\xa5\x32\xde\x9a\xee\x77\x37\x5c\xae\x31\x3b\xb3\xaf\x52\xfb\x2a\x55\x0c\x8c\xa5\xba\xa2\x78\xe8\x61\xcb\x69\x6e\x61\x9d\xaf\xea\x8e\xe1\x35\x1a\x4b\x5e\x3b\x9f\x96\xd3\x08\x57\x97\x2d\xb4\x61\x3c\xec\xad\x01\xc6\xb5\x26\xf8\x91\xde\x5a\x2b\x6a\xe9\x57\x24\x34\x98\xf9\xc9\xba\x6f\xbc\xf3\x1d\x25\xa5\x7c\x02\xc9\x01\xde\xf9\xc6\xba\x3f\x73\x0a\x5d\x5d\xf8\xed\x9e\x78\xae\xe1\x1c\xa6\xe6\x67\x50\x3e\xc4\x2f\xa0\xd7\xb0\xb7\xdd\x69\xdb\x16\x3a\x3a\x3d\xf9\xc2\xc3\x4d\xc4\x6f\xfc\xf9\xd7\x06\xf7\x59\xc1\x3f\x36\x11\x64\xe9\x1c\x1c\xb7\xed\xf7\x3c\x0b\x84\x7f\x97\x59\xe0\xeb\x83\xc8\x02\x1f\x7f\xa0\xa2\x14\xf8\xfe\x58\x96\x04\xdf\x7f\xaa\xa5\x41\x4c\xd3\x52\x8a\xe4\x31\x4d\x7e\x19\xf1\x23\xc5\x27\xa9\x73\x51\x56\xe0\x60\x4c\xec\x26\xba\x1c\x13\x7b\x03\xd1\x23\x7b\x13\xed\x8d\x89\xfd\x1e\xed\x8e\x89\xfd\x3b\xda\x19\x13\xfb\x03\xf0\x00\x0e\xbb\xd1\x45\xc9\x83\x8b\xd4\x1c\xd1\xbc\x9d\x84\x69\xe6\xd3\xed\x91\x1f\xc7\x4b\x4e\x97\x2f\x53\x4c\x66\x0c\x34\x1e\xfd\x0a\xb2\x50\x67\xbf\x4c\x39\x95\x3f\x53\x7c\x96\x3a\x07\xa9\xe9\x67\x54\xe8\x67\xfe\x4c\x13\x8a\xbf\xa6\xe5\xe0\x78\x03\xaf\x6e\xde\xa4\xc2\x45\x32\x5f\x82\xbe\x31\x19\x04\x2f\x3b\x7c\x00\x41\x6d\xaf\x34\xb5\x8c\xdb\xbd\x62\x3c\x8f\xc2\x86\xd7\xd0\x0a\xb1\x26\x0d\xb9\xb9\x5f\xfe\x6c\x17\xd5\x1e\xc9\xa8\xa6\x35\x4a\x43\x52\x0c\x55\xf7\xc0\x05\xec\xaa\x07\xcc\x21\x23\x88\x0c\x19\x41\xa7\xfe\xab\x4f\x04\xce\xae\xaa\x8a\xf9\xde\x50\x1e\x9f\x77\x0f\xb9\x85\xf7\x1f\xba\x37\x44\x64\x68\x38\x47\x44\xf7\x86\x55\x3d\x71\xb6\x6c\x25\xf4\xb1\xb6\x93\xe8\x5d\x78\x2f\x8e\x84\x51\xa2\xce\x64\x48\xed\xed\x1e\x02\x29\x0c\x3e\x76\xa3\x99\x5b\xba\x3c\x24\xe6\xa5\x3e\xec\x89\xef\x91\x70\x81\x08\x1f\xd7\x43\x82\xc1\xf0\x5b\xe0\x13\x74\x16\xca\x43\xff\x33\x19\x7d\xed\x13\x74\x5e\x44\x7f\x1b\x12\x0c\x16\x3c\xbf\x79\x04\xad\x0a\xb3\xea\xe6\xb9\x2f\xae\x50\x84\xd1\xc9\x6f\x8a\x9d\x90\xe2\x40\xc5\x27\x78\xa1\x49\xf5\x0f\xd6\xbb\x35\x02\xd6\xc1\xa1\x9d\x86\xf8\x30\xed\x6e\x07\x2e\x23\x04\xbf\x5c\x3e\x11\xfb\x28\x42\xc9\x84\xd8\x7e\x0f\xe5\x13\x62\x87\x3d\xde\xb3\xed\xed\xde\x8c\x51\x85\x5f\xc4\x93\x36\xfe\x96\x0d\x0d\x9f\x89\x7d\xd0\x53\x8f\xc3\x2e\xe4\x24\x3a\x77\x24\xb8\x13\xd9\x73\x3e\x4c\x8e\x0a\x15\x29\x4e\x83\x59\x0c\x3b\xbe\x1a\xf8\xbd\xb9\xf4\x62\x18\xf2\xf4\x70\x3e\x5d\x19\x96\x42\xc1\x6e\x1e\xa2\x1c\xa5\x33\x00\xd8\xfd\x17\x44\xb1\x71\xfd\x77\x84\x95\x30\xbf\x22\xae\x84\xfa\x05\x81\x0c\x88\x13\x79\xd0\xfb\x67\x44\xfe\x1d\x81\x7f\x4f\xdc\xdf\x12\x06\x44\xcd\x69\xa2\x2d\xe3\xd3\x6c\xb6\x02\x23\xc9\x8c\x06\xbf\x3a\x26\x8e\x22\x9b\xe0\x1f\xa9\x59\xa8\xac\xa9\xc2\xc0\x59\x68\x13\x1c\x7b\x44\x8d\xfb\x1a\x2a\x19\x4a\x55\x36\x15\x64\xcc\x40\x16\xb8\x39\x27\x2a\x2c\x81\x00\xb2\x8b\x69\xe1\x45\x3a\x94\x24\x28\x17\x43\xc7\xb6\x66\x06\xcc\xcd\xf3\x73\x44\x39\xe9\xfd\x4c\xf4\xf3\x90\x20\x6e\x30\x42\x3e\xe6\xdd\x89\xe0\x31\xef\x6e\x34\x6f\x3e\xe2\xfc\x14\x4c\x77\x60\x30\x1b\x21\x8c\x48\x07\xdc\x76\x34\xdf\xcd\x83\xf9\x08\xca\xcd\x47\x5c\x16\x07\x1b\x08\xdc\x3d\x76\x9e\x58\x8a\x30\x16\xc1\x79\x7d\x76\xb5\x78\x43\x38\x0a\xa6\x53\x5d\xce\x41\xb2\x54\x39\xdf\x94\x0f\xaf\x0a\xec\x02\x14\xc1\x83\x30\x8e\xf6\xfc\x74\x89\x35\x03\x31\xcd\x55\x8c\x0f\xf1\x91\x2f\xe7\xb8\x12\x39\x9b\x3f\x0f\xd3\xea\xd3\x89\xcb\x8a\x5c\x21\x0e\x96\x0a\x01\xe2\xb4\x78\x40\x71\xee\x13\xe1\x9e\x1d\xae\x84\x96\x4c\x68\x52\xad\x92\x89\x5e\xa5\xea\x27\x57\x46\x67\x8c\xfa\x36\x64\xdb\x9a\xaa\x7f\x9f\xf2\xb8\xe0\x04\xac\x18\x05\x2a\x69\xc1\x50\xb1\x29\x53\x9d\xfa\xc5\xbd\xe1\x25\x5c\xec\xd9\x9d\x90\xa0\x28\x4b\xc7\xc3\x38\x89\x44\xd4\x55\x48\x50\x58\x39\xbc\xb7\x37\x50\x42\x23\x92\xc7\x0f\xf4\x8c\x64\x34\x19\xd9\xab\x4d\xb4\x28\x92\x8e\x7c\x32\xa0\x9f\x89\x9f\xa7\x99\xdd\x2c\xd6\x91\xe4\x19\x9f\x25\xba\x87\x28\x9b\xde\x49\xbd\x7e\x1f\xeb\xc4\xac\xe2\x37\xea\x75\xc6\xca\xc5\x58\x5d\x62\x88\xe5\x52\xd2\x1f\x11\xdc\x61\xe8\xde\x78\x32\xea\x61\x93\xc7\x0c\xfd\x22\x86\x0a\xa0\x4c\x2e\x5e\x8f\x32\xe6\x8b\x8c\x49\x3d\x82\x7f\xb0\x98\x49\x91\x6d\x4c\x61\x99\xf2\xd0\x33\x8b\x2a\x7c\xfc\x5e\x01\xf2\x9e\x61\x88\x43\xa8\x87\x80\x5b\xaa\x8e\x93\xda\xb7\x90\x28\xce\x80\xbf\x85\xa4\x5b\x81\x90\x2c\x88\x0f\xf0\x31\x43\x72\x28\xec\x64\x59\xe2\xcd\x67\x7c\x50\x9e\x94\x5c\x32\xe6\xd5\x42\xe0\x5e\x21\x55\x90\xda\x30\x1d\xc5\x8c\xef\xe2\x50\x1d\x2e\x6e\x7e\xe8\x01\x5f\xeb\x41\x73\xee\x1b\x5b\xd0\x44\xa3\xda\x17\x7c\x46\x38\x18\x13\x34\xf2\x63\x9a\xe4\x71\x18\xfb\x32\xf6\x72\x4c\xd0\x90\x66\x3e\x4d\x72\x19\x45\x8f\x90\x3f\xce\x32\x9a\xf8\x13\x19\xb5\x37\x26\x48\x1b\xf5\xd2\x2c\xd7\x64\xd4\x2e\x8b\x1a\xa4\x49\x54\xc4\xec\x8c\xc9\x0c\x5d\x87\x84\x6d\x4d\x3b\x21\xc1\x3f\xab\x47\x20\x57\x3c\xaa\x3c\x04\xa1\x43\x15\x44\xdc\x26\xb1\x79\x28\x58\x32\x0f\xbd\x62\xae\x06\xdc\x3d\x80\x75\x1a\x5f\x4e\x2f\x01\x9f\x5e\xfc\x39\xfb\x82\xc2\x88\x00\xf0\xf8\xd4\x67\xfb\x79\x98\x6b\x7c\xe4\x21\x6a\x38\xab\xdb\xdc\x99\x09\xeb\x02\x86\xb8\x8a\xe7\xd6\x6b\x18\xc0\xe7\x1e\xba\xf6\x48\x43\x02\x34\x22\x36\x3b\xcd\x0c\x67\x25\x58\x36\x3f\x29\x56\x9b\x3c\x4c\xd6\x45\xab\x3a\xe5\x74\x20\xfa\x83\x3c\x9f\x16\xfd\xb9\x38\xa5\x2e\x0d\xe2\xc8\x1e\x08\x87\x54\xc2\x63\xba\x51\xbc\xd4\x2b\xce\xa5\x93\x67\x78\xb3\x03\xdb\x0d\xdf\x30\x1c\xb0\xc9\x52\xbe\xe4\x41\x70\xa4\xd8\xa1\x46\xe9\xe6\x46\x3d\xd7\x4c\x9e\xe1\x14\x1b\x32\xbf\x83\xb3\x66\x41\x00\x3f\x96\x5d\x0f\x0c\x36\x97\x8b\x38\xfa\x1b\xb7\x13\xba\x09\x8f\xba\x64\xe7\xdf\x84\x16\xa1\x60\x30\xee\xb7\x4d\x04\xf7\xe3\x3a\x3f\xc8\x84\xc7\x8e\x16\xa2\xc2\xc9\xd8\xc3\x26\x7f\xf0\xc8\x62\x19\x41\x1c\x8f\x63\x54\x80\x37\x97\x00\xcb\x13\x53\x70\x35\x56\xd6\x1a\xe2\xe4\x24\x60\x80\xb9\x4a\x25\x35\xc0\x63\x42\x1a\x81\xc1\x39\x10\x00\x22\xb0\x68\x59\xb0\x9c\x31\x4b\x9e\xad\x3a\x72\xf6\xa7\xa4\xe1\x35\xe4\x14\xa1\x34\x02\xf8\x36\xd3\x3d\xbc\x72\x42\x1b\x1e\x58\xbe\x10\x66\x27\xd8\x6c\x7a\x91\x16\xae\xb4\x11\xc1\xaf\x6c\x55\x74\x03\xbd\xb6\xdf\xd1\x57\xaf\x43\x62\x20\x0f\x83\x51\x50\xdd\x63\xc1\x25\xe4\xbc\x9e\x9f\x28\x46\xbd\xca\x49\xff\xfb\x82\xa9\x68\x8c\x09\x37\xf6\x9e\xb1\x49\xf7\xf3\xc4\x68\x11\x9b\x9b\x8e\xfe\x01\xb0\x36\xab\x4d\x38\xac\x58\x01\xf9\xa9\xea\x00\xbf\xcc\x58\x0f\x00\xb3\x1e\xab\x60\xd1\x83\x3b\x2b\xf1\xcc\x07\x5c\xb5\x4f\x85\x3c\x93\x9b\x87\x12\x6e\x2a\xcc\x07\xac\x98\xe3\x29\x9c\x57\x13\xf3\x41\x58\x9f\x37\x1f\x44\xdf\x2e\x52\x42\x56\x54\x25\x93\x0f\x42\x47\xaf\x67\x54\x90\xd7\xb8\x48\xd2\xe6\xd1\x2c\x5f\xd5\x5e\x1d\xdf\xa5\xe6\x34\x10\x27\xcf\xfa\xdb\xf0\xad\x81\x6a\x71\x58\x1b\x0d\xa9\x1f\x87\x31\x0d\x90\x32\xc3\xf2\x1d\x1b\x9b\x58\x15\x5a\x86\x85\x11\x13\xc3\x33\x87\x98\x45\x14\x45\xaf\xe2\x5e\xaf\x5e\xaf\xf8\xe6\xf6\x95\x5b\xd1\x2c\x1d\xd2\x2c\x8f\xe9\xa8\xa6\xbf\x1d\xfe\xa2\xe0\xa4\xc6\x6d\x10\xc3\x94\x2e\xce\xd9\x1f\x6c\xcf\x7c\x40\xa1\xed\x99\x21\x1a\xda\x9e\x39\x54\x4f\xdb\xdf\x54\xc4\x8d\xd2\x62\xe4\x6d\xaf\x5e\x7f\x16\x0e\x76\x60\xee\xf4\xc1\x12\x8d\x57\xaf\x4b\x18\x33\xa0\x23\x7f\x15\x3f\x2a\xda\x4a\x82\xcc\x49\x4d\x63\x69\xa0\xae\xf4\xb6\xe1\x2b\x1b\x5a\x2f\x4d\x07\x94\x24\x8c\xba\x38\xd4\x7f\x78\x12\xe7\x6a\x16\xeb\x9e\xc9\x7d\xdf\x50\x63\x19\x42\x91\xb6\x04\x27\xa9\xc9\xca\x40\xa5\x2b\xcd\xe6\x37\xde\xaa\xbc\x49\x81\x37\xf0\x9c\xb2\x46\x18\xce\xc1\xf8\x2e\xd1\x6a\x43\x51\x8a\xf9\xd6\x70\xa2\x21\x3c\x32\xe1\x49\xaa\xcd\x16\x12\x15\x8c\x2a\x05\x22\x1d\x8c\x72\x16\x0e\x8d\x5e\x79\xac\x1a\xba\xa8\x8f\x23\x81\x13\x0d\xb0\xa7\x07\xa8\x6f\xa0\x1d\xec\xe9\x94\x05\x78\x22\xd4\xaf\x25\x66\xf8\x81\x0c\xec\xb4\x2c\x7b\xad\x69\x17\x5f\x4d\xbb\x80\xd5\x07\x68\xc7\xb0\x7b\x43\x58\xd7\xfa\x06\x62\x9f\xe2\x5a\xbd\x2f\x97\x82\xfe\x3b\x3d\x82\x86\xe2\x17\x70\xa5\xd1\x90\x38\xd4\xc1\xa3\x8b\x11\x60\xbf\xe8\x85\xa2\x69\x7d\xb6\x44\x02\x23\xe0\x16\xa7\xfb\xc2\x29\xb7\xfd\x99\xbb\x04\xf4\xb6\x67\xc4\xa1\x3e\x00\x64\x70\x23\xfc\x09\x1e\xaf\x17\x7d\x77\x94\x66\xf9\x2e\x20\x80\xcb\x7b\x92\xd4\xe8\xdd\x30\x9f\xd4\x48\x96\x91\x89\x59\x3b\x66\xcd\xd3\x23\x0f\xb4\x46\xf2\xda\x80\x92\x51\x5e\x4b\x13\x5a\xa3\xfc\x76\xdf\xd4\x54\x23\x59\x2f\x33\x14\xe2\xae\x8b\x22\x6c\x39\x11\x67\x74\x24\x19\xdd\x47\x03\xec\x77\x23\x57\xf1\xa4\xc1\x3e\x59\x55\xfa\x90\x80\xa0\x46\x8c\x4f\xb8\xa8\x50\x37\x72\x67\x0b\x55\x82\x5c\x2b\xb7\x3d\x91\x4f\xb6\x1b\x1f\x29\x80\xe9\xc4\x27\x8d\xa8\xd1\x17\x9e\x69\x6a\xbf\xa8\x2a\x54\x12\xd5\xbc\x71\x0e\x5a\x0b\xac\xe5\xd2\x11\x0d\xc0\x81\x53\x32\x98\x88\x1e\x39\xaa\xa5\x99\x54\x70\x10\x63\xa3\xcf\x3a\x3a\x2d\xb9\xc8\xd1\xd6\xe2\x24\xa0\x4f\x35\xad\xd1\x6f\x68\xac\x84\x60\x3c\x1c\xc4\x3e\x61\xd3\x52\x9c\xd4\x94\xe2\x19\x16\xda\xed\xbb\x78\xd5\x72\x42\xb6\x76\x0d\x8c\x99\x8f\x43\x3e\x3a\x44\x4d\xd0\xb1\x0f\x16\x46\xbb\x7e\x61\x08\x25\x50\x5c\x04\x0c\xd5\xfd\x1b\x17\x91\xe0\x66\x89\xcf\x14\xdc\x1d\x9e\xb1\x8a\xd9\x16\xc7\xfa\xe4\x4d\xa7\xde\x27\x75\xc6\x92\x66\xe7\xd8\xa7\x24\xda\x6b\x68\x66\xed\xb2\x97\x8e\x07\x01\x1b\x90\x71\x52\xcb\x7b\xb4\x96\x91\x24\xa2\xb5\xae\xb5\xa6\x35\xe0\xa2\xa7\xa1\xb9\x8b\x03\x59\xeb\x10\x6f\x40\xe5\x13\xeb\x2c\x7d\x9c\x7f\x00\x1d\xcd\x91\xbb\xff\xbf\x91\xeb\x57\xd9\x3c\x47\x31\x61\x29\x39\x8d\x68\xf6\xff\x40\xbc\x5f\xb6\x90\x62\xac\x78\xa8\xfa\xed\x90\xa7\x83\xab\x5e\x44\x74\x1f\x29\xa6\x21\x87\x1e\x69\xf8\x0d\x8f\x90\x06\x69\xc0\x5c\x38\x4f\x70\x85\x29\x5e\x44\xe6\x7d\xc3\xcd\x3b\x7f\x93\x8b\x93\x33\x77\x90\xd2\xb1\xf9\x5a\xd5\x29\x33\x28\x47\x09\xed\x9e\x5d\xac\x97\xcb\xd2\x1f\x23\x91\x5e\xf8\xee\xa9\xa6\xef\x44\xb6\x3c\x65\x2a\x7c\x95\x2d\x83\xfb\x0a\xe5\x0c\xb8\xa1\xac\x0d\xa1\xd9\xf7\xfb\x27\x02\xa6\x79\x4b\x21\x7e\xb5\xb0\x33\x39\xe7\xf7\x8a\x08\xbf\x57\xa5\x4d\xbb\xce\x74\x4a\x57\x85\xc2\x80\x61\xbc\xf8\x85\xba\x26\x38\x85\xb2\x3e\x91\xae\xe5\xb2\x1e\x42\xc0\xcc\xeb\xef\x7f\x6e\xf1\x00\x8b\xd8\x90\x11\x1b\x2e\xf7\x8e\xff\x1e\x63\x4e\x11\xe4\xdb\x74\xa7\xd3\x3f\xff\x64\xe9\x9b\x2e\xd8\xac\x00\x6f\x41\x60\xdd\x43\x56\x4d\x31\xe4\x5a\x36\x52\x6f\xb8\xb0\xdf\xf7\x8c\x8a\xb8\xe5\xc3\x1a\x50\xca\xff\xc5\x69\x40\xe1\x77\x4f\x1e\x1b\x7d\xed\x81\x09\x53\x82\x2d\x67\xf3\x13\x71\x08\xe3\x04\xd8\x0c\x26\xee\x96\xdf\x25\x52\x1b\x86\x23\x63\x11\x5b\x5e\x19\x5b\x6b\xce\x3c\xfc\xfe\x93\xd7\xfd\xea\xb6\x2c\xdb\xeb\x6e\xba\x8e\x8f\xdf\xc3\x6c\xde\xb2\xe0\x4a\xa5\xbc\x70\x84\xf5\xc4\x07\x0f\x87\xd6\xfc\x03\xcc\x6a\xaa\x62\x8e\xde\x97\xdd\x51\x0c\x56\x47\x0e\x56\xd6\xdf\x51\xe1\x32\x8c\xdb\x03\x45\x11\xea\x8b\x69\xa7\xbc\x9f\xee\xc3\xc2\x0a\xd7\x91\xb0\x47\x0b\x51\x61\xaa\x3e\x32\x5e\x28\x0e\x70\x54\x1a\x5e\x14\xa7\x23\xa2\x76\x2f\x77\x71\xc2\x85\xca\x3b\xf2\x24\xad\x9f\x32\xc4\x8d\x46\x81\x78\x09\x56\x68\xdc\xde\x50\xf7\x51\x84\x02\xa3\x15\xe0\xc8\x16\xdf\x14\x45\xdc\x6a\x62\x54\x1c\xe8\x40\x19\x01\x14\x40\x55\x21\x2b\x88\xe6\x3d\xd5\x61\x2e\x4e\x14\xbb\xbe\x8a\x3d\x7a\x46\x03\x38\x2a\x41\xc0\x96\xae\x8b\xa8\x38\x0a\xe3\x5c\xa0\xe5\x7d\x77\x68\x38\xc9\xad\x1e\xa0\xf2\x4e\x40\x99\xc2\xe9\x6b\xfc\x96\x73\x79\xd9\x95\xba\xae\x72\x9b\x0d\x05\x5a\x0e\xdd\xf2\x9d\x46\x83\xf2\x82\x8a\x13\x37\xa9\x50\x23\x66\x29\x28\xbd\xba\xd3\x96\x97\x57\x43\x3d\x04\x05\x5a\x79\xa2\x8e\x83\xae\xc5\xd6\xee\xae\xeb\x44\x62\x27\xc6\x77\x7d\x4d\x87\x82\x5a\x5c\x79\xc2\xd7\xc7\x41\x97\xba\x8e\xb5\x8a\x01\x4b\x1f\xf9\x46\xbd\x0e\x99\xfa\x4c\xa2\xee\x4b\x39\x26\x52\x98\x1c\x46\xaa\x24\x9b\x81\xd5\x4d\xd9\x23\x41\x94\xf9\x07\x3e\xf2\x50\x88\xa9\x5c\xef\x23\x79\x0c\x10\x1a\xd0\x13\xf7\x18\xb3\xe3\x50\x3f\xef\xf1\xa5\xf9\x85\x8b\x5a\x8c\xc2\x3e\x8a\x10\xed\xa6\x81\xe2\x1f\xb2\x50\x50\xe3\xfd\x88\x9a\x77\x71\x02\x77\x42\xdc\x76\x34\xc4\x90\x27\x88\x31\x8a\xbe\x1a\x29\x89\x02\x9c\x6d\x1a\x65\x09\x45\xa4\xb1\x88\xa4\x5e\xb7\xb6\x4a\x38\x89\xb9\xb4\x4e\xcd\x59\x42\xbb\xbd\x80\x4d\x4e\xab\x10\xd0\x23\xe4\xa3\x10\x11\x85\xea\x62\xa6\x52\x56\x56\x65\x11\x59\xe5\x6c\x85\xe0\x80\xfb\x18\xb2\x30\x77\xa3\x59\x2c\x76\x9c\x7d\x9f\xe3\x41\x4e\xb3\x91\x22\xa5\x27\x69\xb2\xa6\x48\x7e\x9a\xfa\xe6\x02\x9c\x93\x54\x1b\x45\xd9\x8d\x74\x03\x97\xef\x13\x57\x75\xb1\x25\xe9\x32\x56\x73\x33\x2d\xbc\x39\x3c\x70\xc9\x18\x29\x61\xda\x2b\x21\x25\x6d\xdf\x3d\xd2\x08\x1a\x6f\x5d\x4e\x15\x08\x9d\xc3\x72\x67\x55\xec\x07\x48\x12\xd4\x34\xae\x44\x84\x6a\x9a\x64\xba\x96\x66\x35\x4d\x72\x56\x7b\xab\xf4\x05\x56\x48\xbd\xae\xff\xbb\xd2\xf9\xee\x6d\x52\xa3\x71\xde\xa3\x99\x2c\x8f\x09\x82\x5c\xa6\x50\x08\xd3\x4b\x1a\x18\x6d\xeb\xf3\x84\xcc\xca\x0e\x2c\x3a\x2f\xa3\x8d\x72\x9b\xd7\xaf\x49\x90\x74\x4e\x82\x2c\x85\x09\xd1\x74\x4c\x40\x59\x81\x99\x83\x1a\x0e\xc8\x27\x14\xb1\x22\xa0\x9f\x3b\x7e\x97\x32\xe1\x72\x36\xf3\xd9\x78\x0e\x94\x99\x5a\x3d\xae\x97\x63\x12\x0c\x8b\x73\x9b\xb6\x4b\x0c\x6c\xf6\x87\x15\x07\x1f\xf3\xa2\xc8\xd7\x9e\xad\x1c\x60\x37\xff\xfc\xc3\x42\x16\x6a\x22\xb6\x52\x23\xb6\x3a\x23\xb6\x22\x23\xbe\x00\x5b\x86\x13\xe0\xdd\x90\x6b\x35\xb3\x05\x1b\x56\xe3\xa0\x81\xc3\xd0\x61\xc1\x7a\x5d\x0f\x1a\xf8\x1a\x9e\xb0\x80\x03\x9e\x61\x79\xa1\x11\xcc\xc0\x2e\xa1\x79\xea\xeb\x55\xf3\xc1\x3b\x91\x5d\x42\x2b\x97\x9c\xa1\x7a\xc9\xb9\x13\x95\xd9\xab\xca\xfa\xbb\xff\x24\xfb\xee\xab\xd9\x3b\x22\x77\xc0\x72\x57\x4f\xd0\x63\xb2\x24\x93\x5c\x8d\x7d\xbc\xe8\xb1\xed\x74\x99\xcd\xa3\x5e\x44\xaa\x8e\x82\x40\xf4\x84\x13\x9d\xb2\xf7\x9c\xa4\x79\xb1\x9f\xd1\x84\x68\x4d\x0a\x0f\x09\x01\x5e\xf5\x10\x45\xc0\xf7\xc0\xa0\xb8\x13\xeb\xd0\x3c\x73\xba\xb4\xa9\x22\xe8\xbd\x0c\x88\x47\x07\x36\x81\xd2\x12\xd5\xbf\x60\xd4\xe7\x47\x97\x73\x36\x81\x7b\x94\x04\x34\x2b\x4c\x03\x13\xc3\x99\x15\x5a\xa1\x6c\xf9\xc2\x96\xd3\xe7\xc5\x1a\xad\x10\xb3\xff\xdd\xaf\xae\x9d\x88\xa8\x7a\x7d\x02\x53\x07\xfb\x00\xd7\x56\x2c\x60\x82\x7f\x2b\x0e\x6c\x72\x93\x6b\x85\x6f\x61\xd8\x62\x86\xb0\xbf\xa4\xdc\x8a\x1a\x2b\x98\x1b\xab\x9a\x19\x33\x9f\x8d\xb4\x11\xa6\xce\x29\x93\xd0\xbb\x2c\x27\xa6\xb0\xf3\x2f\xdc\x94\x46\x44\x67\x31\x6c\x09\x0f\x5a\xb7\xb7\x3a\x41\x4d\xc3\x26\x62\xf3\x1a\x54\x36\xaf\x03\x1c\x88\xad\x6b\x3f\xd6\x07\x86\xc1\xb6\xa8\xf6\xa0\xdc\x9a\xae\x32\x0e\x0d\x8a\x4a\x0c\x8c\xe5\x1b\x2d\x50\x16\x08\xd9\x14\x92\x3e\xd6\xb4\x06\xf7\x84\x3a\x80\x9a\xad\x62\x20\xaf\xcc\x77\x01\x20\x2b\x51\x43\x83\x8d\x89\xd6\xe0\x70\x0d\x4d\x6e\x50\xf8\xae\xb5\x9c\x29\xb5\x06\x20\x70\x06\xa6\x8f\xa3\x5b\x86\x96\xcd\x02\x67\xbe\xcb\xb7\x97\x8a\xa2\xa3\xe5\x24\x5b\xa1\x93\xc8\xca\x0d\x71\xbb\x87\x86\x98\xe1\x4f\x5c\x27\x89\xf5\x21\xe3\xfa\x19\xcc\x90\xc3\xe9\xf4\x33\x54\x69\x68\xb4\x86\x78\x68\x3e\xd8\x1c\x0c\xbf\x3c\xd8\xc3\x59\x29\xf2\xd2\x6e\xe2\x76\xf7\xd9\xf0\xe5\xdf\xfd\x6e\xe2\x4e\xa7\xec\x17\x63\xbc\x13\x15\x3e\xc5\x86\xb2\x9f\x0d\x0d\x83\x95\x5b\x70\xf0\x5e\x44\x75\x8a\x98\xbe\x88\xf9\x5a\x02\x0d\x45\xd4\x63\x54\x44\xdd\x89\xa8\x62\xfe\x19\x1a\x68\x08\x06\x7b\x87\xdc\x32\x51\x63\xc8\x0d\xce\x34\x86\xdc\x9e\x4c\x63\x28\x0c\xf9\xee\x46\xf6\x4e\x34\x77\x40\xa0\xda\xb7\xae\xa5\xa1\x38\x4b\x8c\x13\xd6\x58\x8d\x0b\xda\x48\x0c\x07\xea\x34\x9c\xcd\x66\x3f\x75\xbf\x7b\xe6\xcd\x5f\x63\x88\x31\xdd\xdd\x77\xa7\x53\x9f\xc9\x35\xfd\xae\xe7\x4e\xa7\xed\x9e\x31\x5b\x6a\xd0\xec\x87\x54\x3a\x50\xae\x1c\xc3\xa1\x2e\xc7\xbc\x72\x44\x1b\x47\x8a\xef\xaa\xf2\xcc\x45\x58\xe7\xe7\xf3\xbb\x1e\xb4\xac\x2d\xec\xd9\xde\x56\x68\x48\x2f\xe3\x98\x3a\x86\x30\xe8\xcf\x84\x2f\xe4\x35\x30\x57\xf7\x2e\x6c\x3d\x73\x55\x9a\xdb\x88\xe0\x97\xed\x67\x62\xff\xa0\x68\xe7\x99\xd8\x3f\xa9\x72\xca\x1c\x0e\x15\xa3\x90\xa7\x13\xec\x61\x8c\x7f\xd0\xd6\x0f\x6a\xff\xa4\x8e\x10\x3c\x20\xed\xf3\x44\x39\x1e\xfc\x91\x8e\x6b\x3e\x19\x0c\x68\x50\xe3\x9e\x2d\xcc\x87\x78\x34\x26\x83\xf8\x99\xc0\x79\xe0\x1e\xc9\x09\xec\xbd\x75\xa3\xb4\xa1\xd6\xa3\x35\x2d\xa1\x8f\x5a\xad\x4f\x27\x8f\x69\x16\xbc\x35\x1c\xd2\xe2\x53\x53\x8b\x60\xb0\x68\x6d\xf7\x19\x2f\xc4\x25\xc2\x19\x1c\x39\x71\x35\xeb\x32\x78\x97\x63\x62\x0e\xb9\x1c\x86\x64\xa3\x9c\x79\x6e\xbd\xfe\x53\x87\x00\xfa\xae\x2f\xdc\x39\x7f\x01\x2b\xf9\x80\xc0\x30\xca\x5c\xbe\x2b\xef\xfb\x4e\x42\xfe\x5d\x3c\x3a\x7b\xb5\x70\xee\xd9\x90\x63\x65\x4b\xf0\xec\x87\x1e\x0e\xd1\x9b\xd4\x50\x14\x4e\x78\x2d\x5e\xa4\xb5\xf0\x33\xd6\x51\xba\xdc\xc6\xe4\x99\xcf\xc3\xea\xb3\x57\x78\xe2\xc3\x84\x30\x7f\x5e\x2c\xee\xee\xc3\xdc\x44\xf9\x95\x3d\xad\x5c\xd9\x53\xfe\x26\x56\xdd\x99\x88\x83\x4f\xd2\x0d\xd9\xac\xca\x77\xe0\x91\x14\xec\x23\xf3\xc1\xe1\xe3\xaa\x2f\x67\xfc\xc2\x03\x72\x84\x77\x53\x3d\x32\x50\xc4\x9a\x21\x32\x50\x81\x01\x47\xc6\x6c\x36\x9b\x5d\xe3\x70\xc8\x9f\x3a\x9f\x89\xa3\xfb\x6b\xd6\x59\x44\xe8\xa4\x88\x13\xfc\x71\xae\x19\x6f\x44\xe8\xf8\x35\x13\xa7\x27\x61\xf7\x2b\x18\x44\xdd\x7f\x0d\xe2\x4c\x42\x7c\xaf\x9a\x3e\x8d\x86\x42\x4f\xbf\xa2\x90\xc5\xc0\x89\x6b\xc6\xc1\x74\x7a\x3a\x73\x1e\xe7\x9f\x94\x94\x5a\x86\x02\xf8\x15\x1f\x3f\x66\x1c\x28\x8e\x78\x7d\x47\xee\xdc\x67\x86\xb3\x72\x6d\x5e\x90\xbf\xa1\x44\xac\xf9\x25\x41\xdd\x6b\xd6\xe4\xdc\x82\xec\x9b\xf1\x3f\xae\x47\xf7\xc1\x83\xaa\xdf\x65\x4b\xad\x02\xb3\x55\xed\xa1\xa7\xf8\x62\x16\xe3\xc8\x3e\x65\x99\xf6\xfe\x79\x31\xfb\xee\xcc\x89\x16\xdf\xeb\xc5\x65\x1e\x99\xbd\xd8\xc7\x42\xee\xfd\x11\x00\x8a\xd3\x03\xc7\x87\x4b\x3b\xdf\x7c\x40\x01\x56\xbd\x78\x2b\xdb\x63\x83\x35\xf5\x08\x2f\xdd\xb3\xca\x0e\x41\x58\xb7\x63\x15\x5f\xb9\x36\xdb\x04\xff\xcf\x34\x9d\xf2\xf3\x9f\xea\x15\xd4\xaa\x3c\x74\xf3\xcd\x50\xae\x5b\xbe\x19\x1a\x8c\xee\x50\xb1\xb3\xf9\xc5\xef\x12\x17\x97\x41\x18\xb0\xca\x25\x34\x44\x22\x1f\x53\x58\x01\x5e\x66\x0e\x0b\x60\x1f\xfc\xdf\x99\x41\x68\xb4\x18\xc2\x20\xb4\x75\x0e\x2f\x15\x05\x91\x9c\xb6\xa7\x53\x3d\xc0\xfd\xa1\x4e\x51\xa1\x92\x68\x18\x88\x65\xc1\x81\x51\x6a\x0b\x3b\xd7\x66\x6f\xb8\xe0\xe8\x7d\x39\x13\x78\x26\x9d\x60\x9d\x54\x58\x61\xd4\xeb\xc4\x64\xcb\x3e\xb8\xe8\x27\x2d\xd2\xf5\x5d\x71\x06\x73\x6d\xde\xde\xfe\x8f\x0c\x76\x7c\x70\x2e\xf6\xf2\xc0\xcf\x75\x42\x8e\x11\xcd\x35\x22\x78\x27\x65\x53\xb5\xee\x9b\x43\xfc\x52\xba\xd7\xf7\xcd\x21\x2b\xfe\xf3\xe4\xb5\x71\x7f\x97\x43\x07\x78\x5a\x62\xcd\x15\x0b\x80\xe2\x44\xac\x5e\xe7\x77\x59\x2d\xaf\x4b\xca\xaa\x7d\x7f\x20\x8b\x9a\x47\x6c\xe9\x60\x89\x3f\x1e\xe6\x7b\x96\x48\x96\x8a\x49\x77\x39\x90\x2b\xc2\xac\x33\x78\x40\x30\x59\x68\x0d\x00\xf1\x7d\xb1\x7e\x73\x21\x55\xba\x8c\x64\x59\x3a\x4f\xbf\xcc\x22\x32\xf8\x6a\x96\xdb\xc7\x7f\x92\x45\xe6\x34\x84\x89\x08\x79\x61\x37\x97\x97\x89\x14\x90\x1b\xc4\x60\xcf\xe8\xfa\x2e\x0e\x80\xb9\xbe\xbf\x00\x8a\xe8\xaf\xba\x40\xa8\x74\x7e\x27\xac\xd7\xc3\x2e\x5b\x74\x75\xf6\x0f\xb8\x15\x56\xbb\x48\x38\x9d\xea\x21\x7e\x59\xec\x15\xa1\xe1\x2c\x1d\x93\x72\x29\x16\xaa\x22\xf5\x7a\xca\xdd\xe0\xae\x86\x44\xf7\x8d\x56\x68\x3e\xe0\x1e\x0b\xd9\xfa\xad\x24\x8c\x49\x3d\x2c\xde\x37\x96\xe3\x84\x67\xfe\x26\x1b\x55\x85\xdf\x89\xd0\x1c\xe2\x84\x85\x5b\xd4\x7e\x99\x01\xf7\xae\x17\xba\x83\xc2\x04\x85\xfa\x21\xef\x05\xf1\x87\xe5\xed\x73\x70\xa8\x13\x03\xba\x3d\x83\x3a\xce\x5e\xc7\xa9\x0c\x28\xc0\x2c\x47\x2f\x77\x0e\x06\xc3\xd5\x83\x53\x81\x16\x63\x58\xd1\xa7\x0f\x0e\xab\x76\x3b\x4a\x84\x44\x45\x06\xd2\x91\x4e\xaa\x43\x8e\xb0\x21\xb7\x72\x6d\x7e\x5d\xa8\xab\xb2\x38\x9c\x13\x65\xd9\x02\xcd\xe6\x6b\x73\xe0\xff\x22\x83\xb2\xea\x0a\xe6\x1c\xbe\xd2\x79\xdb\x99\xca\x9c\x68\x7e\xe2\x89\x96\x32\xe7\xec\x5f\x30\xa7\x9d\xbd\xb6\xe4\x11\x15\xd9\x2f\x99\x33\x0c\xe7\x07\x38\x1b\x3e\x64\x15\xe3\x52\x1a\x91\xbd\x14\x64\x3f\x54\x16\x63\xb0\xfd\x95\x70\xfd\xfd\x12\x07\x36\x13\x42\x10\xdf\x69\xfb\x2c\x28\xcf\x3a\x4e\x4b\x6b\xe0\x4c\xf4\xe3\xf2\xdd\xaa\xd7\xd7\x77\x43\x82\xfc\x25\xdb\x4b\x06\x8e\x6a\x5a\xc3\x6f\xbc\x45\xb0\xc5\x14\x17\x4f\xda\xdb\x86\xee\x71\xd9\xc2\x03\x99\x87\x18\x8d\xb7\x9a\xf9\x56\xe8\x78\x7a\x66\x96\x0e\xa8\x11\x60\x8f\xd5\xf8\x65\x26\x16\x9f\x00\xa2\xd9\x5a\x0d\x01\xec\x23\xcf\x1c\xb2\xf1\x21\x6b\x38\xa0\x2e\x38\xb8\x17\x96\x59\x14\x0f\x07\x20\xae\x39\x5e\xa3\x61\xc8\x4f\x8f\x8d\x68\x99\x61\x6e\x31\x80\xce\xf3\x25\x5a\xde\x1b\x86\x61\xd9\xd3\xbe\xba\x48\x78\x28\x5d\x90\xfc\xd6\x9a\xca\x46\x65\x50\x9e\x32\xfb\xf8\x27\xcc\x09\x8e\xbc\xbc\x33\x1f\x54\xb7\x96\xd7\xe6\xb3\x35\xd7\xbf\x8a\x36\x3c\x59\x6c\xc3\x58\x69\x43\x6e\x36\xbb\xf0\x1d\xe5\x63\x6f\xfe\x92\xda\x03\x57\x1e\x4c\x54\x14\x97\x59\x70\x14\xfb\xc9\x5b\x6c\x38\xbe\xc5\x0c\xf9\x05\xf3\x69\xb6\x9d\x65\x64\x62\xcb\xab\xcd\x83\x50\x89\x85\x2b\x6b\x71\x0d\x5d\x8b\xf3\xda\xa8\xbc\xf7\xac\x25\x69\x22\x95\x35\xe5\x15\x28\x57\x6e\xb9\xbf\xd5\xb9\xa6\xce\xbc\x83\xc7\x5f\x95\x5f\xb9\x53\x95\x25\xa6\x59\x71\xc0\xc4\xb6\xc6\x10\x18\x81\x1d\x00\x3a\x18\x8c\x54\x45\x00\xf5\x86\xa2\x72\x6d\x10\x62\xbf\x4b\xc5\x15\x43\xa9\x2d\x17\x1a\xe5\x05\x52\xd9\xaa\xfc\xc2\x07\x4e\x76\xe6\xba\x8c\x7a\x42\x10\xf2\x63\xe6\x10\x4e\x50\xca\xcc\xd5\x63\x94\x28\x7e\xa0\xdc\x48\x77\x6d\x14\x3f\xd3\x5a\x10\x87\x21\xcd\x68\x92\xf3\x27\xa9\x5a\x63\xa5\xcc\xd9\xd0\x6a\x3a\xdb\x82\xca\x4a\x87\xf2\xb8\x45\xde\x28\xe7\x6c\xbf\x6a\xa8\xd5\xed\x63\xcb\xe9\x6f\x01\xcd\x7d\x49\x33\xeb\x86\xd0\x5d\xfa\x28\xec\xf6\x5d\x63\xc1\xbd\xe6\x03\xcd\x26\x70\x0c\xc4\x89\x93\xc7\xf0\xe2\xb4\x99\x55\x54\x65\x38\x14\x87\x5f\x66\x4e\x68\xfa\x38\x72\xe4\xd5\x52\xb3\xfd\x1e\x63\xe1\xdf\x39\xc2\x01\x1a\xc7\x7a\x70\x2b\x57\x52\x44\x90\x65\x80\xe3\x60\xe0\x1e\xdb\xae\x35\x00\x18\xae\xac\x8c\x99\x8f\x03\xe7\x57\x19\x7c\xc5\x1f\x6b\x20\x86\xd9\xb5\xe9\xef\xcc\x5b\x85\x52\x6c\x61\x4d\xa7\x7d\xf5\xa0\x10\xf0\x3e\x5b\x7a\x39\xa4\x90\x7a\x70\xb8\x2d\x5c\x19\x0b\x16\xe4\x69\x8d\x04\xc1\x45\xfa\x38\x9a\xe7\xc6\xb2\x2e\xa8\x19\x0e\x4c\xc6\x97\xf7\xf3\xf4\x2c\x92\xe0\xef\xe8\x5d\xe2\x56\x9c\xd5\x96\xc3\x80\xf5\x64\x41\x47\x3c\x9a\x27\x05\xb1\x71\xa6\x28\x28\x09\x75\x91\x94\xb7\x90\x56\x9d\x8c\xfc\x1d\xbd\x09\xf3\xd9\xe5\x70\xd9\x9b\x1e\x5f\x76\x09\x02\x40\xc1\x52\xa0\x40\x05\x4a\xbd\xb9\xbd\x69\x39\x1d\x39\x04\x6e\x28\x01\xb4\xea\xd4\x4a\xea\x9f\xfb\xaa\xda\x48\x2b\x30\x1f\x84\xf4\x4d\xe0\x4e\xb0\x68\x72\x03\xf6\x5b\xe3\xce\xdf\xec\x04\x41\x20\x1e\x75\x5e\x93\x2c\x4a\xa8\x83\xca\x7e\x7a\xfe\x58\x0b\x8a\x9d\x8c\x74\x78\xc6\xb3\x72\x6d\x4e\x96\xbd\xed\xda\x4b\xf5\x17\x3f\x1d\x8c\x6c\xb9\x01\xcf\xd2\x47\xf1\x71\x12\xa2\xa1\x2d\x65\x7f\xd4\x4e\x8d\x99\xb3\xbb\xbc\xc0\x20\xa9\x16\x76\x6d\x9e\x77\x96\x31\x9c\x56\x5b\x25\x3f\x5a\x06\x14\x55\x81\xee\xa3\x79\x61\xc7\xfa\x04\x2f\x09\x96\x2e\x17\x88\x34\xbc\x4f\x95\x55\xc5\x53\x16\x99\x35\x79\x8c\x75\x22\x17\x55\xcf\xe0\xc2\xfa\xee\xe2\xce\xe4\x1e\x16\x37\xde\xc9\x86\x0b\x44\xc0\x39\x34\xa3\xc4\xa8\xf4\x14\x55\xc6\x91\x94\x9c\x55\x29\x39\x13\x94\xcc\x2d\xef\x15\xb3\x6b\x96\xe3\xab\x0b\xbc\xaf\x2c\xf0\x7e\xb9\xc0\x7b\xc6\x8c\x11\x47\xdf\x2f\x12\x3f\x2c\x88\x2f\x17\xeb\xe1\x82\x53\xd3\x3b\x26\x78\xdd\x0d\xb9\xd7\xe5\x8c\x08\x4b\x7a\x77\x43\x7e\xce\x79\x17\x11\xfc\x92\xd1\xc0\x1e\xf5\x90\x37\x18\x53\x3b\x8f\x50\x94\x51\x9a\xd8\x27\xaa\x43\xb1\xa4\x50\xd9\xb0\xb6\x3c\x71\xb3\xb5\x4d\x08\xba\x1b\x22\x82\x52\x02\xfb\x23\x6a\xcc\x56\x72\xa2\x0f\xfe\x4e\x15\x5d\x7d\x15\xe8\x21\xb6\x65\xbf\x8b\x13\x44\xd9\x7f\xf2\x24\xbc\xa3\x96\x8b\x59\xc0\x4f\x1c\x31\xa6\x46\x88\x89\x79\x39\xd4\x8b\x0d\x3d\x05\x65\x84\x90\x65\x93\x51\xfc\x65\x08\x7f\x84\x6b\xa1\x90\xfd\x37\x0c\x27\xf8\x04\xb0\x21\x0e\xa7\x53\x89\x42\x64\x44\x01\xe6\x50\x4e\xc0\x11\x5a\x18\x07\x2d\x8a\x9b\xb6\xb5\x15\xb4\x02\x6c\xd9\x14\x5b\x72\x1f\x46\xd7\x02\x14\x61\xbf\x70\xf5\x1a\x09\xe3\x5d\x01\xe2\x25\x52\x14\x19\x06\xea\x63\x1f\xdc\xb3\x37\x2d\x0b\x0d\xb0\x6f\x8e\x7a\xe9\x23\xdc\x5c\x8a\xd7\x2b\x83\x7a\x5d\x1f\x14\x16\xdb\xf8\x05\x02\xb7\x5d\x1e\xad\x05\xc6\x7a\xf8\xae\x6f\xa0\x21\xee\xaf\x25\x68\x84\x2d\x67\x24\x94\xf5\x47\x72\xc9\x1f\xf3\x93\x67\xb6\x3d\x44\x0f\x6c\x60\x8c\x17\xa8\x18\x1b\x06\x7a\xc6\xbd\xee\xc4\x73\x75\x7d\x2c\x91\x3a\x0f\xac\xd5\x76\x08\x9b\xaf\x86\xfa\x53\x0f\x35\xd1\x03\xaf\xd9\x0e\x4e\x22\xa2\xfb\xdc\x95\xf9\x99\x78\x2a\x81\xf2\xc8\x40\x7b\x6a\xca\x89\x90\x87\xd0\xa8\x67\xa0\x13\xec\x9b\x41\x46\x1e\x7f\xd2\x2c\x3d\x8a\x13\xda\x5a\x69\x82\x5d\xb5\xa4\x35\xde\x8a\x5a\x7a\x32\xd4\x3b\x3d\xf4\x8c\x1e\x0c\x94\x0c\xf5\x3d\x94\xac\x41\xd8\xda\x3a\xa9\xd7\x93\xa1\xfe\xbd\x87\x4e\x44\x5a\xa7\x87\x86\xe8\xc1\x30\x6c\x91\x27\x79\x05\x6e\x07\x3d\xaf\x25\x65\x9e\x3e\x20\xe4\xb9\x76\x8a\x82\xca\x04\xb5\x8e\x63\x4c\xcc\xde\x90\xb1\x0c\x7d\xf6\xc4\xeb\x48\x8c\xc7\xf5\xba\xce\x52\xda\x84\x33\x93\x3f\x5e\x10\x40\x8c\x87\x60\xea\x02\x98\xf6\xa6\x67\x20\x08\xb0\x58\x08\x3c\x11\x22\x9e\x43\xb0\x0c\x0f\x85\x15\xe6\x8a\xbf\xde\x44\xde\x33\x12\xac\x93\xe9\xf4\xd4\xe0\xef\x59\xe4\xe4\x7e\x17\x11\x38\xe4\x52\x95\xcf\xd3\x61\xb9\x01\x2a\xdd\x25\x12\xf9\x86\xe9\xae\x70\x7a\xef\xc9\xa8\x7e\x01\x35\x64\x83\x1f\x22\x04\xcc\x70\x08\x8f\x1f\x60\xa4\xc5\x27\x58\x28\xe6\xdf\x9e\x60\x4f\xd8\xb4\xeb\x63\x61\x56\x6e\x7b\x82\x83\xd9\x19\xd1\xd3\x85\x37\xaf\xca\xe1\x4f\x7c\x82\xc4\xb0\xbd\x3d\x71\x16\x14\xec\x84\xea\x96\x27\x6f\x49\x7c\xe7\x4e\xdc\x30\x08\xea\xed\x05\x4a\xc5\x0e\x53\x64\x9c\x4e\x09\x9b\x6a\x8b\x1b\x2f\x7f\x3a\x25\x5b\x3e\x5b\x6a\x80\x2a\xf3\xdb\xab\x3e\xbb\xae\xfa\x33\x01\xd3\x5b\xb6\xfc\x89\x1a\x2a\x5c\xbe\x1f\xaa\x47\x2f\xe9\xb0\x7b\xe4\x16\xe6\xef\x90\x8f\x4e\x05\xcf\x0e\x36\xb1\xb7\x46\x1c\xf9\xce\xe8\x60\x53\x6e\x60\x0e\x36\xb1\x7c\x7e\x7b\x30\x22\x78\xff\x4e\xdf\xbd\xd3\x03\xc3\x4c\xe5\x86\xee\x6b\x11\x4b\x21\x76\xf6\x43\xbf\x1f\xa2\x74\x68\x38\x2b\xf7\x0b\x84\x0a\xff\x3b\xf7\xaa\x98\x75\xea\x10\x7c\x74\xa7\xcb\x22\x90\xc4\x8a\x9a\x6b\xba\x70\xdf\x16\x9f\x18\xeb\x82\x9a\xa2\x4b\x1d\xdc\xe9\x55\x2d\x01\x75\x71\xc8\x86\xba\x58\x1b\xc6\x97\xb8\xeb\xce\x32\xa0\x84\xc9\x65\x24\x89\xe8\x6b\x07\x58\xe3\x4b\xf0\x24\x4c\x1f\xd5\xbe\x69\xcc\x1c\x9e\x9b\x3e\x2c\x6e\xdd\x19\x4f\xe7\xb2\x56\x18\x6e\x70\x3f\x5c\xd9\xab\x6f\x27\x4b\x7d\x50\x1f\x64\x60\x50\xbb\x84\x7f\xc5\x03\x4a\xf8\xf7\xb5\x67\x70\xcb\x29\x73\x6f\x9a\xca\x6d\x53\xf1\xae\x09\x95\x0e\x87\x25\x69\x55\xa5\x75\x19\x1b\xf2\xcb\x9b\xee\x85\x70\xa4\x1a\xe2\xc8\xfc\x16\xe8\x6c\x7d\x88\xcc\xde\x48\x0f\x0c\x27\xe4\xae\x65\xaf\x3d\xd2\x08\x1b\x51\x68\x38\x01\x8f\x18\x47\x8d\x00\xbe\x85\x7a\x65\xe5\x35\x14\xad\xba\xf2\x86\x11\x20\x3b\xe8\xe6\x87\xf6\xef\xef\x58\xbb\x35\x3e\xb4\xdf\xbf\x63\x6d\xd7\x68\xb6\x37\xdf\xb1\xf6\x6b\xe8\x42\xe7\xb2\x45\xba\x9b\xae\x6d\xa9\xed\x39\x1a\x56\xac\xbf\x4e\xa7\xa7\xe5\xdd\x66\x1a\x55\xdc\x23\xa1\x48\xf1\x5b\x17\xd6\xeb\x51\x37\x5c\x6b\xba\x18\x6f\x7b\xa4\x15\xd8\x1e\x9b\x03\x09\xf2\xbb\x7d\xa2\x53\xd4\xb4\x0c\x17\x7c\xa0\x8f\x16\x1a\x88\x77\x0b\x79\x4d\x66\xb9\xe2\xcd\xa7\x5f\xaf\xf7\x62\xdd\xe7\xa7\x87\x3a\x85\xf3\x67\xb9\x70\x3b\x8a\x87\xf9\xaa\x4f\xf4\x50\xbe\xea\xe2\x46\x04\x5f\xf4\x9b\xa0\x61\xcc\xd6\x23\xb6\xe9\x4a\x23\x82\x02\x6e\x8c\x12\x85\x38\x94\x1e\xcb\x75\xd3\x58\x8f\xd0\x2e\x35\x1c\xbf\x25\x3d\xa5\x53\x78\x06\x6b\xc3\x5c\xcc\x5d\x41\x31\x46\x07\xb1\x9e\xf8\x04\x05\x43\x79\xc2\x5b\xbe\x92\x83\x5f\x6e\x49\x81\x3f\x46\xe3\x1a\x2a\xdc\x7e\x41\x20\x6c\x08\x30\x04\xda\xd2\x2b\xd6\x13\xd8\x39\xf1\xd7\x31\xe6\x78\x44\x4f\x60\x4d\xdc\xed\x91\x8c\xf8\x39\xcd\x46\x07\xe1\xf6\x03\x89\x07\x6c\x53\xab\x55\x66\xd2\xeb\x90\x60\x32\x2b\xe8\xf9\x67\x05\x28\xcf\x01\x35\xd4\x09\xc9\xbf\xcc\x5e\x3c\x1d\xd4\xd0\xd5\xbf\xce\x3c\xf7\xce\x50\x43\x74\xf8\xf7\x18\x76\x99\xa4\xc0\x11\x68\x28\xab\xb0\x9f\x0f\xf8\xac\x64\xff\xdc\x04\x54\xfd\x2c\x53\xbf\x64\x24\x88\x69\x92\xab\x50\xf4\x81\x38\x2b\xaf\x12\xb1\x43\x0a\x12\x06\x15\x12\xb8\x70\x3a\x50\x7a\xc0\x6b\x28\xb6\xb3\x2c\x7d\x94\x48\xc6\xa9\x8a\x64\x0c\x06\x39\xc6\xe9\xdf\x23\x39\xe3\x87\x8f\x12\xcd\xa8\x42\x0b\x1f\x5e\xa3\x7f\x40\xcb\x1e\xc9\xa9\xc4\xe1\x55\x70\xf0\xf7\xe7\x5e\x89\xc3\x5b\xe8\xd1\x9e\xd2\xa3\xff\xc9\x90\x78\x8d\x08\x50\x2b\x78\xad\x75\x7f\x9d\xeb\x9f\x37\xc7\xeb\x4d\x0a\x88\xfe\x4f\x1a\x05\x30\xfd\x1f\xb5\x0c\xe0\x7a\xa5\x79\x9c\xc7\x38\x09\xd2\x47\x93\x67\xac\xd7\x2b\x9f\xe6\x20\x25\x01\xcd\x96\xc7\xb2\xde\x3d\xf8\x45\x52\x95\x88\x7a\x5d\xff\x87\x90\xaa\x6c\x04\xfe\xc8\xe5\x41\xcd\xa8\x6b\xb9\x70\x80\xb0\xb2\x52\x2a\x53\xe4\xc3\xca\x4d\x31\x31\xd3\x84\x61\xc6\x8a\x49\xa0\xf1\x3c\x48\x10\x8f\x86\x24\xf7\x7b\xed\x07\x9a\xe4\x2a\xe4\xc3\x3c\xe4\x88\xe6\x67\x24\xef\xa9\x30\x8f\x0b\x30\x3e\xdb\x89\x7e\x57\x61\x9e\x96\xc3\xfc\x50\x61\x26\x8b\x65\x25\x15\xb2\xb7\xe7\x01\x22\xca\x7d\xcb\x2a\x30\x5f\xe6\x61\xfa\x74\xb2\x9b\x06\x15\x98\xfd\x79\x98\x1e\x49\x82\x01\x5d\xa8\xfc\xc1\x3c\x9c\x17\x57\x09\xfa\x3a\x0f\x40\x06\xf9\x21\x9d\xa8\x20\x87\xf3\x20\xa0\xd6\xaa\x42\x1c\x2d\x61\xf1\xe9\x90\x25\x8d\xb0\xa7\x7a\x7c\x5c\x52\x7b\x0e\xa7\x62\x3b\x59\xc0\x96\x93\xbc\x52\xfb\xd3\x85\xfe\x51\x14\x56\xc0\x9c\x2d\x29\xeb\x72\x1e\xd1\xf9\x62\x47\xcb\x28\x09\x26\x50\xa2\xdf\x83\x59\x5f\x01\xbf\x98\x07\xf7\x49\xe2\xd3\x81\x0a\x72\x39\x0f\x72\x47\x73\x32\xc7\xd0\xce\x02\x1a\x78\xc1\x9f\x77\x48\x16\xd1\x4a\xf3\x5d\x2d\x40\x0e\xd8\x72\x54\xe9\x97\xdf\x96\xc3\x54\xfa\xe5\xf5\x22\x4b\xd3\xa1\x0a\xf0\x7d\x1e\x20\x8f\xf3\x41\xa5\xee\x3f\x16\x3a\x8a\x97\x66\x79\xa5\x79\x7f\xce\x83\x54\xa7\x00\x05\xd9\x9b\x85\xe2\x16\xaa\x4e\xee\xe7\x07\x78\x46\x1e\x59\x71\xb0\x2d\xbc\xc7\x5a\x46\x07\x24\xa7\x01\x67\x9a\x86\xfc\x7b\xac\xf9\x03\x4a\xb2\x4e\x7c\x47\xd3\x71\xae\xa1\x00\x80\x1e\x68\x36\xa2\x1a\x7a\x83\xb5\x80\xe4\x44\x43\xf4\x1e\x6b\x43\x16\x9d\xe4\x7b\x5c\x7b\x57\x43\xe1\x3d\xd6\x2a\xf3\x87\x86\xa2\x7b\xac\x89\x89\x42\x43\xbd\x7b\xac\x1d\x6f\x7f\xff\xeb\xdb\xf6\xd1\x55\x5b\x43\x31\xa4\x25\x81\x86\x6e\xef\xb1\x26\x46\xb0\x86\xfa\x8c\x82\x1e\xc9\xd8\x58\xd5\xd0\xe0\x1e\x6b\x62\xe0\x6a\xe8\xee\x1e\x6b\x47\x24\x3f\x4a\x22\x0d\x25\xf7\x58\x53\x46\xab\x86\x52\x8e\x84\xeb\x8c\x1f\xb0\xb1\xa5\xa1\x21\x2b\x22\x1d\x67\x3e\xd5\xd0\xfd\x3d\xd6\xbc\x74\x9c\x04\x23\x0d\x65\xf7\x58\xe3\x23\x54\x43\x23\x56\x1e\x98\x21\xd1\x50\x7e\x8f\xb5\x9c\x0b\x7e\x63\x16\x4c\xbf\x5e\x9e\x9e\x68\xe8\xa1\x28\x77\x47\x20\x78\xe4\x85\x29\x86\xb3\x34\xf4\xc4\xeb\x5a\x30\x6e\xc2\xbe\xf3\x74\x78\x96\xa5\x43\x12\x41\xe3\x69\xe8\x99\x03\x89\x61\xad\xa1\xed\x7b\xac\xdd\xd1\xd1\x88\x44\x54\x43\x3b\xec\x83\x0c\x47\x1a\xda\xe5\xf8\x39\x98\x86\xf6\x00\x15\x90\xd8\xbe\xc7\x5a\x2a\x73\x7f\x86\x56\x48\xf3\xd4\x4f\x07\x1a\xfa\x72\x8f\x35\x9a\x30\xf2\x03\x0d\xed\x4b\x0a\x21\xd7\x01\x34\xe2\x5d\xfa\x40\x4f\x80\x93\x2b\x5f\x19\x1a\xf0\x71\xfc\x5d\x43\x87\xc5\xc7\x0f\x0d\x1d\xb1\x8c\x24\x88\x68\x3e\xd2\xd0\x31\x94\x46\x13\x0d\x9d\x30\x36\xc1\x38\xd5\xd0\xe9\x3d\xd6\x2e\xe8\xfd\x98\x8e\xf2\x33\x92\x91\x3b\xca\xc4\x66\x0d\x9d\x33\x0e\x8f\xf3\x9c\x51\x7c\x01\xf5\x82\x31\xab\xa1\x4b\x96\x57\x1d\x9c\x1a\xea\x00\x41\x24\x98\x08\x02\xaf\x58\x8b\x04\x01\xb4\xe5\x51\x3c\xca\x69\x42\x33\x0d\x7d\x63\xf5\x23\xd0\xf3\xae\x05\x37\x35\xf4\x9d\x81\xb2\x51\xa3\xa1\x1f\x0c\x71\x9e\x0d\xa0\x94\x9f\xbc\xc6\xbc\xaf\xbd\xb9\xc7\xda\x43\x4c\x1f\x35\x44\x32\xd6\xa6\xbc\x54\x2f\xc3\x1a\x1b\x00\x1a\xf2\x33\xac\x8d\x7a\x71\xc8\xfb\xc0\x30\x22\x58\xbb\x49\x6e\x9e\x36\xfd\xf5\x91\x9f\xc5\xc3\xfc\x93\x86\xee\x21\x32\xd3\x50\xc6\x02\xb5\xae\x86\x46\x10\x20\x79\x6d\x10\x27\xb4\xa6\xa1\x1c\xbe\x83\x94\x72\x03\xdf\x61\x9c\xcb\xfb\x99\xbc\x47\x6b\xbb\x69\x92\x67\x29\x5c\x5a\x7d\x53\x47\xb0\x7c\x05\xef\x73\x09\x44\x43\xe3\x45\x34\x6a\xfe\x0a\x78\xed\xb1\x17\xc3\xc3\xcc\x24\x18\xc4\x49\x54\x7b\x0b\x4c\x7c\x5b\x83\x91\x68\x6a\xe8\xe1\x5f\xe0\x32\x35\xb4\x12\x64\x78\xd1\x78\xdb\x5b\x0d\x3d\x46\x04\xbf\xd5\xb4\xb7\xe8\x09\x02\x9f\x6e\x92\xb7\x68\xc2\x70\xff\xb6\xb1\xa1\xa1\x67\x1e\xfa\x43\x43\xdb\x2c\x54\xcf\xe8\xfd\x38\xce\x28\x19\xe7\x3d\xdc\xac\x6b\x88\x66\x58\x7b\x6b\x6a\x28\xcc\xb0\x66\x9a\x1a\xda\x61\x50\xe6\xba\x86\x62\x16\x11\x0a\x51\xeb\x36\xc3\xda\xba\x86\x76\x59\xe2\xba\xa9\xa1\x3d\x08\xac\x6b\xa8\x0d\x01\x36\x09\xe4\x66\x2f\xbf\x1b\x68\xe8\xb3\x12\x73\x3b\xd2\xd0\x17\xf8\x8e\x1e\xe2\xe7\xf5\xfc\x5e\x43\x7d\x86\x89\x05\x1e\x32\xac\xfd\xbe\xf1\x51\x43\x8f\x19\xd6\x3e\x6a\x68\x9f\xc1\xd9\x37\x89\x86\x0e\x58\xc8\x19\xc5\x91\xad\xa1\xaf\x10\x06\x75\x02\x0d\x3d\x65\x58\xdb\xda\xbd\x38\xfa\xfc\x49\x43\x87\x2c\x61\xab\x7d\x7c\xd6\xf9\xf1\x49\x43\x13\x96\xd2\x3e\x65\x09\xcf\x3c\x78\xf1\x49\x43\x47\x8c\x21\x5b\xbc\x97\x00\xbb\xb0\x96\xd3\xa7\x7c\xfd\x96\x3c\x10\x1e\xab\xd5\x46\x99\x8f\xb5\xb7\x68\x3b\xc3\xda\x76\x92\xa4\x39\xcc\xb0\xf1\x1d\x3d\x8a\x13\x36\xcc\x59\x74\x46\x09\xdb\x72\xe6\x1a\xda\x55\x3f\xd7\x46\x39\xf1\xfb\x6c\x00\xef\x65\x58\xdb\x21\x99\x00\x6a\xb3\xaf\xb1\xc7\x24\x78\x1e\xf1\x39\xc3\xda\x2e\xcc\x7f\xa3\x3c\xf6\xfb\x22\xf6\x98\x55\x60\x97\xb0\x32\x6b\x4c\x46\xa9\x91\x9a\x2f\x9a\x3e\x4f\x6b\x71\x3e\xa2\x83\x90\x35\xfb\x17\x96\x1b\x66\x4a\x91\x71\x1f\x22\xee\xbc\x54\x7c\x9f\x00\xa2\x34\xc9\x69\x92\xaf\x75\x26\x43\xaa\xa1\x53\x88\x1a\x8f\xf2\xf4\xae\x96\xd1\xd1\x30\x4d\x46\xa2\x23\xd2\x6c\xa9\x69\x03\x74\xc6\x72\xec\x91\x51\xcf\x4b\x49\x16\x68\xe8\x9c\x7d\x7f\x69\x77\x34\x74\x90\x61\xed\x0b\x19\xb3\x49\xef\x2b\x0b\x52\x59\xee\x61\x86\xb5\xfd\x78\x94\xa7\x51\x46\xee\x34\x74\x94\x61\xed\xe0\x8e\x44\xf4\x82\x04\x05\x2f\x8e\x65\xe4\xe5\x90\x64\x7d\xce\xd3\x0b\x86\xfa\x20\x01\x3b\x03\x79\xec\x0d\xc0\xd5\x35\xe1\x57\xd3\x76\x4d\x43\x97\x3c\x9d\x5f\xf0\xef\x91\x9c\x7c\x8b\xe9\xa3\xd4\x08\xe1\xae\x20\xd0\x49\x56\x82\x94\xb9\x85\xaf\x6c\x5b\x02\xff\x47\x43\x1d\x15\xd9\x12\xc8\xf2\x05\xc2\x66\xf9\x76\x1a\x5d\xfd\xe3\x5c\x85\x59\x81\x0d\x25\xfb\x69\x86\x35\x56\x57\xc1\x84\x6f\x0c\xdb\xf1\xe5\xf7\xe3\xa3\x0d\xf3\xfb\xf1\xd1\x7e\xa7\x73\xa6\xa1\xeb\xc5\x48\x73\xd3\xb4\x34\xf4\x7d\x49\xc2\x07\x96\xb0\x72\x96\x61\xed\x98\x0c\x35\xf4\x03\x40\x62\x3f\x4b\x47\x69\x98\x97\x38\xcf\x19\x40\xca\x5a\x54\x94\xfc\x93\x01\xf2\xb5\xfa\x0d\x0b\x9e\x26\xe0\x16\xfc\x2e\xcd\x68\x6d\x48\xb2\x3c\xf6\xe3\x21\x49\xf2\x51\x2d\x24\xf1\x80\x06\xac\xe3\xb1\x39\x57\x37\x34\x74\x91\x61\xed\x34\x8b\x04\xa2\xcb\x0c\x6b\x67\xa7\x97\x1d\x0d\x75\x58\x28\x96\x55\x23\x3d\x52\xac\x2f\xe0\x40\x3c\xa8\xc1\x82\x7a\x95\x61\xed\xd2\x87\x7d\x9f\x64\x02\x8b\xc9\xe9\x70\x48\x03\x65\x40\x5d\x67\x98\xbf\x5f\xd7\x90\xc7\x50\x75\x7a\xb4\x96\x71\x74\x34\x28\xc6\x03\x49\x02\x95\xdc\x9a\x2f\x46\x0d\xad\x81\x94\x50\xcb\xd3\x88\xb2\xb9\x1c\xd5\xc8\x08\x4e\xa0\x6b\x8f\xa0\x00\x12\xb3\xec\xc1\xd8\x67\x7d\x3d\xa0\x43\x9a\x04\x34\xf1\x27\x35\x7f\xe2\xb3\x02\x7d\x28\x50\xd2\x5c\x23\x61\x4e\xb3\x9a\x86\xbe\x67\x3c\x76\x00\x9d\xf5\x07\xfb\xca\x28\x05\xbe\x07\x90\x03\x46\xd8\xcf\x0c\x6b\xd7\x69\x16\xb0\x34\x0d\x51\x96\x70\x73\xe3\x6b\xe8\x4d\x86\xb5\xff\x6a\x28\x64\x11\x7f\x41\xa7\xf9\xeb\x7e\x4c\xb3\xc9\x5f\x19\x0d\x33\x3a\xea\xfd\x15\x27\x39\xcd\x1e\xc8\x40\x43\xd1\x02\xcc\x38\x1b\x68\xa8\xc7\xa2\x89\x50\xb1\xd6\xd0\x4a\x0c\xdf\x7c\x11\x25\x23\x58\x7a\x3b\x19\x4d\x02\x3e\x98\x3c\x1e\x93\xd1\xd1\x48\x43\xb7\x00\x9a\xd4\x40\x0d\x46\x43\x3e\x4b\x93\x73\x5a\x5e\x54\xa9\x0f\x50\x43\xfe\x32\x2f\x4e\x93\xf5\xa7\xb5\xc7\xc7\xc7\x35\xd6\xb7\xd7\xc6\xd9\x80\x26\x7e\x1a\xd0\xc0\x61\x33\xf8\x88\xe6\x78\x9c\x87\x6b\x1f\x35\x14\x8c\xb0\xe6\x91\x4c\x43\x94\x05\x06\xa9\xdf\xd7\x50\x38\xe2\xf2\x1f\x93\x1e\x59\x70\x10\xb3\xd8\x1e\x0b\xa6\x77\xc3\x01\x65\xd2\xc2\x80\x95\xe6\x8b\xd9\x29\x07\xde\xdd\xc9\xa8\x8c\x89\x42\xf1\xa8\xf8\x60\x55\x80\xaf\x8c\x0a\xb4\x09\x03\x0d\xca\x69\xa9\x3f\x92\x52\xed\x40\x84\x84\x0c\x98\x72\xc0\xff\x8f\xb8\x37\xed\x6e\x1b\x47\x1a\x85\xbf\xe7\x57\x48\x7a\x7c\xd9\x44\x0b\xa6\x25\x3b\xdd\x33\x4d\x1a\xd1\xeb\x45\x89\x1d\xdb\x71\x6c\xcb\x76\x12\x86\x93\x03\xae\xa2\x76\x91\x94\xbc\x49\xff\xfd\x3d\x28\x00\x24\x28\xc9\xe9\x65\x9e\x7b\x6e\x9f\x8e\x45\x82\xd8\x51\x28\x54\x15\x6a\xc9\x82\x05\xfb\xc3\x06\x5b\xc3\x13\x48\x0b\x32\x80\xed\x1f\x39\xe9\x36\x85\xe4\x38\x9d\x0c\xe8\x93\x59\x19\x8d\x47\x81\x55\x99\x50\xdf\x8f\x47\xd1\x76\x36\x9e\x98\x95\xdd\xc9\x63\x0d\x0f\x59\xfd\xe3\x21\x8d\x47\x35\x3c\xca\x9f\x0f\x1e\x63\x46\x93\x42\x0d\x40\x9c\x8c\x53\xfe\x04\x6b\x95\xb2\x74\xb0\x42\x95\xab\x37\x49\x49\x2d\x48\x92\x71\x52\xc3\xd3\x94\xd4\xc2\xb1\x37\x4b\x59\x8d\x89\x7c\x81\xdd\x92\xb1\x72\x82\x90\x33\xe2\xb1\x31\xa4\xfd\x40\x6c\xaa\x1a\x7e\x33\x7b\xfd\xab\xd8\xb7\x35\x9c\xa6\x2c\x0b\x20\xe9\x8c\x3d\x06\x63\x31\x81\x73\x28\xcc\x65\x15\x8c\x5e\x35\x3e\x04\x63\xb6\xbe\x49\x0d\x3f\x28\x9f\xca\x92\x96\xf3\x31\xf5\x0f\x92\x28\xad\xe1\xc7\x57\xf3\x5c\x31\x88\xad\xe1\xa7\x57\x33\x00\x99\x93\x1a\xd4\xf7\x0b\x22\xf1\xf9\x2f\xe4\xbe\x1c\x05\xfc\xfc\x95\x85\x0e\xfe\xac\x10\xa7\x96\x0f\x06\x03\x59\x26\xad\xe1\xc3\xbf\x56\xa8\x68\xe5\xe8\xcf\x0a\x64\x49\x1c\x45\x2c\xe7\x2c\x65\xec\x4c\x7a\x4e\xdd\x60\x90\xf2\x93\xb9\x86\x8f\x59\xf1\xee\xa0\x86\xe7\xec\x6b\x96\x4d\x6a\xb8\x0d\x49\x59\x36\xf9\x3f\x35\xfc\x5e\x3e\x9b\x3b\x3b\xfe\x6c\x38\x7c\x32\xbc\xf1\xb0\x86\x3f\xc8\xe4\xf4\xff\xd4\xf0\x09\x7b\x89\xfd\x60\x94\xc5\xd9\x53\x0d\xbf\x79\x48\x49\x2d\x66\x67\x67\xca\xce\x4e\xbe\x77\x1f\x21\x2d\xaa\xe1\x53\xc8\xcc\x4f\x28\x8e\x3d\x6a\xf8\x29\x25\xb5\x5e\x0a\xac\x4b\x0a\xac\xd8\x84\xa3\x85\x83\x94\xd4\x06\x34\x1b\x30\x80\x3c\x64\xcf\xf1\xa8\x2f\xb6\xcd\x51\xca\xd8\x18\x05\xda\x3e\xb2\x7a\x59\xca\x0f\x81\x86\x7f\x48\x10\x3b\x86\xac\x6c\x5c\xf0\x90\xf4\x61\x9e\xcf\x20\xbf\xdc\x5a\xe7\xf0\x36\xf6\xe3\x30\x66\x33\xf5\x9e\xe5\x84\xf3\x48\x40\xe3\x07\x48\x98\xa5\x81\x3f\x7e\x18\xd5\xf0\x89\x7c\x85\x5d\x70\x9a\xbf\xcd\x59\xe1\x0b\xa8\x2b\xc5\x15\xc0\x7d\xb0\x9b\x3e\xb1\xa4\xd1\x98\x6d\x69\xe8\xfd\x25\x7f\xcf\x7e\x88\x26\xfd\x1a\xfe\xcc\x92\x72\xa6\xeb\x63\x4a\x6a\xe3\x24\x12\xad\x5f\xb1\x6f\x62\xa7\x8b\x5d\x7e\x96\x92\x1a\x3b\x17\xa0\xfa\x6b\xf8\xce\xbd\x0d\xd6\xf0\x0d\xbc\xc1\x05\xfd\x78\x64\x56\xa8\x9b\x8e\x07\xb3\x2c\xb0\x2a\x80\x23\x1a\x56\x65\x10\x84\x19\x3c\x3c\x6f\x83\x7c\xc8\xac\x34\xad\x1a\xee\x40\xb1\x99\x5b\xc3\xe7\xa9\xe0\x9b\x6a\xf8\x96\x25\xae\xca\x59\x6a\xf8\x4e\x24\xc3\x9a\xdd\xf3\x17\x38\x25\x6a\xf8\xcd\x05\x94\x8e\xd8\xdc\x01\x1b\xf8\x29\x7f\x4f\x6b\xf8\x0b\xcf\x3b\x3d\xf5\xcd\x1a\xbe\x64\x5f\xe2\xa8\x9b\xd5\xf0\xe7\x94\xb1\xac\x83\xc0\x63\x0c\x17\xcb\x93\x06\x49\x1c\xa4\x46\xd3\x60\xe0\x73\x1f\xfb\x8c\xdf\xfa\x56\xfa\x30\x19\xc7\xa3\xec\x26\x7e\x66\x24\x42\xe9\xc3\x3c\x4e\x19\x71\x76\x3a\x3a\x0f\x22\x60\xfd\x69\xcc\x3e\x03\x55\x7e\xc5\xda\x99\x50\xc6\x3c\xa6\x82\xdd\x95\x63\x72\x21\x17\xa0\xbf\x38\x64\x87\x10\xbc\xcf\x3c\x0f\x40\xf1\x26\xcd\xb9\x76\x9f\x7d\xe0\xdc\xde\xc1\x63\x90\x32\x0a\x27\x58\x49\x6a\xd6\x70\x27\x2d\x52\x18\xea\xbd\x4d\x39\x0d\x5f\xc3\x21\x64\xee\x06\x95\x87\x64\x3c\x8a\x72\xa3\x47\x7e\x3a\xdc\xb1\x6c\x70\x1a\xdd\xc3\x93\x3c\xfb\x22\x28\x24\x5e\x8d\x8c\xa6\xfd\x0b\xda\x63\xd8\xb9\x2b\x3f\x00\x28\x7e\x61\x85\xc6\xe3\x41\x16\x4f\x6a\x38\x86\x4f\x53\x60\x62\x59\x7a\x12\x04\xb0\x0f\xbe\xa5\xa4\x36\x8b\x6b\xb8\xc7\xbe\xcf\x62\x83\x1f\x6e\x5b\x90\x2a\x67\xa3\x0f\xdf\xd2\x20\xf9\xc1\xc0\x94\x31\x5d\x6c\x7b\x83\x4f\xa5\x1a\xa6\x19\xa9\xcd\xf9\xb0\xdc\x8c\xd4\x1e\x68\x32\xe2\x47\xfe\x80\x95\x12\x72\xe6\x80\x8b\x4c\x86\x3c\x29\xeb\x1e\x25\x81\xcf\xc3\x03\xa6\x35\xec\x65\xa4\xf6\xd8\x4d\x6a\xd8\xe7\x0f\x93\x31\xdb\xc3\x23\x96\xf7\xf9\xb1\x86\x83\x8c\xd4\x16\x35\x3c\x66\xef\xdf\x67\x8d\x86\xff\xaf\x9a\x72\x2f\x9f\xe5\x37\x9a\x37\x13\x4a\x26\x31\xcd\x7d\x3a\x0e\x77\x09\x97\x41\xce\x52\x9e\x70\x3c\x27\xb6\x08\x6d\xd9\x2e\x3d\x52\x43\xf4\x3a\x05\xfb\x21\x99\x99\x1a\x70\xe8\xf1\xc4\x69\x2c\x14\xa1\xdb\x73\x54\xbc\x1c\xcf\xf3\xc6\xaa\x64\x92\xca\xdb\xfe\xbb\x26\x6b\x3a\x8e\xf8\x25\x7c\x46\xa4\xb7\x3f\x3b\x9b\x0a\xf3\xc4\x9b\x09\x55\x0d\x4b\xa7\xd0\xef\x92\x7b\x7d\x97\x7b\xea\x71\xe5\xe5\xa7\x47\xa8\xed\x3a\xc6\x2a\x25\xc0\xad\xa7\x72\xa7\x9c\xae\x83\x3d\xe2\xb5\x3c\xfb\xdc\x75\xf4\x24\xa6\x48\xd3\xaa\xfc\x25\x8d\x29\x6a\x79\xa6\xc7\x6f\x46\xb5\x9d\x08\x9f\x06\x88\xbf\xec\xef\x44\xf8\x4c\xbe\xbc\xdb\x89\xf0\x47\xf9\xf2\xbd\xb6\x13\xe1\xf3\x00\x99\x97\x96\xbf\xd6\x34\xf1\x96\x4b\x2e\xd7\x4b\x62\x4a\x76\xfe\x63\xff\x67\xdf\xf9\x55\xdf\xa7\xba\x5e\x41\x75\x21\x19\xd4\x7f\xf9\xe1\x0e\xe8\xa8\xff\x0b\x6a\xe9\x35\xfe\x58\x43\x2d\xd4\x62\x59\xf4\x6e\x12\x84\x44\xff\xc5\xfe\xcf\x2f\xce\xaf\x90\xc1\xfe\x4f\xcd\xf9\x95\x7d\x7f\x07\x75\xed\x7f\xdf\xa1\xfc\x09\xfd\xba\xb5\x83\x53\xd6\x4a\xc1\xf5\xea\x7a\x0a\xf5\xb4\xd0\xaf\xe6\x8e\x72\x4f\x1e\xcb\x80\x21\xc6\x3c\x48\xd2\x78\x3c\x5a\x2c\xbe\x05\xb9\x11\x52\x5f\xef\x45\x14\x83\xfd\xdd\xb7\x60\x79\x4f\xa6\x19\xb7\x96\xbc\x6b\x4a\x2b\xc8\xdc\x30\x72\xd0\x7b\xd5\xea\x69\x97\x90\x09\x84\x7c\x1d\xec\xfd\x2c\x8f\x9b\x29\x97\xef\xd9\xc6\x35\x36\x8e\xe7\x72\x99\xb9\xce\xdb\x9c\xad\x32\x47\xa7\x84\x5c\x76\x15\x6f\x54\x85\x96\x3f\x35\xda\xe5\x52\xed\xd7\x4b\xe5\x7e\x4b\xee\x8d\x3b\xfa\x5a\x67\x33\xd5\x09\x7b\x92\xad\x88\x70\x07\x3d\x1d\xac\xd3\x8e\xe7\xfc\x2f\xf8\x07\x10\x0f\xb6\xeb\xb4\x8a\x47\x93\x1a\x83\x3d\x9e\xb9\x3d\xe7\x7f\x45\xe6\x76\x91\x59\x3e\x72\x6d\xd8\x7b\x63\x12\x94\xfa\xc5\x26\x87\x92\x24\xe3\xfa\x35\x77\xdd\x42\xb7\x35\xf7\x51\x4f\xab\xe4\xb2\x65\x53\xc7\xb4\xc1\xf0\xf2\xf9\xe3\x86\x71\xc9\x0a\xce\xba\x14\x81\x99\xe9\xbd\xf1\x71\xf7\x27\xf9\x26\x32\x1f\x6b\x3f\xcd\xc8\xcb\xc9\x5b\x53\x90\x52\xdb\x25\x52\x6a\x9b\x63\x85\xda\xd2\x4a\x33\x23\xf6\x28\x49\x33\xe3\xe4\x6d\xbd\x13\xb0\xf7\x51\x20\xdf\x83\x90\xbd\xcf\xdf\x8a\xd7\xda\x36\x1d\x0c\xb6\x6b\x2c\x2d\x69\x12\x9e\x13\x1c\x09\x8c\x32\x1a\x8f\x82\x04\x82\xf6\xcd\x06\x03\xc8\xd1\x9d\x50\xc6\xa7\x78\xfd\x28\x61\xac\xe1\x36\x28\xd3\x99\x95\xff\xf1\x1a\xec\x3f\xab\x22\xde\x1f\xba\x71\x56\x90\xfd\x40\x0c\x58\x50\xbe\xf7\x4a\xf9\x30\x0c\xdf\x7a\xbb\x79\x79\x77\x40\xbd\xbe\xc5\xab\xd9\x4e\x27\xd4\x0b\x18\x27\xf1\x90\xd0\xc9\x4a\xa5\x15\x77\x9c\xf8\x41\x62\x56\x9a\x93\xc7\x4a\x3a\x1e\xc4\xbe\x28\x0b\xad\xf5\x59\x6b\xe1\x78\x94\xb1\xd2\xc9\x90\x0e\x2a\x0d\xe3\xdf\xc1\xb0\x42\x93\x98\x0e\x70\x4a\x47\xe9\x36\x3b\x8f\x43\xab\x32\xa4\x49\x14\x8f\xb6\xdd\x71\x96\x8d\x87\x66\xe5\x37\xd9\xdf\x58\xd6\xb0\x9d\xc6\xcf\x81\x59\x69\x1a\xcd\x60\x98\x77\xf3\x7f\xd8\xa0\x3d\xcf\xaa\x40\x8e\x87\x80\x51\x09\x66\xc5\x1d\x0f\x7c\xab\xe2\xcd\x92\x94\xe5\x01\x02\x20\x48\x0a\x1e\x88\xd3\x35\xcd\x06\xeb\x7d\x69\xb8\xec\xdc\xdd\xa6\x83\x38\x1a\x99\x15\x20\x38\xac\xca\x3c\x60\x5c\x39\x1d\xc8\xe4\x6c\x3c\xb1\x6a\xd6\x9b\x34\x33\x22\x8f\x92\x06\x3c\x5d\xf8\x1b\xd4\x9d\xe2\x50\xaf\xa6\x99\x11\x7c\x50\xfd\x80\xc0\x0a\xd7\x6b\x46\x45\xa0\x49\x93\xfb\x9c\xf3\xd8\xa2\x4f\x27\x54\xe7\x65\x85\x95\xaa\xc7\xcf\x98\x0b\x81\xcc\x5d\xe2\xe5\x68\x56\xa6\x79\xc4\xb3\xdb\x53\x47\x68\x94\x4a\x5b\xd8\xb4\x3b\x7e\x38\x1d\x75\xf8\xf1\xde\xaa\x56\x57\x52\xcc\x6a\x03\x47\x44\xf7\xec\x13\x87\xa1\xa1\x96\x9b\x99\x93\x14\x31\xac\xd5\xe2\xf0\x65\x72\x30\xc1\x11\x89\xea\xba\x67\x3f\x3a\x2d\xf6\xc7\xbc\x44\xb8\x4f\x58\x6d\xc0\x59\x30\x1a\xc7\xf2\xc9\x4d\x5f\x97\xfd\xf5\x8d\x9e\x7e\x95\xe2\x17\x08\x38\x69\x46\x4b\xec\xdb\xc7\x2e\xf8\x89\xc3\x11\xe1\xfb\xa1\xce\xe7\xad\x5e\xc7\x03\xc8\xfe\x19\xbf\xc4\xbe\x19\x61\x5e\x84\xc3\xcb\x12\x07\xc8\x72\x35\x4d\x0f\x5b\x5f\x26\xe0\x33\xcb\xd4\x43\x12\x50\xfb\xc6\x75\xf4\xab\x14\xe1\x2f\x94\xbb\x18\xf3\xed\xa9\xa3\x0f\xb0\xa8\x87\x57\x71\xd5\xa5\x4b\x1c\x22\x84\x90\xd5\x07\xad\xc5\x72\xa7\x38\x3c\xc9\x9e\x8d\x63\x8a\x10\x76\x8d\xf1\x08\x18\x7b\x32\x8b\xd9\x02\x7d\x6c\xe2\x81\xa8\x9c\x3b\xec\x4a\x33\x63\x30\xa1\x3a\xc5\x03\x64\x89\xc1\x07\xc7\xd2\xef\x4f\xaa\x69\x0c\x04\x12\x99\x21\xf7\xac\xc5\x8a\x0d\xbd\x35\xbd\xbc\xcd\x20\xc1\xe3\x88\xb2\x49\x1a\xbc\xd5\x21\x1c\x07\xba\xa6\x3a\xb5\x1f\x1d\x7c\x85\x70\x77\x00\x91\x46\xd8\xdc\x1d\x6f\x50\x2a\xff\x49\x95\x55\x57\x4d\xe4\x68\x25\x17\x97\x4a\xac\x22\x72\x0a\x54\xce\x1e\xf6\x74\xa4\xea\x61\x4a\x87\xd7\x0c\x1b\xeb\x08\xfb\x10\xbf\x5b\x64\xd7\x7d\x52\xd5\xb7\x62\xdd\x63\x94\x20\x5a\x2c\xe0\xf1\xb4\x0b\xc1\x11\x65\xb1\xe7\x8f\x10\x86\xc0\x35\x3e\xee\x42\xf1\x97\x32\x38\xfa\x4b\xcb\x73\x75\x1f\xf3\x2a\x5b\x93\xd4\x74\x33\x64\xf9\x6b\x33\x4d\xf2\x13\xab\x02\x9b\x0e\x9c\x70\x06\xe0\x63\x3f\xcd\x8c\x0f\x2b\xb6\xc2\x94\x81\xcc\xd0\x77\x14\xbf\xcc\x69\x66\x1c\xbc\xd5\x29\x6a\xf1\x65\xd6\x29\xc2\xd5\x06\x32\xab\xcd\x25\x6c\xe3\x89\xf7\x97\x2b\xa0\x76\x2f\x70\xd8\x3f\x61\xb9\x98\x66\xc6\xf9\xf5\x66\x9b\x78\xe5\x54\xc9\x92\xa7\x17\x5a\x58\xf0\xe4\xfa\x12\x68\xe9\xd1\xcc\xeb\x32\x5a\x0d\x1c\x84\xb5\x5c\xdd\x43\x26\x1f\xa3\x8b\x3d\xfb\x60\xea\xa0\xe5\x12\x5a\xf9\xd8\xdc\x60\x4c\x0d\xbd\xb1\xfa\x0c\x4a\x2c\xf0\x27\xf6\xcd\x75\xc0\x80\xe0\x9a\xea\x2e\x87\x21\x28\x7c\xf0\x76\xa3\x4d\xcb\x00\x14\x69\xa9\x11\xfb\x9a\xf6\x14\xeb\xec\x01\xf3\xed\x2a\xf5\x85\x7b\x81\xb3\x29\xc7\xfc\x2d\x4b\x65\x5f\x5b\xd5\x46\x3e\x8d\xd3\xc9\xba\x81\x75\x11\xe6\x93\x9f\xd1\x2d\x6a\x4e\x52\xa1\x45\xf9\xb2\xc4\x11\x29\x74\x47\x3e\x3a\xd6\x2e\x21\x51\xcb\x05\x35\x40\x17\x11\xd2\xeb\xb6\x42\xe2\x9a\x81\x28\xef\xb6\x5c\x33\x30\xf7\x08\x38\x17\x2c\x25\xe2\x90\x78\x8b\xc5\xcb\x12\x59\x3e\x39\x8e\x75\x1f\x59\x01\xfb\xcd\x9d\x66\xbd\xa8\xf8\xd4\xf4\xf1\x0a\x36\x35\x03\x2c\xf8\x6a\x33\xe4\xb3\x1d\x7c\xd8\x34\x61\xf9\x30\xfc\x7c\x5f\x0e\xde\xae\x2c\xbe\xe2\xa9\x90\xad\x46\xe1\x9d\x91\xe1\x4b\xbc\xe2\xe9\x18\x9c\x49\x86\x8e\x9c\x5e\xf1\x2c\x66\x18\xbd\xf8\xe0\x03\xd9\x0a\xec\xd3\x29\xc4\xc1\xe3\x0a\xa1\x55\x5f\xd3\x5c\xd8\x7f\x90\xaf\xc0\xac\x3e\xf1\x06\x02\xb1\xfa\x02\xb1\x4e\x19\x56\x04\x3f\x0e\x5c\xbd\x14\xc2\x03\xde\xba\x0e\x6a\x05\x06\xfd\x01\xfe\x0f\xcd\x80\x21\x3c\x8a\x7d\xa4\xf8\x7a\x80\xf5\x1c\x4c\x56\x2d\x59\xf8\xc0\x72\x64\xd5\x40\xd6\x35\x85\x73\x02\x07\x29\xb2\x3c\x56\x91\x2b\xf0\xd5\xec\xcf\xcb\x7e\xd3\x3d\x4d\xf3\x60\x96\xd4\xc9\x96\x7b\x4d\xd3\x5c\x36\xcb\xbc\xbe\xe4\x95\xbe\xec\xc4\x3e\xa9\xb5\x7e\x42\x91\x6d\xdb\x8d\xed\x3f\x9c\x5f\x6b\xad\x1d\xec\x93\x59\x40\xb9\xc7\x4c\xae\x2c\xea\xe1\x4b\x86\x9e\x6c\x47\xf4\x58\x75\x2c\xc9\xb1\x36\xad\x12\x57\xaa\xf6\xb2\xc2\x94\x9d\x68\x51\x5e\xd8\x8a\xc0\x56\x04\xfc\x5c\x51\x50\x18\xfd\xa6\x07\x18\x76\xab\xaa\x61\x9b\x65\xf9\x96\x15\xee\x23\x03\x6a\x87\x9e\xa3\x5f\x45\x08\x5c\x81\xb9\x32\xe1\x2e\x42\x76\xc3\x11\xf8\x53\xa4\xcd\x21\x0d\xfb\xf9\x49\x18\x21\xcb\xb5\xdf\xbb\x0e\x2c\xdf\xd2\x55\x2b\x6b\x38\x96\x27\xf3\x3d\x75\x11\x43\xaf\x1e\x3e\x61\x0f\x46\x9a\x78\x84\x5a\x2e\x5b\x23\x4f\x61\x32\x67\xb1\xea\xa6\x3e\x1f\xbe\x0b\xeb\x30\x04\xf7\x68\x12\x9b\x33\x24\x6d\x79\x9a\x06\xc7\x11\x37\x43\x12\x7c\x84\xb7\x54\x46\x3b\xcb\x74\xf4\xb2\x9c\x31\x16\xca\x18\xf5\x49\xb5\x69\xf1\xe7\xbb\xe8\x35\x46\x63\xd4\x5f\x8a\x3c\xdf\xd4\x2c\xe2\x9b\xb4\xdf\x62\x75\x89\xc8\x09\x87\x3a\x52\xe7\x77\x9e\xa9\x20\x31\x8b\xf5\x87\x8c\x75\x8e\x1a\xc7\xe7\x60\x2d\x7e\x7c\x4e\x6c\x87\xbf\x83\xff\xcc\x58\x17\xca\x75\xad\x2f\x7a\xee\xbb\xc1\xf4\x90\xe8\xf4\xa1\xda\x89\x38\x14\x4c\xfd\x39\x28\x89\x0b\x39\xc0\x39\xc4\x4e\x90\xcf\xa9\xeb\xe8\x48\x57\x7b\xf4\x00\x2b\x4e\x73\xa7\xef\xd4\xf8\x46\xc8\x45\xc4\x50\xe9\x37\x5d\x99\xfd\xf9\x1a\xfb\x87\xbd\x32\x4a\x74\xc1\x99\xa8\x9b\x33\xf3\xf9\x37\xd7\xb1\x06\xe0\xa8\x65\x1e\x2b\x47\x8b\x8f\xcc\x87\x4c\xf7\x91\xba\x20\x8f\x62\x7a\x3c\x37\x37\x38\xdb\x2a\x7c\x43\x74\x26\x45\x9c\x1e\x9b\x26\x32\x4a\x8a\xf0\x86\xf7\x99\x6b\xd7\x04\x22\xd4\xcf\xf3\x33\x5b\x4f\x6e\xc0\xe7\x53\x52\x6d\x2c\x1f\xd7\xa7\x6c\x69\x3d\xae\x2f\xa6\x4c\x5c\xd1\x45\x59\x5b\x6f\xd6\x42\x43\x66\x2e\xeb\xf6\xac\xe5\x5d\xeb\x63\xb5\xa1\xf4\x4d\xb5\x3e\x7f\xe2\xeb\x61\x07\x53\xa7\xb4\x4e\xcf\x90\xfe\x9c\xd9\x69\xa0\x1e\xf7\x74\xc9\x93\x48\x18\x03\xf4\x3f\xc4\x94\x54\x0f\xfa\x8b\xc5\xc7\xbe\xfe\x07\xc2\x8f\xe5\xd7\xa7\x98\x92\x83\xbe\xa6\x55\x4f\xfb\xba\x1f\x22\xab\xda\xee\x2f\x16\xa7\x7d\x7d\x9e\x20\xeb\xb0\xaf\x69\xa7\x7d\xbd\xd6\x34\xfe\x70\x6b\x68\xb1\x38\xe0\xef\x0f\x09\x5a\x2c\x9e\xc5\xb7\x3f\x8c\xdf\xd8\xa7\x36\x7f\x95\xa5\xaa\x32\x9b\x28\xc2\x6a\x86\x78\xec\xd0\x5a\x6b\x9a\x9a\xb5\xe3\xcb\x8b\xf7\x63\x6f\x96\x9e\x8e\x6a\xf8\x80\x27\x27\x4a\xf2\xe5\x2c\x53\x84\x62\x07\x02\x0a\x1e\xb3\xc2\x4c\xa5\x45\xed\x13\x46\xde\xe7\xf0\xc0\x5d\xfe\x74\x4a\x6f\x30\xa3\x25\x05\x2d\x25\xf4\x9c\x50\xd8\x21\xca\xcb\x17\xd2\xb0\x6e\x45\x0d\x0d\x64\xdd\x15\x8f\x0f\xc5\xe3\x63\xf1\xc8\x2d\xf8\x40\x63\x87\x34\xac\x0f\x2b\x1f\xa4\x12\x16\x11\x4b\x2b\x14\x6d\x18\x18\x7e\x14\x59\xf3\x18\x76\x52\x95\x86\x7d\xbc\x51\x3e\x7e\x5a\x1f\xcf\xcd\x6e\x0e\xc8\x57\x32\xf0\x1d\x0f\xaa\xc2\x63\xf8\x61\x17\x2d\xbf\xea\x07\x19\x7e\xcc\x84\x71\x5b\x4c\x89\xdd\xc4\x6f\xf1\xae\x63\xdd\x93\x03\x10\x10\xbd\x39\xa7\x6b\x8e\x97\x38\x0e\xca\xb7\x9a\x7d\xe2\x14\xb3\x4b\xd9\xfe\x5a\x2c\x28\xc3\xc5\x6d\xee\xa7\xbf\x98\x6c\x57\x06\x89\xa1\xb6\x3b\x75\xb8\x43\x48\x86\x7d\x0e\xfb\xc2\x54\xc2\xca\x4c\x20\x24\x9f\x33\xdd\xb7\x53\xdf\x61\x44\x8e\xf4\xfa\x5d\xc9\x04\x25\x19\xa2\x97\x65\xc0\x60\x9f\x7b\x29\x82\x11\x2f\x65\xb4\x14\x72\x9a\xb6\x7c\x42\x8d\x30\x19\x0f\x45\xfb\xa6\x47\xc8\x49\x0a\xd4\x04\x35\xb2\x71\xde\xab\x0d\x8b\xee\x5b\xa5\x45\x66\x40\xce\x51\x67\x15\x4c\x4b\xa6\x4e\x0b\xfe\x9a\xd4\x18\xd0\xa7\x20\xf9\x52\x06\x90\x95\xec\x67\x90\xfd\xac\xc8\xfe\x35\x87\x19\x25\xd7\xb1\xcf\x72\x1d\xfb\x2c\xd7\x84\x46\xc1\x97\x02\x9c\x94\x5c\x6d\xc8\xd5\xce\x73\x7d\x2d\x20\x8d\xda\xa7\x2e\xf7\x6e\xfa\x98\xa7\x9c\x89\x14\x15\xee\xa8\x7d\x35\x75\x72\xd8\xa3\xf6\x60\xaa\xe4\xc9\x41\x90\xda\x7d\x96\xfe\x46\xf7\x08\x79\x4e\x5b\x90\xcd\xcc\x73\x09\xc0\xa4\xf6\xd7\xa9\x93\xc3\x26\xb5\x93\xa9\xb3\x0a\x9e\xd4\xf6\x12\x27\x87\x50\x6a\x5f\xe7\x59\x6e\x76\xc9\xbc\xdf\x82\x14\x93\x57\xf4\x29\xcf\x75\x9c\xe7\xba\xa2\x84\x5a\x74\x0d\xfd\x09\xf8\xe5\x38\x4e\x31\x12\x3a\x2c\x8b\xee\x1e\x62\xda\xa2\xc6\x15\x0c\x99\x10\xd7\xa4\x20\x0e\x88\xd2\x16\xe3\x20\xcc\x6a\x55\x97\x1f\xb5\xc3\x98\xda\xae\xa3\x1c\x57\x47\x99\x42\x2b\x40\xb5\x0d\xc6\x38\xea\x0c\x75\xcd\xfb\x8c\x25\xf8\xca\x38\x96\xfb\x9f\x61\xf9\x83\xcc\x08\xec\xa7\xa9\x23\xb1\x50\x3e\x26\x96\xd8\x52\x9e\x75\x24\x02\xe3\x4b\xd5\x5c\xae\x79\x04\xc7\xc3\x9b\xfb\x9f\x9c\x0d\xd0\x42\xa0\xb6\xc0\xa5\x87\xa2\x36\xee\xe3\x36\x98\x3a\x48\x9c\x07\xb9\xdf\x0a\x6a\xf0\xa1\x71\x8b\x87\x6a\x93\x61\x76\xc4\xb6\x9c\x0e\x03\x5b\x2c\x9a\xcd\xdd\x7d\x02\xcb\xae\x69\xcd\xdd\xbd\x77\xfc\x19\x69\x1a\xa8\x79\x6f\x37\x25\x3f\xe7\xa2\x17\x30\xb7\x9e\xa7\xaf\x0a\x57\xaf\xc0\x72\x7f\xe5\xdc\x64\xfd\x3c\xce\x48\xcd\x1b\x8c\xd3\x59\x12\xfc\x18\xc0\x1d\x2e\xa8\x51\xd4\xea\x7a\xb3\xfd\xfb\xaf\x5d\xfb\xc4\x73\x74\xc4\x60\x33\x5f\x95\xb6\xb2\x2a\x55\xbd\x4a\x17\x8b\x2a\xb5\x8f\x33\x87\x9b\x68\x1f\xc5\x94\x31\x1d\x32\xf3\x71\x4c\xd7\x0c\xec\xee\xc6\xd2\xa8\xf3\xb2\xa3\xe0\x76\x46\x31\xba\x96\x44\x65\x9e\x58\xa8\x6e\x9b\x54\xab\x02\x17\x74\x28\x09\x44\x24\xb8\xe0\x89\xd4\xeb\x47\xb1\xa8\x27\x68\xf3\xd9\x7e\xdf\x61\xb8\x28\x6f\xfc\x3d\x3f\x86\xd9\xe7\x6a\xc3\xa2\xac\x61\x8e\x7a\xf3\x86\x01\x37\xca\xc7\x0e\xc7\xcc\xca\x79\xfd\xa1\xb8\xd9\xe1\xf4\x2c\x27\x07\xbb\xe4\x65\x29\xae\x5c\xce\x49\x63\x79\x4f\x3e\x08\x01\x3e\xf5\xd7\x25\x74\x6c\xd8\x32\x1a\x62\x9f\x4d\xa6\x74\x31\x74\xd8\x65\xdc\x16\x65\x24\xa3\x92\x50\x38\x8f\x3c\xaf\xd7\x39\x28\x45\xe4\x04\xb6\x14\xd4\x65\x6d\x37\xf7\xa3\x96\xce\x98\xf1\xc8\xc1\xde\x62\xa1\xbb\x7c\xd8\x08\x99\x3a\x8f\xf7\xc7\xe6\xdc\xc5\xb2\xd7\x38\xc4\xd5\x2a\x2b\x89\x21\xa3\x87\x29\x0f\x6f\xae\x46\x91\x9a\xad\x1e\x2c\xc2\x97\x51\xde\x65\xf0\x29\x40\xb9\xef\x13\xe8\xa9\xe2\xb2\x5c\x71\x75\x77\xd8\xb5\xa9\x63\xb9\xac\xbf\x81\xa8\x24\x77\x88\xb8\xef\xb6\xf4\xf7\x99\x1e\xb0\x2d\x8e\x3f\xc7\xf6\x20\x80\x1d\xc3\xf2\x35\x11\x6e\x70\xbf\xb7\xec\x64\x08\x06\x41\x16\x54\x8a\xfa\xe4\x74\x6c\x6f\xe7\x62\x14\xd5\x7b\xe6\x69\x89\x1a\xcf\x7d\x24\xe9\xdc\x85\xdd\x7a\x57\x7d\x12\xf4\x74\x96\x6e\x7b\x0e\x3b\x05\x19\x9f\xfa\x3e\x63\x7c\x5a\x83\x10\x91\x5e\xea\x89\xcc\x4b\x79\x1f\x14\xb6\xf5\x7e\x55\xf0\x46\x41\xe8\x20\xe6\x2c\xa7\xb0\x79\xa0\x7c\x75\xf2\x20\x12\x35\x18\x83\x52\xd5\xee\x53\x8e\xd9\x93\x6e\x73\x72\x6f\xfb\xf5\xba\x8b\xdf\xb3\x83\x38\x70\x90\xb5\x32\x43\x9e\x63\xe5\x33\xb4\x2c\xd6\xf4\xde\x08\x6e\x5f\x0f\x6c\xcc\x66\x96\xf7\x93\xfb\x81\xe1\x57\x78\x85\xb3\xd0\xdc\x69\x4f\xbd\x1e\xa8\x4e\x7b\xac\x90\xed\x48\xe2\x6a\x9a\x70\x3e\x53\x72\x40\x78\x77\xb6\xc9\x23\xd6\x5a\x8b\x02\x64\xb6\x9b\x8c\x08\xd2\x03\x09\xde\x9e\x22\x14\xd8\x6e\xee\x07\x2d\x6a\xe7\x82\xaf\x37\xf7\x46\x7b\xf3\x70\xbc\x98\xb1\xc9\x3e\xf1\x5a\xa2\x7a\xf3\x12\x07\x2c\xb5\x88\xcf\x7d\x2f\x1c\x9d\x1c\x76\x37\xba\xf8\xe4\x9e\x9e\x29\x1f\x6d\x84\x38\xf4\xb0\x75\x8c\x1c\xfb\xc4\xa9\x12\x7f\xb1\x08\xf8\xab\xd1\x6d\x33\x0e\x7d\xc3\xc5\x96\x4a\xe5\x2b\xc3\x79\x29\xcf\x28\x5d\x99\x51\x36\x40\x80\xd6\xd0\x08\xda\x9a\x16\x32\x0c\xc5\xe6\x96\x4f\x72\xb5\xea\xb1\xc7\x0e\x2d\xa2\x63\x54\x82\x65\xee\x60\x14\x66\xf1\xa3\x8a\xbe\x87\xeb\x68\x1b\x9f\x65\xe4\x65\x89\xdb\x65\xac\x7c\x9e\x95\x9c\xf8\x49\x07\x56\x2b\x11\xb2\x5c\x29\x37\xe2\xd9\xed\xd0\x11\x25\xd4\xbb\xb0\xa5\x47\x2e\x32\xbd\x70\x12\x04\xa7\x43\x8b\x1a\x43\x5d\xd6\x6f\xbe\xcf\xcf\x80\x6a\x13\x52\x14\x0c\x1d\x97\x0c\x7e\xb9\x9c\x79\x83\x77\x2c\x38\x7b\x41\x33\xa1\x26\x71\x62\xb5\x1a\xe0\x3e\xf9\xc4\x9a\xb3\x18\xd3\x4e\xed\x8f\x99\x43\xfa\x80\x01\x01\x6f\x43\x04\x0a\x86\x92\xf5\xa2\x7e\x00\x73\xe3\xb2\x53\xf8\x6b\xf5\xc9\x87\x98\xea\xc8\x62\xa9\xc4\xb7\x7c\x81\xe8\x7d\xb6\x14\x9e\x45\xed\x5b\xa0\x1c\x6f\xa7\x8e\xee\x72\xf0\xc2\x3e\x8e\x90\x49\x0d\x9a\x65\x54\x98\x7c\xe8\x27\x0c\xe3\xf2\xcf\x88\xe1\xbc\x76\x4c\x8b\x60\xf4\xaa\x9b\x67\x68\x4b\xdc\x2e\x9e\xc6\x14\xbb\xe4\x31\xa6\xad\x1c\x28\xd5\xe0\x22\xe7\x8e\xee\x02\xfe\x76\x8d\xbb\x31\xf6\xd0\xd2\x54\xb3\x79\x64\x3d\x47\x39\x52\xbf\xb7\xdc\x14\x0d\xff\xef\x2d\xfc\xe5\x3f\x58\xf8\x83\xa3\x8d\x2b\xdf\x58\x59\xf9\xcf\x9b\x7b\xf2\x4a\x47\x3e\xaf\x76\x44\xb0\x18\xd0\x03\x2c\x9b\x9e\xbb\x45\xd3\x14\x44\xca\x00\x1e\xdc\xad\x04\x35\xee\xce\xe0\x33\x3f\x0d\x91\xa6\x5d\x31\xac\xaf\x2c\xce\x55\x26\xc4\x70\xe0\xd3\x80\x91\x35\x8c\x79\x0a\xda\xe5\xf3\x83\xd5\x94\x26\xe0\xf6\xad\x9d\x29\xc1\x4b\x4e\x33\xdd\x35\xbe\x0e\x0a\xa7\x84\x8c\xd0\x85\xe0\xc8\x97\x1d\xcb\x15\x97\x0c\x25\x53\x8f\xd6\xc6\x54\x9d\x0d\x80\x1a\xdd\x36\x32\x5d\xb8\x87\x13\x40\xa6\x69\xa5\x57\x80\x39\x4f\x42\xdb\xf6\xb6\xa5\x7b\x6c\xb4\x2e\x42\x2d\xfd\x34\x83\x68\x54\xec\x40\xf3\x8c\xe1\xb9\xa6\xe9\x5e\x4e\xe7\x60\x17\xf6\x09\x17\xd2\x9a\x40\x21\x49\x2c\xd6\x50\xac\xd5\xe4\x54\x54\x73\x47\x19\x0d\x31\xe2\xc2\xdb\x03\x35\xbe\x0e\x5a\xec\x8f\x31\xf4\xa4\x88\xcb\x6c\x58\x62\xd6\xad\x95\xd2\x1b\x8e\x43\x38\x9d\x15\xb7\x07\xe2\xf0\x3d\x74\x9d\x22\x9c\xb4\xc4\x98\x57\xe2\xf4\xd3\xb4\x7a\xdd\x2d\x20\xbb\x58\xbd\x8f\x5c\xb6\xb5\xde\xc9\xf6\xad\xfe\x81\x33\xe6\xb2\x67\x62\xbc\x55\x0a\x4a\x01\xf2\xb3\x62\x21\x59\x12\x52\x02\xd9\x73\x96\xb5\xce\x32\x9b\x3a\x26\xfc\x25\xfd\x6e\x9d\x2a\x56\x8e\x31\x5d\xf5\x33\xd0\xe4\x17\x6d\x1c\xfe\xe2\x10\xe0\xef\xb0\x6b\x0b\x24\xe1\x20\xae\x47\xe1\x8a\xb1\x32\xe4\x4c\x39\xb4\xd3\xc2\xd1\x80\x2b\x5d\xa7\xc2\x69\xe0\x69\x9a\x38\x26\xf4\x40\x23\xd5\x66\x95\x90\xf3\x98\xea\x21\xf8\xb5\x10\x5d\xed\x51\x5d\xdd\x63\xe7\x31\x2d\x3b\xa8\xb8\x1b\x03\x40\x76\xa8\x90\x0a\x58\xd4\x78\xdf\x81\x8d\x50\x08\xa3\x3c\x86\x57\x7c\x5c\xda\x19\xa7\x31\x55\x5c\x22\x15\x3b\x02\x60\xa2\xfa\x18\xd3\x9c\xfc\x5a\x2c\x82\x58\x1f\xc4\x70\x22\x33\x4c\x7c\xc0\x40\x11\xb8\x22\x0c\xe2\x03\xe1\x9c\xca\xe3\x2c\xaf\xe4\xaa\x3d\x95\x13\x42\xe8\x25\x33\xc5\x14\xf0\x88\x38\x0c\x8e\x81\xf3\x61\xcc\xd1\x87\x89\xee\x31\xde\x67\x45\x12\x11\xa1\x97\x90\xf1\x6a\x71\xa8\x87\xb2\x62\xb2\x52\xb1\x57\x66\xb8\x1a\x3c\x28\x0a\xf7\x3a\xe8\xdb\x37\x53\xc7\x0a\xad\x90\x84\x70\x0d\xe5\x09\xdf\x7a\x05\x42\x82\xfd\xdc\x87\xd8\xb7\xdb\x4d\xab\xea\x1b\xcf\xcf\x9a\xd6\xd8\x27\x7d\xab\xbf\xbd\x8d\x3a\x13\xdd\xc7\x9e\xdd\x77\x10\x0e\x34\xc2\x20\x82\xbd\x30\xe2\xbb\xc1\xf6\x28\xab\xa6\x4f\x1a\xb2\x58\x9f\x13\x57\xfd\x7a\xfd\x27\x05\x9b\xb8\xf0\xef\x2c\xcf\x7d\xb1\xa6\x62\x6a\x5d\xe1\xa3\x5e\x31\x80\xcd\x04\x1d\xca\x76\xb9\xa5\x40\x70\x9a\x31\xa6\x76\x1c\x56\x3e\x64\x22\x6a\x2b\x57\x9b\xba\xc9\x48\xed\xc7\x0f\x49\x42\x70\x0d\xdd\x1f\xe1\x88\x53\x12\x7f\x48\x4a\xe2\xdd\xbb\x77\x2a\x0b\x78\x21\xd1\x43\xa2\x7a\x7f\xa1\x16\xb5\x6f\x32\x07\xce\xe2\x9b\xcc\x21\xaa\x74\x3f\x3f\xd6\x46\xfc\xd2\xa6\x90\x7d\xb2\xac\x0a\xf1\xd4\xc9\xa4\xb8\xf5\xeb\x40\x9e\xe5\x0a\xdf\xfe\x25\xe5\xe4\x24\x7f\xdb\x3a\xe2\x1c\xdb\x57\xbd\x93\xe1\x59\x86\xac\x0e\x63\xc4\x18\x33\xca\x60\xed\x9e\x74\x04\x5f\x76\x7a\xb0\xee\x87\x6c\xeb\x88\xbb\x77\x5e\x35\xc0\xdb\x40\xc1\x9e\x67\xaa\x9f\x1d\x1f\xfc\xae\x6d\xc0\xdc\x1b\x4a\x7e\x5e\x2b\xf9\x66\x36\x59\xf1\xe6\x07\x88\x51\xfa\x28\xda\x3a\x2a\x28\x71\x08\xef\xec\x59\x1e\xf1\x8c\xad\x23\x24\xa3\x22\x2b\x44\xfc\x97\x94\xb2\xfd\x0c\x41\x26\x40\xce\xc0\x03\xb7\x50\x98\x37\x10\xc3\x7b\x8a\xb4\x41\x05\x82\xc7\x0c\x81\x1d\xad\x10\x11\x8a\x6c\x32\x1a\x9f\x95\xd7\x00\x11\xcb\x7a\x7d\x08\x2e\x24\xc2\x17\x55\x1b\x3c\x7e\x8c\x8b\x0a\xfa\xd9\x15\x7b\x82\xca\x3d\x11\x59\xd1\xf6\x36\x0a\x09\x37\x57\xb6\x23\x06\xdc\xe4\x36\x63\xd8\x8a\x6d\x08\x8a\x34\x2d\xb0\x58\x6e\x70\xfb\xdc\x11\x31\x4c\xd7\xb2\x60\x91\xa5\xf8\xd0\xe4\x1f\x10\x2a\xba\xc0\xc8\x77\xd1\x72\xc4\x71\x68\x54\xaf\xbf\xd6\xb6\x28\x5f\xc4\xbc\x40\xab\x62\x91\x4e\x66\x04\xc6\xe1\x8a\xb8\xe8\xeb\x40\x84\xc0\x2e\x1d\x76\x65\x20\x64\x3c\xca\x70\x03\x0c\xa8\x62\x98\xaf\x03\x20\x48\xf3\x48\x3f\xd8\x65\x5d\x92\x30\x75\x70\xf4\x0f\x8a\x37\xf2\xe2\x73\xf7\x4f\x8b\xdb\x57\xae\x53\x2a\xce\xcb\x16\x46\xe3\x0a\xeb\xc2\x8e\xac\xaf\x03\x76\x6a\x89\x02\x2e\x12\xee\x87\x95\x18\x90\xf2\x08\x53\xa2\xbf\x32\x00\x29\xa8\xb7\x7a\x3d\x94\x37\x9a\xae\x74\x53\xa4\x69\xd5\x08\x4e\xb2\x88\x9f\x6c\x45\xcc\x89\xbb\x31\x1e\x90\x08\x0e\xa8\x08\x0e\xa8\x08\x0e\x28\xc6\xe3\x33\xda\x2a\x02\x21\x34\x3b\xfa\xfa\x6c\x81\x06\xd8\x67\x8b\xb9\xcc\x91\xa4\xa6\xb1\x8f\xbe\xf1\xe4\xd3\xe5\x06\xfe\x77\x65\x2a\x83\x5b\x75\x2a\x10\x2c\xe0\x46\x0e\x76\xa5\xdc\xdd\xd9\x86\x29\xdc\xc0\x9f\xae\x14\x6b\xdf\xea\xc0\xab\x2a\x71\x9e\x84\x5b\x76\x57\x5d\x82\x3b\x21\xcf\xe8\x64\x2b\x30\x78\x3a\x27\x74\xb1\x10\xb7\x08\xdd\x63\x76\xd6\xba\x31\x7f\x7b\xdc\x23\x5f\x38\x8b\x3b\xdd\xc3\x4a\x91\xa4\x4d\xe6\xb1\x8e\x96\x5f\xf5\xbb\x0c\x77\x32\x64\xdd\x93\x3b\x81\x12\x85\xcd\x34\x3b\x61\xef\x8d\xd0\x97\xfa\xa6\xd3\xbd\x0d\xb7\x91\xf6\x87\xa9\x23\xb9\x16\x56\xdf\xb6\xa8\xdc\x6a\xec\x33\x12\x6a\xdf\xf8\xf7\xaf\xa2\x87\x5c\xa0\x1a\x0a\x51\x46\xf7\xd8\x7e\x9c\x8a\xb0\xed\x8f\xbc\x63\xc6\xe9\x7c\x9b\xca\xa8\x29\xa1\x2f\x95\x95\xbb\xc7\xb6\x27\x73\x86\xbe\x70\x85\x29\x7a\xc5\xdf\xec\x70\xea\xe8\x77\xa9\x78\xf9\x30\xcd\xdd\x32\xff\xbc\x31\x51\x95\x98\x08\x84\x96\x4b\xeb\x6c\xc5\x53\x28\x97\x20\xca\xe9\x10\xf7\x3e\xa1\x2f\xef\x81\xff\x56\xfd\xe0\xce\x74\xf2\xb3\xfa\x9b\xd6\xdf\x19\xfa\x3a\x7a\xba\xdb\x80\x9e\xec\x7b\x90\x2b\xab\x72\xa1\xee\xb1\x02\x52\xf7\x99\x5e\x8a\xb8\x48\x11\xf2\x80\x3d\xfa\x02\x78\x57\x39\x23\x8a\x1b\x64\x76\x50\x13\x72\x11\x21\xc8\xc5\xde\x18\x67\xb3\xd9\x77\xf4\x40\x1c\x80\xb9\x0b\xdd\xc2\x23\xee\x6e\xf3\xed\xbf\xde\xfe\x7b\xef\xf7\xb7\xff\xda\x77\x5b\xdb\x4d\xd3\x8d\x61\x16\x29\x76\x17\x8b\x86\x42\xb7\x7c\x01\x8a\xc2\x8d\x61\x2e\xa8\xba\x1f\xbe\xc2\xfd\xfe\x57\xb8\xa0\xf5\x22\x71\x79\xc6\x5f\xfb\xfe\x9a\xce\xae\x25\x85\xa9\x5e\xc4\x58\x38\x9d\x92\x97\x25\xbe\x10\xaa\xf2\xa0\x66\x64\x37\x18\x71\x00\xbe\xe6\x48\xb5\xc1\x68\x6f\x99\x9f\x94\x3c\xd8\xb2\xea\xbe\x65\x45\x3f\x3e\x01\xeb\xbe\xfc\xaa\x7f\x8a\x29\xfe\x9a\x29\xd4\xd0\xa5\xca\x2e\xe8\x94\x5c\xc0\x3b\x6a\x01\x91\xe6\x65\xf1\x3c\xf8\xc2\xa3\xbd\xcb\xa0\xfb\x5f\x2e\xce\x4f\xb2\x6c\x22\x4c\x85\x8a\x49\xb8\xc8\x59\x98\x2a\x35\x7a\x11\x2d\x05\x9a\xcf\xc3\xe8\x97\x4b\xaf\x04\xa3\x17\x79\x4a\xcd\xaa\x17\xfe\xf6\x97\x88\xe2\xfb\x88\xe2\xbb\x88\xe2\xaf\x11\x04\x26\x29\x85\xb5\x11\x17\xff\x2e\x88\x15\x93\x27\xd5\x71\x6f\x79\x2c\x3e\xc2\xd0\x49\xe2\x0b\x0a\x3c\x40\x2f\xcb\xa5\x12\xc6\x70\x36\xf0\x79\x30\x6d\xf0\x33\x51\x2e\x6d\xc8\xd7\xca\x30\x8e\xba\x60\x80\xea\xc7\x29\x6c\x11\x70\xab\x0c\x56\xbb\xe2\x9b\x30\x50\x05\xea\x65\x30\x08\xfc\x22\x64\x7e\x05\x3a\xb0\xfc\xc6\x8d\x1b\x3e\xc5\xb4\x58\x93\x2d\x80\xa7\x35\x1c\xca\x83\xd3\xa5\x90\x7f\xd0\x17\x5b\xb1\xc3\xf0\x6a\x71\x0f\xf1\x6d\x96\xef\x52\xaf\x23\xa2\x54\xf8\xca\x3d\xc5\xdd\x13\x4f\x0c\x77\xc9\xa5\xf0\x52\x29\x52\xae\x9a\xfc\xf7\xf2\x86\xff\x06\xc5\xad\x6f\xd0\x91\x37\xca\xbe\x7a\xe7\xf1\xe4\x51\x59\x89\xb7\xcb\x0b\xf9\x14\x94\x09\xbe\xea\x5b\x1c\x65\xb3\xf5\xf8\x0c\xb6\x0d\x60\xde\xd6\xda\xda\x89\xf1\x55\x4c\x89\x7d\x93\xe0\xda\xe7\xdb\x4e\xcd\xc1\xd7\xec\xd5\xb1\xee\xc9\x96\x40\xee\x93\x31\x5d\xd3\x5e\xf8\xa6\x23\x2b\xe8\xe9\xd7\x31\x77\xcb\xc8\x8e\xbb\xa7\xc9\x46\xb1\xbf\xd4\x41\x39\xf1\x0b\x41\x9c\x1d\x8d\xc7\x91\x31\x0a\x32\xe3\x4b\x37\x39\x1d\x3b\x15\xbe\x8e\xe0\x8b\x1e\x56\x52\x44\xeb\x1f\x8d\xc1\x15\x84\x30\x79\x23\xb5\xba\x98\xaa\x7a\xcd\x62\x30\x74\x9b\xc4\x04\x62\x02\xba\xc4\x6d\xb9\x76\x3f\x70\x74\x64\x5e\x45\xe2\x62\x25\xdc\x95\x57\x2c\x77\x4f\x72\x5a\x94\x39\x64\x0b\x23\x26\xf1\x44\x20\xe5\xb0\xd3\xba\x94\x76\x30\x61\x07\x99\xec\xe5\x9b\xbc\x4f\x96\xab\x17\x76\xc4\xb1\xd4\x31\xfa\xbe\x8e\xcc\x6f\x19\xfc\x5a\x57\x13\x39\x4e\x2c\x4e\xcf\x13\x4f\x4c\x0e\x02\xd8\x97\x8b\x2a\xf5\x80\x4e\x7c\xfb\x82\xb1\x2f\xb8\x38\xfe\x19\x06\xc9\xb3\x35\x8b\x9d\x00\x69\xb7\xa9\xfe\x5b\x21\x35\x5b\x52\xe2\x2d\x16\x97\x6a\x74\x14\x01\x8e\xf6\x21\x5c\x18\xf8\x9a\x36\xed\xaf\x85\xe9\x0d\x8d\x34\x60\x9c\x1e\xb8\xe8\xf6\xc9\x97\x58\x0f\x8d\x8b\xbe\x8e\xf0\x4d\x4c\x21\x2a\x44\x6c\xbc\x1f\x27\xc3\x63\x9a\x51\x1e\xdc\x26\x27\xf2\x95\x2f\x56\x75\x2b\xd6\xaf\x62\x56\xe1\x62\xf1\xc6\x5f\x2c\xbc\xc5\x82\x57\xfc\x29\xa2\xb8\xdf\xa5\xc8\x0a\xed\x3b\xd7\xd1\xcb\x6d\x8b\x51\xb3\x8c\x02\xdd\x9c\x40\x8f\x79\x77\x54\x4a\xe3\xc9\xa3\xf2\x40\x3b\xf1\x0d\xa9\xfa\xdb\x79\x9a\x88\x9b\xa1\x27\x8f\x22\x6b\x18\x17\x57\x48\x27\xbe\x92\x7f\xc5\x1c\x2b\xdf\x08\x7c\x19\x3a\x12\x7d\xe3\xc6\xbe\xd8\x4c\x9a\xa6\xeb\x72\xd7\xdc\x4a\x00\x38\xf1\x11\x6a\xe5\x75\x0a\x13\x34\xb1\x13\x3b\x72\x05\x8d\xf1\x48\x7e\x11\x8b\x3e\x08\xc5\x9a\x9b\x72\x7f\xde\x67\xa5\x2f\xb2\x34\x12\x4b\x7d\x79\xa3\x42\x44\x0c\x07\x56\xf1\xa5\x59\x08\x24\x0a\x20\x88\xca\x7e\x34\x6f\x4b\x02\x26\xa1\x71\xf3\x07\xd2\xb4\x69\xac\x53\xd9\x73\xa4\x69\x8c\x5e\x2c\x3a\xac\x1c\x97\x37\xa5\x0a\x06\x5d\x4a\x08\xe5\x6e\x7a\x97\x6f\xee\x8d\x41\xa8\xee\xfe\x4d\xe7\x03\x8d\x05\x3f\x53\x2c\xc3\xdd\x13\xf1\xba\xb4\x2e\x06\x5c\xbf\xe8\xd2\x82\xee\xea\xc6\x62\x84\xf6\x97\xa9\xa3\xff\x9b\x7b\x26\xbf\x5d\x0d\xce\xb5\x8a\x3d\x8b\xba\xe3\x27\x75\xc6\x58\x1d\x62\xc2\xd8\x07\xa9\x4e\x73\xf7\x44\x5c\xeb\x4e\xae\xb5\x45\x67\xba\xc0\x53\x05\x69\x2c\xcc\xaa\x8c\x60\x17\x14\xed\x18\x6e\x60\x27\x39\x74\x31\x45\xe2\x69\x92\x22\xb4\xfc\xba\x89\x08\x3b\x11\x3a\x0b\xc6\xb7\x99\xec\x19\x74\x17\xff\x85\x4e\x2a\x93\x91\x2a\x14\x69\xdc\xa5\x08\xcb\xae\x6e\x20\xd7\x56\x26\xe2\x1f\x34\x9c\x57\xcf\x70\x0d\xb2\xb6\xca\xf4\x1f\x30\x2d\x27\xde\x3a\xba\x2f\x14\x19\xaf\x9a\x8b\x85\x80\x4e\xf1\x10\x3f\xb5\xee\xe5\x3c\x73\xa0\xbf\x4f\xa9\xce\x57\xf5\xbe\xac\x43\x90\xe7\x53\xc9\xc9\x9c\x4c\xa1\x30\xa0\xd7\x00\x8c\x51\x31\x5e\x07\xe2\xf2\xbf\xad\x12\x77\x06\x42\xf5\xdd\x2a\xf1\xd8\x13\xe2\x46\x63\x97\x37\x9a\xf6\x96\xf0\x8f\x88\xd1\xa9\x80\x83\x1b\x39\xad\x09\xca\x13\x6c\xa2\x6f\xd9\x44\xe7\x39\x5f\xa8\x04\xb4\xe4\x89\x75\xe4\x0b\x27\xb9\x56\x41\xc1\x8b\xa9\x22\xd9\x70\x21\xb7\x4b\x76\xf7\xa1\x92\x16\x05\xd4\x06\xc6\x99\x9d\xe0\x31\x33\x2f\x0b\xf5\x78\x97\x5c\x2e\x29\x40\x64\x3d\x89\x68\x1d\x7a\x5c\xef\x47\x16\x87\xc0\xe5\x32\x8c\x47\x74\x30\x78\x7a\xa1\x33\x78\x55\x44\xa5\x2c\x25\x97\x94\x9e\xf8\x08\xb0\x57\x71\x27\xc0\x0e\x1b\x08\xcb\xd0\xb1\x1b\x4e\x2b\x8c\x4d\xa1\x7b\x20\x29\x0c\xf6\x85\x3f\xb9\x8b\x05\x1f\xc4\x79\xca\xd1\xe0\xd5\x44\x07\x56\x53\xa1\xb6\x14\xbf\x70\x72\x6b\x30\x58\xa3\x86\xb7\xcb\x48\xdd\x32\xba\xe3\xea\x68\x80\x61\xfc\x0e\x23\x85\x19\xcd\xcd\x1e\x31\x95\x44\x09\x5a\xde\x1b\xd7\xfd\x75\x1d\x92\x6a\x55\x40\xa7\x02\x05\x7c\xca\x85\x65\x00\x4c\x10\xf6\xac\xcc\x5c\x09\x0a\xbd\xdb\x68\x98\xe2\xa1\x29\x1f\x76\xe5\xc3\x5b\xf9\xf0\x3b\x7f\xd8\x93\x29\xcd\xdd\xdd\x3d\xd3\x53\xd4\xcd\x94\x68\xc9\xd5\xe6\x92\xdf\x73\x41\x58\x1d\xd2\x20\x84\xb8\x88\x92\x74\x98\x33\xe5\x46\xb8\x8b\x10\x80\x1d\x5c\x78\x54\xa9\xa6\xa5\xc1\x20\xb4\x1f\x21\x80\x27\x25\xf2\xc5\x7e\xcf\x98\x1a\x42\xed\xae\xe7\xe8\x0c\x8f\x7c\x74\xb6\x9b\x08\x61\x97\x54\x3f\xc7\x14\x22\xaf\xd3\x96\x40\xab\xe6\x25\x9c\xb5\x9b\x42\xb7\x02\x30\x15\x86\x8a\x27\x3e\x00\x96\xdd\x99\x3a\xa6\x72\xa3\x02\x33\xf4\xa2\x50\xd4\x1b\xa0\xd0\xdc\x6e\x16\x1a\x3d\xf9\x3d\xaf\xe2\x47\xaf\x84\xf5\xc7\x6c\x25\xef\x9e\x58\x0d\x77\x4f\x66\x3e\xf8\xbb\x27\x75\xaf\xfa\x33\xe5\x06\xc0\x5a\x15\x03\xfa\x33\xa1\x54\x3c\xe2\x17\xe6\x2d\xd7\xa4\xc6\xf1\x08\x07\x02\xe3\x50\xe3\xd3\x00\x61\x06\xb6\xf1\x33\x0e\x05\x96\x13\xb8\xe9\x99\x78\x38\xca\xf3\x7d\x9c\x23\xdc\xcd\xdf\xce\x05\x5f\x6c\x47\xec\x70\xb4\xbf\x4d\xe1\x62\x34\xce\xbf\x0f\x7b\x9c\xe4\xe1\x75\x77\x57\xeb\xee\x3e\x13\x4f\xe5\x49\x75\x4f\x5d\x5e\x84\x64\x60\x8b\xe3\x11\xa9\x56\x5d\x4b\xf6\xd6\x83\x35\xbf\x04\x65\x7f\xce\xc5\x78\x10\x5b\xfc\xd2\x92\xd5\x5b\xb2\xeb\xbd\x99\xee\x23\x2b\xca\x0b\xee\xe5\x05\xbb\x79\xda\x5b\xa1\xff\x06\x83\xf0\xec\xdf\xf2\x2c\x71\x9e\xe5\xf7\x3c\xcd\x23\x9e\xfd\xaf\x0d\x6d\x75\xa1\x2d\x2f\x8f\xfb\x93\xf7\x5a\x68\xb5\xf4\x80\x15\xe9\xcf\xb8\x3a\xb5\x38\x05\x8e\x47\x68\x79\x4f\xfc\x19\x27\xe6\x3f\x0d\xc8\xa5\x75\xcf\x7a\xcd\x7e\x3e\xce\xe1\xe7\x7c\x2e\x25\x36\x5b\x7d\x72\xc9\x0e\x81\x2e\xff\x7e\x34\xa7\x5c\xa6\xc3\x9a\x69\x5a\x07\x2b\xc2\x0e\x2e\xc4\xb1\x1d\x2c\x83\x8f\x0c\x2c\x57\xd3\x40\x25\x68\x30\xd3\x5d\xfc\x8d\x9d\xf4\x01\xbf\x28\x17\x59\x3e\xce\xd1\x0b\x64\x38\x8e\xca\x01\xd7\xe2\x67\xcb\x2b\xca\x7a\xbc\xec\x7b\x08\x31\x00\x16\x0a\x54\xcf\x05\x87\x88\x51\xfc\x50\xe8\x7c\x2e\xdc\x6f\xcb\x66\x83\x10\x17\xd9\x96\x79\xb3\x02\x68\x44\x0f\x34\xcd\xb5\x8f\x5c\x47\x6f\xa0\x2a\xe9\x25\xa2\x64\x2f\x41\xb8\xe8\xb9\xcc\x40\x48\x2f\x69\x6d\xc5\xd4\xa4\x3d\x8a\x90\x25\x47\x31\xec\x89\xfb\x79\x51\x78\x14\x62\xb7\xf8\xda\x7d\x96\xe9\x0f\x01\xe6\xd5\xf5\x0a\x5f\xff\x15\x2a\x22\x25\xf0\x68\x35\x49\x90\x8e\x07\xf3\xe0\x95\x68\x93\x1c\xb2\xb1\x47\xaa\x55\xb6\x7d\x2c\xaf\x15\xb0\xfa\x60\x2b\x99\x3c\x35\x7e\x2e\x5b\xcc\xb3\x84\x70\xa6\xbb\xc8\x72\xd9\x32\xfb\x52\x81\x96\xe5\xfd\x38\xb7\xbc\x56\xc4\x6b\xf8\x38\x47\x45\xb8\x78\x36\x93\x3e\x11\x9b\x8b\xd7\xd7\xe5\xd9\xce\xe7\xc5\xe1\xc9\x2b\xd9\xea\x03\xb6\xf4\x95\x39\x44\x92\xcb\x63\x93\xcb\xd1\xfb\x56\x1f\xf9\xa4\x97\xd4\x7d\xf5\x32\xc0\xe5\x0d\xd8\xf7\x3e\x4c\xb8\xb5\xdd\xac\x42\xc4\x11\x3f\xff\xc2\xb1\x67\x50\x6f\xa2\xba\x8f\x96\x01\xf1\x45\x0c\xe2\x30\x81\x18\xc4\xb7\x01\xf2\xc9\x65\xde\xa1\xf7\xb1\x1e\xe0\x43\x10\xce\xc0\xe3\x51\x44\x91\xaa\x03\xf5\xc4\x12\xd9\xca\x06\x24\xb0\x13\x8f\xaf\x32\x84\x54\xe6\x6a\x3a\x10\xbc\x5d\x0a\x8c\x03\x3b\xaa\xd7\x1d\xab\xcf\x5a\x69\xf9\x9a\x16\x49\x2d\xb2\x90\x2d\xe5\x25\x32\xfb\xac\x1b\x2d\x5d\x6f\x42\x5c\xae\xc5\xa2\x49\x48\x28\x32\x34\x9c\x2a\xb9\x44\x9a\x16\x1a\x93\xf1\x44\x47\x78\x43\x71\x64\xea\xf0\xd4\x47\xf8\x8d\x4f\xaa\x0d\xb4\xf4\x49\x08\xa0\xd0\x4b\xc4\x8e\xf6\x49\xb0\xf4\x5a\x2e\xe0\x08\x9f\xad\x0e\xcd\x21\xad\x4a\xc8\xa5\xe5\xb5\x62\xb6\x28\xbd\x99\x5e\x7c\x40\x12\x0e\xba\xb0\x81\x74\x9a\xe3\x40\x17\x61\x97\x6d\x64\xaa\x2a\xe7\xfd\x24\x94\x92\x2f\x69\x64\x85\xb7\x08\x66\x52\xd8\x17\xb2\xf3\xc5\x62\x80\x47\xbc\x56\x8f\xd5\x6e\xba\xf0\x0a\xb4\xc1\xa7\x01\x61\x7f\xb8\x8f\x05\x73\x6b\x07\x5f\xaa\xf7\x88\xd1\x5a\x2d\x1f\xe7\x45\x2d\x45\xbe\xae\x38\x5f\x78\x2e\xb8\x93\x79\x71\x49\x97\x8a\x48\x08\x21\x5d\x8f\x78\x77\x48\xfd\xca\x64\x9c\x64\x32\x9a\x17\x58\x26\x33\xa8\x25\x2e\x9f\x53\x2a\xb1\xdb\xf2\xde\x10\xbe\x2d\x5f\x53\x6b\xdd\xea\x2f\xad\xf9\xaa\x14\x03\x7a\xa3\xe0\xe0\xad\x3e\x71\x59\xcf\x29\x32\xa9\x1a\xa9\xab\xa4\x46\x18\xaf\x0c\xd8\x55\xcf\xc9\xfe\xac\x05\xeb\x47\x5c\x38\xbc\x8c\xce\x9e\xce\xce\x49\x06\x20\xa0\x81\x49\x00\x65\x78\x0c\x65\x40\x06\x89\xd4\x5d\x46\xc9\x42\xc6\x42\xb0\x78\x6f\x9c\xf6\x37\x5f\x14\xe4\xe7\xa3\x08\xa6\x99\x8c\x5f\xf5\xeb\x20\x20\x09\xc2\xd3\x7a\xab\x26\x81\xa5\xc1\x0f\x7b\xc0\xe6\x2b\xe6\x53\x7c\xec\x0a\x89\xd0\xa3\xe5\xa1\xf7\x63\xdd\x43\x10\xb2\x57\xde\xfc\x78\x08\xec\x99\x78\x5d\x70\x7b\x9e\x42\x10\xf9\x02\x0e\x86\xb3\x55\xdf\xc5\x3d\xb6\x76\xba\xcb\x48\xca\xd9\x5e\x09\x57\xae\x76\x10\x2e\xa5\xe8\x6b\xdd\x83\x3e\x71\x72\xfa\x68\xae\x44\x6c\xeb\x24\x31\xf7\xb3\x07\x2e\x8b\x9e\x2a\xb4\x92\x04\xd4\xdf\x1e\x8f\x06\x4f\x95\xdb\x24\xae\x21\x8b\xb1\xc2\x9d\xbd\xf5\x9b\xdf\xe3\x91\x14\x33\x0d\x7b\x82\x21\x14\x6b\xfa\x5a\x1f\x82\xde\xaa\x42\x88\x42\x42\xb5\x28\x47\xf9\xa6\xd8\x91\x79\xc0\x82\x62\x76\x7a\x25\x12\xb1\x35\x66\xb5\x99\x4a\xdc\x8b\x41\x79\xf6\x78\x70\x6e\xee\x3e\xee\xf6\xfa\x54\xa7\xdc\x13\x8a\x8b\xc3\x1e\x45\xfc\xee\xbe\x98\x9e\x9e\x74\x35\x62\xd3\x80\x21\x77\x39\x84\xe3\xa0\xae\xd3\x77\xef\xde\x6a\xcd\xdf\x10\x40\x4b\xf3\x77\x54\xd7\xa9\xfa\x0a\x37\xba\xdf\x62\x4a\x76\xec\xff\xf9\xbe\xf3\xbd\xf5\xff\x39\x3b\x11\xa6\x3d\xf6\xfe\xfd\x7f\xbe\xb7\x4c\xf6\xba\x15\xcb\x57\xf6\xe6\xe5\x1f\x21\xaf\xcb\x5e\xff\x67\x27\x2a\x66\xaa\x3f\x2b\x85\xee\x8c\x86\x65\xd9\x2a\xd0\x3e\x2a\xf1\x3c\x9a\x15\x12\xef\x38\x02\xc4\x14\x47\x42\x3c\x8b\xa9\xd1\x71\x09\xdb\x41\xd1\xb0\xd0\x0c\x73\x09\x7b\x87\xa3\xa1\x1d\xa0\x9f\x88\xaf\xed\xa9\xef\xe8\x83\x90\x9d\x24\x3c\x6e\x24\xa7\x98\x1a\xfb\xc4\x6f\xe9\x01\xcf\x12\xb0\x29\xc3\x3e\x3b\x61\xf2\x77\xbf\xde\x44\xc8\xe4\x19\xac\x80\x8c\xa9\x1e\x08\x47\x34\xf5\x9d\x08\xa7\x01\x42\x2c\x75\x06\x77\xe2\x16\x85\x0b\xd9\x00\x87\x6c\x51\xc3\x95\x7c\xe6\x25\x5a\x2e\xef\x49\x5f\x10\x72\x6c\x60\x9c\x66\xeb\xb8\xf2\xc9\xf7\xd4\x3d\x3e\x92\x3b\x43\xdd\xec\x1d\x77\xb9\x41\xb5\x5c\xc9\x2c\x67\x9a\x33\x90\xac\x6b\xd9\x7a\x74\xdc\x38\x82\xfd\x48\x21\x1a\xb7\x4c\xe1\x98\xc1\x03\x73\x45\x8f\xab\x85\x0b\x4d\x7b\xb7\xd0\x5f\xe4\x7b\xe1\xcd\x6c\x35\x42\x7e\xde\x7e\xa9\x49\xb5\xe7\x71\x64\xb8\x21\xd8\xc1\xab\x5d\xc4\xa2\x85\xed\x95\x8e\xd9\x1f\x85\xaa\x77\x1c\x09\x8c\x20\x74\xbd\xe7\x9b\x2e\xec\x62\x11\xfc\x46\x8e\x5b\x54\x4a\x1a\x4b\x64\xdd\xae\x14\x58\x9d\xd6\x86\x08\xef\xda\x71\x41\x60\xe3\x86\xe4\x9f\x8d\x0b\x62\xf4\xbf\x1a\x75\xfc\x96\x16\x41\xb3\xb6\x62\x2e\x32\xb5\xee\x8d\x8b\xfe\xc6\x15\x97\xe0\x4d\xf3\x59\x61\xe5\x25\x99\x1e\x47\x5c\xe6\x0b\x31\x05\x79\x5c\x1a\x00\x79\xbf\x5e\x57\x94\xb6\xa9\xed\x3b\xe2\xee\x3d\x90\x9a\x93\x7c\x59\x6d\xdf\x51\x62\xde\x32\x22\xf6\x96\x6e\x1e\xb4\xb8\x26\x72\x0a\x75\x12\xe8\x00\x8c\x17\xf4\x28\xc3\x9e\x34\x2e\x10\x2b\x57\x4c\x12\x12\x57\x89\x2f\xe5\x41\xac\x44\x0f\xa4\x72\xaf\x8a\xba\xa8\xed\x39\xa8\xa4\xb8\x9e\x06\xd9\xdf\x87\xf5\x52\x37\x5f\x07\x31\xc9\x03\x4a\xe0\xb7\x5d\xe7\x55\x98\x07\xf2\x63\xa3\xd2\x39\x6d\xc9\x25\xa6\xc8\xb4\x73\x45\xab\x06\xa8\x75\xc9\x0b\x7e\xcf\x6e\x38\x8c\x58\xe2\x23\xe2\xc7\xe6\x06\x91\xa9\x3c\xfe\x1a\xb0\xa4\xb2\xf3\xa5\xcd\x22\x7a\x5b\x8c\x16\x47\x3d\xc6\x2e\xc9\xad\x54\x07\x0d\x1c\xb4\xb4\xde\xac\xf2\x7b\x92\xca\x8f\x86\xa5\x50\xa8\xd1\x10\x34\x39\x44\xe5\x45\xf8\xae\x02\x0a\x0b\x16\xb1\x80\xbd\x12\xa6\x2d\x48\x76\x97\x1b\x2c\x14\xfc\x9e\x8f\x10\xf6\xf3\x4d\xe0\x4b\x3f\x04\xfe\x4a\xf0\xaa\xc0\xf2\xed\xd0\x61\x64\xb2\xa6\xe9\x51\x9d\x0c\xc2\xba\x52\x87\x1d\x3a\x0c\x9e\x80\x29\x8b\x72\xf8\xc8\x4f\x15\x20\xc3\xdb\x01\x23\x7d\x57\x09\x64\x3e\x00\x4e\x82\x59\xec\xb0\x90\x98\x42\x2e\xbd\x3c\x66\x24\xb6\xe1\x1c\x1b\x9c\x36\x62\x42\x15\x7a\x4d\x21\xad\xc7\xaa\x30\x85\xe4\x5c\xab\xc5\x48\x3c\x90\x52\x78\x5c\x58\x54\x0e\x2f\xbd\x42\x82\x50\xc9\x6e\x41\x99\x51\x49\xf0\xb1\xb2\xe8\xab\x37\x32\x39\xc7\x28\xda\xb1\xbc\x2a\x91\xa2\x65\x80\x22\x4f\xd4\x53\x50\x69\x3e\xdb\x96\xcb\xfc\x52\x4b\x92\x3f\x60\x1e\xf2\x98\x05\x23\x9f\x6c\xb2\x88\x10\x1e\xbe\x4a\x86\xe1\xf5\x3a\x9a\xf6\x75\xd5\x20\x1c\x6f\x10\xff\x73\x75\xfb\xfc\x72\x88\x5f\xa3\x47\x8c\x4c\xf8\xbe\x93\x4e\x18\x85\x96\x76\x83\x20\xdb\xc1\x5d\x9e\xa6\x7b\x9e\xb7\xc8\xa6\x8b\xc9\xcc\x45\x5b\x3b\x38\x66\xa9\xff\x51\x32\xa6\x2d\x70\xa8\xd0\xfa\x2e\xc2\xc4\x7c\x37\xbc\xf1\x70\x6b\x07\xf7\x20\xa3\x3f\xf6\xd2\xd2\x97\x5f\xb7\x76\x70\x1f\x3e\xe9\x59\x12\x3f\x2e\xd4\x9a\x16\x2c\xf7\xe2\x21\x70\xfd\x24\x9e\x07\x48\xdf\xb6\xe9\xf6\xb3\x53\x47\xad\xef\x86\xee\x8d\x93\xc9\x22\xa5\x23\xdf\x1d\x3f\xa2\x52\x8d\x3b\x78\xc0\xeb\xfb\xfe\xf0\xeb\x77\x03\xbd\x34\xf1\xee\x92\xe5\x5e\xed\xd0\x70\x6d\x8c\xa9\xfe\x7d\xc7\xff\xbe\x63\xff\x67\x87\x35\xb2\x83\x47\x62\xc4\x81\x1f\x67\x8b\x68\x1e\x3f\x7f\xdf\xc9\xa6\x0b\x36\xea\xf1\xeb\x83\x99\x28\x9f\x44\xff\xd6\xf2\x4c\xff\x52\x07\x13\xc8\xf5\x7d\x87\x7e\xdf\xd1\xed\xef\x0f\xdb\x4e\xfd\xbb\x81\xea\xdf\x1f\xea\x3b\x78\x32\x83\xf2\xeb\x9f\x58\xb7\x53\x28\xc7\xe7\xea\xbb\x5f\xff\x6e\xe6\x8f\x5b\x3b\x31\xce\xca\x5f\xb7\x76\x62\x85\xa7\x9a\xce\x8a\x23\x71\x36\x04\x09\x31\x89\x7b\x5c\xb2\x0a\x7e\x31\xfa\xc5\x4b\x40\x06\xc5\x8b\x4b\x7a\xc5\x4b\x48\xe6\x43\xee\x09\x83\x6d\xe9\xeb\x20\x6a\x3f\x4e\xf4\xc9\xcc\x9e\x4c\x9d\x7a\xb7\x47\xd9\x2f\xcb\xa4\x53\xa2\xaf\x67\x88\x78\x86\x3c\x23\x82\x5a\x43\x84\x16\x8b\x48\x3c\xe6\xac\xb6\xa6\xd1\xc5\x42\xf7\x17\x8b\x60\xb1\xf0\x90\xa6\x85\x8a\xdb\x8a\x1e\x5d\x1f\xca\x44\x1d\xca\x54\xed\xfd\x38\x7f\xb1\x28\xef\xbd\xb5\xb1\x77\x43\xd1\xbb\x51\xa9\x77\x39\xb5\xa1\xbb\x70\x51\xeb\x23\x4d\xa3\x0a\xcd\x3c\xef\xe5\x6a\x22\x99\x68\x88\x96\xfd\x28\x81\xe1\x5e\xa0\xaa\xe5\xb9\xd8\x23\x97\x82\x72\xa0\x92\x72\x90\xfa\x9e\xc0\x39\xf8\xc0\xb0\xff\xfe\xdb\xbb\x60\xb1\xf8\xa3\xb1\x1f\x70\x1b\x13\x49\x20\x5b\xae\x78\xf1\x8b\x40\x81\xac\x32\xd2\x84\x26\x02\xa9\x16\xdd\xd8\x27\x81\x15\x6c\x6f\x23\x5a\x27\xfe\xaf\xba\x07\x55\x07\x68\xfb\xf7\xb7\x08\xfb\xbf\x92\xdd\xdf\x2d\x70\x0b\x42\xfa\x54\x77\x71\xb3\xe0\x56\x72\x41\x01\x71\xd9\x5f\xaf\xc5\xc6\x01\x1c\xd5\x59\x1f\x42\x21\x72\x4c\xf2\xd0\xa3\xe4\x25\x8c\x93\x34\x3b\x8f\x47\xc1\x69\xca\xaf\xa3\xcd\x92\xf3\x85\x64\xa6\xea\x30\xba\xc0\x29\xec\x7c\x4f\x5a\xdf\x47\x3b\x88\x91\xf4\x1f\x64\x10\xe7\x7a\x1a\xd1\xba\xee\xd5\x9b\xa8\x7e\x12\xd1\xba\x8b\xf2\x4f\x80\x50\x0f\xa6\x4e\x5d\x4f\x82\xfa\x49\xac\xa7\x01\xde\x6e\x12\xe2\xb7\xd8\xe9\x67\xfa\xa8\xbe\x95\x20\xb4\xfc\xaa\x27\x33\x3c\xe4\x71\xb6\xe6\x71\x6a\x78\xe9\xdc\xf8\x4c\x93\x34\x68\x73\x3f\xd5\xc9\x2c\x8f\xaa\x15\xba\x7a\xc2\xb8\x00\x5c\x53\x32\x28\x27\x4b\x3a\x5b\x8b\x80\x7c\xd3\xd3\x1f\x7a\x74\x25\xaa\x77\xd8\xe7\xc7\x39\x1b\x5e\x81\x64\xd7\x3a\x90\xd4\x70\x5a\x34\xfe\xa6\xeb\xea\xe9\x6c\x35\x44\x6a\x71\x7f\xc1\xf9\x47\xf2\x98\x68\x9a\x3e\xd8\xde\xc6\x23\x32\x41\x56\x4a\x14\x03\x07\x4f\x47\x2f\x13\x32\x2a\x22\xa7\xa7\x72\x2f\xa4\x96\x2b\x4b\xd6\xeb\x78\x44\x1a\xac\x24\xc0\x60\x4e\xd0\xc5\xa1\xde\x7f\x47\x72\x22\xe3\x29\x01\x58\x3a\x72\x1d\xbd\x5f\xaf\x23\x6b\x54\xaf\x0b\x3e\xa5\xda\x64\x95\x25\x41\xcb\x23\xd5\x86\xe9\x12\x32\x8d\xa8\xa6\xe9\xfd\xfd\x08\x64\xb3\xac\x00\x62\xdf\x35\xad\x5f\xaf\x63\x0f\x82\x11\xcb\x83\xb6\x25\xdb\xc7\x8f\x49\x49\x40\xe5\xeb\xf2\xd0\xec\xe3\x80\xcc\x2c\xb8\x35\x14\xf6\x8c\x5c\x6e\x1a\x12\x72\x16\xe5\x86\x2a\xcf\x89\x48\x7b\x4a\x16\x8b\x90\x8d\x2d\x37\xbd\x6b\xe9\xae\xce\x72\xe2\x4b\x64\xe6\xd9\x66\x01\x7a\xf1\x49\xdf\xe2\x4c\xa6\x30\x26\x60\x35\x87\x55\xf2\x94\x58\xf0\x8c\xf2\xac\x20\x19\xed\x6f\x37\x31\xa4\x63\x9e\x28\x8a\x02\xe5\xcc\x73\x5e\x07\xd0\x76\xd1\x85\x97\x90\xcf\xb2\xab\xe7\x81\x3a\xb9\x20\x84\xed\x90\x64\xa6\xff\x72\x3b\x0a\x1e\x27\x81\x07\xbe\xfe\x65\x50\xc7\x4a\xed\x97\xfa\x9b\xb0\xfe\x4b\x4d\x78\xe4\x9f\xce\xc6\x59\x50\x19\xd2\xa4\xff\x0b\xa6\x78\x80\x47\xdb\x4d\x64\x2d\xf3\x90\xb8\x01\x2a\x55\x59\x53\xaa\x0c\x46\x3e\xc4\x49\x09\x1e\xa5\x77\xff\xf1\x24\x18\xf1\x0a\x6b\xbc\x2e\x45\x56\x0e\x68\x02\x4b\xf7\xad\xb5\xda\x4e\x84\x67\x01\x5a\x82\x3f\x1b\x98\x15\x4d\x0b\xab\xe4\x3a\x80\x9f\xc7\xb5\x39\x7a\xb5\x17\x45\xff\x6b\x45\xff\x61\xb6\x20\x26\x32\xc4\xa6\xce\xab\x7f\x4c\x16\x0b\x57\xc1\xee\xb2\x5b\x30\xad\xad\xbe\xd9\xdf\x6e\x8a\x0e\xda\xdf\x93\xef\x23\x87\xf1\xec\x97\x8a\xc8\x26\xe0\xc4\xf3\x0a\xe4\xae\xd0\xc7\xbe\x8e\x2c\xb7\x4a\x9e\x19\x48\xfb\x3a\x42\xc2\xb4\xba\x20\x1e\x15\x5d\x1f\xd7\x58\xc3\x5b\x38\x82\x20\xa9\xb8\x4f\x1a\x78\x40\x1a\x00\xbe\x13\xd2\xc0\x7c\x07\x61\xd0\x10\x80\x60\xd9\xcf\xec\xcf\xa1\x80\x30\x4d\xd3\xe7\x24\xd0\x11\x3e\x24\x73\x60\x68\x64\xa7\x8e\x59\xaa\x75\x0c\x70\x77\x4c\xde\x04\x3a\x62\x8c\x13\x5b\xda\x43\x4d\xd3\x0f\xc9\x31\xe4\x8e\x43\x9d\x3d\x54\xc9\xe1\xca\x4c\x5f\x07\xde\x38\xf1\x2b\x5d\x9a\x56\x6a\x75\x96\xa5\x5e\xab\x84\x71\x30\xf0\x6b\x75\xbd\x49\xa0\x74\xeb\xd2\x7c\xec\xa2\x7a\x0d\x57\xdc\x59\x56\xc9\x17\xa6\x56\x3f\x64\x0b\xb2\xdd\x04\xbb\x1c\xb6\x90\x05\x29\xf9\x09\x14\x30\x49\xc3\xba\xd8\x67\x35\x58\x17\xf5\x3a\xfa\x64\xcf\xed\x0b\xc7\x21\xc7\xf6\x85\x63\x3d\xb3\x39\xfb\x24\xc4\xe9\xf0\x72\x9c\x53\xfb\xcf\x4b\x64\xe5\xc8\x0b\xfe\xda\x77\x53\x47\xc1\x9b\x8f\x85\xec\x12\x26\xd9\x9b\x72\xc2\x3f\x9d\x71\x5a\xf7\xc3\x8d\x74\x56\xd9\xf2\x4c\xa9\x97\xe2\x4e\x29\xa1\x30\x6b\x2b\x76\x57\x70\x5f\xe2\xda\xd4\xc1\xd5\xa7\x1e\xb0\xa5\xb9\xb4\xf1\x76\x94\xce\x26\x93\x71\xc2\x86\x0b\x31\x74\x2a\xb5\xba\x74\x51\xe0\x4f\xa9\x8c\x4d\x7d\xc5\x58\x67\x58\xf5\x27\x76\x52\x71\x09\xb7\xb9\x2e\x20\x18\x50\x21\x2e\x87\x73\xaf\x68\xe6\xd3\x38\xab\xd0\x42\x30\xae\xde\x03\x60\xee\x0a\xbc\x54\x59\x0e\x67\xb8\xe6\x8e\xc7\x83\x80\x8e\x6a\x1b\xbf\x73\x76\x81\x10\x72\xd1\x5d\x62\x9f\x66\xc1\xa6\x5c\xe0\x3a\x80\x66\x81\xce\x0e\x16\x19\xfb\xe1\x4f\x33\x82\x76\x41\xe8\xd3\xa7\xcd\x0d\xb3\xc3\xf7\x3a\x28\xf9\x87\xca\x4a\x5c\x94\x0b\x87\x1d\x17\xc2\x52\x4a\xbc\x58\xf7\xd8\x39\xc6\xa3\x01\x48\x86\xff\x78\x42\x89\x9a\x9c\x2f\x6e\xb5\x0a\xc9\x27\x54\xec\x28\xa1\x33\xd8\x24\x1e\x84\x4f\xbc\x08\xb2\xee\xd8\x5f\x2c\xd2\x48\x68\x04\x8e\x29\x14\x79\xec\x26\xf7\x65\x95\x33\x6e\xd8\xd0\xd7\x9f\x7b\x22\x6a\x75\xd0\x54\x96\xe5\x86\x21\xc0\x21\x54\x06\xea\xa8\x39\x2c\x30\x30\x90\xd9\x45\x13\x2e\xeb\xaa\x12\x09\x00\x82\x85\xa5\x3f\x60\x98\x71\xa8\x73\x4a\x32\xbf\xfa\xc3\x1e\x11\x62\x63\x1f\x59\x6f\xf7\xf6\x08\xf1\x8c\xf3\xb9\xa6\x75\x67\xba\x27\x1c\x08\x09\x27\xad\xfc\xb6\x0d\xae\xc5\xb8\x94\x71\x87\x31\x12\x5b\x3b\xf8\x43\x44\x91\xe5\xc1\x0d\x54\x80\xac\x80\x91\xa7\x3e\xb2\x7c\x52\x8d\x63\xbd\x4b\xf5\x94\xbd\xda\x6f\x85\x36\x04\x12\x3f\x56\x41\xb1\x06\x48\xd3\x7c\x2b\x60\x0d\xfa\xad\x79\x6a\xde\x47\x8c\x5a\xf5\xc4\x0d\x83\xbc\xb7\x9b\x72\xbd\x9b\x80\x50\x2b\xef\x72\xf0\x5a\x97\x7d\xd9\x5d\xeb\x8d\x74\x7e\xb7\xf3\x7d\xc7\xf3\x3c\xc6\x9e\x25\xc8\xda\xf9\xbe\x33\x99\xb9\x5b\x3b\xd0\xbe\xcf\xbd\x7b\xe6\xd9\xe0\x0b\xcb\x86\x3d\xe3\xab\xa7\x77\xba\x14\xd3\x10\xc9\x21\xfa\xf2\x6e\x7f\x36\xd4\x03\x29\xdb\xad\x12\x31\xd2\x60\x7d\xa4\x38\xcc\xd9\x0c\x9f\x11\xea\x83\xfc\x45\xd3\xaa\xa1\xa6\x05\xaf\x0e\xdd\x87\xb1\x4e\x67\x7c\x3a\xe7\x62\x5a\x93\xbc\xbc\xc5\x38\x7e\x4d\xf3\x11\xf8\x3e\x62\x4b\xc9\x16\x17\x1a\x81\xcc\x58\xcd\x8c\x45\x5e\x81\x82\xc6\x54\x06\xb1\xa7\x63\x2a\xaf\x23\xfc\x26\x39\xe8\xd1\x7a\xdd\x9a\xcd\x18\x1e\xe4\xc4\x1d\x38\xe1\x62\xc8\xa4\xfd\x4c\x4d\x2f\xc3\xef\x9f\xa9\xe9\x67\xf8\xee\x89\x9a\x35\xee\x84\xfc\x74\xd4\x0b\x60\x6b\xd5\xf0\xe4\x89\x9a\x47\x29\xbe\x0b\xa9\x99\x46\x4b\x7c\xd8\xa3\x42\x96\xae\xbf\xd4\xbe\x6c\x1f\xd3\x8c\xde\x40\x64\xc0\xed\x83\x59\xd6\xad\x99\xc3\x68\x89\xf0\x41\x8f\x92\x06\x9e\xcf\xc0\xa9\xc9\x0c\xc2\xee\x86\x94\xec\x71\x8b\xdd\xd9\x8c\x1d\x3d\x0f\x33\xe2\xc6\xf6\xf9\xd4\x51\x98\xbb\xa3\x1e\xd5\x0b\x34\xcf\x31\xe9\x6c\x56\x32\x61\x75\xc9\x6c\x06\x0e\x41\x8c\x8f\x7b\x9a\xe6\x1a\xe1\x4c\x47\x8a\x3a\xcb\x71\xaf\x6c\x9e\x0a\x02\xfb\x87\x80\xdf\x31\x8b\x8b\x51\xc1\x80\x78\xa8\x70\x57\xc5\x72\x8d\x40\xac\xef\x81\x5f\x4f\xdb\xb1\x38\x71\xee\x11\x6a\xea\x2a\xd3\x82\x03\xc9\xb4\xd4\x9b\x0c\x0e\x02\x79\x6b\xc0\xd6\x51\x58\x7e\x72\x33\xe3\x50\x3a\xda\x10\xa2\xa9\xd0\x0e\x1c\xc8\x3c\x08\x11\xee\xb3\x99\x09\x5d\xbd\x8f\x23\xbb\xe1\x20\xab\x6f\xdc\xbc\x85\x1c\x96\xcf\x6f\x87\x97\x72\x16\x06\x95\x78\x54\x71\x19\xb5\xe6\xda\x03\xc7\x8a\x18\xad\x59\x34\x92\x7b\xf3\x80\xab\xf8\xc0\xb1\x8f\x7c\x87\x90\x01\x7a\x61\x2f\xac\xce\x41\x9d\x8b\xc0\x42\xc4\x8a\x0a\xe5\xa7\x65\x04\x06\x70\x2f\x4b\x1c\xba\x7a\x80\x07\x08\x07\xe5\xbc\x18\x7a\x11\x20\xb4\x1c\x10\x50\xf1\x69\x40\x4b\xe8\x65\x50\x27\xa3\xd0\xf2\xca\x23\xcd\x3b\x01\x82\x61\xd1\x32\xb2\x06\x75\xe2\xe5\x22\x35\xa9\x56\xba\xbc\x27\x00\x10\xd6\x9b\x7b\x23\x1d\xaf\x7a\xc4\x14\x6a\x77\x2e\x78\xf1\x93\x1a\x46\x52\x22\x48\x13\x6e\x3e\xe0\x11\xdf\x38\xf1\x5b\x7e\x49\x2b\x58\x55\xb6\x03\x3e\xf3\x72\xe9\x91\xe3\x58\xe7\x2e\x0c\xe4\x59\x20\xcd\xa0\xc1\x14\xb1\x47\x85\x1d\x31\x3b\x0b\xb0\x40\xff\x6c\x87\x85\xec\xcc\x67\x54\x81\x1e\xb2\x83\x1d\x09\xec\x14\x4e\xc0\xa5\x99\xa6\xc9\xc9\x28\x8c\x15\x6d\x46\x70\x85\xec\xd4\x16\x44\x57\x9f\x4d\xc9\x60\x7f\x64\x0d\xea\x75\x14\xb1\x69\x79\x81\x23\xbe\x6f\x0f\x1c\x3c\xa0\x6e\x30\x30\x6d\x67\xc9\x8f\x6b\xd6\xaa\xb0\xe5\xc5\x23\x12\x81\x11\xef\xfe\x08\x0c\x79\x23\xbb\xef\xd8\xf7\x9e\xc3\xe7\xb5\xe1\xd8\x7d\x06\x2b\x84\xfb\xcc\x5f\xc9\x3b\x20\x2c\x37\xf6\x8c\x0f\x91\x3e\xb0\x4f\x1c\x3c\x80\x92\x6c\x01\xe0\x82\x29\x64\x94\x44\x64\x45\x84\x3d\x58\x23\x12\x12\xd6\x72\xab\x69\x36\x84\x25\x31\x2c\xe3\x68\xbf\xcf\xd8\x27\xf4\xe2\x19\x37\x53\x85\xd9\x1f\x00\x1d\x19\xf1\x61\x4d\x60\x58\x9e\xe1\x79\xfa\x68\x3b\xc4\x03\xcc\x48\x9b\xc8\x1e\x38\xf6\x89\xc3\x3a\x3a\x72\xec\x81\x83\xd0\x72\xe9\x33\x30\xf7\x0d\x08\x2a\x42\x3c\x7b\x26\xf0\xb7\x8c\x60\x00\x71\x2d\x7c\xee\x2f\x79\x7a\xca\x70\xe3\x23\xc3\x8c\x42\x57\x05\xc2\x3b\xec\xfc\x47\x7f\x31\x7e\x5d\xa2\xad\x1d\xd4\xd2\x3d\x72\x18\x82\x87\x82\xc7\x99\xee\x21\x64\xf6\x7c\xaa\x7f\x18\xb3\xc7\xfc\x4c\x81\x65\x1c\xcd\xd1\x93\x90\x6b\x3f\x76\x29\xfe\x5a\x80\xd4\x8a\xb5\xd1\xeb\xc1\x93\xd8\x29\xac\x96\x53\x9d\x51\x2a\x22\x28\xca\x7b\x8e\x3d\x32\x9f\xd9\xae\x70\x79\x03\x8f\x9c\xde\xf6\x8c\x69\x5b\x5f\x33\x72\xba\x88\xd3\x34\x1e\x45\x15\x08\x0d\x54\x09\xc7\xb9\x71\x43\x25\xf6\x85\x5b\xf5\xe5\xbd\x31\xca\xf5\xb1\x66\xb7\xf2\xe9\x2c\x7f\x3a\xef\xc9\xa7\x49\x1e\xe2\x61\x7e\x2c\x9f\x3e\xee\x81\xb5\xb2\x71\x3a\x20\xec\xe7\xfc\xa3\xfc\x70\xdd\xe7\xaa\x5c\x87\xa3\x55\xf7\xde\x52\xcb\xb6\x4a\x3a\x8b\x45\xe3\x9d\x72\x2d\x7e\xcd\xe3\xde\x54\x64\x74\x34\x25\x48\xe1\x68\x3c\xda\x1e\x05\x11\x05\x73\x0d\x4e\x63\xd6\xa4\x6d\xe1\x80\x50\xeb\x39\xd7\xb8\x2e\xb0\xfc\xc1\x8c\xab\x95\x9e\xdd\x6a\x9a\xee\x52\x6e\x9e\x65\x9c\xdd\x22\x4c\xe5\xf8\x14\xa6\xe9\x49\x11\xbd\x50\x36\x9b\x2f\x02\x78\xcc\x6f\x01\x16\x3a\x8e\x93\x14\x73\x57\xb9\xa6\xfd\xc2\x83\x45\x98\x2e\x96\x6e\xea\x3d\xbc\x1a\xe0\xc3\xf4\x97\xce\x12\xb4\xda\xc3\xd9\xba\xb5\x97\xb8\x68\xa2\x63\x2a\x2e\xae\x24\x2d\x79\xde\x63\xfd\x35\xb2\xa9\x14\xd3\x8b\xd4\xdc\x5b\xf8\x97\x2e\xad\xab\x9f\xfc\x66\x7e\x67\x71\xfe\x11\x9c\x42\x79\x75\x72\x1a\xd1\xba\x3c\xb2\x27\x4d\x9e\xf6\x31\x12\x4a\xf2\x93\x26\xb2\x58\x0b\x8f\x1c\xeb\x42\xda\xfc\x58\x9e\x66\xb6\x83\x03\x8e\x76\x73\x93\x87\xf9\x31\x47\xba\x41\x3d\x08\xeb\x22\x05\x1c\x3a\xb1\x5a\xba\x02\xff\x46\x21\x5a\x52\x22\x8f\x46\xb9\x3a\x70\x18\x4a\xfd\x02\x84\xdb\x7d\x4d\xd3\x41\x31\x02\x53\x46\x23\x8d\x62\x8a\xbb\x76\xe6\xe8\xb9\xb9\xdd\xbf\xa5\xe5\x3e\xbf\xec\xdf\xfb\x1d\xd5\xbb\x06\x75\x53\xfd\xb5\x6c\xff\x01\xfb\x45\x99\x19\x21\x9c\x3b\xff\x62\x34\xe5\xcb\xd2\x9a\xcf\xec\x95\xf9\x72\xb8\x25\xbe\xb8\x60\x0e\x9a\x96\x4b\xae\x22\x46\x32\x11\x3f\xe3\xd7\x21\x19\x76\xc9\x4d\xc2\x70\x32\x49\x23\x48\x7a\x59\xe2\x1d\xbb\xa5\x39\x74\x90\x91\x68\x1e\x3f\xeb\x9a\xfd\x1f\x8d\xc7\x56\x11\x82\xcc\x56\x40\x8e\x52\x53\xf7\xc9\xd3\x50\xa7\xf8\x4d\x0c\xde\xde\xd3\x08\xbc\x28\xb3\x13\x39\x80\xa3\x9f\x21\x58\x1c\x54\x09\xf1\x32\x4d\x63\xbf\x7e\xb6\x58\x54\xb7\x62\xdd\xc7\x43\x28\xa1\x6f\xa2\xf2\xc1\xe0\x4f\x50\xf9\x01\x82\x73\x35\x8d\x10\xab\xef\xa5\x60\x17\x14\xf7\xdc\xde\x12\x7b\x24\x50\x58\x09\x20\xbf\xdb\x53\xce\x46\x7b\x84\x1c\xa5\x20\xd2\x89\xf5\xac\x4b\x11\x12\xd7\x47\x9e\x4b\x31\xe7\xbb\x5d\xfb\x61\x66\xc4\x63\xfb\x72\xea\x18\x47\x97\x9f\x3a\xed\x4f\x9d\x1f\x9d\xaf\x9f\xdb\x0e\x03\xce\xd7\xbe\x11\x48\x37\x44\x1c\xd2\xce\xd3\x24\x30\x3a\xed\x2f\x1d\xb4\xa1\xce\x83\xdb\xce\xc9\xe5\xf5\xe9\xb7\x83\xce\xe9\xe5\xa7\xd5\x4a\xcb\x1f\x45\xad\x8c\xee\x1b\x27\x02\x7b\x42\xdd\x37\xa7\x1f\x3e\xb5\x8f\xf3\xda\x8d\x4b\x56\xee\x47\xfb\xd3\xc1\xe1\x79\xfb\xc7\xe7\xeb\xd3\xbb\x83\x4e\xfb\xc7\xa7\x76\xe7\xfe\xf2\xfa\x0c\xf6\xd4\xcf\x32\xc0\x04\x97\x6b\x3a\x38\x3e\xfe\xd1\xbe\x38\x38\x3d\x57\x0a\xe7\x69\x90\x9f\xf7\x4c\x61\x99\xd8\xba\x0b\xe3\x9c\x64\x2c\x2c\xb2\xb0\x8b\xf0\xa1\xbc\x05\x5e\x39\x18\x36\x47\xf4\x8b\x79\x34\x60\x61\x9a\x60\xd4\x50\x2e\x61\xab\xea\x3e\xf1\x18\xe8\x20\x40\xa6\x1e\x01\xf8\x44\x3e\x23\x72\x1f\x3d\xc7\xfe\xe4\x39\xd8\xe3\xf2\x7a\x60\xcc\x90\x54\xf9\xd4\xf3\x2d\x88\xa4\x33\x28\x02\xfc\x15\x06\x0d\x65\x8f\xfd\xfa\xf6\x9e\x43\x88\x67\xef\x39\x9a\xe6\xdb\x4d\x78\x6e\xc2\xf3\x5b\x78\x7e\xeb\x30\xf6\x68\xc9\x1d\xae\x7a\x84\x0b\x69\x2d\x1f\xa4\xe2\xe4\x26\x11\x64\x2f\x83\x74\x46\xe4\x36\xf7\x41\x44\xc4\x3d\xa6\x32\xea\x13\xef\xe6\x29\x8c\xd4\x6d\xb2\xf3\x8e\x12\xdf\xf2\xc9\x17\x7d\x16\xf3\x49\x4b\xc5\xa4\x01\x52\x13\x33\x46\x24\x03\xbc\x58\x54\xab\xc1\x26\x0e\xb8\xa0\xb6\xb6\x32\xeb\x3a\xa6\xc2\x01\x8a\xaf\x69\xa1\x31\xd4\xbb\x29\xb8\x31\x31\x0e\x8e\xf4\xf3\x14\x87\xc6\x64\xcc\x4e\x4a\x86\x86\xc0\x62\x31\x40\x56\xc8\x4d\xa1\x00\xff\x1f\xf6\x28\x3f\xe6\x5f\x54\x82\xae\x30\x0e\xbd\xb9\xab\x84\xf1\x20\x48\x2b\xe3\x51\x85\x5b\x0c\xf2\xa8\x90\x69\x85\x26\x41\x99\xc5\x36\x2a\x9f\x07\x01\x4d\x83\xca\x2c\x0d\x2a\xca\x2e\xad\xfc\xf2\xd8\x4d\x7e\xa9\x8c\x93\xca\x2f\x74\x96\x8d\x7f\x81\xd8\xa6\x69\x90\xcc\x83\xca\xd3\x78\x96\x54\x0c\x2f\x9d\x43\x23\x95\x30\x19\x0f\x21\x20\x74\x4a\x87\x81\x68\x28\x8f\x6f\x3a\xa1\x51\xc0\x60\xe3\x8d\x5b\x76\x80\x2e\x04\xba\x84\xe4\x67\x82\x64\xdc\x34\x2d\x68\xe9\x81\x74\x7b\xfe\x98\x22\xdc\xee\x89\x7b\x83\x00\x53\x84\xc1\xe7\x79\x80\x90\xa9\x1f\xe6\x97\xbb\x19\x43\xd5\xcf\xb9\x99\x90\x2a\x0e\x69\x17\x22\x2c\xd7\x18\x8f\xe0\x6c\x54\x0f\xba\x43\xd0\xc9\xcb\xc0\xd5\xd6\x33\x98\x9b\x58\xd9\x44\x77\xf1\x4f\xb3\x80\xa7\x7c\x11\x92\x41\xea\xc2\xd7\x0f\x22\x5a\xd7\xa5\xf0\x06\xd9\x01\x18\x1d\x82\x07\x31\xe2\x2f\xef\xd9\x56\x5b\x25\x33\x8a\x40\x0a\xf6\x96\x83\x04\x05\x07\xcf\xaa\x59\x0d\xb9\xb4\xc0\x93\x12\x3f\xd6\x85\xb3\x2d\xfe\x52\x50\xb4\x92\xc6\xfb\xd8\xa5\x78\xd6\x05\x15\x47\x65\x12\x60\x04\x2f\x07\x42\xd5\xf4\xec\x96\xb8\x14\xec\xc4\x95\x41\x02\x6d\xd1\x8d\x29\xa6\x5d\x8a\x96\xb8\xd9\xde\xfb\x95\x32\x4e\x55\xf5\x26\x27\x74\xe1\x8c\x59\x89\x5a\x99\x01\xb5\x32\x93\xd4\x4a\x41\xdc\xc0\x5c\xbd\xf0\x52\x56\xa3\x4a\x28\x9c\xb4\x14\xb8\x55\x6a\x5c\xf7\x41\x4f\x60\xb6\xa9\x33\x94\xf3\xb2\xa2\x17\xa7\x03\x84\x96\x4f\xab\x7e\x5d\x00\x5e\x18\x09\x27\x6c\x56\x47\x73\xc9\xe7\x43\x59\x64\xdd\xab\xe8\x6a\x93\x2d\xdd\xc6\xc2\x5f\x1e\x28\x39\x4a\x0b\x61\x93\x22\x40\x83\x7a\xad\x8d\xa6\x6f\x9c\x94\x3c\x90\x08\xf4\x7d\x8f\xe6\x9a\xc3\xf7\xc6\xb4\x5d\x5a\xf8\x83\x42\x01\x8a\x41\xcb\x34\xf7\xe6\xc5\xa3\x87\x89\x1a\xcf\x3f\x12\x1e\x95\x8b\x5f\xd5\x51\xe3\x4e\xfa\x47\x13\x1d\xb6\x5c\xf0\x50\x87\x29\x5a\x0a\x15\x98\x8e\xb0\x44\xfa\x19\x31\x1b\x52\x30\x13\x6b\xbc\x23\xaa\xae\x27\x2f\xa8\xd0\xb2\x3c\x9c\xe4\x1a\x1d\x7b\x19\x52\x42\xb9\x23\x8f\xf9\x1a\x34\x17\xed\x3c\x44\x6b\x04\x33\x44\xa5\x2e\xea\x97\xe2\xd4\xb2\xe2\xd7\xc7\x3d\xae\x3a\x51\xd2\xe0\x5d\xa9\xbb\xdd\x2d\xea\x06\x9e\x81\x53\x4d\x4a\xdd\x5c\x90\x2b\xbb\x7c\xde\xe3\x75\x5e\xaf\x74\x58\xd0\x98\x84\x5a\xf9\x2e\x84\xa4\xcf\x21\xd5\x3f\x75\x85\x32\xd9\xe7\x70\x95\x2b\x67\x87\x07\x17\xa4\x7d\xdf\x89\x70\x1c\x81\xa9\xf5\x4a\x4a\x9e\xc7\xdc\x89\x70\xd0\xa5\x4a\x9e\x3c\x25\xcf\x63\xed\x44\xb8\xa7\x56\x23\x13\x04\x05\x2b\xcd\x0c\xe7\xc7\xe4\x65\x99\xa7\xda\xd4\x21\xae\xb2\xc1\x8f\x66\x3a\x7a\xf9\xd0\xa3\x8b\x85\xfe\xa1\x47\x49\xb5\x81\xdd\xd8\xb8\xcb\xa8\xa6\xf1\x5f\x63\xeb\x81\xea\x47\x3d\x8a\x5f\x26\xe3\xc1\x20\x1e\x45\xa7\x82\x7f\x31\x9b\x8d\xc6\x12\x61\x2e\x7e\xd2\x34\xfd\xa4\x47\xa5\x79\xe4\x71\x48\x75\x19\xfe\x87\x92\xfb\xbe\xc4\xdc\xf0\xf1\x6b\x46\x09\x0f\x36\x01\x12\x34\x68\xb4\x69\x1d\x81\x7c\xeb\x26\xa4\x64\xb7\xa1\x7a\x29\x9e\x29\xa6\x6e\xb2\x29\xf9\x64\x24\x13\x6f\xc9\x0b\x1e\x87\x74\xc5\x3d\x0a\x2b\x29\x35\x8e\x84\x88\x2c\x89\x75\xca\xca\x18\x49\x10\xc5\x69\x16\x24\x10\xd2\x46\x4d\xd0\xef\xbb\x14\x1f\xc9\x23\xb2\x22\xac\x9a\x6f\xc2\xdc\x84\xfa\x26\xa4\xdb\xdb\x58\xa0\x1d\x41\x09\x1d\x87\x92\x12\x6a\x36\x1a\x08\x2d\xc5\x58\x7a\x2b\x60\x93\xab\xc8\x06\x99\x20\xd7\xa3\x2e\x68\x2b\xb8\x42\x67\x48\xfa\x53\x9b\xfa\x8e\xde\x86\x78\x73\xf9\xeb\x07\x4e\xc4\x8e\x41\x7b\x9f\xfb\x12\xce\x66\x5c\x89\x01\x2a\x3c\x1d\x65\x7a\x08\xe0\x62\x1c\x8e\xf4\x92\x91\x02\xef\x8c\xfb\x40\x37\x05\xb2\x91\x0b\x02\x87\x57\x81\x7e\x61\x29\x5f\x99\x44\x08\x61\x04\x93\x16\x05\xd9\x75\x30\xa0\x4f\xb7\xc9\x40\x0f\x13\xb4\x58\xf0\xe4\xb4\x94\x8c\xdf\xb3\x43\xa1\xb0\x9d\x93\x4b\xa0\xe4\xca\x57\x61\x53\xc9\xe5\x32\x5f\x75\xd6\x19\x4d\xcb\x32\xbd\xb6\xb3\xf3\xf0\xf0\xb0\x3d\x9e\x04\xa3\x74\xec\xc5\x74\x20\x14\x6a\x66\x69\x90\x88\x30\xdc\xa0\x20\x24\xc8\xcf\x9d\x64\xe2\xb1\x7f\xc6\xdc\xe8\xa5\x35\x64\xc1\xe8\x00\x36\x3f\xcc\x88\x1b\x1b\x3f\x7e\x30\x7e\x27\x9a\xd1\xc4\xff\xf1\xa3\x15\xc4\xfa\x53\x97\x22\xb3\xec\x7d\x81\x6d\xdf\x36\x37\x3f\x20\xc2\x47\xeb\x69\x8f\xea\x5e\xa1\x51\xc6\xd6\xe4\x3d\x5b\x93\x25\x3e\xd9\x5c\xed\xf3\xcf\xab\xbd\xfc\xb3\x6a\x3f\x6e\xae\xf6\x68\x53\xb5\x50\x29\x18\xa9\xb2\x0a\x4e\xc1\x08\x02\xa1\x25\x3e\xdb\x5c\xc7\x61\xb9\x0e\xc5\x65\x0a\xd5\x34\x58\xb3\x28\xc8\xce\x82\x27\x58\x2a\xfe\xa8\x23\xd4\x02\xf7\x84\x66\xb5\xb9\xc4\xe7\x9b\xeb\x3d\x58\xad\x97\x6f\x02\xe8\x1d\x76\xc9\x75\xc6\x60\xf8\x21\xd3\xa9\xf1\x83\x7b\xb8\xe3\x21\x06\x18\xa9\x51\x4a\x90\xc4\x78\x01\xd6\x05\xb0\xb6\x4b\x82\xa4\x52\x31\x4b\x30\x3c\x40\xf9\xb0\x89\xe8\x64\x78\xb5\x66\xe5\x52\x98\x28\xda\x09\xa7\xbd\xd7\xc2\xe1\xb8\x9a\xe6\x1a\x57\x19\x6d\x51\xdd\x35\x3e\xa4\xc8\xa4\x25\xd9\xf9\xfb\x42\x61\xe4\x78\xce\xce\xbc\xf7\xb0\x01\xf9\xa4\xbd\x66\x36\x72\x3c\xa7\x0a\x4a\x3e\x9d\xad\x47\xe8\x10\xf8\xfb\x43\x4a\xdc\xe5\x57\xfd\x74\x06\xf1\x28\x4e\xa1\xea\xab\xec\x55\xe7\xf2\x1f\x54\x5b\x89\x8b\xa2\x67\x19\xa1\x85\x3e\x31\xc3\x21\x27\xeb\xca\xc0\x5c\x13\x58\xf8\xb6\x93\x77\xa8\xe2\x36\xf5\x63\x9a\xd3\x3f\xa7\xa9\xa2\xe6\x7d\xd3\xc8\x23\xe7\xba\x4f\xa4\xda\x58\x7e\xd5\x2f\x66\x78\x6b\x8c\xac\x7b\x72\x21\x94\xed\x7f\x1a\x67\x34\xef\xec\xc7\xde\x4a\x40\x1c\xdb\x01\x93\xd4\xcc\xb8\x00\xe6\xae\x61\xf9\xfb\x1e\xe8\x4a\x41\x17\x7d\x06\x32\xa7\x29\x71\x2d\x2a\x5a\x7e\x73\x6f\x44\xc9\x2b\x3a\x94\xbc\x35\x56\x5f\x5f\x3f\xeb\x51\xf4\xaa\xfa\x95\x0f\xb2\xc8\x69\xcc\xb8\x86\x88\xd1\xf6\x41\x61\xc0\x37\x82\x54\x21\x0a\x0f\x8c\x14\xae\x6f\xf8\x35\x28\x0e\x48\x60\x78\x74\xe0\x09\x5d\xed\x80\xb3\xb3\x55\x6f\xb1\xf0\x34\xad\x0a\x11\xf2\x82\xe2\x16\xf3\x97\xdb\x51\x7f\x34\x7e\x28\xc0\xac\x52\xfb\xa5\x1e\xd4\x67\x01\x12\x14\x46\xa8\x69\xd0\x7a\x28\x43\x78\xac\x39\x7a\xf2\xa0\xdd\x4a\x3c\x9a\xcc\x32\x5c\xdc\xff\x07\x31\xb0\x70\xf9\xc5\xf5\x38\xa9\xd0\x51\x65\xcc\x3d\xfd\xd4\x90\xb5\x94\xeb\xda\xed\x73\x55\x38\x3e\x33\xd2\x24\xf4\xca\xe5\x2e\x61\xcb\xfa\xc5\x8c\x41\xe6\xaa\xc5\xa3\x98\xf1\xe0\x5c\x35\xc6\x37\x92\xf1\x20\x40\x01\xf1\x8d\x49\x32\x9e\x04\x49\x16\x07\x29\xa3\x80\x71\x00\x5f\x48\x88\xd5\x2f\x24\xb0\x58\x19\x75\xd6\xac\x69\xac\x87\x48\xd3\xf4\x68\xa2\x53\x1c\x22\xec\xc3\x1c\x12\xfe\xb3\x58\x9c\x74\x29\x86\x30\x81\x3e\xf7\xab\x68\x1c\xeb\x21\x42\x68\xa9\x80\x9b\x82\x16\xce\x0b\xee\xad\xf0\xa6\x1c\x87\xba\x17\x33\xf4\x5a\x4c\x60\x08\x0c\x28\x68\x80\x54\x26\x34\xa1\xc3\x20\xe3\xf1\x56\xe9\xa8\x42\x93\x84\x3e\xe1\xca\x68\x5c\x49\x03\x6f\x3c\xf2\xcb\x19\xe4\x2c\xd7\x8a\xad\xb3\x62\x00\x10\x4f\x74\x6a\x64\xb8\xa4\xe4\x0f\xfa\xe1\xcb\x38\xd4\x45\x6c\xbb\x0e\x07\x8d\x2e\xeb\x16\x7b\x53\x7b\xb6\xa9\x57\x62\x29\xf1\x7a\x97\x24\x1d\x9b\x4e\x02\x0f\x42\xc5\x03\xe3\xcd\x05\xcc\x50\xc6\xe0\x81\x1e\xdd\x77\x9e\x42\xc0\x6f\x18\xbc\x3e\x8c\x47\xa8\xa8\x6e\x48\x07\x83\x20\xa9\x64\x5d\x06\x3a\x49\x25\x98\xce\xe8\xa0\x92\x8d\x39\xe3\xbe\xda\x09\x7d\x48\x1f\x11\x34\x24\xc6\x9e\x3f\x79\x0c\xbe\xc4\x8d\x97\x4f\x5c\xcb\xdf\x27\x7c\x03\x53\xb1\x81\x73\x9d\x89\xbc\x73\xef\x57\x3a\xa6\x48\xcc\x55\x78\x86\x65\x02\x51\xc1\xf2\xde\xb8\x1f\x6d\x62\xd8\x4e\x53\x72\x2e\x65\x01\x85\xf8\x96\xa1\xb1\xa6\x8a\xae\xac\x7b\xe3\x8c\x6e\xc2\x4f\x5d\xa1\xde\x77\xc5\x0d\x00\xd3\x60\x95\xdc\x14\xf5\xa9\xf7\xae\x85\xa2\x3e\x47\x5a\x62\x1b\xc1\x1e\xa2\x02\xaf\xe6\x63\x2e\xa0\x43\xf4\x17\xda\x79\xde\xc4\x7a\x44\x89\x7e\x13\xcb\xee\x60\xf5\x68\x12\x84\xf2\x56\xcc\xe3\x16\x49\xbd\xf2\x7c\x6c\x07\xf3\xcd\xc1\xf3\x36\x4e\x8d\xa6\xe9\x1f\x25\x33\x8a\x8b\xe9\x12\xdf\xef\x47\x79\x27\x4e\x53\xbc\x4e\x3a\x70\x24\x47\xd7\x3a\xf1\xe6\xde\x98\x5f\xff\x44\xb5\x5d\x0c\x6b\x25\xb8\xb9\x4c\x15\x77\x43\x04\x6c\xd7\xd8\x8e\xd1\x34\xaf\x84\x43\x08\xc9\xf5\x05\x5d\xc5\x21\xff\xbd\x71\x79\xfd\x2a\xfd\xfb\x31\x6d\x35\xde\xd1\xc5\x82\xbe\x53\x56\xab\xb5\xdd\x34\xa9\x79\x55\x0c\x91\xb3\x75\x0f\xe5\x78\x90\xd1\x24\x3f\x9e\x69\xde\x49\x9a\x5b\x9d\x80\xbb\xf2\x16\x35\x47\x31\x18\xbf\x80\x87\x0f\xb5\xb7\xa8\x55\x7e\x37\x79\x5f\x67\x9d\x95\xd8\x15\x50\xf3\xc3\x87\x82\xb0\xdf\x6e\x12\x42\x5b\xd4\x94\x08\xdb\x98\x75\x84\xd5\xd3\x6c\x58\x66\x80\x27\x1b\xed\xa4\x3e\xa6\x2d\x6a\x8a\x91\xd9\x14\xc2\x64\xa7\x1b\x1b\x05\x8d\xea\x82\x40\x12\xad\xa5\xb2\xb5\x8b\xd7\x8e\xf2\x8f\x69\xab\x98\xcb\xbc\xa5\x8f\x0e\xf7\x8a\xf3\x6a\x2c\x1c\x17\xb2\xdc\x1b\x5f\x82\xbf\x3f\xcd\xa2\xbd\x2f\x01\x98\x13\x1b\xb1\x0f\xf1\xba\x1f\x56\x8d\xe3\xfe\x3e\xb8\xe5\x80\x16\xfb\x25\xf0\x92\xd3\x61\x8f\xa7\xab\x56\xb2\xc6\xfc\x9a\x0b\xfb\xee\x8d\x6b\xfa\x8f\x87\x72\x0d\x46\x4c\xd4\xbe\xf7\x1c\x11\xa3\x7c\x6b\xf6\x8f\x2b\xdb\x02\x33\x6b\xee\x0f\xf7\xde\x18\x26\x9b\x56\x3b\xea\xe9\x14\xcf\xbb\xca\x82\x8f\x05\x04\x5f\xc2\xc2\x1d\xff\xe3\xd6\x8f\xf9\x48\x4e\x04\x00\xac\x5a\x5b\x45\xe5\xd8\x67\xea\x0a\x14\x81\x53\x15\x80\x94\xab\x52\xa0\x5e\xf7\x89\x2f\x2d\x47\xb2\xca\xb2\x32\x6c\x3b\xca\xd1\xa5\xed\x39\xb9\x15\xda\x4d\xc3\xf6\x1c\xb0\xb0\xcc\x11\x54\x73\x29\x9a\xbe\x69\xd8\xae\x23\x63\x80\x70\x92\x41\xc0\x06\x8f\xae\xa8\x76\x30\x14\x14\x8a\x35\x66\xf4\x4b\x4b\x0f\xc9\x59\x8f\x42\x44\x04\x22\x3a\x97\x41\x90\x62\x64\x26\x82\xc0\xf1\x48\xc8\x28\xfb\xc2\xa2\x28\x63\xe4\xa0\xe5\x91\x6f\x70\x31\x6f\xf9\x84\x91\x38\x56\x48\x3c\x63\xce\x7a\x70\x00\x74\x56\x4e\x2e\xd6\x20\xdc\xc6\xfa\x79\xff\x8b\x88\xe3\x1c\x09\xe7\xf3\xb2\xc0\xc4\xa5\xf5\xb0\xee\xd2\xe2\xca\x54\x0e\x8f\x78\x4b\x9f\x9d\xc2\xc6\x84\x30\x5a\xce\x98\xa0\x96\x6f\x4c\xcc\x97\x65\xa1\x5d\x06\x63\xf7\xc9\xcb\xdc\x14\xd0\x7e\xea\xe8\x01\xf6\x10\x0e\x01\x98\xf0\x44\xc0\xd4\x4f\xe9\x52\xb8\xea\x89\xd9\x7a\x9b\x95\x5a\xfd\x8d\xaf\x46\x98\x8d\xdc\x35\x2f\x01\xea\x4e\x3a\x49\x21\xcd\x98\xc3\x6e\x6a\x6f\x3e\xc0\xd4\x9c\x56\xae\x37\xed\x19\xa1\x54\xe7\x5b\xdb\xd1\x3e\x1b\x14\xe7\xbd\x74\x17\x61\xcf\x28\x82\xa7\xcf\x5b\xfd\x89\xee\x19\x73\xec\x23\xb3\x70\x8f\x31\xe5\xb4\xee\xbc\x88\xa9\xc4\x41\x91\x95\x14\x40\xde\xa6\x3a\x04\xa3\xce\x7d\x11\x19\x21\xdb\x6b\xdd\xc9\x5a\x34\x64\xb1\x5f\x7a\x3d\xe8\xb1\xed\xe5\x9b\xc6\x93\x27\x86\xd8\xa7\xbd\xde\x5f\x1a\x6f\xd5\x33\x26\xa5\x6f\xdc\x12\xc6\xcf\x4f\x8e\xb2\x8f\x01\x23\x63\x4d\x7b\x8a\x17\x7b\xcf\x98\x80\x55\xe5\x6a\x73\xca\x1e\x2f\x6f\xcc\xd2\x3e\xf7\xf2\x7d\x1e\xf5\xc0\x26\x84\xc3\x4a\x3b\xd1\x29\xb2\x5d\xa1\xf6\xc7\x43\x05\x25\xff\x18\x85\x40\x6d\x26\x5d\xe1\x2e\x58\xaf\x1f\x3b\xaf\x9e\xed\x99\xf1\x28\xcf\xaa\xf7\xaf\x72\xdf\x99\xf1\xfe\x89\xbb\x6c\xb8\x48\x5e\x9f\xee\xd2\x51\x28\x0f\xb7\x44\x98\xc0\xdc\x1b\xa7\x67\xaf\x1d\xbc\x9b\x8e\x52\x51\xfe\xf4\x4c\x74\xee\x66\xb2\x69\x08\x5e\x24\xe9\x32\xc8\x74\xb5\x71\x9c\x41\x39\x93\xbf\xb1\x26\xbf\x9c\x29\x3b\xdf\x94\x29\x52\x33\xb1\xc5\x7a\x5c\xd3\xeb\x90\x0c\x22\xc8\x84\xda\x8f\x22\x3c\xb8\xd1\x7e\xd4\x73\x71\x2f\x35\x9e\xd2\xc2\x3e\xfa\x04\x08\x5f\x78\x04\xc6\x1d\x07\x38\xc4\x42\xd5\x2b\x67\x06\x80\x69\xe2\x9c\x77\x98\x83\x81\x2f\xb7\x6a\x88\x50\x40\xa2\x3e\x28\xd4\x71\x47\xca\x9c\xb9\x2e\xde\x4a\x5c\xa4\xb2\x61\xa1\x24\xb5\x3f\xbb\x0e\x84\xcf\x56\x31\xd4\x4d\x44\x91\x15\x71\xfd\xbc\x65\xa1\x84\xe7\x15\xba\x86\x03\x56\xd2\x73\x6c\x49\xcf\x04\x39\x19\x13\x38\x0e\x1e\xfd\x8d\xde\x87\x12\x7b\x72\xdc\xe9\xa3\xe5\x4a\x27\x43\x32\x30\x3c\xbb\x28\xba\xa9\xaf\x23\x11\xd5\x6b\x60\x78\x64\x64\xf5\xc1\xbb\x12\x5a\x52\xc3\x1b\x0f\x52\x12\x59\x97\x8c\xdb\xed\x2b\x27\x37\xd7\xb5\xd3\xc5\x52\x3e\xa5\xea\x52\x16\x3c\xca\xcb\x12\x0b\xd1\xca\x86\x63\x73\x05\x77\x7a\x8e\x05\x88\x53\xd3\xaa\x63\x76\x58\xb0\x35\x40\x8b\x85\x90\xbf\x2c\x69\x0f\x0c\xc5\x74\xe8\xd2\x6c\x38\x4a\x49\xc1\x4b\x2c\x16\xd0\x3f\x85\xbb\x51\x1d\x3a\x1f\x6d\xf6\xa3\x73\x34\xe6\xb9\x19\x38\x95\x1c\xe9\x7c\x12\xf2\xb1\x31\xe3\xa0\x41\xb6\xf7\x7e\x0c\x71\xf3\xc4\x09\x1d\x3c\x70\x59\x17\xf6\x89\x2b\x3b\x83\x03\xe2\xb2\xe5\x14\x12\x15\x9f\xd1\x73\x51\xc2\xd8\x4e\x9e\x10\xb0\x84\xfb\x51\x11\x2a\xbe\xe2\xf1\x30\x1c\x67\x3d\x4a\x5e\x82\xe1\x24\x13\xd7\x45\xe6\x7a\x47\x2f\x97\x5c\x71\x6a\x4d\x0a\x2b\xee\x77\x57\x65\x43\x9e\x31\xa4\xd1\x28\xce\x66\x7e\x00\xc8\x1b\x8e\x96\xc5\xa2\xca\xe5\x4c\xab\xe6\x82\xa7\x8e\xee\x16\xe1\xfa\x04\x4e\xf4\xf8\x35\x2e\xb8\x71\x25\xd7\x5d\xda\xa2\xf5\x60\xa7\xd9\x68\xfc\x4a\x4d\x5a\x0f\xf8\xf1\x21\xec\x12\xe2\xf0\x69\xad\x63\xde\x4a\xa7\xca\xb8\x9c\xb2\x93\x8c\xe5\x33\x2f\x97\x38\x8c\x07\x83\xf7\xc9\x78\xd8\x19\x4f\xfe\x66\x35\x71\x54\xc4\x98\x12\x94\x67\x5e\xdb\xe1\x38\xcb\xc6\xc3\x7f\x5e\x61\x53\x56\x18\x83\x96\x44\xf6\xb7\x87\xc8\xa7\xd5\x13\xd5\x28\x82\xc7\xcb\xb2\x9f\x94\xd3\xcf\xf2\x7a\x77\x44\x5c\x8b\x92\xcf\x03\xb8\x76\xa9\x92\x4b\x4d\xa3\x55\x72\xdc\x5d\x2c\x2e\x06\xba\x8b\xa7\x5d\x9c\x75\x05\xbc\x3f\x9f\x71\x91\xa8\x27\x29\xcd\xe7\x33\x11\x91\x9f\x07\xe3\xbf\xe9\xd2\xa5\xea\xd2\xe9\xa2\xec\xc4\xc6\x78\x3e\x6b\xe9\xec\xaf\xdd\x0b\x9c\x2a\xa1\xc6\x48\xd3\xa8\x31\x82\xe8\xfc\xc6\xf3\x19\xc2\xf0\xd7\xa4\xc6\x68\x79\x09\x02\xe0\x8b\xb2\xad\xf8\xa7\x82\x9b\x9f\x94\xdc\x83\x7e\x16\xfb\xe6\x93\x10\x8d\xb9\xaa\xe3\xda\x4f\x85\xbc\x8c\x83\x2d\xef\x95\xe5\x91\x17\x88\xa8\x42\xdd\x41\x60\x56\x1b\x18\x14\x70\xbd\xa5\xe5\x92\x97\xd8\x37\xd3\xcc\xb8\xf0\x75\x1f\xbb\x98\x2b\x6a\xa2\x5c\x61\xd0\xcd\x15\x06\x2f\x44\xca\xa5\xa2\xbd\x65\x7d\x9c\xe9\xd4\x38\xfd\x8c\x27\x8c\xe8\x17\xe3\x18\x7a\xeb\xe7\xcd\x85\x14\x41\x58\x32\x0c\xbd\x32\xa0\xab\x62\xad\x92\xa7\x17\xb8\xd5\xf6\xe4\x65\x13\x28\x3a\xb2\xbe\xd9\x07\x53\xa7\xa4\xd2\x70\xc9\xa7\x9b\x93\x28\x79\xec\xd0\x8f\x10\xa1\xf4\xb2\x47\x59\x4f\xce\xd2\x55\x3a\x53\x2c\xce\x17\xbd\x2c\xf6\xa9\x8a\xb2\xb9\xaa\xbc\xb4\xc2\xb7\xae\xf8\x5d\xbd\xd1\xf6\x54\xd4\xc6\x23\xb4\x83\x87\x26\xb4\xcc\x4d\xf1\xf3\xae\x5d\x17\x22\xfa\x84\x92\x64\xac\x4b\xb9\x7f\x7f\x0e\x68\xed\x72\x56\x98\xc1\x1a\x89\xfc\x78\x31\x97\xc1\x76\xae\x67\x10\x6c\xe7\x1a\xa6\x73\xe2\xbd\x46\xf0\x24\x74\x69\xd1\xa9\x7e\xbd\x62\x7a\xca\xa7\x52\x76\xbc\x3f\xc7\xa5\xd1\x42\xe2\x30\x14\xd9\xa4\xe7\x82\xa5\x6c\x6d\x18\xae\x51\xb9\x3c\xce\x58\xce\x13\x1c\xd3\x8c\x56\x40\x89\x79\x83\x06\x18\xcb\x0b\x44\xc5\xfb\x27\xc9\xb8\xb8\x24\x8c\x29\xee\x03\xbe\x73\x49\xaf\x4b\xcd\x71\x2c\x7d\x9d\x74\xbb\x14\xe1\xa1\x5e\xfb\x3a\x9e\x55\x3c\x70\x3e\x0f\xe2\x48\x3f\xa1\x0f\x3a\x92\x06\x41\xe0\xf8\xbc\x56\x77\xeb\xb5\x4a\x42\x41\x10\x0e\x32\x4c\x5a\x61\x3d\xe9\x40\x47\xc6\x09\xbc\xdc\xc5\xc1\x43\x2d\x9f\x4d\xb9\x6d\x2f\xe6\x00\x15\x0d\x65\x9a\xd9\x1a\x08\x88\x34\xfa\x73\xa9\xc1\xf3\x25\xcf\x7f\x96\x0a\x05\xaf\x8b\xb9\xf4\xa2\x35\xd4\x7d\x2c\xe6\xcc\x7a\xc3\xe7\xea\x5b\xb8\xe6\x15\x78\xbd\x55\xac\xae\x6d\x1e\x39\xba\x14\xb5\xfe\x46\xd1\xea\x85\xef\xe7\x3d\x09\xce\xa7\x9f\xe5\x5d\x8d\x4b\xbc\x42\x11\x65\x24\xa3\x77\xb7\x45\x70\xdd\xdc\x01\x72\x5b\x50\x69\xe7\x3f\xe0\x76\xde\x47\x22\xb6\xac\xab\x69\x49\x97\x72\xf3\x89\xc5\x42\x68\x53\xb8\xb6\x9b\x38\x55\x72\xa1\x68\x6b\xdc\xa9\xda\xdf\x9c\x37\xed\xd2\x79\x50\xa1\xb0\x28\x62\x49\xe0\xce\xe1\x9e\xdc\x88\xab\xa0\xf3\x1f\x52\xa1\x3a\x6c\xcb\xa7\xc7\x33\xf9\x24\xc2\xcb\x9f\x6f\x54\xdf\x11\xc6\xd8\x4b\xc4\x00\x79\x5d\xab\x26\x13\x3a\x19\xa7\x9f\x59\x4f\x25\x17\xce\x4b\x72\xb9\xcc\xc5\xc6\xeb\x79\x3e\x49\xf9\x14\xd1\x16\x35\xdd\xd6\xca\xfc\x14\x81\x4f\x6f\x8f\xc9\x26\x74\xd0\xf6\x4a\x52\xfc\xd1\xb8\xe2\x8d\x47\x19\x8d\x47\x41\x52\x79\xa0\x29\x68\xd0\x0d\xe2\xc0\xc7\x15\x5a\xf1\x66\x69\x36\x1e\x56\xe0\x34\xaf\x74\xe9\xc8\x1f\xa8\x92\x7c\x91\x11\xdc\x9a\x05\x14\xa6\xaf\x20\xc3\xa5\x96\x0a\x68\xf7\xa9\x62\x60\xe9\xd1\x38\x6c\xb3\x23\xc8\xe3\x8e\x50\xa6\x6d\xf6\xab\xb3\xf4\xc7\x33\xc4\x93\x97\xc0\x0c\xac\x28\x19\x29\x13\xd1\xf6\x2c\x57\x71\xdb\x93\x11\x6a\xdc\xe5\x4a\x1e\x1b\xa7\x16\x2a\x3c\xee\xbc\xa2\xae\xb6\xa2\x90\xa3\x80\xcf\x65\x24\x91\x59\xd8\x26\x14\xb8\xba\xa3\xbf\x5f\x4b\xed\x88\xcf\xe6\x64\x9c\x66\x15\x69\xd4\xb2\x36\xab\x34\xbf\x67\x33\xe4\x9e\x7f\x3c\x83\x46\x37\x2a\x68\x9d\xf7\xb8\xe7\x6f\x95\x02\xed\xcc\x94\xbb\x85\x30\x94\x5b\xed\x3a\xa5\x84\x2e\x9f\x26\x7a\x67\xcd\xa8\x9f\x03\xd6\xaa\xa2\x19\xe4\xfb\x99\xfe\x7c\x18\xe6\xea\xf3\x6c\x9b\x97\xd5\xe0\x09\x8d\x41\xa4\xe3\x09\x8d\xfa\x47\xe2\xe1\x42\x43\x1d\xe5\x7d\xca\x6f\x91\x65\x28\xa2\xb6\xd0\x57\x61\x87\x29\xef\xc2\x0a\x0c\xfc\x2f\xea\x97\xe5\x73\x76\x3b\xcb\x3d\xa0\x0f\xf3\x5b\xe2\x23\xc6\x47\x29\xb1\x47\x85\x9e\x60\x4f\xa7\xc6\x68\x08\xdc\x25\xcb\x4d\x8d\xa3\x11\x66\x4f\xb6\x3f\xe5\x0e\x81\xa0\x9c\x42\xbd\xdc\xc1\xc1\xc9\x8b\xe7\x9c\x85\x31\x1a\x72\x17\xa2\xcb\x7b\x72\x2b\x50\xce\x41\xc9\x75\xe3\xe7\x9c\xba\x90\xa4\xbc\x90\x14\x8e\x86\x9c\x99\x7e\xf5\x08\x1d\x0d\xed\x8f\x4e\x5d\x8c\x01\xa4\xd6\xab\xbe\xcd\x64\x2f\x7a\x79\x8d\x9a\x26\x5f\x8e\x46\xe8\x35\xf7\x69\x6b\x93\x83\xac\xcf\xab\x32\xec\xc2\x77\x99\x28\x82\x29\x5a\x2c\xe4\x2b\x9b\x2b\x56\xfd\x9a\x5f\x38\xbe\x48\x87\x3e\x55\x8a\x81\xd6\xd1\x3b\x37\x77\xa5\xd0\x53\xea\xb0\x8a\x60\xe0\xb2\x80\x8b\x9b\x4a\x54\x52\xb4\xea\xaf\x6c\xf3\xf5\x17\xcc\x15\x77\x41\xe2\x5a\xdb\xdb\x2e\xbf\xfd\x92\x9f\x5c\x47\x55\x3d\x28\x66\x14\x73\x09\xbd\x67\xd5\xeb\x6a\x89\xa3\x11\x94\x28\xb8\xc7\x1c\x06\xee\x67\x02\x09\x07\xb1\x3e\xef\x52\xe5\x92\x17\xd4\x8e\x27\x34\x02\xc2\x63\x28\xcc\x86\x18\xbd\xc0\xf5\x86\x2a\x43\x3a\x49\x2b\x07\x9f\x4f\x25\x3a\x18\xb4\x01\xfe\xf9\x57\xfb\x70\xea\x18\x1f\x82\xb1\x37\xce\xcd\x98\x3f\x78\xb9\x39\xcb\x07\xcf\xf6\x47\xfa\x0b\xf5\xfd\x24\x48\x53\xf3\x72\x89\x1c\x46\x30\x73\xd4\x63\xda\x8e\x34\xae\xd9\x50\xd7\x0d\x7c\x31\xbe\xb5\xaf\x2f\x7f\x5c\xb7\x6f\x6e\xcf\x3b\x37\xa2\xd2\xa7\x11\xb7\x95\x17\x71\x70\x9e\xe6\xa5\xb0\x38\x67\xc7\xf0\x7a\x3b\x5b\x46\xb1\x7e\x3f\x53\xd0\xd2\x97\x32\xef\xd2\xcf\xd8\x21\x29\xa1\x69\x70\x2e\x03\xdd\x5c\xa5\x12\x61\x1d\xdd\xe4\x17\xa0\xc3\xdb\x52\x23\xc3\x14\x82\xa2\x88\x7a\x18\x80\x5f\x4f\xf4\x2f\x65\xb4\x26\x9a\x61\x95\x00\x2c\x7c\xe1\xd8\x2c\x1e\xc5\x69\x77\xa3\x1c\xcd\x1f\xe5\x04\xed\xf0\xd6\x70\x43\xf0\x66\x2a\x5f\xd3\x20\x03\x61\x1a\xb7\x8b\xcc\x0f\xd3\xa3\x9b\xb5\x40\xec\xd0\x1f\x79\x21\x30\x38\xb7\x82\x7d\xbf\x10\xdb\x84\xac\x15\x99\x2d\x70\x50\x51\x13\x6f\x32\x44\x08\xac\x37\x2d\x21\xab\x19\xde\x82\x0b\xba\x50\xd1\xb5\xd0\x43\x12\xe6\x36\x91\xc2\xff\x62\x88\x96\x9e\xfd\xd1\xd9\x97\x93\x23\xe8\x8b\xc1\x79\x1d\x92\xf3\xa0\x64\x83\xf3\x3a\x78\xdc\x11\xb1\x67\xd2\xdc\xf3\xd7\xe0\xfc\x9d\xd2\x7b\x5e\xdc\xfe\x04\xae\xb4\x55\x2c\xf9\x35\xc7\x92\xfd\x2c\x47\x04\x83\xb6\x20\xf0\x61\x82\xcb\x0e\x27\xf3\xdc\xe0\xd9\x9b\xd1\x98\x3c\x17\x0f\xee\xb4\x89\x26\xe7\xe3\x14\x15\x4b\x6e\x0f\xa2\x5f\x49\xf0\x11\xf6\xcf\xbe\xaf\xfb\xf9\x8e\x30\x22\x0e\xb6\xb9\x65\xe1\x3c\xa4\x7a\x89\x41\xe0\x42\x77\x91\x5d\xd2\x0c\x83\x36\xb9\x9f\x19\x77\xae\x2e\xce\x23\x3b\x95\xa6\x08\x05\x0b\x61\x5d\x4f\xf4\xaf\xab\xa0\xf5\x4d\x2e\x62\x09\x85\x51\x3e\x65\x52\x9d\x15\xe6\x88\x91\x73\x42\xc7\x0a\x7a\x58\x9a\x9c\x6f\x3a\x65\x75\x7c\xd9\x40\x20\xf9\xec\xd9\x2a\xc2\xff\x7f\xf0\x5a\x54\x40\xaf\x74\xa4\xf8\xc1\xb3\x3d\x47\x06\xc5\x7b\x9a\x4b\x90\xd5\xc5\x3e\x64\xc8\x08\xfc\x8a\x60\x99\x81\x03\xb1\xed\xa0\x22\x89\x41\x97\x87\xf8\xea\xac\x38\x7c\xbb\xf6\xa9\x0e\xf2\x39\xe8\xfe\xb5\xbf\xaa\x54\xd0\xa8\x8a\xf9\x3c\x3b\x36\x7c\x4f\x47\x8b\x45\x9e\xf2\x34\x82\x14\xc9\x26\x0b\x4d\x55\x91\xda\x9a\x4b\xd1\xd9\x08\xfc\x3c\x82\xbb\x43\x59\xd1\xc1\x18\xa4\xb3\x7c\x2f\xc6\xa1\xee\x2a\x13\x50\x12\x78\x8b\xbe\xbb\xb9\x00\xf7\x83\x67\xbb\x8e\x75\x37\x93\xc3\x97\xb0\xd1\xd1\x29\xf6\xf2\x0d\x83\x3d\x11\x34\x41\x06\x20\x9a\x83\x07\x3c\x57\xea\xd4\x92\xf2\x08\x34\x4d\xf4\x5d\x8c\xb1\xa5\x2b\x0d\xe0\xb5\xae\xdc\xc7\xba\xb7\xe9\x2c\xa4\xc6\xd1\xcd\x52\xdc\x15\x40\x87\x40\x1e\x01\xac\x93\x99\xcf\x05\xf8\xc0\x43\xf8\xaa\x10\x90\xc8\x48\x43\x3c\x8e\x10\xf7\x94\x69\x96\x27\x53\xd3\x7e\x9a\x7f\xa9\x2a\x1d\x5d\x95\x94\x8e\x46\xb9\x7c\xb2\xdb\x07\xf7\x63\xf6\x74\xea\xa0\xc2\x13\xee\x74\xea\x58\xae\xe1\x8e\x67\x23\x3f\x5d\x39\x70\xec\xb9\x50\xdd\x54\x92\x86\x53\x47\xf7\x8d\xc1\xd8\x18\xd0\x0c\xf3\x87\x51\x84\xf0\xc6\x5c\xdd\x58\xe4\x62\x0f\xa3\x08\xa1\x25\x55\xf7\x70\xd9\x45\xf4\xf5\xaa\xe8\x07\x76\x06\x0e\x08\x95\x13\xaf\x8a\x49\xbf\xe9\x41\x79\x4b\x1a\x47\x37\x8b\x85\xb2\x73\x3c\xb6\x3d\xa9\xf1\x34\x82\x75\x07\xcd\x3c\x01\x03\x3e\x5a\x0a\x58\x1f\x74\xd6\x30\x93\xd4\x9f\xe2\x0a\x1e\xaf\x9f\x97\x97\x77\xed\xeb\x1f\x57\xb7\xed\xeb\xaf\x3f\xce\x4f\x2f\x4e\x3b\xc8\x27\xbf\xed\x36\x14\xbf\xfa\x3f\x2b\x7b\x26\x6f\xf0\x38\xf8\xbb\xca\x59\xed\xca\xa3\xda\x2b\x8e\xf6\xc0\x21\xae\x75\xad\x6a\xc7\x70\x20\x56\x92\x8a\x0a\x00\xe2\xf2\x3a\x90\x22\x56\xb2\xee\x33\xa9\x2c\x7e\xed\x4b\x65\x71\x7f\x4d\xfa\xf3\x8d\xe1\xfe\x62\x59\xb6\x72\x0f\xcc\xba\x50\x20\x01\x01\xc9\x89\x7c\xb8\x40\xaa\x1e\x9b\xb8\x70\xf5\x73\x21\x8b\xe0\xb5\xbf\x09\xc2\xb7\xd7\x7f\xf5\x92\xec\x33\x63\xf2\x5a\xbb\x26\xe8\x08\x6d\xd1\xb5\x95\xc9\xb7\xd8\x89\x8e\xde\xb9\x9a\xe6\x11\x42\xe1\xda\x54\x15\x45\xf4\x94\x48\xeb\x85\xe3\xdb\x55\xef\x0a\xd4\xd8\x02\xd1\x32\x86\x90\xf1\x45\xb8\x5a\xf1\xd0\x5c\xde\x1b\xf1\xc8\x0f\x1e\x2f\xc3\x55\xdf\xe9\x65\xe5\x54\x50\x58\xf5\x64\x9d\xc7\xa0\x3b\x97\x13\xb1\x9e\x55\x68\xfe\xe4\x1d\xa4\xf3\xdc\x97\xfa\xba\xb2\x5e\xbd\x9e\xc7\x87\x97\x57\x37\xc1\x3b\xae\x16\xcb\x15\x0d\x03\x54\x25\x9e\xed\x3b\x28\xef\x68\x4e\x04\x2b\xf1\x66\xe6\x6b\x33\x26\x46\xdb\x41\x2d\x6f\x0e\x4f\x1b\xd6\xa0\xb1\x4f\xe8\x12\xd4\xa8\xf3\x9a\xbc\x0d\x9d\xed\x1a\xc3\x78\xc4\x96\x5d\x47\x78\xb7\x91\x87\xe1\x57\x29\x1f\xca\x2f\x98\x8a\x3b\x70\x20\x67\xaa\x1e\x23\x7a\xd6\x3b\x7e\x6f\x5c\x4d\x36\x5a\x05\xdc\x0c\x01\xf5\x7c\x1e\xea\xdb\x7f\x34\xf0\x1f\x0d\x04\xa1\x99\xab\x67\x3d\x71\x59\x79\xfd\xa7\xc5\x9a\xff\x6e\xe0\xe6\xbf\x57\x0a\x16\xdc\xf3\xaa\x6e\x2f\x35\xae\x3a\x7a\x83\x61\xfb\xd5\x41\xfa\xa4\x81\xd7\x6e\xe6\xf2\x81\x36\x91\x15\x72\x7d\x5a\x17\x87\x68\xb1\xf0\xeb\x75\x31\x3c\xe3\xf7\x7d\x7f\xc7\x53\x7d\xe9\xcf\x79\x8c\x50\x7f\x8e\xbf\xcd\x90\xe5\xcf\x19\x16\xfa\xec\x96\x09\x29\x19\x59\x30\xf2\xf5\x92\xd1\xc2\xda\xd4\x89\xf2\x51\x99\x10\x83\x0d\x6b\xc9\x21\x9d\x70\x93\x8e\x5d\x25\xc2\xc2\x6d\x44\x55\x5e\xa7\xda\xc0\x3e\x98\xa3\xc3\x00\xdd\xd2\x00\x8d\x61\xa2\x07\xc8\x7a\x96\x1a\x23\x2d\x3d\x24\xc3\x14\x7b\xa4\xda\x44\x66\x48\xfa\x29\xe2\x3e\x4e\x42\xd0\x25\xf5\x21\x68\x06\x19\xa6\xaf\x20\x84\x70\x9c\x0c\x69\x66\x0a\x4d\x4f\xa1\x94\x21\xe5\x21\xdc\xee\x92\xa1\x0b\x4a\x6e\xc1\x4f\x8e\xd8\x3f\x2f\xd3\xc8\xa4\xc6\x34\xc2\xf3\x07\xb3\x03\x31\x8d\x82\x0d\xf0\xfb\x92\x0d\x4c\x6a\x3c\x7b\x58\xe6\x1e\xfc\x2c\x73\xef\xa2\x94\x79\xb9\x44\xf0\xbf\x72\x86\xde\xae\x69\x7e\x0f\x53\xdc\x4f\x1d\xec\x91\x97\x3b\x60\xa9\xa6\x91\xf9\xb2\x5c\xb2\xb9\x03\xf7\xc6\xe0\xb4\xaf\x61\x85\x5c\x7f\x5b\x71\x63\x0c\x4a\x38\x7d\x72\xc5\xc0\x23\x42\x78\x90\xbb\x99\xef\x6b\x9a\x3e\x20\x2f\xcf\x9e\x19\xe2\xe7\x07\x33\xc2\x6a\xbd\x9c\x25\x86\x4c\xfd\xfd\x00\xbd\x04\xdb\xa4\x6f\xc9\x70\xe6\xd1\x3e\x09\x20\x8a\xb9\xcf\x25\x0b\x56\x40\xfa\x56\x9f\xf8\xb6\x0f\x2c\xae\x70\x3c\x33\x40\x56\xdf\xb8\x0b\xc4\x1d\xad\x30\x25\x62\x67\x67\x44\x08\x71\xed\xc0\x69\xe9\xa2\x3c\x56\xca\x62\x51\x16\x17\x65\x91\x19\xd4\x9b\xc2\xfb\xb4\x28\x5b\x6f\x3a\x2d\x5d\x2d\x15\xd4\xeb\x1b\x4b\x96\x32\x45\x8c\xc8\xeb\x1b\xd3\x68\xb1\xd0\xd9\x8f\x1d\x81\xe6\x13\x16\xcf\x1c\x92\x0a\x6d\x10\x35\xc2\x82\xd8\x38\x01\xdf\x38\xc1\xa6\x8d\xf3\x2a\xe0\xcb\x9d\x93\x07\x59\x3b\xd6\x1b\xdc\x42\xbf\x4a\x0e\x23\x4d\xf3\xaa\xe4\x28\xe2\x18\xb6\x89\xaa\xa4\x53\x14\x50\xf0\x3d\xf6\x49\xb3\xb8\x62\x17\xaa\xf9\xc6\xb1\xf0\x8b\x1a\x10\xd2\x41\xec\x54\x90\x04\x40\x40\x48\xbb\xcb\x55\xbd\xeb\x75\xbc\xbb\xef\x15\xa8\x0f\xb2\x6c\xd8\xcd\x7c\x50\xbd\x35\xdb\xc1\x6a\x71\x3c\xca\xb3\xa5\x21\x86\x59\x6d\x62\x4f\x50\xdd\x60\xa1\x45\x71\xbb\xcb\xc8\x6a\x2a\xec\x13\xa8\xe1\x4f\xc4\x58\x7f\x6b\xec\xbb\xc8\x25\x55\xde\x45\xe5\x70\xec\x52\xbb\x3b\x75\x70\x48\xba\xd4\xb8\x38\xfd\xf4\xe3\xee\xe0\xfc\xb6\x8d\x23\xd2\xb4\xa2\x7d\x17\xa0\x6c\x0e\xc1\x74\xb8\x7f\x08\xc0\x79\xbe\x1d\xb1\xe5\x6c\xa0\x6d\xf9\xca\x5e\xe0\x30\xd8\xe7\x00\xdb\xea\x9b\x01\x0e\x49\xff\x5d\xd8\xea\x9b\xa1\xe5\x92\x06\x50\x6d\xbf\x35\xf6\xc3\x9d\xa0\x55\x6d\x98\xf9\xc8\x2b\x9e\xa6\xb9\xad\x3d\xd3\x5b\x2c\xdc\xd6\xae\xa9\x1e\x96\xe1\x3c\x67\x2c\x0f\x5c\x4a\xaa\x55\x1d\xa4\xed\xc8\xb8\x0e\xe9\xf2\xab\x1e\x72\x58\x08\xff\x0c\x16\x1a\x60\xb2\x21\xe0\xa1\xf9\xae\x58\x89\x82\x29\xdf\x62\x64\x43\x03\x43\xd8\x3b\xb7\x5e\xc7\xb2\x4d\x1e\x56\xc2\x72\xf7\x3d\xc1\x69\x6f\x71\xfa\xa2\xdd\x45\x16\x72\xeb\x75\x45\xe5\x9e\x07\xe5\xdb\xf7\x2c\x15\x38\xdc\x02\x38\xc0\x7d\x4e\xc9\xb3\xcd\x81\x4b\x35\xad\x80\x93\xaa\xbf\x02\x22\xbc\xe4\x43\x24\xbe\x2e\x16\xbe\xb1\xf5\x50\x74\x9e\xbd\xc9\x90\x38\x79\xa2\x9b\x9f\x3d\x15\x7e\xf2\x12\x35\x26\x5f\x54\x4c\xe8\xec\x0a\xec\xb6\x8d\x8e\xbf\x58\x30\x40\x9f\x2b\x46\x3e\xcb\xaf\x7a\x34\xc7\xe1\x1c\x59\xd1\xeb\x73\xcb\xfa\x14\xcd\x8d\xc0\xf8\xec\x2a\x45\xcb\x7b\x4d\xd9\x87\xa2\x51\x54\xec\xa8\x66\xae\x86\x2e\x3f\xc3\xe4\x7a\xb0\x0a\x55\x77\x2e\x49\x5b\x4f\xa9\xb4\xd8\x2c\xd1\xa6\xcd\xa2\x9e\xe5\x5c\xe5\x47\x6e\x04\x76\x7e\x57\x25\x86\x76\x01\x3d\x17\x4d\x86\x7c\xe1\xfd\x7a\x1d\x17\xcd\x86\xdc\xff\x07\x04\xd5\x5c\x27\x53\x9b\x84\x78\xe0\x08\x5a\x05\x9f\x76\x17\xb5\x9a\xe6\xee\xbe\x0c\x23\x3a\xbb\x6a\xed\x99\xcd\x2a\xf1\x45\xb6\xd9\x15\xfb\xcc\x08\xdc\x7c\x45\xba\x02\xaf\x75\x39\x2c\x77\xff\x1a\x5e\x13\xfd\xd9\x7b\xe7\x2e\x16\xbf\xed\xbb\x8b\x45\x75\xa5\x1b\xa5\x94\x26\xee\x94\x13\x76\x21\x61\x6f\xdf\xcd\x23\x7b\xb1\xd4\x3d\x5e\xf0\xed\x4a\xf2\x5b\x46\x36\x56\x9b\x26\x9b\xf4\xee\x2b\x18\x4a\x41\x50\x22\x92\x66\x69\x49\xa1\x66\xf4\x02\xde\x77\xca\x18\xf5\xaf\x53\x93\x7b\xc8\x72\xed\xd0\x59\x2c\xbc\x7a\x1d\x9e\x48\xb5\xb1\x74\x49\xb3\xf1\xce\xe3\x5b\x80\x21\x43\x8b\x12\x86\x4a\x56\x5a\x66\x93\x2e\x22\x47\x91\xc6\x26\x91\x6d\x2c\x16\x21\xe6\x8b\x10\xff\x97\x54\x59\xfc\xd7\xa9\xb2\x2a\x98\x05\xee\xb1\x9f\x9f\x31\x51\x39\xe5\x54\x5c\x68\xee\x56\xc6\x49\x65\x4f\x10\x51\xa9\xbc\x92\xf3\x48\x13\xfb\x64\xd7\xda\x25\xdc\xde\xd0\xdb\xde\xc6\xfe\xf6\xb6\xe0\x02\xcf\x5c\x09\x1f\xca\xbb\xb7\xf2\xee\xe3\x4e\x4e\x79\x8d\x67\xa6\x87\xfd\x21\x35\x1b\xf8\xe9\xc8\xf4\x97\x72\x6c\x67\xee\xc6\x5b\x76\x15\x43\x2a\xd6\x4d\x9f\x92\xba\x5b\xf7\x93\xba\x57\x0f\x92\x92\xf3\xad\x5e\x81\x8e\x92\x3c\xe6\xd2\x68\x4b\x48\x80\x97\x67\x13\xbd\x37\x5f\x91\xc7\x95\xf4\x07\x46\xea\x65\x58\x5f\x2c\x62\x9f\x2f\x62\xff\xbf\x5c\xc4\xfe\xeb\x8b\xb8\x66\x0d\x78\xa2\xd8\x02\x2a\x3c\x1c\x50\xcf\x39\x79\x40\x2e\xb9\x8d\x20\x1b\x5c\x6f\x0e\x37\xdb\xd2\x01\x4a\xf3\x1d\x84\xe7\xc8\x01\xe0\x20\xab\x0c\x02\x9a\x66\x95\x26\x87\x01\x95\x52\xf6\xc6\xc3\xa0\xe2\x06\xe1\x38\x09\x2a\x74\xf4\x54\x49\xc6\x83\x40\x64\x60\x40\x70\x19\xeb\x2e\x32\x46\x5b\x20\x02\xe4\x6a\xc0\x1c\xce\xca\x2d\xfc\x45\x10\x53\x5a\x07\x10\xf3\x88\x6b\x37\x1c\x30\xf5\x6f\x3a\x2a\x0c\xd9\x13\xf0\x76\x33\xee\x52\x15\x94\x5c\x91\x5c\x00\xd4\xe5\x37\xd3\x63\xa0\xe4\x32\x5a\xbb\xff\x33\x58\xba\x8b\x75\x8f\xfb\x73\xca\x50\x01\x00\xde\x4a\x78\x37\xba\x22\xc4\xfd\x53\x90\x1b\x08\x28\x19\x70\x28\x19\xfc\x65\x3a\xf2\x37\x86\x6b\x7f\x07\x5c\xab\xaf\x20\x5b\x95\x34\x68\xc2\x51\x52\x46\xb5\xea\xfb\xde\xca\x3b\xc3\xae\x68\xb1\xf8\x1d\xb6\xab\xb2\x81\x7e\x03\x94\xb9\x46\x87\xba\x6b\x18\x53\x35\xe7\x92\x4e\x63\x19\xc6\xf4\x70\x93\xfb\xb7\x84\xe7\x5d\x84\x43\xf9\xbc\x87\xc0\xaf\x34\x3c\xbf\x85\xb1\xf9\x55\x51\xad\xd0\x8b\x45\x8b\x45\x04\x49\xf4\x31\x4f\xda\xc0\xb9\x8b\xd9\xfb\x53\x91\xce\x5e\xe9\xc4\x1b\xb2\x15\x28\xc8\x0d\x46\x6c\x0c\x39\xb1\x31\xdc\x54\x9d\x72\xa5\x9b\x13\x69\x39\x3d\xe7\x2e\x16\xde\xf6\xf6\x86\xe3\x79\xf7\x9d\xb7\x76\xd4\x8e\xe6\x7a\x1e\x72\x5d\x6a\x2a\x8d\x38\x18\x8c\x36\x81\x81\xf4\xf7\x70\xd7\x53\xf4\x91\x47\x9b\xd0\x02\x25\x4a\x1e\x4b\x51\x11\x90\x67\x8d\x25\xe1\x52\x34\x5f\x02\xc9\xbb\xb2\x9b\x53\x81\x1f\x40\xea\x20\x9e\x61\x25\xc5\x33\xac\xa4\x78\xde\x93\x41\x2f\x7a\x73\xfd\x2d\x63\xe2\xc4\xf3\x6f\xc0\x65\xf2\xe7\xdf\x95\x8b\xe8\x33\x57\x77\xf3\xbd\x0a\x80\x2b\xd2\xfc\x0d\x69\x81\x48\x3b\x8c\x8a\xb4\x70\x43\x5a\x94\x6f\xf2\x3c\xa9\xbf\x9e\x34\x28\x5a\x68\xbd\x7c\x49\xa8\xe9\xe1\xf1\xcc\xf4\xf1\xd6\x07\x33\xc0\xdf\x3e\x98\x21\xbe\x4f\xa8\x19\xe1\xaf\x09\x35\xfb\xf8\x36\xa1\xe6\x60\xc9\x35\x5c\xde\x8c\x5e\x43\x13\x1b\x31\x01\xe3\x2d\xe4\x34\x13\x15\x0d\xe0\x6a\x53\x95\xfe\x8c\x05\x22\x18\x73\x08\x18\xff\x09\x22\xb0\x5c\x95\x85\x70\x17\x8b\x5d\xce\x4d\x35\x0b\x3f\x47\x10\x8f\x7a\x57\x9c\xbb\xa4\xc4\x30\x00\x9a\x40\x96\x4b\x20\xbd\xa0\x31\xdd\xed\x26\x08\x4e\xaa\x2e\x82\xc0\xb6\x65\xaa\xb5\x41\x88\xbb\x58\x34\xab\xc4\x53\x5a\x5a\x91\xdb\x14\x5a\xdf\xe5\x03\x98\x9d\xe2\xe8\x85\xc7\x4c\x00\x2f\xb1\x2e\xf1\x94\x18\x5a\xe3\xbf\xb6\x73\x9b\xfb\xd0\x93\xd6\xae\x59\xde\xc3\x13\x31\x79\x13\x3e\x79\xac\x3f\xf7\x3d\x4a\x5e\x6e\x9f\xa8\xf9\x29\xc5\xc9\x13\x35\xdb\x29\xee\xb4\xbf\x74\xcc\xdb\xdc\xdb\xb0\x35\xd9\x34\xc7\x2b\x68\x36\x9f\xdb\x15\x9e\x7d\x65\x2e\x5f\x99\x67\x86\x7d\xd5\x38\x66\x93\xbf\x38\x4c\x36\xb8\x37\x93\xf5\xad\xad\x68\x75\xb2\xa5\x48\x23\xa1\x69\xd7\x60\x48\x91\x6c\x37\x71\xc4\xfe\xf4\xd9\x9f\x01\xd9\x06\x7e\x12\x04\xbc\xb6\x8f\xfd\x7a\xd3\xc1\x76\x07\x77\x1c\xf0\x8a\x7d\x90\x5a\x7d\xe2\x5b\x03\xe2\xd7\x9b\x96\x5f\x27\xbb\x3c\x80\x32\x21\x9f\x14\x61\x99\x1f\xa7\x93\x01\x7d\xba\x18\xfb\x85\xab\xa1\x34\xc8\x2a\xd9\xb8\x72\x41\x93\x7e\x90\xa4\x95\x87\x6e\x30\xaa\xcc\x40\x73\x60\x40\xb3\x9d\xc1\x78\x14\x55\xc4\xad\x7f\x00\x47\x34\xab\x13\x7c\x29\xba\xa4\x9d\x16\xae\x54\x45\xb7\x1c\x6c\xb7\xbb\xac\x47\x2b\x61\xd8\xd3\xc8\x0c\xc8\x45\x6a\xb9\xe4\x53\x6a\x85\xc4\xe7\x40\x63\xc1\xb7\x4f\x29\xff\xb6\x92\xdc\x4e\x79\x2c\xf6\x5b\xf6\xd9\x4d\xad\x28\xff\x2c\x63\xb1\x2b\xce\xf1\xb9\x63\x01\x65\x7c\xd2\x33\xaa\x5f\x27\xcd\x15\x67\x02\x32\xb7\x18\x16\xb8\xd3\x97\xf4\xed\x48\x04\x76\x2b\x8d\x46\xd3\xbe\xa4\x55\x42\x8d\xa8\xa7\xfb\x78\xce\x50\x98\x3e\x22\x6c\x4b\x40\x91\x09\xb7\x95\x4b\x57\x4b\x76\xc0\x04\x6f\x42\xde\x30\xb6\x6f\x35\x39\x85\xf2\xbc\x82\xd9\x6b\x6d\x92\x72\x9b\x33\xde\x66\x50\x25\x17\xa9\xa6\xf1\x23\x60\xc2\x1f\x08\x49\xa1\xd2\x09\xc0\x38\x00\x7b\x95\xf8\x8a\xf9\x3b\x50\x60\x42\x3d\x2f\xad\x0c\x19\x71\x27\xc8\x2e\xae\x2c\x9a\xbb\x52\xd0\xdb\xf0\xc4\xd6\xbf\x56\xf7\xeb\x35\x99\x0d\xe5\x9e\xa8\x5e\x3e\x7e\x33\x03\xec\xff\x66\xba\xf8\xcb\x89\x19\xe2\xaf\x27\x66\x84\xdd\x23\xb3\x8f\xbd\x23\x73\x80\x27\xa7\xe6\x08\x4f\x66\xe6\x04\x87\x47\x66\x8a\xdb\x3f\xcc\xd9\x52\x10\xc2\xf3\xc2\xe2\x47\xd3\x3c\xe3\xc2\xd7\xaf\x23\x5a\x9f\x73\x87\x8d\xaa\x76\xc0\x54\x6c\xff\x29\xdf\xfe\xd3\xff\x92\xd4\x9e\xbe\x4e\x6a\x33\xc2\xab\xca\xb1\xc3\xdf\x24\x5e\x7f\x53\xe9\x56\x95\xfb\xe9\xa8\xaf\xcd\xf2\xeb\x6e\xf9\x75\xaf\xfc\xfa\x16\x30\x8f\x98\xe5\xab\x1e\xe3\x8a\xae\x7b\xd4\x6c\xe2\xcf\x3d\x6a\xee\xe2\x4f\x3d\x6a\xee\xe1\xcb\x1e\x35\xdf\x2e\xe5\xa0\xfe\x97\x18\xa5\x04\x18\xa5\x55\x19\x4d\xc2\xc9\xa6\xe4\xe7\x32\x9a\xe4\xff\x9d\x8c\x26\xf9\xfb\x32\x9a\xc6\x4f\x44\x34\x2d\xbf\x5e\x37\xd5\x24\x20\x43\x82\x72\x54\x46\x89\xd2\x1b\x9c\x02\x7c\xe7\x6b\x5a\x83\x90\xa0\xb5\xb7\x42\x0d\xa6\x02\x86\x53\x0e\xc3\xe9\xeb\x14\x60\xe5\x4b\x41\xdc\x2d\x16\x5f\x55\x6a\x30\x7d\x9d\x62\x55\x0a\x59\x94\x28\xa5\x72\xef\x41\x8b\x05\x6d\xd1\x56\x73\xe5\x68\xfd\x22\xa9\xc1\x2d\xf0\xac\xc5\x97\xc1\x2d\xa4\xd9\xde\x62\xb1\xa7\x08\x93\xa5\xd7\x7b\x7e\xc5\x07\xc4\xb1\x4f\x7c\x46\x76\x41\x02\xc0\xf7\x1e\x01\x6f\xf9\x6a\xfa\x2e\x27\x48\xe0\xa2\xda\x47\x4a\xe9\x52\xc9\x96\xee\x91\x2f\x3a\x35\xae\x26\x14\x83\x1d\x13\x7b\xb9\xe6\x2f\x1e\x81\xab\xc4\x06\x06\xa3\xf4\x39\x94\xf0\x79\xe4\xf2\x66\x71\x02\x17\x0a\x45\xaf\x0f\x4b\x64\x6e\xb2\xa1\xed\xee\x7b\x8b\x45\x35\xef\x0f\x08\xa4\x76\xa1\xfb\xd5\xbc\x5f\x8c\x84\x14\xf2\xa8\xbc\xfa\x4c\xac\x66\xc6\x57\x33\xfb\xcb\x6c\x1d\x88\xd0\xf8\x85\x00\xb8\xe6\xdb\x70\x55\xd0\x94\x57\x05\x1d\xb8\x29\x10\x17\x06\xed\xee\x62\xe1\x11\xd2\xee\x6a\x5a\xf5\x1b\xdc\x15\x69\x5a\x75\xab\xc7\xbd\x13\x7a\x84\x65\xae\xc2\xfd\x69\x73\xd3\x65\x2b\xbf\x8b\x5c\x61\xf0\x3c\xb2\xbb\xc6\xca\xc1\xa5\xb2\xe0\xd1\x3a\x9a\xe6\x97\x3a\xa9\xe0\xd0\xec\xaf\x51\x3a\xab\x8c\x6a\x95\xf6\x29\xa7\x80\xca\x50\xc8\x93\xf3\xe3\xe0\xd5\x71\x34\xff\x68\x34\xf6\xa9\xa6\xed\x36\x1b\x8d\x77\x74\xa9\x3a\xcf\xfc\xd6\xfb\x6b\x55\xfc\xab\x0a\xfe\x6a\xb9\x67\x47\x11\x9a\x61\x8f\xf1\xc4\x3c\xa4\xd7\x5b\x54\x25\x41\xa4\x7c\xfd\x1d\xff\x0b\x49\x00\x50\xb4\x47\xb6\xfe\x62\x73\xbf\xff\x79\x73\x97\xa1\xf8\xca\x12\x7e\x53\x1a\x2b\xe6\x67\x26\xe0\x6d\xc6\xe1\x6d\xf6\x77\xae\xa3\x40\xf2\xfa\x27\xf4\x6d\x99\xa8\x65\xc7\xce\xde\x46\x82\x57\xec\xe3\xe2\xd8\xe6\x97\xda\x4b\xd1\xa3\xbf\xc9\x9a\xcf\xc5\xa8\xe6\x82\xac\xff\xcb\xa3\xfa\x73\xaa\xdd\xdd\x6e\x16\x62\xa0\xca\x26\x36\x48\x34\xf7\x53\xe1\x32\x6b\x8a\xf0\xf3\x02\x51\xa2\xf0\x5e\xae\xb0\x12\x21\xeb\x82\xf0\xdd\xdf\x38\x13\x83\x54\xed\x0d\x57\xe8\x6f\x5c\x08\xfd\x0d\xb7\x5e\x48\x4d\x2c\x97\x54\xf5\x3f\xfe\xb5\xef\x6a\x5a\xb3\x01\xf8\xc1\x10\x6f\x06\x7b\x45\x4b\x4a\x5c\xc6\x11\xfd\x54\xa4\xfc\x20\xa6\xf2\x81\x4f\xe5\xc3\x5f\x9e\xca\x46\xa1\x41\x52\xba\x7f\x5c\xbf\x67\x60\xec\x9f\xfb\xce\x53\x4f\xe8\x6a\xf9\x88\x46\x2f\x7e\xc1\x00\x4a\x13\x6c\x35\xf8\x81\xe8\xe4\x23\xef\xe4\xe3\x7f\x49\xc7\xbd\x79\xdc\x44\xc8\x71\xb7\x57\xf9\xcd\x00\x78\xa9\x06\x8b\xd2\xa6\xb3\x7a\xba\xed\x55\x09\xf1\xd6\xe9\xbc\x41\x3c\xea\x77\x5e\x21\xf3\xf6\x36\x91\x79\x87\x29\x76\xcb\x94\x1e\xa4\x34\xd7\x52\x80\xde\x53\x2f\x07\xab\x70\xd6\xec\x6e\xee\xc7\x68\xec\x07\xaf\xf5\xa3\x59\x19\x27\x95\xdd\x4d\x9d\xf9\xd4\xa5\x58\xe1\x5a\xf3\xfd\x9b\x7f\xe2\xfb\xbb\xb8\x48\x04\x55\x0c\x1b\x02\x75\xe3\x88\xb8\x00\xa3\xe1\x7e\x64\xd5\xeb\xc2\x8f\x44\x9f\xb8\x0c\x56\x43\xdc\x40\x78\x20\x9f\x9b\x08\x8f\xe4\xf3\x2e\xb2\xe0\xfe\xfd\x85\x5b\x9e\x9a\x7d\x9c\x81\x97\x41\x73\x80\xe7\x74\x30\x0b\xcc\x11\xc3\x9c\x22\xf2\x48\xc4\xf7\x53\xde\x04\x5c\xe2\xbf\x8c\xe8\x30\x30\x69\xde\xcc\xc8\x35\xa1\xef\x2d\x2a\x5b\x33\x2f\x97\x39\x2d\xcc\x16\x28\x35\x03\xfc\x86\xcd\x50\x6a\xfa\xcb\x65\x4e\x7e\xb2\x25\x2d\x93\xef\x9d\x48\x91\x11\x0f\x52\xbc\x7a\x23\x01\x49\xcd\xf5\x24\x58\x2b\x57\x6a\x87\x83\x76\x36\x04\xe9\x09\xc4\x38\x42\x31\x8e\x60\x3f\xb4\xea\xf5\x00\x45\x84\xda\x0f\x53\x47\x0f\x58\xff\xfb\xf9\x4b\x13\xb1\x49\xed\x73\x85\xa8\x88\x7d\x91\x2f\x7d\x36\x9b\xe2\xb6\x69\x57\x44\xcd\x91\x33\x18\xc9\x19\xec\x8b\x19\x1c\xac\x8e\xde\xc7\x7c\xf0\x9e\xca\x28\xb1\xaa\x0b\xb2\x9f\x72\xc5\xdd\x5c\x2a\x28\x74\x72\x2d\x2a\x95\xce\x21\xfe\x9e\x5b\xcc\xbf\xc7\xe6\xbd\x98\xe7\x8a\x0b\x6a\x14\xcb\xc7\xcd\xac\x05\xf6\xcb\xcc\x05\x4f\x5a\x07\x63\x0e\xbc\x95\x78\x54\xa9\xd5\x69\xbd\x66\xca\xeb\x85\xff\xa9\xd5\x3d\xc6\x7d\xf8\xab\xdc\xc7\x93\x40\x13\x4f\x1c\x4d\x3c\xfd\xbd\xc3\x4e\x45\x5c\x0f\x11\x5a\xbb\x31\xdd\x84\xec\x9a\xb9\xc6\x15\x43\x6e\x85\x36\x92\x24\x86\x42\xb8\x50\xaf\xd7\xf9\x7d\xa1\x10\x71\x84\xf9\x5d\x79\x50\xaf\xe3\x06\x21\xfe\x62\xd1\xdc\x0f\x5e\xd1\xbb\x60\x28\x73\x99\xab\xbe\xa9\x58\xf1\x59\x0c\xf7\x99\x0f\xf7\xf9\xf5\xe1\x16\xac\x4c\xb5\xb1\x76\x11\xf4\x9a\x4c\xce\x5d\x43\xc9\xee\x52\x34\xf2\xe7\xca\x91\xef\xa0\x8d\x35\xd1\xf6\x81\xe8\xf2\x01\xef\xf2\xc1\x7f\x89\xc8\x0f\xfe\xf2\x05\x66\xf3\xdd\xdf\xbd\xb7\xa4\xc5\xdd\x56\x71\x6b\xa5\xf2\xe7\x87\x91\xaa\x9c\x66\x3b\x25\xbd\x9b\xf2\x35\x25\xf6\x4a\x3e\xfb\x5e\x2e\xbf\x99\x0d\x7c\x37\xa0\xb0\x09\x0f\xfe\x37\x19\xf0\x43\x31\xc1\x87\x7c\x82\x0f\xff\xcb\x09\x3e\xfc\xa9\xc4\x63\x6f\x55\xe2\x51\x42\x99\xeb\x37\xb8\x6b\x42\x0c\x45\x4c\x31\x9e\x99\x0d\xfc\x71\x48\xcd\x5d\xfc\x74\x64\x36\x97\xb2\xed\xff\xa5\x79\x39\x12\xf3\x72\xc4\xe7\xe5\x68\x6d\x5e\xf2\xe1\xab\xe0\x7a\x2c\x4a\x1d\xf3\x52\xc7\xff\xe5\x6c\x1e\xbf\x3e\x9b\x54\x45\x46\xb4\xac\x01\x29\x66\x68\x34\x1b\x8a\xa8\x91\x26\x2d\xc5\x5d\x98\x97\xad\x7c\xd9\xc1\x73\x38\xd2\x6d\x07\x2d\xbf\xea\xed\x42\xf0\xed\xf5\x29\xb1\x0f\x23\xdc\xc1\x47\x91\x63\xb5\xff\x5b\x1a\xaa\xfd\x7f\xeb\xde\xf9\x05\x34\x9a\x4d\x3f\xd7\x2f\xfc\x5f\xbe\x7d\x4e\xf3\xdb\xe7\x69\x64\x07\x0e\xf1\x97\x4b\x0f\x6e\x9d\x73\xca\x4e\xd3\xde\x6e\x26\xac\x7e\x8a\x30\xf6\x18\x65\xf5\x76\xed\x2a\xda\x27\x6f\x89\x0c\x91\x28\x2e\x9b\x1b\x8e\x3d\xf1\x1c\x80\x7e\xbf\x20\xb2\xd8\x97\x66\xf1\x45\x4d\xf6\x5b\xbb\xa6\xf8\xe4\xf5\xe9\xea\xb7\x3d\x73\x57\xf9\x26\x90\xf1\x5b\xa0\x82\x74\x4a\xaa\xa7\x23\x19\x6a\x3b\x8a\x29\xae\x36\x10\x66\x9b\xcd\xb5\x29\x23\xcd\x1d\xdc\x3e\x84\xe7\x86\xd9\x74\xf0\xd6\x07\xd3\xb5\x77\x1d\xfc\x8d\xfd\xee\x39\x4b\x64\xf2\xac\x3c\x1b\x88\xa7\xdf\x40\x9e\xa6\xc8\xb3\xeb\x2c\x97\x02\x94\x36\x6c\xd4\x7e\xcc\xcd\x7f\x3c\x62\x7b\xc2\xb2\xec\x46\x31\x0e\xf8\x4b\x1b\xf7\x5c\x6c\xc1\x73\x0e\xc8\xe7\xff\x25\xd8\x9e\xff\x14\xa1\x89\x63\xeb\x6f\xab\x1f\xbc\x22\xc1\x3d\x8c\xd6\xb0\x9f\x3c\x00\x1e\xa8\xd9\xc0\x9f\x1f\x28\x60\xba\xf3\xff\x9b\x13\x78\x21\x26\xf0\x82\x4f\xe0\xc5\xdf\x23\x8a\xde\xfe\x03\x09\xc0\xee\x7e\x2e\x00\x28\x58\xe7\x5d\x84\x34\x6d\x6f\x7f\x83\x68\x60\xaf\x74\x17\x56\x48\x06\x2e\xfe\x89\x64\xe0\x53\x81\x0c\x83\x01\xe9\x0b\xf7\x70\xdf\x7a\xba\xdf\xa7\x68\xf9\x09\xaa\x4c\xef\x37\x88\x41\x6d\xc7\xba\x11\xc6\xbc\xc1\xa0\xa4\xc7\xc1\x99\x9d\xa0\x4f\xb9\xfa\xb4\xaf\x69\xbe\xfd\xc9\x75\x20\x66\x50\x40\x02\xa3\xd7\xd7\x29\xc2\x5c\x6d\xd4\x2d\x82\x2e\x7a\xf8\x53\x40\xcd\x00\x1f\x06\xa6\x6f\x1c\x06\x4b\xee\x93\xa9\x4f\x15\xdf\x72\x9d\x58\x0d\x7f\xa3\x46\x1b\x3e\x71\x4a\x52\x9c\x90\x4b\xb9\x46\x3d\x7d\x35\x8e\xbe\x94\xbe\x7d\x0a\xe8\xb6\xc7\xfe\x5a\x8c\x9e\xe4\x51\x96\x8c\xc3\x60\xdb\x33\x0e\x73\x17\x4d\xdb\xfe\x12\x71\x27\x4d\x7e\x9f\x92\x97\xe8\x91\x9a\x07\x09\x9e\xce\xa8\x79\x98\xe0\xe1\x23\x35\x8f\x13\xfc\xf8\x48\xcd\x76\x82\x9f\x1f\xa9\xf9\x3e\xc1\x27\x8f\xd4\xfc\x90\xe0\xf9\x8c\x9a\x27\x09\xee\x3c\x52\xf3\x34\xc1\xb7\x8f\xd4\xfc\x98\xe0\x4f\x33\x6a\x9e\x25\xf8\xeb\x23\x35\xcf\x13\xfc\xed\x91\x9a\x17\x09\x3e\x7e\xa2\xe6\x55\x82\x2f\x67\xd4\xbc\x4c\xf0\xe5\x13\x35\x3b\x09\x9e\x3e\x51\xf3\x73\x82\x4f\x9e\xa8\x79\x9d\xe0\xeb\x19\x35\x6f\x13\x1c\x3e\x53\xf3\x28\xc1\xdd\x67\x6a\xde\x25\x78\xf8\x2f\xf3\x3e\xc1\xd3\x67\x6a\x7e\x49\x70\xfa\x4c\xcd\xaf\x09\xfe\x36\xa3\xe6\xb7\x64\x89\x03\xd6\xd9\x83\xd1\x68\x9c\xd1\x2c\xf0\x3b\xf1\x30\x38\x8f\x47\x81\xf9\x22\x36\x22\x3b\xee\x82\xf9\xff\xcf\xda\x9b\x77\xb7\x6d\x3b\x8d\xc2\xff\xfb\x53\x28\x68\x9e\x44\x7c\x3c\x56\xec\xb4\xbf\xfe\x1a\xa9\x6c\x8e\x2c\x79\x8b\x77\x4b\xf2\x5a\xdf\x1c\x90\x84\x28\x5a\x14\x49\x93\xd4\x1a\xfb\xbb\xbf\x67\x06\x00\x17\x49\x4e\x7b\xef\x79\xd3\x1e\x0b\xb3\x00\xc4\x3a\x18\x0c\x80\x01\x56\xf3\xaf\xaf\xd0\x8c\x05\x6f\x0d\x78\x9c\x96\xc8\xee\xa4\xfa\xe3\xaa\xcf\xc9\x36\x86\x8c\x9f\x5f\x61\x97\xc7\xab\x7c\xfd\x89\xa6\x8e\x2d\xcb\x17\xab\x0c\x03\xcd\xd0\x22\x1f\x09\x49\xea\xd9\xc3\x55\x2e\x3f\xe3\x22\xb1\xf0\x93\xef\xb4\xc2\x91\x15\xae\xd2\x47\x9a\x7e\xc0\xc7\x6e\xb9\xa4\x21\x91\x76\x5e\xe1\x40\xac\x89\x18\xe9\x7a\x38\xf4\x92\x34\x74\x63\x3e\x2a\x91\xe3\x09\x6c\x48\x3a\xd6\xe0\xba\x7c\xad\xd4\xd3\xd1\x88\xbb\xe2\x8a\x3b\xeb\xaa\x6b\xaa\xf3\x42\x4c\x9d\x88\xc7\xc3\x95\x96\x59\x68\x9e\x53\x1e\x95\x08\x89\x2e\xe3\x69\x88\xbd\x79\x35\xf5\x54\x97\xe5\x3c\x76\x57\xa9\x63\x1d\xfd\xc2\x5b\x53\x90\x89\xa6\x76\x6c\x9e\xa6\x62\x4d\xde\xe7\x9a\x83\x65\x5d\x66\x2b\x49\xb9\x3d\x14\x0e\x5b\xe9\x3b\x5d\xa7\x58\x25\x9d\x54\x44\x91\x70\xde\xea\x6a\x8a\x8b\xec\x2f\x25\x52\x8b\x48\xdb\xaf\x80\x5d\xd8\x5f\xae\xa8\xbd\x2c\x62\x2c\xc4\x72\x65\x9d\x6a\xe2\x4d\x18\x3b\xc8\xb0\xa6\xd5\x3f\xbf\xbe\x36\x1c\xef\x8d\xd7\x45\x29\xa3\x1d\xe1\xeb\xe7\x95\xcf\x26\x20\x9f\x88\x30\x1a\x52\x26\xda\xdc\xb7\xc7\x3e\x4f\x65\x65\x76\xe7\x91\x48\x4c\x2d\x2d\x49\xee\xbb\x38\x0a\x75\xe2\x36\x32\x25\xb5\x5d\x1e\xb3\xba\x93\xc0\xea\xe0\xb4\x33\x64\xd6\xb6\x8c\x67\x08\x8a\xce\x0a\x83\xf5\x29\xc9\x07\x24\x86\x0b\xc3\xef\x29\x59\x1d\x6c\x88\x2b\x0c\x2d\x02\xb3\x81\xf4\x94\xa8\x61\x93\x24\xf9\x20\x49\x29\x8c\xd5\xca\x5c\x11\x8e\x78\xc4\x0a\x43\xe4\x29\x91\x3d\x38\xcf\x0f\xf3\x10\xe6\xb1\xe0\x2a\xab\x44\xcf\xb2\x28\xc9\x16\x8f\x8b\xd4\x95\x5c\x4a\xae\x12\xcb\x1b\xf8\x7c\x34\x4a\x1a\x76\x8e\x22\x3d\xeb\xe3\x92\x1c\x79\x25\x6a\x3e\xf0\xa6\x09\x1c\x05\xa9\x08\x12\x2f\x9d\x53\x59\x3d\x0d\x51\x89\xf3\xcf\x3c\x25\x34\x1e\xdb\x49\x69\xf4\xed\x27\xf9\x58\xfb\x96\xc0\x46\xf6\xd9\xa7\x04\xae\x78\xe0\x0a\xd9\x81\xc2\x18\x11\xa5\x91\x85\x30\xe6\xc2\x2f\x7e\x61\x65\x9c\x3c\x25\x6a\x54\x74\x92\x7c\x0c\xdc\x24\x59\x8f\xbf\xc3\x38\xb1\x17\xb8\xfb\x9e\x9f\x8a\xb8\xee\x25\xd0\xe6\xa9\xa0\x4f\xe7\xa8\x33\x72\x65\xbf\x84\x6c\xf1\x54\xb8\x61\x3c\x2f\x60\xf0\x93\x6f\x47\xed\x88\x54\x33\x52\x4f\xca\x8a\x46\x1f\x4d\x06\x56\xc8\x63\xa7\xee\x15\xdf\x03\x39\x9f\x94\x1e\xf9\xae\x8d\x13\xb1\x4f\x83\x70\x3f\x0e\x47\x6d\x9e\xf2\x46\x24\x3d\x5f\xbf\xb3\x5f\x5e\xde\x35\xbd\x2a\x47\x35\x01\xd5\x37\xcb\xec\xac\x9f\xe9\x89\xcb\x78\x35\xa0\xed\xa0\x5e\x00\x3b\xa6\x69\xe9\x27\x11\x07\xa8\x2a\xd0\x43\x89\x29\x99\xc9\x8d\xa2\x0b\xbc\x81\x54\x08\x28\xfa\xcb\x4b\x35\x7f\x2b\xcb\xf9\xe4\xc2\xad\x90\x8f\x9e\x12\xe6\x97\x1f\x3b\xdb\xf0\xfa\x09\x0e\xbd\xea\x54\xc0\xce\xb6\x61\xac\x75\x06\xe2\xc9\x04\xa5\x2e\xf4\x44\x00\x14\x5c\x43\x36\xc8\xfb\xe3\xc3\x36\xec\x80\xd4\x6e\xba\x80\x12\x23\xf7\x22\x68\x83\xd0\xd6\xaf\x0b\xac\xa7\xdc\x2f\xa4\xba\x57\xf9\xd5\xaa\xcd\x8f\xff\xb7\x5f\x9b\x6d\x5a\xb5\xd6\xb3\xf2\xd8\xfb\xfa\x68\xac\xd9\x82\x7d\x2a\xe4\xa5\x61\x69\xab\x6f\x66\x69\xc1\x4c\x1d\x0f\x4b\x47\xca\xd4\x7a\x92\xbe\x5c\xbc\x7b\x5d\xb5\x6b\xb3\x4d\x53\xd4\x66\x60\xd7\xe6\x18\x98\x1b\xaf\x96\x4a\x00\x69\x9f\x2c\x24\x7c\xb2\x0c\xf5\xae\xb8\x63\xd2\xcd\x28\xb5\xdf\x52\x38\xdb\xaf\xcb\x54\xf4\x79\xa1\x92\xe9\xd7\x66\x5b\x56\x6d\x06\xfd\xda\x7c\xcb\xaa\xcd\x0d\xb0\x37\xcd\x7e\x6d\xf6\xbf\xfd\xda\x1c\x1c\x1d\x9c\x19\xaf\xdc\xfc\xf1\xda\xe0\xb5\xf9\xb1\x69\x7f\x72\x5e\x5e\x76\x1a\x1c\xeb\xc1\xb4\x6a\xf3\x2d\xc4\xfe\xaf\x55\x9b\xe5\x0d\x93\xd5\xc5\x45\xb9\xd3\x49\x37\x8c\x74\xe4\x52\x85\x77\x4a\x15\x4d\x97\x3d\x64\xc0\x91\xee\x86\x74\x61\xc9\x8d\x6a\x7e\x06\xbd\xd8\xdc\xbc\x66\xd9\xea\x7c\xc3\x35\xaf\x4a\x5b\xc4\xd0\x51\x6f\x3e\x39\x8d\xb4\x4e\x2f\x98\xac\xe9\xf0\x10\x29\xff\xa6\x8e\xe1\x64\xe7\xfe\x1c\xf3\x81\xa7\xd0\x4d\xc0\xf1\x38\x08\x8f\x43\x90\x3c\x36\xde\xbe\xe1\x2c\x3c\x7a\xbb\x7d\xd3\x8b\x81\x97\xf6\x81\x2a\xe9\xab\x63\xbe\xdb\x96\xef\x8b\xca\x33\x68\x7b\xb1\xf1\xeb\x5f\xb6\xbc\x65\x5c\xb5\x4c\xbb\xf6\x7e\x5c\xdd\x91\xb7\xc7\x06\xcd\x99\x27\x9f\x4f\x39\x9f\x54\x1d\x78\xb0\x1e\x0d\x50\x58\xd3\x01\x5b\xf2\x7e\x96\x37\xce\x26\xcd\x99\x7a\x6a\xc5\xa1\x63\xe2\x85\x68\xf6\xa3\x41\xeb\x73\xd3\x01\xc5\x67\x5a\x86\x2e\x57\x16\xf3\xe1\xc7\x2b\xfc\x78\x2d\x96\xaa\x98\x81\x3e\xbd\xe9\x4b\x41\xd7\x74\x1e\x76\x64\x70\x68\x3e\x3c\x82\x8f\x7f\x02\x93\x4e\x2d\x51\x29\xb6\x21\x32\xb7\x1b\xd1\x9f\x41\x23\x92\xd5\x61\xd7\xda\xd5\x48\x3e\x73\x82\x29\x27\x32\xe3\x91\x01\xe3\xc6\xd8\x8c\x50\xb9\x1f\x7f\x95\xe7\xbc\xea\xd5\xf1\xd6\x16\x8c\xcd\x6a\x95\xd7\x12\x11\x2b\xff\xce\xc6\xc3\xf8\x51\x5e\x3d\x93\xfb\x00\x98\xab\xa3\xc0\x11\xb3\x97\x97\x8d\x6d\xa3\xa1\x4e\xd3\x8d\xd5\x69\xba\xed\x3a\x39\xc6\x4d\x8c\xe2\x79\xb9\x9d\xba\x2f\x91\xaf\xaf\x96\x69\xb6\xe3\xaf\xe7\x93\xaa\x80\xa1\x51\xaf\x9e\x4f\xaa\x7d\x18\x1a\x58\x57\x2e\xf8\x86\xd1\xd8\xfe\x33\xc0\xa2\xe8\x43\x09\x74\x98\x4f\xc6\xe9\xd7\x05\xa8\xcc\x6f\x53\x04\x0b\x1e\x92\x47\xc3\x68\x60\xdd\x98\xfd\x06\x3d\x28\xeb\x36\x74\x25\x3b\x0d\xdd\x58\xa2\xf0\x36\x94\x2f\x7b\xa9\xd7\xaf\xf2\x87\xd6\xf3\x63\x95\x27\xf9\xe6\x9c\xea\xaa\xd4\x75\x4d\xb3\x17\x7f\xf8\xf0\xd9\x94\x1b\x74\x94\x0b\x8f\x16\x5a\xc0\x6b\xfb\x03\xf9\x7b\x5c\xbd\x1b\xe0\x2a\x94\x82\xf7\x03\x8e\x83\x08\x83\xef\x07\x1c\xde\xed\x18\xf4\x5a\x67\x95\x27\xd2\x05\x46\x21\x0f\xa3\xf2\x48\x21\x7f\x6e\x38\x52\x16\xc3\x86\xdc\x30\xb4\x0d\xa3\x7c\x43\xde\xd6\xcf\xd9\x58\xe6\x19\x3d\x24\x46\xcf\xd9\x90\x4d\x5f\xb9\x4c\xa7\x1c\x9e\xa9\x47\xc6\x1a\xbc\x66\xb7\xab\xd2\x69\xa1\xca\x6e\xe1\x70\x42\xb0\x3a\x50\xf1\xbb\x55\x77\xc8\x33\x4f\xe1\x86\x69\x3e\x25\x1f\x3e\x58\xef\xcc\x5e\xbc\x9a\x53\xaa\xb9\x71\x52\x38\xee\x5d\xba\x26\xff\xf0\x83\x04\xb9\xfd\xd5\xf2\x78\x3d\x19\x70\x28\x3d\xb0\xa1\xfc\x97\xee\x0d\x5e\x71\xe9\x6b\xa9\x73\x50\x36\xbd\xdf\x6f\xff\x29\x68\x3b\xd7\x51\x6f\xb3\x58\x7a\xba\xb0\x8c\x86\xa5\x9c\x05\x63\xa5\x8e\x55\xa5\x66\xa5\x2b\x1a\x2f\x2f\x4b\xf2\x4d\x3e\x01\x1a\xca\x69\xb4\x6a\x9b\xfb\xf4\xcc\xbe\xf2\xe5\x78\x68\xda\xb5\xcc\x31\xe0\x91\x23\xcb\xae\x5e\xcb\x3c\xd3\x97\x72\x4e\x5d\xd3\x7e\xe0\x9b\xce\x80\x3f\x16\x19\x46\x1e\xa1\xef\xdd\x32\xfa\x6a\x57\x1e\x99\xbc\x57\xde\xc7\x0b\xae\x23\x6f\xcf\x0b\xef\x74\xf5\xfb\xa6\x5d\x73\x78\xca\x3b\x54\x39\xbd\xd8\x2f\xa6\x92\x16\x38\xf7\x07\x55\xc9\x49\x9a\x8e\x91\xb9\x94\x7c\xd8\x7b\x7e\xcc\xdd\x4a\x86\xa6\xfd\xd0\x56\x88\x89\x72\x7a\x1c\x71\x7b\xc8\x5d\xa1\xdc\x14\x4e\xcf\x4d\x1b\x85\xeb\x57\xa7\x9e\x27\x7e\xf2\x64\xda\x35\x7a\x8a\xb3\xf8\xf9\x23\xdf\xb4\x6b\xb1\x7c\xfc\x53\x3f\x36\x59\xa4\x2f\x86\xa6\xfd\xf0\xfe\xb9\x54\xf0\x9b\xfd\x42\x9e\xfd\x3f\xcc\x87\xd1\x90\x43\x30\xe4\x30\x1c\x72\xf0\x87\x5c\xdd\x99\x79\xfe\x62\xda\x35\x2f\x69\xcb\x73\xb2\x25\x97\x95\x2f\x2f\xf4\xce\xc3\x1b\x54\xe3\xf5\xae\x7a\x39\x21\xe7\xaa\x37\xe6\x25\xae\x23\x1a\x1b\x37\xb5\xd8\xe6\xda\x59\xe5\xa4\xa7\x43\xea\xa4\xec\xd1\x92\x73\x37\xe9\xa7\x87\x16\x82\x03\x2f\x79\x18\xdb\xf2\x54\xe0\xc3\x98\x5c\x40\x35\x38\x16\x41\x15\x25\x9f\x36\x8d\xc6\x4d\x6d\x77\xd9\x57\xe8\xc3\x9d\xf5\x58\x35\x1a\x97\x93\x9a\xa8\xed\xe6\xb7\x39\x56\xdc\xc9\x5d\x4d\xb2\x97\x64\x37\xca\x4e\x32\xe5\xcd\x89\x61\x95\xbf\xbc\x9c\x4b\x2b\x9c\xe3\x17\x0e\x0a\xa8\xee\xd9\x20\x1e\xab\xc8\x50\x7a\x36\x2a\x77\x6a\xf9\x8b\x74\xb2\xea\x25\x24\x10\x2a\x61\xbc\xec\xdd\x55\xbe\xd1\x45\x37\xcd\xe2\xf9\x8f\xec\x81\x06\xd9\x99\xec\xea\x52\xc2\x6c\x53\x0d\x82\x4d\x46\x67\x90\xd7\xbb\x8b\x4d\x94\x8f\x23\x8a\x6f\x28\x03\x1a\xf9\xff\x2b\x5c\x0c\xb8\xd5\x87\x58\xb8\x76\xd8\x03\xb6\x99\xa4\xb5\x93\xab\xaa\xad\x9d\xf9\x04\xcf\x99\x33\x9f\xec\xc5\x84\xf3\xfc\x15\x09\xa7\xf4\xe8\x03\x69\x16\xc2\x14\xa4\x8c\xfa\x36\x87\x73\x8c\x84\xd2\x4b\xe8\x0e\x59\x88\xb9\x62\x77\x2d\xad\x62\xa9\x70\xf5\x0a\xdb\x14\x46\xe3\x35\x94\xaa\x47\xd5\x31\x49\xbc\xca\x51\xf4\x43\x0f\xa2\xba\x83\xfa\xa9\x6f\x71\x7b\x58\xb7\x71\x4a\x16\x5e\x35\xb4\xb9\xa1\x5e\x38\x54\x1a\xdc\x84\x73\x7a\x3c\xe4\xab\x53\xff\x91\xb1\xf7\xbd\xd7\xc6\x06\x79\x6b\x27\xd8\xcc\x83\x2f\x2f\x7d\x4f\xae\x85\x41\xbe\xa9\x0d\x43\x4c\x77\x3a\xe0\x46\x63\xf8\xe1\xc3\xf6\x9f\xe6\x74\x54\x1d\xc2\x36\xb4\x07\x1c\x86\x0f\x2d\xfb\xb1\x3a\x1b\x19\x06\x99\x09\xe7\x48\x69\x0f\xb8\x61\x34\xaa\xae\x29\x48\x69\xaa\xf9\x3c\x70\xc7\xdc\x45\x45\x35\x07\x4c\xd7\x68\xc4\x7d\x5e\x7d\xee\x73\xf2\x03\x06\x7d\xba\x1c\x27\x8d\xda\xbe\xf6\x7a\xf8\x5c\xe5\x80\xf3\x94\xf1\x13\x6f\xf0\xe1\x90\x17\xdc\x1f\x5f\xd3\x1b\xb3\x34\x44\xca\xde\xed\x55\x84\x32\x77\x6c\x73\xb5\x01\x4e\xf1\x8a\x0e\x27\xc2\x21\x2f\x2f\x84\xa6\xe7\xe0\xe8\x17\x27\x55\xfd\x5a\x2f\x2f\x55\xc7\x8c\xbd\xaa\x55\xdb\x9b\x19\x5f\x2d\x7a\xf1\x80\x3c\xd3\xd7\x2d\xe9\xa0\xbe\x61\x9b\x3f\x0a\xd2\xbc\xce\x6b\xc9\xe1\xcb\x8b\x4c\x05\x4a\xa2\xb6\xce\x6b\xfd\x7e\x89\x24\x57\x91\x4e\xe6\x1f\x5b\xaa\xab\x19\x4b\x92\xf2\x54\xd4\xf9\xc3\x21\x8a\x8a\x0c\x9b\x75\x0d\x95\x45\xfb\xab\x24\xd4\x6d\x58\x12\x9e\x75\x5e\x3b\xf2\xb3\x78\x24\x6f\xeb\xbc\x16\x87\x85\xc4\x26\x9e\x98\xd6\x51\x09\xc8\x30\xeb\xe5\x60\x9d\xd7\xee\x6c\x72\x5a\x66\x3f\x70\x1c\xa1\x38\x31\xa9\x79\x5c\x47\xd5\x24\x9c\x9c\x4c\xfe\xf0\x54\xcc\x75\x83\xd7\x6e\x6d\x5e\x78\xf9\xcc\x7e\xbd\x41\x4c\xb1\xfd\xe8\x3d\x8c\xde\x5b\x8e\x37\xfb\xf4\xa6\xca\x4f\x1f\x91\xbc\xa9\x59\x6f\xfa\xed\x3c\x75\x5f\x1b\x1b\xcd\x68\x6d\x17\x53\x33\x2b\x75\xa9\xcb\xdf\xde\x48\xe1\xe1\xd2\xa1\x27\xaa\x2e\xdf\xcc\x61\x72\x88\xf4\x38\x7c\x8b\x7e\xf2\x84\xf4\xee\x9b\xf1\x8f\xfc\xd7\xc6\x69\xf4\xd6\xa3\x38\x9d\x89\xde\xfd\x92\x6f\xbc\x15\x5c\x30\x4d\xf2\xe7\x65\xb6\x68\xe5\xfd\xec\x3c\x56\x7b\xc2\xf8\x8a\xaa\x55\x5d\x78\xe4\x92\xb5\x61\x9b\xf4\x9e\xd1\x57\x5b\x4e\xc4\xa5\x55\x2d\xff\xca\xeb\xd8\x22\x43\xe7\xad\xcc\x59\xaf\x8d\x8b\x9f\xd4\x5e\x48\x95\x77\x67\xbf\xd9\x3c\xcf\x5f\xb0\xf0\x67\xde\xaa\x07\xc3\x7e\x5f\x3e\xb7\x7d\xb6\xee\xcd\xbb\x9b\x7d\x49\x4c\x27\x6f\xa6\x7c\xb3\x4f\xaf\xbc\x0c\x56\x23\xa7\xe6\x6d\x9f\xeb\x97\x30\xa6\x93\x55\x86\x53\x57\xa6\x2e\xc2\x55\xda\xc8\x93\xb4\xdb\xde\x2a\x2d\x39\x5c\xfb\xea\xb8\xd6\x6d\x88\xb6\x1b\xac\xd2\x8e\x7c\x49\x3b\x5e\x72\x72\x15\x29\x91\xa5\x1b\xb7\x70\xef\x2b\x3f\xcf\xa4\x96\xc5\x5f\x3d\xaf\x2a\x5b\xdc\x90\x3b\x6a\x16\x5d\xda\xed\x09\x03\x76\x48\x65\x27\xa5\xdc\x56\x6e\x66\xb8\x49\xbc\x36\x3d\xfb\xdf\x13\x86\x91\xbd\xa5\x82\x7d\xc3\xa8\x3b\x1e\x9d\x5a\xe2\xc6\xeb\x3f\xb9\xdb\xa6\xf7\xe2\x2f\xe4\x1b\x3c\xf3\xb5\x5e\x3e\xb9\xce\x88\x74\xa4\x83\x79\xc9\x9e\xc2\x78\x48\x2c\xf5\xd4\xb5\x63\x3e\x0f\x39\x4e\x75\xf2\xe8\x25\x39\xcd\x34\x1c\x4c\x9c\x5c\xe4\xa7\xea\x39\x30\x5a\x66\x38\xa6\x53\x73\x0b\x04\x03\xb0\x3e\x9c\xbc\x38\x58\x59\xd4\xba\x2d\x7b\xb5\xb6\x43\x95\xf7\xc6\x4d\xad\xf9\x6d\x95\x3c\x3d\x97\x8d\x61\xb7\x57\x69\x8b\xa1\xa4\xdd\x2f\xf5\x49\x2e\xfd\x67\xa2\x2c\xd0\x8e\x2e\x6f\xcf\x4d\xe9\x1d\xeb\xe9\xf7\xd5\x74\x9e\xbf\xa8\x74\x3a\x6b\x7a\xef\x8a\x4e\xa8\x5e\x3c\x69\xdc\xd4\x7a\x6f\x0a\x89\xc5\x90\xc6\xca\x5b\x52\xaa\x36\xa5\xf7\xe2\x82\xe7\xb5\x2d\x64\x7d\xf8\x60\x3d\x34\x51\x83\x8e\x12\x70\x4c\xf9\x88\x03\x07\xdb\x68\x7c\x53\x0f\x0c\x44\x09\xfc\xf0\x9c\xba\x93\x3d\xe7\x60\xbf\xca\xe1\x33\xbb\x5a\x9b\x62\x49\x19\x93\x2f\x52\xad\x2a\x3f\xcb\x7a\x5d\x5d\x63\x64\x2c\x55\x8d\x1f\x3e\x54\xb5\xe6\x0a\x7a\x1d\xa3\x48\x06\x14\x97\x32\xda\x9e\x43\x9d\x29\x6f\x0e\x1d\xc2\xea\x34\x4d\xdb\x70\xcc\x02\x59\xfa\xce\x73\x6a\x91\x4d\x2f\x9d\xd1\x5a\x9b\xd7\xdf\xed\x34\x9c\xaf\x76\xc6\x54\xcf\x33\x20\xad\x73\x36\xea\xbe\x7a\x85\xa5\xb6\x7a\xaf\x76\x69\xe1\x1b\x2b\xa7\xcb\x57\xbb\xb5\xfb\xbe\x91\xd1\x6a\xf7\xfd\x6a\x16\xc3\xb4\x1b\xb1\x56\x46\xb4\x73\x55\x5c\x3a\x58\x0d\xc7\x6c\x6a\x67\xb5\x0e\x56\x81\xbc\x78\xdc\x9d\x54\x7f\xd8\x7a\xdb\xa2\x9e\xab\x9d\xb9\xaa\x60\x65\xaa\x82\x23\xa7\x6e\xdd\x27\x8c\x25\xcb\x94\x5a\x0f\x69\xfb\x94\x06\x05\x1d\xde\xb2\xc9\x81\xbb\x23\x57\xd6\x0e\x65\x81\x2a\x58\x2a\x1a\xb2\xbd\xf7\x97\x7a\xfe\x50\x95\x77\x31\x54\x77\x1a\x16\x43\xe9\xda\x54\x67\xc1\x54\xea\x88\x02\xbf\x3e\xf0\xc7\xfa\x83\x02\x40\x3d\x35\x19\x2f\xbf\xae\xe1\xf5\xab\x16\xb9\x14\xcf\x7a\x68\x6d\xf1\xad\x2a\x1f\xf0\xf9\xf6\x99\x34\xee\x24\xad\xb9\x6d\xf9\xe0\xd9\x52\x27\x15\x79\x27\x5d\x79\x73\xc4\x79\x35\xf4\x25\x47\x2f\xa9\xcd\xae\x30\x01\xad\x01\xe6\x97\xbc\xb4\x02\x98\x90\x71\xa2\xa1\x0f\xc0\x35\xee\xab\x0f\x27\x09\x5c\xd0\x97\xae\x92\x82\x3b\x8c\x6c\x4d\x70\x30\xae\x5a\xe0\x94\xb6\xd7\x1d\xd3\x3c\x49\xc8\x73\xb9\x5a\x8d\x63\x2f\x96\x0e\xd9\x9d\x77\x44\x72\xde\x99\x57\xc9\xcb\xcb\x3b\x54\x27\xb1\xae\xc9\xc7\x60\xcb\x96\x00\xb9\x4e\x37\xa8\x90\x1c\x1c\xe9\x4c\xd3\x56\xef\x54\xe1\x32\x71\xd2\x33\xed\xd7\x8d\x1b\x5c\xd2\xbc\x75\x5d\x9f\x2c\x49\x58\xa5\x46\xa1\xd4\x85\x87\xab\x73\xff\xbf\xfd\xbe\x61\xe9\x35\x52\x12\xe7\x6b\x24\x4b\xad\x91\xac\x75\x6b\x24\xd9\x98\x9d\xaa\x05\xef\xb6\x8d\xa5\x77\xff\x5a\xb4\x29\x26\x9f\x7c\xa0\x2e\x5c\xaf\x04\xa1\x3c\x6d\x92\x3d\x53\x48\x0b\xc2\xc6\x4d\x6d\xd1\x59\x2b\x4a\x22\xaf\x6a\x19\x5f\xad\xfa\xbb\x1d\x75\x0f\x3f\x55\xfe\x60\x51\x69\x3e\x37\xb4\xdf\xe7\x23\xbf\x21\x3e\x7c\xb0\x3f\x7c\x70\x6a\xbb\xf4\x6c\x53\x55\x9d\xe4\x40\xbd\xd6\x40\xf4\xd1\x90\xde\x52\xa4\xe7\x11\x4a\xfe\x07\xaf\x26\xd2\x95\x30\x89\x8b\xd8\xab\x52\x48\x0e\x5f\x1d\xac\xca\x67\xe9\x49\x64\x34\xa8\xfd\xa4\x1d\x2d\xbf\xc5\x26\xed\x58\x43\xaf\x8a\x4d\x82\x6b\xa2\x7b\x0a\x95\xa6\xce\xe3\xb1\xdc\x0d\xe1\xda\x3c\xa0\x8e\x2b\x3c\x0f\xb9\x29\x0f\x1a\xff\x70\x45\x5a\x27\x7b\x02\xea\xc9\x90\x68\xa8\x26\xc2\x57\x69\xaa\xca\x39\x6a\x96\x5d\x60\x98\x4e\x5e\xa1\xb8\xde\x28\xf0\x5d\xf6\x0a\x7c\xb7\xbd\xd7\x4c\x58\x14\x78\x86\x4e\xce\xf3\xb0\x78\x7e\x7c\x55\xab\x8c\x42\x86\x0e\x4b\x19\x6a\xd9\xaf\x4b\xcb\x98\x42\x6a\x9d\xe2\x17\xcf\xbc\xd7\x82\xa8\x2a\x70\x5d\xf3\x02\xd7\xfe\xe0\x75\x65\x9d\x52\xe0\xed\x16\x53\xdc\x0d\x5e\xd5\xb2\xa5\xc0\x11\x87\x05\x8e\xa3\xe1\xab\x14\x84\x05\x86\x5e\x31\x09\xbb\x5d\xb4\xd2\x75\xa9\x07\x5c\xe6\xd7\x3a\xfb\xea\x66\x67\x77\x02\x97\x13\xa3\x71\x63\x76\x27\xd2\x6d\xaa\x2b\x4c\x55\xa9\xbf\xe1\xba\xe2\x5c\x41\xf7\x13\x8e\xd3\xaf\x63\xea\xc6\x40\xed\xd1\x32\x75\x3b\x35\x6e\x6a\xce\xbd\xa9\x5b\x12\xe5\xa8\xad\x40\x6c\xe6\xc2\x9b\x08\xcb\xf9\x18\x0d\xb8\xcc\x48\x4f\x67\xa4\xa7\x33\xd2\x2d\x66\xe4\x64\xc2\x8b\x9f\x4e\x32\x90\xbe\x7d\x9c\x81\x22\xc4\xa5\x88\x06\xcb\x1f\xbf\xce\x8f\x16\x0d\x44\xe6\x04\x48\x98\x3f\x5e\x5f\xef\xaa\xd7\xd2\xd8\x85\xbd\x35\x1d\xd2\xbb\xdd\x37\xe6\xb5\xca\xca\x68\xcd\xf9\x77\xa5\x7b\xdc\x4c\x0a\x87\xb9\xca\x5b\x34\xb7\x13\xcd\x0d\xc2\xf8\x71\x93\x43\xef\x76\x40\x14\x46\x56\x81\x22\xa0\x5f\x38\x33\x86\x9a\xd6\x90\x3f\x6c\x3f\x9a\xf6\xc3\xd0\xc6\x19\x0a\x6c\x33\x1d\x16\xce\x67\x4a\x0f\x8d\x64\xaf\x76\xf5\x5e\xd7\xd0\x3c\x49\xc9\x68\xed\x3e\x82\xf3\xf2\xc2\x1f\x82\xe7\x47\x10\x2f\x2f\xef\x76\xa0\x8f\x72\x77\x20\x5e\x5e\xd4\x85\xdd\xa1\xf2\x0c\xcf\x6b\x81\x78\x18\xd6\x86\x62\xfe\x68\x66\x67\xc5\xf9\xeb\x4d\xad\xd9\x7a\xbb\xe4\xe3\x21\x5f\x2e\x7a\x6e\x62\x18\x0f\x79\xb9\x50\x2b\xa6\xf6\xa5\xac\x67\x11\x28\xdb\x14\x47\x9a\xb5\x2c\xf3\x3c\x95\x17\x0c\xb2\xb2\xac\x94\xc3\xca\xdd\x9f\x50\x51\x2c\x59\x14\xab\x58\x94\xc9\xea\x25\x06\x6c\x96\xec\xa9\x7c\x9d\x2f\x75\x29\x58\x7b\xd6\xa4\x3e\x32\x91\x07\x35\xfb\x8f\x2a\x96\x9c\x03\x6c\xfd\x5e\x80\xcc\x95\xa9\x5d\xb4\x0d\x54\x00\x6c\xf3\x34\xad\xda\x38\xa9\xbf\x7b\xe7\x80\x65\xee\xa5\x74\x98\xad\x76\x7d\x5c\xd5\xdf\xaf\xf3\xaf\x55\x6e\x9e\x21\x61\x99\x22\x37\xff\x70\x3a\xb5\x3e\x7c\xa8\x5e\x92\x33\x70\xb5\x84\x51\x1d\x57\x95\xb3\xe4\x34\x8e\xde\x3a\x2e\x19\x03\xf4\xa1\xb8\x40\xc0\x65\x6a\x14\x3b\xfd\xb2\xad\xf5\xba\x6c\x60\x55\x86\x77\x9b\x3c\xb6\x1f\xae\xbc\x14\xa3\x26\xc0\xbd\x89\x08\xd2\x43\xf9\xe2\x4c\x4d\xbe\x3c\x43\x28\x32\x60\x7a\xa3\xc8\x17\x23\x11\xa4\xc2\xc1\x39\xb0\xb0\x76\xbf\xcb\xc7\x62\xe6\x8f\xeb\x80\x66\xbf\xeb\x49\xe6\xad\xe7\x4e\x1b\xa0\xef\xd4\x40\x7c\xcb\x34\x7c\xf7\x4f\xa6\x61\x99\x3e\x15\x06\xe7\x39\x09\x1a\x8d\x81\xaf\xea\x46\x9a\xd5\xde\x7e\x40\x2c\xc0\xca\xe2\x8e\x43\x45\x3b\xf1\x92\x54\x04\x22\x5e\xdb\xa1\xc4\x57\x25\x12\x6a\x07\x90\xa3\xeb\x3a\x03\xd5\x7c\xb4\x2c\xbf\xe3\xf4\x6a\xbc\x61\x69\xa0\x65\x68\x56\x73\xf7\xc5\x9a\x2b\xbc\x98\xb6\x67\xaf\xbe\x98\x16\xe8\xe7\x7e\x6c\x94\x68\xaf\x77\xd5\x7b\x5d\xa3\xf7\xff\x50\xa3\xf7\xff\x54\xa3\x13\x35\xfc\x95\x41\x32\xdb\x17\xb0\x9b\x3a\x64\xe9\xc0\xad\xad\x43\xe1\x91\x0e\xbd\xbf\xcb\x70\x3a\x70\x38\xd6\xa1\xb7\x8d\x5d\x73\x5a\x55\xfe\xd4\x5a\x73\x53\x0b\x9e\x56\xc9\xb2\xbb\xef\xf9\xe6\x5a\x1b\x93\x15\x56\x2d\xb8\x4f\xe0\x87\x7c\x20\x2a\x5a\x67\x5e\xa5\xf5\xe5\x8d\xb3\xc6\x56\x83\xb5\x2b\x57\xd4\x57\x6f\xe5\x6b\x66\x13\x83\xfb\x5c\xb6\xfb\x6d\xfc\xd4\xb4\xf4\x75\x3f\xac\xea\x37\x41\x43\x43\xbd\xdc\xb8\xfc\xfe\x57\xf1\xfd\x93\x39\xd7\x43\xc9\x6e\xaa\xad\x38\x82\xde\xdf\xa9\x27\xd1\x0a\x6f\xf4\xd1\xef\x7e\x13\x74\x1b\xe2\xd2\xa7\xb9\xf4\x1c\x83\x4a\x34\x33\x2b\xa8\xc4\x28\x29\x94\xbb\xfa\x99\xf1\xb0\xb0\x9f\xd1\x0a\x83\x34\x0e\xfd\x0a\x69\x57\xf9\x13\x54\x41\x25\xb4\x9e\x84\x9d\x66\x27\xac\x0f\xc7\xea\xbd\xdc\xb1\x12\x9b\xa1\xde\x6a\xd3\xd7\x1f\x54\x41\x54\x4f\x7e\xaa\x1a\xf8\x5d\xfd\x78\xb9\xfb\xac\x73\xa7\x5e\xe2\x02\x95\x93\x46\xd6\x31\xd5\xcb\x61\xdd\xec\xf4\xfc\x93\xa7\x98\xa3\x24\x5f\x7e\xdb\x66\x95\xe3\x6a\x1e\x05\x30\x7e\x59\xbf\x15\x24\xab\x3b\xf7\xdb\x7a\xbb\x66\x7d\xdf\xf3\xe8\xa1\x32\x1e\xd8\x22\x2b\x57\x78\x84\x6b\x24\x15\x05\xde\x67\x6f\x50\x1d\x0f\x79\xe9\x29\x8c\x5b\x3b\x7f\x4d\x2c\x94\xd9\xda\xf3\x97\xca\xa4\x79\x55\xcd\xdf\xda\x72\xa1\x9a\xad\x07\x4f\xb2\xdd\xee\xc2\xd4\x3b\x91\x8a\x3a\xaf\x85\x47\x1f\x3e\x54\x51\x23\xaf\x85\x47\x06\xa0\x76\x4f\x01\xae\x47\xa1\xd4\xf8\xb1\x60\x64\xa4\x96\x83\x6f\xe0\x57\x39\x8a\xc3\x1b\xcc\xf0\x3a\xd3\xd2\xfa\x9c\x5c\xe9\x87\x96\x93\xb4\xd8\x87\x96\xfb\x5b\x4f\xbd\x16\x28\x6d\x3d\x09\x5f\x16\x3e\xb5\xc3\xb1\x36\x2f\xbd\xbf\xd3\xfd\x43\x77\xd5\xf2\x1a\xf6\x7d\xe6\x63\x2d\x1e\x94\x1e\xf2\x79\x4a\x4b\xe0\x42\xbf\x25\x94\x2b\x5c\xd3\xdc\xb6\x38\xcb\x82\xf4\x90\x6f\x3c\xa0\x0b\x92\x7c\x4a\xaf\x57\x60\x5d\xe5\x18\xdb\x00\xdb\x80\xb9\xba\xc2\xc9\x6b\x4f\xa9\x84\x6c\xb0\x80\xd7\x16\x13\xc3\x78\xbd\x31\xdf\x93\x58\x5d\x3b\xfb\xc4\x03\x25\x5a\x55\x2e\x8b\xd0\x62\x22\xa1\x57\xe3\xad\x57\xb5\x74\x12\x8e\x23\xd9\x6e\x6a\xe3\xcf\xa5\xda\x8b\xe7\x9a\x75\xa1\x07\x00\xbc\xdb\x56\xbb\x4e\xbc\x70\x95\xe2\xe7\xcf\x7c\xc5\x03\x7a\x03\x84\xda\xe7\x4d\x29\x1c\x0f\xe8\x95\x95\xd7\x37\x1f\xea\xd2\x5c\x56\x1f\x6b\x8e\xd3\xae\x55\xde\x43\xf3\x4a\xff\x61\x99\x54\xd7\xb9\xe3\xb8\xa7\x14\x23\x59\xe4\x1d\xe4\x29\x55\x8f\xa0\x3c\x5c\xd9\x8f\xb2\x09\x0a\x6a\xb3\x35\xcd\x4c\x29\xef\x38\x71\x58\xe5\xb7\x84\xf5\xee\xd6\x42\x3e\xe9\x41\x1f\xca\xb7\x61\xbe\xde\x38\x7c\xfd\xcb\x2a\x3a\xf3\x14\xc9\x78\x05\xae\x24\xef\x4d\xed\xb6\xff\xd6\x55\x06\x99\x43\x03\x95\x39\xd5\xbc\xfa\x9b\xdc\x30\x0c\xfa\x16\xff\x37\xdf\xa2\x76\xcb\x55\xbf\x42\x7f\xb7\xa7\xfa\x24\x4d\xd6\x0d\x54\x69\x1f\x1e\x1b\xd9\x0d\x88\xe7\x61\x15\xeb\xad\x38\x3d\xe8\xa7\x32\x17\xf4\x9a\x8f\xa3\x1f\xb0\x2e\x7e\xd9\x31\xa8\x98\xda\x29\xc0\x5a\xff\x9d\x72\xb5\x5c\x69\x37\x0f\x2a\x03\x2e\xb7\xa7\xe3\x30\x4c\xe9\xaa\x7a\x35\x31\x6a\x2c\xbf\x3b\x5c\x38\xfd\xb2\x18\x2e\xf9\xb6\x6f\x22\x02\x47\x0b\xa8\x1b\x97\x5d\xaf\x4a\x45\x5b\x7b\x8d\x62\xaa\x1a\xa0\xb1\x2d\x8f\x9c\x15\x5f\xda\x90\xf7\xd6\x1b\x7d\x49\x29\x78\xc1\x77\x1e\xfa\x8f\xd2\x82\xc4\x75\x01\x5d\xe5\x60\x6b\x68\x66\xbd\xca\xa5\x2d\xdf\xe7\x61\x75\x58\xfa\xb2\xa5\x9a\x82\x9e\x6f\x71\xe9\x1c\x8c\x84\xa9\xc6\x3f\x7c\xa8\x5a\x44\xe1\x06\x08\xfd\xc2\x91\xf1\xea\x98\xe2\xd5\xeb\x57\x71\x31\xf3\xce\xe4\x7a\x0c\xe5\x75\x68\xcf\x6d\x5f\x54\x1c\x91\x92\x67\x2d\xd4\x84\x97\x0f\x4b\x14\xbb\x12\x7d\x89\xe6\xa2\xf7\x93\xfa\x7b\xb9\xe6\xed\xe6\x7b\x04\xf6\x54\x8e\x6e\x29\x05\xa6\xdd\x35\x46\x31\x19\x57\x35\x67\xf6\x42\x2f\x36\xab\x6e\xa2\xc6\xd2\xf3\x22\x05\x1e\x3a\x12\xb4\x9b\x2d\xee\x32\x8a\xfd\x08\x56\xa1\x8d\x0b\xe3\x79\x77\xb8\xf4\x9c\x0e\xaf\xdd\xe2\x18\x6e\x38\x54\xc1\x4e\xa9\x82\xa7\x5a\x64\x1a\x8d\xfc\x23\xe4\x57\x95\x17\x06\x37\xb5\xbc\x36\xf1\xa9\x97\x2f\xb3\x6f\x9b\xe6\xd3\xe0\xc3\x07\xfe\xf2\x62\x99\xe6\xa9\xfb\xd5\x1b\x6c\xa6\x5e\x95\x1b\x75\xeb\x61\x60\x3f\x56\xb7\x61\xc7\xd8\x2c\x1c\xc0\x9c\x2f\xe7\xce\x2e\x0c\xcd\x86\x43\xfb\xdc\xf2\xf1\x39\xb0\xb5\xac\xe7\x06\x38\x48\xa4\x07\x94\xa4\xe0\xc8\x13\x6c\xfd\x3c\x41\xd9\x3f\xa4\xb0\x71\x74\xb7\xb1\x35\x96\x17\x53\x6a\x6b\x3b\xac\x12\xce\x5a\xfc\xc9\xd8\xe4\x89\x48\x8e\xda\xe5\x2c\x34\x8b\x87\xca\xd4\x6c\x87\x43\x7f\x69\xdc\x5b\x54\x1e\x07\xf8\xc3\x2e\x99\x0f\x5e\x8b\xed\x97\x25\xe6\x4c\xb3\xe9\x7d\x3e\xd0\x7d\x47\x2a\x41\xdd\xc2\x21\xa3\xde\x71\xf6\x3c\xdb\xd2\x52\x43\xaf\x40\x9a\x81\x76\x76\xea\x4c\xd5\x32\xc3\x99\xfe\x7c\x99\xe1\x4c\xff\x61\x99\xa1\x5e\x45\xeb\x1d\xaf\xb3\x33\xae\x64\x4c\xe5\x40\xbd\xc3\x35\xc8\x26\xd5\xa5\x8d\xa1\xec\x2d\x6c\xda\x06\xc2\xe5\xed\xd1\xea\xf6\xb3\xd7\xaf\xee\x51\x35\x1b\x5e\xbf\xba\x4f\xa7\x11\xb3\xd7\xc2\x3c\x75\xdd\x30\xf5\xaa\x96\x21\x2f\x9a\xca\x33\x1d\xa7\xae\x3e\x8e\x63\x67\x99\x9a\x0f\xd4\xec\xf0\xf2\x22\xa5\x92\x51\xc2\x5b\x1a\x6f\x19\x8d\xa9\xde\x0f\x9d\x0f\x68\x43\x54\x1f\xe0\x95\xa8\xda\xf8\x73\xd5\xf8\xea\x98\x99\xdf\xd1\xe0\xb9\x6a\x0d\xc8\x5d\xd6\x3b\xe9\x3a\xca\x21\x33\xc6\xd2\x29\x46\x55\x49\xf8\x89\x83\x71\xd5\x7e\x70\x1e\x51\x5d\x53\x6a\x69\x57\x1b\xc1\xe9\x90\xa3\x36\x76\x97\xb9\x4f\x32\xee\xce\xbf\xe0\x8e\x32\xee\xab\x25\x6e\x6d\x36\xd1\x25\x9c\x91\x28\xc0\x72\x7e\xf8\x50\xcd\x46\x15\x29\x56\x2d\x52\xb3\x38\xd8\x34\x55\xb4\x25\x23\x8e\x23\x9c\xfc\xf2\xa1\xa4\x28\xd6\x12\xc5\x32\x0c\xe3\xb5\xb0\x0d\x82\xf5\xb4\x99\xea\xa6\xc9\x70\x7c\x73\x63\xe2\x52\x3f\x5a\x39\x2d\x86\xf3\xac\xf6\x92\x3c\xd7\xd3\xed\x0f\x3d\x28\xe4\xee\x7a\xde\xe5\xc4\xb4\x22\x94\x54\x6e\x70\x53\x09\xe8\xda\x7c\x50\xbc\x48\xbd\xdd\xb0\xe4\x7b\x2d\xd6\xe6\xa6\xc1\x1f\xac\xc7\xda\xfe\x40\xb5\x62\x37\x4b\xea\x61\x4e\x96\xfb\xe2\x72\x7f\xbf\xe4\x1f\xab\xf0\x2e\x16\x2e\x1f\xf4\xcb\x58\x89\x48\xb3\x27\xbe\x0b\x62\x62\xaf\x14\x57\xa6\xa4\x62\xb8\x22\x55\x2b\x35\xd4\xf5\xbb\xf1\x1a\x5d\xbf\x19\x98\xea\x57\x5e\x49\xcf\x8a\x78\xa0\x7b\x69\x93\x1e\x5e\xc5\xa5\x63\x27\x5e\xb3\x39\x23\x1d\x8f\xaa\x41\x84\xaa\x5e\xcd\xed\xaa\x43\xe9\xb6\x74\x08\x47\x0f\xc6\x51\x6d\xd3\x49\x23\x1e\x45\xfe\xfc\x3c\x12\x31\x4f\xc3\xd8\x30\xd2\xfa\x0f\x4b\x77\x96\x86\x6d\x5a\xb5\x69\xb7\x78\x39\x1d\x05\x2f\xaa\xa1\xb0\x74\x26\x5d\xbf\x8a\xf9\x20\xe8\x42\x78\xff\x9d\xc9\x3f\x7c\xb0\xa6\xa8\xec\x19\x34\x43\x5b\x53\x7a\x3e\x89\xb6\xe9\xad\xe2\x71\xf5\x57\xcb\x7c\xb7\xad\x7d\xfc\xd3\x66\x55\xc7\x7e\x24\x5f\xe4\x48\xb1\x5f\xd5\xcb\xd8\xd4\x75\xc6\x2e\xd7\x0f\xed\xbd\x55\x51\x50\xae\x28\xf9\x94\xd4\xfa\x9a\x56\xfb\xa8\xcd\x40\x9b\xd0\xe2\x38\x8c\xcb\x9b\x38\x87\x7a\xb2\xb0\xbe\xd2\x56\x99\x5e\xfc\xd5\x39\x66\xe8\x3d\xf6\x6e\x9e\x89\xe0\x7c\x72\x3e\xd2\xd1\xa4\x47\x2b\xab\xa8\x05\x3c\x6c\x3f\x16\x14\x01\xba\x25\xee\x98\x4f\x4f\x74\x29\x41\xf9\x81\x4e\x86\xd5\x6f\x94\x82\xf3\xb0\xfd\x68\x18\xd0\x37\x77\x94\xca\xa5\x2e\xcf\x9e\x2d\x32\x86\x3e\x32\xbc\x13\x6a\xb4\x90\x4a\xd6\xc8\xcd\xaa\x0f\x8f\xa0\x6c\xbe\x74\x37\xc3\xdd\xdc\x34\x04\x09\xc0\xe3\xa1\xf4\x22\xe5\xe2\x94\xd7\x47\x51\xe2\x1a\x8d\xec\xeb\x27\x85\xaf\x2b\x2f\x42\x3b\x0d\x77\x29\x07\x9a\xc9\x2d\xe7\x00\xbf\x21\x5d\xf7\xe4\xcf\x19\xd1\xb9\xfd\xc2\xd7\x4f\x8b\x5f\x77\xd4\xd7\xb3\x8b\x33\xb6\xd1\xb0\x6b\x37\x41\xb5\xaf\x2e\xd0\x38\xeb\xae\xbb\x7c\xd3\x55\xbc\xe4\x4c\x84\xae\xb7\x50\x61\x0b\x57\x5c\x8e\x95\x9c\x2b\xde\x72\xd1\xdb\x9d\x59\xd2\x79\xf3\x1d\xe7\xca\x86\x7c\x1f\x86\xbc\x1c\x05\xdd\x86\x81\x03\x62\x3c\xc2\x65\xa9\x65\xca\x2d\xde\x35\x59\x3b\xf9\x69\xd6\x0e\xcb\x59\x3b\xfd\x37\x59\xcb\x92\x3e\x7d\x23\x67\x1f\x3e\x6c\x91\x73\x2b\x99\xc3\xe9\x41\x29\x87\x5b\x3b\xd2\x43\xa4\xad\x2c\x10\xab\xc9\x8a\x5c\x1b\x99\x26\xda\x9c\x35\x1f\x98\x1c\xe5\x30\xa9\x31\x12\xb5\xfb\x4c\xd7\x71\xb4\x7c\x20\x49\xf0\x96\xb8\x55\x11\x1e\x52\x12\x9b\x8f\xc6\xa3\x79\x92\xbc\x1e\xf3\xaa\x98\x2e\xbf\x5a\x4e\x98\xda\x85\xe0\xb9\xbe\xcd\x7f\x9e\xec\xa8\x2f\xd3\x2c\xad\x70\x0f\x0a\x83\x8e\xe7\x13\x7d\xe6\x0c\x99\xab\xdc\x58\xc6\xa3\xba\xc8\x71\x9c\xd4\x0b\x37\x38\xa2\x12\x14\x26\xf5\x42\x04\xf3\x24\x69\x9c\xa9\xf4\x8b\xb7\x3e\x4e\x90\xeb\x42\xd0\xf5\xf4\x25\x7a\xe6\x26\x19\x13\x78\x3d\x27\x81\xfc\xfa\x2a\xcb\x5a\x90\x37\x6b\xdd\xe1\x65\xda\x4b\x96\xf9\x62\x6d\x16\xf3\xaf\x73\xb1\xbe\x04\xe5\x58\x66\x94\x14\xda\x8e\xe4\xfa\x72\x0b\xee\xfc\xbc\x05\xa3\x64\xb5\x70\x5c\x16\x4e\xaa\x92\xc5\x15\xca\x79\x51\x5f\xde\x6e\xdc\x3e\x51\x0b\xac\xcc\xf8\xa6\x19\x25\xf4\xd6\x52\xe6\xcb\xfa\x9d\x79\x92\xac\xf1\x37\x4b\xba\x08\x09\xe4\xda\x34\x21\xef\xe9\xc6\x6b\xd6\x75\xde\xf0\x41\xbb\xb2\x92\x23\x25\x4f\x2f\xaf\x70\x3d\x6c\xc9\xe9\x6c\x49\x7d\xd3\xcf\x34\x42\x9f\x1e\x64\x24\x8b\xa4\x14\x5d\x7d\xe3\xe5\x45\xe4\x2b\x84\xbe\x3e\x15\x2e\xeb\x89\x94\xae\x47\xf3\x38\x79\x7d\x6d\xc8\xbc\x8d\xfa\xab\x53\x4f\xde\x22\x61\xa2\xcc\x08\xf2\x24\x44\x41\x07\x27\x55\xa3\x6a\xbc\x6a\xbd\xae\xd0\x65\xb2\x43\x12\x8d\x9b\x94\xde\xc7\xcc\xeb\xfc\x6c\xf9\x94\xf1\x7c\xa0\x96\x85\x38\xf5\x67\x8f\xc2\x4a\x9d\xc0\xa9\xdd\x38\xfc\xc3\x07\xfa\x41\xa1\xbb\x46\x8d\x55\xf5\x40\x3a\x66\xbf\x91\xd6\x7f\xf4\x4d\x2e\x0f\x73\xe3\x84\xde\xc7\xda\x94\x27\xf0\xdc\x6c\x2f\x6f\x68\x6e\x37\x86\x7f\xba\x98\xc2\x50\xde\xce\xea\xab\x02\xbb\x0f\xc3\x47\xe3\x91\x5a\xf7\x47\xbf\xa8\x02\xf4\x51\x03\x90\x87\xcb\x2f\xa8\x00\xc2\x00\x81\xaa\x5a\xdf\x00\x8e\x83\x5d\xa0\x6a\x59\xb8\xde\x57\x2e\x65\xd7\xab\x5a\x53\x1a\xf2\x60\x19\x4b\xf7\x0f\x94\xfa\x23\x95\x1d\x12\x30\xb9\x83\x36\x84\x70\x15\xc4\x0b\x6b\xb4\x23\xdd\xbf\xec\x92\x27\x89\xe9\xea\xc6\xd9\x54\xbe\xa6\x4b\x0b\xb9\x6c\x7b\x6b\xf1\x5d\x1b\x17\xbf\x67\x16\xe9\x69\x52\x50\xe6\xf7\x6c\xa5\x9e\x9f\x24\x46\x1e\x6d\xae\xa3\xcd\x4b\xd1\xa2\xd5\x68\x51\x62\x18\xaf\x77\xd5\xbe\x5e\xeb\xf5\xff\x61\xad\x57\xcc\x58\xf1\x6b\x3a\x3c\x4d\x8c\x46\xff\x9f\xd6\x83\xc7\xe3\x3c\x11\x1d\xce\xb2\x3c\x4d\xb2\x15\xdf\x9a\x05\xdd\x30\xbb\x6b\xfb\xc0\x1f\x8d\x06\x6d\xfb\xd2\x35\xc4\xa5\x17\xf9\xc9\x20\xa2\x0d\x21\x6b\xde\x4e\xcd\xd6\x54\xd3\xe4\x81\xa3\x68\x24\xd3\x08\x5d\x62\x28\x6e\xc4\xae\x59\x55\xe8\x58\x38\x9c\xf8\xbf\xd8\x72\xdc\xb8\xc1\xda\x5e\xda\xb2\xd2\x26\x77\x0e\x96\xba\x3d\x56\x7c\x76\x6d\xba\x74\xbe\x22\xa0\xf3\x15\x0d\x2e\x8f\x84\x36\x42\xb9\x7e\xa8\x72\x73\x3f\xcc\xcf\xf8\x2d\x9e\x4d\x5e\x9b\xc6\x3c\x8a\x44\x9c\x14\x6f\x19\xcd\xdb\x26\xaf\x59\x5e\xe0\x78\x81\x5b\x22\x4c\x27\x55\x5e\x73\xf4\x35\xeb\xee\x3c\x12\x2f\x2f\x17\xa8\x82\x0e\xa6\xd9\xee\xad\x3b\x55\x27\x3a\x5c\xd5\x31\x56\x8e\x52\xe6\xc6\xcd\xc2\x32\xa5\xff\xc0\x1f\x5f\x55\x9f\x90\xc7\x91\xb8\xda\xe6\x2c\xbc\x80\x27\xa6\x72\x20\xe8\xc3\x51\xf3\xf6\xcb\x0b\x19\x04\x55\x79\xc0\x35\xc5\xc3\xb7\x47\x50\x12\x80\x86\x3f\x0d\x51\x1f\x87\xa8\x78\x18\x3e\xd2\x4d\xb4\x38\xf4\x71\x78\x41\x90\x61\x23\x1e\xa7\x9e\xed\x45\x3c\x48\xe9\xec\xa2\x43\x4d\xec\x43\x60\xbc\xea\xb3\x99\x8e\xd1\x70\xb1\x9b\xce\xae\x72\x4f\xe7\x74\x78\x79\xe9\x60\x3f\x6d\xc2\xe8\x5a\xd5\x19\xfb\xda\xd5\xe7\x09\x9f\xd7\x3b\x8e\x19\xcb\xe7\xde\xeb\xd9\xf5\x01\x5d\xfd\x79\x41\x25\x89\xba\xc7\xfb\x75\x67\xc7\xb1\x39\x55\x63\x65\xcd\xd1\xb8\xa9\xcd\xdf\x3e\x4a\xbe\x78\xa6\x53\xdd\xeb\x12\xc3\x2e\xb0\x26\xb1\xe0\xed\xc4\xe6\x6d\x64\x18\x67\x47\x72\xe8\xfc\xce\x45\xf9\x84\xce\x64\xfd\x09\x9d\xc1\xb4\x78\x57\x72\xf1\x9c\x5f\x79\xa4\x47\x8b\xe4\x49\x8d\x1f\xd9\x71\xc5\xce\x53\xe9\x52\x3e\x59\xd2\x50\xb4\x8e\xe9\x88\x61\x95\x9b\x9e\xb4\xc9\xf1\x9a\x08\xe9\xe9\x7b\x69\x7e\x21\x8b\xb2\x65\xda\xaf\xda\x5a\x39\x6f\x37\x9e\xa6\xb4\xe9\xf0\x34\x25\x0b\x79\x15\x3f\x4e\xc2\x1c\x85\xfe\x0e\x70\x14\xfe\xf3\x36\x62\x1c\xe0\xb5\x6e\xc2\x69\x3d\x77\x53\x1b\xed\x94\x77\x04\xd6\x7f\x7d\x7f\x90\x5d\x0f\x3d\xf3\xaa\x25\xcd\x97\x53\x33\x76\x93\x75\x67\x1b\x79\xa1\x8f\x9a\xbc\xd4\x35\xb1\x62\x28\xcb\x2f\x2f\x4f\xb4\x2f\x92\xd9\x9a\x3d\x65\xaf\x57\xdd\xa6\x5e\x61\x9b\x54\x5a\x2a\x0c\xb5\x4f\xdf\x55\x9b\x70\x0d\x9a\xaf\xec\x65\xac\xda\x30\xd7\xdf\xae\x5b\x50\xfc\x32\x79\x3c\xbc\x41\xf6\x75\x39\x06\xdb\xfc\xf4\x7f\x7e\xd4\xfe\xf7\xf5\xfd\xa7\x86\x7c\x10\x1e\x45\xae\x92\x3a\xf6\xc3\xc0\x79\x2c\x3c\x2d\x4a\x2b\x6c\x55\x5b\x16\xd6\x96\x95\x1d\xb6\x7c\x96\x06\xb1\x0c\xfa\xf6\xb8\xb5\xd3\xe0\xe6\x65\xb6\xb7\xcb\xcd\x26\x1d\x9b\xdc\xda\xa9\x5f\x7a\x52\xd7\xf5\xfa\x55\x5c\x5e\xf0\xd5\xbd\x0b\x35\x08\x2b\x74\x02\x51\x3e\x07\xb2\xc6\x83\xc2\x65\xc9\x5a\x42\x4f\xfa\xbe\x35\x48\x9f\xe4\x20\x2d\x78\x3c\x98\x16\xe8\xca\x69\xd5\x53\x95\x1b\x65\xdf\xf1\x43\xbd\x65\x85\xdc\x34\x0b\x58\x85\x34\x08\xfb\xe3\x4d\x49\x9d\x6d\x91\xa9\x86\x41\xa1\x4b\xbb\x04\x74\xa6\xae\xbe\x24\x8e\x89\x42\xb3\x41\x5d\x9d\xb0\x2e\x19\x13\xfc\x69\xd9\x84\x6d\x91\xc3\x53\xba\x21\x7c\x2b\x30\xd4\x37\xad\xda\x15\x97\xa7\x97\x78\xed\xc0\xad\x3a\xd0\x47\xfd\x8a\xd7\x7c\x9b\x57\x1d\xb0\x6a\x7b\x71\x79\x3f\x6e\x34\x2d\xeb\xbb\xdb\xb0\x34\x95\x92\xe7\x6b\xfb\x31\x37\x41\xe7\xe7\x53\x4b\x35\x8f\x11\x72\x5a\xa7\x44\xa3\x8f\x7c\x22\x8e\xc2\x15\xeb\xac\x30\xb9\x4d\x7b\xe5\xb8\x1a\x3d\x4b\x41\xc7\xa9\x6c\x7a\x48\x96\x06\x70\x61\x27\x89\x4e\x3f\x5b\xcb\x4b\x82\x67\xf2\x27\xad\xb6\x7a\xb2\x65\xc1\x00\xb1\xa6\xf9\x34\x28\x8e\x54\x7f\x3c\x0a\x1a\x27\x03\x5e\xf1\x82\x0a\x57\x86\x8c\x07\x0b\xe4\xed\xec\x31\x0a\x0e\x12\x26\xa1\xe3\xf5\x3d\x11\x1b\xf2\xb0\x2b\x7f\x38\x7c\x04\x9f\x5b\xc2\xaf\xf3\x87\x1b\xfb\x11\x3c\xa7\xce\x6b\x9e\xf3\xfa\xa8\x1c\x2b\x5b\x86\x7a\xa0\xf9\x1d\x7f\x42\x0d\xff\x47\x7e\x7e\x2e\xf3\xed\x01\x43\xd3\xad\x1d\x73\x5c\x3b\xf8\xea\x89\x8b\xc0\xdc\x6e\x04\x7f\xfa\x8d\x60\x73\xd3\xb8\xaf\xf6\x4b\xc5\x1a\x3e\xf0\x87\xed\xc7\x47\xf2\x8b\xfd\x6a\x34\xdc\x9a\x1b\x57\x87\x38\xa2\x5c\xaa\x8f\x48\xce\xae\x11\x24\xb2\x4e\x0a\xaf\x5a\x53\x7d\x4e\xb2\x27\x67\x65\x37\x79\x70\x1e\x31\xe7\x2f\x2f\x5c\x75\x18\xd7\x94\x22\x1b\x29\x35\xcf\xf9\xaa\x7e\xeb\x5c\x76\xad\x46\x84\xdd\x49\x3e\xf5\xd6\x48\xb2\x83\xde\x74\x9a\x8e\x3e\x58\xd8\x94\xcd\x2f\x70\xa8\x0a\x86\x0d\xc7\xb4\xca\x9f\xb3\xf5\xe7\xe8\x5b\x2b\x1f\xb2\xb0\x86\xd5\xb1\xf2\x09\xbd\xb1\xb3\x5c\x2a\x6e\xfc\x18\x93\xd7\x37\xf9\x89\x3a\x7f\x35\x0a\xd7\x0a\x26\xf2\x65\xe3\xb1\x01\x0b\xec\x28\xbb\xe6\x76\x63\x57\x2e\x4a\x76\x37\x37\x8d\x05\xb5\xb2\x52\x1f\x25\x6d\xa2\x69\x3f\xca\x45\xc1\xfe\xb9\x78\xb0\xe9\xe9\x69\x72\xfd\x31\x79\xd8\x7d\x04\x5d\x30\xda\x9c\x71\x4d\xf9\x52\xb0\x4c\x64\x6b\xc7\x90\x66\xab\x77\xdb\xe0\x9b\xdb\x0d\xff\x4f\x54\x69\x1a\xbe\x56\x65\x02\x33\x4f\x46\x3c\xf8\x8f\x06\xb4\x33\xcc\xe6\x8e\xc2\xd1\x26\xe0\x3b\x73\x10\x55\x93\x07\xff\x11\x02\x68\x1b\xc6\x0f\x37\x77\x0c\x4c\x6f\x82\xb9\x32\xc1\x33\x33\xaa\x75\x9e\xab\x46\xb9\x7a\x28\xe3\x51\x6d\x9f\x57\xcf\xc0\x86\x42\xce\x0d\x5d\xa5\xa7\xd2\xf9\x66\xa9\xb8\xa5\x95\x1f\x77\xdd\x58\xb8\x74\x9f\x32\x1b\x85\x0b\xd2\xba\x55\xba\xa7\x9b\x96\x6c\xa1\x82\x9d\x4e\x9f\x0c\x5d\x3c\xb8\x8f\xe6\xc6\xc3\xe3\xab\xb6\x41\x45\x3f\x71\x93\xe5\xc4\x7c\xda\x92\xae\x95\x86\xd3\xcc\x43\xd6\x4f\xd9\xf7\xe3\x70\xd4\x8b\x7d\xb6\x36\xef\xb4\xac\x1a\x57\xad\x97\x17\xc1\x1f\x66\xf6\xe3\xc3\x99\xfd\x88\x22\x71\x34\xae\xda\x30\x4f\x0c\x10\xca\x54\xe6\x7c\x15\xa6\x53\xaf\x0a\xf3\xc7\x2b\xdc\x57\xed\xda\xe8\xa9\x76\x3a\xac\x96\x97\x80\x52\x56\x50\x54\x6e\xd0\xc5\x70\xd5\x73\xe9\xe6\xda\x7e\x48\x7b\x7c\xf2\xc0\x86\x63\xfc\x78\x15\x0f\xfc\xd1\xb4\x5e\x0d\x38\x8f\xaa\x02\x06\x43\x5c\x7a\x1a\x8d\xe1\xb4\x2a\x00\x75\x18\x5d\xb8\x8d\x37\x4b\x67\xc7\x82\xa7\x62\x4d\xd9\x56\xe6\x96\xdc\x32\x08\x42\x7a\xd2\x21\x29\x66\x48\xbf\xae\x17\x03\x9e\x3f\x91\x2b\x1e\xc1\x95\xcd\x84\x2c\x7d\xc3\x31\xfb\x0f\xee\x23\xd0\x6d\x6e\xda\x4b\x6d\x85\x55\xc7\x50\x0e\x93\xdd\x4d\xbf\xbf\xc9\x79\x55\x7a\x85\x42\xbc\xba\x9d\xe2\xc8\x94\xf2\x58\xb1\x57\x75\x48\x17\xf8\xea\x48\x15\xb8\x5e\x4c\x47\xac\xa6\xd3\x70\xcc\x51\x58\x35\x36\xf7\x5c\xde\x70\x4c\x47\xfa\x4a\xfa\x3f\x83\x34\x8d\x92\xaf\xf5\x4f\x70\x8e\x12\x05\xdb\xcd\x31\x36\x83\xfe\xa6\xbc\x38\xb7\x27\x48\xce\x48\xde\x8f\x9f\x5c\x58\xe4\xde\x79\x2b\x19\x81\x7d\x72\x61\xee\xfe\xdf\x54\x71\x27\xf0\xa2\x48\xa4\x6c\x5d\x6b\x63\x1e\xf7\x5d\x0e\x96\x69\xad\xe6\x11\x2c\xf3\xc4\xe5\x9b\xd6\xe6\xcc\xe5\x0d\xa5\x30\xca\xe2\x37\x32\xff\x4f\x7f\x7e\x72\xe1\x58\x14\x10\x7f\x7d\x72\xe1\x5b\xee\x9e\xc9\x32\xad\x4d\xbe\x19\xb9\xfc\xf5\x9f\xfb\xbb\xcc\xee\x8d\x54\x87\x18\x78\xff\x62\x88\xd0\x68\xca\x62\x74\x73\xb7\x73\x13\x5e\xa5\x3b\x03\x40\x7f\x71\xe1\x4d\x2b\xde\x22\xce\x8a\x1f\x8d\xc6\x51\x99\x6f\xd7\x7e\xa4\x2b\xef\x45\x1c\xb6\x7b\xa3\x2b\x1d\xbb\x8a\xb4\x13\xf0\x28\x19\x84\xa9\xbc\x92\x50\xbb\xef\xe4\xa4\x76\xf1\x3e\x86\xa2\x77\x7a\x65\x3a\x6d\x82\x29\xda\x35\xcf\x69\x54\x90\x33\x3e\xd2\x34\xfb\x7e\x89\x86\x6a\x93\xa2\x09\xab\xb1\x51\x26\x9a\x1a\x2c\x44\xca\x2f\xa3\x28\xea\x65\x21\x2b\x17\xea\xb6\xba\x22\x9d\xfd\x96\x93\x2e\xc7\x22\x9e\x2b\x7c\x1c\xe6\xf8\xab\xf2\xed\x10\xc5\xd1\x2d\x24\x7a\xed\x89\xa9\x42\xf7\x7a\x8d\xd3\xa8\x54\x8b\xad\x52\x2d\x9e\xcb\x2b\x30\x8a\x7b\xe8\x34\x2e\xca\xdc\x87\x25\xee\xd6\x38\x49\xc3\xd1\x95\x78\x1e\x8b\x44\x9f\xe6\x56\x51\xd3\x89\xae\xc4\xf5\x37\xe4\x15\xdb\x9d\xad\xd9\xa2\x71\x32\x28\x64\x74\x3f\x8b\x9f\x88\xc0\x29\x96\x7d\xd1\xc9\x08\x6b\x5b\xf6\xcc\x2b\xd3\x8b\x2d\xbb\x3f\xc8\x69\xc5\x06\xb2\xce\x97\xf0\x85\x16\x77\xee\x97\x68\x85\x16\x3f\x73\x74\x8b\x27\xeb\x5a\xf6\xb6\x97\x47\x3d\xfa\x59\x35\x3c\xfd\x9e\x33\x2e\x75\x81\xe6\xb7\x9c\x54\xac\x86\xa3\x61\x8e\x5f\xdf\x05\x76\x83\x9c\xa3\x50\xb3\x76\x3b\x47\xcb\xe6\x56\x84\xe3\xc6\x49\xb9\xb1\x17\x79\x63\x27\x22\xed\xa4\x3c\xd5\xe5\x6e\xd9\x85\x3a\x79\xbb\x13\x9c\x4d\xf8\x4f\x44\x84\x5c\x90\x64\x42\xa2\x57\x12\x12\x74\x9f\x07\x7a\x25\x21\x51\xc4\x91\x90\x68\x95\xf9\x48\x20\xf4\x56\x04\x42\x4f\x0b\x84\xde\x7a\x81\xd0\xd3\x02\xa1\xb7\x2a\x10\x7a\x5a\x20\x6c\xf4\x8a\x03\x38\x0e\x7d\xea\x21\x12\x19\x4f\x78\x63\x99\x4c\x9d\x44\x22\x93\x35\x64\x45\x72\xbb\x65\x8a\xee\x3e\x3d\x2d\x18\x7a\x2b\x82\xa1\xa7\x05\x43\xaf\x2c\x18\x7a\x5a\x30\xf4\xde\x12\x0c\x3d\x2d\x18\x7a\x25\xc1\xd0\x2b\x08\x86\x62\x6d\xb6\x4a\xb5\xa9\x05\x43\xaf\x20\x18\x8a\xdc\x87\x39\x77\x3e\x60\x7b\x7a\xc0\xf6\xd6\x0f\xd8\x9e\x1e\xb0\xbd\xd5\x01\xdb\xd3\x03\xb6\x57\x1c\x5f\xe5\x8a\x3f\xce\x6a\x36\x59\x57\xf1\x27\xcb\xe4\x72\xf5\xde\xf6\x72\xea\x52\xf5\x36\xbf\xe9\x06\x4f\xca\xf5\x7b\x34\xcc\xe3\xac\xaf\xdf\xdd\x20\xe7\x28\xd4\xaf\xdd\xce\xd1\x6a\xd4\xf5\xf2\x51\x57\xac\xc9\x45\xb1\x26\xd5\xa8\xeb\xe9\x51\xf7\xe6\x68\xca\x9c\x57\x66\xe3\xc9\x9d\x16\xc7\x13\x59\x53\x81\xfe\x66\xe3\xa9\x88\xd3\xe3\xa9\x88\xa3\xf1\x44\x41\xec\x01\xbb\xda\xa2\x28\x31\xc1\x84\xe7\xb4\x72\xb3\x4a\x74\xa7\x57\xa6\xcb\x66\x95\xa8\xeb\x52\x5c\x95\x73\x45\x1b\x4f\xd6\x11\xa9\xd5\x25\x7a\x52\x64\x28\x36\xab\x44\x5e\x16\xbe\x9b\x35\xab\xc4\x9c\xfd\x96\x93\x64\xab\x4a\x30\x0e\x1b\x1b\x19\x61\xb9\x59\x25\xa1\x5b\x48\x95\x9a\x55\x42\xbd\x02\xfa\x46\x1b\x6d\x25\x66\x9e\x65\x33\x59\xa9\xbc\xa3\x22\x6d\x5d\xe5\x9d\x79\x65\x7a\xb1\xf2\xf6\x07\x45\xda\x6a\xfd\x5c\x14\x13\x5f\xad\x9f\xdb\x5e\x4e\x5d\xaa\x9f\xe6\xb7\x9c\x54\xac\x9f\xa3\x61\x8e\x5f\x5f\x3d\xbb\x41\xce\x51\xa8\x1e\xbb\x9d\x57\x4f\x26\x8f\x25\xe6\xbe\x93\xc7\x58\xaa\xb9\xf7\x3f\x9b\x36\x1c\x9e\xf2\x1a\x9f\xb8\x0c\x3a\x43\xfe\x2f\xd6\x6a\xc8\x6e\x87\xe3\x20\x65\x70\xf5\xaf\x23\xb8\x71\x38\x8e\x18\x04\xd3\x7f\xa1\xcc\x53\x84\xa7\xd0\x0b\x18\xac\xde\xec\x82\xbe\x3e\x5f\x6c\x9b\x26\x97\x4f\x32\x9e\xb8\x30\x44\xf0\x3c\xd1\xa0\xaf\x8d\x27\x81\x34\x33\x38\x6b\x1c\xd1\x93\xe9\x84\xfc\xc2\x0a\x69\x77\x7b\xd8\x79\xd4\x0f\x2f\x8a\xdc\x78\x79\x2c\xe6\xe4\x34\x22\xa9\x38\x21\x1d\xb7\x1e\xe1\xca\xb0\xce\x36\x9d\xcd\x8e\xd8\x14\x46\xc3\x9f\x56\x7d\xe0\x40\x49\x35\x02\xf9\x3e\xcd\xab\x7e\x89\xf8\xe1\x51\xdb\x6f\xca\xc7\x6f\xa3\x92\xa5\xe3\x61\xfb\xf1\x55\x19\x61\x72\xdc\xce\xe3\x6b\x6e\x2c\x21\xe3\x47\x64\xc0\xc4\xb4\x30\x94\x2c\x1b\x07\x8c\x1f\x2a\x1b\xe4\x9a\x67\xd9\xd4\x44\x34\x0b\x78\xd1\xa0\xb2\x30\xdf\xed\xc0\xae\xb9\x0d\x6d\x73\x1b\xce\xc8\x64\x32\xa6\x67\x12\xdb\xd2\x74\x22\xab\xe9\xd4\xdc\x86\x2b\x2c\x80\xd7\xaf\xb6\xff\x32\x91\x62\xd0\xde\xee\xd5\xc3\xf6\xa3\x39\x7e\xd8\x7d\x84\x53\x73\x4b\x7a\x2c\xad\xc8\x83\x00\xda\x3a\xb7\xfb\x97\x39\x56\xec\x43\xe3\xea\x61\xe7\xd1\x9c\x3c\xb4\x1f\x61\xe3\xd4\x5c\x61\xff\x91\xa5\xd6\xc8\x18\xb3\x8c\x76\xcc\xed\x46\x47\x1e\x2b\xeb\x68\x9b\xcb\xa9\xb4\xb0\x5c\xd1\x51\xa9\x87\xce\x23\x35\xe3\xb5\x7c\x0d\x0d\x53\x90\xc8\x9d\x47\x03\x4e\xcd\x41\x54\x0d\x1e\x3a\x8f\x70\x0a\xd7\xda\x0c\x73\x6a\xe4\x56\x97\xc5\x87\x0f\x84\xa1\xfa\x68\xab\x43\x07\x3f\x94\x11\xfb\xf4\xc3\x07\xf7\xe5\x45\x06\x86\x2f\x2f\xdb\xa6\x79\x6a\xfc\xf0\xa5\x75\x06\xf3\x31\xe2\xf0\x8d\x37\x72\xce\x6d\x0a\xd8\xef\xcc\xf3\xe4\x6b\x75\xc4\x4d\x24\x9b\xdb\x46\x1d\xc3\x16\x86\x77\x8c\xa5\xae\x00\x96\xf1\x83\xfa\xec\x57\x5f\xda\x60\x2c\x18\xa9\xb2\x7d\xe3\x8f\xc0\xf1\xaf\x61\xd4\xfd\x9a\x6d\xbf\x41\x84\x11\xaf\xed\xf1\x15\xd4\xd3\x53\x39\x89\xd7\xcc\x32\x9f\x67\x55\x56\xe6\x21\x37\x1d\x69\x38\x5a\x36\x37\xa9\xaf\xda\x9b\x87\x1c\xf2\x0a\xa7\x0b\x39\xf4\x45\x0d\xd0\xb7\xb6\x95\x2d\xea\x55\x9e\x70\x2b\xd4\xd8\x21\x37\x37\xc4\xc3\xb7\xc7\x4d\xfc\x0c\x94\x3b\xe7\xf2\x67\xf2\x26\xe4\x06\x58\xf2\x33\x1a\xa0\xcf\x10\x80\xa5\x39\xdb\xdc\x7c\xc5\xef\x7c\x6d\x6f\x6e\xd6\x77\x37\x37\x1b\xb2\xf2\xab\x0b\xf3\xdd\xb6\x91\x59\xa9\xfc\x7f\xb1\x1c\x27\x81\x33\xe2\x33\xb6\x6c\x76\xde\x36\xe9\xe9\xd0\xd2\x75\x96\xc2\x6b\xc6\x58\x64\xf9\x62\x72\x66\x5c\xd7\xb2\xe5\xc1\x7e\xd4\x16\xa9\x0f\x1f\x9c\xbf\xa4\x69\xc9\x31\xf2\x07\xc0\xfe\x6d\xae\xca\x52\xf0\xff\xd7\x5c\xfd\xf9\xff\x9e\xab\x30\x48\x07\xec\x8d\x17\x37\x9c\xc7\xaa\xb1\xb9\xf3\x6f\xac\x36\x94\x56\x32\x1e\x31\x18\x95\x2d\x20\xdf\xbf\xbb\x13\x6f\xe1\x8e\x79\xec\x7c\xff\xce\xe0\xdd\x76\x91\x3a\x1b\x70\x48\xc7\x19\x26\x1d\xe3\x0c\x37\xe2\x43\xa1\x56\x4c\xe6\x0a\x46\xf1\xac\x99\x6b\x25\x61\x37\xc8\x39\xe4\x2c\x2d\xc1\xa3\x61\x63\x1e\x55\x29\x0c\xf4\xf7\xc1\x43\x05\x6e\x39\x35\xd2\x24\x24\xf2\x7a\xc2\x73\x72\xd7\x1b\x89\x70\xac\xf2\xf3\x30\x7b\x7e\xcc\x49\x6a\x55\x47\xaa\xb5\x44\x5e\x15\x63\x2a\xf2\x05\x8f\xf9\x48\xa4\x22\x56\x3c\x17\x7d\xe4\x91\x5f\x4e\xa2\x30\x48\x84\x39\x1b\x37\xee\xca\x59\xbc\xc5\x2c\xbe\xbd\x46\xa4\xb5\x25\x15\x92\x41\x37\xaf\xc5\x79\x54\xed\x52\x22\xdd\xbc\x9c\x6f\x26\x42\xd1\x75\x16\x18\x3c\xa7\x59\x32\xcf\xe9\x8a\x7e\x2a\x51\xd7\x5c\xd1\xbc\x44\x9e\x71\x93\x90\xff\xd4\xd8\x90\xa1\x01\x4f\x6e\x78\x1c\x78\x81\xab\x49\xbf\xe6\xa9\x5d\x09\x9e\xe0\x5a\x49\x22\x22\xc1\x73\x92\x72\xb8\xa3\x48\x8b\x6f\x85\x2c\x94\x5d\xf2\x28\x8e\x6f\x9f\x7f\xa6\xf2\xab\x4c\x33\xe8\x47\x59\x99\xfa\x11\xc6\xe3\x8e\x23\x5d\xf9\x9a\x12\x3e\x70\x73\xc2\x55\x38\x55\xd8\xce\x73\x09\x9b\x28\xb4\xbd\xdb\x38\xe2\x55\x0a\x03\xfd\x95\xe6\x37\x49\x24\x9d\x1b\x53\x3e\x72\x14\xfb\xad\x68\x4c\xcb\xec\xe1\xf3\x2a\xfb\x09\xb7\x84\xaf\x62\x5c\xf1\x65\xea\x05\xbd\x2a\xa0\x73\xfb\x7e\xbc\x42\xcf\x3c\xa9\x49\xfc\xd3\x1b\x0c\x9e\xd0\x85\xd8\x8b\x97\x59\xe8\x01\x00\x5d\xf2\x68\x85\x1a\xfa\x9a\x38\x8a\x1b\x1b\x4b\x54\xea\xfa\x12\xd7\xce\x63\xb6\xbd\x24\xf5\x02\x3b\xbd\xe6\xfe\x38\xfb\xf0\x65\x37\x67\x90\x6f\x10\x88\x62\xe5\xa6\x27\x05\x32\xb9\x55\x4f\x85\x43\x09\xe8\x8c\x17\x2a\x47\xbe\x5c\x70\xde\x57\x0f\xc0\x29\x8e\xc3\x55\x86\xc2\x07\x4e\x73\xea\x4a\xa5\x3c\x3d\xad\x10\x75\x95\x0e\x0a\x35\x72\x15\x4e\x97\xa8\xa7\xf1\x3a\x6a\x9e\xf0\xd1\x71\x4e\xef\x84\x71\x5a\x2a\xb2\x53\x48\x9a\x3a\xec\x52\xe2\xb3\xee\x7a\x7a\x9e\xfc\xfe\x3c\xe7\xe8\x05\x8e\x88\xfd\xb9\x17\xb8\xc4\xab\x3a\x63\xe0\x88\x99\x62\x1e\x77\xdf\x64\xbe\x0a\xa7\x45\xce\xa4\xdb\x70\xad\x52\xcf\x3d\x7a\x34\x74\xdb\x7b\x41\x22\xe2\xb4\x34\x8a\xa2\xbe\x6e\x1b\x49\x2c\x94\x71\xb1\xad\x28\xb1\x18\x85\x13\x51\x8a\x26\x7e\x5b\x43\xd3\x11\x23\x97\x97\xa8\xf9\xe8\x4c\x5a\xcb\x04\x1d\xe7\x39\x8b\x83\x2b\x3c\xe1\xeb\x71\x65\xdb\x05\xf4\xca\xa8\xfb\x36\xe1\xcb\xe4\x95\x8a\xf6\xed\xb7\x78\x74\x63\x1d\x4f\x73\x86\xb5\xfd\xb7\x3b\xcb\x19\x56\x3b\xe0\x74\x85\xa8\x12\x7e\x38\xb2\x1f\x73\xda\xba\x3e\x76\x53\xcc\xff\x6a\x17\xf5\x7e\xcf\xa9\xeb\x7b\xd1\x6d\x31\x81\x75\x1d\xf1\x6e\xc2\x75\xeb\xe3\x3a\xb6\x50\xa8\x7d\xde\x08\xcb\x3d\xc5\x16\xd2\x60\x52\xc4\x8d\x7f\x3a\x0f\xa1\xbc\xc6\xb5\x31\x83\xd3\x7c\x26\x3b\x1d\xd7\xfa\x71\x38\xfa\xd6\x39\x3f\x33\xcf\xc6\x8d\xd3\xf1\xb2\x8c\x95\x18\x29\x63\x29\x0c\xf4\x57\xca\xd8\x25\x76\xd9\xda\x12\x79\xc5\x97\xa9\x5a\xc6\x4a\xf4\xfb\x95\x8f\x65\x95\xa1\xf0\x4f\xff\xaf\x0c\x58\xe3\x92\xb2\x17\x2f\xb3\x48\x21\x2c\x91\x9d\x68\x85\x8a\x42\x58\xe2\x46\x2b\x51\x49\x06\x4b\x5c\x3b\xa7\x2d\xc9\x60\x89\xbf\xec\xe6\x0c\x25\x19\x2c\xb1\xe9\x49\x63\x23\xa7\x97\x3b\xb1\xca\x78\xa1\xf6\x96\x85\xb0\x24\x1c\xae\x32\x14\xbe\x70\x9a\x53\x57\x2a\xe5\xe9\x69\x85\xa8\xab\x74\x50\xa8\x91\x62\x0f\x57\x89\xc6\xeb\xa8\x79\xc2\x47\xc7\x39\xbd\x20\x84\x25\xce\x29\x24\xbd\x22\x38\x25\x65\x7a\x90\xb3\xfc\x44\xca\x4a\x9e\x71\x77\x29\xbd\x4c\xb6\x2a\xfa\xe8\xcd\xc4\x96\x38\x93\xe5\x94\x96\x8a\x3d\x7b\x83\x9e\x17\x7c\x7f\x8e\x72\xbc\x38\x3a\x48\x8e\x67\xb1\x70\xd4\xad\x96\x60\x72\xd5\x58\xc3\xa1\xd3\x3c\xe6\xbc\x4c\x5e\xca\xf5\xf9\xd5\x0a\x59\x47\x4d\x84\x8e\x3a\xf0\x1c\x51\x4e\x76\x31\x29\xd2\x0a\x91\x9a\x19\x21\x93\xbc\x9a\xe4\xc6\x39\xa5\x10\xe3\x26\x50\xe8\x34\xcc\xf5\x57\xd5\x7d\x67\x28\x9a\x8a\x15\xf2\x73\xd1\x24\x50\xc9\x4d\x18\x24\xb9\x6e\x9c\xa4\xe4\xb9\x88\xb4\x5f\xf2\x7c\x8a\x18\x39\x13\x35\x7d\x1f\x51\x23\x3b\x47\x65\x7c\x07\x13\x5e\x8c\xba\x1f\x2b\xf5\x3d\x5b\x02\x90\x83\x4a\x64\x29\x1a\x6f\x11\x1b\x51\x72\x72\xaf\xf9\x22\x0e\xe5\xad\xf7\x96\x76\xc7\x4e\xd7\x0b\xb0\x00\xf3\x01\x87\x83\x71\x71\x85\xb5\x18\x70\x38\x1c\x97\x16\x70\xad\x01\x87\x6f\x25\xa6\xdd\x01\x87\xe3\x12\xa6\x39\xe0\x70\x32\xfe\xe7\x25\x24\x65\x3f\xb3\xaa\x77\xf2\x18\x27\x51\xb5\x43\x35\x4c\x7f\xa5\xdd\x9e\x3f\x97\x70\x64\x55\xef\x64\xad\x4a\xab\x19\xaa\x17\xbd\x4f\x26\x69\xa7\x13\x9e\x71\x05\x4e\x33\x70\xda\x31\x9f\x2a\x5a\xaf\xbd\x9c\xc0\x45\x98\x64\x2b\xaa\x72\x3a\xad\xee\x32\xef\x7a\xbe\x76\x17\x97\x61\xc5\x8c\xfe\x7c\x19\xc6\xe3\x98\xcf\xbb\x61\x61\xc1\x71\xd7\xff\x97\xa6\xd4\x71\xea\xf9\x49\xcd\x0e\x47\x11\x8f\x85\x94\xd1\x0c\x06\xd1\xbf\x5c\x6e\xd3\xd7\xba\x61\x2b\x99\x94\x97\xef\xb9\xfd\xe0\x5c\x9f\x17\xa4\x1b\x73\x64\x3d\x28\x1f\xbe\xe7\xf9\x7d\xb5\xed\x3f\x9d\x0f\x1f\xaa\xd6\xa6\x79\x25\xa4\x3d\x4c\x98\x64\x19\xb2\xc1\xc9\x1f\x2b\xa0\x83\x1c\x53\x97\x1b\xd0\x37\xb7\x76\xde\x99\x82\xdc\x83\x5f\x09\x03\xdc\x02\x1c\x0b\x03\x86\x05\x78\x2c\x2f\x91\xf4\x5f\x5e\xdc\x97\x97\xa1\x21\xcc\xb1\xd8\x14\x9b\x63\xd1\xb0\x36\x4d\xf1\x6a\x6d\x9a\xb1\xf8\xbf\x31\x5b\x1c\x70\xc7\x15\xe9\xa1\xf0\xa9\xcf\xb5\xf2\x3e\xd7\xa2\xf6\x93\x83\x84\x3a\x26\x0e\xb0\x8b\x58\xf4\x13\x53\x92\x9e\x26\x5c\x31\xd1\x21\x56\x9e\x8a\x6c\xe4\x49\xb4\x35\xe5\x8d\xc6\xd4\x0b\x9c\x70\x5a\x93\xdf\xfe\xf0\xa1\x04\xd6\xfc\x90\x3b\x22\x5e\x8f\xad\x89\x09\xf7\x7f\x42\x2a\x97\xe3\xc3\x87\xea\xbf\xe4\x2c\x9e\x0a\x47\x6a\x35\xf7\x20\xb1\x2d\x6f\xc9\x6d\x6c\x90\x4f\xd0\x70\x6a\x8e\x03\x91\xd8\x3c\x12\x10\x4d\x4d\x15\x7a\x9e\x9a\xb9\x05\x03\xe2\xa9\x19\xf0\x89\xe7\xf2\x34\x8c\xf3\xc3\xab\xc9\xb4\xe4\xbc\x8b\xd7\x1c\x2f\x96\xef\x22\x9a\x85\x43\xa5\xe9\x32\x57\xdf\xf3\x7d\xe1\x14\x59\xc6\xcb\x2c\x53\xe1\xb9\x83\xb4\xc8\x32\x59\x66\xb1\x43\xdf\xe7\x51\x22\x8a\x4c\xd3\x65\xa6\x84\x1e\xa3\x2b\x7f\x6c\xb6\xc2\x94\xc6\xe1\xb0\xcc\x33\x5f\x97\x67\x3b\xf4\xc3\xb8\xc8\xb5\x58\xff\xb9\x22\x4b\x73\x99\x65\x22\x95\xaa\x02\xcb\xee\x6a\x2a\xe9\x15\x77\xbc\x71\x89\xab\xb5\x86\x2b\x7b\x86\xb2\xc8\xd8\x5e\x69\x14\x11\xa5\x03\xb3\xe8\x0c\x66\x6f\x99\x45\xb9\x43\x2d\x26\xb3\xbf\xcc\xe3\xa5\x62\x54\xca\xd1\xc1\x4a\xa3\x0d\xbc\x54\x74\x22\x6e\x97\xda\xe4\x70\x7d\x75\xaf\xb6\xf0\xd1\xba\x3a\xef\xa4\x73\xbf\x94\xdc\xb7\x35\xf5\x70\xed\x25\x9e\x55\x66\x3b\x5e\x66\x1b\xf1\xd8\xf5\x82\x1b\xcf\x49\x4b\xc5\x3c\x59\xe9\x56\xe3\x38\x29\xb7\xf2\xe9\xca\x17\xbd\x45\xe9\x5b\x67\x6f\x67\x29\x7f\x3b\xb1\x18\xe1\x7c\xb5\x2f\x87\xb1\x13\xc6\x9e\xeb\x95\x9a\xf2\x62\xb5\xea\x96\x6a\xe3\x72\x25\x25\x3f\xa4\x21\x91\x37\xf6\xd5\x32\x4b\xea\xd9\xc3\x52\x43\x76\x96\x39\x50\x8b\x0e\x13\x6f\xb9\x67\x75\x57\xba\x44\xb2\x17\xe0\x74\x52\x1a\x3a\xbd\x95\xce\xb5\x5c\xfc\xeb\xf5\x6d\x73\xb8\xd2\x23\x6e\xd6\xd6\x93\x17\xf0\xb4\x3c\x82\x6e\x97\xf9\xf8\xca\xa8\xb8\x5b\xed\xf2\x89\x28\x7d\xec\x7e\xb5\xb2\x79\x4c\x02\xb0\xc8\xf5\x7e\x99\x2b\x08\x9d\x12\x03\x9f\x2d\x31\xf8\x5e\x20\x56\xba\x9d\xb5\xcc\xd5\x8f\xf9\x48\xec\x86\xb1\x23\x4a\x7d\xcf\x5e\xe6\x4b\xc5\x2c\x2d\x35\xaf\xb3\xcc\x91\x3f\x0e\x5b\xaa\x23\xb1\xcc\x27\x67\xbc\x16\x8f\x96\xab\xaa\xbf\x92\xb7\x30\x48\xf7\xf9\xc8\xf3\xe7\x45\x36\x77\x99\x8d\x24\x5b\x91\x63\xb0\xcc\x81\x6a\x6d\x91\xc1\x5b\x66\x90\xa2\x61\x65\xcc\x3f\x2d\xf3\xa1\xfe\xea\xc6\xe1\x38\x70\x5a\xcb\x32\x79\xb8\x3e\xcd\x15\xd9\xed\x2f\xf3\xc5\x2b\x22\x77\xb4\x52\x65\x03\xcf\x77\x62\x51\xaa\xad\x60\xe5\x7b\x76\x1c\xfa\xbe\x17\xb8\x45\xae\x70\x99\x2b\x8c\x3d\x11\xc8\x66\x2a\x35\x67\xb4\x92\x9c\xd4\xe9\x45\x50\xea\xac\xcf\xcb\x6c\xee\x5a\xb6\x78\xa5\x8d\x56\x25\x65\xb2\xae\xb9\x6f\x56\xc6\x62\xba\xbe\x9c\xdd\x30\x2a\x4d\xe4\xcb\x5c\x22\x70\x96\x87\xd0\x64\x6d\xde\xfd\x30\x2e\x55\xfe\x74\x65\x1c\x71\x4b\xf8\x25\x96\xd9\x9a\x84\xd6\x4e\x89\xf3\x95\xb6\x5e\x9a\xa5\x17\xcb\x0c\x8e\x97\xac\x08\xb6\xe6\xba\xb1\xd8\xf4\x3d\xb7\xf4\xad\xdd\xb7\xfb\x6a\xa9\xa1\x5b\xeb\xaa\x7d\xa5\xe7\xb7\xd7\x14\xf1\xa8\x94\xab\xbd\xd5\xf1\x6f\x0f\xca\x5d\x7d\x7f\xa5\x1f\xa3\x18\x2d\xcf\xe5\xeb\x59\x96\x26\xba\xc3\x35\x9d\x73\xdd\x44\x71\xb4\xd2\x0b\xa4\xf3\xe1\xd2\x3c\xbe\xcc\x33\x8e\x50\xb5\x2e\xcd\xe1\x2b\x15\x1e\xf3\x20\xe9\x87\xf1\xa8\x34\x83\xaf\xb4\x9d\xb0\xc6\x38\xf8\x48\xb9\x3d\x9d\x99\x4c\x4e\xac\x0c\xce\x28\xec\xa0\xfe\x7f\x3e\x33\x59\xa6\xac\x32\xb8\x98\x99\x2c\x19\xf0\x48\x30\xb8\x9c\x99\x0c\x15\x0f\xea\x91\x0c\xae\x66\x26\xa3\x53\x4f\xb1\x08\x52\x06\x9d\x99\xc9\x6c\x11\xa4\x74\x04\x1b\xc3\x3e\x4f\x92\x13\x2f\x49\x19\xf4\x30\x8d\xfc\x5d\xf0\xeb\x99\xc9\x3c\x69\x9b\x63\x70\x33\x33\x99\x98\xa5\x22\x70\x18\xdc\xce\x4c\xe6\xf3\x79\x38\x4e\x19\xdc\x65\x71\x84\xc3\xe0\x1e\x13\x54\x5a\xad\xc3\xe0\x3d\x7d\x3a\x1c\x89\x34\x9e\x33\xe0\x73\x64\x4d\xf7\x30\x09\x6b\x6e\xb2\x34\xf6\x46\x0c\x6c\xc4\x92\x80\x53\xf9\x75\xe6\x26\x8b\x85\xeb\x25\xa9\x88\xf7\x64\xad\x33\x10\x73\x93\x4d\x63\x2f\x15\x0c\xdc\xb9\xc9\xe8\x35\x3b\x4f\x66\xf3\x69\x2e\x8b\xdb\x15\xb3\x94\xc1\x10\xa1\xd0\x1e\x27\x0c\xfc\xb9\xce\x1a\x83\xd1\xdc\x64\x13\xb5\xd0\x0c\xe6\x26\x8b\xb8\xe3\x78\x81\xcb\x20\x9c\x9b\x4c\xb5\x6d\xc2\x20\x9a\x9b\x0c\x45\x7c\x37\x64\xf0\x2c\xb3\x5b\x78\x28\x3d\xa6\x2f\x47\xe9\x80\x41\x32\xa7\x4a\xdd\xc5\x41\x91\x30\x48\x91\xc2\xd3\xf1\x88\xc1\x78\x6e\xb2\xb0\xdf\x4f\x44\xca\x60\x32\x37\x19\x29\x9d\x0c\xbe\xcd\xb1\x66\x48\xbc\xdd\xd0\xea\x87\xc1\x31\x46\x1a\x47\xbe\x67\x73\x2c\xd7\x09\x56\x89\x37\x12\x0c\x36\x4e\x91\x59\x4e\x6b\x0c\xce\x64\x3e\x94\x3a\xc6\xe0\x1c\x89\xa4\xe2\x31\xb8\x98\x9b\x6c\x90\x8e\x7c\x06\x97\x58\x40\x4f\x4c\x13\x06\x57\x18\xc1\x5b\x08\x06\x9d\xb9\xc9\x4e\x79\xd4\x9d\x47\xe2\xc8\x61\xd0\xc5\x98\x34\x67\xaa\x7a\x3d\xeb\x30\xe8\x95\x92\xcf\xb5\x3d\x06\xd7\x98\x38\x99\x08\x18\xdc\x20\x17\x9f\x08\x06\xb7\x54\x10\x3a\x3a\x75\x37\x37\x19\x2a\x0f\x09\x83\x7b\x6c\x34\x7a\xf7\x9d\xc1\xfb\xac\x12\xd5\x67\x64\xcb\xf0\x85\xc9\xb8\xe3\x68\x8f\xd7\x0c\xac\x05\xf6\xbe\x30\x11\x0c\xec\x05\x96\xdd\x1e\x26\x0c\x9c\x05\xb6\x8e\xec\xab\x62\x41\xd5\xca\xb1\x00\x0c\xfa\x0b\xd9\x91\xd5\x70\x65\xe0\x2e\x4c\x96\x29\x70\x0c\x06\x0b\x93\xc5\x32\xeb\x1e\x26\x2d\x7c\x3f\x61\xf0\xb4\x30\xd9\x68\xec\xa7\x5e\x84\xe5\x18\x2e\xb0\xb3\xc4\xd2\xaf\x38\x03\x1f\xf9\x72\x8d\x8c\xc1\x68\x61\xb2\xc4\xe6\xc8\x1a\x60\x72\x22\x49\xc3\x58\x30\x08\x31\xf3\xaa\x1b\x44\xc8\xa3\x35\x2b\x06\xcf\x0b\xd9\xff\xae\xa8\xa3\xc5\xc8\x98\xa6\xb1\x67\x8d\x29\xc1\x64\x21\xeb\x88\x41\x4a\xdf\x1a\x45\x1c\xd9\xc6\x0b\x93\x65\x6a\x15\x83\x89\xae\x8a\x0b\x8e\xe0\xc6\x74\x61\x32\x59\x6b\x33\x2a\x63\x2b\x1f\x53\x73\x2c\x0f\x69\x9b\x0c\x16\x2a\x15\xec\xae\x4d\x64\xb4\x31\x7f\xbb\x94\xf1\xc8\xe7\xb6\x68\xe1\x74\xcf\xa0\x85\x99\xca\x95\x2a\x06\x6d\x59\x95\x2d\x25\x07\xf6\x16\xba\x63\xb4\x74\xaf\xdb\x5f\x98\xcc\xf2\xc7\x31\x83\x83\x85\xc9\x64\xd9\x0e\x17\xb2\x61\x19\x1c\x21\xb5\xac\xc1\x30\xf8\x86\xad\x15\x8e\x38\xe6\xec\x78\x61\x32\x29\x0e\xd5\x19\x61\x06\x27\xd4\x3c\xa8\xa1\x30\x38\x5d\x98\x4c\x3c\x8f\x39\x36\xd0\x19\xa6\x25\x5c\x2f\x90\x65\x3f\x97\x59\x93\xaa\x34\x83\x0b\xec\x0e\x3e\x9f\x33\xb8\xa4\x8e\x81\x2c\x57\xf8\x21\x91\x72\x7b\xc0\xa0\xa3\x4a\x82\x43\x0b\xeb\xab\x8b\x3d\x09\x85\xac\x4f\x7d\xb1\xb7\x30\xd9\xc9\xd9\xce\x36\x83\xeb\x05\x89\x51\xad\xb2\x30\xb8\x59\x50\xc7\x57\x3a\x07\x83\xdb\x42\x4a\xd4\xbb\x17\x38\xa2\xd4\xa0\xbb\x5f\x98\x6c\x28\xe6\x09\x83\xf7\x32\x5a\xd3\x4e\x3d\xac\x09\xde\xd4\xe2\x4b\xd6\x91\xd5\x34\x19\x69\xc2\x09\x03\xbb\x29\x25\x48\x4a\x97\xc8\x9c\xa6\xc9\x22\x65\xc4\x66\x20\x9a\xea\x6b\x3e\xd9\x58\xfb\x4d\x1c\x00\x29\x7e\x6a\xc3\x6d\xa2\x78\x45\x55\x81\xc1\x40\xb2\x15\x84\x90\xd7\x44\xa9\x11\xab\x42\x3c\xe1\x27\xec\x10\x87\xc7\xb0\x89\xcd\x8e\x79\xf0\x31\xb1\x81\x08\x18\x8c\x30\xa4\xe7\x78\x06\x41\xd3\x64\xdc\x8f\x06\x9c\x41\xd8\x34\x59\xcb\x8b\x6d\xfc\x62\xd4\x2c\xb6\x26\x83\xe7\xa6\xc9\x44\x90\xc6\x1e\x16\x22\x96\x39\x40\xf9\x91\x60\x74\x9a\x9b\x19\xa4\x4d\xd9\x17\x48\x9a\x8f\x9b\x6a\x18\x25\x0c\x26\x4d\xd5\xcd\x63\xa4\x5d\x84\x1e\x09\xd6\x69\x93\x06\x3f\x15\xb7\x93\x86\x11\x83\x99\xac\x9c\x7c\x34\xcf\x9b\x99\x24\x66\xb0\x68\x66\xe2\xb2\x1d\xda\x63\x89\x6c\x62\x22\x33\x2f\x61\xb0\xdb\xd4\xdd\x8b\x41\x0b\xb1\xb1\xe0\xd8\xad\x31\x18\x45\x34\x49\xed\x35\x55\x47\xc0\xd9\x96\xc1\x3e\x56\x1b\x4e\xab\x0c\x0e\xf0\x43\x72\xfc\x77\x87\xdc\x64\x7f\x07\x95\xd3\x4f\x0e\x83\x9e\x02\x38\x83\x6b\x15\x9c\xcf\xe7\x73\x06\x37\x04\xcd\xb6\x77\x19\x1c\x36\x4d\x56\xa9\x32\xb8\x45\x54\xa5\x4a\x82\xd0\x60\x70\x47\xe0\xff\x56\x18\xdc\x53\x68\xb3\xc2\xe0\x08\x59\xb7\x2a\x0c\xde\x13\x6a\xab\xb2\xef\xf3\x64\x50\xb9\xf0\xf9\x5c\xc4\x95\xa3\x20\x49\xb9\xef\xab\x66\xe4\x3e\x37\x37\x58\xe5\x53\x85\x81\xe5\x23\xf7\x76\x85\xc1\xb7\x26\x05\xb6\x2b\x3b\x15\x06\x36\xa1\xcd\x0a\x03\x87\x42\x0f\x9b\x8f\x0c\x04\x05\xbf\x93\x01\xcd\xa9\x98\x95\x34\x1e\x8b\x06\x83\x3e\xa1\xb9\x1f\x0b\xee\xcc\xf3\x97\x5f\xc1\x25\xbc\x13\x0a\xe9\x73\x77\xc0\x27\xa2\xc2\x2b\x72\xc8\x56\xe4\x99\xcd\x1a\x83\xe3\xa6\xf9\xb1\xe2\x39\x26\xfb\x08\x03\x8a\x20\x93\x87\x8a\x35\x4e\x2b\x13\x11\x7b\x7d\x9c\xb0\x68\x49\x40\x6e\xd8\x2b\x0c\x3c\x9f\x9b\x1f\x2b\x61\x80\x9c\x26\x6b\x1d\x36\xaf\xba\x2a\x53\x55\x83\x7d\x84\x13\x2c\x48\x1a\x56\x18\x3c\x51\x82\x53\xbe\xf4\x26\x2d\x0c\x29\x81\xd9\xc8\x0f\x92\x7a\x32\x71\x71\x52\x4b\xa3\xfa\xa7\x4f\xd3\xe9\xb4\x36\xfd\xb5\x16\xc6\xee\xa7\xcf\xdb\xdb\xdb\x9f\x92\x89\xcb\x3e\x82\x5f\xe0\x9e\xf9\x5e\x30\x5c\xc7\xbf\xf3\xe5\xcb\x97\x4f\x44\x65\x7f\x7d\x84\xd3\xa6\xf9\x91\x55\x3e\xc2\x08\xa3\xb2\x0a\x29\x3d\x58\x46\xdb\x4f\x3c\xa7\xde\xfe\xfc\xdf\x56\x7b\xf7\xf7\xbd\xad\xe6\xde\xef\xed\xad\x9d\x1d\xbb\xbf\xf5\xe5\xf7\xdd\x3f\xb6\x7e\xfb\xed\xb7\xff\xfc\xe7\xd7\xff\xfc\xb6\xbd\xbd\xbd\xcd\x2a\x53\x5a\x02\xb3\x8f\x10\xc8\x44\x06\x72\x85\xc1\x3e\x42\x28\x11\x01\x1f\x09\x04\x23\x09\x26\xb1\x5d\xca\x98\x32\x77\xda\xe1\xe8\x93\xe7\x7e\xf2\xfa\xf1\xd7\x71\xec\x9b\x1f\x61\xe3\x59\xf1\x93\xea\xcc\x3e\xc2\x19\x65\x56\x2e\x46\xd9\x47\x88\x25\x39\xfb\xfc\x39\x92\xff\xfa\x08\x17\xf4\xfb\xe7\x27\xc7\x9b\xfc\xf5\x11\x12\xac\xda\x5f\x6a\xbf\xfc\xf2\x0b\x83\xcb\xa6\xc9\x7e\xc1\x3c\x43\x4a\x58\xcc\xff\xe7\x6d\x06\x57\x12\xdf\x67\xd0\xa1\x50\x7f\x9b\x41\x17\x43\x3b\xdb\x5f\x7e\xdf\xf9\x83\x41\x0f\x81\xcf\xf4\x8f\xc1\x98\xe2\xfe\xfa\xeb\xaf\x0c\xae\x9b\x32\x44\xc0\x8d\x04\xbe\x7c\x69\xb5\x18\xdc\x22\xf0\xdb\xaf\xf8\x1f\x83\x3b\x02\xe8\x1f\x83\x7b\x04\x7e\xff\xfd\x77\x06\xef\x55\x88\x80\x09\xa5\xfa\xdf\x2f\x5f\x7e\xe5\x0e\x83\xa9\x84\xfa\x5f\xf8\xef\x16\x83\x19\x41\x7f\x6c\xff\xb1\xdd\xef\x33\xe0\xbb\x26\xfb\xe5\xcb\x97\xdf\x7e\xfb\xf2\x85\x81\x25\x81\x2f\x0c\x6c\x15\x22\x60\x4e\x31\xbe\x58\x96\x83\x53\xac\x83\xa4\x16\xfd\x63\x20\x10\x68\xb7\x7e\xfd\xb2\xf3\x99\xc1\x82\xf8\xda\xed\x36\x83\x3e\xe2\xf7\xf6\xf7\x7e\x6f\xb7\x18\xb8\x08\xec\xef\x7f\xf9\x82\x95\x35\x90\x00\xfe\x63\xd0\xa4\x18\xfc\xb3\xfd\xdb\x1f\x7f\x30\xd8\x95\xd0\x97\x2f\x9f\x31\xd7\x2d\x09\x39\xff\x75\xfe\xfb\x85\x41\x5b\x42\x82\x7f\xf9\xef\x0e\x83\x3d\x82\xac\xff\xe2\x7f\x0c\xf6\x09\xb2\xbf\x7c\xd9\xc1\x12\x79\xf8\x01\xdb\xb6\x19\x3c\xed\x9a\x1b\x14\x24\xe8\x40\x72\x39\xf6\x7f\xff\xf8\x0f\x83\x43\x09\x89\x2f\x7f\xfc\xfa\x85\xc1\x11\x41\xce\xe7\xbe\xb0\xb6\x19\x7c\x93\xd0\xef\xd6\x17\xc7\x62\x30\xc4\xf4\x1c\x5b\x16\xf1\x58\x92\x04\xdf\xf9\x62\x31\x38\x51\x10\xdd\x2e\xfb\xe5\xfa\xf4\x84\x81\x8f\xdc\x62\x1b\xff\x63\x30\x22\x40\x08\x06\xa7\xc4\x29\x84\x10\xff\xb1\x18\x9c\x65\x10\xb7\x19\x9c\x67\x10\x72\x06\x18\xa7\x8f\x35\x75\x41\xf8\x7e\xdf\xb2\x7f\xfb\x9d\xc1\xa5\x82\x9c\x1d\xfb\x0b\x83\x2b\x05\xf5\xb7\x31\x8b\x1d\x84\xde\xa3\x04\xeb\x52\x68\x22\xe2\x84\x44\x5e\x0f\xc1\xff\x49\x18\x5c\xcb\xc0\xc7\xa4\xc2\x9d\x91\x17\x78\x49\x2a\x27\xb7\x4a\x75\x1c\x38\x22\xae\x38\x5e\x12\x8d\x53\x61\x30\xb8\x91\x9c\x7a\x38\x25\x38\x93\xdb\x34\x9e\xe8\xb9\xb4\xe4\xd3\xff\xd0\xff\x0c\x6e\x91\xf1\xc3\x38\xfa\xce\xe0\x4e\x07\xbf\xa7\xa8\x26\x7e\xa7\xa7\xb0\xbe\xe3\xc0\x63\x70\x8f\xb4\x8f\x06\xed\xaf\x55\xff\x0e\x2a\xf8\x2f\xdb\x72\x88\xd5\x0e\x89\x51\xf9\xa1\x48\xf4\xd8\x24\x83\xf7\x14\xeb\xf1\xd5\x68\xfc\x1d\x10\x25\x37\x64\xc5\x7c\x5a\xba\xc8\x57\xcd\x22\x93\x0b\x8d\x37\x37\x12\xab\x1f\x19\x6c\xf0\x11\x37\x3f\xea\x6c\x54\x2a\x8e\x9a\xf6\x70\xbd\xac\xf4\xe8\xdd\xf9\x91\x53\xfd\xfb\x63\x29\x81\xbf\x3f\x1a\x46\x2d\x8b\x44\x59\xc8\xb2\x5e\x3a\xc4\x58\x35\xa0\x22\xdd\xc5\x68\xee\x57\x15\x7c\x55\xe5\x50\xf9\x4b\x44\x7a\x1e\x9c\x84\x3c\xdb\x66\xad\xae\x94\x4b\x46\xfc\x7b\xf6\xab\xfd\x29\xb1\x63\x2f\x4a\xff\xfa\x3b\xa8\xfc\xf9\x69\x20\xb8\x43\x21\x2b\x74\xe6\x18\xa8\xfc\xe9\x78\x13\x9a\x4b\x4a\x79\xce\x44\x1d\x89\xb4\x7a\xe5\x3f\xdb\xdb\xd1\xac\xa1\xe4\xa9\x06\xb5\x64\xa3\x94\x55\x82\x7f\x7e\xc2\xc5\xce\x5f\x1f\xc1\x1a\x71\x93\x19\x95\x4c\xd1\xab\x32\xb0\x11\x05\xdb\xc0\xc0\xc1\xd0\xd6\x16\x03\x41\x81\x1d\x94\x7e\xd1\x8c\x41\x3f\x03\x11\x72\x09\xe2\x4a\x8d\x1b\x10\x64\xb9\x0c\x3c\x19\x1a\xa7\x29\x69\xad\xe1\xae\xc9\xb6\xb2\xb5\xd8\x13\x11\xed\x81\xb0\x87\x56\x38\x63\x30\xcc\x61\xd4\xcd\x7d\x09\x2a\x65\x7d\xcb\x17\x7d\x5c\x7a\x96\x91\xb1\xd4\x6b\x23\x4a\x57\xeb\x9a\x1b\xcf\x08\xaa\xd1\xca\x20\x26\x48\x19\x70\x18\x24\x04\xc6\x61\xe4\x84\x53\xd4\xe2\x28\x41\x5a\xe4\x22\x35\x24\x70\xe0\xb9\x03\x5f\x25\x2d\x11\x61\xec\x2d\xc2\x20\xe5\x3e\x83\x67\x85\x99\xa0\xb2\x9f\x62\x6a\x5e\x10\x88\x78\x8b\xca\x10\x13\x71\xc4\x5d\x06\x09\x05\xc3\x08\x55\xc7\x31\xb2\x85\xe3\x54\xb3\xa5\x44\x8b\x53\x9f\xc1\x98\x82\xf9\xaa\x7f\x42\xb0\x52\x5f\xa7\x39\xb0\xa5\x56\x77\xb3\x02\xca\x89\xb9\xeb\xca\xed\xe2\x79\x01\x2d\x95\xf7\x05\x61\xc6\x41\x56\xa1\x4d\x85\x70\x44\x2a\xe2\x11\x2a\x0b\x0c\x76\x09\x37\x11\x71\xea\xd9\x58\xb8\x16\xc1\x53\x61\x0d\xbd\x74\x6b\x9c\x88\x58\xe5\xac\x1e\x84\x01\x6a\x43\x6d\xa4\xd7\x6a\x9f\x6a\xb5\x4f\x64\x20\x49\x3e\xa1\x96\xbc\x35\x4e\x3d\x9f\xc1\xde\x0a\x51\xfe\x30\x98\xec\x9a\xac\xf6\x89\x5b\x28\x8e\xec\xf4\xbb\xb2\xad\x4c\x09\x6b\x2b\xc5\x79\x46\x90\xf0\x7d\x2f\xc2\x72\xee\x53\x62\x9f\xd4\x3d\xa1\x39\x11\x71\x79\xc6\x60\x41\x61\xb9\x7a\x39\x90\x5c\x08\xa8\x4c\x6c\x34\x89\x2c\x95\xf7\x43\x49\xd6\xd9\xd8\x25\x52\x32\x71\x15\x6f\x8b\x60\x59\x5d\x47\xc4\x5a\x58\xd8\xd5\x18\x7c\x23\x9c\xeb\xf5\x19\x1c\xcb\x20\xae\xb9\x50\x8e\xf4\xe3\x70\xc4\xe0\xa4\x8c\x4c\x43\x06\xa7\x65\xd4\x6c\x87\xc1\xd9\x12\xea\x33\x83\xf3\x32\x6a\xbe\xc3\xe0\x62\x09\xf5\x99\xc1\x25\xa1\x9e\x12\x06\x57\x14\xf2\x2d\x9f\x41\x87\x82\xda\x28\xd2\x25\x88\x24\x00\x83\x1e\x01\x29\xad\xef\xaf\x31\xfc\x49\xca\x72\xa5\x2c\xf1\xc8\x4b\x72\x01\xcf\xe0\x86\x58\xfe\x62\x70\x4b\x01\x3b\x8c\x05\x56\x64\x2a\xe2\x00\xe5\x7e\x7b\x57\x23\xd3\x30\xc4\x25\x7f\xcd\x4e\x12\x06\x7b\xbb\x26\xdb\xae\x6c\x33\xb8\xc3\x58\xa8\x51\xff\x56\xf9\x8d\xc1\x3e\xa2\xff\x87\xc1\x3d\x61\x51\x73\xda\xdb\x66\xf0\x1e\xa1\x9d\xda\x1f\x0c\x78\x80\xa1\x4f\x0c\x0e\x76\x4d\xb6\xb3\x8d\xac\x16\xa1\x3e\x47\x69\x05\xd7\xfe\x49\xe5\x4c\x4c\x2b\x57\xe1\x88\x07\x0c\x0e\x91\xe9\x3f\x28\x59\x8e\x30\x24\x70\x4a\xfe\x86\x21\x44\xd9\x14\x2f\x9a\x55\x92\xd0\xf7\x9c\x8a\x17\xf4\x43\xd9\x84\x1b\xc7\xbb\x26\xfb\xcc\xc0\x41\x86\xcf\x52\x32\x9d\x20\xca\x61\x70\xba\x6b\xb2\xdf\x18\x08\x24\xfd\xf6\x79\x7b\x93\x41\x9f\x82\x5f\x6a\x5f\xbe\xfc\x0f\x03\x17\x81\xff\xd4\xfe\xc3\x60\x40\x21\xcc\x9f\x47\xa1\xcf\xff\x61\xf0\x44\xa1\x5f\x77\x18\x0c\x65\xe8\x73\x6d\x9b\x81\x2f\xc3\xbf\xd6\x76\xfe\x5b\xfb\xc2\xe0\x6c\xd7\x64\xbf\x33\x38\xdf\x35\xd9\x7f\x19\x8c\x90\x88\xca\xd7\x1f\xdb\x0c\x02\x04\xbe\x60\x9c\x90\x42\x98\xfa\xc5\xae\xc9\xea\x15\x06\x11\x62\xea\x23\x06\x97\x88\x18\x8d\x18\x3c\x13\xe6\x85\x41\x8c\x81\x06\x6d\x55\xd4\x2b\x4a\x63\x6c\x48\x73\x45\x7d\xbb\xd1\x0f\x83\x74\x8b\x5a\xbe\xce\x20\x21\x56\x42\xc9\x9d\xd4\x3a\x83\x94\x70\x03\x0d\x8e\x09\x44\xb1\xd5\xf7\xc3\xe9\xd6\xbc\xce\x60\x42\xa8\x24\x0d\xa3\xad\x30\xe2\xb6\x97\x22\x72\x4a\x48\xac\xd1\x2d\x47\xd8\xa1\xd4\x1f\xea\x0c\x66\x84\x97\xb3\x0c\x83\x39\x42\x7f\x56\x18\x5c\xed\x9a\x4c\xcd\x29\x0c\x3a\x04\xe0\x4c\xc3\xa0\x4b\x61\x9a\xc6\x18\xf4\x24\x80\x13\x0e\x83\x6b\x02\x7c\xef\x2f\x06\x0b\x4a\xe6\x93\x5c\xfc\xfc\xc5\xa0\x19\xd0\xea\x30\x9f\x0b\x19\xdc\x10\x77\x12\xf1\x00\xbb\x2a\x01\x29\x26\xb9\x2b\xa3\xa6\x83\xbf\x18\x6c\xb4\x14\x10\xff\xf5\x77\xc0\xa0\x1d\x70\xf3\xe3\x9f\x5f\x67\x23\xbf\xa2\x54\x24\xec\x85\xdb\xec\xeb\x5f\x1f\x61\x8f\x68\x98\xdf\x8a\xac\x4a\xb5\x14\xd8\x66\x0a\xd6\x2b\x91\x6d\xf6\x11\xf6\x29\x59\x35\x95\xfc\xc5\xe0\x80\x22\xeb\x79\x98\xc6\x51\x33\x16\x3c\x5f\x38\x1c\x96\x18\x62\x81\x4a\x97\x88\x93\x9c\xe1\x88\x18\xc4\xc8\x12\x0e\xdd\x22\xa4\x35\xb6\xaf\x16\x81\x9f\x66\x5b\xc9\x20\xb4\x87\x53\x3e\x11\x5b\x7d\x5c\xe1\xaa\x85\xcf\x47\xb8\xc3\x82\xab\xca\xfc\x46\x69\x60\x65\xaa\x75\xdb\xc4\x64\xe3\x38\xa8\x27\xf6\x40\x8c\x78\xb2\x35\xf2\xec\x38\x4c\xc2\x7e\xba\x65\x87\xa3\xfa\x64\xe4\xe3\x02\xe7\x78\x29\xd2\xdb\xcb\x3c\xb2\x81\x7e\x84\x93\x2c\x02\xa9\x0d\x5a\x1f\xa9\xfc\x49\x93\xcc\x5f\x07\x24\x53\x2a\x25\x55\xa6\xd2\xbc\x38\xfa\xf3\x93\xa4\x13\xab\x6c\x44\x55\x50\xec\x52\x9f\x9e\xf8\x84\x4b\xec\x4f\xd7\x74\x4f\x09\x8f\x3c\xf6\xd7\x92\x56\xf4\x0f\x09\xfe\x55\xd4\xbc\x70\xc9\xbc\xaa\xdf\x41\xe5\xef\x8f\x3b\xf8\xf3\x23\x52\x17\x73\xeb\x95\x87\xbf\x3f\x7e\x84\x8d\x53\x2a\xae\x47\xe6\xa6\xc2\xea\x91\xb0\x6a\x6d\x2e\xd7\xf1\xe7\x84\x8a\x78\xcc\x47\xd9\x22\xf5\x62\x05\x47\xad\x37\xe1\x71\x52\x58\x7b\x5e\xae\x70\x8d\xc2\x89\x27\x0a\x1c\x57\xc4\xf1\xf3\x42\x7e\x84\x8e\xe4\x8a\x78\xa0\x33\x2a\x65\xc4\x47\xb8\xc7\x5e\x42\xb8\xbf\x2a\x93\xbf\xff\xae\xff\x6f\xe5\x47\xc5\x12\x03\x3e\xf1\xc2\xb8\x3e\x8e\xfd\x6a\x71\x11\x63\x34\x5e\xff\xfc\x24\x99\x19\xbc\xc7\x98\x34\xae\xba\xd4\xe7\x69\x58\xf1\x96\xf9\x11\xb3\x65\xb5\x4c\xd6\xac\x30\xe8\x21\xa9\x29\xdf\x53\xae\x31\xb8\x96\x60\xca\xad\xb1\xcf\xe3\x4a\x2c\xa2\x58\x24\xda\x26\x58\x09\xfb\x95\x74\x20\xe4\x93\xcb\x5e\x40\x61\x1d\x51\x60\x7a\x5d\x06\x37\x94\x80\xd2\x0a\x3a\x29\x4f\x93\xd3\xd0\x11\x3e\x83\x5b\x22\x90\x3a\x79\xcb\xe0\x8e\x20\xc7\xa9\xa4\x61\xc5\x93\xfd\x8e\xc1\x3d\x21\x7d\x5f\x7e\x40\x1a\x5c\x12\xfd\xd1\x84\x1a\x51\xc4\x9e\x48\xb2\xa7\xee\x8a\x24\x8a\x23\x27\xca\x8d\xf7\x59\x42\x64\xbb\xf9\xc7\x08\x7d\xcc\x3c\x0e\x7a\x70\x29\xe4\xa1\xde\xc4\x43\x6e\xb2\x5d\x06\x83\x96\xc9\x76\x9b\xad\xe3\x83\xab\xf3\xde\x59\x9b\x81\x45\xf8\xf3\xf6\x1d\x03\x0f\x49\xd8\x21\xc0\x26\xa4\xe7\xfb\x52\x0d\x6e\x99\xac\xc5\x60\x88\x3f\x7b\x27\xb8\xb4\xc4\xd0\xf9\x49\xef\xf4\x8c\x81\x83\xac\x12\xf8\x7e\x74\xd6\xde\xbb\x65\x30\x22\xf2\x29\x83\x16\x05\x7a\x67\xdd\xab\xa3\xbd\x0e\x03\x41\xac\x3c\xb0\xb1\x02\xfb\x04\x60\x75\x57\x42\x6d\x33\x76\x09\xa7\xb4\xad\x01\x01\xbe\x67\x0f\x19\x78\x59\x18\x6b\x58\xcc\x22\x1e\x38\x95\x92\x89\xfb\x49\x72\x90\x02\x3a\xa4\xb0\xb4\x52\xb7\x5b\x14\xc4\xaa\x67\xb0\x47\xc0\x28\x0a\x03\x11\xa4\x99\xc5\x4c\xc9\x40\x54\xe8\x65\xc4\x20\x49\x7f\x30\x18\x49\x20\x9a\x6f\x5d\xf0\x44\x3d\x9d\x5a\xb1\x43\x47\x60\x16\x78\x50\x39\xec\x9e\x9e\x54\x22\xee\xe2\x4a\x99\x58\xc7\x71\x2c\x82\x14\x67\xcc\x10\xe1\xf6\xf9\xe9\x69\x38\x4e\x44\x87\xb6\x9d\x19\x44\x84\xc4\x56\x92\xaf\x60\xe9\x1e\x51\x63\xf0\x9c\x91\xa8\x65\xd5\x5b\xd5\x15\x9e\x56\x7c\xc1\x93\xb4\x92\x4e\x8b\xdc\x1b\xfb\x2d\xc5\x4d\x6b\xdc\x8a\x57\x32\xaf\x31\x88\x29\x35\xcb\x57\x75\x97\x10\x18\xf3\xa9\x17\xb8\xdf\xf7\x51\x78\x7c\x67\x90\x22\x72\x8f\xdb\x03\x39\xb2\x13\x95\x7c\x65\xc4\xe7\xd8\xb1\xfa\xa1\xef\x87\x53\xe1\x54\xac\x79\x25\x0c\x44\x25\x8c\x29\x0f\x79\x8d\x67\xd9\xd1\x11\x03\x3a\xff\x5e\x61\x30\xa6\x94\xb5\x8e\x7c\xd0\x32\x19\xd9\x8c\x27\x84\x0e\x9c\x6e\x48\xe0\x94\xc0\x38\x0e\xe3\xca\x74\xe0\xf9\x82\xac\x8e\x5e\xe0\x56\x94\x64\x61\x30\x23\x8e\x59\x14\xc6\xa9\xec\xdb\x3c\xa9\xb4\x3a\xd7\x0c\xe6\x6b\x08\xd8\x16\x0c\x16\x21\x37\x3f\xee\xd3\x0d\xba\x8a\x2b\x42\x3b\xa4\x14\xd9\x47\x68\x62\x94\x7d\x2f\xa6\xba\x95\xe5\xd4\xaf\x4b\x96\xed\xa1\x0c\x76\xd7\xb3\xea\x26\x71\x78\x2a\x00\xab\x03\x03\x15\xec\x85\xa9\x37\x12\x35\x06\x2d\x8c\x77\x70\x7d\x74\xdf\xbc\x6a\x55\x18\xb4\x25\xe8\x2d\xb0\x75\x0e\x62\xc1\x51\xa8\xec\x11\x32\xcb\x58\x5f\xe6\xb4\x1f\xc6\x15\xae\xa5\x44\xa4\x0c\xe8\xfb\xc4\xba\x66\x02\x63\xb0\x71\x90\xd3\xbe\x2f\xd1\x0e\x89\x24\x17\x24\x47\x18\x3e\xdc\x6b\xb6\x19\x7c\xa3\xe0\x61\x7d\x34\xaa\x9c\x9e\x9e\x9e\x56\x1c\x07\x94\xad\xfb\x38\xa3\xd4\x51\x75\x3e\x29\x82\xb5\x4e\xa7\xc3\xe0\x94\x50\x54\xbf\x67\x14\x44\xfd\xec\x28\x60\x70\x9e\x41\xe7\xe3\x94\xc1\x05\x82\x47\x72\xf7\xf3\x12\xc3\xdf\xb2\x19\x81\x46\x0d\x83\x2b\xc2\x26\xf2\xfc\x67\x85\x8e\x9b\x57\xaa\x34\xa0\x7e\x61\xd0\x41\xe2\x49\x85\xc1\x61\xcb\x64\x27\x47\x0c\xba\x84\xc0\xde\xaf\x5a\xa8\x6c\xc8\x16\x41\x38\x76\x07\x65\xd1\x5a\x1d\x79\x49\x42\x4d\x0e\x47\x98\x0a\xad\xc5\xbe\xa9\x50\xc2\xa0\x87\x49\x9e\x56\x18\x5c\x53\x60\xaf\x7b\x75\xde\x61\x70\xdc\x32\xd9\xe9\xe9\x29\x83\x13\x19\x28\x56\xcf\x0d\x31\x6a\x39\x78\x4b\x10\x8e\xe9\x36\xad\xcc\xef\x32\xb8\x17\x31\x38\x6d\x99\xec\x4c\x3e\xe0\xcf\xe0\x1e\x49\x0a\x92\xa3\x34\x8a\xc3\x89\xe7\x90\xf9\xfb\x3d\x12\xcf\x8f\x19\xf0\x08\x03\x81\x2f\x07\x59\xa1\x2c\x95\xa9\x97\x0e\x2a\x71\xe8\x8b\xca\x47\xb5\xb6\xf9\x58\x89\x44\xac\x67\x0c\x2f\xc1\x2e\x83\x23\x94\xc1\x86\x45\xa9\xa4\x03\x5c\xed\xdb\x18\xbe\xb8\x3a\xbf\x3e\x3a\x6b\xa1\xc8\x75\x08\xa6\x85\xe8\x59\xcb\x64\x17\x9e\x60\x20\x08\xe7\x8f\x5d\x6c\xc5\x3e\x01\xb1\x98\x78\xe1\x38\x51\x99\x77\x8b\x38\x94\x67\x03\x89\x08\x47\x5e\x22\x2a\x36\x49\x81\x4a\x2c\x92\xd0\x9f\x90\x30\xf4\xd2\x44\xf8\x7d\x06\x1e\xb1\x8d\x2d\xdf\x4b\x06\x88\x9f\x0a\x4b\x09\xc8\x27\xa4\x5c\x8e\xb9\x13\xeb\xba\x1c\x22\xe6\x6a\xef\xe0\xe8\xfc\xac\xc3\xe0\xbc\x65\xb2\xab\xf3\x1b\x06\x17\x32\xa0\x67\x12\x9f\xb8\xe4\x96\xbe\x0c\xd2\xed\x68\xe1\x54\x46\x3c\xca\x7b\x84\x98\x79\x09\x0e\xb0\x80\x78\x50\x39\x56\xb2\x2f\x44\x44\xa7\xc7\x20\x92\x81\xdd\xec\x8b\x97\x2d\x82\xbb\x77\x17\x7b\x0c\xae\x10\xb0\x69\x61\xc9\xe0\x99\x58\xb5\x18\x8a\x15\x44\x22\x3c\x21\x00\x97\xea\x4b\xdf\x96\xea\x83\x97\x54\xc8\x18\x50\x63\x90\x4a\x4e\xa5\x29\xcb\xbd\x20\x06\xe3\x12\x96\x90\xb5\x32\xc8\x60\xf2\x8f\x3c\x35\x06\xd3\x88\x9b\x1b\xff\xc0\xf5\x3b\x83\xd9\x3f\xa7\xf5\x5f\x06\x73\xe2\x22\xe7\x33\x4d\xb9\x5b\xb8\xc8\x31\x07\x31\x8f\x06\x9e\xcd\xa0\x83\x75\x24\xb7\x36\x9b\x44\xc6\x30\x49\x40\x11\x38\x4a\x6e\x65\x62\xf5\x73\x9b\xc1\x6e\xc6\xa5\x64\x7e\xab\x80\x50\x29\x75\x5b\x26\xeb\xb6\x19\xf4\x5a\x7a\x03\xbc\x8d\x4c\x5d\xd4\xc4\xd4\xa0\x46\x95\x26\xaf\x6d\xf2\x64\x22\x95\x9e\x71\x14\xd1\xfd\x26\x39\x6e\xfa\x74\x83\xab\x56\xe9\x08\x91\xd9\x52\xe5\x4c\x85\xf2\x35\x67\x96\x7c\x38\x8d\xee\xe9\x2f\x95\x14\x70\x3d\x9b\x4a\xd5\x60\x2e\xb0\x5b\xed\x13\xa7\x3c\x58\x8e\x04\x7b\xa0\xc4\xf6\xca\xa4\x75\x8d\xe5\x08\x19\x1c\x50\x0c\x54\x2c\x7c\x2f\x10\x28\xd5\x24\x42\xf7\xfe\x23\x04\x7b\xc7\x0c\xbe\x51\xe0\x84\xc1\x4d\xcb\x64\xbd\x0e\x83\x5b\xfa\xdd\x62\x70\x4c\x94\xee\xfe\xd6\x1f\x0c\x4e\x28\x4c\x07\x1f\x70\x5c\x25\x22\xad\xc8\x33\x13\x15\x5b\x6b\x33\x0c\x36\x4e\x25\x97\x98\x45\x64\xa8\x2b\xcf\x6c\x28\x69\xe9\xf7\x17\x06\x67\x92\x71\x18\x84\xd3\xa0\xe2\xc6\x3c\x40\xe5\xd8\x4b\xe7\x35\x06\x77\x2d\x93\xd1\x0d\x0d\x06\xe7\xc8\x75\xbd\x76\x03\xf0\x02\x49\x37\x4d\x06\x97\x14\xa0\x03\x2e\x49\xa5\xb5\xc7\xe0\xbe\x65\xb2\x5b\x06\x57\x88\xbf\x63\xd0\xa1\xdf\x70\x1c\x57\xac\x38\x9c\x26\x22\xce\x5b\x52\x35\x89\xd4\xb8\x13\x06\xef\x5b\x26\xfb\xce\xa0\x8b\x31\xbe\x37\x77\x3b\xdd\xab\x66\xab\xfb\xfd\x6a\xef\xac\xbd\x77\xb5\x77\xf5\xfd\xa8\xfd\x9d\x41\x8f\x88\xdf\x19\x5c\xcb\x40\xfb\xa8\x73\xd1\xeb\xee\xb5\x11\x75\xb3\x8c\x6a\xe2\x88\xbd\x95\x58\x2f\x48\x45\x1c\x70\xff\x3b\x83\x3b\xc2\xd8\xca\xd8\x9d\x7c\xaf\x31\xe0\x6d\x93\x7d\x57\x06\xd6\x13\xb5\x13\x6f\x21\x4e\xdb\x3c\x35\xf2\x9e\xe2\xa6\xba\x5d\x19\xbc\x47\x84\x2c\x81\xb2\x21\x33\xe0\xcf\x39\x2e\x37\x1d\x5b\x45\xac\xbe\xf2\xc4\xc0\x5e\x42\xc7\xa1\xcf\x60\xc3\x29\x62\xe9\x0e\x4f\x96\xba\x28\x90\xfa\x3e\x4f\x33\x82\xdd\xce\xf0\x5e\x80\xb9\xdb\xb2\xfc\x10\x65\xa0\xb3\x9e\x50\x61\xd0\x2f\xa4\xe5\x7b\xc1\x30\xff\x48\x1e\x65\x24\x82\x31\x03\xb7\xc0\x89\x98\x8c\x73\xb0\x44\xc0\x35\x38\xf9\x07\x5d\xc2\x7b\xa9\x18\x31\x78\x5a\x83\xdd\xe2\x36\xad\x07\x86\xeb\x68\xa3\x40\x8c\xc2\xc0\xb3\xb7\x12\x81\x8b\xd2\x14\x35\xfa\x7e\x39\x73\x05\x8a\x5f\x4c\x22\x74\xb8\x1f\x85\x11\x6a\x42\x1b\x6e\x1e\x25\x54\xa6\xfd\x51\x81\x57\xe2\x0a\x16\xee\xa0\x40\xd4\x47\xca\xc2\x12\x2e\x9e\x88\x98\x80\x2d\x6f\x44\x33\x5c\x54\x24\xfb\x9e\x23\xe2\x82\x45\xff\x79\x0d\x31\xe6\xae\x4b\x47\xd2\xe2\x55\x62\x3a\x18\x8f\xac\x02\xcb\xa0\x9d\x1f\x47\x4a\x90\x5d\x02\xc9\xa9\x08\xc6\xd9\xc9\x4f\x94\x9f\x1d\x69\x66\x4d\x97\x79\xd2\x9c\x36\x5e\xa2\xed\x05\x74\x5a\x6f\xb2\x0e\xad\x66\xd1\xe9\x3a\x5a\xa6\x07\xce\xde\xa4\x92\x5e\x38\xd7\xe4\x09\x1d\xdf\xf0\x54\x51\x26\xc2\x11\x89\x2d\x02\x87\x93\xec\x7a\x6a\xd3\x81\x11\x06\x0b\x62\x77\x1c\x3a\x25\x92\x54\xa4\xd9\xb4\x49\x48\xc1\x60\x97\x02\xfd\x54\xc4\x03\x0f\x55\xca\x56\x06\x27\x83\x70\xca\xa0\x4d\x70\xee\x33\xba\xcb\x63\x57\xa4\x0c\x86\x98\xbc\xef\xcb\xbb\x67\x9d\x71\xbf\xef\xcd\x18\xec\x11\x33\xaa\x51\xd9\x1d\x44\x3a\xe0\xc7\xe3\x39\xd6\x65\x6b\xdc\x0f\xfb\x7d\x06\x3e\xc5\x9d\xf2\x39\xaa\xe5\x32\x0a\x02\xe7\xe3\x34\xa1\x3c\x1c\x10\x2e\xa0\x25\xff\xa1\x0c\x7b\x23\x2a\xeb\xa8\xad\x01\x6a\xb9\xa0\x08\xd6\xf2\x43\x3d\x47\x79\x24\xba\x87\xc9\x13\x6a\xf4\x6f\x65\xf4\x88\xcf\x68\xf1\x96\x5c\x88\xb8\x23\xec\x10\x67\xd4\xe3\x12\xcb\x9e\x8a\x78\x52\xc2\xf6\xbd\xc0\x43\xbd\xe2\xb4\x8c\xc5\xa4\x34\x29\x6c\x17\xcf\x8b\x31\x38\x93\xac\x1a\x51\x63\x70\x5e\xc6\xa8\x7e\x71\x51\xc6\x66\x3d\xe2\x72\x0d\x9e\xfa\xc2\x55\x99\x90\xd4\x96\xaa\x72\xa3\xb3\xcc\x60\x85\x33\xd5\x6f\xbb\xcb\x24\x3a\x80\xb9\x9c\x42\x6f\x3d\x57\x9e\xcc\xf5\x7a\x86\x81\xe7\x0e\xc8\x79\x24\x4f\x52\x06\x37\xeb\x99\x92\x54\x8c\x94\x59\xe1\xf6\x6d\x8e\x13\x11\xb8\xa8\x6f\xdf\xbd\xc5\x42\xf9\xb8\x5f\x4f\x2d\x0c\xd4\xf7\x2b\x1c\x34\x9f\x17\xca\xc2\xe3\xf5\x1c\x85\x7c\x5a\x3f\x61\xd1\x19\xb5\xdf\xe4\xa1\xaf\x38\x6f\x90\x0b\x59\x15\xcb\x2c\xe5\xea\xec\x2f\x93\x0b\x19\x74\x63\xd4\x64\x97\x89\x3a\x6b\x83\xd5\x98\xf4\xc1\xa8\x5d\x46\x17\xf2\xf2\x5c\x22\x49\xf9\xe1\xc9\x64\x52\x8f\xfb\x1e\xa7\x5d\xd4\x27\x89\x99\x33\x88\x91\x3f\xb6\x19\x24\x6d\x79\xb0\x8c\xc1\x90\x88\xb1\xe0\xa8\xc8\x2b\xec\xb9\xdc\x7d\x60\xe0\x4b\xa2\xc7\xb7\x56\xc5\xd8\xb8\xad\x48\x03\xcf\x71\x44\xc0\x60\xa2\x11\x74\xc0\x8f\xc1\x54\xc1\x3e\x83\x11\xa5\x93\xa6\xdc\x1e\x28\xfd\x38\x28\x62\x94\x82\x3c\x6b\xeb\x33\x70\x21\x51\x67\x5e\xb2\xbb\x7c\x10\x33\xd2\x14\x52\x53\xb4\x2b\x03\x5c\xc9\x68\x42\xd7\x4b\x7d\x91\xe4\x67\xef\x62\x4d\x48\x69\x1c\xcf\xdb\xe5\x03\x81\x09\x92\x73\xc4\x96\x2d\xbf\xb3\x68\xaf\x39\x05\xda\x5c\x45\xd2\x35\x38\x06\xa9\x4c\x25\xae\x31\x18\xab\xa0\x3a\xfe\xba\x4b\x71\xe2\x84\xc1\x46\x8b\x82\x89\x90\xea\x54\xbb\x00\xa9\xf4\xf7\x10\x25\xfa\x61\x2c\x70\x3a\x64\xb0\x9f\xc1\x72\x06\x38\xc8\x60\x39\x03\x4c\xe8\x53\x82\xce\xcb\x4e\x29\xdc\xc7\xff\x18\xcc\x08\x70\x19\x1c\x62\x8c\x81\xcb\xe0\x88\x02\x09\x83\x6f\x18\xf0\x39\x56\xc5\x31\x05\x51\xfd\x3d\x69\xeb\x13\xb1\xa7\x18\x0a\x7d\x87\xc1\x9c\xd2\x08\x7d\xa7\xc2\xe0\x8c\xb0\xea\x70\x7e\x16\x96\x9b\xe7\x0b\xc9\x87\x88\xfa\x76\x43\xef\x5d\x6f\x71\xdf\x73\x83\xba\x15\xa6\x69\x38\x6a\x30\xb8\xa0\x58\x08\x30\xb8\xcc\xc2\x5b\x49\xc4\x6d\xc1\xe0\x2a\xc7\x60\x02\x0c\x3a\x19\xe2\xbb\x3c\x69\xd0\x94\x5f\xa1\x26\xeb\xb6\x55\x30\x61\xd0\xa3\xf0\x8c\xc1\xae\x64\xd0\xe2\xa2\xa5\x40\xd5\x0a\x6d\x05\x8a\x84\xc1\x35\x46\x89\x19\xdc\xe0\xef\xd8\xa2\xfd\xfa\x3d\xa2\x13\x50\x0b\x75\xef\xdf\x2f\x20\xe5\x39\x58\x06\x07\x05\x5c\x61\x20\xde\x66\x69\x25\x0c\xee\x08\x90\x3a\xe3\x7d\xdb\xdc\x60\xd6\xc4\x65\xf0\x1e\xb1\x93\x84\xc1\x21\x26\x81\x3a\xf9\xd1\x68\x24\x1c\x8f\x66\xcf\x23\x8d\xb3\xa8\x65\xf8\x1e\x42\xd2\x76\x6c\xc9\xb0\xe3\x0b\xd5\x83\xbf\x49\xde\x0c\x53\xeb\x73\xba\xd1\xa4\x3a\xd1\xf1\x32\x79\x40\xf6\xcd\xa3\xe4\xca\x53\x53\xe6\x32\x43\x4c\x04\x15\xdd\x2e\x7f\x2e\x61\xe0\x48\xcc\x84\x27\x0c\x04\x85\x53\xe1\x86\xa8\x47\x9d\xca\x94\x24\xa8\xe6\xc9\xb3\x22\x2e\xb7\x9f\xad\x60\x69\x8e\xec\x17\x92\xa3\x55\x35\x03\xb7\x80\x4a\x44\x80\xa3\x78\xe2\xa5\x73\x29\xac\x2e\x28\x19\x75\xb2\x6c\xb0\x27\x0f\xc2\x33\xf0\xf6\xf2\x7b\x1f\x97\xc4\x42\x40\x76\xb2\xb8\x49\xe3\xb5\x4d\xf6\x9e\xa7\x3d\x52\x40\xe9\x28\xfd\x50\x86\x63\x6e\x53\x54\x7f\xaf\xb8\x89\x08\xa3\x22\xb8\x7c\xa9\x8d\x41\x50\x22\x0f\xd4\x99\xee\xb0\x84\x95\x7d\x77\x23\x2a\x21\xe9\x88\xf0\x73\x09\x35\x95\xbd\xf4\x2a\xd6\xda\xb1\xaa\xcc\x4e\x86\xc8\x4d\xdc\xdd\x1c\x47\x42\xa2\x57\x82\x49\xb8\x5e\x97\x50\x4a\xba\xde\x64\xc8\xac\x55\x6e\xcb\x28\x6a\x92\xbb\x0c\x57\x30\xfe\xdd\x97\x91\xa7\x74\x50\xfe\x7d\x19\xd9\x8b\x18\xf0\x44\xa3\xb2\xa3\xf1\x56\x86\xba\xf0\x02\x1b\x67\xe0\x32\x82\x32\xec\x94\x71\x2a\xc7\x22\xc3\x16\xcd\x5c\xfd\x0c\xab\x2d\x55\xb1\xae\x4b\x79\x97\x22\xd1\xa0\xec\x33\x6e\xc6\x2f\x1c\x8f\x96\x4e\x29\x31\xd8\x21\x83\x81\xa4\x39\x0c\x3c\x15\xf2\x19\x3c\xc9\xa0\xc0\x8f\x8d\xf7\x54\x90\x64\xcc\x44\x43\x38\xab\x0e\x25\x1b\x2a\xcd\x32\x84\xf3\x9c\x0a\x39\x0c\xa6\x7b\xe6\x06\xb3\x51\xe2\xce\x28\x56\xca\x20\x90\xd4\x14\xbb\x89\x0c\xce\x7c\x06\x91\x0a\xe2\xf2\x01\x39\xd5\x8e\xd0\x62\x4f\xdd\x5f\x72\x44\x9f\xc1\x33\x31\xf9\x82\xe3\x2c\x44\x14\x2f\xda\x92\x67\x6e\x62\x49\xf2\xa2\xac\x0f\x26\x19\x46\xf5\xab\x34\x43\xcc\x18\x8c\x33\x00\x57\x42\x1a\x90\x66\xd3\x5d\x95\x74\x84\x05\x9c\x4a\x5a\x88\x93\x55\x6b\x2f\xbb\xcf\xd2\xd6\x41\xe7\x62\xc0\x11\xb1\xb7\x47\x3b\x9e\x5b\xb1\x90\x37\x73\x66\x14\x4f\x9d\x09\x63\xb0\xbf\xa7\x36\x44\x19\xcc\x15\x25\x8c\x3f\x33\x58\x64\x40\x73\x46\x27\x61\xe4\x6d\x81\x66\x19\xed\x0b\x57\x04\x4e\x4d\xee\xb8\xc8\xe9\x9e\xc1\xee\x5a\x9e\x28\x9b\xf2\x5b\x6b\xe9\x05\x71\xdd\x2e\x33\x8c\xf8\x4c\xd9\x81\xf6\x96\x08\x5e\xa0\x08\xfb\x65\x82\xbe\x6f\x75\xb0\x0e\x2d\x2d\x83\x41\x98\xef\xa4\x04\x63\xba\xaf\xb3\x71\xa0\xeb\x62\x17\x1b\xf2\x30\x8b\x6c\x11\xa8\x89\x09\x83\x23\x45\x92\x5b\x79\xdf\x24\x14\x04\xc2\x4e\x3b\xa9\x88\x90\x61\x4f\x5d\x22\x98\xa5\xd2\x6a\x71\xac\x78\x52\x2f\x90\xf7\xbd\xbe\x11\x47\x1c\x88\x18\x57\x16\x38\x95\xa2\x34\xaa\xc5\x33\x06\xc7\x6f\x90\xe6\x0c\x4e\x56\x48\x74\xa8\x8f\xa2\x9d\xbe\x45\x9b\x33\x38\x2b\xd0\x90\xf7\xbc\x08\xcf\x19\x5c\x14\xe0\x34\x8c\xb2\xac\x5c\xae\xc3\xcf\x19\x5c\x95\xf1\x79\x26\x3a\x6b\x09\x73\x06\xdd\x3d\x75\x79\x4b\xde\xed\x38\x91\xf5\xa1\xe0\xef\xa8\xa0\x9e\xe6\x28\xcc\x31\x41\x71\x98\x24\x03\xee\xc5\x35\xd5\x45\xcf\xcb\x58\x65\x28\xd3\xd4\x8b\xf5\xd4\x4c\x63\xb8\x7c\x83\x5e\xbc\x9b\xb3\x71\x55\x66\xca\x22\x77\x96\xf0\xc5\x48\xdd\x32\x4d\x5b\x6f\x74\xbe\x7a\x6f\x90\xb3\xb4\xaf\xdf\x62\x28\xdd\x1a\x2a\x33\xa5\xb1\xe7\xba\x38\x2f\xde\x12\x3e\x99\x30\xb8\xa3\x10\x5d\xd0\xab\xab\xa3\x0b\x8d\x37\x8f\x27\x6e\x8d\xc2\xc5\x56\x98\xcc\xb6\xe4\xd1\xa8\x51\x18\xa6\x03\x2f\x70\xeb\x6e\xcc\xe7\x74\x0f\xad\xc1\xa0\xb7\x47\xe9\xe1\x74\x72\xad\x83\x52\x8a\xdf\xcb\x4f\xe1\xc4\x85\x84\x19\x83\x5b\xfc\x9d\x33\xb8\xdb\x33\x99\x43\xdb\x07\xef\x91\xc7\xe1\x69\xbe\x60\xe1\xa9\xc2\xf8\x22\x49\xae\x84\x8b\xeb\x77\x59\x45\xf7\x14\x2b\x15\x5a\x86\xbc\xdf\xcb\xae\x35\x5a\x2a\xd2\x78\xa4\xa6\x18\x3b\x43\x64\x53\xa5\x53\x46\xd1\x54\x29\x24\x6e\x9e\x30\xe0\xfb\x26\x73\x2c\xdf\x56\x53\x14\x11\x44\x6e\x08\x72\x53\x5c\xf8\xa9\x3b\x3a\xd6\x3e\x5d\xf2\x94\xc7\x61\x07\x92\x95\x20\xad\x81\x49\x7a\xc2\xc0\x93\x44\x37\x16\x82\xc1\x93\x04\x50\x11\x9d\x33\x18\x4a\x28\x15\x76\x2a\x4f\x26\x81\x83\xd1\x3c\xee\x87\xae\xb6\xe2\xf9\xc4\xe3\xf1\x11\xd9\x4f\x04\xd1\xfb\xfd\x5a\x20\xa6\xa8\x0a\xe5\x9d\x63\x24\xf9\x0a\x24\x7d\xc4\x30\x8a\x05\x59\x8f\x82\x15\x0e\x9a\x59\xf6\xb9\x4d\x13\x6a\x98\x91\x43\x9f\xd4\x2c\xdd\x2f\xfb\xfb\x4b\xf8\xec\x9b\xd1\x4a\x94\xe5\x6f\xba\x14\x37\x91\xe7\x69\x9f\x25\xbb\xb6\x31\xc6\x0a\x8c\x7c\x3e\xaf\xd3\x96\xe3\x16\x6a\x82\x0d\x75\xf5\xb5\x5e\xd9\xd6\x07\xf3\x2a\xdb\x0d\xb5\x36\xa9\x6c\x33\x48\x56\xe2\x35\xf4\xac\x51\xe7\x56\x12\xfa\xe3\x54\x64\x89\x6c\xe7\x87\xfb\xf4\xf2\x86\x41\x5a\x48\xa1\x59\x3c\x93\x31\x2e\x10\xda\x3c\x15\xbb\x3c\xee\xe4\xd6\xda\x8d\x49\x81\x7c\x42\xf3\x51\x3b\xa4\xcb\x63\x2b\x78\xed\x33\x6a\x56\xa0\x9c\xd2\x9e\xf2\x60\x3f\x43\xd0\x35\x56\xa9\xdf\xd2\xc4\x5a\xe0\xbd\x0f\xc3\xd1\xae\x3e\xe2\xbd\xd0\x84\x31\xd9\x7a\x3d\x4a\x01\x47\xdb\x13\x86\xc2\xbd\x59\x14\x8b\x24\x51\x17\xb6\x18\x34\x89\x9d\x54\xbe\x21\x32\x90\x82\xb9\x4b\xc8\x98\xbb\xdd\xf0\x82\xe3\xec\x9a\xc3\xf8\x2d\x06\x6d\x8d\x90\x97\xd3\x34\x94\x48\x2d\x6e\x5f\xc1\x53\x7d\xd6\xe5\x40\x23\xb2\x83\x13\x87\x1a\x23\x77\xb1\x8f\x34\x28\x37\x43\xbf\x69\xb0\x23\xcf\x29\x1f\x6b\x58\x6e\xa2\x9d\x48\x10\x95\x6a\x1f\xf3\x3c\x63\x30\xc2\xdf\x39\x83\x60\xdf\x64\x82\xc1\x29\x72\x08\x1e\xfb\x73\xbd\xa6\x3a\x93\x18\xb9\x1e\x3a\x27\xc0\xe7\x56\x18\x73\xaa\xa5\x8b\x32\xa2\xe6\x25\xed\xac\x06\x2f\x97\x68\xf2\xf6\x3a\xea\x55\x57\xeb\x29\x73\x06\x1b\x9d\x25\x52\x1c\x4e\x8f\x1c\x06\x21\x66\x4f\xd7\x41\x97\x78\x46\x11\x0d\x0e\x24\x04\x0c\x9e\xe9\x57\x8e\x80\x38\x0b\x93\x77\x6c\x92\x2d\x34\x92\x7a\x14\x91\x28\x52\xe0\x2d\xd1\xaf\x73\xba\x54\x98\x6f\x06\x02\xeb\x20\xa1\x04\x1d\x06\x29\x05\x68\x05\x74\x43\xbc\x74\xe2\x08\x0b\x3b\xde\x27\xc8\xf7\x6c\x2f\x65\x30\x51\x50\x18\x23\xeb\xb4\x00\x29\x8f\x2e\x09\x83\x5b\x95\x80\x42\x93\x31\xe7\x6e\x05\x57\x63\x70\x5f\x42\x0e\x85\x88\x8e\x02\x7d\xe3\xfc\x7d\x89\x36\xe2\x33\xec\x66\x28\x84\xf9\x78\x0d\x81\x44\xb1\x55\xa2\x2c\xc2\x70\xd4\x16\x3e\x2e\xf7\x6c\x24\xf4\x45\x76\x10\xaa\x4b\xd7\x26\xb1\x00\x8e\xa4\xec\x8f\x03\xbb\xc9\x40\x48\xe8\x80\x8f\x93\xc4\xe3\xc1\x2e\x19\x43\xfa\x12\x79\x2a\x62\x5c\x2d\xce\xf6\x33\xe0\x8c\xc6\xa3\x2b\xc9\xe7\xea\xf0\xf7\x9c\xe8\x3c\x1d\xc7\xa8\xbe\xef\x9b\x1b\x1a\x52\xb3\x4a\x33\xa7\x1f\xca\xeb\x0a\xbb\x39\x46\x2e\xa9\x5a\x88\x70\x63\xcf\x61\x30\xa0\xc4\x3d\x3a\x4e\xdc\xde\x97\xd7\xb0\x19\xec\xa9\xd0\x56\x6e\xa4\x50\x18\x2d\x72\x3d\x15\xcf\xcf\x65\xed\x93\x46\xa9\x09\x66\xa8\xe1\x6c\xda\x3c\xa0\x44\xa4\x81\xfc\x30\x0b\x37\x73\x73\xbe\x2f\xa3\xc4\x89\xbe\x4c\x2f\xc7\xde\x48\xa2\x67\xc2\x91\x02\x89\xf4\xff\x60\xcc\xcd\x8f\xd9\x81\x4b\x93\x7d\x84\xa3\x7d\xe5\xb8\x40\x6f\x51\x84\x14\x4f\x6a\x47\xfb\xba\xca\xa2\x02\xf2\x94\xc7\x43\xb2\xea\x49\x5c\x90\x6e\xf5\xc9\xc5\x0d\x83\x78\x09\x53\x67\x90\x64\x28\xb9\x00\xf9\xb6\xaf\x41\xa9\xed\x1f\x6b\x78\xaa\x16\x48\xa9\x8e\x50\xd3\xa9\x8e\x33\x8c\x4c\x62\x92\xc1\x3a\xce\x89\x4a\x44\xd5\xe1\x54\x33\xec\xab\x14\x4e\x15\xfd\x8c\x93\x9b\x83\x33\x05\xca\x2a\x99\x69\xee\x1b\x95\xda\x39\x91\x63\x5b\x1c\xd1\x3e\x07\x83\x0b\x89\x20\xd5\x64\x2e\xb9\x11\xc8\x96\xd1\x97\xfb\x4b\xa8\x6c\x9e\xbc\x5a\xa1\x90\x72\xa5\xe7\xe6\xce\x2a\x59\x6d\x09\x2d\xf2\xcf\xa4\x22\xc6\x25\x56\x5b\xd8\xde\x88\x2e\xae\x37\x57\x68\x1d\xcf\x0d\x68\x77\x3c\x48\xdb\x9e\xeb\xe1\xdc\xb5\x5b\x66\x1a\x07\x28\x25\x5a\x4b\xc8\x44\x9c\x72\x37\xf0\xd2\x31\xf9\x52\x68\x13\x35\xf3\xb2\x52\xba\x4d\x5b\xf9\xc1\x60\x0f\xe9\xee\xf7\xc9\xc8\xff\xce\x60\x3f\x07\xea\x0c\x0e\x72\xe8\xef\xbf\xeb\xff\xfb\xe3\xed\x83\xb4\xaf\x0c\x0e\x89\x59\x9f\x3e\xcb\x6f\xd0\xef\xd3\x85\x6f\x06\x3d\x19\xb0\x35\xe1\x88\xf8\xc3\xd0\xfd\xce\xe0\x9b\x0e\xfb\x62\xab\x74\x5c\x62\x0b\x55\x14\x8b\xc7\x5b\x96\xe7\x6e\x49\x55\x8b\xc1\xf1\x3f\x72\x0f\xd2\x91\xbf\x65\x87\x8e\xd8\x42\x01\xc5\x03\xbd\x0e\x38\xf9\xc7\x98\xc9\x88\xfb\x7e\xf6\xa5\xeb\xfd\x9f\xb0\xa7\x5e\xc4\xe0\xf4\xa7\x29\xa6\x5e\xb4\xa5\x37\x56\xcf\xfe\x25\xe7\x96\x4f\xde\x53\xce\xff\x91\x5d\xee\x79\x5f\xfc\x2b\x3e\x95\xe8\xe5\x3f\x32\x17\xb6\xbb\xaf\xfe\x99\xf9\x79\xcc\x51\x8c\x74\x72\xce\xa5\xfb\x88\xcd\x58\x70\xf5\xea\x6d\xf7\x4d\xa6\x5d\x1e\x2b\x9e\xde\x9b\x3c\xf2\x8c\xad\x62\xbb\x7e\x93\x0d\xb5\x19\xc5\x74\xf3\x26\xd3\x85\xa7\x79\x36\x6e\xdf\x64\x52\xe7\xb5\x14\xe3\x5d\xce\xf7\xbd\xc4\xf7\x1d\x7b\x3c\xf2\x7c\x67\x70\xff\xcf\x4c\x64\x43\xf7\x02\x77\x57\xda\xc5\xdf\xff\x73\x8c\x11\x8f\xa4\x3b\x9d\x1b\xec\x8b\xea\x72\x14\x03\x3e\xe1\x39\xd8\x0b\x48\x38\x58\x12\x27\x50\x8f\xb9\x25\x6e\x9c\xd5\x6c\x89\xf5\xd4\x91\x92\xbb\xfd\x1c\xd2\x2e\x72\x8a\x1c\x49\x8d\xb6\xac\x4f\xbd\x80\x96\x70\xfb\x45\x8a\x9a\xef\xde\x2f\x21\xc9\x7b\x8b\x28\x27\x32\xf2\x82\x53\xfe\x14\xc6\x38\x69\xb5\xbd\x24\x45\x2d\x90\x41\x7f\x95\x09\xbf\x53\x66\x72\x57\x98\xce\xc2\xd4\x1e\xe4\x0c\x83\x15\x86\x4e\x1a\x87\x81\x8b\x8d\x9f\x73\x79\x6f\x70\x75\xc3\x1b\xc1\x87\x65\xde\x8d\xa7\x15\xe6\x55\xa6\xe1\x0a\x4f\x18\x1f\x28\x30\xdf\xbe\x5b\xc3\x84\xc5\xcb\x18\x46\x65\x86\x40\x4c\xbb\xde\x48\xed\x4f\x05\x65\x1a\x4a\xf7\xee\x80\x76\x9e\x7c\xd4\x5d\x57\xa9\xa8\xd6\xf1\x03\xc4\xd2\x91\xdc\x08\x39\x06\xcd\x99\x40\xbc\x75\x40\x61\x54\x07\x9f\x15\xde\x4b\x7e\x61\x60\x23\x9e\x4b\x0f\x1e\x0e\x85\x13\x75\x8e\x45\x20\x44\x07\x6c\x54\xc7\xe8\x67\x08\xed\x3f\x25\xa6\x94\x04\x97\xde\x8e\x12\x09\xa9\xeb\x55\x2e\x72\xd3\xa6\xd9\x80\x42\xee\x80\x41\x4a\x1c\xa5\xdd\x5a\x4f\x11\xd5\xf5\xd2\x27\x02\x93\x34\x74\x63\x3e\x62\x30\x96\x11\x14\x5c\xb3\xc6\xf6\x50\xa8\x19\x7d\x58\xe4\x24\xd7\xd6\xbb\x44\x55\x87\x82\x27\xe5\x98\x3e\x4f\x52\x49\xbf\x10\xb1\x2d\x82\xd4\xa3\xeb\xa4\x65\xa6\x11\x9f\x49\x1e\xe9\x5e\x9d\xc1\xc6\x6c\x89\xc1\x0b\xca\x0c\xf3\x32\x3d\x09\xe3\xb4\x94\x8b\x45\x89\x5e\x22\x35\xd7\x90\x70\x4a\x2f\xa1\xd5\xdd\x6c\xf2\x02\x8e\x12\xa2\x45\x54\xa9\xbb\xfa\x07\x2a\x88\x8a\xf9\x48\x03\xa4\x8c\xb7\x89\x2d\x1d\xf9\xf2\x28\xf4\x9e\x04\xd3\xa8\xce\x60\x3f\x0b\xaf\xf3\x1b\xc1\x1d\x47\x7c\x1d\x85\xce\xd8\x17\xf2\x16\xfb\xc1\x12\xfb\xaa\xff\x0b\x08\x0e\x7e\xea\x51\x03\x42\x45\x4f\xea\x0c\x22\x0c\xcf\x2d\x92\x44\xcf\x07\x26\xc3\xdf\x43\xfc\x84\xe7\x60\x9b\xf4\x3d\x2c\x58\x8c\x84\xbe\xd4\xca\x8e\x88\xe8\xaa\x3b\x2e\xdf\x08\x92\x47\xa0\x8e\xb3\xf0\xa7\x88\x36\xd5\x72\x38\x99\xb8\x9b\xb3\x11\xae\xb0\x30\xa5\x80\x41\x4a\xbf\xcd\xc0\xa1\xda\x39\x25\xce\x00\xc7\x61\xbe\x49\x7d\x26\x91\xfd\xf0\x53\x49\x28\xd3\x6d\xd3\x8d\xf3\x8c\xa8\xe4\x2f\xa1\x2f\x34\xb6\xb8\x9b\x3d\xa6\x4f\x45\xf8\x9d\x09\x05\xe5\x49\x91\x4b\xc9\x5b\x58\x17\xaa\x9b\x3d\xd3\x03\x85\x8f\x42\x9f\xa7\xe2\x4c\xda\xa9\x67\x1a\x3b\xe1\x3e\x83\xab\x2c\xf2\x84\xfb\x35\x06\x9d\x22\x8c\x83\x7b\x8e\xec\xc9\xaf\x6d\x06\x5d\x22\x25\x6d\xaf\xdf\x67\xd0\x93\xc0\x55\xea\x33\x58\x10\x4b\x27\xe5\xea\xee\x33\x82\x29\xf7\x3d\x9b\xc1\x35\xb1\x11\x50\x61\x70\x33\xe1\xe6\xc7\xfc\x7e\x55\x9d\xb1\x8f\x70\x8b\x1c\x4f\x89\xec\x4d\x77\x08\x0c\xf9\x24\xe6\xf3\x64\xe8\xcd\xb7\x26\x9e\xc7\xe0\x9e\x90\x42\x44\xcd\x24\x12\x76\x7a\x85\xd3\x16\x83\xdd\x03\x72\x6c\xc4\xa0\x25\x03\xd2\xb0\xd1\x96\x00\xca\x98\xbd\x03\x93\xf9\x0c\xf6\x0f\x94\x53\x22\x06\x07\x3a\x78\x14\x48\x6b\x0c\x83\x43\x8d\xc2\x8c\x1f\x69\xc0\x17\x8e\x35\x67\xf0\x1e\x3f\xec\x0b\xf2\x1e\xf6\x0d\x69\x2a\xd2\x71\x16\xae\x91\x74\x93\x4e\x7e\xf8\x94\x67\x68\x8b\xc7\x35\x5f\x9d\xfc\xb0\x0a\xf8\x11\x9f\xa9\x13\xfc\x1b\x76\x01\x1d\x88\xa9\xce\x90\x53\x44\x97\xf6\x45\x44\x81\x52\xb2\xec\xf6\x0b\x84\x88\xbb\x5e\xe0\x16\x0e\xd0\x9d\xe4\x79\xcd\xb7\x50\xdc\x42\x0c\xe9\x4b\xb2\x19\xc7\xe1\x34\xa9\xc9\x83\x20\x4a\x26\x0f\xde\xe2\xf2\x82\x12\x9f\xf7\x16\x5f\x29\x97\x4f\x45\xae\x41\x38\xbd\xe0\xae\x20\xd9\xc3\xe0\x34\xcf\x63\x61\x1b\x67\x98\x47\x50\x27\xfb\xfc\x25\x8c\x5a\x7a\x8f\x96\xd0\x99\x59\x37\x58\x47\xa0\x61\x1a\xe6\x94\xfd\x6c\x1d\x17\xe5\x48\x69\x4b\xd9\x55\xdb\xfc\xcf\xeb\x09\xea\xf3\x71\x4e\xa5\xc3\x76\xb2\x52\xce\x0e\x8a\x48\x55\xa4\xf3\x03\x73\x43\x61\x85\x2c\xd2\x45\xc6\x26\x6b\x4e\x9f\x2c\xb8\x24\xbc\x3c\xfc\x72\x85\x61\x8f\x41\xe7\x40\x3a\x4d\x63\x90\xd0\x27\xbd\x40\xd0\x11\x0b\x9a\x20\xbb\x8a\x58\x63\x90\x6a\xaa\xca\xca\x58\xc3\x6d\x9e\x0c\x54\x4e\x26\x1a\x27\x8b\x3e\xcd\x40\x9d\xde\x4c\x63\xf4\xa2\xb6\x77\x50\x72\xfc\x76\xad\x40\x1e\x33\xb8\xc9\xc2\x07\x99\xd6\x78\x2b\x71\xc3\x84\xc1\x5c\x26\x95\xa4\xf2\x44\x09\x41\x21\x47\x41\xa1\x83\x38\xf8\xee\x30\x02\xae\x84\xee\x65\xa0\x23\x9d\xd9\xed\x4a\x1e\x09\xde\x32\x68\x49\x38\x11\x36\x8f\xa4\x65\xa1\x2d\x31\x53\x06\xef\x31\x66\x1a\x33\xd8\x43\xd4\x08\x57\xa6\xfd\xb9\x17\xb8\x07\x3e\x4f\x92\x9a\xb6\xb5\xed\xaf\x23\x2e\xc2\x70\xa4\x17\xd5\xfc\x70\x85\xbe\xab\x8e\xc7\x58\xab\xa4\x6e\xec\xa9\x23\x93\x07\x32\xe1\x27\xb9\x5d\x58\xe8\x0b\x87\x53\x6e\x6e\x30\x14\xef\xaa\xac\x36\x25\x13\xc9\xbd\x90\x23\x19\x2d\xea\x7b\xbe\x48\x3e\xfd\x8f\x9c\x16\x1c\xe2\x90\x66\x92\x6f\x92\x01\x01\x79\x6a\x2c\x3b\xaf\x72\xfc\x06\x45\xab\xcf\x27\x6f\xd1\xd5\xd6\xb1\xc8\xbe\xa2\xb7\xdf\x33\x84\x32\x62\x9d\xe6\x29\x48\x23\xd6\x59\x8e\xc8\x14\x4d\x97\x62\x91\x0f\x3c\x49\x4d\x63\x6f\x56\x65\x30\x27\x3c\xb6\xb9\x0c\x6c\xa9\xcf\x5e\x48\xae\x59\xd3\xa7\xb3\xec\x52\x3e\x34\x25\x8f\xaa\xb2\x4b\xc5\x42\xa0\xda\xa5\xdd\x95\x1c\x6d\xe9\xc8\xf2\x4a\x71\x60\x3d\x2b\x99\xda\x92\x0c\xde\xc8\x5b\x60\x2d\x77\x88\x83\xf6\x4f\xbb\x3a\x28\x57\xb2\xbd\x22\x98\x9f\x00\xb8\x2e\xa2\xb1\x27\x87\x0c\xda\x98\xa6\x88\x6d\xb9\x50\xbd\x91\x1c\x29\x67\xb0\x47\x84\x34\x0e\x13\x06\xfb\x18\xf6\xf4\xd9\x91\x03\x09\x91\xfb\xc9\x8d\x43\x02\x02\x06\x47\x32\xa0\x4f\x5d\x52\x42\x0a\x54\xe5\xbb\x53\xb8\x82\xb5\xed\x5e\xa1\x48\x86\xe8\xa1\xf9\x5e\x21\x57\xfa\xd9\xb7\x43\x85\x3f\x58\x5e\x47\xf1\x19\x5f\x43\xa2\xd5\x94\xb5\x86\xa4\x15\xfe\x63\x4a\x30\x8e\xc3\xf8\x04\x47\xe6\x09\x81\x33\xea\xc1\x14\x2b\x74\x78\x6e\xc1\x38\x45\xaa\x7c\x9b\xf2\x8c\x82\xe3\x44\x28\xcb\xf3\xb9\x86\xd5\x64\x7a\xa1\x61\xe9\x94\xf1\x52\x83\x38\x6d\x5f\x69\x60\x2a\x2d\xd9\x9d\x43\xed\xbb\xb1\xab\x42\xdf\xc3\x7e\x3f\xb1\xe5\xe2\xb3\x77\x68\xb2\x80\xb4\xb9\x6b\x0a\xa5\xe3\x18\xb5\x9a\x1b\x04\x42\x06\x0e\x66\x33\x08\x1d\xb5\xed\x78\x4b\xe8\x78\x84\x2c\x42\x92\xa4\xe3\xd2\x3b\x22\x4c\x63\x1e\x31\xe8\x23\x41\x5e\x10\xd9\xcd\xd5\x35\x06\x2e\xe1\x6d\xc1\x03\x06\xf7\x87\xe4\x2b\x95\xc1\xfb\xc3\xdc\x69\x2a\x3f\x32\x59\x38\x64\x60\x1d\x99\x1b\x2c\xf4\x9d\x2d\x79\x07\x6d\x40\xf1\x02\x2a\x93\x54\x52\xec\xa3\x0c\x21\x4b\xe6\xe4\x08\xf2\x4d\x2b\x0a\x30\x0d\x43\xaf\x90\x06\x56\xd2\x93\x84\xe9\x6a\x4f\x92\xf2\x54\x64\x87\x9e\x24\x61\x1c\x48\x09\xeb\x13\x28\xc7\xe9\x67\x06\xfd\x23\x82\x9e\xb1\xb7\xb9\x14\x26\x5f\x8b\x92\x29\xa5\x71\x73\x39\xe6\x3e\x0d\xea\xc1\x91\x44\x92\xeb\xc6\xa3\x25\x17\x94\x4f\x88\xc0\x9c\x06\x14\x77\x9c\xd6\xed\x64\xd2\x60\x10\x6a\x10\x17\x08\x0d\x06\x91\x82\xcb\xfa\xf0\x50\xc6\x96\xda\xeb\x33\xb1\x90\x2e\x1a\xcb\xa0\x74\x9a\x51\xe7\xe3\x34\x5c\xb3\x81\x97\x86\x51\x7d\x5b\xb9\xc6\xd8\x21\x87\x4b\x6a\x59\xb8\x23\x9d\x90\x24\xa5\x44\xe4\xf1\xd5\x3c\x99\x58\xf8\x1c\x55\x97\xcc\xb7\x46\x5a\x64\xbf\x65\x30\xd6\xb0\xcf\xe7\x24\x14\x7c\xcc\xec\x34\x48\x18\x8c\x8e\x4c\x16\x31\x98\x20\x47\xf4\x2b\x83\x29\x05\xa4\x6b\x03\x06\xb3\x19\x0a\xf9\x88\x27\x29\x2e\xaf\x8f\xb4\xcb\xcf\xb9\x64\x4a\x07\xb9\xca\xbd\x50\x28\x14\x7e\xca\x9e\xd2\x24\x94\xcd\x20\xc4\x88\x72\x15\x49\xa9\xee\x12\x41\x1e\xc5\x89\x90\xe6\x61\x95\xc9\x80\x2d\xa6\x5e\x22\x4e\xd4\x24\xdc\x22\x4e\x2f\xb0\x07\xd9\xce\x9d\xc4\xcc\x84\x9f\x5c\x88\xf8\x44\xea\xc0\x7b\x84\xf4\xb9\x2d\x70\xa9\x4f\x4b\xa2\x23\xed\xa8\x74\x5f\xd1\xe6\x85\xbd\x81\x04\xa9\xf2\xf0\xde\x01\x91\x31\x5c\x63\x70\x98\x03\xca\xc3\xd0\x51\x01\x23\x2d\xf5\x39\x22\x73\x47\x7a\x9c\xe1\xd4\x7e\x5f\xaa\xd3\x97\x02\x6f\xac\x41\xcc\xd9\x44\x03\x09\x83\x69\x16\x5e\x3e\x36\x38\x23\x8a\x3f\x77\x31\xbb\x27\x32\xfd\xc4\x0b\x68\x48\x9e\x6a\xb0\xdc\x87\xf4\x26\xb1\x72\xb4\x74\xb6\x9e\xcb\x17\xfd\xb4\xae\xbd\x70\x51\xbf\xa3\x2e\xa9\xba\x5e\xa1\xe3\x45\xb3\xc6\x52\x87\xc3\x75\x5d\x29\xd1\xac\xdf\xad\x30\x5e\x10\x5f\x4c\xee\xaf\x65\x88\xee\xe4\x94\xd6\x3a\x57\x9a\x22\x1d\xe9\x1e\x11\x90\xe2\x28\x5d\x50\xd8\x1b\xf1\x78\xee\x78\xdc\x0d\x03\xee\x27\x69\xec\x91\x07\xa6\x8e\x8c\x15\x3e\x69\x0f\xac\x5d\x85\x20\x4f\xae\x5a\x62\x34\x29\x85\x70\xe2\x05\x36\xdd\x2c\x26\x9e\x94\xc1\x35\x05\xc6\x31\x79\x1f\xbe\x21\x60\x56\x61\xb0\x8b\xec\xb3\x06\x83\x5b\x89\xca\x9d\xdc\xcc\xea\x0c\xee\x14\x32\x2b\x77\x65\x69\xdc\x52\x9d\x6e\x37\x18\xdc\x23\xe7\xf3\x98\x3b\x29\x9d\x7f\x78\x8f\x60\xcc\x2d\x9f\x01\x9f\xab\xe0\xd6\x38\x11\x5b\xda\xa3\xb2\xa5\xb1\xb6\xef\x45\x0c\x6c\x0d\xe6\x76\x4a\x47\xa3\x92\xc1\xff\x47\xdc\x9b\x37\xa7\xd1\x2b\x0f\xa3\xff\xfb\x53\xc4\xbc\x79\xf9\x49\x46\x4c\xc0\x59\x9e\x64\x26\x0a\x65\xf0\x0a\x78\x5f\x88\x33\x67\x4e\x4a\xb3\x01\x66\x58\xcc\x66\xc0\xf0\xdd\x6f\xa9\x25\xcd\x68\x00\xe7\x79\xce\xb9\xbf\xba\xb7\x52\x31\x52\xab\xa5\x91\x5a\x52\xab\xd5\x6a\xb5\x18\xb8\xa9\xae\x9c\xc5\x6e\x95\x03\x91\xd6\x6b\x06\x15\x68\x36\x78\x51\x3e\x6e\x0f\xdb\xbd\xe6\x0d\xd8\x70\x1c\x2a\x5c\x45\x96\xa3\x33\xe5\x94\x36\x84\xbc\x81\x37\x46\x19\xd2\x14\x61\x3f\x43\x8e\x21\x5d\xf8\x31\xbf\x1f\xf2\xcd\xa5\x00\x0c\xd9\x0b\x5f\xf5\xcf\x84\x2b\x70\xb8\x58\x26\xf2\x34\x93\xdb\x26\x67\x90\x2a\x58\x7f\x5b\xa4\xf2\xc8\x6d\x30\x6c\x07\x6a\xcf\xf1\xb4\x15\x2e\x0b\xe8\x6c\x4d\x8c\xf7\x3d\xd1\xdb\xc9\xb0\xfb\xe9\x6a\xe9\x62\x16\xf6\x12\x08\xdc\xcb\xce\x90\xfe\x1a\x44\x6d\x4c\x06\x02\xae\x7c\xed\x90\xea\x99\x16\x8d\xbd\x8e\xc5\x01\x95\x94\x21\xcf\xa9\x8c\x1f\x84\xcd\xf1\x07\x65\x7a\x3c\xdc\x9e\x2a\x8d\x0a\x46\x5b\x53\xe3\xd3\xf5\xf1\xd6\x64\xb1\x55\x9a\x6c\x4d\x13\xbc\x79\xba\x35\x4d\xf4\xfa\xcb\xd6\x34\xe5\xdc\x6c\xb6\x35\x55\x7a\xc6\x9a\xa7\x13\x47\xd3\x66\xdc\x90\xc5\x66\x52\xdc\x8a\x83\xcd\x34\xa9\x6c\x2d\x6f\xa6\x88\xc6\x55\x36\x13\x44\xcb\x0e\xb7\x27\x28\xdf\x71\x9b\xa9\xa2\xd1\xc7\x9b\x09\xaa\xc5\x27\x5b\x92\xa6\xcd\x0c\x39\xdd\x0a\x97\x1f\x3a\xdb\x4c\x14\x34\xaa\x8a\x84\x41\xc0\xc6\x19\x52\x13\x11\x60\xd8\x35\x18\x4e\x62\xfd\xa8\x8b\x30\x67\x1f\x30\x91\xea\x12\x6f\xc2\x25\xb6\x73\x11\x99\x06\x43\x4e\xbb\x0b\x2d\x26\x14\xd1\xe7\x67\x31\xa0\x22\x0c\xce\xc1\x70\xf0\x12\x10\x9b\x2e\xca\x90\x2b\x19\x64\x28\x43\x2e\xce\x64\xb0\x40\xe0\x1f\xce\x90\x4b\x0e\xe2\xfc\x5d\x5d\x63\xb8\x06\xfc\xd8\x56\xf9\xae\x7f\x23\xaa\x7c\xa5\x10\xa5\x7d\xd8\xce\xf5\x59\xe2\x52\xfe\x26\x0e\xa3\x0c\xb9\x85\xc8\x4b\x86\xdc\x40\x51\xfd\x97\xd8\xaa\xf6\x4e\xa4\x28\xe7\xd9\xf7\x22\x3a\xca\x90\x07\x1e\x9a\x65\x48\x83\xff\xce\x33\xe4\xe7\x19\xcd\x8c\x58\x0f\x2e\x6e\xb6\xc3\x0c\xb9\xe5\x25\xc1\x91\x30\xca\x90\xc7\x33\x19\x96\x46\x76\x22\x2a\x94\x08\xef\x21\x22\x84\x66\x56\x85\x30\x98\x57\xdf\x89\x02\xc4\x7b\x22\x42\x6e\xb8\x07\x10\x5c\xcc\xdb\xb6\xac\xb8\x55\xfd\xe1\x04\x4f\x8b\xdd\x40\x95\xfd\xaa\xf6\x18\x83\xb0\x6d\x0a\x00\x14\x1f\xf7\x3d\x88\x0f\x00\x9f\x69\xc4\x61\xc9\xdb\x7e\xc6\x80\x98\x9f\x3d\xa6\x41\xe2\x72\x41\x55\x82\x46\x19\xd2\x8c\xc3\xea\x82\x4f\x6b\x0d\x92\xf7\xd9\xb0\x93\x21\xbf\xe2\x82\x14\x5c\x1e\x0d\xb4\x63\x7c\x23\x43\xde\x27\x58\x46\xc1\xd8\x6a\x96\xc3\x16\x31\x8a\xa0\xf5\x53\x95\xee\x64\x60\x38\xb8\x22\x69\x2c\x3a\xb6\x53\x85\xd7\x2d\xfc\xfe\x4b\x62\xb1\x11\x25\x30\xe5\x56\xde\x83\x4c\x02\x36\xcb\xab\x0d\x85\xaf\x43\x95\x21\x4a\x37\xc9\x3d\x53\x88\x81\x86\x38\x8f\xb3\x87\x3a\x54\x65\xef\x25\xd9\xe7\x0a\xb1\x5f\x8d\x9f\xe0\x68\xca\x3c\x83\x60\xb4\xe1\x42\xb2\xa5\xa5\x29\x86\xd6\xd6\x60\x31\x27\x7b\xd2\x80\x92\x85\x75\x34\x90\xe0\x5d\x91\x06\x11\x4c\xab\xab\x41\x04\x3f\xea\xad\x41\x24\x5b\x19\x54\x63\xa8\x62\x4f\x7d\x0d\x53\xb0\x98\x81\x80\xf4\x87\xe3\x72\x7c\x5d\xeb\x39\x86\x09\x13\xd3\xa1\x8c\x4f\x22\xff\x54\x9d\x13\x69\x1e\xeb\x9f\xe1\x3b\x7c\xc2\x8e\x24\xe2\x0b\x1c\xd2\xc6\x06\x78\xe3\x05\x97\xf9\x39\x5c\xf8\xc2\x09\xe4\x2b\xfa\x7c\x41\x93\x79\x85\xd1\xdb\x44\xe5\xbf\xd9\xcf\x90\x69\x1c\x49\x96\xe8\x91\x5a\xf7\x5f\x54\xa2\xd4\x7f\xcd\xe2\x78\xdb\x0f\xae\x58\x8f\xcb\xf0\x73\x05\xe3\xdb\xaa\xa3\x69\xc0\x19\xc3\x62\x03\x26\xa6\xde\x48\xd6\xe3\x8e\x4b\x4d\x63\x15\x11\xa7\xea\x7c\xe3\x01\xd9\xda\x7e\x70\x0b\xbc\x41\x2a\x12\xca\x02\xba\x08\x84\x85\x7d\xac\x8c\xab\xa4\xe0\x5d\x36\x13\x42\xfb\xe1\x3a\x58\xd9\xdb\xa7\xe1\xed\x9e\x40\x3f\x5e\x07\x4b\xf4\x93\x14\x5c\x63\x64\xa7\x90\x10\xb1\xde\x58\xdc\x0d\xcf\x90\xb3\x35\xc8\x81\xd0\xc0\x4d\x78\xfb\xe0\xe2\x79\x86\x54\x05\x0a\xbc\x30\x30\xe5\x70\x65\xa2\xac\xd4\x7c\x35\x40\xe8\xb1\x81\x78\x0a\x34\x43\xea\x00\x80\x63\x36\xb8\xeb\x55\x9e\x8b\xfa\x9e\x03\x7c\xc0\x86\x1d\x31\x72\x5f\x78\x69\xd2\x1e\x61\x67\xc6\x23\x43\x2f\x43\xe6\x55\x78\x5c\x03\x6e\x49\x41\x06\xbe\x81\x93\xe2\xd5\x42\xa4\x0d\x33\xe4\x40\x86\xc6\x19\x72\x29\xb1\xf8\x32\x11\x1c\x40\xd8\x3f\x0c\xa6\x6d\xa5\xd5\x17\xa0\xe4\x7a\xa9\x8a\xab\x1b\xa5\x65\x28\x2a\x18\x64\x48\x45\x86\x06\x81\x2f\x2e\x37\x1d\x26\x00\xbe\x47\x82\x0b\x08\x2d\x91\x5f\xdc\xfa\x3a\x02\x84\xfe\x20\x43\xda\x02\xdc\x1f\x28\xd6\x79\x5c\xd5\xe3\x66\x86\x9c\x54\xd5\x43\x11\x19\xf2\x24\xb0\x79\x24\xcf\xa7\x10\x3c\xa5\x9a\x21\x1d\x0d\xcc\x69\xe4\xb1\x41\x86\x9c\xc6\xf9\x12\x7b\xb6\xb3\x04\x26\x75\x81\xd5\x18\xa2\x74\x55\x51\x52\x98\x66\xc5\xac\x01\x65\xce\x5e\x02\x92\x24\xea\x27\x90\x58\x37\x39\x48\x60\x8a\x09\x00\x64\xe2\xea\xd7\x29\x86\x12\xd6\x6d\x73\x19\x84\x57\x89\xcb\x36\x75\x1e\x78\x09\x33\xe4\xbc\x4a\x33\xe3\x0c\x19\x71\xac\x31\x58\xb9\xc9\x93\xef\x9d\x8b\x6a\x02\x69\x8f\xe4\x79\xc6\x25\x07\xba\x7d\x7f\x9e\x21\x57\x3c\xe8\x67\xc8\x75\x55\x78\x17\xcc\x27\xcf\x50\x30\x09\x49\x1c\x7f\x66\xc8\x44\x41\x65\x8b\xa6\x2a\x9e\x9c\x52\xbc\x28\x50\xa2\x4f\xb9\x91\x85\x4b\xdd\xfe\x4c\x61\x08\xb6\x7a\x5b\x4d\x62\xfd\x4e\x86\xcc\x21\xb9\xd5\xf6\x3a\xbd\x60\x34\xca\x90\x05\xc4\xdb\x5e\xe7\xd6\xeb\xf3\x0d\x91\x50\xf8\x73\xde\xa0\x12\x22\xa1\x5e\xbd\xab\xc6\x6f\xdd\x94\x45\x52\x37\x38\x49\x7c\xae\x64\xc8\x7d\x35\x7e\x0b\xa4\x22\x10\xc6\x91\xea\x9b\x07\x95\x96\xb4\xe4\x30\xc6\x49\x9a\xd2\x50\x68\xda\xa9\xc9\x51\x8c\xf7\x33\x43\x7e\x2a\x84\xc7\x0c\x79\xe4\xe1\x7e\xb3\x19\x05\xbf\xe5\x8e\x3e\x43\x8e\x01\x59\x5a\x9b\xb7\x9b\xbd\xfe\x30\x50\x96\xa7\x27\xa9\xa4\xd1\x29\x3c\x3f\x74\xaa\x03\x07\xed\x69\x7f\x6c\xcc\x32\xe4\x6c\x13\x3a\xcf\x90\xaa\x0e\x85\xd5\x80\xb7\xad\x02\x7c\x76\xa7\xb6\x9e\xa8\xcc\x8a\xa5\x21\xf3\x7a\xf2\x91\xb0\x06\x3e\x5f\x87\xdf\x09\x02\x5e\xe8\x70\xad\x73\x7f\x55\x35\xb0\xba\xc3\x71\xa9\x21\x27\xf4\xbd\xd2\xa0\x89\x47\x83\x75\xa0\x70\x67\xa0\x41\x45\x7d\x6f\xd7\x20\xb2\x1b\xef\xd6\xc0\xb2\x56\xf7\x3a\x58\xd5\xea\x3d\x54\x75\x90\x21\xac\x06\x01\x25\x48\xbb\x22\x2a\xef\xfe\x3e\x88\xac\x83\xdf\xd2\xbf\x78\x43\xc4\x27\x5e\x4b\xd9\x73\xff\x8c\x21\x70\x42\xfa\x18\x47\xc5\x0e\xda\xab\xc9\xa8\xe4\xab\xbf\x20\xfd\x79\x96\x21\x3e\x4f\xe1\x15\x01\xc8\x50\x5c\xbe\x2d\x33\xed\x9d\x1d\x94\x21\xae\x00\x48\x47\x38\x7c\x52\x7b\x02\xa2\x8e\x75\x7c\x19\x15\x8d\x0a\x20\x36\x1a\x30\xce\xa2\xcb\x7c\xf9\x1f\xcf\x07\xc1\x6f\xf0\x01\x67\x82\xc3\xc5\x0c\x69\x02\x4e\x02\xbe\x65\x61\x20\x46\x5b\x50\xa3\x99\x49\x94\x21\x2d\x8e\x31\xe9\xc9\x2b\xcf\x6d\x11\x93\xb7\x12\x43\x8e\x03\x4f\xcc\xc3\x6a\xd3\x84\xa8\x6e\xc6\x22\xb0\xd5\x3d\x90\x0e\x44\x07\x19\x12\x41\x60\xd8\xe6\xdd\xd0\xef\x35\x33\xa4\x2b\x00\x11\xca\x90\x56\x4d\x84\xfe\x4f\x86\xb4\x6b\x7f\xe7\xc0\x96\xf4\x20\xe3\x28\x58\xbf\x40\xd0\x97\xf0\x3a\x67\x78\x15\xe5\xe3\x67\x20\xa1\xf2\xbd\xae\x18\xfe\x54\x03\xf0\x10\x5e\xa5\xbd\xec\xdd\x83\x3f\xcb\x1a\xcd\x4c\xf3\x82\x11\x0a\xbb\xa0\x88\x43\x4c\x61\xff\xfc\xcc\x4b\x9a\x9a\x52\x64\xec\x42\x8a\xd0\x0c\xf7\x20\x2c\xaf\x44\x0a\x2c\x21\x21\xf6\x21\x41\x0a\xa8\x23\x91\xa2\x16\xab\xb1\x88\x26\x9c\x70\xc0\x91\x0f\xc0\xd8\x65\x02\x69\x92\x8b\x4f\x65\x04\x8c\x96\x9e\x6b\xf0\xe0\x1a\x54\xee\x05\x12\xb8\x74\x92\x67\x3d\x3f\xaf\x2b\x66\x77\x66\x71\x9a\xe6\xa7\x60\x1e\x03\xc5\xb9\x57\x12\x6d\xf7\x32\xe4\x20\x8e\xf6\xb8\x50\x59\x8e\xa3\x42\x62\xad\x88\xf8\x50\x7b\x17\x27\x64\xd1\x28\xb0\x32\x64\xc8\x2b\xa5\x1e\xa0\x18\xd5\xc4\x8b\x69\x70\x2a\x31\x96\x11\xe1\xba\xca\x80\xcf\x4e\xd6\x60\xfc\xdb\x87\x50\x78\x02\xec\x4d\xba\xc1\xb0\xed\x9d\x73\xfc\xa3\x37\xd2\x78\xbe\x69\xaa\x2c\x21\x53\xbe\xd4\xe2\x07\xa6\x12\x4b\x8a\x59\x2d\x7e\x16\x21\x43\x8e\x79\x89\x32\xf6\xd7\xd6\x47\x12\xc8\x49\x82\xb2\xa9\xc6\x4f\xd4\xa4\x62\x6b\xba\xe5\x1c\x00\x2a\xd0\x8e\xda\xe3\xb9\x52\xf2\x67\xc8\x9c\xd7\xa1\x3f\x94\x3a\xc5\x85\x88\x45\x7e\x86\x1c\xd4\x68\x66\x96\x21\x65\xfe\x53\xcc\x90\x0a\xff\xdd\xcf\x90\x53\x5e\x87\x59\xfb\x46\xd7\xe3\x1d\xd6\x68\x66\x5e\xcc\x90\x23\xfe\xbb\x9f\x21\x67\x1c\x67\x0e\x2a\xf6\x2a\xcc\x77\xe9\x6e\x92\x83\x17\x97\xe2\x58\xf8\xb8\x46\x33\x8b\xdb\xfe\x7c\x91\x21\x75\x80\xf7\xfb\x5d\x71\x2d\x5d\xdb\x4d\x9c\xab\x94\x7a\x30\x05\x6b\x94\x1a\xcd\xbc\xae\x32\xe4\x82\xc3\xff\x35\x29\x14\xdc\x42\x86\x5c\x8a\xc8\xfe\x67\xd7\xcb\x24\x8f\x7d\x9f\xd6\xc4\x3b\x8b\x7c\x70\x78\xd4\x5d\x2e\xaf\xca\xcc\x92\x8f\x2e\x6a\x4f\x8d\x8b\x37\xe4\xc7\xad\xf6\x68\xb9\x74\xdb\xc4\xa5\x2e\xbc\x49\x3c\x19\x06\xbf\xbb\x41\xb7\xdf\x5e\x04\xbf\x3d\xe6\xb5\x82\xdf\xcb\x25\x7a\x2b\x89\xbe\xae\x30\x09\xa8\x87\xc6\x6d\xc4\x30\x89\x1f\x2e\xc7\xea\x7b\xae\xbd\xf0\x1c\x14\xe0\x92\x6b\x07\x8e\xc9\xff\x50\x66\xdf\x7a\x0e\xe2\xdf\xd5\xf0\x57\xda\x5b\xca\x65\x26\xea\xaf\xde\xb2\xf7\xa8\xcd\x1c\xe2\x53\xd7\xae\x3a\xf9\xa2\x55\xf8\x4e\x7d\x2b\x9f\xf7\xb1\x67\x57\x1c\xc4\x19\x67\x3f\x7c\xe7\xda\xbe\x43\xf8\x9f\xf8\xcb\x9e\xdd\x0d\x1c\xd4\xe8\x30\xbc\x82\xf7\xee\xaf\xcb\x8c\x76\x3a\xc8\x1e\x1d\x12\xf0\xb5\x91\x21\x0f\x87\x24\xe3\x71\xde\x93\xf1\xfa\xdd\x2e\xe3\xc3\x32\x03\xee\xbf\x33\x24\xd3\x1a\x66\xc8\x6c\x44\x26\x27\x24\xd3\x09\xe6\xcd\xa0\x97\x21\x6e\x8b\x34\x5e\x18\xc9\x80\x97\xe8\x0c\xc9\x8c\xc0\x4f\x20\xac\x17\x24\xf3\xe2\x0e\x33\x8e\x78\x58\xff\xa6\xcc\xe8\x87\xef\xf6\xbf\x7f\x38\x7b\x3f\x96\x59\xfb\xdf\x96\x93\xb3\x3e\x34\x93\xee\x39\xab\xa5\x9e\xc1\x74\x4b\x0c\xde\xde\xbf\x29\x33\x72\x89\x4d\xb6\xe2\x65\xdc\xf2\x32\xec\x83\xfc\x2f\x96\x5f\xf0\xce\xf6\x0a\x79\xfe\xe3\x7f\x81\xbf\x5f\x21\x12\x42\x24\x84\xc8\xbe\xfb\xf5\x5f\x93\xc2\xc7\x02\xa0\x7d\xfe\x56\xf8\xd7\xa4\xf0\x15\x22\xc5\x30\x0c\xff\x35\xd9\x2f\x14\x82\x7f\x4d\xf6\x3d\x00\x85\x6e\xd1\xfb\xd7\x24\x0c\x44\x24\xf8\x12\xf2\xbf\xa1\xcf\x23\x61\x18\x3a\x1f\xc8\x1d\xff\xf8\xbf\xed\x7f\xff\xff\xf2\xf9\x3d\x1b\x8a\x28\xf2\x92\xfe\x92\x99\x43\xc8\x05\x28\x7e\x08\xf8\x7f\x89\xcc\xa1\xe7\x7c\x20\xf7\x50\x5d\xb0\xfb\xfb\xd7\x87\x7f\x7d\x30\xf6\x3e\x90\x07\x00\x21\x36\x5c\x7a\x1d\x77\xe9\x4f\x97\xad\x60\xd9\x7e\x59\x86\x6c\xd9\x7b\xee\x2f\x07\xa3\xe5\xc8\x5f\x4e\x9a\xcb\xc9\x70\x39\x6f\x2f\x8d\x3d\x3b\xff\xdb\x41\x07\x43\xe6\x2e\x4f\x03\x77\xb8\xbc\x6b\x31\xb6\xbc\xe8\xf4\xfb\xcb\xbb\xb0\xd7\xc4\x18\x95\x76\x25\x4e\x9d\x8d\x7b\xcb\xca\x7c\x18\x61\xf4\x7e\x99\x5f\xfe\xc6\xea\xf7\x43\xdb\x4a\x1e\x8c\xad\xd6\x50\xdc\xbb\x0f\x65\x66\xb7\x7c\x07\x0d\xfa\xa8\x39\x62\x78\xb9\x1c\x1c\x63\xe8\xe1\x06\xaf\xe2\xbf\x46\xb9\x0f\xe4\x27\x84\xfc\x0f\xc9\x08\x79\xdc\x9c\x01\x05\xe2\xd3\x02\x09\xe8\x6e\x91\x84\x54\x8e\x20\x7b\xe8\x39\xa8\x51\x66\x98\x34\x69\xc1\x6a\x7e\x0f\xed\xaa\x63\x35\x73\x39\x31\xb5\x3b\x34\xb4\x9b\x8e\x75\x27\x2b\x70\x56\x43\x1d\x32\xed\xb7\xfd\x77\x05\x8c\x4b\xc8\xcb\xe5\x88\x9f\xcb\x61\xf3\x5e\xa6\x77\x70\x29\xa0\xbb\x05\xf3\x76\x2b\xbe\x9f\xcb\x99\x3f\x63\xcc\x6c\x16\x71\x5c\xbc\x92\x8d\x2c\x50\xea\x97\x82\x52\xd1\x2c\x98\xc6\xa7\xef\xde\x07\xbf\x94\x2f\x9a\xc5\x55\xd2\xa0\x1a\xa7\x08\x9f\xf1\xc6\xe1\x27\x7a\x69\x41\x88\x4d\x18\xfd\x55\x66\xab\x5a\xcd\xae\x39\x46\xf9\x9e\xee\x16\x2c\x11\x5e\xdc\x53\x8d\x4d\xc9\x6f\xc8\xdc\x2b\xeb\x80\x21\x40\x23\x9b\x38\x51\x9f\xe5\x24\x5e\xee\x57\x6b\x85\x93\x0a\xbc\xe7\x14\x4d\x5e\x9e\x7d\xd7\xee\x09\xe3\xe9\x7e\xf8\xae\x56\xcb\x66\x99\x3d\xf1\x1c\x4a\x29\x84\xa1\x66\x94\xd7\xad\xc4\x8c\xc3\x4f\x66\x58\x16\x73\xf2\x57\x99\xd1\x57\xad\x51\xf5\xb8\x51\x7e\xdc\xa8\xe6\x98\x51\x56\x61\xab\xba\xd6\x28\x9e\x97\x55\x20\x6f\xfd\x6f\xda\xe7\x7f\xd2\xca\x77\x2b\x50\x67\xc1\xa6\x7b\xc1\xcb\xbb\x7a\xcd\x72\xf9\xb7\x62\x66\xee\x42\xbd\xbc\x0a\xa3\x1c\xf7\x12\x13\xbf\x02\x33\x37\x6f\xfc\xdf\xdf\xbb\xff\xe7\x1d\xcb\x2f\x0e\xf2\xbf\x0a\xf9\x6f\x4e\xee\xbd\x36\xba\xce\xe3\x7a\x57\x8e\x54\xbd\x5b\x63\x46\x83\x0a\x5b\x9d\x6b\xf5\x3e\xff\x9b\xca\x56\x8e\x56\x12\x67\x1c\xb2\x24\xc3\x70\xb1\x25\x43\x51\xf0\xe0\xa0\x92\x26\xe1\xc5\x96\xaa\xd4\xc7\x8c\x86\x15\x26\x22\xe5\x90\xd1\xde\x24\x8a\x56\x17\xfa\x87\x2e\xde\xfe\x90\xca\xb5\x92\x48\xa2\x29\x17\xff\xa0\x29\xc9\x9b\xff\xb5\xb7\x86\xca\x85\x36\x54\x20\x0c\x95\xa5\xbc\xba\x25\x66\x54\x8e\xcc\x66\x99\x69\xeb\x18\x94\xd3\x0e\xd1\x5a\x19\x58\x15\x6d\xc9\xae\x9d\x44\x91\xc5\x78\xdb\xb2\x59\xe4\x52\x66\x0c\x17\x08\xc7\xcb\xd8\x75\x0d\x1d\xb5\x11\x33\xca\xf7\x25\x66\x2c\xee\x11\x36\x6f\xc7\x7c\xdf\x8d\x18\xc6\xc4\x15\xbc\xa4\x29\xba\x3d\xee\xef\x3c\xef\x70\xd2\xaa\xc0\x82\xd7\xe2\xab\x1c\xbc\x28\xdc\x19\x11\x71\x1b\x4b\x8a\x18\xf7\x4d\x92\xe9\xb2\x5e\x3b\x0c\xf8\x36\x24\x33\xe8\x8f\x40\x2a\x9d\x55\x31\x69\x8b\xbc\x6e\x8b\xcc\x5b\xe4\xb8\x85\x35\xee\xf6\x24\x86\x65\x32\x4c\x79\xac\xc3\x97\xff\xd2\x2f\x60\x4b\x26\x62\x14\xda\x4e\xfc\x1c\x05\x62\x12\x26\x5b\x45\x0a\x94\x7a\x25\x8f\x32\xb3\xb0\x4b\x59\x36\xeb\xc1\x5f\xe4\x01\x0d\xb0\x68\x8c\xe0\x75\x97\xd6\x2f\x14\x4b\x07\xc4\xd5\xc9\xe1\x13\x4f\x60\x86\x6b\xa3\xe9\x3a\x25\xf7\xf0\x19\x73\x51\xb3\x3c\x3e\xb4\x98\xe5\xc1\x50\x72\x63\xe1\x00\x0a\xb8\xa9\xd1\xeb\x1a\xba\x24\x05\x8d\x53\xdc\xca\x42\x7e\x72\x16\x7c\x59\x43\x2e\xc6\xda\x27\x3a\xfa\x9c\x64\xf6\xad\xef\x10\x8f\x32\x7b\xec\x39\x96\xb7\x5c\x5e\x45\x88\xe1\x5d\x5a\x6d\x2e\x97\xc8\xa3\xf7\x1d\xc4\xb0\xdd\xf4\x1c\x6c\xb5\x43\xb4\xeb\xa9\x7e\x77\x79\xb4\xdc\xc1\xbc\x10\x9f\xf6\xbb\xc8\xc3\x5c\xf8\xca\xf9\xf6\x89\x63\x05\xd1\x28\x78\x57\xed\xa0\xaf\x38\x9b\xdd\xad\x76\xd0\x37\xce\x6c\x63\xac\x3c\xe5\x48\x31\x31\x7e\x46\xc8\xc3\x25\xcf\xae\xf9\x4e\x1e\xb9\x39\x66\x1f\xb8\x0e\x36\x5d\xad\xbe\x77\xd0\x1a\xe2\x11\x9f\x04\x24\x24\x4d\xd2\x21\x91\xa8\x7e\x8f\xde\xd7\x78\x99\x03\x1a\x76\x79\x17\x8d\xe8\x03\xaf\xbd\x35\xca\x66\x07\xc6\xc5\x02\xd5\x22\x34\xc2\x42\xa0\x19\xd1\x5b\xde\x14\x32\xe1\xbf\x1e\xb4\x66\x64\x34\x3d\x84\x77\xe9\x04\x7e\x45\x89\x53\x2a\xa0\xf6\x9d\xef\x90\x09\x9d\x18\xd7\x65\x84\xc9\x02\x3a\xa2\xd6\x41\x05\x52\xc0\xa4\x4c\xdd\x08\xdd\x77\xd0\x14\x63\x72\x48\xa7\x96\xdf\x87\xac\x17\xb4\x4c\xe9\xa4\xd4\x88\xd0\x21\x36\xcf\x02\x86\x0e\xb1\xb5\x30\x66\x39\x7a\x61\xcc\xac\x85\x31\xe7\x81\xf9\x0a\x1c\xe6\xa3\x72\x36\x5b\xde\xa5\x93\x6c\x16\x1d\xd2\xb2\x01\xc6\xf9\xf2\x6e\x02\x27\x55\x99\x96\x6d\x7f\xe1\xf0\x9a\xd3\x8b\x0e\x5a\x90\x46\xc4\x3f\x66\xed\x1e\x74\x96\x4b\xa0\xe7\x72\x79\xc8\x9b\xb6\x5c\x22\xc0\x98\x92\x23\x68\x29\xb6\x7e\x31\x34\x20\x03\xfb\xc4\xc9\x4d\x8d\x19\xb6\x06\xc6\xb8\x3f\xc8\xd1\xa9\x31\x5f\x31\xfa\x20\x46\x85\x35\x50\xad\x61\xd9\xfd\x12\xe0\x0e\xec\xa1\x63\xf2\x10\x61\xd9\x62\x49\x64\x1a\xd8\x07\x8e\x09\x41\x9e\xe3\xa2\x83\x06\xa4\x87\xad\x20\x9b\x45\x03\xde\x28\xc8\xcc\x57\x48\xbc\x17\x18\x33\x32\xe0\xed\x43\x3c\xb7\x82\xcd\x05\xdd\xcf\x39\xa5\x9b\xb8\x1d\xa2\x08\x9f\xd3\x48\x8c\x8d\x76\x88\xce\x79\x57\x79\x18\x9f\xf3\x2f\xe4\x69\xcf\x98\x93\x3b\x86\xce\xc9\xce\xb9\xed\xf9\x4e\xbe\x67\xcc\x30\x39\xe7\x80\x73\xfb\xdc\xe3\xf1\x39\x26\xbf\x44\xfc\x44\x24\xab\x01\xd4\xa8\xa1\x01\x0c\x8e\x90\x9c\xf3\xc1\x81\x13\xee\x75\x5f\x8b\x07\x3a\xaf\x06\x13\xa3\x5c\x4d\x2e\x66\xdf\x71\x2e\x78\xde\x67\xcb\xa5\x0c\xbb\x7d\x66\x79\xd9\x2c\xcc\x01\x4a\x0f\x5b\x7c\xd7\x40\x1b\x3c\x46\x3c\x98\x0f\xc8\xa3\x3f\x79\x14\x67\xb3\xe5\x4e\x29\xcf\xec\xba\xe7\x98\xbb\xde\x72\x79\xd0\xc9\x66\xcf\x3a\xe8\x65\x88\x97\xcb\xcb\x08\x31\x32\x9e\xf1\x22\x6e\x5b\x25\x81\xc3\xec\x13\xcf\xc9\x33\x18\xe6\x00\x21\x2e\x27\xaa\x4b\x64\x5f\x78\x84\xd9\x27\xbe\x83\x31\x8e\x25\x12\x77\xb9\x14\x89\xda\x3b\xfe\x8d\xb5\xb9\x80\x5f\x79\xa3\xca\x9e\x83\x04\xb9\x3b\xb4\x40\x22\xde\xd3\x2e\xf1\xb0\xe5\xd1\xa0\x8b\x5c\x6c\x35\x69\xb3\xd4\x14\x58\xa6\x27\xb1\xdb\x21\xf2\x97\xcb\xc2\x2e\x8d\x70\x94\xdd\x2f\x31\x63\x96\xa7\x4d\x7b\xe8\xe4\x90\x5f\xf2\x79\x1f\x98\x05\x6c\xfa\xd9\x2c\x62\xbc\xbb\x61\xca\x92\x28\x5b\x2c\x31\x63\xce\x11\x0f\x24\xe2\xb9\xa7\x21\xce\x73\xd4\x17\x23\xa6\x1d\xa2\x90\x4b\x58\x25\xd4\xa1\x0c\xc4\xbe\x2f\x9f\x29\x45\x61\xf6\xcb\x67\x3e\xc2\x3b\xc6\xec\x7b\x60\x9f\x38\xcb\x65\xc7\x98\xfd\xa0\x01\xff\x1e\x87\x87\x59\x9a\xdf\xc7\xa4\xf8\x71\x1f\x90\x8b\x1f\xf7\x05\xf6\xfc\x7b\xc0\xcb\xe5\xe8\x73\x8e\x7e\xee\xc5\xe8\x9f\x31\x51\xa5\x65\xb3\x61\xb6\x28\x4a\xa7\x3c\x4e\xfc\x25\x2d\xea\xc9\x1d\x63\x96\xe3\x6d\xfc\x01\x1f\x04\xf4\x2f\x7c\x40\x33\xd4\x24\x2d\xa3\xcb\x66\x88\xa7\xe6\x91\xc2\xcb\x8b\x8a\x91\x02\xc6\xbc\xac\x4f\x50\xd6\x7a\x09\xf2\x83\x22\x3f\x80\xf3\x1c\x83\x04\x40\x32\x51\x85\x30\xbb\x0f\x2c\xd0\x5f\xc6\x4d\x2f\x15\xbf\x98\x05\xbc\x44\xe9\x12\x4b\x1f\xf7\x4d\xfe\x35\xde\xe4\x1d\x68\x33\xff\xc6\x27\x41\x04\x0a\x00\x5e\xe4\xbe\xc0\xa0\x12\xa3\x63\xcc\x73\xbc\x4b\xbe\x03\x65\x78\x8e\x8f\xfc\x7b\xb7\x7a\xbb\x0e\x9c\x3c\x02\xf4\x7c\x87\xcf\x25\xf9\x91\xa4\xc8\xaf\x10\xff\xb1\x5e\xe4\x8f\xbf\x29\x52\xe1\xe5\x45\xa7\x28\x52\x89\xd2\xd6\x4a\x50\xcd\x50\xa4\xe2\x13\x9b\x63\x10\xf8\x26\x96\x0d\x0b\xb3\x5f\x13\x5a\xc9\x8e\x2f\x7d\xf9\x24\x89\xa5\x97\x59\x2a\xee\x7f\x15\xd4\xa2\x3e\x36\x3b\x74\xff\xf3\x17\xd2\xc9\x7e\xfa\xf6\x05\xab\x65\xaa\x63\x5d\x47\xc8\x25\x0c\x5b\xd7\x7c\x8a\x35\x39\xc7\x64\x7c\x51\x73\xf9\x8e\xff\x30\x42\xb0\x28\x60\x02\x9c\xf5\xac\x83\xdc\x10\x2f\x97\x81\x9a\xc9\x25\xe4\x52\xd7\x9e\x39\xa4\xdc\x29\xb9\xc6\x79\x7f\x51\xee\xcf\x6e\xdb\x8b\x76\xaf\x49\x2f\x0f\xcd\x23\x0e\x6c\x80\xaf\xa0\x14\xdc\x05\x27\xaf\x2a\x4a\x06\x0c\xb9\xda\xe0\x22\x05\x9c\xbb\xc7\xe4\x56\x87\x1e\x48\x28\x48\x1d\x3b\xf0\xc5\xa0\x84\x02\xda\xe3\x93\x97\xb8\x7c\xe1\x74\x31\x61\x06\x18\x36\xc2\x91\x0e\xcc\xd4\xbc\xcb\x59\x61\x20\xfe\xf0\x61\xe7\xf2\xbf\x0a\x4f\x5c\x2a\x84\x99\x9a\x77\xa1\xdf\x45\xef\x0b\xb2\xbb\xd0\x5b\x26\xda\x28\x74\x4b\x76\x9c\x08\x72\x9d\x84\xb7\x3e\xa4\x34\x00\xc8\xe5\xbd\x0b\xac\xb1\xe4\xfe\x7b\xdf\x74\x71\x36\xff\x59\x5b\xc3\x7f\x72\x21\x79\xf5\x13\x44\xd8\x5f\x81\x2e\xc2\x6a\x48\x8f\x92\xb9\xe1\xd7\xb3\x99\xd4\xad\x60\x21\x42\x1f\x9d\x51\x57\x84\xde\x8f\x19\xf5\x56\x8f\xe8\xb1\x46\x7e\xd6\xb0\xf5\xb8\x51\xa2\x2c\xe1\xae\x06\x25\xd8\xf3\x03\x87\xc8\x22\x08\x4f\x12\xbb\x41\xe2\x11\x55\x9a\x2e\x19\xfd\x92\x6d\x82\xb4\x9f\x34\xbd\xc5\xea\x94\x98\xa9\x16\x4e\x2e\xb4\x3e\xa2\x5f\xa2\x0e\xbf\xb6\xd7\x81\xf8\x50\x8b\x3b\x58\x3d\x0a\xf0\x71\x51\x2e\xf1\x08\x17\x15\x89\xaf\x7f\xfa\x7d\x2d\xc9\xf5\x58\xb3\xeb\x4a\xb9\xc4\x17\x6c\xc8\xf6\xeb\x8a\x7a\xa5\xcf\x66\x41\xc4\xc6\x9f\xa8\xbf\x5c\x8a\xc6\xac\x1e\xd1\xfb\x1a\x79\xac\x61\xeb\x3d\xd4\x64\x1a\xb1\xb7\xf6\x08\xbf\xae\x56\x12\x69\x6b\x75\x61\x7b\x43\xdf\x22\x1d\x54\xda\x23\xc5\x02\xf1\x89\xac\x04\x30\xfa\x00\xa6\x1c\x64\x0e\x29\xab\xa3\x40\xe5\xc2\x96\x2b\xe2\x2e\xb6\xd2\xc5\x86\x6f\x17\x08\xa5\x71\xde\x2e\xb2\x86\x7c\x02\xc8\x42\xc8\x9b\x45\xc8\xc6\x69\xe5\xe0\x95\x46\x5c\x56\x17\xfd\xca\xb2\x9f\x38\x6f\x71\xff\x4d\xf7\xb1\xc5\xb2\xc5\x6f\xfb\x22\x56\x4c\x54\x7d\xfa\xde\xb5\xfe\x1f\x8d\x06\xb7\x0e\xa3\xc1\xad\xff\x99\xbc\x56\x20\x84\x6a\x4b\xd0\x2b\xe0\x92\xa6\x15\xd0\x80\x0b\xd9\x56\xa0\x44\xb3\x90\x8b\x08\xcb\x65\x00\x92\x42\xc8\x25\x03\x1e\xe1\x02\x82\x15\x52\x51\x21\x63\x96\x0b\x8c\x99\x15\xa8\xe8\x3c\x17\x18\x73\x28\xb5\x49\x41\xf0\x21\x21\x0d\xf3\x4d\x8e\x92\xa7\x4d\x63\x6e\x35\x6a\x48\x95\x4e\x02\x4c\x44\xb5\x80\x80\x9b\xc3\x31\x12\x7b\x04\x2e\x34\xd9\xc3\x67\x27\x9b\xdd\x65\xf6\xe3\xb3\xc3\x05\xa5\x1b\xfe\x53\x2c\xee\x7f\xa7\xcc\x8e\x78\x52\x71\xff\xe3\x0f\x11\x96\x6c\x77\xb7\x68\x8d\x5e\xda\x63\xaf\x85\x04\xf4\xd5\x63\xa3\xe0\x5d\xf1\xab\x09\xbf\xfb\x05\xf1\xfb\xed\xa3\xf8\x2d\xfe\x25\x7e\x3f\x49\xf8\xc7\xcf\x12\x4f\xc2\x3f\x7e\x91\xe9\x12\xfe\x51\xc2\xf7\xf7\x3f\xc9\x82\x8a\xb2\xa0\x4f\x12\x50\xdc\x97\x98\x32\xfe\x51\x7d\xe9\x9b\xcc\xf9\x59\x16\xa5\x32\x7c\xfc\xa6\x4a\x90\x09\x45\xf9\xcd\x8f\x5f\xd7\xbf\xb5\x6f\xc6\x6d\x04\x40\x41\xc5\xcb\x1d\x4b\xfa\xec\x30\x95\xbe\xe0\xcb\x97\x1f\x40\x80\xe5\xb2\xf8\xf5\xe3\x77\x08\xae\x34\x59\xae\x5b\x61\x89\x30\x07\xb4\xde\x45\x7c\x1d\x3a\x12\xa2\x64\xbb\xc7\xb0\x5a\xc8\x76\x0b\x7c\xa2\x4d\x3b\xd9\x6c\xa0\x96\x36\xaf\xce\x07\x11\x4c\xbf\xec\xae\x9f\x50\xfe\xb9\x8d\x5c\x0c\x9b\x70\xbf\xce\x37\x7e\x62\xdf\x96\xcd\xa2\xe2\x5f\x94\xba\xbc\x2a\xf0\xc3\xcb\xfa\x56\xa4\xd4\xc5\x49\xd6\x76\x88\xf8\xb7\xfd\x6c\xd6\xc3\xaa\x03\x65\xe7\xed\xab\x5e\xdb\x8f\x89\xb8\xaf\xc8\xfe\x4d\x92\xbb\xf8\xf5\x8b\x0a\x28\x7a\x7e\xfd\x4b\x05\xbe\x2a\xe4\x82\x0a\xac\x67\xdf\xdf\x4f\x68\xbb\x6a\x87\xe8\x40\x54\xc5\xa5\x94\x6d\x8e\x2b\x35\xa6\x3e\x9a\x31\x81\xd4\xa0\x91\x80\xa3\xce\x4a\xa7\x94\x46\x77\x88\x73\x72\x7f\xfa\xfa\x9d\x6f\xdd\x3f\xff\xf5\x83\xb2\xe5\xf2\xdb\x17\x88\x15\x0b\x5f\x20\xfa\xe5\x33\x44\xbf\x15\x20\xc6\xe9\x52\xd0\x6a\x52\x58\xaf\xc9\x47\xd9\x8a\x2f\x6a\xac\x15\x54\xd3\x0b\x8a\x18\x45\xd5\xf4\x62\x71\x8d\x60\x9f\xbf\xbd\x45\xb8\x2f\xc5\xff\x8c\x80\xeb\x7d\x54\x48\x3a\x2b\xae\x79\x7a\x98\xee\x16\xb5\x63\x0b\x5f\x91\xa6\xdc\xc1\x8c\xf6\x80\x09\xc4\x5b\x36\x3e\x64\x8e\x3a\x78\x6c\xae\x35\xfd\xdb\x47\x93\xd1\x6f\x45\xcb\x1d\x06\xac\xf3\x6e\xac\xc8\xce\x34\x92\x8b\x92\x5e\xd7\x32\x7e\x29\xc6\x53\xe5\xeb\x5f\x96\xa2\x44\x0c\xfa\x62\x49\xfe\xf0\x31\x81\x7d\xb3\xe2\xf9\x28\x61\xdf\xd6\x26\x22\x4f\x5b\x9f\x89\x4c\x5f\x0c\x02\xc9\xd6\xef\xc6\x6a\x95\x95\x2b\x6c\x4b\x70\xdf\x87\xa9\x0e\x3c\x7b\x41\x6c\xb9\x14\x8f\xb1\xbb\xd9\x2c\xc0\x5e\xa6\x08\x38\x7e\x50\x27\x77\x63\x6c\x35\x68\xc0\x79\xbe\xd5\x30\x9e\x85\x1e\xac\x61\xcc\x18\xe8\xf8\x1a\x46\xf8\x5e\x81\x7e\x79\x2c\x0e\x56\xe8\x6e\xd1\x6a\x18\x97\x03\x26\x02\x7e\x81\xe6\xf9\x6f\xa3\x2b\x01\x8f\x03\x99\xff\xbc\x49\x1f\xab\x56\xc3\x70\xbd\xb7\x96\xf4\xf3\xe6\xca\x6a\x18\x2f\x53\x6d\xbd\x91\x4b\xd6\x79\x93\x32\x9e\xf6\xa6\x34\xf0\xcc\x53\xcf\x5e\x52\x39\xfb\x15\xa6\x37\xff\x59\x14\xd1\xb9\xf8\x13\x12\x6f\x2d\xa0\xd5\x2f\x53\xab\x9e\xac\x47\xa3\x4c\xa5\x26\x74\x58\xa1\x2e\xc7\x1b\xbf\xd9\x9a\x56\xb0\xd2\xd4\x74\xfd\x64\x15\x32\x7e\x55\xf0\xb8\x35\xec\xbf\xbc\xeb\xa2\x4c\x85\xf5\x84\x3b\x5a\xb8\xb9\x20\x1e\xef\x02\xb3\x32\xf5\xa8\x26\xf8\xdc\x90\x8f\x13\x8e\x5a\xfd\x97\x76\xaf\x69\x64\xb0\xb5\x6a\x18\x37\x6f\x8a\x46\x95\x95\x55\x7d\x41\x0d\xb2\x41\xc7\x46\x59\xf6\x7b\xa3\x6c\x37\x9e\xf9\xde\x59\x36\x46\x82\x87\x15\x09\x66\x25\x88\xdf\xef\x23\x6c\x0a\x15\xfe\x21\xc2\x2b\xcc\x7b\x3c\xa0\x61\xdb\xda\x69\x18\xf7\xfb\xfa\xf7\x39\x6b\x96\x1f\x97\x65\x55\x1f\x11\xd6\xe0\xcf\x7a\x9b\xa3\x28\x18\xca\x07\x0d\x59\x14\xbd\x1b\x05\x63\xa9\x33\x7a\x27\x7c\xe8\xbf\x1b\x0f\xe7\xed\x5e\x13\x1e\x99\x6a\xf5\x5f\x12\x42\x64\x94\x08\x19\x48\x2d\x01\x6c\x81\xe4\x07\x44\x52\xa3\xcb\x64\x0d\x5a\x81\xd1\x45\x8c\x54\x4e\xa4\xb4\xda\x65\x64\xb7\x00\xab\x88\xea\x6b\xac\xc2\x12\xf5\x64\x24\x50\x0f\x18\xa0\x92\x83\x8e\xd2\xb9\x8c\x87\xf3\x57\x97\x32\xfb\xd9\x75\x56\x1e\xe3\x53\xdf\xc3\xaf\xab\xb0\x3f\x44\x7c\x2e\xb9\xf6\xc8\x77\x28\xbd\x67\xcc\xc2\xaf\x1c\x55\x28\x13\x5d\x7b\x71\xe0\x2c\x97\xae\x5d\x9d\x3b\x76\xdd\x57\x39\x03\xfc\x0a\x0c\x66\xc5\xa8\x6f\xa9\x42\xff\x50\x0d\x4b\x4f\x0b\xc7\x4c\x24\x2e\x18\xc3\x2b\x60\x68\x7a\x72\xfd\x30\x49\xb5\xd4\xdc\xa1\x8f\xd5\x12\x6a\xbb\x92\x4e\x7c\x53\x76\xdb\xc2\xa4\xd5\x95\x00\xfe\x0d\xd9\xcd\x1c\xf9\xee\x54\xd2\x0f\x88\x2c\x3b\x95\xcf\x61\x71\x26\x52\xa0\x3b\xd3\xb6\x4a\x68\x94\x4b\xe8\x72\x8c\x64\x98\x8c\x8e\xc5\xd7\xcb\xbc\xe2\x45\x08\x63\xa2\x06\xdc\xd5\xc2\x41\xea\x3b\x65\xc6\x10\x97\x6b\x1b\xc6\xe1\x61\x6a\x3e\x6a\xe3\x68\xb9\x84\x90\x1d\x3e\x3b\xe8\x75\x3c\x1f\x04\xe6\xf1\x21\x11\xe6\x7a\x26\x5b\x69\x8b\xbd\x6c\xbf\xd6\xeb\x9e\x5e\xf1\xa2\x95\xd4\x77\x58\x49\xea\x3b\xac\xf0\xfa\x4e\xda\x22\x16\x05\x8c\x30\xbc\x56\xeb\x61\x25\x55\xeb\x28\x80\x55\x44\x2d\x3f\xbc\xfa\x51\xc0\xb6\xb2\x2b\x4e\x72\x08\x5f\x0e\x58\xa9\x21\xbf\x78\xec\x31\x52\x10\xe5\x9b\x0a\x80\xd6\x28\x9f\x74\x12\xdf\xe3\xd2\xa0\xab\xfa\xb1\xfb\x9b\xaf\xfd\x56\x83\x67\x4a\xcd\xbc\x54\xbf\x36\xb1\xa5\xf5\x6b\x11\x32\x54\x1f\xdf\xe0\x14\x40\xda\x93\x43\x40\x2a\xb3\x54\xa9\x71\xf2\x73\x15\xaf\xf8\x74\xef\xfe\xde\x68\xa7\xd6\x33\xcd\x13\xad\x67\x78\x71\x07\x2c\x4d\x17\x46\x99\xcd\x86\x8e\x35\x88\x54\xe5\xe0\xf4\x55\x72\x5f\x88\x88\x0e\xf3\x58\x36\xbb\xab\xb0\x7e\x79\x0c\x92\x8a\x9f\x0b\x3f\x78\x27\xe6\xe5\x10\x94\xc8\x87\x87\x92\x24\x3f\xbb\xe9\xaf\xed\xff\x45\x95\x48\x1f\x23\xf2\xcf\x73\x69\x92\xd9\x01\x67\x71\x84\xd9\x73\xfe\x0b\xf9\x17\x6b\xb5\x55\x6c\xe1\x71\x10\x9f\x2e\x68\x6c\xa6\x1d\x22\xb0\xf1\x12\xef\xdc\xee\x52\x69\xf3\x10\xc0\x44\x16\x3c\x9e\xba\x3c\x4c\x76\xd9\x72\x99\x6e\x71\xa2\x9d\x95\xe3\x77\xa5\x64\x12\xa8\xe0\x2e\x75\x25\xdc\x7a\xbb\xcd\xa9\x0d\xe1\xa0\xc2\x52\xf6\x0b\x0f\x6d\xc4\x8c\xf0\xfd\x72\x69\x3b\x29\xfe\xaf\x76\x85\x94\x52\x51\x29\xd8\xeb\xe1\xd5\x4e\xc3\x28\xeb\x1d\x1f\xd4\x8d\xc0\x28\x6f\xc8\x13\xc6\x2f\x84\xad\x97\x78\xa6\x27\xe1\x61\x05\x5b\x7e\x10\x05\xf2\x65\x62\xe3\x39\x15\x6b\x05\xa9\x68\xf8\x5e\xab\x79\xa8\x6f\x4a\xc7\xdf\xe8\x27\x4b\x72\x2e\x10\xea\x41\x1f\x60\x05\xf5\x44\x7f\xc0\xe5\x94\xb0\x4e\x82\x3a\xb6\x6e\x5f\x50\x58\xdf\x7e\xe8\x2c\xcb\x10\x82\xce\x0a\x5b\xa7\xb3\x75\x54\x35\x4b\x17\x8c\x53\x42\x7e\x08\x20\x37\x08\x6b\xac\x6f\x85\xad\x70\x63\x07\x9c\x8c\x8d\x85\x1c\x1a\x8c\xee\xae\x65\x76\xe1\x2c\xe6\xee\x94\x08\x73\x1e\x83\xf1\x05\x35\x9b\xe5\x1c\xd8\x95\x93\x94\x33\x5f\x17\xf8\xae\x6a\x34\xff\xa4\x54\xab\x8c\xbf\x89\xdf\xc9\x0b\x83\x8c\x02\xb7\x98\xea\xf6\x66\x5d\xa9\x87\xc4\x42\x4d\xbd\xe5\x12\xb1\xd2\x6d\x07\x3d\x80\x1e\xd0\xbc\xed\x20\x0c\x0d\x50\xf4\x13\x78\xc6\x13\xba\x22\xaf\xe0\x4e\xc2\x3c\x9f\x71\x36\x2a\x05\x1f\x57\xed\xd7\x8b\xa4\x28\x61\x57\x0c\x60\xa3\x8e\xa5\x56\x54\xff\x80\xf3\x3f\x4e\xd9\x5d\xaa\x44\xc8\xab\xa1\x10\x21\x9b\x75\x12\xd6\xc5\xa2\xdc\xaa\x53\xdb\xb1\x1a\xb4\x29\x85\xc9\xa0\x29\xe4\xc5\xae\x8b\x1a\x44\xbd\x31\xa7\x5c\x23\x72\xa1\xe2\xe1\x92\x7e\x2e\x70\x21\xb1\xfd\x9e\xc2\xcf\x9b\x82\xde\x3d\x9f\xae\xfe\xc1\x1a\x6f\x81\x36\xab\x4a\x1b\xcc\xf7\x79\xb4\x3e\x46\x8c\x9c\xc9\x86\x77\xfa\x31\x6b\x17\x09\xa7\x32\x21\xbc\x5f\x4b\xb8\x3a\x15\x09\x41\xc0\xd6\x52\x6a\x4d\x91\x72\x38\x59\x4b\x50\x8b\xae\x56\x16\xf0\x4c\x3f\x18\x33\xaf\xb5\xce\x59\x18\x96\x15\x26\xcf\x09\xfb\x23\xb2\xf2\xf6\xb5\xeb\xa8\x9d\x4a\x6c\x6f\x22\xc7\xd1\x15\x33\xee\x19\xc2\xc4\xa3\x05\x8b\x73\x18\xcf\xb1\xbc\x5c\x0e\x6b\xa5\x28\x12\xd8\x8f\xae\x93\x66\x13\xcf\x8a\x4d\x5c\x8d\x91\xcb\xa9\xc2\x24\x49\x18\xb6\x00\x74\xca\x41\xa2\x01\x0a\x74\x75\x4a\x98\x22\x83\x82\xd5\x9a\x84\x49\x02\x28\x50\xfd\x50\xcb\xb9\x6a\x18\x57\xc3\x54\x8b\x9f\x25\xff\xe3\x35\x17\xdc\x7a\x54\x4c\x21\x68\x2d\xe4\x33\xc5\xcd\x66\x6f\x6b\xa0\xe9\xde\x22\xd3\x6f\xe2\x76\x22\x38\x16\xe2\x5c\xeb\xec\x45\x63\x16\x96\x38\xbe\x97\xa3\x3e\x3e\x08\x75\xed\x63\x4e\x60\xe2\xda\x87\x9e\x23\x98\xff\xc9\x74\xcb\x60\x9b\x25\xb5\x06\xa4\xdb\xbf\xde\x1a\x91\x0c\x61\xbb\xe7\x3b\x2b\x6b\xe7\x6a\xa0\xcb\xdc\x6b\x36\x10\xd3\x92\xe2\x12\xa5\x4f\x66\x51\xac\xf9\xef\xcf\x4a\x1f\xcd\x18\xbc\x6f\x16\x40\xc2\x4e\x2f\xd7\x5c\x20\x82\x4d\x99\x51\x7d\x8c\xb9\x72\x4a\xd1\x01\x4b\xf1\xe8\xc0\xc1\x6a\xb8\x30\xe2\xc2\x08\x69\xd5\x6d\xd7\xb1\xdc\x5c\x0e\x73\x76\x0f\x1d\x10\xe3\xf2\x95\xe8\x62\xee\xa0\xdd\x22\xb6\xde\xb7\x51\xab\x2e\x86\xed\x72\xd9\xaa\x83\x19\x1f\x0c\x6e\x96\x50\xba\xeb\x22\x21\x77\xda\x55\xdf\xc1\x56\xbb\x8e\xb4\xf1\xaf\x26\xd9\x09\x5b\x9f\x32\x6a\x96\x1d\xeb\x29\x4f\x2a\x73\x22\x48\xad\x09\x18\xf8\x35\x78\x8a\xeb\x64\xc5\xed\x8a\xab\xc3\x39\x1f\x2d\x58\x2e\x6f\xa2\x9c\x05\x2e\x6f\x56\x36\x2b\x16\x36\x68\x22\x17\xcb\x55\x13\x21\xe3\x29\x63\xd9\x6c\x47\x7c\x9c\x47\x60\xfc\xbe\x51\xfb\xab\x37\x6b\x7f\x24\x15\xfa\xd2\x18\xcb\x2a\x50\xa8\x96\x7d\xca\xa5\x09\x25\xbf\xb5\xaf\x29\xff\xac\xe8\xb8\xee\xef\xb8\xe3\xf8\x50\xba\x4b\x89\x8c\x6a\x05\xe4\x55\xa6\x54\x31\xda\x2b\x66\xdf\x48\xab\x4c\xd9\x16\x55\xae\x94\x8a\x8d\x8b\x17\x56\x12\xe9\xb2\x8d\x44\x0d\xa4\xe5\x12\x1d\xcd\x52\x7c\xc5\x9e\x1d\x38\xc8\x95\x02\xc4\xd5\x15\x2a\x60\x09\x87\xac\x05\x8c\xb1\xb9\xd6\x2a\x49\xb1\xf2\x94\x4a\xc5\x3c\xe7\xba\xfb\x6f\x4d\x81\x2b\xd8\x32\x4f\x8f\xdf\x4a\x0f\x9a\xd0\xc3\x37\xe3\x2d\xb2\xf2\xfb\x33\xf9\x09\x8b\x49\x42\x42\x3f\x22\xb1\xc8\xc8\xec\xaa\xf9\x41\x93\xc6\x63\x40\x35\x27\xa1\x94\x11\x34\x71\x2c\x47\xbe\x57\x2b\xf9\x7b\x23\x68\x0a\xa0\xa2\x94\xae\x1d\x1e\x2a\xbe\x28\x0e\xd2\x8f\xf8\x44\xb9\xc7\x16\x33\x66\xae\x31\xa3\xae\x7d\xe8\x3b\x39\xcf\x98\x09\xc0\x9c\xba\xf6\x11\x00\xe6\xab\x86\xd1\xe9\x6f\x61\x4d\x51\x5d\x52\x1e\xc4\x4d\x4b\xd5\xda\x4d\x66\x8c\xbb\xab\x37\x53\xd1\xdd\x95\xfd\x57\x9e\x2e\x97\x48\xd1\xbe\x31\x46\x3f\x45\xe4\x2e\x10\xb3\x2f\x3e\xf6\x91\xe8\x0f\x97\x18\x93\x91\xd2\x61\x90\x61\xb2\x14\xa4\x54\xe0\x4a\xd2\x1a\xce\x5f\xd5\x96\x75\x97\x29\xd2\xb9\xd8\xc2\x2e\x75\xed\xa7\xc0\x49\xce\x0e\xe2\x3d\xae\x84\x80\x34\xb5\x6a\xf0\xe5\x20\xd5\xea\xe1\xfa\xe2\xc3\x47\xbe\x98\xd0\x87\x93\xcd\xde\x0e\x9a\x94\x6d\xa5\x11\x64\xd3\xb9\xd9\x2e\x65\xf8\x35\x19\xc7\x96\xbe\x0e\x5e\xa1\xa2\xc6\x82\xfe\x11\xdd\x58\x4c\x61\x4e\x32\x2b\x26\x19\xec\x41\xaf\xae\xe8\x16\x51\xb9\x40\x29\x2b\x21\xc9\x74\x66\xae\x30\x36\x00\x23\x87\x6e\x1d\x44\x2c\x1e\xec\xd5\xe3\xa1\xa7\x11\x7c\xa4\x9d\x39\xe8\x9c\x79\x93\x6d\x0d\x22\xe4\x8a\xa5\x51\xcd\x73\xd7\xf8\xf5\x9e\x32\xc2\x38\x87\xa2\x2e\x5f\x50\xc3\xfb\xbf\x1d\x68\xc4\xd3\x00\xee\xb3\x03\xc3\xcc\x83\x15\x70\xcb\x1c\x02\x1d\x20\x51\x6c\x98\x24\x1c\x8b\xec\x26\x4c\x04\xca\x01\x86\x9a\x2c\xdf\x50\x74\x69\x8d\x57\x98\x92\xa5\x62\x21\xf4\x9c\xa4\x37\x92\x69\xc6\xad\x26\x84\x30\x34\x6b\xa7\x6a\xc0\xc7\x86\xd8\xe0\xae\xed\xc6\xd6\x16\xfd\xb8\x08\x57\xaf\xa4\x2b\x6b\xa7\x86\x81\x6c\x26\xd1\x2a\x97\xd8\xcc\x81\x6e\x98\x19\xe5\x69\x36\x8b\x7e\x8e\x11\x0f\x61\xc2\x12\x76\xa7\x19\xde\x74\x00\x77\x9f\xef\x27\x15\x87\x67\x9c\x69\xc1\x18\x63\x9c\xa7\x11\x26\x3b\x8f\x30\xa3\xfd\x1e\x6b\x79\xdb\xf2\x3b\xef\xcf\xd4\x77\xde\x9f\x71\xac\x98\xe7\xf1\xde\x2d\x6f\x6c\xbb\xd5\xa2\xf5\xa4\x8f\x70\xfb\x66\x11\xeb\xeb\x18\xaf\x46\x47\x93\x50\x2c\xbd\xc9\xa9\x1d\xd7\xbd\x10\x8d\xca\xda\x0a\x94\x9c\xda\x48\xb6\xf0\x2b\x7d\x48\xbb\x7a\x44\xdd\x3a\xf9\x55\xc3\xd6\x4e\x77\xfb\x09\x20\x7e\x75\x29\x1c\x06\x5b\x2e\x7d\x00\xf9\xcb\xa3\x5e\x89\x4f\x87\xe3\x08\x79\x60\x73\x55\x2c\x10\x0f\xce\xf0\x3d\xfb\xdc\xe3\x7f\x4f\x9c\x5c\xb1\x20\xe6\xcc\x71\x84\x8a\xc2\x55\x43\xb1\x80\xad\x86\x38\x09\x35\x7e\x12\x46\x3e\x11\x8f\xb8\xe4\x1b\x16\x07\xa7\x9b\x29\x9f\xf5\xea\xf7\x80\xba\xa9\x13\xe6\x8f\xbc\xf2\xbd\x3a\x9c\x20\xf7\xde\xaa\xbb\xd0\xcd\xa9\xdd\x4e\x81\x14\xb0\xf5\xd6\x39\xb1\x4f\xbc\xb8\x36\x3a\xce\x3e\x61\xa4\x08\xa9\xa9\x1a\xf5\xeb\x9a\x85\x30\x1c\xe7\x8a\x0e\x19\x82\x39\xa6\x4b\x99\xe9\x29\xfd\x71\xf8\xcc\x94\x1d\xc0\x33\xf5\x64\xe0\x4e\x18\xd7\xf6\xa1\xe6\x6e\x7f\x93\x7d\x3e\xdf\xa9\xfc\xcf\xd9\xec\x5d\x37\x51\x2c\xac\x2c\x91\xe9\x7e\xf2\xa6\x86\xbc\xf4\x10\x30\xa5\xc2\x30\x65\x69\x2a\xdb\x86\xea\xc7\x78\x56\xf3\xe8\x99\xaa\xfa\x72\xe6\x37\x89\x22\x2a\x39\xca\xf3\xdd\x72\x99\x54\x41\x82\x12\xfb\x0a\x01\xd0\x15\x15\x75\x55\x76\xd7\xa7\xb6\xb3\x6a\xd0\x81\xdc\x1e\xde\x3d\x6d\xb6\xb4\xeb\x73\x31\x94\x37\xac\x35\x4b\x69\xb2\x63\x8d\xc1\xdd\x13\x7a\x16\x03\x58\x28\xa6\xfd\x6d\x52\x15\xc7\x12\x1a\xaa\xdb\x13\xe2\xb3\x31\x33\x5f\x67\x26\x23\x73\xd3\x5d\x09\x3d\x55\x79\xb0\x71\xba\x4d\x02\x12\xae\xe7\xbe\x3f\x52\xb9\x8b\x3c\x7b\xd1\x74\xc9\xa9\x6b\x7a\xa4\xee\x9a\x3e\x99\x99\x01\x99\x9b\xa1\x2c\x71\x16\x6e\x2d\x91\x34\xd7\xcb\x1c\x1e\xca\x32\x9f\x2a\x26\x23\x9d\x8a\xe9\x92\x93\xb6\xe9\x91\xd3\xb6\xe9\x13\xc6\x0b\xad\x0f\xcd\x90\xf4\x5c\x66\x36\xa1\xec\xe4\x34\x61\x18\xef\xfe\xdb\x21\x2a\xec\xc2\x55\x1c\xcc\x83\x94\x32\x4e\xba\xaa\x53\x62\xf6\xe9\xc2\x41\xae\x5d\x70\x8c\x19\x81\x9f\x39\x36\x99\xe1\xb3\x35\x18\xf1\xe2\xd5\xc9\xa7\x45\xcb\xff\xce\xcb\xb2\x72\x39\x1f\x33\xa3\x3c\x40\x9e\xed\xe7\x8b\x8e\x5d\xe4\x39\x92\xf0\x9c\x87\x1d\x51\x8e\x0a\xcd\xe1\xbe\x0f\x14\xec\xf3\x82\xc5\x61\x1b\x2f\x7b\xa3\x5c\xa8\x84\x8e\xbb\xba\x7e\x49\x6f\x9d\xd2\x94\xaa\x48\xea\x0b\x95\x8e\x7e\x91\x40\x8e\x00\x39\xd2\x65\x4f\x9f\xae\xf7\x74\xc2\x91\x47\xf5\x75\x9b\xe4\x41\xdd\x2a\x7c\x67\x76\x95\x0b\x63\xc3\x3a\xf2\xb8\xcc\xec\x2e\x97\x9e\xed\x82\xe2\x37\xb1\x50\x06\x09\x64\x5c\x61\xf4\xf5\x61\xc2\xcc\x83\x2a\x19\x4d\x98\xd9\x3e\x22\xd5\x09\x33\x47\xc7\xda\x40\x1f\xc7\x9d\x23\x0f\x09\x3d\x79\x48\x78\x50\x85\xf9\xcf\x72\xd4\x15\x27\x8c\xe2\xb8\x6f\x74\xcc\xc1\xf9\x14\xac\x7d\x24\x60\x1f\xf6\x01\xfd\xc3\xbe\x4c\x54\xa7\x81\x1e\x65\xb4\xcd\xe4\xf9\xe4\x2b\xdc\x9d\x35\x3d\x12\xf4\x7c\x93\x69\xad\x9d\xd4\x13\x8b\x0d\x1f\x0c\xbb\x3d\x4a\xe9\x41\xb5\x04\x9f\xa4\x74\x74\x5c\xe2\x75\xc2\xd6\x5a\x45\x47\xc7\x66\x6c\x1c\xad\xaa\x23\x01\xd5\x27\x61\x79\xfb\xa7\x63\xc9\xa9\xae\xd8\x1b\x32\xc5\xb2\x06\x87\x8a\xe3\xbd\x8c\x05\x5f\x84\xc8\x75\x48\x4f\x6b\xe8\x27\x4a\x4f\xde\x14\x17\x39\x14\xca\x4a\xa9\x99\x4f\x23\x0a\x43\x1f\x9b\xc1\x78\x76\xac\xdb\x27\xe4\xda\x45\x67\x0d\x29\x10\xcc\xc4\x82\x5f\x97\x8f\x20\x59\x7e\x00\xb7\xd2\xde\x57\x38\x48\x6c\xab\xa6\x82\x07\x3f\xa2\x69\x9d\x4c\xc6\xda\x50\x7b\xe1\xfc\xcb\x6d\x1b\xbf\x7f\x0b\xa7\xe3\x0f\xfa\x3b\x0c\x07\xd2\xdb\xca\x8d\x74\x97\x24\x8f\xb3\x46\x95\xfe\xa4\x37\xfe\xfd\x9b\xfe\x97\xf9\x96\x4b\x79\x5f\x85\xde\x0d\x58\xee\xbf\x2c\xc4\xee\x80\x95\xec\x7f\x99\x3b\x97\xb3\xe2\x3e\x6e\xd0\x29\xb0\xec\x01\x43\x0d\xbe\x6c\xee\xdc\xca\x40\xc3\x78\xee\xd2\xcd\x7e\xf1\xa4\xd0\x76\x23\xc6\x8c\x67\xb8\x7d\x14\x35\xd3\x4b\xc4\xcb\x98\x7a\xb0\xbb\x04\xa1\x05\x9e\x83\xe9\x8d\x47\x5b\xce\x54\x3e\x49\x5d\x7f\x18\x4d\x46\xad\xb4\xd9\xdd\x94\x6d\xe1\x1e\xa3\x96\x3c\xb1\x4c\x63\xeb\x03\x10\x16\x80\x8d\x44\x9e\xd1\x9a\xae\x4b\x4d\x0d\x63\xf0\xe6\x51\xef\x10\xf6\xbf\xa9\x05\x5b\xd8\x68\x65\x91\xbc\x9f\xd2\xaf\x97\x18\x6f\xbd\x8b\xcd\xbb\xae\x5c\xb4\xac\x46\x6a\xb9\x4e\x36\x1e\x0f\x70\xcc\x04\xe7\xdd\x83\x41\xd0\xf3\x2b\xad\x76\xe4\xaf\x95\xdd\x0e\x91\x22\x32\xdf\x35\xb9\xea\x33\x42\x61\xe4\x1a\xcf\xea\x18\xc1\xa3\xb0\xbf\x10\xc7\x0c\x1e\x75\x2d\x50\x04\xd9\xcf\x0e\xf2\xc4\xe6\x67\x18\x80\x43\xc9\xcd\x8f\x70\x0e\x26\x90\xcb\x7c\x25\x21\x9e\x90\xef\x2f\xbc\x0d\x85\xa6\xf1\x1c\xdf\xc1\x48\x24\xf4\xa7\x89\x71\xe1\x71\xd9\x10\x60\x2b\x71\xc6\xb4\xa6\xb7\x15\x9b\x7c\x56\x62\xe6\x6e\xd1\x4a\x6e\x56\xf5\xeb\x6a\xff\x36\x92\xc7\x65\xd8\x62\xcb\x25\x34\x44\x33\x6f\x6b\x18\x47\x07\xe9\x81\xd0\x30\x1e\xb7\x29\x21\x44\x5f\xc7\x33\x79\x56\x4f\x2f\xf5\xc2\xd0\x4c\x2e\x06\x4d\xb1\x6e\x12\x0f\x5b\x4d\xbe\x50\xf9\x24\x88\xbf\xc9\x8c\xb2\x87\x9a\x24\x14\xa7\x26\xde\x5a\x97\x68\xf7\x63\x1d\xe2\xd3\x82\xe5\x7f\x97\x8b\xb1\xe5\xab\x5b\x80\x01\xf5\x48\x28\xd6\x68\xdf\x51\x6c\x37\xb4\x4f\x95\x65\xd9\xed\xa9\x19\xd2\xd0\x7e\xef\x08\x1a\xf6\x7c\x14\x90\xd0\x98\x91\x90\x2f\xa8\xda\xfa\x70\x7b\x92\xc2\x9b\xb1\x37\xf0\xee\x8f\x52\x78\xd1\x50\xe0\x15\x39\x22\xff\x73\xea\x92\xd0\xa8\xbb\x5b\xf3\x0e\x0f\x53\x79\x1b\x5d\xc8\xfb\x54\x21\xa1\xd1\xe1\x7f\x4e\xda\xbc\x00\xfe\x87\xf1\xcc\xf5\x21\x09\x8d\x9e\xcb\x52\x65\x54\x8e\x84\xa8\x79\xdd\x46\x01\x5e\xad\xf4\x49\x13\x15\x91\xc7\xb9\xba\xd5\x30\xfa\x9b\x26\x86\x24\xe0\xe3\x03\x10\x2f\x5f\xe2\x55\x4c\xec\x84\x9e\x1d\x14\x10\x96\xf4\x0a\x4c\xce\xce\x1b\x72\x9c\x2c\xa4\xfe\x49\x2b\x39\x2e\x26\x4c\x17\xb3\xd3\x30\x5a\xee\x9f\xcb\x09\xa3\x7f\x50\x4e\xc3\xa8\xd6\xdf\x2c\x66\x56\x8f\xb7\x5a\x7f\x5b\xcc\x88\x6d\xce\x48\x51\x8f\xb2\x87\x62\x83\x5a\x98\xcc\xeb\x59\x6f\xd7\x27\x73\xfa\xce\x91\x2c\xa6\x39\x5b\x4b\x8c\x92\x22\x3b\xeb\x45\x9e\xb5\xff\x50\x24\xe9\xc5\x85\x2e\xea\x1b\xc9\xbd\xa4\xd8\x28\x5d\x6c\x22\xac\xe8\x36\x84\x7a\xa9\x9c\xab\x3c\x8c\xd0\x7a\x8a\xd2\xbf\x32\x5e\x68\x8f\x80\xa6\xa4\x1b\xd1\xb7\xc5\x88\xeb\x50\x5e\xd3\x75\xe0\xc8\xb7\xb2\xc9\x28\x76\x8b\x82\xc3\x1d\xd3\xf9\x93\x26\xce\x54\xf4\xcb\xaa\x07\x7c\x00\x6c\x61\xda\xcc\x18\x06\x61\x30\x0c\x7a\x5e\x00\x9e\x6e\x57\x64\x57\x57\x23\xcc\xb5\xad\x21\x14\x28\x74\x5f\x32\xf3\xa3\x3c\x8e\x4d\x3e\xba\x50\x82\x6a\x7d\x8b\x01\xf5\xd3\x44\x5c\x01\x93\x5b\xc1\x2b\xaa\x18\x6e\x33\x36\x7c\xe8\x0c\xa9\x2d\x27\xee\x89\xb4\x05\x5b\x3d\xa2\x45\x9d\x4c\xeb\xba\x4c\x93\xd0\x9c\xd3\x99\xe3\x35\xeb\x9c\x67\x0b\x5e\xc5\x78\x99\x4f\xe8\x0a\xf6\xf7\x70\xbd\x79\x18\x70\x21\xea\xd9\x41\x3c\xc9\x3e\x74\x1d\xe4\xd9\x05\x07\x27\x3a\xfa\x90\x16\xad\xf0\xbb\x27\x64\xfd\x10\xc7\xb8\xc6\x13\x7a\x38\xc4\x98\xac\x67\x0e\x79\xe6\xf3\x08\x05\x7c\x76\xbb\x6a\x69\x0a\x78\xf8\xe1\x92\x16\x0b\x05\xcb\x35\xda\xef\x21\xc0\x8c\xce\x50\xca\x6f\x0d\xba\x90\x7b\xc7\xc7\x70\x53\x54\x78\x9a\xd8\x67\xcf\x20\xef\xdd\x8c\x91\xf0\x37\xb0\x45\x3e\x38\x11\x66\x22\xea\x1c\xfb\x04\xa7\xa9\x65\x2d\xea\x46\x60\x3f\xba\x4e\x22\x03\x60\x3e\x38\xd2\xd2\x04\x47\x32\x46\xad\xe4\xb8\xfc\x17\x92\xe4\x4f\x8d\x91\x17\xa8\x07\xb6\xdc\x27\x95\x9c\x5a\x24\xa5\x10\xa1\x6a\xb0\x5e\x31\x3e\x5c\x27\xd1\x16\x95\x98\x18\x99\xf1\x8a\x58\x42\x2e\x95\x23\x89\x30\x1a\xc0\x3d\x42\xa9\x6f\x71\xf9\xf6\xcc\x98\xe5\x98\x3d\x74\x88\x6b\xcc\x73\xcc\x3e\xe0\x81\x19\xc6\xa6\x92\x84\x5a\xde\x26\xb3\x51\x62\x05\x97\x64\xc4\xe2\x9e\x54\x52\x22\xfd\xad\x0c\x01\x84\x2c\x2f\x1c\x7d\x20\xf3\xe5\xf5\x66\xcc\x45\x90\x64\x30\x1e\x68\xbb\x15\xb1\xaa\x15\xd4\xd6\x61\x5e\x50\x5b\x87\x59\x51\x69\x4b\xe6\x45\xea\xaf\xce\x18\x3a\x78\xc3\x10\x80\xb7\xfc\x40\x6a\x67\x67\x42\x8c\x30\xe6\xf2\x77\x56\x94\xf1\x22\xef\x95\xf7\x1b\x85\xb0\x34\xe7\x98\xc1\xbe\x7a\x56\x90\x47\x0a\x73\x88\xce\x55\x74\x56\x84\xd4\xa2\x4a\x85\xe8\xbc\xa8\x6f\x53\x67\xa9\x7b\xaa\xc6\xac\x98\xe7\xc5\x59\x0c\x10\xf3\xbc\x2c\xd5\x89\x2d\x7b\xe1\x3b\xc8\xdd\x73\x73\x6c\x8f\x69\xfc\xa3\x9c\xda\xe8\xbe\x93\xda\xab\xca\x13\xe2\x05\x11\x5e\x24\xef\x75\x88\xcf\x79\x7c\x5e\x24\xe9\xab\xb2\x15\x7d\x53\x36\x8b\x09\x4b\xdd\xd5\x23\xaa\xd4\x49\xad\x83\xad\x06\xad\xc0\xac\x3a\x63\x5b\xcf\x31\xf9\x37\x2b\x8a\xa0\x92\x7e\x42\xc2\x8e\x9a\xdb\xce\xeb\x45\x53\x04\xfa\x9e\xf8\x11\xee\x00\xe6\x7b\x2a\xb3\x75\xc1\x3f\x55\xeb\xd8\x35\xc7\xee\x2e\x1c\x5e\x16\xf3\xfd\xcd\x19\x3d\xcb\x71\xaa\xc9\x2a\xf3\xf0\x5c\xdf\x43\x80\x68\xf9\x69\x4b\xae\xbc\x96\x2b\xbf\x2d\x97\x70\xee\xba\x65\x66\xb5\x0c\xaf\x3f\xe2\x73\x8b\xd1\x96\x31\x6a\xf7\xd4\x2d\x07\xb9\xa3\x99\xef\xb9\x39\xd9\x30\x49\xc8\x99\x3c\x26\xd8\x73\xf3\x12\x23\xa6\xb0\x97\xfe\xea\x7b\xb6\x66\x99\xa9\xa5\x82\x6d\xce\xee\xae\x3a\x05\x9c\xc1\xc0\x52\xe3\x0a\x86\xd5\x4a\xbf\xfb\x7d\xb8\x39\x28\x78\x37\x1b\xb3\x9c\x6b\xcc\xf8\x20\xc8\xb9\x9c\xca\x31\xfe\xd1\x5b\xf8\x79\x89\x9f\x07\xfc\x64\xd0\x1c\xcb\x0c\x8b\x6d\xab\x50\x4f\x5a\x01\x0b\xba\xdc\x76\x90\x8b\xed\x5b\xd7\x41\xfe\x11\x56\x1b\x7e\xb1\xcd\x90\xbe\x18\x02\x46\x3d\xfb\x76\xe1\xa0\x7a\x59\x82\xbc\x7b\xb5\xd9\x3e\xae\x93\x85\xbe\x30\x9d\x28\xcd\xb9\xcf\x96\x4b\xc4\x8c\x1e\xb3\x2f\x16\x60\xb5\xc5\x41\xe0\xec\xa2\x41\x8f\xe5\x1a\xc0\x6e\xb6\xee\x3d\x6f\x3b\x31\x63\x8d\xeb\xe5\xd9\x2f\x0e\x7a\x68\x71\x11\x04\x82\x37\xcd\xb8\x39\x43\xa6\xd7\xb6\xa7\x57\x56\xa3\x57\xbf\x8e\x04\xcb\x3b\xff\xf4\xc6\x29\xc7\xcb\x38\xd9\x03\xf5\x98\xe1\x45\x01\x1b\xde\x04\xde\x18\xbc\x13\x03\xff\xe5\xbc\x57\xa7\xf2\x69\x5d\x1b\x06\x7c\x61\x8f\xab\x7c\x37\xd6\x79\xc0\x59\x3d\xde\xfb\x31\x4a\xaf\xd5\xf5\x89\x8b\x33\xcb\xa5\xf4\x1a\x0e\x7b\x92\xeb\x3f\x57\x73\x96\x3b\xe5\x4b\x40\xee\x26\xc8\xb9\xb9\xcb\x40\xb3\x61\xaf\xca\x82\x52\x56\x6c\xca\x8c\x8d\x19\xa3\x00\xde\x64\x39\x64\xa3\x56\x29\x15\xe3\xdb\x57\x66\x9c\x2d\x18\x75\xf9\x0e\x68\xde\x4e\xef\x04\xc5\xb1\x90\xd1\x63\x84\xd7\xd4\x18\x06\x84\x19\xcf\x6d\x8c\xad\xb3\x97\x74\x8a\xe7\x42\x4f\x5e\x05\x58\x9d\xeb\x31\xa3\x17\x25\x76\x45\x2e\xa5\x8f\x47\xa5\x6a\x3d\xce\x65\x7f\x25\xfb\x0e\x36\x3b\x6d\xe4\x62\x1d\xee\x62\x53\xc7\x72\x92\xe2\xa6\x3e\xf1\x28\x33\x4e\x9b\x7c\x77\x2c\x0b\x96\xaa\x7f\xb5\xed\x72\x8d\x33\x17\x61\xb9\xf1\x5a\x9c\x99\x72\x6e\x3f\x5f\xa9\xd1\x42\xd4\x68\xf9\x24\x83\x37\x4d\x1e\xf4\x93\x91\x41\xce\x5e\x90\x4f\x5c\xa3\x35\x42\x18\x13\xdf\x7e\x5e\x38\xd0\xcd\x9f\x38\x5e\x7b\x06\x69\x0f\xbe\x48\x93\xe3\x97\x03\xf7\x31\xf1\x0d\x78\xe3\x89\x0d\xe8\x4b\x95\xf8\xf6\x60\xee\xa0\x7d\x52\xe0\x78\x8b\x85\x83\x3e\x01\x0a\x40\x0b\x22\xc8\xa1\xfb\xf0\x75\xfb\xbd\xcb\x0b\xf2\xa9\xb7\xd2\xe8\x1a\x0f\xb7\x61\xc0\xc6\xc1\x95\x78\x9f\x02\xf9\xa4\x3a\x67\x58\x6e\xfe\x05\x15\xbc\xc4\x2c\x26\x46\xaf\xa7\x9e\x7f\x42\x39\x8f\x2f\x27\x39\x8f\x2f\x22\x39\x8f\xef\x11\x73\x9e\x51\x77\x31\x71\xed\x97\x03\x5e\xa3\x1d\xcf\x78\x6a\xaa\x68\x91\x78\xc6\x4d\x08\xa4\x48\xba\x05\x5b\x2c\x19\x0d\xcc\xb8\x48\xc9\xb6\x73\x75\xe6\xee\x1a\x91\x97\xcd\xf2\xbf\xbb\xf4\xba\x84\xda\xb0\x19\x31\x22\x0f\xc8\xc4\xc8\x47\x8c\x4d\x80\x5d\x9c\xc1\x18\x82\xd1\xe3\xda\xc7\x0e\x71\xed\x4b\xdf\x29\xc1\x5f\xb3\x88\xb1\x05\x03\x5a\x75\xbf\x47\x2f\x2d\xd7\xb8\xf3\x40\xe1\xf9\x30\xe5\x1b\x52\xfb\xcc\x77\x78\x34\x47\xe7\x5c\xcc\xf2\x72\xd4\xb5\xe7\x9e\x93\x6b\xcc\x58\xce\x35\x98\x6b\x31\x23\xec\xf7\xc6\xd4\x5b\x35\x8c\xcb\x97\x2d\xf7\xdd\x64\x53\x44\x27\x4a\xc6\xde\x46\x7e\x32\xcd\xd9\xd0\x93\xd8\x05\xb2\xbf\xd7\x32\xae\xce\xe2\x34\x7b\x9a\x64\xea\x31\xbb\xed\xe9\x31\xe8\x4c\x35\x67\x4f\xeb\x4a\xdb\xb4\xd3\x30\xea\x9f\xb6\x6e\x8a\x55\xc6\xc6\x5c\xaf\x49\x90\x94\x78\xb7\x70\xa4\xba\xed\x87\x5f\x52\x7d\xc0\x57\x57\x54\x24\xfe\x07\x4e\x5b\xea\x61\x33\x95\xe0\x7d\xf0\x49\x91\x27\xac\x35\x08\x38\x56\xdc\x20\x12\x1b\xd2\xbc\xd1\x0a\x15\xeb\x2d\xb6\xb6\xa9\x61\x84\xd1\xdb\x4d\x4a\x37\xe2\x59\x34\x22\xd9\xf4\x73\x20\x3b\xd0\x80\x5b\x8a\xef\x17\xb6\x48\x21\x3a\x42\x54\xdc\x76\x44\x34\xe7\x5c\xe5\xef\x1b\x06\xeb\x4e\x71\xdb\x77\x9b\xb3\x37\x4f\x7c\x74\x29\xf2\x61\x14\xa7\x16\x64\x3a\x74\xf4\x62\xbb\xae\x00\x1c\x40\x00\xc7\x8a\xe8\xa4\x8e\x5c\xe2\x93\x10\x93\x1e\x0f\x7b\xa0\x4b\x20\x03\xca\xe5\x4a\x29\xe7\x2a\x6a\xa6\xb5\xab\xf0\xcd\x88\xf4\xc8\x80\x9c\x3c\xc5\x38\xb2\x70\xf8\xfa\xc3\xe8\x0f\x5f\x9f\x4b\x33\x09\x3e\x8b\x3b\x09\x55\xc4\xd8\x0b\xe8\xe1\x13\xef\x33\x9f\xba\x7b\x42\x48\xca\x07\x38\xe7\xed\x09\xd9\x29\xcf\xf7\x70\x90\x22\x63\x79\x2f\xc1\x8a\x4b\xfa\x35\x87\xcd\x5e\x13\x4e\x25\xfc\x1c\xfd\xb4\xd7\xe1\x13\xf3\xc3\x67\xb3\x49\x69\xfb\x88\x83\x04\xe0\x23\x07\x8c\x8e\xb3\x59\xe4\xe7\x25\xe8\x33\xb6\xc2\x5d\x7a\x50\x85\x1b\xb6\x1c\xd9\xcd\x4b\x0e\x7e\x88\x78\x75\xed\xa1\xf3\x61\xdf\x0c\x65\xb6\xcd\x44\x9c\x0c\x76\xe1\x74\xf2\x2e\x98\x8d\x81\x06\xda\x98\x7b\x9a\x3b\x0a\xd4\x31\x6e\x03\x65\x44\x11\xcb\x23\x81\xac\x4c\xf1\x33\xf1\x73\x34\xc8\x15\x49\xf1\x47\x00\x0e\xb9\x8a\xc0\xc5\x14\xf5\x02\xac\x58\x34\x70\x75\x5e\x60\x0c\xe0\xbc\x5d\xd5\xa4\x1b\xb0\xd1\x64\x28\xab\xc2\x6b\x99\x03\x54\x6d\x6d\x55\x98\x61\x3b\x8a\xc0\x81\x6b\x52\x10\x8c\xd6\xbf\x9d\x87\x7c\x13\xfb\x77\x33\xe5\xe8\x60\x5d\xc9\x2b\x8f\x7e\x95\xd9\x7a\x8c\x1d\x4b\x72\xcc\xda\xc2\x9a\x62\x96\xa9\xad\x0e\x17\x1a\x6b\xec\xf0\x29\x0d\xde\x5a\xc0\x79\x43\x22\x1e\x69\xf2\x53\x7b\xb0\x9d\x9b\xa4\x55\xbd\x9a\x04\xe6\xdd\xab\x4a\xa9\xee\x92\x82\x26\x49\x51\x26\xad\xdc\x9a\x6c\x53\x1c\xeb\x9f\xeb\x6d\xee\x6c\x4f\x52\x34\x88\xbb\x56\x08\x88\xb3\x4d\xdd\xdd\x06\xfe\x62\x91\xe0\x47\xc3\x37\xb9\xc8\x7a\x3e\xc3\x0d\x16\xed\x60\x58\x99\x0c\xa7\xc1\x5d\x5f\xd7\x8c\x89\xee\xbd\x6e\xeb\x6d\xd9\xf8\x2a\xac\x47\x2b\xb8\xa4\xf7\x87\xb9\x1f\x67\x0b\xf9\x3c\x0f\xf3\xdf\x0a\x7c\x9e\x1e\x3e\xa1\x26\x04\x99\xf4\x7d\x11\x2b\x30\x37\x7b\xfe\x4e\x29\xd2\xf5\xb5\xc6\xff\xc0\x48\xf0\x81\x6d\x5b\x68\xf8\x87\x77\x3b\x6b\xe3\x17\x46\x63\x77\x5d\xcd\x3f\x6f\x6e\x28\xfe\x9f\xd6\x21\xcd\xdb\x75\x48\x6b\x13\xe2\xaf\x43\x9e\x0f\xd7\xd6\x88\x98\x07\x36\x03\xa6\x79\xbe\xe2\x6c\xf7\xaa\x13\xa7\x6c\x4e\x5c\x02\x22\x06\xd4\xbf\xb3\xcd\x72\x52\x1f\x5b\x83\xa7\xf5\x03\xad\xe1\xbb\x5a\x5d\xf3\x6d\x27\x05\x76\x70\x4e\xe9\xa0\x69\x8b\x4b\xbe\xcc\xbe\xf7\x78\x58\xdb\x21\x9c\xc7\x47\xcf\x51\x1b\x79\x58\x1c\xf9\xc2\x11\xe7\x48\xc9\xda\x3e\x7d\x6e\xe6\xc0\x87\x90\x47\x29\xbd\x54\x17\x20\x28\xf5\x70\xad\xbe\x5c\xa2\x5a\x9d\xbe\xb2\x71\xbf\xdb\xf6\xcc\xdd\x22\x61\x93\x71\xdf\xeb\x77\x07\x51\x30\x0e\xcc\x6b\xe2\x0f\xfb\x83\x20\x0c\x03\x6f\x6c\x5e\x13\xf5\x20\x38\xc7\x8b\xda\xd3\xc0\xfc\x75\x4a\xba\x93\x68\xdc\xe6\x92\x2d\x07\x42\x44\x78\x3a\x66\x6e\x04\x20\xed\x1d\x3a\xf3\xa6\x45\x86\x01\xf3\xfb\xbd\x68\xce\x93\x86\x41\x14\x4c\x59\x6f\x6c\x2e\x9e\x19\x19\x06\xcf\x93\xf6\x30\xf0\x79\xc2\xa8\x3f\xe4\x9f\x73\x27\x23\xc0\xf3\xdb\x23\x5e\x1a\x24\x09\xdf\xb1\x3c\xd4\xee\x4d\x59\xd4\xf6\xcd\x93\xe6\x0a\x13\x8f\xd6\xea\xc4\x7d\xd7\xee\xbd\xf3\x04\xc1\x7c\xe2\xd9\xae\xa3\x48\xe6\x4b\xdb\x04\x95\xa4\x11\xf0\x22\x65\x1f\xc0\xec\x9f\xbe\x83\x38\xbd\x92\x6e\x07\x36\xe8\x69\x64\x2b\x5d\x2a\x17\x70\x29\x6d\xd6\x65\x3d\xd6\x43\xf4\x14\x6f\xd4\x34\xb1\x97\xe2\x74\xb9\x41\x2f\xe5\x26\xf6\xed\xd3\xc5\xde\x1b\x0a\xcc\xe6\x09\x5a\xd3\x59\x82\x32\xa6\x79\xa2\x17\xd4\x92\x56\x62\xbd\x3f\x29\x17\x37\xcf\x40\xa1\xec\xcb\xcd\x33\xd0\x2d\x3a\xc2\xf1\xba\x3a\x30\x26\xc1\xd5\x9f\xb4\x07\x95\x81\x66\x03\xd0\xb9\xa6\xaf\x2b\xa9\x11\xfd\x1d\x07\x9f\x0f\xd1\x61\x9f\x91\xd7\x50\x3a\x45\x37\xbf\x12\xe6\x9a\xcd\x0a\x71\xfb\x11\x74\xff\x1d\x1f\xa3\x2b\xbc\x7a\x44\x57\x6b\xfa\x83\x85\xda\x62\x30\xfe\x21\x66\xfc\x62\xc8\x3b\xc6\x16\x8f\xf1\x4e\x7f\x3e\x21\x22\x2a\x3e\xcc\xe4\x57\x99\x71\xfa\x9e\xff\xba\x42\x49\x5d\x19\xe0\x55\x83\x5e\xbd\xa5\x65\x18\x24\x96\xaf\xb7\x4c\x59\xf1\xea\x5a\xa2\x5f\x0c\xd5\xaa\x6f\xe9\x1c\x3c\x7b\xe6\x18\xca\x51\x32\xbd\x6d\x8a\xb4\xe9\x21\xb9\xef\xb1\x75\x8d\xc4\x42\x19\xd9\x7a\xdb\x74\x11\x3b\x1b\xda\xe1\x75\x27\x87\x6e\xdb\xb8\x7d\x38\x91\x07\xfb\xd9\x2c\xdc\x41\xb3\x07\x81\x83\xf0\x2e\xa5\xbd\xb3\x44\x31\xd9\x0c\xc6\xe5\x72\x7f\xa6\x9d\xb2\x1a\xf3\xa5\x6b\xcc\x96\xae\x7d\xe0\x2c\x5d\x7b\xe8\x94\xd6\x14\xca\xae\x52\x28\xbb\x4a\xa1\x6c\x5e\xf1\x61\x33\x89\xf4\x8b\x5b\x4a\x27\xb1\x99\xb2\xa1\x49\x59\x33\xf6\x17\xda\x14\xe2\x52\x66\xff\x72\x1d\xe2\x81\xa9\x93\x55\xfc\xee\x59\x98\xd9\xf7\xbe\xb0\x70\xc2\xc4\xcb\xe7\x13\x2a\x89\x62\xdf\x0f\xde\xbc\x44\x34\x64\xe2\xc6\x46\xe3\x0d\x55\x5c\xcb\x3e\x72\x50\xb1\x50\xd8\x63\xf8\x43\xb1\x20\x6e\x65\x6c\xdd\x16\x8a\x63\x12\xd5\xd9\xf3\x23\x6c\x05\xbc\x17\x1b\x47\x84\xc9\xe0\xcf\x23\x70\x19\xc3\x83\xa3\x56\xbc\x16\x0e\x9e\xc4\x81\x87\xb2\x42\xf9\xd3\x86\x4f\x9c\xaa\xa8\x6f\xf4\x8f\xb1\x15\x26\xdf\x08\x93\x6f\x40\xf0\xe1\x8c\x7f\x43\x20\x9c\xc5\x72\xec\xe0\x09\xfc\xa4\xc4\x4e\xa7\xff\xb0\x17\x4b\x7f\xed\xe8\x4c\x16\x76\x50\x8b\xbf\xd6\x68\x25\x5f\x6b\xc5\x5f\xbb\x69\xfe\xf1\x6b\xfa\xd6\x6c\x4d\xb8\x71\xe9\x68\xca\x72\x5e\xee\xe7\x8c\xe5\x50\x58\x62\x55\xf3\xb6\x89\x73\x93\x1e\xcb\xa1\xa6\x8a\xcd\x7a\x2c\xe7\xe6\x1e\x67\xcc\xf2\x63\x93\x12\x10\x3c\xda\x21\x8a\xda\x88\x61\xb0\x61\x0b\x68\x01\xdc\x3f\x56\x1d\x2b\xf8\xee\x59\x41\x2e\x87\xc7\xf2\xd0\xd1\x27\xcc\x0e\x1c\xc9\xf7\x35\x20\x97\x63\xbc\x28\xb9\x12\xe7\xae\x88\xaf\x9d\x72\x88\x19\x18\x1f\xb1\xbc\x0a\x7b\x0c\xd3\x76\x48\x30\x0d\x7a\xe3\x91\x69\x03\xb6\xb3\x82\x0e\xdc\xd8\x5e\xa6\x79\x41\xef\x0c\xc7\xa6\x66\x30\xd9\x0f\x9a\x84\xc1\xe2\x7c\x89\x13\xd2\x79\x9a\x8c\xe1\xfd\x71\x77\xc9\x85\xb4\x3f\xef\x2f\x61\x8f\xf7\xc7\x0d\x66\xe2\x7e\x52\x6d\x31\x49\xc4\x37\x96\x6a\x93\xc9\x63\xa3\x7f\xb8\xcd\xe4\x9b\xcc\xd1\xe6\x36\x93\x44\x7f\xbb\xd1\x4c\x6a\xe1\xb5\x51\xc7\xbe\xf4\x1d\x5c\xea\x08\xe5\x0e\x11\x2e\x1e\xdd\x1e\x7a\xe5\x1b\x1e\xb3\x63\x1f\x3b\xa4\x12\x98\xbd\x15\x74\x3e\x8f\x66\xb3\xfc\xef\x2e\xbd\xce\x66\x3b\xa0\x50\xea\x08\x85\x92\x2a\x73\x7b\x7e\x22\xf6\x7c\x26\x47\x26\x3f\x9b\x66\x8f\x4c\x98\xf9\x71\xc5\x9b\x0b\x4d\x2a\xc7\x4a\xdc\xc7\xb3\xcd\xe3\x6c\x32\x22\x11\xe6\x7d\x38\x39\x24\xe7\xad\xb7\x11\x07\x80\xa8\x68\x05\xc6\xda\x29\x23\x88\x9f\xdb\xb2\x48\x82\xfd\x3c\xfb\x9b\xe3\x76\x3f\x1e\x5a\xf7\x23\x2e\x9b\x8f\xeb\xa8\x40\x60\x3b\x4a\x9a\x3c\x3e\xa9\xa3\xa6\x3d\x77\x48\xd3\x08\x7a\x3e\x19\x1d\x63\xab\x99\xa7\x46\xf1\xb3\xd8\x63\x5b\xc2\xe4\xa5\xc2\x33\x71\x74\xd8\x8b\xc3\x8e\x1e\x5b\x9e\x4a\x12\xbe\x17\xe1\x46\x65\x93\xef\xe7\x3d\x63\x66\x79\xd4\x33\xe6\x96\xcf\x67\x86\x52\x98\x1e\xc2\xa5\xc5\xd8\x8e\x30\x4c\x0c\x1e\x7d\x4e\xa4\xeb\x2a\x39\xa8\xe2\x35\xfb\x46\x95\x72\x72\x8a\xd7\xac\x21\x55\xca\xe8\x18\xaf\x7c\xc9\x7d\x5c\x6c\xf9\x92\xfb\x78\x32\xf8\x3c\x61\xa4\x63\x30\x95\x32\xe2\x51\xde\xb0\xe5\xb2\x80\xad\x8e\x50\xf9\x41\x4a\xed\x98\x9c\x1f\xf2\xfd\xfb\x9d\x27\x21\xd5\x63\x72\x70\xa2\x76\xf4\x00\x19\x1f\x30\x12\xd6\xb0\xd5\x93\xf1\xc3\x26\x79\x69\x61\xab\xb0\x4b\x15\x46\xad\x45\x6e\xce\x72\x41\x6e\x14\xe4\x5c\xfe\xc7\xcb\x5d\x06\xc9\xb4\xf5\xb5\x6e\xf6\xa1\xfb\x1e\xff\xdc\x7d\x64\x10\xdb\x4b\x6c\x19\x04\x11\x19\x24\x16\x13\xbd\x0d\xb3\x90\x6d\xdb\x77\x35\x16\x2e\x9a\x78\x7d\x3f\x9b\x32\x7c\x7f\xa9\x83\xda\x42\xa1\x4f\x47\x5c\x2e\x29\x21\x4f\x5f\x62\x84\xba\xbb\x71\x44\x5c\xfb\xc4\x81\x35\xfe\xc3\xbe\x04\xf2\xc5\x06\x2c\xfc\xf9\x82\x1f\x43\x1f\xce\x48\x0a\xab\xc1\xe3\x90\x8e\x4d\xad\xe8\xa3\x33\x99\xce\x7b\x14\x9c\x4a\x7a\x6a\x49\x11\x7e\x13\x95\xac\xc4\x0b\x4b\x94\xee\x2e\xb8\xee\x13\x86\x07\x9e\x5c\x4d\x9f\x4f\xe2\x05\xa7\x32\x90\x36\x03\xf2\x88\xda\x72\xe9\xa5\x55\xee\x80\xa2\xdb\x65\xf6\xcc\x73\xec\x0b\xcf\x01\xfb\x85\x97\x00\x73\x79\xc1\x02\xd1\xff\xe0\x88\x74\xcb\x7c\x61\x79\x09\x72\x3e\xf4\xa6\x4e\xe4\x2d\xfb\x7d\x66\x57\x1c\x74\x12\xe6\xdc\xdc\x4d\x90\x93\xa2\xd7\x96\x6d\x3e\xa0\x1d\x6b\x68\x7f\xdc\xdc\x03\xf6\x53\x45\x62\xf3\x3f\x3e\xff\x13\xf0\x3f\x21\xff\x23\xfa\xf3\x3a\x7d\xd8\x02\xb9\x5a\xcd\xbf\xdf\xc6\xb7\x43\x54\xf8\xee\x67\xb3\x85\xef\x72\x75\x8f\xac\x88\x96\x9f\x50\x93\x7c\xfc\x52\xc0\xf9\x32\x5f\xac\x79\xc8\x2a\x7e\x2d\x7c\x8f\x4a\x51\x9e\x7e\xfc\x52\x30\xf3\xc5\xaf\x85\x1f\x34\xca\x66\x51\xc4\xe3\xb9\x48\x08\xb6\x3d\x2a\x54\xc1\x7b\x2d\xa3\xdb\xee\x89\x25\xd8\x28\xfe\x68\x19\xcc\x1d\xa1\xe8\xc3\xc7\x2f\x85\xbd\x1e\x86\x4c\xc8\x28\x7e\xe8\xed\x7d\xfc\x52\xc8\xcb\x44\x8c\xf7\x4e\x9f\x50\x84\x3f\xec\x93\x30\x4f\x23\xd2\xcc\xd1\x08\xaf\x42\x9a\x54\xa0\x99\x54\x4b\x7e\xec\x48\x28\x1b\x88\xcf\x97\xa4\x63\x19\x09\xb0\x15\xd1\x4e\xa9\x99\x0f\xcd\x30\xdf\xb4\x0a\x3f\xa0\x96\x39\x0a\xf9\x80\x2c\xfd\x50\x91\xd0\xeb\xb2\x1c\x12\x0d\x2b\x9a\x05\x38\x0a\x43\x9d\x24\xe8\xe6\x7a\x22\xe0\xe5\x06\xf2\xf6\xd2\xd1\x3a\x2d\x39\xa9\xc5\xec\x67\x30\x56\x6e\xe5\xcc\x5f\xd7\x42\x88\xdd\x86\x1a\xbe\x78\x5d\x25\x91\x24\x83\xf8\xbf\xae\x9f\x48\x92\x81\xd7\xad\x2b\x2b\x92\xe4\x86\x2a\xbc\xb5\x6d\x78\xbe\x38\xe8\xac\xca\x19\xa4\xcb\xa5\xfc\x17\x07\x9d\x54\x25\xfa\x86\x5a\x43\x93\x4d\x06\x87\xd6\x33\x43\x9e\x7d\xef\x3a\xea\xa6\x9d\x4f\xf9\xfe\xc4\x0a\xc5\x11\x16\xe7\xb1\xc7\x8c\x07\xe1\xd4\xe4\x1e\x5b\x23\x48\xe0\x3c\xb6\x74\x7e\x68\x5e\x62\xab\x22\x30\xef\xbc\xd2\xc1\x09\x8f\xdf\x80\xe5\xe4\x48\x59\x12\x81\x53\x6c\xe2\x51\xcf\x7e\xef\x3b\x22\xf1\x7a\x5d\x95\x12\x28\x0b\xd3\xce\xba\x67\x21\xed\x2e\xe8\xc5\x14\xeb\xfc\xee\x62\x2a\xed\xa3\x83\x08\x5d\x61\x8b\xb9\x88\xd9\x33\x87\x0c\x67\xf1\x8d\x41\x91\xf0\x3e\xe2\xd2\x4d\x8f\xf1\xff\xd2\x64\x8c\x8b\xe5\xcc\xbe\xf3\x1d\x29\xe2\xf1\x2d\xc6\x81\x2b\x1d\x1b\x5b\x9d\x48\xb3\xac\x91\x9f\x12\x1e\x9f\x7e\xb1\x6d\x36\xbb\x6a\x25\xbc\x9b\x3b\xa8\x77\x02\x5b\x90\x9d\xb4\x5e\x07\xa8\xde\xeb\x21\x17\x97\x50\xdc\x37\xc6\x30\xc0\x44\xf5\x9b\x6b\x5c\xb8\x98\x00\x4a\x36\x5b\xfc\x4e\x5d\xe3\xb9\x5d\x12\x2a\x8b\xd3\x2a\x36\x01\xed\x94\xa3\x3d\xb7\x31\x71\x8d\x5e\xb4\x4b\x2b\x2d\xa1\xe0\x78\x3a\x60\xe4\xa0\xc2\x10\x87\x8a\x72\x94\xb2\xe3\xe9\x80\x81\x37\x56\xf9\xc5\xeb\xe4\x73\x05\x8c\xad\x01\xd4\x47\x60\x1e\x1d\xcb\x6f\x1c\x1d\x13\xd7\xb8\x0a\xd4\x5e\xd6\x35\x1e\x4e\xad\x67\xa1\x4f\x62\xc9\x26\x83\x27\x34\xd2\x09\x0d\x48\x90\xbe\x8f\xe4\xd9\x6b\xbc\x4b\x7a\xee\x23\x9f\x14\xb1\xb0\x46\x27\x72\xe8\x3d\xfd\xb6\x03\x47\xfa\x63\x7f\xf5\x60\x6d\xb2\x92\x04\xea\x59\xe9\x1d\x56\xe3\x04\x93\x90\xfa\xc6\xac\x48\x9a\xd4\x37\x4e\x5d\xd2\xa1\xbe\x31\x2f\x92\x88\xfa\x46\xdd\x25\x3d\xea\x1b\x4f\x4d\x32\xa0\xbe\x71\x13\x92\x11\xf5\x8d\xc7\xe9\x72\x59\x24\x13\xea\x1b\xbf\x20\x34\xa5\xbe\x31\x1d\x97\xc2\x19\x33\x9f\x6a\xf1\x4a\xa2\x16\x95\x72\x8d\x84\x32\x78\x58\x23\x1d\x19\xac\xd4\xb8\x80\x04\xc1\xa3\x1a\x5f\xe7\x21\xc8\xa6\x8c\x4c\xb1\x15\xd2\xe3\x6a\xae\x97\x9b\xf6\x58\x6e\x64\x0d\x78\x64\x67\x00\xb1\x89\x35\x49\xd6\xbd\x2a\xb6\x26\x3c\xd3\xfb\x53\x72\x5c\x96\xe1\xe3\x96\xf8\xd8\xb3\x83\x26\xd8\xf2\x8d\x9b\x23\x70\x16\xac\xe5\x21\xbe\xcc\x13\xf6\x98\x8c\x40\x26\x61\x45\xe7\x63\xb2\x1d\xbb\xa5\x63\x0f\x62\x6c\x6c\xa5\xd0\x2d\x85\x7e\x52\x96\x61\xc0\xb6\x24\x76\x7a\x69\x5d\x41\xff\x1e\x1e\x93\x56\x4d\xb2\x3f\xe5\xb6\x46\x9e\xad\x1b\x53\x1f\xbf\x06\xf0\x6b\x79\x34\x80\xa3\xf5\xdc\xfb\x4a\x2e\x80\xf3\x6f\x11\x6a\x8d\x84\xb3\xee\x5d\xe4\xbd\x6b\xcb\x29\xd3\xb9\xc6\x5c\x90\x05\x55\x90\x94\x1e\x83\xb5\x73\xf9\xa4\xd6\x83\x96\xac\xe9\x62\xc6\xc8\x53\x4d\x46\x0e\x6a\xe4\x67\x90\x88\x87\x71\xf8\xa1\x45\xce\x55\xd3\x6e\x9a\x49\x78\x54\x23\x8f\x5d\x86\xad\x41\x6a\x9b\x3b\xd0\x8a\x1a\x68\x45\x0d\xb4\xa2\x06\x5a\x51\x03\x49\x10\xd1\x2c\x6c\xed\x80\x40\x3c\xd0\x8b\xbd\x68\x4a\xb4\x93\x2a\x11\x74\x90\xf1\xce\x01\x23\x2f\x55\x6c\x25\x03\xfb\xf6\x24\x19\x81\xb5\x72\x32\x04\x7f\x06\xc9\x18\x3c\x2f\x27\x83\x30\xc6\x39\xab\x42\x58\x49\x40\xdb\x4b\x8c\x4b\x39\xd4\x72\x56\xb4\xf0\x91\x56\xfa\x5a\x89\xaa\x59\xba\x51\xf9\x9c\xa5\x3b\x85\xe8\x9d\x42\xb4\x4e\x21\x5a\xa7\x10\xd5\x29\x17\x65\x19\xbe\x69\x26\x61\xd9\x29\x24\xd5\x29\x44\xeb\x14\xa2\x75\x0a\xd1\x3a\x85\x68\x9d\x42\xd6\x3a\x85\xc8\xca\x93\x54\x9f\x90\xb5\x3e\x21\x7a\x9f\x90\x14\x05\x89\xd6\x27\x44\xeb\x13\xa2\x28\xb8\x13\x47\x8e\x34\x24\x41\x42\x22\x49\xf8\x46\x91\xe7\x5a\x91\x71\xce\x8a\x16\x3e\xd2\x70\xd6\x4a\x94\xed\x5a\x05\x82\x63\xfa\x92\x8d\x05\xa9\x59\xab\xe6\x70\xe7\xda\xf6\x1c\x1a\xac\x24\xcb\x85\xa8\xb5\x7d\x3e\x2b\xa8\x0b\x26\x3a\xb1\xa7\x1f\xc3\xfd\x06\xac\xc9\x35\x9a\xc1\xf8\x16\xde\x9f\x86\x3d\xc4\x56\x96\x7e\xfa\xde\x0e\x1c\xf9\xc6\x00\xec\x35\x12\x28\xf5\x34\x5a\x9c\x35\x65\xdb\x80\xff\x6a\x5d\x14\x4c\x98\xec\x93\xd1\x09\x99\x0f\x54\x24\x38\x60\xc4\xb7\xeb\x0b\x47\x32\xb4\x54\xb7\x36\xe3\x3c\xd1\x31\xf1\x8d\x83\x17\xc6\x77\x81\x02\xd2\xe5\x90\xb2\x84\xa8\xac\xa2\x65\xbe\x7d\x09\x86\x21\x49\x41\xde\x04\x5e\xd6\x50\x51\x1f\xa2\xbc\x94\x8b\x16\x79\x38\x91\xe1\xea\x82\x91\x1d\xc8\x2b\xbb\x64\x12\x17\xac\xf3\xe4\x70\x92\x1a\xd0\xb3\xe3\x6d\x03\x92\x43\x55\x63\x17\x03\x96\xa0\x28\x1e\x9f\xe2\xc3\x6a\xf5\x6e\xc6\x1d\x97\xb2\xa0\x55\x5a\xef\x76\x88\xe0\x09\x98\xf8\x6d\x1b\x50\x33\xdd\x04\x78\xdd\xd7\x6b\xa5\xa5\x6e\xf0\xfd\x0c\xc4\xe4\x7e\x8c\xaf\xfa\xc9\x53\x8d\x4f\x7b\x2e\x08\xc9\x32\xba\x79\xf7\x8f\x7f\xb5\x02\x62\xe9\x0a\x6c\xe7\x37\x0e\x65\x85\x82\x2d\xc3\x86\x6d\x96\x87\x47\xf2\x33\xe6\x43\x8f\x11\xa1\x71\xbb\x98\xb1\xd5\xba\xb6\x4d\xc5\xb6\x28\xc4\xef\x5d\x47\xaa\x5d\x76\x0b\x5b\xaf\x11\x5c\xff\xe9\xd0\x21\x8c\x6f\xf7\x5d\x8b\x03\x83\x06\xbd\xfe\xaf\xd5\xfb\xed\x80\x4b\x96\x10\xbc\x7d\x42\x1e\xc9\x7f\x3e\xfa\x24\xfe\xc0\xc6\x7d\xe8\xe4\x8a\x47\x9f\x45\xf8\x00\xc2\xeb\x6a\x7d\x21\x28\xc5\xda\x26\x12\x50\xd0\x26\x5a\x97\x2f\x28\x20\x47\x65\x6c\x9d\xcc\x50\x40\x18\x68\x1c\x38\x73\x96\x2e\x01\x3f\x1f\x7d\xb2\xf8\x34\xe1\x82\xee\xe7\xa3\x4f\xd8\xf2\x24\xab\x4e\xd4\x0f\xff\x6b\x4a\xf5\xbf\xd1\x91\x33\xfc\x8f\x74\xe3\xed\x00\x75\x6b\x5c\x72\xdb\xdf\xf3\x62\x82\x05\x84\xe5\x3d\xe2\xe6\x3d\x12\x72\x39\x48\xd3\x8b\x83\xa1\xd1\x7f\xa8\x1a\x17\x9f\x88\x0b\x0f\x65\xe1\x3e\xd9\xdf\xf3\xc8\xfe\x5e\x5a\x37\xad\x7f\xe0\x1f\x2a\xc3\xdb\x01\x1a\x8a\xa7\xdd\x06\x3d\x14\x08\xf9\xdc\x87\xbf\x5e\x36\x2b\x0e\x05\x03\x2e\xf1\xea\x5f\x69\x82\xb4\xd3\xe3\xf8\xcb\x65\x13\x7b\xf2\xc4\xdc\xcb\x17\xc1\xd2\x4f\x1d\xa0\x43\x54\xaf\xf9\x9a\x89\xd3\xdf\x2b\xd0\x75\x0d\xf6\x3f\x55\xa6\x97\xcf\x56\x7c\xcf\x23\xcf\x91\xdc\x35\x55\xba\x78\xf5\x09\x54\xe9\xde\x77\x1f\x3c\x95\x28\x6d\x94\x4b\x98\xed\xad\xab\xd2\x5d\xb2\xa9\x24\x87\xdb\x1c\x89\xa6\xfc\x2d\x25\x79\x72\x6d\x4e\x11\xba\x5f\x8b\xb9\x68\x3b\x40\xbd\x5a\xa2\x36\x9f\xb7\xd1\x25\xbc\x6c\x79\x12\x62\x0b\x33\xfa\xf4\x84\x18\x58\xd5\x56\x9d\x7c\x51\xae\x83\x57\xad\x75\xad\x3a\xcc\xce\x82\xf4\xbc\x69\x0f\x1d\x35\x27\xe5\xcc\xf1\x53\xca\x77\x7d\x6c\xfc\x59\xff\xce\x29\x3f\x16\x5a\xf3\x80\x6f\x87\xc6\x75\xe4\x91\x26\xa8\x5f\x43\xbe\x2f\x68\x1f\x59\x1e\x28\xd2\xed\xb9\x43\x3c\xd0\xc1\x86\xe9\x2d\xa5\xb8\xe4\x03\xc9\xc4\x05\x04\xef\x3f\x34\x0c\xdb\xd0\x6d\xff\xbf\x51\x8b\xeb\x1a\xf1\x09\x33\xf7\x57\xf1\x3a\xf5\x37\xca\xf0\xc1\xdb\x89\xa0\xc8\x94\x6d\x1e\xfc\x13\xf5\x77\x04\xea\x8a\x3f\x5a\xa5\x25\x86\x67\x63\x65\x17\x27\x47\xb2\xd2\x58\x27\xc4\xa9\xd4\x91\x0f\x04\xc6\x24\xa2\x91\xf0\xe1\x63\x94\x3f\x21\x17\x4b\xdb\x33\xd0\x6d\xbb\x9a\xca\xdb\x17\x1d\x21\xee\x3c\xbd\x8d\xbf\xd1\x8f\x91\x31\x23\x91\x31\x27\x9e\x31\x23\x9e\x31\xd7\x6d\xec\xfe\xa8\xc9\x57\xfd\xa1\x8d\xfe\x78\xd8\xf6\xb6\x0f\xdb\xe6\x2e\x6d\xf3\xcd\xe2\x9a\xca\x9f\xac\xab\xfc\xdb\x47\x1c\xa6\x69\xf9\x49\xac\xe5\xd7\x8e\x69\x30\x17\xdd\x34\xea\x91\x20\x26\x05\x09\x30\x51\xda\x7f\x12\xa8\x00\x1c\x03\x10\x38\x06\x20\x3e\x0d\x8c\x19\x09\x28\xbc\x92\xe5\x52\x58\x15\x80\x9a\x10\xf2\x78\x27\x41\xc8\xe7\x7b\x13\x08\x81\xb9\x9f\x3e\xb9\x9b\x72\xd6\xc6\x8a\xd5\xdc\x71\xac\xc0\x5b\x84\x32\xfd\xb6\x0a\xe7\x2c\x6e\x9c\x73\x5c\x06\xc3\x5e\x2e\xb9\xb7\x20\xc9\x87\x07\x6e\x84\x9e\x4a\x9e\x03\x5c\x62\xa1\xc1\xea\x18\xcc\x85\xd8\x1b\xe7\x13\x9d\x1a\x61\xad\xad\xe7\x13\x9d\x1a\x27\xe2\xb6\xf3\x89\x4e\x8d\x5c\x8e\xf0\x4a\x9e\x33\x80\x3e\x2c\x39\x64\x00\x6d\xd8\xce\xc1\x89\xac\xe1\x11\x1c\xfe\xf7\x38\xb3\x69\xca\x5f\x37\x61\x3a\x3d\x12\xe9\x4c\xa7\x07\xaa\xc3\xbf\x3b\xfb\xf9\xc3\xd1\xc1\x3f\x3e\x38\xd0\x24\x82\x76\x80\x9e\xcb\x2c\x19\x78\x6c\xfb\xc0\x7b\xcb\x60\x6e\x5d\xa3\x08\xa2\x11\xf1\xa9\x2d\xa4\x5c\x17\x7d\x3e\xfa\x94\x93\x2a\xfe\x14\x48\x1d\x2f\xac\x81\xe3\x03\x86\x4d\x74\xec\x08\xd3\x09\x2f\x6a\x0f\x68\x38\x67\x39\x1f\x98\xfd\x6d\x80\x73\x97\xc1\x76\x7e\xbf\x29\x87\x89\x63\x02\x9f\xc6\x56\x14\x56\xea\x4c\x18\x4a\x69\xb9\xa8\x48\xc4\xbf\x14\xab\xbc\x6f\xad\xb0\xb6\x3a\x7b\x30\xc3\xff\x70\x58\x20\xa7\x04\x1f\xcf\x72\x4e\xbc\x65\x1e\xa8\xce\x0d\xde\xc8\xf1\x0f\xce\x10\x36\x73\xc6\x41\x3f\x09\x06\x49\x30\x4c\x82\x4d\xfc\xe6\x39\xc3\xaf\x8a\xe0\x63\x7f\x3c\x68\xf8\x93\x2a\x3f\x12\x53\xff\x48\xd8\x11\x12\x1f\x63\xd2\x13\xa0\x63\x09\xe2\x5b\x9b\x41\x8c\xd5\x54\x58\xa3\x18\x4b\xea\xfe\xb7\x33\x94\x6d\x8c\x27\xa2\x94\x0e\xb2\xd9\x1e\xa5\x74\x94\xcd\xa2\x4e\x36\x5b\xfc\x5a\xf8\xc1\xeb\x95\x17\xb5\x5c\x2e\x77\x13\x60\x98\x17\xd5\x05\xc7\x67\x15\x07\xa1\x4e\xe9\x6a\xc0\xcc\xa0\x82\x73\xc8\xcd\xfb\xf2\x98\x20\x1f\xa8\x83\x03\x05\xc9\xc5\x90\x48\x41\x7a\x0a\x32\x50\x90\x11\xde\x30\x63\x8c\xbb\x5c\x0a\xf5\x6a\x98\x7b\xf0\xf0\x21\x28\xb1\x15\x48\xfa\x8a\xd8\x38\x6c\x18\x6c\xc7\xdb\x38\x75\xb8\xdd\x8e\xb7\x71\xfc\xb0\xf5\xbb\x3b\x5b\x0f\x22\xd6\x2a\xfd\xe6\x89\x04\xd8\xc7\xcd\x5e\x10\xe3\x0c\xce\x44\x22\x54\xc0\xc4\xcd\x66\x3b\x33\x71\x51\xf5\x94\xc3\xe4\x08\xff\xdf\x39\xa4\x88\x6b\xa5\x0e\x83\xff\xb7\x8e\x2b\xd4\x35\x92\x60\x8f\x16\x8d\x22\x56\x97\x4c\x82\x3d\x6a\x7c\xdb\x7e\x98\xf1\xdf\x9d\x65\xe8\xe2\xfc\x49\x39\xde\x1e\x8b\xeb\x74\x0c\x2a\xab\x00\x33\x07\x6a\xad\x0e\x28\xf4\x13\x8c\x34\xd6\x35\xde\x7a\xa4\x01\x1d\xfc\xcb\xdd\x76\xa2\x21\x37\x78\x39\xf0\xb8\xdc\x0e\xfe\x74\xe8\x71\xeb\x0a\x57\x5d\x9b\x27\x1e\x7c\x10\x24\xee\xa5\x98\x3d\xf7\x1d\x12\xd0\x82\x15\x7c\x07\xbf\x18\x41\x2e\x87\x01\x68\x07\x8e\x7d\xe7\x39\xbb\xf4\xf0\x38\x9b\x4d\x43\x4e\xaa\x7c\x4a\xf2\x5d\xa9\x0f\x26\x3c\x9e\xf4\x1a\xe2\x95\x3c\x53\xb8\x8c\x84\x13\x13\x20\x6e\x3c\xc0\x60\x54\x89\xf3\x14\x31\xd0\xe0\xa0\xc5\xa3\xbb\x28\x7d\xbc\xc2\x17\x29\x75\x92\x42\xbc\xe5\xd2\xc7\xc9\x96\x75\xc4\xf7\x7b\x7c\x77\xe7\xa2\x80\x48\xed\x47\x6c\x19\x06\x99\x71\xee\x30\xc0\xc4\xe7\x63\xc0\xf0\xd9\xa8\x05\x5d\x46\xcb\xf2\x1c\x06\x94\x35\x42\x7b\x2e\x9c\xaf\x64\xb3\xe2\xb8\x65\xad\x9a\xc5\xb8\x8e\xa0\x74\xc3\xa6\x9a\x30\x96\x07\xbe\xdc\xdb\x51\x14\xf8\x38\x9b\x1d\xcb\x5c\x70\xf2\xa2\x5f\x6c\x03\x7f\x7c\xaa\xd6\x51\x4d\x0a\x1d\xc7\x47\x04\xae\x69\x89\xd8\x7c\xc4\xc4\x3d\x2d\x11\x8d\x5a\xc4\x13\x67\x23\x0a\x30\xe3\xe9\xbf\x04\x44\x4e\x2e\x63\x56\x24\x01\x85\x6b\x60\x21\xf5\x8c\x53\x17\x4c\x3f\xea\xae\x25\x6f\x0a\xfa\x94\x1e\xb5\xb2\xd9\x1d\xe4\xd3\x0e\x9f\x22\x45\xf0\x1b\x2b\x9d\xe1\x8b\x34\x14\xf0\xa4\x20\x95\x14\xca\xa4\x90\x27\x85\xa9\x24\x4f\x26\x79\x3c\xc9\x13\x49\x1e\x3d\x79\x42\x62\x9d\x01\xa1\xbc\xfc\x84\xf6\xff\x2a\xe4\x3d\xb1\xba\x40\xe5\x4f\x9e\x19\x1c\x7a\x4a\x3d\x5d\xe3\x38\x3e\xe2\x13\x94\x77\x8d\xa9\x5f\x42\x1e\x9c\x4e\x90\x14\xa9\x88\xca\x33\x68\xc9\x30\x90\x4d\xe8\x85\x35\xc2\x09\x75\xb2\x47\xbb\x7d\x84\x73\x3f\xbb\x2c\xe7\x89\x13\x8e\x6a\x97\x09\xb4\x59\x95\x4b\xce\xf2\xab\xd8\x14\x7d\x49\xe9\x75\x69\xac\xb8\x9f\xe8\xfb\xf9\x4b\xd2\xd3\xb1\x65\x84\xac\x4b\xcf\x45\xde\x96\x81\x76\x15\xc8\x81\xf6\xc8\x69\x22\xf3\x12\xa9\x44\x12\xce\xa9\xd7\x27\x9d\xf2\x9f\xc2\x39\xb5\x05\xaf\xd7\x0f\x9a\x62\x61\xd1\xb9\xbb\xc5\xd6\x97\x9e\x81\x8e\xe1\x63\xd0\x7c\x25\x80\x40\x3e\x96\xb0\xcd\x73\x46\x41\x77\x4f\x57\x8e\xdd\x9f\x6e\xd1\x42\x8e\xfe\xa4\x85\xac\xb4\xd6\xb5\x90\xcf\x0b\xb6\xae\x70\x2c\x83\xc2\x31\xe5\xde\xfc\x46\xf3\x1d\x20\x5f\x1f\x2b\x15\xbe\xd3\x6a\x1b\x9d\x76\x48\xb3\xc7\xb0\x59\xd6\x00\xef\xbb\x0c\x9b\x0b\x0d\xd0\xe3\x18\xf0\x30\x96\x82\x04\xf0\x64\x59\xfc\x64\xcd\xc9\x90\x0d\x5a\x6d\x6f\xf4\xae\x3d\x82\xe7\x7a\x46\x93\xc1\xa0\x3f\x1c\x07\x7e\x26\x71\x7d\xc1\xc5\x91\xb1\x83\x8a\x47\x9f\xf7\x5a\xf6\xa9\x07\x37\x4c\x5c\x66\xbb\x07\x8e\x3d\xea\xb3\x5c\xe0\x58\x38\xc8\xe5\x04\xaf\x3e\xea\x50\x80\x59\xca\xbf\xec\x90\x51\x26\x7c\x8b\xa6\xdd\x88\x50\x3e\xe1\x7f\x32\x75\x93\x99\x5c\x4a\x66\x7f\xdd\x51\x1e\x11\xea\x5d\xfd\xa6\xb3\x80\x8d\x7e\x8b\x52\x1f\x22\xcd\xc8\xba\x3f\xa2\xea\xb1\x94\xc5\x75\xec\x1d\x64\xd6\xd1\x50\x82\x67\x46\x91\x4b\x0f\x3a\x25\xc1\x59\x02\x66\x87\x81\x53\xfa\xf6\x43\x04\xcc\xdd\xb3\x0e\xf2\x43\x6c\xee\x16\x71\xe9\xba\x6e\x5e\xd5\x93\xc7\x74\xae\xa9\xcb\xd9\xa7\xd4\xdb\xd4\xbb\xb0\x28\x0c\x4f\x30\x09\x5d\xb5\x26\x1f\x75\x30\xf1\x8d\xb6\x44\x39\xea\x90\x41\xbc\x5c\x5f\x77\xec\xa1\x23\xce\x11\xe0\x45\xd1\x04\x7c\x10\x83\x5d\xbe\x66\x17\x30\xd9\xe9\xf1\x40\xe3\x14\x93\x87\x17\x01\xa9\xc9\x5f\xdf\x60\x51\xd4\x7f\xb9\x1b\xb2\xde\x68\xc0\x38\x11\xe7\xf4\xbc\x05\xee\xfc\x78\x25\xea\x53\xe5\x67\xbf\xde\x8d\xad\xd7\x86\x8c\xc0\x41\xaa\x2f\xde\xea\xf1\xd5\x5b\x3d\xc4\xb7\xcf\xc5\x3b\x21\xd4\x76\x88\x5b\x42\x20\x16\x56\x7b\x8c\x4f\xbd\x8a\x83\x1e\xcb\x32\xf0\xab\x2c\xce\xd7\x2b\x0e\x3a\x8c\x53\x6b\x71\xa8\x13\xa9\x50\x14\x69\x79\x65\xe8\x26\xc6\xab\x94\x55\xe8\x70\xa2\x42\x41\x9c\xe3\x57\x4b\x06\x0e\xe2\x0c\x77\xaa\x02\x47\x31\xa8\x1d\xe3\x77\x43\x19\x38\x8d\x13\x6f\x14\xfe\x3d\x9c\xb9\x05\x73\x07\x89\x09\x39\x0c\xe0\xa4\x0c\xfc\x1d\x5a\x95\xc4\xd4\x7c\xf5\x88\x6e\xd6\x7c\xe0\x55\xd2\xde\xb2\x7f\x22\x66\xf4\x26\xf0\x6e\x8e\x0f\x91\x3e\x44\xac\xdb\x3a\xe2\x2c\x08\x1c\xb5\xdc\x80\x7e\x7d\xa7\xc1\xd3\xd6\x44\x21\x39\x70\xe4\x46\xd4\x62\x54\x4d\x86\x7a\xd7\x90\x23\xfe\xa8\x83\x71\x89\x89\xae\x61\xaa\x6b\xcc\xd8\xed\x80\x1b\x0f\x73\x66\x77\x7d\x07\x0d\xe6\x0c\x6c\x5f\x90\xbb\x6d\x1a\xa9\xa9\x71\x57\x47\x60\xf8\xa1\xc6\x98\xfe\x8c\xd2\x43\x94\x1a\xc0\x57\x98\x9c\xcb\x1b\x14\x0f\x11\x79\x6e\x91\x71\x0b\x93\xf7\x09\x44\x95\x20\x5d\x4b\x47\x86\xdf\x1e\xd2\xf7\xf2\xc1\x29\xa1\xe8\x97\x29\x12\x45\x7c\x5e\x8d\x3c\x95\x3d\x99\xa0\x05\xfd\xb5\xf8\xfa\x9a\x3b\x03\x26\x2f\x9f\x8b\x8a\x05\xd4\xe7\xec\xfd\x86\xaf\xaf\xd7\x98\xb3\xf9\x00\xd8\x3c\x3c\x8e\x4b\x5d\xd8\xec\x16\x72\xf7\x70\x56\x00\x06\x75\x10\xc5\xd6\xc9\x0b\x0a\xc8\xe3\x29\xb6\xce\xeb\xc8\x27\xb7\x4d\x90\x29\x7c\xed\x54\x85\xaf\xf9\xe0\x49\x48\xa8\x47\x49\x00\xf6\x9d\x70\x83\x08\x20\x4c\xdb\xfe\xfa\x2b\xbe\xfb\xdd\xe8\xda\x5d\xd5\xb7\x6a\x79\x10\xa2\xad\xcc\x85\xfe\xd0\xd5\xd5\xb9\xb3\x5c\xba\x11\x5a\xef\x74\xe1\xa7\x06\x67\xb3\xcc\xf8\x1d\xf5\x99\x1f\xc0\x31\xc7\x93\xbb\x7e\xf1\x61\x57\x92\x12\x6b\x17\x76\x80\x45\xeb\xde\xe6\x0a\x8a\x0d\xda\x55\xe7\x3b\x65\x96\xba\x01\xa1\x18\xe9\x43\x84\x25\x95\xad\xf3\x08\xb9\xbc\xe3\x39\x65\xe1\x05\x66\x70\x18\x0c\xf6\x44\x27\x65\xb0\x9d\x90\x39\xa4\x56\x47\x28\x22\x15\x37\x55\x4f\xba\x8c\x7e\x63\x6b\x3a\x8e\x4f\x91\xd4\xd7\x85\x37\xa3\x94\x2a\xf1\xda\x66\xe0\x9f\x2a\x3a\xd8\x4a\xd2\xb5\x86\x25\xa4\xee\x24\xd3\x28\x3d\x80\x13\x36\x1f\xbc\x88\x5b\x49\xd6\x16\x1e\x28\x91\x8c\x81\x87\x70\xba\x46\xb3\x8e\xd8\x24\x3c\xaf\x6f\x2b\xeb\xba\xd3\xce\x94\xaf\xbd\x5d\x35\x2d\x95\xcb\x4e\xe1\xdc\xaa\xba\xe9\xc9\x97\xd7\xff\x5a\x12\xfd\xba\x43\x18\x8e\x5f\x64\xbb\xee\x50\x55\xab\xeb\xd4\x46\x30\x35\x62\x2c\x4f\x3c\x7a\xee\x6d\x5f\x46\xbc\xcd\x65\x44\x9f\xec\xfd\x51\x36\xbb\x65\x32\xab\xd9\xb8\x5c\xc6\xdc\xd0\x4d\x79\x9d\xbd\xd5\xa4\x0d\x66\xd7\x1d\x84\x4b\x2e\xfc\x98\x87\x9a\x43\xad\xe4\x56\x99\x0e\x95\xe7\x62\xf2\xfc\xb9\xe4\x9b\xc5\x02\x97\x12\x66\x5c\x9a\xd3\xc9\x19\x7f\x23\xc0\x2b\xcc\xff\x6c\xbb\xa6\x55\xef\xa6\xdc\x47\xa9\x5b\x5d\xb3\x4e\xec\x88\x6a\x71\xbd\xd5\x11\xd5\xcd\x9b\x4e\xc1\xef\x37\xdc\x34\xdf\x6f\x73\xd3\x1c\xdf\x9e\x17\x8e\x9a\x5f\xdd\xe1\x64\xd4\x32\x19\xf1\x7f\x9b\xee\xea\xcf\x5e\x9b\xe1\x26\xee\x9f\x5c\x37\xc7\xb7\xca\xee\x9e\x10\x23\x1b\xee\x9b\x5d\x32\x37\xbd\x3f\xbb\x6f\xd6\x9d\x2d\xab\x12\x74\x17\xce\x2e\x99\x17\x4d\x8f\x9c\xba\xa6\x4f\xea\xae\x19\x90\x99\x19\x92\xb9\x74\xb3\xfc\x07\x17\xce\xa4\xb3\x59\xae\xee\xc6\xd9\x25\x9d\x8a\xe9\x91\x93\xb6\xe9\x93\xd3\xb6\x19\x10\xc6\x0b\xae\x0f\xcd\x26\xb8\x71\xee\x40\xf9\xd7\xeb\x4f\x33\x6a\x2b\x59\xd7\xb7\x0b\x8e\xe1\xff\x8e\xbd\x2e\xfa\x30\x72\x8c\x19\x71\x85\xb3\xa5\x44\xc8\x3e\x4a\x3f\x44\x9a\xf2\x21\xa9\x7c\x44\x2a\x1f\x90\x4a\x00\xa7\xcc\x7e\xef\x10\xf5\xd8\xb3\xf0\xf9\x83\x63\x6f\x8f\x22\x59\x2e\xac\xe5\x27\xc4\x8c\xfa\x50\xec\xb2\xd2\x5e\xa7\x98\xf1\x54\xc9\x1d\x3d\x21\x37\xff\xad\x40\x98\x71\xd2\xc6\x84\x19\x9d\x4a\xee\x38\x06\x9d\xb6\xf1\x86\x99\x80\xcc\xcc\xd9\xe7\x6a\xc3\x7f\x26\xd6\xde\x3a\xb2\x1d\xe9\x37\x5d\x3a\xd1\x54\x84\x49\xfb\xd1\x54\x50\xdf\x21\x21\x0d\x0c\xff\x37\xe7\x85\xa1\x7d\xea\x50\x7a\x7b\x8a\x3d\xca\xc9\x13\xca\x77\x94\xc6\xe6\x6b\x22\xa4\x07\x06\x8c\x55\xd2\xa4\x05\xab\x29\xbc\x52\x37\x55\xb1\x1d\xea\xda\x4d\xb0\x47\x7c\x1f\xf0\x55\xb3\x23\x70\x31\x7e\x0d\x68\x27\x7e\x15\x76\xd5\xa1\x72\xbc\x07\xa4\xeb\x9b\xc2\x71\x28\x09\x42\xe9\x49\xcd\x05\xb1\x8f\x2f\xa3\x9d\x55\xbd\x83\x02\x23\xe0\x3b\xd7\xe5\x32\xe0\xd5\x3d\x5d\x38\x48\x9e\x10\xf1\x95\xba\xeb\xf3\xa1\x14\x62\xb0\x99\x0b\x42\x59\xeb\xd5\xaa\x1d\x22\xf6\xc4\xf7\x68\xd2\xc7\x92\xb2\xb6\x2b\x52\xe1\xeb\x9b\x51\xf0\x45\x0a\x3e\xbc\xbb\xbe\xf0\xe5\x2d\xaa\x2a\x5a\xec\xf1\x74\x86\xc4\xe6\x44\x90\xd1\x55\x04\x0c\xa9\x2b\xa8\x06\x45\x84\x3c\x7f\x28\x33\xcb\x5d\x25\x09\xe1\x5e\x94\x7e\x5c\xc7\xf4\xfd\xdd\xb1\x18\x7a\x49\x97\x49\x12\x78\xb4\x60\x79\xb1\xd3\x53\x78\x95\x07\x66\x0a\x07\x78\x7c\x58\x6f\x7d\x9c\xfc\x24\x2d\x54\xca\xb2\x7c\xf0\x92\x6a\x09\xa7\xe6\xbc\xbc\xe5\xb2\x28\x02\xf1\xb3\xd1\xda\xce\xcb\xe6\x54\xe2\x6d\x2a\x58\xa1\x50\x2d\x85\xaa\x4f\x9b\xd4\xb7\x43\xc7\x6a\xda\xef\x9d\x6c\x16\x1c\x40\xcb\x91\xc8\x21\xc6\x8c\xc0\xcf\x9c\xaf\x0b\x90\x06\xcf\xe3\xaa\x7c\x3e\x1c\x2c\x3b\x30\xaa\x2a\x47\x7c\xa0\xd9\x45\x47\x3e\x04\xd2\xa1\x81\xbd\xaf\x22\x11\x0d\xec\x80\x23\x7f\x54\x90\x9e\x82\x28\x1c\xab\x59\x42\x81\x5d\x70\x68\x8f\xc8\x94\xa2\x43\x43\x6c\xd6\x3b\x28\x24\x3d\x2c\x13\x23\x2d\xb1\x83\x4d\x01\x2c\xd7\xd5\xf5\x2b\xe9\xa7\x95\x74\x8c\x19\xe9\x18\x73\x4c\xf2\x45\xac\xe5\x48\x10\x7b\xc6\x8c\xf4\x8c\xb9\x3a\x95\x04\xc4\x64\xab\xda\xa1\x85\x1f\x2e\x11\x37\x70\xc9\x48\xfc\xf4\xc4\x0f\x6f\x09\xaf\xb5\xa4\x25\x8d\x80\x92\x7c\x9d\xe6\x63\xd9\x0e\x1d\x12\xd8\x61\xae\xe8\x60\x41\xdd\x89\x35\xa1\x1c\x0a\x24\x9b\x52\x91\x46\x16\xa4\x4c\xd1\xd4\x98\xe7\x27\xc6\x1c\x7f\x40\x53\x63\x96\x9f\x18\x33\x6c\x2d\xe8\x4e\x8f\xa1\x32\x2e\xbd\xde\x47\x66\x99\x3c\xf6\xcd\x89\x31\xcf\x97\xf7\x26\xc6\x6c\x65\x72\x98\xcf\x04\x70\xb6\xb2\xca\x74\x61\xdc\x47\xd6\x82\x2e\x8c\xc7\x3e\x1f\x07\x65\x4a\x7d\x86\x27\x34\xc1\x2b\xfc\x90\xdf\x28\x2d\x72\xae\xb9\xc8\xbb\x2b\x31\xfa\x79\x5d\x0e\xa9\xbb\x27\x3c\xd0\x15\x73\xe5\xbd\x32\xb6\x44\x46\xf8\x68\xe1\xbb\xac\x51\x69\x91\x3b\x34\x17\xf9\xc3\xd5\x6a\x50\x42\x53\xfa\x50\x47\x03\x32\xc1\xa4\xd7\x46\x53\x5c\x42\x65\x0e\x68\xd4\xd1\x88\x37\xd9\xc1\x64\x80\xc9\x42\x82\x80\x10\x23\x00\x95\xe9\x6d\x17\xa8\x7e\xd5\x45\x65\x63\x46\x16\xc6\x0c\x93\xa9\x31\xc3\xd9\xac\x9e\x30\x27\x0b\xde\x0d\x53\x3e\xd4\xcc\x32\x9d\xf2\xc6\x90\x01\x2d\x67\xb3\xd3\x5d\xea\xb3\xd2\xd4\xdc\x28\xd9\xe3\x93\xe7\xb4\xc2\x50\x8f\x0c\x30\x26\xe5\xe5\x12\xf5\xf4\xef\xcb\x8e\xe0\x35\xf6\x8c\x59\x08\x40\x63\x06\x95\x35\xe6\x44\xdc\xbb\x70\x71\x12\x28\x7e\x2d\xe4\x8b\x5f\x0b\x7b\x2d\x7b\xc6\xf7\x4a\xc6\x2c\x2f\x73\x0c\x8c\xb9\x08\xce\xf1\x07\xf0\xf4\x93\xc6\xec\x25\x98\xbd\x75\xcc\x0e\x9c\xdb\x4c\xc8\x08\x46\x01\xe9\xc1\x64\xc3\x26\x4a\xc1\x9e\xeb\xc8\x17\xf9\x77\x7c\x91\x19\xaf\x9a\xd9\xac\xf4\xb1\x9f\x9c\xa4\xc5\x2c\xe1\x34\xcd\x12\x5a\xe0\xec\xf4\xcf\x2b\x1d\x4c\x66\xea\x1a\x33\x0b\x82\x73\xea\x1a\xf3\x35\x4f\xc8\xdb\x71\x94\xb9\xfa\x2c\xcf\x04\x43\x08\x38\x58\x44\xe6\x02\x71\x56\xcc\x51\x5f\xe6\x29\xe6\x68\x20\x82\xa7\x6e\x0c\xad\xbb\x39\x1a\xac\x36\xdb\xd1\x48\xed\xe0\x94\xa7\x3d\xfc\x01\xc1\x17\xf8\x78\xf0\xad\x1e\x43\x1e\x2e\x71\x76\x37\xcf\x7b\x7b\xcc\x98\x99\xc8\xe3\x63\x83\x43\x66\xb1\x51\xcd\x7d\x64\x7a\x7c\xe8\xfa\xfa\xb3\xfb\x0f\x69\x6f\x05\xc6\x7d\x04\xb9\x1e\xfb\xd0\x86\xfb\x88\x84\xd4\xe5\x93\x07\x3e\x01\x06\x99\x3e\xc3\x3c\x16\xf0\x58\x00\x31\xe1\x08\x22\x58\x2e\x8b\x47\xf9\xcf\x3f\xa8\x18\x2c\x5e\x3e\x88\xb5\x76\x3e\xa5\x61\x3a\xd5\xcf\x87\xb8\xe4\x8b\xe7\x18\x64\x7e\x3f\xf6\x0b\x23\x99\xab\x4f\x82\x3d\x3f\x17\x8a\x67\xfd\xb7\xa4\x87\xc4\xdb\x0b\x73\xbe\x62\xb5\x41\xde\x5b\x13\x32\xf2\x28\xcc\xfb\xf8\x43\x93\x20\x7f\x2f\xc8\x7b\x7b\x21\xfe\xd0\xc4\xc2\x33\xc6\xcf\x7a\xca\xb6\x4d\x51\x23\xb1\x7d\xcc\x17\x29\x5f\x27\x9f\x7d\x07\xdd\x27\x0d\x71\x2d\xe5\xd5\x61\xe8\x39\xe8\x69\x88\x2d\xcf\x18\xf4\x07\x28\xbe\xb1\xa0\xe0\x70\x9b\x40\xa4\xb4\x43\xc4\x25\x32\x4a\xe9\x7d\x80\x7d\x3b\x0a\x1c\xfb\xd6\xe3\x7b\x62\xbb\x40\xf8\x4a\xe0\x82\x0e\x36\xfd\x5a\x63\x8f\x16\xc8\x00\x56\x2a\xab\xf7\x7d\x60\xf5\x04\xfb\xf4\xed\x1e\x2f\x26\x1c\x62\xf9\x55\x02\xc5\xa1\x1e\x29\x62\xd2\xcb\xe7\xc5\x12\x2f\x5f\x79\xa0\x1e\x14\xed\xe3\x15\x48\xd7\xda\xd5\x42\xd0\xd8\x3c\x0d\xb5\xcd\x85\x0b\x86\x1c\xcd\x64\x39\xee\x70\x09\x2a\xa2\x05\xd2\xa3\xe0\x87\x37\xfa\xde\xb3\xa2\x5c\x0e\x77\x78\x51\xbe\xcd\xf7\xa4\x9e\x1d\x39\xd8\xe1\xbb\x7e\xd7\xa1\x4d\x68\x12\x6c\x73\x3a\x78\x05\x34\x22\x3e\xb8\x41\x40\x8b\x23\x62\xa7\x7c\xab\x6a\xc4\xc6\xaf\x7a\x1d\x3c\xfc\x1a\xb9\x70\x92\xa7\xf7\x23\x4b\x50\x3c\xed\xdc\x28\xb5\x8d\x19\xf6\x5f\xfe\x87\xc9\x37\x08\xde\x75\x83\x71\xab\xef\xbf\xcb\xfc\x4f\x8e\xe5\xfe\x27\x03\xaa\xd6\x76\x77\x20\x1c\x17\x04\xbe\xf1\x3f\xd6\x8e\xfe\xc4\xbf\xb6\xaf\x38\x6b\xc4\x1b\xdb\xa8\x6c\x33\x47\x6c\xad\x53\x9e\x37\xe3\x7c\xd1\x46\xbe\x35\x1b\x34\x28\x81\x88\x5b\x09\x24\xa0\x05\x12\x0a\x4a\x06\xdf\x43\x38\xb2\xe2\x63\xde\x0e\x78\x77\xba\xf8\xd5\xa7\x81\xe0\x33\xab\xd4\x0e\xd8\x2f\x21\x0f\x3a\x18\x5c\xab\xed\x16\xb0\xb9\x5b\x4c\xaa\xd0\xfb\xa7\x55\xb0\x9d\x6d\x15\x80\x51\xe1\xc1\x71\x98\xbc\xf8\xae\x25\xc9\x31\xaa\x74\x0d\xb2\x56\x85\xef\x61\xf2\xf9\x41\x4a\x59\x12\x95\xed\x85\x07\x17\x78\x45\x6f\x80\xc5\xde\x3b\xbe\xb9\x89\x3b\x62\xd2\xeb\xf4\xfa\x2f\x3d\xe3\x7f\x2c\x18\x20\x23\x3e\x3c\x46\xc6\xd9\x90\x7a\xcc\x1e\x3d\x3b\xcb\xa5\x6b\x8d\x8c\x5a\x8b\x51\xcf\x1a\x19\x87\x2d\xf6\x96\x68\x7f\x3c\x66\xe4\x64\xcc\xc8\xe9\x98\x91\xb3\x31\x23\xd5\x31\x23\xb5\x31\x23\xdd\x39\x23\x17\x0b\x46\x9e\x47\xbc\xd5\xb2\xc9\x6e\xaa\xc9\x74\xc7\xb5\x03\x87\x30\xbb\xe6\xd8\xbe\x43\x3d\x3e\x3b\xac\x91\x71\xd1\x58\xb3\x57\xa8\x39\x46\x97\xfa\x16\x04\xa6\x2e\x8d\x44\x28\x6c\x0f\x83\x23\xde\x2e\xda\x13\x80\xb3\x06\x1d\xac\xe2\x8b\xd9\x2b\x6c\xb9\xa8\xb9\x60\xc4\x5e\x1c\xa5\xfd\x00\x6b\x63\x5c\xf9\x73\x89\xca\xf4\x95\xf9\xe0\x06\xc0\x8b\xda\x5e\x87\x07\x9a\xc1\xd8\xeb\xf7\xc6\xc1\x6c\xcc\x63\xdd\xfe\x64\x14\x74\xfb\xd3\x20\x8e\xf0\xf1\x3b\x8c\x63\x51\xc0\x44\x9a\xdb\x9f\xf1\x9f\x61\xe0\x0f\xd9\x8b\x08\xa9\x6c\x83\x88\xcd\x0f\x7a\xed\xae\x70\x96\xc3\xa7\x61\xbb\xd7\x1e\xb5\x74\x90\xf4\x93\xd2\x91\x3a\xcb\x39\xd3\x54\xf9\x73\x3f\xf6\xa3\x72\x7c\x12\x6b\xfb\x9f\x2f\xe2\x60\xbd\xc5\xa8\x6f\x33\x4f\x79\xae\x8e\x8f\x13\x59\xfc\x20\x50\xf0\xae\xdd\x7b\xc7\xb0\x17\x5b\x52\x07\xc2\x8d\x42\x6a\x56\x83\x5f\x22\xdd\xdb\x88\x27\x5e\x5e\x75\xa5\xc2\x25\x3e\x22\x98\xfb\x36\x13\x73\x46\x79\x5b\xb7\x34\xb8\x3c\xcd\x08\xfb\xf2\xc9\x2c\x75\xac\xb4\xa3\x4d\x77\x6d\xcc\x9e\x36\x74\xab\xe6\x82\x3a\xd5\x7b\xbe\xe0\x63\x86\x7d\x77\x2d\x26\x4d\x56\x8d\xf3\x96\x7a\xf6\xea\xc2\x66\xca\xb1\x18\xd0\x61\xb5\x7a\x66\xc8\x7d\xc3\xf1\xb3\xf0\xef\xb3\x0b\x6f\x00\x2a\xea\x32\xfd\xed\xf6\x39\x5b\x61\xeb\xea\x65\xbd\x00\xcd\xbf\x6e\x5c\x84\xcb\x79\x81\x6e\x8d\x2e\x5c\xfa\xda\x9d\x85\x83\x4e\xce\x88\x2d\xe0\xd2\xd8\x09\x9b\xac\x94\xd0\x45\x7e\xcb\xe7\x03\x94\x0f\xdb\x66\x30\xae\x88\x71\xb6\xa1\x0c\xea\x44\xf2\x99\x4b\x5e\xec\xfd\xb1\x28\xd6\x49\x9f\xf8\x77\x60\x7f\x5a\x73\x52\x1e\x63\xe4\x91\x99\xa6\xb9\x0b\xfb\xf2\x19\xcd\xa7\x32\xc2\xc2\xbe\x79\x2d\x45\x7c\xe4\x50\x7d\x64\x0d\x47\x72\x92\x8c\xc7\x7a\x9c\x85\xfb\xc1\x38\x18\x76\xdb\xbd\xe0\x9d\xdb\x9f\xf4\xfc\x76\xaf\xf9\xce\xed\xcf\xde\x4d\x7a\xe3\x76\xc4\x47\x4e\x30\x1c\x07\xfe\xbb\x76\x6f\xdc\x7f\xc7\xde\x8d\xbc\xa0\x17\x18\x19\x6b\x47\xaf\x77\xd8\x97\xf5\x7e\x2a\x6f\x77\xdb\x0f\x89\xe7\xad\xed\xcf\xb8\x9f\x36\xb0\x1a\x01\x95\xf8\x75\x65\x65\xfa\x76\x7c\x02\x82\x02\xe3\x5b\xa4\xef\xca\xf3\xf2\xf1\x09\xf0\x6e\x38\x9c\x2f\xa8\x17\xcf\x8e\x4f\xc0\x08\x19\xc2\x53\x17\x9d\x1e\x13\x35\x91\xf0\xca\x3a\x93\x43\x89\x71\x36\x88\x5e\x46\x0c\xce\x57\x2f\x1a\xda\x2a\xe4\x02\x97\xa9\x9e\x71\x26\x43\x9a\x0b\xf6\x36\xa3\xd1\x9c\x8e\x5e\xc7\xaf\xc3\x31\xea\x5b\x6f\xf2\x9f\x7f\xcc\x71\xb6\xb0\x9a\xd5\x4a\x55\x94\x71\xde\xbd\x51\xe3\x27\xce\x17\xa7\x65\x92\x66\x8d\x60\xbb\x9d\xf0\x01\x37\x56\x86\xc2\x68\x56\x46\xd5\xdd\x26\x67\x38\xf0\x5a\x8d\x18\x12\x83\x61\x30\xe8\x0f\x26\x11\x1b\xf3\x61\xc0\xde\x35\x87\xfd\xc9\xe0\x5d\x7b\xf4\x6e\xd2\xd3\x57\xfa\x8c\xb5\x23\xb4\xb0\x65\x1a\x69\x4c\x4a\x74\x67\x44\x7b\xeb\xb0\x5e\x99\x0e\xd6\x61\x27\x27\x74\x94\xc0\x52\x72\x83\x7c\x9b\xf3\x16\xfc\x00\xa6\xc6\x2a\xf3\x7d\x3e\x08\x5b\x6c\x10\xbc\x83\xf1\x28\x2a\x38\x6e\xb1\xf1\x3b\x16\x0d\x03\xe6\xcf\xdf\xb5\xd8\xe8\x1d\x7b\x27\xf9\xbd\x91\x51\x2d\x95\x83\x8b\x19\x5d\x3e\xab\x65\xf5\x45\xbc\x29\x5f\x12\x3e\x8d\x44\x5c\x3d\x32\xae\xe2\x17\x6b\xf1\xcb\xb5\xf8\xbd\x1c\x6b\x3d\x59\xde\x99\x2c\xff\x44\x3e\x5b\x00\xd3\xf1\xe9\x90\xd8\x8c\xec\x16\x9d\x37\xe5\x1e\x5d\x66\x8b\xfd\xa4\x43\x5e\xbe\xab\x22\x9c\x3f\xae\x09\x09\x4c\xad\x2e\x09\x47\x8e\x11\x46\xeb\xca\xcb\xa6\x9c\x49\xa0\xb5\xf9\x21\x7b\xfc\xdd\x68\xc0\x2c\xc6\x27\x4c\x9a\x28\x53\x77\x8d\x2a\x53\x97\x93\x65\x27\x0d\x49\x13\x66\xea\xae\x51\x66\xea\xae\x91\x66\xea\xa6\x68\x03\xd5\x4f\x16\xc5\x6e\x13\xa6\xb5\x4b\x8a\x78\x4b\x7b\x26\x72\x5c\x14\x7e\xa4\x9b\xa3\xb7\x03\x88\x75\x76\x06\xa4\x4a\x51\x39\x72\xc1\x38\xe3\x6c\x88\xb8\x78\x81\xb1\x75\xc4\x90\xc7\x19\x02\x38\x50\xe9\xb6\xe8\x69\x9f\x59\x1c\x60\xb4\x26\xb0\x6d\xac\x39\xe0\xeb\xde\xb7\xa6\x12\x71\xeb\x7d\x9d\x78\x65\xeb\x36\x37\x56\xb6\x6e\xd3\x66\xce\x1a\x61\x49\xdc\xa3\x67\x72\x61\x11\x68\x4e\x6a\x3e\x6e\xac\x3e\x6b\x8d\xc1\xd6\xd5\x7a\xa5\xb4\x77\x71\xbf\xaf\x75\xf7\x0a\x8b\xe6\xf4\x2f\xe8\xc4\x9a\xc8\x8c\x13\x09\xac\x37\xde\xf2\x55\xd2\x6d\xae\x92\xad\x3f\xb6\x76\x5c\xd4\xfa\x87\x8c\x46\x28\xf8\x9b\xb4\xb9\x5c\xbe\xae\xac\xa6\x31\xa4\xe2\x06\x8e\x5b\x6a\x1a\x43\xd3\xb5\x9a\xc6\x4c\x42\xfc\x52\xd3\x98\x99\xbe\xd5\x34\xe6\x12\x12\x96\x9a\xc6\xdc\x0c\xad\x84\x55\x35\xf1\xdf\x77\x5e\x53\x75\x5e\x7a\xfd\x49\x2c\xa8\xed\x99\x83\x46\x2d\x2c\x7b\x8b\xc7\x0e\x6a\xea\x4a\x24\x8f\x35\x94\x93\xa0\xb0\x4f\x5f\x67\xa6\x9b\x67\x64\x6e\x7a\x79\x46\x5e\xda\xfe\xb8\x65\xee\xef\x31\xd2\x0a\xda\xcd\xd6\x98\x07\x57\xda\xcb\xe8\x1a\x85\x5c\xd4\xfe\x0f\x08\x44\x46\xf8\x75\x44\x47\x40\xa2\x91\x31\x9c\xc5\x34\xe2\x11\x93\xcb\xeb\xc3\x79\x4c\x25\x1e\x31\x7d\x6b\x14\x13\x2e\x2c\x8d\x8c\x99\x19\x5a\xa3\x98\x70\xcd\xd2\xc8\x98\x9b\x4d\x8d\x70\xa3\x7f\x40\xb8\xc9\x3f\x21\xdc\xc3\x19\x26\x3b\x09\xe5\x1a\x67\x3a\xe5\x0e\xe2\xdb\x40\x5b\xe8\xe8\x01\x1d\xfd\xbc\xbb\x8d\x8e\xee\x9b\x74\xec\xfc\xd7\x74\x9c\x15\x35\x3a\xce\x8a\x40\xc7\x79\x51\xa3\xe3\xbc\x28\xe8\xb8\xaf\x13\x72\x5f\x50\x72\x5f\x27\xe5\xfe\x7f\x4c\xcb\xb3\xca\xdf\x93\xb2\x5c\xd3\xc7\xe0\x61\x6a\x0c\x56\x52\x94\x3c\xaa\xa5\x28\x29\x3c\xba\xf0\x0d\x3c\x99\xcb\x08\x78\x1e\x16\x74\x55\x6a\x21\x86\x15\x79\x95\x2a\xc8\xc5\x6f\x52\xb9\x79\xfa\xb6\xf6\x40\x73\x48\xb4\xe3\xfe\xdf\x58\xf9\x53\xf8\xe1\xef\x79\x25\x3f\xe7\x99\x7e\x4a\xbb\x00\x97\x7c\x5e\x3d\xca\x90\xb4\xfb\xf3\x29\x43\xbe\x0c\x7e\xf7\xb2\x59\xe4\x4b\x0f\x30\x21\x65\xca\x0a\x3d\x84\x84\x50\x26\x28\xdd\xc3\x77\xea\xab\x77\x33\x07\x17\x26\x23\xcd\x17\x66\xc6\x75\xe4\x1f\x8a\xa4\x27\xb3\x09\x7e\x1d\x50\x86\x06\xa2\xb0\x11\x65\x68\x94\x58\xb4\x4f\xe9\xe0\x03\x68\x48\x8d\xab\x33\xb2\xd0\x23\x65\xea\xe5\x22\xe9\xf6\x7a\x8a\xc9\x94\xfa\xb9\x9e\xf4\x7c\x3d\xc5\xe4\x50\x4b\x5d\x60\xb2\xd0\x52\x17\xd8\x9a\x2c\x97\x68\x42\x07\x64\x40\x47\x64\x44\x27\xd8\x9a\x50\x17\xf1\xba\x14\x70\xc9\xcb\x45\xa6\xb8\x31\x58\x26\x87\xa2\x12\x17\x32\xf5\x5b\x01\x97\xfc\x5c\x4f\x26\x4f\xc9\x02\x6c\x44\x21\xa9\xf8\x95\x67\xcd\x47\xb2\x4b\x21\xab\x2f\xd3\xf6\xff\xe2\xf9\xf2\x3d\x99\x06\xf9\x24\x65\x66\x45\xd3\x23\x7c\x28\x93\x53\xd7\x9c\x90\xba\x6b\x5e\xac\x56\xa4\xa5\x93\x2a\x3e\xd0\x8e\xfb\x29\x40\x03\xd1\xa7\x53\x5a\xcc\x0f\xc8\x82\x4e\xf7\xa6\xa4\x4c\x07\x7b\x03\x72\x48\x17\x7b\x53\xb2\xa0\x1f\xf7\x06\x7b\x0b\x32\xa5\x1f\xf7\x76\xa6\x7b\x65\x6b\xb0\x47\xcb\x56\x08\x72\x93\x31\xdb\x3b\xcc\xb9\xc6\x6c\x6f\x91\xf3\x8c\xd9\xde\x34\xe7\x1b\xb3\xbd\x01\xb6\x26\x22\x75\x0e\xa9\x73\x48\x9d\x43\xea\x7c\x6f\x20\xb4\x55\x21\xb5\x99\x31\x23\xbe\x31\x73\xc8\x84\x87\xe7\xc4\x37\xe6\x0e\x99\xd2\xfd\x3d\x66\xcc\xf2\x9f\xf6\x5c\x63\x96\xdb\xdf\xf3\x8c\x19\x59\x08\x45\xaf\x31\x23\x65\xca\x7f\x72\x1f\x21\xd1\x37\x66\xf9\x8f\x80\x70\x48\x51\x7e\x9a\x13\x07\x07\xd3\xbd\x69\xfe\xd3\xde\x62\xaf\x8c\xf1\x07\xb4\xbf\x57\xe6\x9d\x89\xf2\xd3\xfc\x1b\xa9\x96\x98\x12\x87\xf8\xc7\x59\x39\x9b\x45\x87\xd4\xf8\xac\x60\x53\x09\x9b\x02\xac\xf0\xfd\x30\x9b\x2d\xfe\x38\xcc\x66\x03\x74\xc8\xa3\x53\x1e\x9d\xf2\xe8\x14\x5b\xa2\xda\x73\xa8\xf6\x1c\xaa\x3d\xb7\x16\x54\x2a\x8c\x2d\xa8\xf6\x1c\xaa\x3d\xe7\x44\x80\x6a\xcf\xad\x3f\x56\xdb\xfa\xff\xa2\xda\x87\x94\x0f\x1a\x18\x49\xa0\x7e\x02\x3f\x25\xf3\x34\x64\x82\xc9\xce\xa9\x2b\x86\x69\x82\x54\x4f\x43\x26\x78\x65\x0d\x18\x3a\x24\x87\xc6\xa9\x9b\x3f\x34\x66\x45\x30\x43\xe5\xf1\x3a\x8f\xcf\x93\xab\x52\x87\xab\x15\x30\x9a\x28\x66\xe7\xa4\x79\x9a\xe6\xe8\x60\x80\x9e\x08\xfe\xae\xbe\x47\x71\x75\x06\x58\x04\x75\x36\xaf\x31\xfc\x9e\xba\xe2\xb7\x2e\x7f\x05\x1b\x2c\x28\xee\x57\x90\xaa\x95\xab\x01\xb5\x1d\xce\xb9\xfd\x75\xce\xed\x73\xce\xed\x63\xcb\xe7\x9c\xdb\x1f\x30\xcb\xff\xd3\xf6\xb5\x35\x13\x19\xb6\x58\x4c\x5c\x0d\xc0\x68\xaf\xcf\x72\xea\x26\x78\x5a\x52\x83\x72\xa3\x76\x2f\xd8\x66\x9d\x21\x32\xdf\xbe\x91\x59\xe4\x65\xc3\x35\xa7\xbe\xc2\xd8\xa1\x43\x16\xf8\x35\xa4\x9e\x31\xb8\x50\x0c\xb5\x23\x62\x1d\x11\xdb\xff\x8b\xef\x8c\xc3\x6c\x96\xff\x74\x4a\xda\xf7\xdc\x4a\xce\xe7\x9f\x0b\x72\xd5\x83\x1c\xf2\x73\x0c\xe7\x76\xe0\xeb\x66\xf1\xab\xcc\x23\x32\xbf\x9d\x0b\xaa\x8b\xdc\x7c\x80\xb1\x29\xb3\x7c\xfb\x47\x39\x72\x3c\xc7\x37\x99\x45\x7c\xee\x0f\x75\x63\x79\x1f\x0b\xc2\x98\x1a\x4e\x25\xa6\x17\xff\x23\xd1\x47\x41\x2e\xe4\x7f\x3a\xfc\x4f\x8b\xa1\x05\x5e\x23\xe6\xf5\xcb\x5a\x1f\xa6\xfa\xa0\xd5\x5c\xef\xb8\xd8\x82\x8e\x0f\xe1\xee\x7f\x2f\x91\xe8\x02\x89\x90\x47\x74\x71\xc4\xf4\xf9\x6c\x1a\x91\x58\x1a\xb1\x87\x8e\x19\xc2\x94\x52\xc0\x66\x69\x64\x1f\x38\x66\x13\xff\x87\xf2\x48\x34\xd8\x2a\xdb\x69\x42\x85\x2e\xc3\xed\xcc\x4d\x4d\x88\x93\x13\x2a\x96\x00\x5b\xb1\x60\xa1\x40\x37\xcd\x94\x64\x71\xb6\xb9\x4b\xd2\x0e\x1a\x84\x11\x94\xfa\x94\xfe\x1d\xfd\x0b\x5a\xd1\x71\x18\x6b\xaf\x41\x0b\xb1\xa5\xff\x5f\xee\x42\x66\xda\x2e\x64\x06\xbb\x90\xb9\xb6\x0b\xe1\x1d\xe1\xcd\x50\x33\xee\x88\xa6\xdd\xf6\xa1\x27\xfe\xb3\x9d\xc8\x7d\x25\x5d\xdb\x41\x95\xd8\xc7\x5d\x46\x5e\xca\x64\x56\x26\xf3\x32\x59\x94\xc9\x41\x99\x54\xca\xeb\x7c\x50\x49\x36\xf1\x63\xe9\xde\x83\xc9\x48\xa5\x3d\xf4\xa2\xc0\x74\xc9\xe1\x89\xe9\x91\x68\x62\xfa\xe4\xa5\x61\x46\xe4\x26\xf0\xc6\x66\x8f\xdc\x05\xb3\xb1\x39\x10\x5c\xf6\x74\xce\xfe\x20\xcf\xe9\x17\xf9\xc1\x77\xc0\xb0\x39\x81\x77\xa4\x85\x0f\x81\x1d\xe1\x44\x20\x51\x32\xc7\xc9\x5e\x6c\xd0\xa1\xc3\xb6\x48\x7f\x23\x11\x80\x9b\x31\x20\xfe\xf1\xee\x3b\x06\xa7\x2a\x33\x07\x3d\x4d\x98\x0c\x1d\x1e\x27\x17\x4a\xfc\x5d\x71\xa3\x44\x8b\xde\x2d\x97\x9e\x74\x73\xe3\xa7\x34\xd9\xae\xb2\xce\x0b\x55\xe1\xed\xb8\xcc\x4e\x1c\x3a\xd2\x4a\x0f\xd3\xa5\x87\xa2\x74\x57\xfa\x50\x0b\x53\x2a\x27\xde\x03\xd0\x08\x08\xc8\x7b\x3c\xbc\x6f\x67\x0e\xaa\x56\x31\x81\x40\xef\x80\xc9\xd0\x49\x55\xbb\x15\x93\xfe\x8c\xa7\x7d\xe6\xa4\x9a\x72\x5f\x1f\xe9\x72\xb5\x2c\x3c\x8a\xcb\xec\xc7\xa1\xd3\xea\xdf\x91\xc8\x95\xce\xe6\x74\x12\xf5\xb6\x94\xde\x8d\xcb\x1c\xc4\xa1\xb3\xb5\xd2\x77\xde\x28\xfe\x2c\x5d\xfc\x40\x3f\xcc\x76\xa1\xea\xad\xbf\xa1\x01\x53\x77\x99\x70\x4a\x2b\x95\x36\xb5\xf4\x4b\x27\x55\xf3\xf0\x18\x0e\x94\x66\x0e\x0a\x72\xb5\x2e\x38\xf2\x90\xb1\x7a\x97\xc1\x78\x02\x5f\xff\xc2\xa5\x74\x98\xcd\x36\x13\x83\x30\xc0\x3a\xef\x32\xbc\x5c\x1e\x97\x49\xa4\x20\x97\x0a\xd2\x53\x90\x0b\x80\x9c\x94\xc9\x40\x41\xae\x14\x4e\x40\x6d\xcd\xf3\xab\x03\xa7\xb8\x98\x8c\xa8\x6b\x54\x87\xa0\x1d\xa5\xa3\xd2\x8d\x1d\x38\xe6\xb9\x1d\x38\x78\x42\x5d\xf1\xf2\xc0\x89\x3c\x5a\x76\x69\xc0\x94\x6b\xc1\xc6\x89\x10\xfe\x27\xd4\x9b\xb3\x1c\x1a\x95\x1e\x72\x39\xf3\x36\x97\x93\xf7\x9f\x9e\x4f\xc8\x44\x06\xcb\xe0\xc2\xce\x95\x3e\xa6\x22\x19\xac\xd4\x48\x4f\xdd\x4b\xaf\x91\x01\x5f\xd5\x93\xc2\x8f\xaa\xd8\xea\xf0\xa4\xf6\x01\x23\xa1\x0c\x4b\xa7\x75\xe1\x1a\x5e\xa8\xf0\x9a\x32\x2c\x7d\xc9\x81\xf7\xfc\x0e\xb6\x76\x20\x10\x8a\x23\x4a\xd1\x3c\xea\x42\x03\xa9\x6b\x79\xf6\xc8\x77\x76\x29\xad\x55\x2d\xec\x51\xcf\x7e\x0a\x1c\x70\xb8\x70\xe3\x3a\xc8\x3b\xc6\xcb\xa5\x67\x79\xf6\xb1\x0b\x0f\x88\xd8\xf7\xae\x83\x57\x1e\x6d\xd5\x72\x93\xdc\x65\x60\xf1\x31\xe4\x49\x97\x83\x87\xc7\xbc\xf3\x41\x9f\xef\x67\xb3\xbe\xdd\xf2\x1c\x54\x20\x9f\x31\xa5\xb4\x55\xe3\x38\xf7\x1e\xdc\xc0\xd3\x95\x7c\xba\x37\x5c\x31\xce\xaa\x78\xb9\x2c\x90\x40\xc4\x3a\x10\x83\xa3\xff\xe5\x32\xf6\x02\x03\x49\xfe\x82\xf7\x27\x04\xbd\x24\xd8\x15\xd9\xe5\x88\x0a\x93\x84\x20\x09\xf6\x04\x4e\x87\xda\xd2\x94\x54\x8d\x81\x08\xc6\x00\xe9\xd1\xa8\x54\x65\x76\xc7\x31\xbb\xfc\x2f\x9c\xc6\x61\x97\xf6\xd2\xe3\xa0\xa7\x75\xc1\x19\x38\x64\xf6\xf9\x18\x88\x4a\x0f\x2c\x97\x33\x4f\x19\x1f\x05\x3d\x39\x0a\xa4\xb3\xa2\x81\x96\x25\x98\x30\xe9\x81\x4e\x7a\xd6\xb2\x12\xcf\x5a\x7c\x0e\x24\x98\x4d\x8e\xe9\x4b\x7f\x5a\xa1\x0c\x76\x8f\x95\x4b\x1b\x71\x39\x48\x90\x66\xa4\x65\x03\xef\x59\x3b\x13\x0d\xe2\xf3\x82\x34\x07\x5a\x56\xec\x40\x2b\x50\xbb\xb7\x04\x19\x1c\x66\x35\x35\xc0\xec\x98\xef\xb9\x52\x71\x6b\xaa\x39\xcb\x12\xbe\x14\x06\xf2\xd7\x57\x0e\xcb\x82\x6c\x16\x8d\xa4\x5f\x2e\x48\x19\x61\x3e\x44\x85\xfb\x05\xf8\x9d\xca\x2c\x72\x74\x4a\xda\xd3\x9e\xa0\x3e\xed\xfd\xf3\xf1\xd9\x4b\xc6\xa7\x60\x21\xa2\x5f\x5a\x35\x78\x74\xd1\xe2\x8c\x4a\x39\x63\x3d\x03\xcf\xaf\xe2\xec\xc9\x68\xb1\xd1\xc1\x78\x3c\x6c\xbb\x93\x71\xc0\xf3\xa8\xb1\x7a\xd6\x14\x74\x99\xd2\xd7\x4c\xd8\x8e\x22\xc3\xeb\x47\xfd\x61\xc6\x74\x09\x8f\x55\x78\x44\x86\x4d\x97\x08\x8c\xa6\x7c\xb8\xcf\x08\x87\xfd\x6e\x66\x13\x3c\xee\x6f\x01\xce\x8a\x5b\x80\xf3\x6d\xc0\xd9\xfe\x36\x4c\x0d\xd8\x1f\x30\xaf\x3d\x9e\x67\x4c\x8f\xec\x70\xc0\xa5\x88\x9b\x9e\x48\xcf\x6b\xe9\x32\x68\x0e\x48\x46\x78\x9b\x51\xcd\xf3\xa5\xf7\x19\xd1\x40\x15\x33\xfd\x18\x6f\xad\x91\x5b\x12\x78\x33\xb7\x80\x79\x43\xb7\x80\xe7\xdb\xc1\xbc\xb1\xdb\xb0\x53\xe0\xb8\x41\x91\xac\xa7\x6a\x71\xa4\x50\xf2\x1a\x8a\xca\x05\x12\x6f\x26\xf6\x3c\xdf\x00\x01\xb8\x17\xe7\x88\x93\x67\xe6\xb6\x4b\xf0\xae\x14\x6e\x2d\xe5\x25\xd8\xc3\x2b\x32\x7f\x1b\xb5\xd1\x92\xa8\xe0\x31\x7d\xb5\x22\x0b\xfa\xba\x22\x65\xfe\xe7\x90\x16\xc8\x05\x2d\x90\x73\x1e\xb9\xe1\x7f\x6e\x69\x81\x3c\xd0\x02\xe9\x32\x1e\xab\xc2\xdf\x53\xc6\x81\x8c\xaa\xa7\x89\x5f\x8f\x5a\xcc\x9c\x90\xc7\x17\xfd\x9b\x01\xdf\x8b\xf0\x85\x7b\x27\xe0\x22\xa2\x00\x58\x1e\x0f\x60\xcb\x57\xf1\x48\xc4\x7b\xe2\x67\xa2\xc0\xca\x64\x74\xe6\xa0\xd1\x88\x61\x72\x2e\xc2\xc3\x91\x38\x41\x9a\x66\xb3\xe7\xa2\x49\x5d\x26\x52\xc6\x23\x06\x5c\xf4\x46\x44\x27\x32\xfa\xff\xd0\xf6\xe6\xcb\x6d\xe3\xca\xe2\xf0\xff\x79\x0a\x2b\xe5\x8f\x87\x18\xc1\x1c\xc9\xce\x24\x33\x64\x30\x2a\xcb\xf2\x6e\x29\x89\x9d\x58\xb6\x75\x58\x53\xe0\x26\xc9\xa2\xf6\xc5\xb2\x4d\xdd\x67\xff\x0a\x8d\x85\xa0\x44\x39\x39\xe7\xde\xdf\xd4\xc4\x22\x41\xec\x68\x34\xba\x1b\xbd\xdc\x90\x56\x9f\xe2\x6b\xbc\xc0\x75\x89\x55\x6f\x49\x28\x4e\xd6\x90\xdc\x56\xaa\xad\x1b\xd7\x7e\x69\xdd\xb8\xe8\x82\xd5\x94\x41\xa9\xa1\x86\x5e\xc0\x17\x3a\x6b\xf0\x82\x12\x8f\x21\xd6\xdb\x4a\xa3\x58\xb4\x6b\x0c\xad\x4a\x57\x85\x17\x22\xcb\x19\xd5\x8f\xc3\x73\xe4\x9c\xc9\x85\x61\xf4\xc4\x99\x9c\xfa\x6b\xf9\x7c\xdb\xc1\x0b\xf9\x7c\xdd\xc6\x75\xe1\x68\xf5\x4c\xa8\xfe\xf0\x4e\x92\x10\xba\x49\x42\x67\xaa\xe1\x9f\x29\x99\x02\xfe\x61\xbf\x0a\xff\x4c\x9d\x29\xe0\x9f\x10\x4f\x39\xfe\x91\x2e\xcd\x3b\x97\xc5\x0b\xaa\xb9\x74\xcc\x62\x9a\xc3\x63\x85\x69\x0e\x8f\xd1\x0a\x77\xab\x1b\x12\x3d\x1c\x22\x36\x2b\xc0\xd5\x08\x7b\x2d\x8f\x84\x2d\xcf\x4d\x92\x45\xcb\x73\x51\xc5\x94\x37\xd4\xf8\x9d\xd0\x6b\xc2\xa7\x1d\x4d\x32\xa8\xdd\x5f\xed\x74\x07\x3b\x7d\xca\xc8\xfe\x3e\x95\x4a\x46\xe2\xca\xb0\x4f\x5b\xd4\x75\x3c\x36\x32\xee\x73\x0e\x39\x41\x18\x87\xb3\x70\x07\xbe\xac\x18\xfc\x39\x00\x90\xa9\x6e\x14\xab\xae\x8e\x44\x55\x10\xdf\x8a\x92\x7a\xcb\x77\x31\x55\xd5\x30\x3a\x9d\x57\x53\x07\x37\x65\x37\xa4\xe4\xd4\xf5\x4a\x02\x56\xc9\x0b\x7a\x81\x3a\x02\x1e\x23\xeb\xa5\x15\xb8\xd8\x57\x75\xf8\xaa\x0e\xf6\x01\x39\x35\x52\x72\xd8\xf6\x11\xe2\xa6\x67\xc6\x08\x55\xab\x6f\x5d\xdf\x4b\xf2\xc2\xcf\xec\xda\xe6\xf1\x1a\xcb\xa1\x36\x6d\xb0\xb6\x69\xef\xb2\x39\x83\x8d\xed\x3d\x95\x39\x21\xaa\xcc\x8a\x3b\x59\x79\x5d\xe1\x01\x79\x65\xe8\x53\x5a\xc9\x38\x74\x6c\xc6\x69\x3f\x19\xf5\x39\x47\xaf\x73\x32\x4f\x92\x14\x7a\x9f\x8f\xd9\xa8\xe6\x8c\x42\xf4\xf9\x4f\xc0\x7f\xa8\x75\xff\xc4\x9e\x18\xc1\x38\x30\x8c\x39\x9b\x20\x46\xcf\x0f\x0c\x63\x20\xdc\x16\x0b\xd6\x6d\xbe\x42\x4e\x6c\x75\xb5\xd8\xf8\x1c\x94\x22\xf4\x4a\xad\x6e\xd5\x8c\xb0\x0f\x82\xa5\x81\xe2\xe9\x77\x62\x98\xcb\x97\xbc\xb9\x14\x08\x07\x14\x15\xb2\x15\xa2\xd7\x80\x04\x7a\xdf\x87\x27\xd2\xc3\x8c\x42\x90\x81\x98\xea\x18\x39\x71\x3a\xad\x81\x98\xd6\x34\xf5\xf6\x5c\x3a\x0a\x3e\xd7\xf3\xca\xd4\xe6\xb9\x9a\x82\x80\x07\xac\x87\xe8\x11\x7c\x0a\x7c\xc3\x90\xbe\xe3\x94\x18\x07\x77\x3b\x6b\xbd\xc5\xb1\x18\x7e\xcc\x87\x8f\x04\x00\x55\xff\x43\x00\xaa\x4a\x00\xaa\x5e\xfe\x04\x80\x6a\x32\x67\xed\xf2\x27\x00\x74\x24\x73\x1e\x5d\xae\xb1\x90\xeb\x39\x8f\x65\xce\xe3\x4b\xfc\x4e\xc0\xda\x80\xc1\xda\x88\x70\x5b\xaa\xe5\xbe\x1d\x70\x83\xaa\xe7\x7d\x3b\x06\x98\x1b\xa4\x43\x1b\xe0\x11\x5e\xa0\xd7\x05\x59\xe8\xeb\x76\x73\xca\x26\x62\xc1\x20\x2b\xe0\x3f\x3e\xff\x89\xf9\x0f\xcc\xfb\x82\xfb\x96\x1b\x19\xc6\x42\xcc\xfb\xc8\x30\x46\x82\x7e\x93\x4a\x56\x2b\xe4\x0c\x7e\x01\xf2\x46\x29\xe4\x0d\x60\x11\x6a\x6c\x11\xda\x67\xb8\x5a\x7d\x4b\xcc\x83\x5e\x3d\xe2\x59\x5f\x47\x29\xfa\x20\x2d\xb0\x33\x01\x72\xff\xc2\x75\xa2\xcf\xed\xd4\xd6\x64\x4a\xbc\x56\x04\xc4\xfb\xb4\x15\x86\x8c\x13\xf9\x93\x71\x22\x47\x43\xa1\x28\x31\x27\x53\x50\x32\x9e\x86\x8c\xae\x2d\xce\x5b\x65\x17\xbf\xb0\xdf\x7d\x17\x4f\xd9\xef\x81\x8b\xab\xec\xf7\x83\x8b\x6b\x84\x5a\xa3\x86\x59\x9c\xb7\xfe\x70\x41\xe0\x8a\x1b\x2a\xe5\xa3\x48\x99\x93\x42\xa1\x38\x6f\x7d\x72\xf1\x82\x2c\x8a\xfc\x56\xa9\xa1\xae\xa2\xd0\x6f\x53\xfc\x42\x5e\x8a\xfc\x7a\x49\x4f\xaf\xe2\x1a\x99\x57\x1a\x7b\x35\xbb\xb6\xd7\x70\x4a\x7f\xd7\x0c\xc3\xac\x89\x7b\xb2\x29\xf1\x8e\x8a\xd3\xe2\x34\x2c\x56\x8b\x5e\x4c\x8b\x1d\x0a\x11\x14\xde\xd5\x90\x10\x7c\xce\xe1\x61\xc1\xfe\xbc\x70\xfd\xe4\xa9\x32\x13\x0a\xa4\x8b\x07\x79\xc5\x36\xfc\xa8\x9f\x2f\xca\xab\xe6\x88\x9d\x2f\x29\x34\x0c\xce\x91\x13\x26\x09\x77\xf7\xdc\xc6\x3e\xf8\x9e\xf0\x18\x08\x8c\x70\xa0\x39\x31\x1b\xad\xf0\x59\x87\x82\xf5\x9f\xe3\x99\x47\x6c\x05\x4f\xfb\x34\x67\x09\xdf\xc2\x20\x1e\xa1\xd6\xf0\xa3\xc9\x77\x24\xdb\xd4\xde\xda\xa6\xd6\xf5\x9f\x32\x9b\x9a\xca\xe3\xd1\x63\x90\x15\x62\x1f\xd3\x74\x53\x0f\x40\x7b\x34\x1f\x93\x9d\xeb\xc7\xa3\x52\x9a\xa1\x6c\x77\x7d\x3d\x06\x1a\xc6\xe7\x6f\xdf\xf8\x5b\xc0\xdf\xae\x8f\x05\x5f\x0a\x6f\x37\xfc\x6d\xc4\xdf\x2e\xf8\xdb\x94\xbf\x5d\xf2\xb7\x39\x7f\xbb\x82\x37\x87\xfb\xff\x30\xeb\xfc\x4d\x0e\x29\x49\xfc\x24\x61\x38\x34\x49\x46\x49\x32\x4d\x92\x79\x92\xd0\x15\x1e\x68\x0b\x95\xdd\xff\xd0\xc3\x77\xac\x53\x9e\xd6\x45\x81\x2e\x45\x17\x85\x0c\x44\x75\xd1\xcb\x74\xd1\xcb\x74\xd1\x4b\xbb\x88\x17\xfc\x8d\x77\x11\xbf\x08\xc4\xdc\x41\xb8\x2a\xaa\x6f\x23\x5c\x53\xa8\x1d\x37\x14\x3e\x67\x44\xec\x67\xf2\x52\xa9\xd9\xb5\xe2\x0b\xa3\x66\x3f\x93\x6a\xa5\x61\x37\x8a\x55\xfc\x22\xcc\x14\x5e\x58\x2d\xfc\xb1\xca\xed\x1c\x8a\xf1\xdf\x2f\x88\x8d\xac\x4e\x5e\x7e\x67\xaf\x08\xfb\xc4\xff\xad\x8e\x03\x12\xfc\x56\xc7\x31\x89\x7f\xab\xe3\x01\x19\xfc\x56\x77\x46\xc5\xf9\xdf\x2f\x86\x61\x42\xce\x51\x71\x8e\xf0\xe8\x37\x52\xc7\x53\xf6\x67\xce\xfe\x2c\x7e\x23\x75\xe4\x04\xc5\xe9\xdf\x55\xc8\x56\xfd\xdd\x0c\x8a\x53\x84\x7d\xf6\x31\x60\x7f\x54\x01\xe4\x0c\x8a\x8b\x34\xdb\xa0\xb8\x40\x38\x66\x1f\x07\x6b\xb5\x09\x6a\x0b\x34\xe7\x4d\x8f\x4b\xa7\x11\x98\x0c\xd6\x8a\x2f\x7b\x31\x6e\x20\x88\x96\x2a\x5e\x8a\x03\x90\x26\xed\x7f\x2a\xe1\x12\x2e\x94\x10\x5c\x02\x99\x30\x1d\xc5\xea\xde\x22\xcd\x3b\xe7\x09\x78\x8e\x17\xb8\x84\xff\xca\x64\x1e\xb1\x6f\x32\x2b\xbc\xec\x4d\x31\xbf\x53\xc6\xe5\x3f\x4b\x40\xe1\x89\xbc\xb8\x51\x0c\x64\x4e\x9f\xbd\xc0\x6e\x60\x99\x58\x17\x0a\x25\xc4\xcd\x79\xc4\x76\x38\x66\x9b\xb3\xd6\xa7\x38\x6f\x83\xb2\xf3\x2d\x77\x8b\x06\xdc\xbb\x21\x47\x11\x20\x6f\x6d\x1c\x23\x3c\xe5\x8f\x5f\x8e\x19\xc6\x0b\x24\x88\x2c\xf8\x23\x03\x91\x17\xfe\xc8\x40\xa4\xca\x1f\x19\x88\xbc\x30\xa8\x98\x57\x5e\xec\x97\xe2\x1c\x57\xd9\xcb\xa2\x52\xb5\xab\xc5\x05\x9e\x0b\xb8\x98\xb3\x5a\xe4\x5d\xa7\x14\x35\x8e\x08\x21\xdf\x95\xa4\x71\x4a\x40\xd2\x58\xa0\xd6\x79\x87\x9a\x01\xaa\x98\x03\x32\xd0\x71\xd7\xf1\x39\xc2\x03\x41\xfa\xbf\x88\xc7\x66\x07\x57\xc5\xe3\x2d\x5c\x7b\x0e\x04\xd9\xbf\x90\x9e\xc7\x47\xaa\x01\xd1\xdc\x40\x50\x22\xca\x37\xf9\x34\xdb\x05\x91\xa3\x79\x8e\x19\x90\x31\xd4\x38\x00\x02\x03\xd9\x66\x40\xa8\x35\xf8\x68\x06\x88\x6d\x43\x86\xda\x62\xa0\xb4\x90\x13\xb3\x42\x1c\xb7\xc5\x86\x01\x1e\x0a\x06\x9a\x9f\xc9\x0c\x6e\x53\xb7\x03\x10\x8c\x83\xe1\xb7\x11\x7e\x27\x2a\x12\x96\x57\xb1\x30\xbb\x6a\x1c\x73\xb3\xab\x2f\xe2\xf7\xab\xf8\xfd\x26\x7e\xaf\xc5\xef\x8d\xf8\xbd\x10\xbf\x97\xe2\xf7\x4a\xfc\xd6\x8f\xed\x51\x1a\x8a\x92\x10\x32\x38\xaf\x68\x83\x81\x18\x22\x30\xe7\x58\x1e\x0c\x01\x42\x76\x4c\x08\x69\x1c\x57\x46\x62\xbe\x24\x90\xf0\x0f\x5f\x8e\x19\x81\x20\xa2\x1f\x0a\x98\xc9\xb8\xef\x8c\x2f\x78\xdb\x3d\xf1\x1b\xbc\x50\xfe\xe0\xcb\x87\xbe\xf8\x12\xc9\x84\x50\x3e\x0c\x2e\x6c\xdf\x3a\xee\x50\x38\x94\x06\xb2\x5a\x69\xe6\xcc\x6d\x27\x84\xa1\xc4\xce\x68\x32\x1c\x85\x93\xd9\xf3\xce\x70\xb0\x33\x09\xfd\xd9\xce\xfb\x7f\x15\xe3\xe2\xbf\xde\x5b\xff\x72\x24\x1b\x71\xce\xa9\x40\x7c\xdc\x7f\x53\x13\x38\x43\x09\xce\xe6\x8c\xe5\x85\xc7\xa7\xf4\xb1\x7e\x82\x34\x9f\x5c\x20\x27\x8f\x96\xdc\x99\xdf\xdb\xe4\xe2\x7c\xae\x04\x94\x8d\x6c\x1d\xef\xbe\x73\x9d\x9a\x1f\x1b\x35\x9f\xd0\xcd\x9a\x37\xc9\xcb\x45\x5a\xf3\x72\x4e\x7f\x22\xc6\x9f\x8a\xce\xe6\xd0\xa1\x85\x12\x98\x72\xb1\xcd\x7d\x8a\xc0\xb1\x2a\xe4\x3c\x3c\x45\x1b\xc6\x34\x69\xd6\xe8\x12\x58\x43\x70\x53\x18\x2e\x67\xb5\xd0\x1f\x4e\xc0\x66\x82\x44\x97\x99\x0b\x07\xa1\xe6\xc3\xed\x45\x47\x30\xab\x4f\xac\xdf\xf0\x38\x7d\xe2\xe2\x85\x06\xff\xf2\x63\xaa\x46\xd1\x10\x53\x61\x36\x48\x03\xe8\xb9\x89\x8c\xae\x5c\xe7\x79\x19\xf6\xb9\x26\x85\x92\x53\x66\xc0\x0a\x5a\xe3\x90\xb7\xe4\xb2\x64\xe1\x61\xed\x86\x5c\x57\xbe\xd8\x0d\x7c\xcb\xcb\x30\xd6\x65\x4e\xe6\x8c\xcd\xfa\xee\x83\xc5\xd9\xb4\x32\xb7\x53\x3c\xc3\xda\x9f\xc3\x78\xc0\x00\x60\x30\x23\x37\x5c\x98\x4a\x9f\x29\x38\xc0\x9d\x0b\x24\xc4\x2f\x18\x6f\x2b\xb2\x56\xfb\x56\x7c\x6b\x76\xc4\xb7\x7a\x45\xf6\xd2\xae\xa7\xc1\x68\xee\xa7\x14\x39\xef\xe6\x6c\xd6\x9e\x42\xaf\xd7\x9d\x9d\x0c\x07\xb3\x9b\xfe\x70\x38\xeb\x74\x07\x6d\xd2\x9d\x50\xc9\x10\x8e\xb8\x50\x67\xce\x88\xf3\x01\xff\xf1\xf8\x8f\xcf\x7f\x02\xfe\x53\x27\x73\x67\x6a\x18\x75\x81\x83\xa6\x86\x01\x52\xd9\x3a\x23\x32\xb9\x56\xf8\x35\xd8\x9a\xdc\x10\x46\x17\x80\xe9\xc6\xcd\xe7\xb9\x73\xc3\xc8\xe9\x5b\x5d\x6e\x5d\xa5\xc8\xb9\xcd\x8c\xbd\xd1\xba\x71\x9d\x5b\x31\x62\x39\x52\xc4\x53\x9a\x1d\x2c\xc7\xc7\x67\xba\x4f\x49\x3d\x8d\x6d\xdb\x3a\x74\x9d\xd2\xe7\x1b\xc3\x30\xfb\xb4\x48\x6a\xa2\x50\xff\x04\xf7\x69\xf1\x07\x72\xea\xac\x8b\xb7\xc8\x99\x32\xca\xf6\x16\xad\x6a\xe4\xba\x32\xb5\x5b\x75\xd7\x69\x08\x8f\xed\x25\xcc\x15\xa6\xca\xbc\x19\xff\x14\x71\x2f\x93\xdd\xc8\x8c\xa8\xd9\x40\x49\x52\x18\xb0\x5f\xd4\x20\x25\x67\xca\x57\x77\x7c\xc9\x0d\x61\x34\x8c\x0e\xa8\x76\xba\x51\xe7\x14\x21\x1c\x51\x73\x2a\xaa\x99\x22\x34\x25\x25\x2e\xcb\x99\x92\xa3\x9a\x73\xa3\x8f\xc5\x99\x2b\x80\xdb\xbb\xb1\x9e\x9d\x5b\x52\x6b\xd5\x84\xd1\xba\x8e\x59\xc3\x2a\xad\xa4\x5f\x26\x9e\x6b\x22\x6b\x36\x1c\xed\xd5\xd3\x67\xfb\x9d\xca\x90\xd6\x6f\x3d\x43\xb5\xd7\xaa\x95\x8d\x41\x5c\x93\xeb\xe2\x7c\xef\xa6\x75\xe8\xfe\x36\x55\x6e\x0a\xd8\xa7\xa3\x9a\xf8\x76\x2b\x5d\xc5\x4f\x86\x4f\xef\x7f\x0c\x26\xa1\x3f\x6c\x0f\xba\x2f\x61\xb0\xb3\xa0\x71\xb7\x3d\x60\x3f\xf3\xd0\xde\x79\x5f\x9c\x3a\xf5\x54\x6c\x36\x25\x25\x87\x03\x07\xeb\x95\x33\xfd\x7c\xe3\x4c\x8b\x45\x34\x27\xb5\xd6\xd4\xe5\x71\x38\xe2\x13\xbc\x37\xe7\x26\x31\xfd\xd1\x7c\x16\x06\xdf\xc3\xe5\xec\x2a\x1c\xb4\x67\x1d\x13\xfd\xd6\x28\xfe\x10\xf1\x3a\x78\x85\x62\x87\x7f\x3b\x97\xd7\x04\x35\xc3\x28\xc1\x5f\x68\x95\xc7\x77\xac\x31\xb6\x46\xc2\x93\x7a\x6e\x76\x90\x1e\x1f\xb0\xae\x8c\xe0\xf0\x9c\xbc\xbe\x8f\x86\x83\x99\x15\xd1\x7e\x37\x7e\x06\x39\xfd\x70\x30\x3b\x81\x37\xf1\xd2\xa0\xfd\x10\x84\xe5\x2c\xdf\xb4\xfb\x12\xbe\xb7\x7d\xac\x82\x5a\xfb\xe2\xc3\x13\xa8\x3f\xbc\xb7\x03\xf8\xd4\xe4\xca\x10\x01\xee\xce\x68\xdc\xf5\xed\x18\xcf\x07\x41\x38\x81\xd0\xea\x03\x60\xb1\xa7\x6c\x87\x4d\xf3\x39\x5f\x76\x86\x67\xb8\xdf\x39\x38\xd6\xf1\x01\xab\x24\x09\xfb\xf5\x4f\xf9\xef\xbb\xf1\x25\x97\xd7\x39\x91\x61\x44\xad\x1f\x9e\xeb\xa0\x08\xa4\x60\xf0\x82\x1c\x8f\x8c\xa4\x93\x75\x06\xe0\x05\x42\xa4\x29\x47\x38\x99\x0c\x27\x3b\xdc\xa0\xa4\x3b\x68\xef\xb0\xfd\xf9\xde\x59\xa5\xab\xfd\xaf\xbc\x1c\x3b\x21\x37\xf2\xd8\x79\xea\xce\x3a\x3b\x7e\x87\x0e\xda\x61\x90\x9e\x97\xef\xff\x55\xf4\xc5\x39\x99\xb5\xce\x3b\x64\xc7\xe5\x86\x96\x43\x0e\x69\x99\x2a\x3a\xac\xdf\x09\xa3\x57\x9f\xf8\x3a\xed\x06\x11\x9a\x18\x4e\xf3\x79\x90\x10\x8f\x71\x80\x1c\x59\x79\x8c\x2f\xe4\x71\x3a\x94\xbe\x05\x08\x23\xe9\xd8\xa4\x0c\xff\xd1\xcc\xd4\x8b\xfa\x3d\x22\x9b\x4a\x6f\x7e\xc0\xc8\x44\x33\xd0\xf0\xb8\x89\x06\x25\xd4\xea\xb7\x5b\x8f\x81\x6b\x22\x87\xb6\x82\xb1\x66\x0a\xaf\x34\xc0\x77\x28\x8c\xfd\x84\x8d\x7d\x74\x81\xff\x23\x45\x0f\x3c\x95\x42\x87\xd7\x95\x33\x6f\x51\xcb\xbf\xb5\xfa\x1d\x97\x78\xec\xa5\x35\x3c\x74\xe1\xed\x9d\x0f\xdf\x6a\xa7\xf0\x16\xc0\x4b\x3c\x87\x97\x18\x5e\x9e\x9a\xf0\x32\x80\x52\xa7\x2f\xbc\xd4\x08\xde\x9e\xc4\xdb\x54\x17\x03\x7a\xe6\x29\xeb\xed\xc5\x39\x7e\x39\xc6\xa3\x0b\x7c\x96\x4b\xff\x73\xe1\x58\x56\xb5\x20\x6b\x41\x24\x82\x60\x68\x31\x38\xa6\x0b\xfd\x6e\xf0\xf2\x62\x5b\x14\xea\x1b\x56\xc7\xeb\x74\xd1\xb6\xbd\x95\xb8\xef\xd3\xae\x28\x4f\x90\xb8\xa2\x8e\x52\xd3\xa1\xda\xba\xe9\xd0\x97\x26\x69\xac\xa7\x0d\xab\xa4\x9a\x63\x62\xb4\x58\x4f\x1b\x7f\xd4\xcd\x8e\x94\xc9\xd2\xcb\x7a\xda\xe4\x23\xa9\x6b\x69\x51\xeb\xc7\xd8\xcd\x98\xc4\xf0\x14\xdd\x54\x88\xa7\x9c\x6f\xe4\x39\xd3\x52\xb8\xd5\xd8\x48\xd9\x79\x8a\xed\xc6\x4e\xdc\xac\xae\xc5\x3b\xed\x1a\x5c\x14\xd2\xed\x77\x3e\x93\x60\xcd\x61\x71\x6b\xf8\xec\xb6\x02\x17\x98\xa1\x8b\x89\x40\x02\x37\x60\x29\x15\x2e\xbb\xd3\xd9\x74\x87\x0e\x02\xe9\x21\x93\xee\x4c\x67\x94\xed\x6c\x30\xa5\xb2\xde\x3b\xac\x8c\x74\x40\x29\x6a\x22\x9e\xe6\x8c\xeb\xdb\x88\xdb\x4f\x61\x95\x81\x9b\x70\xd3\xd6\xdc\x67\x60\xc6\x70\xd7\x91\x61\x80\x35\x54\x0d\x8b\x55\xca\xb7\xb6\x7a\x14\xdf\xc7\x1f\xf9\xfb\xc9\x52\xb8\x12\x9b\x7c\xdc\x34\x9f\xf2\x45\x9d\x9a\x19\x91\xda\x7b\x59\x04\xa2\x08\xdc\x8a\x04\x47\xfb\x3a\x35\xeb\x14\xc6\x64\xd8\x27\x41\x4b\xf6\xd9\x6d\x79\x13\x97\x5b\xc5\x8f\x34\x03\x50\x1f\x17\x0a\x1e\x23\xbc\xb4\xa4\xbc\x56\xe7\xca\xa3\x01\xb5\xae\x9a\x28\x55\xb0\x62\x98\x23\xcf\x2e\x5c\x38\xbc\xf1\x5b\xa1\x8b\x63\x12\xb4\xda\x99\x7e\xb4\x19\x8a\x7b\x97\x76\xa4\x2d\x02\x0f\xcc\xf5\x14\xa4\x19\xd8\x2f\xd6\x0c\xbc\xb2\x00\xf2\xb7\x66\xc8\x2b\xbb\xa8\xd9\x7a\x43\x1f\xb9\x2e\x98\xa7\xc7\x91\x49\x4d\xa8\xbc\x96\xef\xba\x2a\xa6\x83\xaa\x7c\xc5\x20\x45\x58\x99\x32\x30\xf0\x5c\x75\x31\xa3\xa5\x29\x40\x4f\x2d\xba\xd4\x57\x95\xc2\x0d\xc4\x32\xd0\x92\x67\x87\x96\xb5\x18\xcb\xb3\x29\xcb\x42\xd4\xc2\x5b\x07\x29\x69\x65\xb6\x69\x54\xf6\x92\xb5\x80\xa7\x2d\x3a\x71\x65\x5c\x35\xb8\x89\xa4\xcf\x14\x39\xc8\x23\x20\x85\xd4\xe2\x4b\xc1\x48\x60\x46\x58\x11\xb9\x27\xfd\x54\x78\x78\x31\x76\x41\x50\x78\x39\x76\x41\xd4\x77\xc6\x7e\x08\x39\x9f\x56\x28\x69\x9c\xd9\xec\xf9\x6c\x0a\x57\x64\x5f\xce\x90\xf3\xce\x57\xd3\xec\xbb\x8e\xcf\x8d\xfe\x70\xeb\x15\xdc\x63\x4a\xb7\x6a\xc1\x0a\x83\x4f\x33\x8a\x67\x74\xd2\x0e\x67\xb6\xbf\x72\x75\x80\xa8\x66\xfc\x8d\x70\x88\xe7\x2b\x85\x43\xa2\xed\x05\xb6\x0b\xd2\x57\x08\xd8\xad\xb6\x84\xd5\xed\xa4\x9e\xed\x54\xcd\xb5\x8c\xb1\x61\x9a\xde\x50\xb6\x9a\xbc\x78\x81\x90\x60\x24\x92\x18\x12\xe2\xb3\x91\xfa\x41\x1c\x7d\x54\xce\xb0\x47\x1f\xd9\x69\x21\x9c\x20\x56\xb9\x40\x0d\xdc\x38\x7a\xd2\x7f\x7d\xd4\xa7\xce\x83\xf8\x10\xf5\x29\xb8\xc6\x84\x97\xfb\x33\x19\xe9\x2b\x7b\xde\x48\x8a\x20\x0d\x1c\xeb\xa1\x95\x6a\xce\xb9\x16\x75\x85\x53\xe4\xe4\xa1\x01\x8f\xdf\xd4\x72\x6f\xe0\x99\xf9\x92\x7e\xe7\x35\xca\x9e\x82\x0e\x2d\x57\x93\x0d\x5b\x13\x57\xea\xc7\x86\xad\x43\x17\x2f\xed\xd0\x5a\xe2\x67\x3b\xb4\x9e\x57\x80\x59\x0d\xc3\x94\xad\x7f\x43\x99\xab\x4c\xa4\x7b\x8c\xa9\xaf\xc9\x17\x7a\xe8\x95\x47\xea\xeb\xb1\x06\x4f\x4e\x5b\xb7\x9e\x6b\x6a\xf4\x64\xcc\x69\xc9\xa8\x15\xbb\x8c\x80\x0c\x5b\xb1\x9b\x24\xf0\x43\x3c\xeb\xa2\x43\x4d\xcf\xea\x36\xb0\x67\x3d\xb2\x3f\xb5\x1e\xf6\xc1\xad\x89\x4b\xfc\x22\x7b\x45\xb8\xf7\x37\x61\xef\x08\x04\xd1\x9e\x35\xfd\x08\x79\x11\x6e\xef\xed\x61\x56\x29\x29\x94\xb0\x07\xb0\x78\x76\x02\xb4\x91\x0c\x2c\x95\x16\x60\x8d\x99\x3d\x50\xd3\x6d\x73\xc4\x7b\xd3\x24\x03\x6b\xf6\x91\x4d\xdf\x2d\xf6\x90\x6d\xca\x54\x6e\x70\x8f\xa9\x75\xd6\x24\x85\x32\xa6\x69\xc5\x2e\x4a\x3d\x9b\x80\x4b\x0d\xb8\xc4\x69\xb9\x0e\xcf\x5b\x12\x6e\x68\x28\xb7\xf1\x76\xf2\x9a\x49\x61\xf2\x5a\xc2\xa4\x30\x0c\xcf\x78\xf1\x9f\x2e\xda\xd2\x05\x67\x8a\x2e\x95\x75\x13\x05\xc7\xca\xb6\xda\xdf\x54\x3b\x93\x6f\x36\x03\xb5\x4d\x17\x6d\xec\x39\x94\x53\xe5\x3c\xf8\x1d\x97\x0d\xf8\x27\xe0\x63\xa1\x50\x42\x98\xfb\xc6\xa7\x82\x58\x67\x04\x67\x86\xde\x79\x07\x04\xcf\x1b\x44\x81\x13\x5b\xa7\x1d\x6a\x22\x67\x60\x9d\x74\x28\x1f\xad\x18\x3f\x9f\xb3\xdb\x2d\x06\x9c\x2b\x28\x33\xfb\x48\x6e\xad\x49\x38\x9e\x87\xd3\x99\xf2\x4d\x71\x32\xa1\xfd\x30\x49\x6e\xad\xfe\xf0\xe5\x7a\xdb\x37\x2e\x64\xd8\xfa\xb9\x3f\xdd\xf2\x49\x17\x95\xdd\x82\xe3\xcc\x1c\x37\xa4\x29\x1d\x59\xa3\xb3\xd0\x1a\x0c\x9f\x4c\x84\x56\xb8\x7c\x7c\xf0\xfb\xc7\x12\x42\x2b\x3e\x5a\x72\x6b\xf9\x74\xe0\x87\xf1\xd6\x5e\xf0\xcf\xb9\x03\x3b\x7a\xbb\xa4\xca\xb1\x6d\xe4\x3f\x29\xaf\x67\xca\x9b\x9d\x37\x8b\xbf\x4b\x73\x6c\x94\x6d\xf9\x63\xd7\x89\x3d\x73\xb0\xae\x67\x3e\x68\x5d\xba\x70\xd5\x2f\xac\x94\x73\x6c\x7f\x75\x9c\x95\x24\xe2\x04\xa8\x98\x54\x19\x13\x53\x17\x61\x8a\xec\xa9\x46\xda\x14\x4a\x6c\xba\xc1\x40\x38\xdc\x30\x34\x41\xaf\x14\x3c\xfe\xf9\x8c\x21\x51\x89\x19\x9f\x15\x9d\x39\x04\x97\x80\x1a\x46\xbd\x1c\x53\x15\x55\x87\x55\x3b\xd5\x52\xb7\x56\xd2\xf1\xde\xaa\x84\xf1\x38\xbf\x52\xcb\xc5\xd5\x9b\x5d\x89\xe7\xbf\x52\xc9\x4d\x90\x33\x23\x81\xe8\xc8\xd3\xcb\xf6\x19\x09\xd4\x9c\x36\xd6\x5d\x5e\x70\x19\xdf\xbb\xac\x77\x83\xc3\xd9\x2c\xec\x8f\x66\x61\xb0\x33\x1b\xee\x70\xcf\x0f\xd2\xc9\x41\x87\xce\x76\x82\x61\x38\x1d\xfc\x6b\xb6\xd3\xa1\x8b\x30\xe3\xda\x40\x6d\x27\xcd\xee\x5d\xb4\xdc\xd8\xf4\xb6\x91\xf2\x05\x3b\x7d\xf3\xbd\x4f\x59\x95\xc0\x06\xa4\x2e\x15\x3a\x74\xf6\xaf\xa9\xf2\xa4\xc0\x79\x04\xeb\x3d\x90\x37\x7b\xe5\x02\x59\xc3\x9c\xff\x51\x65\xc1\x84\x3e\x0d\x58\x5d\x9c\xd5\x28\x39\x19\xbe\xc2\xd1\xf9\x0a\xee\xe6\x31\x8f\x97\xd0\x48\xbf\x95\xb3\x10\x9b\xe2\x06\x65\x75\x07\x1e\x96\x6f\x99\x42\x30\xb6\x8a\x9d\x9a\x5e\x92\x78\xd6\xb2\xfc\x37\xf1\xac\x33\x78\x7e\x86\xe7\x2b\x29\x3f\x39\x06\xe9\x88\x3f\x1c\x4c\x67\x93\xb9\x0f\xfe\x30\xbe\xcd\x69\xf0\x7d\x12\x86\xf6\x4e\x77\xb0\xa0\x71\x37\xe0\x1e\x53\xa6\x3b\xed\xee\x22\x1c\x48\x57\x13\x71\x83\xf8\x49\x22\xc6\xc7\x33\x48\xff\x39\x83\x61\x10\x4e\xc9\xbb\x36\x35\x3f\x48\x8b\xff\x2a\xe3\xba\x4e\x9e\xf8\x76\x6c\xb9\x19\xd7\x61\x54\xf4\x55\xe4\xcc\xb0\x83\x17\x4d\x13\x82\x6a\x88\x9d\xdc\xba\x07\x9e\x0d\x78\x95\x15\x6d\x1d\x71\x2f\x53\x9c\x0a\x6e\x2d\x9e\xf5\xe8\x60\xe0\x09\xec\x95\x3b\x76\xc9\xbb\xf7\xb6\xe6\xb1\x99\xfa\x05\x92\xcd\xfa\xaa\x59\x4f\x59\x2d\xb3\x36\x7d\x17\xbc\x9e\x8f\xc7\xae\xc3\xa7\x33\xb0\x96\x65\xc3\x60\x93\xfa\x19\x82\xc0\xb3\xe7\x67\x48\x7f\x86\xf4\x2b\x48\xbf\xf2\x2a\xbe\xc5\xfb\x60\x52\x6e\xde\xc5\xba\xc9\x81\x41\x85\x2f\xcf\x26\xe3\x0f\x7f\x8b\x09\x36\x8c\x0f\x9f\xd5\xb7\x0b\x57\x78\xca\x98\x80\x23\x4f\x2a\x24\x93\xc2\xce\x9a\xe7\xc8\xba\x66\x10\xed\xaa\xef\xd4\x45\x6a\x09\xb4\x42\x7f\x73\x56\x12\xde\x38\xd3\xa2\x7d\xdc\xf3\x90\xcd\x96\x6b\x85\xfd\x38\xa4\x13\x5d\xbf\x4e\x5b\xcd\xcc\x34\xa6\xe4\xc3\x3b\xe9\x38\x02\xa6\x70\xad\x7b\x90\x46\xdd\xd6\xbd\xc7\x86\x23\x54\xdd\xe4\x07\x1d\x8e\xd6\xc1\x68\xb5\xc2\xe3\x79\x38\x79\xb6\x73\x8e\x06\x05\x28\x6c\x67\x50\xb4\xc2\x17\xcd\x9c\xb5\x2f\x98\x94\xad\x15\x9f\x99\xf1\x18\x1c\x2a\xaa\xe7\x2b\x0f\xfd\xbe\x8f\xc0\x8d\x2c\x65\x2b\x9d\xe6\x5a\x6a\xb9\xce\x58\xae\x0a\x63\xc3\xcb\xf6\xbe\xed\x01\xf9\x7a\xa0\x49\xe9\xf0\x74\x14\x77\x67\xf6\x9a\x89\xbc\x47\x4c\xad\x86\x3d\xad\x66\xf4\xfb\x3e\xf6\xb5\xaf\x57\xda\xd7\x67\xf8\x2a\x8c\xe6\x79\x76\x1c\x11\xed\xb3\x8c\x90\x19\x37\x8a\x42\xb4\xc1\xe6\xb6\xe4\x12\x7e\x89\xff\xba\x2c\x73\xdd\xa8\x08\x9c\x4d\x17\x3d\x7c\xe5\xd9\x51\xd1\x5f\xc9\x98\x99\x90\xbd\x9c\xc9\x5e\xf4\xf4\x02\x5b\x8a\xec\xe7\x15\x29\xbe\xf3\xd7\x4b\xad\x97\x3b\xd8\xec\x59\xd1\xcf\xf6\x4d\x2b\x02\xab\x5e\x5a\x49\x57\x41\x9b\xcb\xa9\xc0\x75\x8d\xd0\xfd\x4c\xbc\x8a\xb9\x06\xda\xc2\x0d\x9e\xa8\xb7\x52\x50\x7d\x6a\x87\x3a\xcf\xa1\xcc\x62\xbd\xd6\x37\x1e\x57\x0a\x54\x4c\x57\x28\x2b\x12\x9d\x6c\x58\xa3\xe5\x2a\x14\x70\xf7\x64\xad\x06\x38\x1a\xf5\x40\x7b\x41\xf8\xbd\xc6\xd4\x0a\xe7\xb8\x84\xf7\xb9\xd9\x7e\x01\x22\x21\x2d\x78\xbe\x56\x97\x6d\xf4\x15\xee\x55\x73\x15\xac\x85\x1f\x4f\xcc\x9d\x76\x7a\xd6\xb3\xa3\x62\x66\xbd\x30\x9e\xeb\x37\xbf\x18\xfc\x16\xa0\xcf\x84\x35\x21\x6e\x7b\xa7\xff\x51\x7f\x9b\xcf\xbc\x1f\xa2\xdf\xad\xef\x2f\x60\x22\xbf\x47\xad\xd3\x2e\xeb\xfc\x1e\xf8\xd8\x76\xbc\x56\x1f\x3e\x9c\x76\xf1\x3b\x91\x02\x43\xe4\x61\x0b\x33\x63\x3b\x7f\x32\x3d\x3c\xa8\xaa\xc1\x39\x5e\x6b\xf0\xf2\xd6\x20\x4d\x61\x29\x8f\x7e\x87\xfa\x03\xa2\x9c\x96\xfe\xce\x9a\x92\x43\x2e\xff\x4d\xc4\x78\xc5\x40\x67\xff\xab\x81\x8e\x9e\x61\xa0\x65\x36\x48\x58\x91\x17\x18\xe0\x99\x87\x29\x43\x0f\x6a\x89\xba\x4b\xd3\xc3\xb7\x4b\x88\x01\xba\xeb\xfd\xd2\x78\x58\x8d\x7b\x50\xcb\xef\xd0\x04\x9b\x43\xa5\xea\x65\xfd\xf1\xb7\xf0\x71\x01\x0e\x01\x78\x66\x70\xc7\x5a\x46\x7b\xe0\x7b\x9d\x8f\x6e\xfe\xa6\x11\x24\x5c\x31\x88\xb1\xa4\x0a\x83\x9e\xf5\x75\x04\xd2\xba\x01\xf7\x0a\x1a\x7e\x1e\xa4\xd2\xba\x11\x01\x8f\x8d\x42\x2b\x50\x3a\xb9\x1d\xb5\x4a\xd2\xc9\xed\x69\x64\xfb\x30\x2d\xa3\x56\xd9\xc5\xa3\xd6\xbe\x9b\x51\x68\x38\x61\x9f\xd9\x24\xc1\xe7\x77\x1b\xdf\x1f\x8f\x6c\xdf\xf2\xc2\x97\x6e\x38\x39\x9a\x4f\x16\xe1\xf7\x61\x5a\x11\x1e\xb5\x0e\xd8\x9f\x0f\xec\xcf\x1f\xec\xcf\xc7\x6c\xe1\x4e\xdb\xf6\xc5\x84\xf3\x69\xda\xa6\xed\x40\x67\x9d\x1d\x7f\xd8\xef\xd3\x01\x38\xef\x64\x43\x52\xca\x0e\xdb\x74\xf1\xd8\x54\xf1\xe5\xe7\x33\xc7\x40\xd4\xc7\xd7\x87\xc8\xf1\x05\x88\xfa\x79\x4b\xaa\x49\xad\x85\x78\x27\x38\x46\x40\xeb\x5e\x55\x79\x55\x9a\x52\xae\xd5\x9d\x7e\x1d\x76\x07\xb3\xf3\xc1\x57\x3a\xeb\x28\xcf\xeb\x49\x12\x58\xdd\x27\xaa\xde\xc5\xe2\x2e\xfe\x57\xa0\xdb\x3b\x74\x53\xdc\xd2\x9a\xb8\x98\x42\xcc\x54\xd8\x78\x37\x87\xbf\xb2\xf1\xe4\x49\x6a\x2d\xff\xa6\xd6\x92\x91\x32\xcb\xcf\xd4\x5a\x16\x59\x6d\x40\xe4\xfc\x4d\xad\x67\x78\xf8\x4c\xad\xe7\x22\xab\x1f\x7a\xfe\xce\x33\x97\xff\x49\xd7\xad\x68\x38\x98\x11\x6f\x40\x1d\xaf\xf5\x08\x1b\xee\x32\xc4\x32\x1c\xc0\x1b\x58\x0f\xc8\x36\xad\x93\xbe\xec\xa4\x6f\x2d\x8b\xbe\xea\xa4\x2f\x3b\xe9\x5b\xcf\x45\x5f\x76\xd2\x33\x9f\x72\x6f\xf0\xf2\xaf\xaf\x54\xff\x85\x81\x32\xc5\xb5\x53\xdb\xc3\xf1\xdc\xf6\xf1\x53\xd3\x0e\xb8\x81\x72\xcc\x0d\x94\x07\xbc\xfe\x31\xab\x9f\x91\xe6\xfa\xdd\xd3\x4f\x2f\x9e\x58\x4a\x9b\xad\xa7\x12\x57\x42\x82\xc3\xcd\x3f\xe1\xb4\xf2\xe9\x60\x41\xa7\x1a\xb8\x71\xbb\xc8\xdb\x0e\x03\xb5\x9e\xb8\x78\x6a\x8b\xc7\x93\x0e\x3e\xea\x53\x11\x2a\x47\x06\x13\x79\x78\x22\x3d\x05\xa3\x9c\x2d\x69\x6a\x07\x71\x89\x1d\xc4\x25\x15\x8f\xa2\x2d\x43\x3e\xd2\x38\x26\x2d\xd7\xf1\xe5\xd5\x90\x76\xaf\x84\x34\xa9\xde\x48\xb9\x26\xa5\x71\xac\x79\xa1\xfb\x51\xc3\x73\xad\x84\x6c\x38\xa5\x8a\xf3\x6f\x3a\xe4\xe1\xfe\xba\xb4\xb9\x94\xf9\xd9\x06\x29\xf3\xca\xa1\xac\x37\x6b\x9e\x6a\xbf\x35\x2d\xa0\x09\x61\x20\xec\x54\x7c\x66\x3f\xcf\x6c\x30\xec\xed\x8a\xfd\x3c\xaf\x10\x0e\x48\x09\x87\xfc\xba\x22\xf8\x1c\xa6\xa1\x1c\x22\xe2\xb7\x02\xd7\x89\x5b\x51\x6b\xee\xbb\xad\xa3\xc0\x75\xad\x5e\xd5\x8c\xc0\x4d\x26\x04\xac\x8a\x10\xc4\x43\x00\x32\xdc\x23\x7b\x65\xc7\x27\xb4\x55\x72\x9d\x40\xd0\xe1\x21\x0f\x54\x2f\x6b\x15\xb7\x85\x6c\x2a\xb8\xf8\x3c\x70\x11\x8e\xfe\x86\xb0\x50\x24\x02\x4d\xdb\x00\x62\xbf\x33\x96\xb6\x3d\xd5\xe5\xdb\x73\xee\x42\x56\xf4\x43\xdc\x38\x99\xba\x24\x56\xac\xa6\xd5\x0f\xe9\x74\x3e\x09\x19\xf8\xc1\xf6\x41\x9a\x84\xb6\xbc\x8f\x97\x36\x05\xf9\x2c\x65\x43\x5f\x81\xb0\xc5\xb7\xce\x27\xe0\x22\xf2\xe7\xc2\x96\xb8\xa5\xfa\x20\x45\xc7\xa2\x5d\xa4\xdc\x62\x6a\xf7\x49\xdb\xc4\x2b\xbe\x94\x46\x04\x4a\xb8\xe2\x23\x27\x66\x2f\xeb\xb5\x6e\xaf\x74\x5d\xe2\xe2\xa7\x32\x9b\x40\xca\x5b\x58\x9a\x13\x5b\xb5\xd3\x5f\xaf\x76\x5d\x06\xa3\x57\xab\x24\x30\xbc\x5e\xf6\xfa\xeb\x15\xaf\x8b\x65\x32\xfd\x15\x42\x19\xd1\xdf\x78\xfe\xeb\xd5\xae\x89\x59\xb4\x4b\x31\x05\x67\x9b\xb7\x62\x62\x7f\x08\x3a\x56\x6d\xe9\xf4\x7e\x6a\x24\x5c\xd3\x72\x04\x83\xb5\xe7\xd6\xc4\xd5\x19\xcd\x77\xaa\xac\xc6\xca\xe9\x5c\x33\xfb\x44\x5d\xc7\x37\x8c\xb8\xe5\x67\x81\xc7\x57\xe3\x5b\x6d\x38\xea\xe2\xe2\x8c\x7e\xed\x6d\xbf\xc7\xc2\x23\xcc\x54\x20\x99\xe9\x47\x42\xf9\x60\xba\x0d\xe9\x93\xf4\xb1\x41\x44\xf4\xed\x5a\x8f\x44\xfc\xe9\xa2\x43\xc9\x34\x49\xfc\xd4\x6b\x69\x8e\x0b\xe3\x35\xf5\xc4\xd4\x44\x20\x22\xa6\xb7\x47\xd1\xef\x01\x6e\x93\xe8\xb7\xbd\xb0\x48\x9d\x75\xf7\xe1\x9a\x47\xf1\xdf\x68\xb1\x9d\xfa\x31\xcd\xb8\x2f\xdd\x5d\x52\xdc\x3a\x7d\xa6\x98\x9d\x0f\xa3\x0b\xdc\xaf\xad\x9d\x09\x01\x84\xaf\x4e\x15\x0f\x7d\xb0\xd3\x7f\xe1\xdd\xa8\x42\x20\xe9\xcb\x8b\x4a\x95\x50\x50\x31\x0d\x8e\x0d\xc3\xac\x12\x0f\x39\x23\xeb\x84\x54\x9d\x91\x15\x85\x24\x70\x46\xd6\xcd\x1f\x64\xa0\x3b\x3f\xaf\x9a\x2f\xd8\xc7\x3d\xb4\xe6\x72\x73\x7d\x10\x8a\x9e\x09\x05\xf4\x3f\xbd\xb8\x66\x09\x97\xb0\x87\xdf\xf9\xe0\x43\xb6\x43\xcd\x50\x2a\x42\x84\xfc\x10\xa6\xd6\xb0\xc1\x12\x05\xef\x1e\x59\xcb\xf4\x51\x71\x23\xd1\x6a\xc5\x29\x4c\x3f\x37\x3c\x28\xaf\x70\xab\x6c\x1f\xb7\x71\x8f\x14\xca\x4e\x68\x18\x21\x10\x0c\x53\xc3\x88\xac\x66\xe8\x9d\x0c\x07\xb3\x8a\xf8\x6d\xc5\x81\x6b\xbe\xb6\x87\xc3\x76\x1c\xda\xaf\xa0\x03\xd5\x0d\xa7\xb6\x28\xb0\xc2\xd4\x9f\x75\x75\xc6\x11\xbd\xb6\x0d\xa3\x6d\xc6\xca\x47\x03\x5a\x81\xba\x53\x77\xb0\x99\x53\x89\xfe\x86\x83\x70\x67\x38\xd9\xe9\x0f\x27\xe1\x0e\xd4\xbb\xe3\x0f\xe7\x71\x00\x6a\x06\x5e\xb8\xc3\xa3\xc1\x59\xef\x91\xb3\x5a\x21\xbb\x47\x0a\xca\x62\x75\xd6\x09\x07\x69\x8d\x21\x8f\x48\x8a\x22\xb8\x33\x08\xe1\x60\x8c\xb0\xd6\x15\x5c\x12\x97\x4f\x6d\x12\xae\x56\xab\x74\x65\xa3\x27\x4a\x7a\xba\x9b\x18\x53\x0b\x06\x76\xaf\x05\x03\xe3\x37\xc2\x54\x6e\x8f\x6f\x3c\xe8\xda\x57\x1e\xf5\x88\xa7\xd5\x7d\x4a\x82\x24\x51\x3e\x49\x5b\xd5\x43\x70\x72\x80\x56\xf7\xe6\xfd\x15\xbe\xbe\x42\x4e\x93\xdc\x8b\x90\x5b\x7a\x78\xbb\xac\xf3\xcc\xe6\xd3\x66\x90\x38\x31\xea\x15\xfb\xb2\x11\xae\xed\xfe\xca\x0a\xad\x87\x71\xc6\x0d\xf5\x46\x48\xb6\xbc\x80\x6c\xaf\x72\x28\x54\xc4\xb1\x49\x71\x9f\x0c\x7d\xa7\x79\x58\xbd\x19\x0a\x07\xc9\x37\x43\x21\x5e\x02\x73\x86\xbb\x2b\x93\x11\xb1\x49\x52\x02\xaa\x98\xfd\x5e\x5e\xc8\x28\x89\x58\x4e\x4c\xe5\x15\x96\xd7\x96\xef\x2b\x9b\xdf\xe8\x21\xd4\x8a\x0f\x35\x19\x01\x65\x34\x6c\xf3\x89\x50\x87\xfd\x58\xdf\x22\x72\x77\x65\xed\xfa\xe4\xec\xd2\xbc\xbb\xb2\x6e\xfe\x30\x59\x32\xc2\x79\x44\x6c\x8b\x42\xb0\x24\x46\x53\x1d\xb9\xe6\xc5\xcd\x97\x46\xab\x1d\xb8\xa6\xd7\x2a\xbb\xa9\x3f\x27\x1f\xac\x98\x76\x8f\x10\xc3\x1f\x6c\x7c\xaf\xab\x15\x02\x42\x7b\x2d\x08\x9b\x16\xc5\xe8\xe1\x4a\xdf\x5b\x30\x82\xa7\x36\x29\x14\x3c\x47\xf8\x94\x6e\x2d\x0f\x45\xe8\xc4\x9a\x90\xde\x49\xff\xe0\x61\x25\xe4\x43\xbe\xef\x25\x89\x84\x93\xa7\xb6\x61\xc8\x8c\x7b\xe5\xdf\xb8\xf8\xf1\x59\xaa\x3d\x4c\x7e\x90\x82\xbf\xba\x37\x1f\xae\x70\xe3\x91\x41\xcc\x03\x40\xcc\xee\x93\xd9\xc4\x5c\xb6\xdd\xb4\xee\x7b\xa4\xc4\x60\xe8\x80\xed\xe2\xb3\xf5\x78\x6c\x0c\xeb\xec\x3e\xa9\xfb\x67\x6a\x18\xa6\xe8\x03\x19\x77\x4d\x0f\x55\x3c\xbb\x2c\xd4\x7e\xa6\x2f\x6e\xab\x17\xb8\x95\x92\x2d\x7a\x56\xd9\x2b\xdb\x65\xe4\x8c\xbb\x60\x83\x2b\x7b\xe9\xf3\x60\x6e\x8d\xeb\xcc\x49\xa9\xda\x60\xd5\x88\xde\xdf\xf7\x08\xb5\xee\x7b\x6a\x22\xa8\x36\xb2\xa7\x36\xa1\xd6\x53\x5b\x0d\x93\x5a\x93\x1f\xe0\xfd\xa9\xb9\xc5\xf5\xd3\x03\x0f\xa7\xc9\xaa\xc7\xa2\x06\x5c\x10\xa5\xb1\x68\x0e\xab\xe9\x63\x8b\x58\x5b\xab\x0c\x24\xa6\x4a\x8e\xfa\x78\x90\xba\x99\x67\x95\x0a\x4f\xe8\x93\x1f\xe0\xe8\x4c\x55\xc4\xb1\x53\xfd\x51\x5c\xf6\xb2\x9c\x7a\x48\x52\x31\x49\xaa\xd6\xfb\x1e\x04\x8b\xd0\x4e\xec\xa7\x76\x85\xb6\x6a\xbe\x6b\xf3\xeb\x5d\xbf\xa2\x80\xc4\x17\xd2\x6a\x0e\x30\x7b\xe5\xdf\x84\xd7\x08\x53\x2f\xf9\x08\x25\x03\xdf\x45\x5b\x0a\xb6\x1e\x43\x97\x17\x56\xf3\x2c\x3b\x5f\x14\x5d\xfa\xcd\xcc\x2c\xa8\x1e\x1a\x91\x41\x4d\x49\x1f\x9b\x3e\x25\xe9\xe0\x35\x91\xdc\x2e\x5d\x43\x25\xea\xea\x68\xfa\xe2\x12\x55\x91\x61\xe8\x53\x4b\x61\x62\x44\x77\x10\xdf\x61\xd3\x51\xdc\xf5\xc3\x2d\xe4\x16\x2c\x73\x3a\x0f\x65\x7b\xaf\xac\x60\x8a\xf8\x1a\x10\xef\x95\x7f\xf3\xf1\xaf\x0e\x3c\x85\xbd\x82\x78\x70\x60\x43\xb5\xc6\xbe\xab\x82\x24\x6e\xe6\x49\x39\xa1\xb8\x6b\xa6\xde\xab\x4a\x2e\xaa\xe8\x6f\xb6\x7a\x81\x8b\x8c\x0b\x77\xaf\xec\x94\x3e\x93\xc0\x09\xf6\xf6\xd0\x63\x6c\x32\xfe\x07\x7b\x10\xa0\xdf\xd3\x43\x31\xee\x5e\x31\x14\xb3\x7b\x05\x91\x2c\x02\x9a\xef\x39\x90\x7f\x6e\xfb\x39\x07\xc5\x8f\x9e\x79\x28\x7c\xdf\x8d\x7c\x53\x48\x5e\xc7\x8f\x26\x42\xb2\xd8\xb7\x1c\x77\x84\x3b\x9e\x88\x88\xd9\xf6\xb5\x9c\xfe\x70\x30\xa3\xdd\xc1\xb4\x31\x0c\xd6\x1d\x0d\xea\xc7\xd2\xb7\x9a\x79\x0e\xc1\xe1\x70\x66\x24\x17\x32\x9e\xd3\xc3\x95\x7e\x00\xc1\xd5\xf0\xbd\x79\x71\x44\xf1\xc3\x95\x76\xa4\xd2\xfa\x06\x9d\x92\x22\x28\x1a\xca\xc0\xa0\xbb\x01\x11\xe1\x55\x4f\x03\x22\xa9\xdc\x80\x04\xb8\x4c\x08\x65\x18\x8b\xf1\x8f\xdf\x7d\xb7\x40\x46\x11\xe8\x41\xd1\xd6\x83\xe7\x62\xd3\x23\x94\xfb\x31\x90\xf5\x79\xaa\xbe\x12\x84\x72\x06\x7b\x0d\xf9\xf1\x0b\x84\x30\xc7\x11\x29\x94\x10\x62\x55\xfb\xbc\x6a\xd3\x54\x4d\xb3\x6a\x19\x4f\x59\x91\x5d\x10\x98\x92\x7d\x43\xc8\xd1\x06\x1d\x56\xc4\x07\x5b\x54\x8f\x43\x70\x05\xd6\x8d\xcc\x08\xcd\x26\xcf\xfc\x9a\x69\x0c\xd2\x67\x9f\xce\xfc\x8e\xd9\x06\x6c\xd4\x2e\x90\xfa\xa3\xd8\x76\x6d\x67\xb5\xba\x37\x69\x1d\x5f\x1c\x51\x86\xfa\x69\x9d\x13\x0b\x94\x47\x15\x75\x9a\xac\x5d\xf1\xc4\x86\xc4\xa8\x01\xfe\x33\x7e\xdc\x46\x4e\xd0\x10\x88\x86\x78\xdb\xf7\x53\x88\xb6\x1b\x8d\x72\x80\x50\xe2\x0b\x71\xca\xa9\xcd\x6e\x9d\x06\x72\xaf\x5b\x0f\x41\x92\x88\xd3\x04\xf6\xf9\x26\x0e\x96\x78\x32\x1a\x51\x79\x67\xad\xe3\x97\xba\x15\x66\xf6\x62\xde\x49\xa3\xa0\xc3\xa2\x82\x15\x39\x0d\x08\xb5\x4e\x05\x87\xb2\xcb\x5e\x76\xc5\xcb\x03\x7b\x79\x10\x2f\x47\x43\x42\xad\xa3\xa1\xc3\x5a\xb1\x1a\xd7\x19\xe6\x6f\xfd\xe0\xe1\xb7\x6b\x20\xb9\xa9\x4b\x10\x91\xd0\x23\x61\x51\x42\x22\x16\xb5\x03\x11\x7f\x2d\x90\x88\x86\x31\x53\x16\xab\xce\x36\xba\x57\x87\x2d\x59\x23\x79\x74\x8b\x67\x18\x05\xda\x5a\xbe\xb8\x26\x82\x6b\x87\x4b\xea\x30\x70\x91\x04\x4b\x45\x3a\x65\x1f\x0c\xcc\x00\x97\x70\x19\x19\x46\xe9\x6f\x2d\xa9\x8c\x4b\xc8\x5e\xcb\x54\xda\xcc\x54\x96\x60\xc7\x89\xe5\xc2\x61\x4f\xac\x45\xe8\x28\x94\xb3\x72\x78\x4f\x7f\x1d\x25\xf8\x75\x89\x11\x78\x49\x3a\xcb\x01\x23\x7d\x4e\x19\x92\xe2\xb3\xf7\x38\x90\x4f\x0f\xb1\x7c\xba\x1a\x02\x62\x4a\xad\xcf\xea\x6a\xf9\x2f\x29\xa1\xab\x7b\x33\xa8\x63\xaf\xae\x4d\x70\x58\x4f\x4f\x91\x1f\x3d\x93\xa2\xd6\x0c\xd4\xee\xbb\x91\x79\x20\x70\x05\xf2\x5a\x3e\x9c\xb7\x25\x84\xbd\x16\x7d\x66\x8f\x20\x72\x52\x46\x2d\x51\x1d\xbc\x97\x28\xa4\xcf\xd6\xc1\x31\x7d\x12\x80\xea\x95\x61\x44\x75\xd3\x47\x0e\x0a\x88\xef\xf0\xba\x02\x46\xf4\xf3\x00\x9c\x22\x63\xcd\xdf\xc8\xc8\x5a\x02\x8c\x15\x00\x8d\x15\x00\x2e\xb9\x70\x6d\x88\x74\x29\x55\x05\xf9\x61\x4e\xc9\xb7\xae\x09\xc8\x06\xb3\xe9\x84\x36\x7c\xfe\xc8\x6a\xf1\x31\x2d\x96\x35\xde\x57\x8d\xbe\x5d\x5f\x77\x89\xa7\xcf\x41\x28\xc6\xed\xb1\x47\x5e\x4f\x2a\x40\x0f\x57\x4d\x12\x00\x7e\x79\x83\x02\x83\x7d\x3f\x17\x62\x46\xeb\x92\x5a\x7e\x3c\x1c\x84\xd7\x74\xd0\x0e\x4d\x11\xe1\x77\x94\x77\x3e\xa9\xec\xc3\x7e\x7f\x38\x38\x1c\xf8\xe1\x74\x36\x9c\x1c\x71\xb0\x0a\x27\xab\x37\x31\xd6\x25\xb5\xa6\x33\x3a\x99\x69\xd9\xdf\x35\xad\xc7\xc1\xcf\xf2\x7f\x89\xa2\x69\x38\x7b\x1b\xdb\x5d\x52\x2b\x1c\x04\x99\x8e\x5c\x0d\xdf\xce\x9c\x56\x3b\x18\x6c\x48\xe1\x36\xc7\x3b\xa2\x93\xb0\x3a\x9c\x0f\x02\x3a\x79\x86\x0b\x8a\xa9\xc9\x4e\x96\x4a\x99\x10\xaf\xe2\x75\x5b\xbb\xbe\x6b\xdd\x7c\x3f\xbc\xfe\xfe\xcf\xf7\x2f\xff\xc0\x83\xbd\x9e\x7a\xdc\xa8\xd9\x7a\xf6\xe3\x46\x6d\x23\xb3\x48\x3b\x6e\xd4\x00\x99\x35\xad\xee\xf4\x68\x18\xc7\x74\x34\x0d\x83\xed\xe3\x69\x3d\x2c\x21\x04\xf9\xe9\xe2\x8d\x3c\x10\xdc\x69\xe5\xbc\xe4\x07\x33\xf6\x62\xf3\x47\x2f\xdd\xcb\x92\xc0\xa2\x97\xa6\xd7\xea\x1c\x32\x24\x46\x39\x60\xd0\xcb\x6c\xf8\x2e\x8b\x5f\x35\x1f\xc6\x31\xc0\xcf\x14\x64\x1d\x34\x08\x38\x34\x89\xc6\xd1\xca\x59\xac\xb7\x2b\xfb\x35\x17\x77\xc6\xe9\xe6\xef\x6c\xa0\x87\x4e\x1d\x07\x75\xe4\x74\x38\x32\xba\x5c\x43\x5e\x42\x75\x87\x53\xd2\xa0\x42\xd5\x61\x07\x03\xbd\xcc\xf0\xce\x52\x4d\x95\xb5\x97\x87\x9f\x30\x6d\x35\x97\x6e\x1e\x3a\xd3\x51\x57\xb7\xae\x39\x6b\xbe\x54\x82\x83\xe6\x23\xf1\x56\xf7\x66\x77\x0d\x8d\x3d\x6e\xa0\xb1\xef\x81\x6b\xf9\x93\x90\xce\x40\x12\x2d\xb6\x9c\xc3\x03\x05\x4b\xb4\xb6\xfb\x0c\xaa\x2d\x80\xbe\xe0\x14\xe1\x18\xc6\x30\x3c\xe8\x7c\xa1\xbc\x16\xbf\x50\xf8\x6f\x75\x02\x12\x30\x2e\xc3\x51\x7e\x34\x59\x7d\x02\x65\x86\xc8\x2f\x8a\xcb\xcc\x34\x32\x71\x88\x5e\x79\x6b\x81\xb8\x44\x5c\xad\x82\x24\x11\x1d\x60\x18\x0c\x39\xa2\x49\xe9\x77\xe3\xec\xc5\x35\x7b\xc7\x18\xd4\x8c\x66\x87\xf0\x0c\x38\x77\xa5\x90\x58\x93\x74\x05\x79\x13\xce\x24\x51\xb3\x85\xd0\xd9\x2b\x73\x4a\x67\xaf\xfc\xc6\xa9\xdd\xad\x4b\x20\x6a\x5d\x3e\xbb\x72\x59\x9a\x8f\x0c\xcc\xc2\x19\x3f\x0b\xc3\x19\x83\x39\x11\x62\x9a\x86\x0e\xa3\x21\x24\x49\xa3\x9f\xdf\xef\xd6\xf1\x9a\xd2\x42\x0f\x67\x7a\x5c\x06\xd6\x58\x97\x91\xf8\x24\xdb\x34\xc3\xeb\x4f\x9e\x6b\xfe\xbe\x53\xdc\xfd\x1d\x7f\x41\xec\x8c\x60\xc3\xdf\x63\x3c\x02\x62\xf3\x23\xe6\x64\xcf\x07\x87\xfe\x16\xc3\x1a\x83\xd9\x31\xd7\xdd\x35\x91\xe3\x11\xcf\xea\xcc\xfa\x31\x5b\x7b\x5e\x93\xf9\xef\xc9\xbf\x07\xc9\xbf\x27\xc9\xbf\x07\xa8\xf8\x7b\x1b\x4f\x43\xc4\x16\x49\x2a\x3a\x01\x38\x1b\x46\xe9\xb3\x97\xd1\x59\x0e\x67\x84\x07\x53\x76\xbc\xbf\x7d\x6b\x38\x9f\x85\x93\xb3\xef\xf5\xab\x37\xab\x54\x5e\x11\xa1\x1c\x90\xc5\x12\xae\x7c\xab\x3b\x18\x84\x13\xd6\x2b\x42\x2e\x8f\xa8\xe9\x6b\x27\x24\xd7\x53\x86\xd2\x8c\xed\x2d\x11\x22\xe8\x6d\x9f\x5c\xc9\x68\xfb\xbe\xc4\x17\xac\x63\xab\x6c\x4f\xf5\x38\xd4\x57\x92\xad\x48\x41\xd7\x83\xe3\xf1\x27\x77\x4d\xfc\x30\x8f\x90\xb4\x97\x79\x64\x2f\xb8\x47\xda\x6a\x36\x0b\x24\x4a\xe7\x01\xac\x5b\xe4\xdc\xf5\x18\xa9\x45\x19\xbd\xd4\x06\x7a\x09\x48\x28\xf5\x5e\x42\x36\xa3\xcd\x5a\xb7\x4b\xd7\x6c\xab\xc8\xa3\xbc\x9f\x11\x5a\x69\x70\xbd\x76\xb4\x09\x58\x4b\x12\xc5\x77\xf4\x38\xa4\xe2\xb2\xf4\x55\xcd\xdb\x57\x5c\x87\xc8\x97\xf5\x42\x2e\x08\xf9\xec\x31\x28\xe2\x19\xed\x06\xb2\xf4\xae\x28\xdd\x3b\x36\x73\x6b\x7f\x10\xdf\x77\x83\xb5\xda\x77\x83\xcd\x83\x33\x03\x5b\x19\xb0\x62\x68\x4f\x12\xe2\x72\x60\xa7\x81\x1a\x58\x69\xad\x72\xc6\x63\xbc\x5b\x3f\x69\xb7\xd7\xce\x50\xa9\x23\x86\xf6\x10\xac\x77\xbd\x77\x6c\x96\xf2\x86\x26\x87\xfe\xb0\x3e\xb4\x87\xe0\x97\x0e\xef\xd6\xe2\xd0\x35\x21\x0c\x7b\xe5\xe6\xc8\x3e\x3d\x42\xc5\xdb\xa3\x22\x3f\xbb\xf9\x3b\x1c\xb4\x29\x88\xf6\xea\x19\xd3\x53\x0a\x9c\x38\x08\x53\xfc\x24\x29\xf0\xdd\x20\x89\x78\x4d\x65\x84\x35\xa0\x0c\xbc\xf8\xbe\x5a\x37\xf2\x0a\x2a\xa1\x1d\xed\x85\x7b\x65\xdc\x13\x79\xda\x2e\x8e\x81\x2b\x88\x89\x5f\x37\x7b\x92\x94\x1f\xa0\x57\x1f\x44\xec\xf3\x50\xdc\x07\xc4\x8c\x7d\x48\x81\x1a\xa2\x7b\x47\xac\x04\x0f\x7f\x45\x38\x3c\x8f\x00\xbe\xd9\x99\xbc\xcb\xb9\x25\xd2\x96\x68\x1d\xce\x8b\x6e\x64\xc6\x8c\xba\xa7\x6a\x5d\xc4\x60\x7b\x48\x65\xa0\x2c\x43\x8c\x84\x15\x09\x6f\x22\xa8\x40\x8d\x6d\x9b\xd7\x59\x2c\x67\xc3\xa7\xa6\x95\xc0\x75\x9a\xea\x0a\x70\x2b\x9f\xc5\x2b\xe3\x70\x36\x5b\x4d\x23\x30\xbf\x6b\x5a\xbd\xe3\x5c\x46\x8a\x1d\x8c\x38\x20\xa0\x36\x58\x51\x60\x6a\xab\x23\x5c\x9e\x9e\x70\xda\xa5\x98\x85\x1d\x86\x0c\xb3\x84\x70\xea\xb1\x65\x01\xd9\x13\x6e\x13\xbf\x52\xb2\x43\x2e\xd1\x69\x1b\x46\xfb\x73\xe8\xb4\x8b\x24\x92\xee\xa3\x83\x56\x9b\xcb\xce\x60\xf0\x4a\x84\xa8\x43\x12\x5d\x83\x24\xf9\x8e\x61\x11\x19\xb9\xa3\x20\xa4\xd2\xb6\xdb\xc5\xb2\x18\xe6\x5e\x99\x90\x76\xa5\x64\xb7\x57\x61\xf6\x60\x71\x22\x86\xd1\x02\xe4\x84\xd6\x34\x9c\x1d\x0f\x02\xa0\x30\x4d\xbf\xb2\x18\x52\xfb\x68\x04\x8e\x9d\x43\x12\xb2\x33\x89\xc1\x95\xaa\x1c\xa2\xdd\x87\x76\xa8\xd1\x27\x97\x3c\xd2\xbf\xc8\x22\x79\xa5\x0a\x6d\x79\x81\x6b\xd3\x14\xcf\xaf\x7e\x46\x5a\xae\x8d\xbb\x3a\x12\x32\x9c\x4b\x4e\x97\xbe\x49\x6a\x76\x03\x77\x9d\xd0\x4c\xe9\xbd\x98\x8d\x98\x1d\xc6\x3f\xa1\x08\x1d\x19\xc7\x33\x45\x9d\x78\x1d\xd9\xd9\x0a\xf9\x66\x38\x79\x0d\x67\xe8\x74\x65\xbc\x41\x57\xc6\x9c\xae\x8c\x37\xe9\x4a\xd0\x2a\xf0\xf2\xc9\x41\x47\xc1\x9e\x98\x23\xf6\x5d\xdc\xa2\x30\x52\x52\xa4\xb2\xbc\x49\xa2\x51\x95\x6b\x04\x27\x1c\xa5\xd6\x84\x91\x80\x47\xc3\xf9\x60\x66\x18\xb9\x84\xb3\xea\x7e\x7f\xa3\xfb\x7d\xde\xfd\x3e\x74\x7f\x3b\x26\x3c\xef\x99\x8b\x09\xaa\xf4\x19\x51\x3c\x18\x64\xe4\x79\x42\x00\xfd\xbf\x66\x72\x32\xbc\x4c\x6e\x76\xc6\xfd\xe4\x33\x39\xfd\x7c\xaa\x3e\x8f\xb3\xf0\x2a\x94\xed\x90\x2a\x9d\x86\x87\x83\xe0\x78\x39\x63\x64\x55\xce\xdc\xe2\xbc\x65\xb3\xb7\x95\xfd\xcf\x84\x17\x20\x1b\x61\xe8\xf1\xb0\x67\x18\x85\x8b\x9e\xf9\x97\xf2\x90\x2a\xe8\x55\xa0\xfa\x31\xd0\xfb\xc8\xf9\x0f\xe5\x10\x0c\x96\x03\xc7\xe3\x72\xc0\x9f\x88\x22\xd8\xce\x60\x79\x1f\xe0\xf8\xc9\x11\x47\x38\x1e\x23\xc8\x28\x17\x4a\x40\xd5\x50\x86\xa7\x82\x84\x02\x1a\xfa\xd6\x35\x59\x92\x92\x53\xb0\x0a\xd9\x87\x62\xd9\xa1\xd2\xe2\x9b\x92\xe3\x5e\x85\x8d\xaf\x5f\x37\x41\x38\x83\xec\x2a\x4f\xe8\xa8\x84\x17\x9e\x10\xab\x04\xb8\x1e\x97\x6f\x39\xaa\x4b\x30\x31\xea\x7e\x3d\x36\x29\x4a\x12\x89\xb2\xb4\x19\x1f\x80\xb4\xed\xde\x1c\xd4\xf1\x2e\xdc\xb6\x0e\x04\x87\x71\xb2\xd8\xe4\x30\x76\x83\x4d\x5e\xe3\x41\x3d\x1d\x0d\x49\xe1\x2d\x6e\x63\x50\x77\x28\xab\x16\x56\xfe\x64\x21\x83\xcb\x2e\xc4\x4d\xea\x1a\x97\xb1\xab\x30\x51\x96\xe5\xa0\x0a\x47\x3d\xb0\x97\xa3\x21\x11\x82\x45\x9d\x19\x69\x5a\x5e\xee\x1d\xc0\x54\xa7\x46\x86\x29\x03\x09\x87\x92\xe9\x11\xd6\x3f\xc4\x9d\x22\x02\xbd\x26\x75\xfd\x00\x76\xe1\xdc\x67\xa0\x1b\x12\x0a\x90\xeb\xe4\x00\x6a\x44\x3c\x76\x0c\xe2\x1e\x09\x70\x4c\x42\x3c\x60\x73\x52\x26\x24\x12\x72\xf2\x36\x89\x24\x79\x32\x20\x85\x36\x8e\x48\x3b\x49\x22\x06\x80\x49\x12\xe1\x36\x29\x49\x47\xf5\x40\x86\x3b\x6d\xc3\x18\x49\xc6\x90\xbb\x9b\x8f\x08\xe9\x19\x46\x9b\x90\x18\x8d\x38\xff\x28\x2f\xea\x07\x2c\xaf\x60\x62\xa1\x5d\x5c\x26\xa4\x27\xda\xed\x11\xb3\x4d\x7a\xd0\x74\xec\xa2\x24\xe9\xf1\x26\x7b\x22\x36\x7e\xa1\x8d\x30\x1c\x94\x3d\x84\x23\x5e\xc9\x00\xe1\xd8\x30\x22\xc9\x76\xc5\x08\x8f\x32\x27\xe8\x62\x08\x67\x67\x2c\x77\xe6\x88\xed\x4a\x0f\x21\x27\x86\xcd\xe0\xc4\x6c\x09\x7d\x27\xe6\x3b\x29\x66\xcb\x16\x3a\x1e\x89\xc5\x8e\xd1\x60\xbe\x5d\x37\xe5\xfd\x86\x0e\xf9\x99\xe4\x14\xfe\x33\xc9\x62\x17\xe8\x69\x0e\x5f\x46\xe2\xa5\xfc\xc5\x06\x6f\x2a\xbe\x0c\x39\xf1\x8d\x80\x0e\x7d\x5b\xc2\x96\xe1\x46\x54\x39\x71\x7f\xb4\x45\xd4\xa6\x45\x81\xde\x0d\x2a\xe2\xd7\x96\xa7\xa8\xaa\x84\x01\xd7\xcf\x2e\x1c\x34\x8e\x41\x95\x03\x02\x6d\xab\x38\x4e\x6b\xfc\x21\x90\x77\x31\xb6\x3c\xe4\x55\x25\x0c\x8e\x59\x1d\xb9\x57\x6a\x3b\x62\x6b\xb1\x0c\x5b\x44\xf1\xd4\xf2\xfc\x54\x0f\xd6\x07\x47\x5d\xaa\xf2\x6f\x35\x73\x28\xa4\xdd\xb6\x4f\x48\xbf\x43\x2b\x8c\xab\xb7\x82\x7d\x13\x61\xd3\xab\xdc\x76\xed\x66\x17\x99\x7e\xde\x4d\x29\x34\xad\x4b\xd5\xa1\xd5\x15\x8f\x0a\x0e\x46\x10\x3f\x95\xe0\xc9\x7e\x70\xc2\x1e\xf8\xa9\x5c\xd2\x4a\xf5\xf7\x74\xc1\x27\xe3\xff\x46\x24\xbf\x4e\xa4\xa9\xee\x30\x2a\x4d\xcc\x2c\xa3\xa1\x36\x68\x35\x21\x28\x59\x04\xd4\x44\x95\x02\xb5\x85\x1c\x4c\x47\x99\xff\x97\x64\x9c\xba\xf7\x29\x94\x75\x8a\x8e\x5f\x5d\xbe\x52\x02\x87\xb2\x93\x9e\xc2\x83\xba\xe3\xb1\x0d\x46\x1d\x4f\xe0\xfc\x4d\x29\x7b\x9d\x0b\x23\xb8\x98\x9d\x5b\x87\xfb\x92\x70\x0f\x3e\x7b\xdc\xc2\x5f\x17\xcd\x19\x86\x07\x36\xf5\xfc\x5a\xb2\xe5\xb9\x88\x92\x10\x7b\xa4\xa4\x64\x6a\xa3\x18\x0c\xf4\xa4\x42\x61\x49\x94\x16\x17\x90\x01\x2f\xad\x6e\x1f\x7d\x12\xe2\x20\x5b\xda\xc7\x8a\x79\x48\xfb\x5c\xfa\x6c\x4e\x42\x0a\x35\x27\x89\xb7\x17\xe8\xd4\xc8\x08\xce\xc6\x76\xd7\x1c\xd5\x91\x33\x02\x4a\xea\x78\x01\x6a\x88\x32\xc7\x58\x3f\x64\xc3\xa8\x68\x52\x96\xa3\x58\x44\x20\x11\x3e\xf8\xa8\xd7\x36\x81\xbc\xdf\x67\x6b\x57\xe8\x3f\x08\x4d\x92\x9b\x9e\x14\x0e\x8c\xc6\xa4\x71\x24\x15\x0a\x7d\x4d\x97\xa8\xe6\x49\x7f\x31\xd6\x58\x4b\x7e\x99\x0b\x43\x7f\x41\x38\x0f\x04\xd5\x2c\x96\xf7\x5e\xfc\x2e\x75\xb5\xa4\x8b\x4f\x6c\xa9\xef\xcd\x49\x1d\x7f\x9f\x21\x67\x02\x23\xbb\x99\x52\x32\xaa\x5b\xb7\x9e\x38\xf6\x1a\x47\x94\x17\x51\x03\xf8\x22\x05\x4c\xc2\x2c\x83\x0a\x9b\x8c\xb2\x2d\xd7\xbf\xd2\x3e\xb1\xc7\x27\xdc\x5a\x62\x3f\x4d\xed\x9e\xda\xed\x4b\x9e\xfa\x21\x4d\x7d\x1e\x53\x3b\x9a\x51\x9e\xfe\x67\x9a\xfe\x75\x6a\x3f\x56\x45\x72\xf9\x63\x9a\xfe\x38\xa5\x76\x57\x7e\x38\xd0\xaa\xbf\x6c\xdb\x57\x35\x9e\xfc\x51\xab\xbf\x7d\x6e\x1f\x1d\xaf\x94\xde\xdc\xb9\x30\x21\x65\xa4\xf8\x70\x10\x0e\xc0\x7c\x76\x16\xbe\x47\xce\xaa\x49\x60\x0a\x9c\xda\x32\xf7\x56\x47\xac\x85\x44\xc1\x5d\x9f\x8c\x05\x1a\xb8\x99\x52\x24\xf4\x34\xbc\xe5\xe6\xf5\xeb\x7d\x20\x36\xec\x7d\x60\x3d\x0c\x0c\xc3\x0c\xc4\x2d\x00\xbc\x63\x51\x1b\xc2\x61\x26\x99\x0a\x14\xa7\x60\x80\x02\x4a\xda\x86\x9d\xc7\xec\xeb\xcd\x2c\xcf\x3e\x9d\x7f\xe7\xb8\xff\x87\x75\x33\x93\xca\xbd\x63\x04\x61\x1c\xe1\x12\xfb\xcf\xad\x05\x59\x7e\xc0\x86\x33\x7f\x43\x36\xf7\x32\x97\xb3\xf1\x32\x07\x9c\x70\xbb\x90\x6a\xf5\x7a\x15\x2f\x73\x0d\xfe\xa7\xf5\xd4\x81\x8f\x72\x9b\xb6\xd3\x37\xaf\x46\x5c\x59\xd8\x63\x3c\x1a\x9b\x32\x6a\x75\x7d\xfe\x6c\x3d\x55\x4d\xf6\x86\xf8\x6b\x61\xbd\x14\x4b\x24\x9e\x33\x61\xcc\xd7\xf9\x21\xdb\x58\x70\x46\x34\xad\x76\x38\xfb\x0a\xe2\xe1\x6d\xb3\x76\xcf\xc5\x6b\xe7\x87\xeb\x46\xdb\xeb\x0b\x57\x20\x34\x35\xbb\xae\x87\xb3\xce\x90\xab\x5a\x4e\xe7\xa3\xd1\x70\x32\x0b\x83\xf7\x48\x6f\x7f\x26\xaf\xca\x9b\x56\x77\xeb\x92\xfd\x00\x8a\x61\x63\x52\xc7\x7c\xab\xfe\x10\x5e\x5a\x58\xa6\xa3\x4d\xa0\x3a\x7f\x11\xcb\x72\xfe\xb2\x79\x55\x23\x30\x85\xea\xf1\xf1\x91\x74\xc3\x25\x14\xb7\x18\x51\x4b\x2b\x14\x82\x65\xf0\x0f\xd8\xe3\xfa\x97\x82\x59\xfd\x01\x9a\x2e\xd2\xa1\x8b\x00\x17\x47\xcd\x4a\x41\x02\x6a\x4d\x5c\x0a\x59\x27\x9e\x38\x5a\xeb\x1b\x06\xf0\x79\xbd\x61\xab\x2f\x26\xf7\xa1\x63\x2a\x8d\x4a\x86\x92\x4a\x8e\x76\x99\x23\x90\xa3\xc8\xca\x7b\x45\x40\x50\x25\xb0\xe6\x0d\x67\x01\xe1\xed\x38\x52\x25\xa0\x3b\xa9\xd3\x3d\x7d\xe7\x4b\x57\x7b\xb3\xe1\x4e\xc0\x9d\xa0\xc2\xee\x67\x94\x57\x27\x47\x9d\xa8\xc4\xbe\x1c\x47\x9b\x2b\x30\xe6\x3b\xf2\xc4\xdb\x58\x41\x86\xa3\x4b\xce\x4c\x88\x74\xf5\x82\x05\x6a\xd5\x00\xc0\xa9\x09\xc0\x0c\xdd\x84\x65\x3c\x0b\x33\xd5\xe4\x94\x95\x45\xcf\x42\x90\xed\x88\x9d\x25\x66\xe6\x65\x6e\xf5\x7d\x79\x78\xc0\x19\xb1\xda\x50\xcc\x14\xdf\x44\x09\x56\x4d\x5a\x89\xdc\xc5\xd6\x83\xa9\xe2\x7c\x88\x24\x94\x3b\x12\xca\x72\xae\x90\x53\x10\xeb\x26\x6a\x1d\x1b\x46\x2f\x5e\x87\x17\x75\xf6\xe8\xf0\xad\x1d\x51\xdc\x4b\x14\xdb\x3d\xd5\x54\x99\x25\xc5\x18\x73\xfd\x74\xa5\xd6\x32\x5e\x35\xad\x05\xcd\x8b\xec\xda\x7b\x96\xb8\x6d\xd0\x36\xb9\x72\xc5\xbb\xa6\xd5\x7b\xde\x90\xda\x80\x14\x96\x4d\x85\xe9\x27\x49\x41\x02\xe8\x3a\x84\x96\xfe\xf6\x92\xc4\xfb\x5b\x55\x98\x62\x80\xa3\x4e\x37\xd6\xcf\x90\xee\x20\x08\x97\x3b\xc3\xf9\x6c\x67\x18\x09\xef\x04\xef\xa5\x0c\x6b\x20\xa7\x46\x51\xef\x0f\x10\x29\x42\x8e\x5e\xd8\xab\xd3\xd6\xf5\xd2\x95\x82\x2d\x15\x50\xb0\x35\x39\x74\x4d\x55\x53\x2b\x70\x09\x75\xc2\x47\x31\xc1\x01\x96\x46\xfb\xf2\xe8\x60\xe7\x06\x2f\x82\x29\x72\x00\xd5\x72\x1a\xc3\xd7\xca\x60\x8f\xa1\x4c\x05\x08\x00\x55\x7a\xe3\x15\xa9\x53\x79\x4f\x4d\x84\x79\x44\x2f\x80\x58\xec\x0b\xa2\x4c\xa0\x0a\x64\xfb\x82\xf0\xd4\xf0\x8a\xbc\xd1\x7b\x8a\x4c\xaf\x58\x46\x98\x32\x54\x95\x56\xe7\x55\x3c\x6b\x6c\x8b\xe2\xaa\x7d\xb5\x2f\xc6\xf0\xa7\xf5\x18\xba\x86\xc1\x68\x42\xfe\x2c\xf4\xd6\x04\x92\x69\x5a\xf7\x6f\x1d\x83\xef\x9a\x56\x27\xb3\x91\xb9\xef\x0f\x41\x56\x49\x50\x1f\x8d\xc9\x5d\x2c\x51\x93\x90\x79\xaf\xa3\xbe\xb5\x63\x6c\x04\x67\xec\xe8\xe9\x57\xf0\x9b\x6c\x03\x50\xc4\xa0\xbd\xb5\xbb\x82\x25\x1b\x07\xad\x0b\xd7\x06\x54\xf3\x54\xcd\xad\x9f\x81\x51\xd6\xc6\xe6\x61\xe0\x50\x62\x42\x34\x21\xaf\xe2\xb5\xa8\x2b\x15\xc3\xf9\xea\x48\x99\x92\xe6\x82\x6d\x07\x7a\xf3\x14\x6d\x27\x12\xd2\xee\x50\xb1\xc8\x82\x44\x50\x9b\x71\xa6\xee\x6e\xa8\x35\x0e\x0c\xe3\xc1\x64\xbf\x90\xa2\xf9\xc8\xab\x67\x54\x9e\x78\x4e\xaf\xf2\xad\x2b\x32\x23\x7b\xaf\xcc\xb8\x71\x2e\x7d\x84\xcd\xb4\x79\x88\x51\xc9\x5b\x0e\xbb\x26\x45\x15\x6a\xcb\xcd\x20\xf8\xa2\xa7\xaa\xc9\xe3\xcf\x50\x8d\xa4\x7a\x18\x60\x46\x49\xe9\x3b\x04\x7b\x60\xae\xc6\xf0\x1d\xa6\x02\x41\x51\x6b\x8c\x10\x86\xfd\xc1\x41\x71\x05\xde\x61\xd7\x37\xb8\x70\xdb\xd8\x1d\xec\xf0\x5b\xe6\x74\xc7\xbf\xd7\xdd\x92\xaa\x71\x7f\x95\xa4\xb1\x52\xf3\x05\x37\x54\x6c\x2f\x94\x10\x27\x49\x1a\x7e\x66\xf6\x53\x27\x78\xd2\x0b\x15\x9b\xaa\x52\x81\xa4\x60\xe1\x20\xaf\x75\xe4\x9a\x5f\xe5\x45\xb0\x26\xe7\xf3\xb4\xb6\x9f\xea\xca\x2b\xdc\xf7\x65\x1a\x3e\x96\xbd\x80\x27\xbc\x8b\x40\xdd\x6a\xc0\x84\xb2\x4d\x7f\xe5\xb9\xe6\xef\xff\xbe\x29\xfe\xde\x46\x49\xa2\xbb\xc2\xfc\x26\x07\xd2\xf7\x38\x2d\xa5\xbe\x2c\xd7\x96\x96\xd5\x5f\x81\xbf\xad\x6b\xdf\x35\x3d\x64\xef\x76\xcd\x27\xa9\xdb\xa6\x8a\x3d\x8b\x62\x5a\x7e\x8b\x06\x01\xcb\x2f\x6a\x4c\x12\x68\x0b\x3a\x5a\x34\x4b\x9f\xe1\xa1\x75\xe1\x56\xa6\x61\xd1\xb3\x3d\xa4\x55\xf6\xa2\x91\x90\x30\xd8\x07\xd3\x4b\x0f\x27\x0f\xbd\x8a\xd6\x56\x42\x89\x83\x83\xd1\xeb\xca\x79\x10\x3d\xd3\x57\xc0\x6f\x51\x97\x14\x4a\x2b\xe4\x64\x6a\xc9\x7c\x81\x9e\x7d\x41\xd9\x70\x59\x3e\xda\xde\xe1\xc0\x0e\xb2\x3e\xe6\x0e\xd7\xbb\xcc\xa7\xec\x9b\x07\xee\x3c\x61\xab\x8a\x79\x30\x0c\xa8\xf6\xa6\x9b\xd3\x57\x39\xe9\x05\xe2\xad\x90\x8c\x2a\xa3\x4d\x4c\x35\x33\xcb\xeb\xb3\x72\x28\x67\xc5\xfe\x59\x0b\x85\xdd\xae\xe9\x81\x36\x52\x4e\x23\x47\xe9\xed\x6d\x45\x4c\xb4\x2d\xab\x4e\xc1\xb1\xa6\x72\xe9\xac\xee\xee\x48\x19\x57\x00\x80\x77\xe8\x20\x88\x43\x46\xcf\x09\x5e\xf7\x74\x9f\xf8\x49\xc2\x58\x89\xf3\xd8\xec\x52\x2c\xff\x97\xf4\x6b\xa4\x93\x85\xa7\x19\x9e\xc3\x59\xcc\x52\xc5\x76\xeb\x14\x39\x57\xc2\xd7\xcc\xed\xb3\x8b\x5b\xfe\x25\x3e\x9d\x0a\x63\x88\xc3\x5d\x5c\x28\xf3\x83\x71\x75\x6f\xd6\x38\xfb\xcb\xd6\xf5\xb8\x4e\x0e\x7b\x49\x52\xed\x19\xc6\x79\xcf\x7c\x5f\xb6\xfe\xb2\x0e\xde\x23\xa7\x49\x6a\xc0\x18\xfe\x18\x99\x4d\x5c\x42\xce\xad\xf8\x7d\x12\xbf\x4b\xf1\xdb\xb4\x8e\xe7\xa0\x53\x1c\xc7\xf0\x73\xc4\xdf\xa2\x29\xfc\xcc\xda\x8c\x2a\x6c\x5a\xdd\x31\xe3\xe0\x9b\xd6\x94\x52\x48\x5f\x7e\xe1\xea\xc8\x7d\xca\xd3\x3b\xcf\xfc\x77\x32\xdf\xa4\x39\x3b\xcf\xfc\x44\x99\x6d\x55\x1d\x3c\xd5\xd6\xe0\x44\x82\x03\x9b\x56\x2f\x77\x5a\x57\x4d\xeb\x8a\x6e\xb6\x33\x6b\xb3\x76\xd6\x09\xc8\x5a\x96\x44\x73\xbe\xfe\xc2\x04\x8b\x95\xe2\xd4\xe9\x71\x5d\xd2\x42\x91\x35\x09\xe3\x90\x4e\xc3\x23\x3a\x9a\xcd\x27\x8c\x16\x95\xb0\xc1\x4d\x75\x74\xf0\x90\x5c\xaa\x77\xae\xf7\xc6\xef\xca\x93\x1c\x49\xc2\x2a\x3d\xd4\xc1\x3d\xe8\xe6\xf1\xfd\xae\x69\x1d\xee\xe6\x58\x51\xd0\xd6\x99\x4b\xc8\xe9\x34\xf5\x99\x39\x6b\x0b\x92\xa6\x3b\x4e\x12\x46\xa1\x1c\xcd\xb8\xeb\xad\xee\xb4\x15\x8d\x5d\xb3\x3e\xa3\x02\xbb\x9c\xd6\xa5\x99\xab\x20\x32\xa6\x14\x82\xfb\xa9\xac\x6c\xda\xcf\xea\xe6\x21\xb7\xed\xc2\xb4\x55\x0b\x5c\x4c\x5b\xc7\xec\x2f\x42\xc2\x37\xd2\x98\x14\x4a\x98\xb6\x42\xf0\x78\x0d\xf8\x80\xf7\x5d\xaa\xd4\xf1\x0f\xda\xf1\x3f\x8e\xb0\x4f\xbc\x56\x1b\x3c\x41\x15\x8e\xeb\x6a\xa2\x4d\x0f\xb7\xee\x0f\x29\xfe\x7a\x26\x56\x63\x58\xc7\x01\xca\x7c\xbe\x3b\xa4\xf8\x9b\xfc\xdc\xbb\x66\x9f\x8f\xeb\x15\xd3\xb7\xa6\xe1\x4c\x2e\x48\x41\x68\xc1\x40\x19\x1f\x1f\x3d\x51\x99\x5d\x12\x6e\x50\x59\x6c\x7a\x08\x5f\xd5\xd4\x37\xe7\xb0\x27\xf9\xba\xbe\xe4\xf0\x78\xab\xc7\x33\x8a\x9f\x67\x52\xe9\x71\xa0\x7f\x94\x49\x98\x0a\xfb\xb7\xdd\x3e\x18\x85\xfd\x18\x69\x3b\xfa\x78\x4e\x60\xea\x60\xff\xa5\xc9\x71\x4c\x60\x2e\x61\x3b\x8a\x09\x3e\xf7\x5c\xd8\x95\xe2\xf5\x92\xbd\x72\x6b\xe1\xa3\x39\x11\x1b\xa9\xd2\x13\x07\x2a\x80\x8a\x2d\x9f\x5a\x37\x81\x38\x88\xa3\x29\x51\x89\xf7\xbe\x48\x7c\x2c\x91\xe3\xd8\xbc\x91\x6a\x9c\x91\x64\x3d\x97\x5f\xc8\xa2\x6b\x22\x30\x33\xec\xe5\xa8\xe0\xff\xca\x06\x90\xa4\x5e\x77\x8c\x04\x50\x29\xd0\x28\x8b\x95\xbf\x96\x44\x80\x18\x0c\xc2\x3e\xb9\xc9\xa4\x45\x62\xcb\xe9\x90\x37\x3d\xc9\x81\x3c\x40\xce\x9a\x75\x93\x82\x6a\x0d\x81\x9c\xd6\xb3\x5b\xc4\xf1\x08\xf1\x2f\x93\xc4\x23\xe4\xfe\x90\x56\x68\xeb\xd2\x67\xe4\xcd\x37\xda\x3a\xf3\xdc\x56\x89\xd5\x7d\x33\x76\x91\xed\x15\xc8\xdd\x21\x35\x0c\xaf\x40\x9a\x87\x34\x49\xd2\x8c\x96\xf0\x6d\xff\x7d\x38\xf7\x3b\xe1\x34\x2d\xc3\xc8\xc1\x61\x3d\x97\xf4\x9d\xb5\xe5\x7c\x68\x3e\xab\xac\xce\xb3\x98\x4a\xef\xdc\x44\xdc\x64\xe9\x37\x13\x46\xc8\x3d\x55\x31\x48\x01\x6d\xc2\x63\x99\x72\x1c\xb8\x0a\xa2\xd6\x20\xe9\x97\x20\x48\xe1\x06\xb6\x40\x9a\x4f\xb8\xe3\xb9\x6a\x11\x0b\xf1\x7a\x1c\xa7\x4d\x76\x23\x33\xf8\x2d\x28\x86\xbf\x85\x7f\xff\xef\xd0\x03\x47\x37\xf0\x3e\xe8\x09\xec\xd4\xbb\x4e\x3d\x56\xac\x56\x3e\xf9\x2e\x81\x01\xdc\x1a\x78\xc4\xb7\x96\x8e\x4f\x7c\xeb\x59\xc2\x92\xb0\x48\xd1\x1a\x3e\xae\x6d\x85\x0e\xc3\x30\x7f\x28\xb2\x13\x92\x24\x8a\x62\x90\x9e\x52\x37\xdf\xa5\x98\x5f\xce\x0b\xdf\x23\x94\x6f\x10\xaf\x48\x02\x70\x9b\xf4\x58\x62\xbd\x61\x6f\xcf\xfc\xed\xd9\x61\x3f\x04\x2e\x70\xe7\x45\xe2\x39\xd4\x8a\xa6\x45\xe2\x3b\x1c\xd2\x29\x66\xe9\x8c\xe0\xbf\x11\x6f\x51\x6a\x2c\xc2\x7a\x7f\xd9\xe3\x64\x4a\x93\x21\x8c\x1c\xb4\xae\x66\x03\x4c\x8d\x7f\x8c\xa4\x67\x3e\xb9\xf6\xe2\x15\xd6\x5e\x1f\xa8\xb5\xc4\xe0\xde\x28\xdd\x09\x3f\xf4\x8b\x0c\x6a\x9d\x2c\xb9\x45\x00\xd5\x27\xb2\x77\xc2\xca\xc2\x2c\x7a\x30\x8b\xd2\x9a\x5b\xd5\x72\x2d\xc9\x6a\x79\x69\x76\xba\x8f\x03\x12\x51\xd3\x6f\x9d\xba\x88\xbb\xc1\x65\x8f\xd8\xe7\x89\x13\x17\x55\x4a\x36\xfb\x55\xce\xb4\x20\x20\x0a\xbf\xd4\x0b\x2a\x41\xd1\xb7\x03\x8a\x79\xb4\x14\x95\x68\xef\x05\xac\x11\xdd\x19\xca\xcd\xd6\x86\xad\xd9\x70\x24\x5b\x66\xcf\xb2\xe9\x43\xd1\xf4\xe1\x7f\xd7\x74\xd3\x3a\x59\xe6\x49\x68\xb2\xbb\xf6\x7b\x8a\x81\x5b\x4b\x17\xd3\xe2\x0f\x64\x3f\x6c\xa6\x39\x5a\x02\xf8\xa8\xf6\x8a\x3f\xb4\xb5\x39\xd3\x2c\xe3\x70\x84\xdb\xe8\x75\x39\xd3\xdd\x48\xcb\x3d\xef\xa7\xfb\x5d\x9e\x87\x7e\x9f\x92\xd0\x79\x90\x2a\xb6\x5d\x33\x42\x95\xc8\xf6\x00\xea\x38\xee\x19\x8e\x88\xdf\x35\xdb\xa8\xd2\xb6\x3d\x2b\x12\xd6\xdd\x83\x7f\x40\x15\xfd\xac\x8e\x97\x33\xfd\xaa\x2c\xff\x6a\x67\x4c\xa8\x43\xc9\x61\xaf\x32\x99\xda\x57\x35\xa1\xc4\xdb\xa7\xe4\x4a\xea\xc6\xe0\xc3\x5e\x65\x3c\xb5\x2f\xdb\x7c\x23\x16\x0e\xa5\x87\x9c\x28\x93\x8b\xa6\x9f\x57\xf7\xe6\x39\x27\x5b\xcf\x46\xe6\x39\x23\x4e\x73\xec\x0d\x18\x58\x1e\xce\x00\xed\x22\xc7\xf7\xd8\x56\x01\x32\x67\x3c\x65\x18\x99\x3d\x5d\xb6\x59\xbb\x13\xfd\xc8\x00\xae\x09\x6a\xcc\xd2\x7e\xe7\x6b\xb4\xdf\x37\xd1\xad\xb0\x4f\xd3\x17\xf0\x17\xae\x4b\x0f\xc7\xba\xbd\xa3\xe4\x1c\xeb\x69\x38\x0b\x31\xce\xf3\x01\x25\x85\x82\x60\x01\x76\xab\x9c\xe0\xbb\x37\x2f\xea\x78\x52\x67\xe4\xf7\x85\x50\x46\x19\xdf\x49\x25\x93\x30\xe4\x44\xf2\x51\xac\x52\x1e\xe5\x53\x67\x28\x9f\x6e\xff\xe1\xb9\xfc\x3c\x79\x51\x3c\x06\x52\xfa\x2e\xcf\xdc\x93\x1f\xaf\xf1\x86\x80\xfe\x82\xcd\xc2\x63\x3a\x0b\x9a\x3e\x3b\x08\xb7\x48\x4d\x10\xa5\x3e\x35\x11\x52\x0e\xcc\x04\xc3\xea\xcc\x63\x13\x5c\xff\x3a\x9d\x3e\x7b\x28\x23\xe7\x56\x60\x1d\xe4\x34\xe5\x93\x36\x65\xb7\xfc\xee\x15\xa4\x95\xe7\x8c\x62\x2a\x50\x2b\x7c\x94\xca\x2a\x1e\xa1\x56\x97\x9a\xc8\x7a\x34\x27\xa7\xf8\x35\x9a\xd0\x7e\xe8\x0d\x27\x41\x38\xb1\x4b\x78\x3a\x7b\x8e\x43\xfb\x65\x42\xf1\x74\xe2\xdb\xcd\x05\x5d\x81\x36\xff\x23\xf1\x80\x9b\xb5\xc2\x47\x4c\xa1\x97\xc5\x0e\x5b\x34\xd6\x21\x96\xc6\xfa\xd4\x16\xcf\x25\xb4\xa2\xd6\x51\x9c\x24\x26\xfb\x49\x1b\xfb\xaa\x97\xc4\x50\xf2\x08\x82\x26\xe8\x18\xa7\x29\xae\x8d\xad\xce\x10\x2a\xe8\x0c\x45\x05\x70\xad\xf1\x6d\x2a\x0a\x76\x86\xac\x20\x66\x13\x03\xcf\x25\x84\xab\x14\x9e\x85\x63\x7a\x86\x4a\x7a\x94\x6e\xc8\xb1\x61\x69\xd7\x85\xf6\x29\x03\x5b\xa0\xc2\xce\x95\x90\x45\x94\x23\xc1\x87\x85\x3c\x8e\x74\x34\x41\xb7\x2f\x9e\x5a\x60\x9a\xbb\x62\x6c\xf6\x54\x96\x42\x19\x6d\xb9\x16\x08\x1f\x0d\xa3\x2b\x64\x8e\xe1\x23\x96\x25\x90\x23\x13\x8f\x62\x2d\x11\x7a\x78\xe2\xa5\xb0\xf6\x28\x72\x75\x86\x5a\x2e\xbe\xcb\xee\x60\xaf\x9f\x8b\x8e\xc2\x32\x81\xa1\xb2\xc0\x61\xbe\x89\x24\x91\x3d\xbe\xc3\x63\x41\x29\x7e\x65\x5c\xf5\xa5\x10\xed\x43\xaf\xdf\x6d\x5c\x43\xb0\x7c\xd7\x52\xf1\xb2\xd5\x78\xe6\x96\x31\x4f\x12\x25\xdd\x89\x6e\x9e\x85\x69\x37\x7b\x6a\x84\xe9\xf3\x51\x9c\x3e\x77\x86\x68\xe5\x5c\x6c\xe8\x3a\x08\x89\x57\x18\x4a\x01\xed\xd1\x52\x9c\x14\x47\xcb\x56\x73\xac\xac\x52\xc2\x23\x91\x1c\x1e\xe9\xc9\x3d\x99\xbb\x97\xc9\x7d\x5e\x15\xc9\xe7\x55\x3d\xb9\xe6\x19\x86\x1c\x39\x45\x98\x8a\xbb\xd1\x7d\xa9\xf3\x5c\xab\x71\x1b\xbd\x54\xe5\x37\x15\xdf\x00\x3f\xfd\x52\x03\xa0\x7e\xa9\x81\xf4\x5e\x8f\x41\xd2\x05\x39\x39\xf1\xad\xbb\xc8\xf4\x53\x49\x32\x28\x21\x04\x9f\xb9\xf5\x85\xd4\x57\x0f\xb9\xe5\x45\x08\x72\xee\x24\x69\x5c\x99\x21\xbe\x69\x33\x6e\xb6\xce\x1f\x61\x3f\xb0\x66\x5a\x47\xae\x19\x32\xa2\x4b\xea\x31\xb0\x44\x2e\x3d\xe4\x15\x43\x26\x51\x37\x3c\x07\x2e\xc4\xb3\x9f\xd7\xd8\xb6\x7f\xa9\x71\x94\xca\x88\xec\xab\x2f\x1b\x8e\x6f\xc4\x42\x1f\x2d\xa5\xa9\x55\x6f\x29\x5d\x27\x87\x47\x44\xb8\x2a\x3a\xaf\x12\xb0\x06\xf8\xb1\x9f\x67\x8a\xc0\x8e\x8e\xd3\x1a\x42\xaf\xd2\x5e\x9b\xa1\xf1\x2c\x34\xb6\xc6\x9e\x2b\xb4\xef\x29\x7a\x5d\xc1\xc7\xc3\x7b\x75\xb9\xa1\xae\xa3\x74\x70\x85\xc2\xdf\xaa\x26\xc2\x97\x22\x1c\xc9\xe1\x3d\x72\xee\x24\xa9\x56\x10\x8e\x41\x5a\xbd\x67\x75\x4b\xc2\x4e\x06\xa1\x05\xa1\x40\x28\x3c\xaa\x98\x5f\x66\x12\xae\xb0\xe0\x87\xac\xe8\x9b\x12\x53\x48\xe0\x6a\x7d\x7d\x51\x50\x72\xb4\xe4\x6f\x02\x28\xa2\x6f\xc0\xdf\xbd\x6b\x5a\xb5\xda\xb6\x29\x38\xa9\xc9\x9b\x4c\x18\xc5\xc2\x7b\x6b\x18\xaa\xbb\x65\x27\x0b\xc3\xe7\xd5\xb4\xbb\xbd\xb4\xbb\xe7\x5f\xd6\xba\x7b\x5e\xd5\xbb\xdb\xcb\x76\xf7\xfc\x0b\x9b\x11\x1b\x16\x44\x3b\xa6\xba\xfc\x9c\xa2\x0a\x34\x19\x8f\xa4\xd6\x27\x49\xb4\xb0\x21\xbb\x55\xc1\x64\xec\x56\xc1\x4f\x87\x7e\x3a\x73\xf3\x84\x9d\xd9\xca\xf4\xe1\x3a\x96\x82\xf4\x57\x21\x41\xe0\x1d\x44\x7e\xbe\x38\x62\xe5\x03\xb9\xf2\xf2\x94\x5f\x69\xc7\xdd\x9d\xa4\x52\x29\xe0\x4a\x79\x26\xc1\x75\xd5\x51\x2c\x12\x8e\x62\x96\x00\x8f\x30\x14\xf1\xdc\x19\x72\xf9\x7a\xf4\x6d\x1d\x81\xc1\xc2\x8c\x2f\xf8\x65\xf9\x17\xfd\x6b\x0a\x47\x65\x8d\x02\x6a\x9f\x42\xd6\xeb\x6d\x64\x41\x18\x02\x10\x44\x43\x7f\x3e\xdd\x40\x96\xd3\x88\xf2\x2b\xaa\xc3\xfb\x5c\xfc\x2f\x4f\x0a\x71\xd4\x0a\xec\x98\xa6\xf3\x83\xd4\x59\x5b\x30\x58\x1f\xb6\x6a\xb1\xe9\x71\x15\x5e\x8f\xb2\x7f\x0c\xd3\x70\x0a\xdc\x03\x57\x7b\xf0\xc8\xc3\xb0\x9c\xfa\x8c\x97\x6b\xfb\xf0\x84\x10\xa6\x2a\xe3\x61\x36\xe3\x77\x4f\x66\xfc\xee\xb9\xca\xc6\xec\xd1\x30\x4c\xbd\xaf\x25\x84\x77\xd3\xa3\x0b\x54\xa8\xd2\xce\x9b\x7a\xef\xb5\x9c\x47\x31\xcf\x09\xf3\xf5\x90\x39\x59\xb6\x0c\x50\x8d\x8e\x41\xe1\xd7\x58\x01\x14\x22\xe4\xa2\x8d\x04\x8e\x95\xea\x5c\x3e\x63\x33\x55\x15\x6c\x88\xe0\xba\x14\xb8\x5d\x61\x9e\x92\x9e\xcb\x72\xfa\xf8\xb4\xc9\xd9\xa0\x45\x36\x71\xbf\xef\xef\x05\xf0\x83\x4b\xe9\x8c\xfa\x45\x36\x55\xf0\xe9\x90\x7f\x72\xbe\xc5\x1a\x25\xc0\xd8\x89\x6f\xe9\x91\x0c\x1e\xe0\x9d\x26\x3b\x55\x37\xa5\x3f\xb7\xff\xf0\x13\xa6\x47\xa9\x89\x6c\x88\x5d\x24\x64\x85\x9d\xa1\x61\x34\xc5\x56\x9f\x46\x14\x97\x84\x58\xda\x69\xb2\xd7\x0c\x08\x4d\x9e\x5f\x95\x6c\x2d\x45\xaa\x6c\x09\x7b\xa9\xd1\x26\x23\xb0\xf4\xfd\xc6\x30\x2d\xab\x2c\x43\xe4\x3e\x29\x54\x28\x17\x71\xc9\x37\xf5\x93\x42\x3a\x48\x1d\x04\x99\x0f\xa1\xbc\xda\x0c\x8f\xb2\x1f\xce\xa5\x0b\xcf\x73\x81\x1f\x2e\xb6\x5e\xe7\x5f\xa9\x9b\x81\x8b\xba\x1e\xd8\x4e\x46\x85\x7b\x24\x34\x49\xfc\xa5\x38\x8a\x1e\xbb\x04\xf8\xeb\x7a\x1d\x59\x93\x47\xb3\x51\x87\x40\xdd\x93\x47\xf3\x4b\x9d\x61\x43\xee\x2c\xe5\xaa\x8e\x2f\x80\x51\xb8\x12\x8c\xc2\x55\x9f\x72\x61\x7b\x7c\xc2\x7f\x3d\xf1\xfb\xed\x13\xff\xa5\x0d\x62\xfd\xc1\x4e\xb3\x88\x7c\x71\x9a\xd6\xb0\x2d\x59\x86\x6b\xc5\x46\x3c\x9f\x73\xe6\xe1\xa4\x27\x53\xee\xba\xf2\x29\x68\xc8\xa7\xaf\x2a\xed\x4c\xe5\x3b\xef\xc8\xa7\xe3\x2b\xf2\x3e\xe8\xd2\x78\xd8\x7e\xbf\x8d\x0d\x11\x83\x86\x15\x0f\x67\xdf\xbb\xb3\x38\xdc\x04\xa0\x1f\x91\x3c\x9a\xef\xba\x86\x31\x16\x60\x77\xd7\x15\x3a\x46\xed\x8d\x82\x6b\x9a\x46\xd1\xca\x19\xad\x7b\x35\x83\x2f\xc3\x36\xa1\xe4\xdb\xa5\xbc\x07\x15\x4b\xd0\x33\x8c\x9b\x4b\x53\x3c\x73\xab\xf4\x71\xbe\x52\x9c\xa6\x5e\x3c\x6c\x57\xbe\x88\x42\xc3\x36\xb2\xbf\x70\x85\xb8\xe3\xad\xba\x57\xc7\x57\xac\xeb\x2f\x1f\x36\x47\x7b\x7c\x45\x32\xb7\xaa\x75\xce\x49\x50\xb0\xf5\xb1\x8e\x4c\x86\xe7\xb3\x2a\x00\x5f\x85\x4e\x6d\x46\xe0\x7f\xd6\xd3\x2a\xb9\xe7\xfc\x08\xd4\xa5\xae\x6e\x59\x95\xab\x75\x16\x70\xbd\xae\x2b\x06\xc9\x77\xb9\xa0\xfc\x4d\x5d\xb0\xd0\x06\xf1\x78\xc0\x37\x86\x6b\x94\x98\xe5\xae\x6a\xc2\x15\x75\xbb\x6f\xfa\x98\xe5\xd2\x1d\xab\x5e\xab\xd2\xde\x89\x2c\x5d\xd3\x64\x34\x70\x54\x07\xa2\x16\xb0\x36\x08\x1f\x1d\xaf\x62\x86\x86\xe1\x5b\xf4\x1f\x33\xc4\xbc\x35\x0c\x6f\x81\x78\x43\xb6\xe9\xb7\xce\xc7\x8c\x5e\xc4\xfc\x21\x40\x8c\x91\x03\x32\x5e\xd0\xb1\x5c\x35\xae\x36\xa1\xed\x36\xf5\xb6\x83\xcd\xb7\x4f\xba\x90\xef\x21\x2b\x43\xaa\x75\x4d\x6a\x9d\x3d\x16\x97\x7d\x9a\xf2\x4a\x42\xb1\xc9\xf4\x2a\x8c\xe5\xb5\x4e\x7a\xd8\x47\x76\x55\x3d\x4a\x05\xbf\x02\xb5\xae\x05\x1b\x1b\x38\x3c\xb2\x4b\xad\x2e\x0e\x74\x96\x95\x55\x74\xfd\x48\x02\x27\xad\xc5\xb9\x9a\x99\x2c\x11\x1f\x5e\x60\x6a\x45\xff\xb0\xcd\x2f\xb4\x5f\x0a\xa0\x39\x72\xfd\x08\xd7\xfc\xd7\x8f\xa0\xc2\x44\xe5\x46\x06\xc1\x72\x86\x87\xbf\xfa\x19\x0f\xaf\x30\xac\x50\x25\xeb\x11\x0f\xb8\x5e\xb1\x53\x8b\x8b\xbe\xb8\x0a\xb9\xeb\xc2\x97\x6f\x53\xfc\xea\xc7\x74\x3a\x85\x98\xb6\x32\xd7\x73\x9f\xe2\x2e\xd7\xb4\xe7\x7a\x0b\x42\xe3\xe7\x47\x84\x24\xff\x25\x4b\xcb\x22\x4f\x7d\x76\xac\xb6\x63\xa9\xc4\x74\xd2\x13\x9f\xd6\x7b\x30\xaa\x4a\x0a\xb0\xb3\xf6\xa5\x0b\x55\x5c\x5d\x29\x04\x31\x59\xd0\xf4\xfd\x6b\x17\xdf\xd7\x40\x0c\x21\x5f\x19\x05\x5d\x4f\xbf\x9e\x9c\xe2\xc7\xa1\xbc\x78\x08\x1a\x44\xd4\x62\x75\x03\x56\x87\xe8\xd6\xf1\x8c\xb1\x96\x75\xf6\x7e\x7e\x8a\x45\xd6\x24\xf9\x22\x43\x82\xb6\x33\xd8\x43\x22\x04\xc5\x24\x7f\xed\x8a\x8b\x9b\x13\x24\x51\x3c\x38\xa2\x12\xcf\x98\x4a\x0d\xb1\xf3\x0e\x86\xdd\x9e\x16\x3d\xef\xe0\x42\x41\xe4\x43\xce\xb7\xba\x76\xef\xc1\xb6\x16\xe0\x9b\x2c\x9f\x7f\x95\xc7\xe7\xcb\xb5\xd6\xaf\xd3\x60\x56\x25\xfa\x23\xcd\x1e\xc8\x34\xb1\x87\x29\x6a\x95\x5c\x99\x2e\xef\x19\xcf\x7a\x1a\xe9\xc2\xa6\xdf\x43\xf8\xad\xb1\x63\xaa\xb4\x28\xcf\x7a\x68\xbd\x5d\x06\x4f\x3e\xd1\xe1\x26\x20\x1a\x48\x38\xa6\x04\xc3\xb5\x5e\x49\x67\x5d\x77\x5d\xf5\xc5\x97\x80\xc3\xbe\x2b\x30\x93\x5f\x03\xfd\xab\xb4\x08\x38\xc9\x19\x8b\xa6\x18\x9a\xc2\xa0\xa4\xf8\xee\xba\xa2\xdd\x1f\x11\x59\xaa\x93\x08\xe1\x14\x56\xe4\x34\xc1\x0b\x49\x77\x00\x92\x6d\xde\x75\x89\x1f\xaf\xed\x1b\x7f\x6d\xb7\x20\xd9\x59\x35\x75\x77\x5d\x94\x0b\x99\xef\xb6\x82\xe2\xd7\xae\xec\xca\xd7\x6e\x66\x94\xdf\xa6\x38\xd8\x6c\xe0\x6b\x17\xe5\x83\x69\xba\x56\x5d\xb5\x1e\xe7\x9d\x6d\xeb\xf1\xd8\x25\x9c\x62\xd1\x89\x53\xf1\xc5\xaa\x53\x59\x5c\xcd\xc6\x79\x27\x6f\x05\x64\xa7\xce\x3b\xaa\xf0\x4f\xb6\x09\xce\xdd\x26\x5b\xf6\x49\x56\x3e\x75\xb5\x2e\x6c\x82\xbc\x3a\x27\xce\x50\xe3\x91\x98\xe2\xeb\x4f\x99\xe4\x97\xa9\x4a\xde\x2c\x77\xde\xc1\x32\x7c\xef\xe8\x91\x22\xe7\x21\x73\x5b\xf9\x2d\xaf\xc8\xd7\xae\x2a\x32\x7e\xa4\xeb\x08\x7a\x03\x11\xa5\x90\x50\x20\xe4\x8b\x61\x64\xa0\x01\xd2\x45\x1e\xef\x24\x49\xae\x75\x79\xd7\x2f\x8a\xbb\x1e\x74\x36\xf1\x6a\x4d\xde\xf5\x86\x2c\xeb\x3a\xf5\xb0\xa0\xd4\xa4\x8f\x4c\x84\x59\x15\xac\x72\x0d\x29\x71\xbf\x3f\x59\xde\x15\x5a\x8a\xbe\x65\xd7\x04\x38\xd4\xa3\x31\xe5\x8b\x98\x65\x67\xa1\xc0\xf9\x97\x9c\x02\xd5\xb1\xc4\xe9\xcf\xe7\xf2\x76\x9e\xb3\xa9\xd1\x3f\xbf\xc0\x95\x6d\x67\x3b\x53\x5e\x93\xf1\x51\x1a\x5f\xa5\x58\x4b\xc6\x44\x31\x2a\x46\x67\xc5\x9c\x75\xce\xae\x72\x22\xf6\xca\xf5\x23\x16\x4a\x2a\x25\x5c\x12\x6c\x6a\x09\xea\x06\x0e\x0d\x69\x49\x87\x2e\x70\x66\x0c\xa9\xe4\x97\xf6\xa1\x08\xa6\x22\x1b\xb7\xeb\xcb\x50\x8d\x37\xf5\x0d\x8a\xee\x46\x69\xd1\xb1\x8d\xaf\x62\x73\x3d\x76\x31\xb8\x9b\xf3\xac\x1f\xff\x30\x1a\xc6\x47\x1e\xf1\x18\x0d\x65\xc2\x95\xa8\xbc\x04\xfc\x5e\x37\x7d\xec\x21\xd0\xad\x93\xd0\x23\xf4\x37\xc4\xeb\x6a\xd5\xb4\x7a\xb7\x9b\x24\xef\xf3\x79\x9e\xc2\x4d\x06\x3d\x48\x4e\xe3\x6a\x9d\xb3\x6a\xb2\x9d\x95\xad\xd2\x06\xd1\x20\xcd\x44\xd6\xa5\x86\x21\x21\xf3\xbc\xe3\x48\x55\x34\xdf\x25\x64\x1c\x21\x21\xce\x01\x4d\xc1\xc7\xd0\x5d\x71\xbd\xd1\x15\x57\xd3\x2f\xd0\xd6\x75\xe0\xa2\x57\xf6\xf1\x28\xc8\xb8\x74\x7d\xec\xc2\x2c\xd0\x35\xa5\x83\xef\x9c\xce\x5c\xdb\x49\x5c\x7a\x76\xfd\x29\xe7\xa6\xb6\x50\xc6\x3e\xfb\x13\x28\xfc\x16\x8a\xce\x43\x37\xcf\x5c\x42\x8e\x4e\xe5\xb5\x39\x63\xef\x0c\x63\xff\x13\x21\xb4\x15\x8f\x5d\x69\x71\x1b\x18\x46\x60\xfd\xf8\x07\x87\x24\xe4\xe3\xba\x89\x0c\xa3\x10\xb2\xbe\x3b\xf0\x54\x31\x7d\x88\xad\x4a\x02\xe8\x74\x24\x89\x3d\xbd\xdb\x11\xeb\x36\xb2\xc3\x24\xe1\xa1\x44\x95\xd7\x8e\xbf\x44\x6b\x6c\x6d\xfd\x89\x6b\x18\x21\x51\x38\x49\xbb\x93\x28\x39\x4a\x02\xda\x19\x66\x58\xf1\x36\x7a\x5d\x49\x56\xbf\x47\x53\x56\x5f\xc9\x74\xcb\x07\x6a\x40\x10\x56\x56\xac\x8d\x1c\x03\x8a\x48\x08\xd3\x2f\xf3\xcb\x0e\x7c\xed\x22\x09\xc9\xea\x5b\xa0\x7c\x6d\x58\x77\xf7\x38\x26\x3d\xc3\xf8\x51\x37\x03\xdc\x63\x8c\x84\xac\xfb\x2e\x4a\x12\x35\x55\xea\x71\x18\x21\x35\x6d\x85\x38\x49\x62\xf6\x94\x24\x6c\x46\x22\xd2\x43\xab\xc8\x30\x02\x70\x4d\x54\x28\xe5\xce\xdf\xcd\x6c\xd2\x1d\xb4\x4d\x39\xc7\xec\x3f\xa1\xa4\x4e\x84\xcb\xfe\xaf\x5d\xc3\x38\xd8\x57\xf3\xa9\x3a\xcf\x98\x83\x24\xf1\x11\x6d\x3d\x83\xac\x5e\x6a\x3d\x79\x6b\x60\x94\x6e\x57\x01\x67\xaf\xbe\x27\xee\x75\x25\x4d\xd9\x0b\x9f\x25\xc7\xec\xd3\x11\xcb\x0b\x37\xb6\xdf\xd7\x6e\x6c\xeb\xa9\xbf\x87\xd4\x00\x2f\xee\xa5\x9b\xeb\xde\xac\xd7\x71\xdc\x43\x4e\x93\xd4\x85\x6c\xe1\xec\x91\xbc\xf7\x3b\x74\x32\x9b\xee\x79\xf3\xd9\x6c\x38\x98\x86\x33\xc6\xdd\xdf\xdd\x4b\xae\x7f\x2c\x1f\x7e\xfc\x23\x9f\xa6\xe1\x2c\x47\xec\x1e\xf7\x5a\x97\x2e\xfb\x96\xf5\xa2\xa6\x5c\xf6\xde\xdd\x13\x8a\x1c\xe5\xc7\xe7\xc7\x3f\x84\x66\x58\x5c\xb6\xf7\x27\x8f\x6f\x7a\xe7\x99\xb2\xdd\xc9\xa6\x03\xd3\x56\xfd\xd9\xe5\x8a\xda\x6c\x1b\x1e\xe5\xc8\xb0\xad\x31\x7a\x95\xe4\xeb\x18\x5f\x5f\xca\xb3\x57\xe9\x3b\x89\x6d\xbe\x16\x10\x59\xa9\x7d\x50\xeb\xd1\xbc\xaf\xe1\xd7\x01\x10\x74\x2b\x18\x8b\x00\xd2\xbb\x7b\x50\x6c\x0d\x14\xa7\x32\x96\x12\xa3\x71\x0b\x78\xd4\x95\xdc\x0e\x4e\x9e\x0d\x11\xe5\xe6\x00\xdc\xff\x0c\x2f\x06\xb7\xea\xa2\x86\xc8\x77\x4d\xc6\xd9\xa4\xea\xd4\x25\xae\x0f\x00\x61\x51\x3c\xd7\xf1\x8a\x45\x86\x3d\x02\xe2\xb3\x2d\x94\x24\xbe\xd5\x0d\x70\xc8\xe8\x57\x1f\x25\x89\xdf\x1a\x06\xae\xf4\x04\x19\x91\x12\x91\xd7\x1f\x6c\xf6\xb8\x56\x81\xcf\x83\x9f\xd0\x63\xc4\x70\xc9\x73\x5d\x46\x90\xe0\x23\x59\xad\x7e\x6e\x9c\xf7\xa6\x21\x58\xaa\x68\x52\x5f\xf7\xde\x45\xc5\xf8\xc6\x91\x88\x17\xe3\x88\x7b\xa3\x80\x8f\x29\xe4\x3d\xf3\x92\x24\x64\xe4\x36\x51\x6e\xcc\x42\x47\x13\xd2\xac\xde\x81\x35\x67\x9d\xbc\xf6\xc2\x67\x9b\x9e\x63\xb1\x2d\xec\xdd\x21\x5d\xe1\x2f\x32\xfd\x58\xa5\x87\x2c\x7d\xf7\x88\xf2\x0f\xef\x9f\xc3\xe9\x7b\xf5\xed\xfd\x7d\x38\x7d\xbf\xc2\xb4\x26\xbe\x36\xcf\xd2\x4f\x8d\xe1\xfb\x15\xf6\xe4\x97\xf7\x53\xba\x08\xb5\x82\x37\xec\x75\x85\x7d\xf5\x5d\x7a\x61\xd2\xf2\x1c\xc9\xa4\x95\xf3\x7e\x3e\x08\xc2\xa8\x3b\x08\x83\xf7\x05\x32\x7b\x1e\x85\xc3\x68\x27\xa4\x86\x61\x6e\xc8\x04\x41\xf0\xfc\x13\x49\x61\xe6\xfb\xee\x11\x95\x19\x68\x8d\x6e\xc9\x91\x7e\x7e\xab\x2a\xbf\xc6\x33\x7a\xe2\xf7\x8b\xec\x90\x86\x69\x6e\xc5\xba\xea\xda\x21\x52\x05\x32\x38\xe4\x52\x99\x7b\xf3\x96\x2b\x75\x34\xc9\xad\xd4\x78\x50\x72\xc9\x1b\xf9\xd4\x2c\xcb\xa7\x1b\x95\x16\xf4\xb9\xa7\xbf\xf9\x82\xff\x8e\xc0\xbf\x3d\x2c\x79\xc0\xa6\xfa\xc0\x2e\x1f\xe0\xf2\xbe\x5d\xfe\xf0\x01\x7f\x3c\xd8\x3f\xd8\xb7\x0f\xfe\x84\x87\x03\xfb\x43\x09\x1e\x3e\xd8\x07\x9f\xe0\xe1\x0f\xfb\xe0\x2f\x78\xf8\x68\x97\xcb\xfb\xf0\xf4\xc9\x2e\x97\x0f\xe0\xe9\x4f\xbb\x5c\xe6\x35\xfc\x65\x97\xcb\x7f\xb0\xa7\x0f\x25\xbb\x5c\xfe\x08\x4f\x65\xbb\x5c\x86\x4a\x3e\xec\xdb\xe5\x32\x34\xf0\xe1\xc0\x2e\x97\xa1\xbe\x0f\x1f\xec\xf2\x3e\xb4\xf5\xe1\x0f\xbb\xbc\x5f\x86\xa7\x8f\x76\x79\x1f\xda\xf8\xf0\xc9\x2e\xef\x43\x1b\x1f\xfe\xb4\x79\x27\x3f\xed\xdb\x1f\xa0\xde\x4f\x07\xf6\x01\x7f\xf8\xc3\x3e\x80\x36\x3f\x7d\xb4\x0f\x20\xf3\xa7\x4f\xf6\x01\x64\xfe\xf3\x2f\x31\xb6\x83\xd2\xbe\xfd\xe1\x8f\x15\x0e\xd9\xb0\x7f\x8c\xd8\x38\x6b\xc3\xa7\x01\x1b\xe6\x55\x18\xcd\xd8\x28\xaf\x21\x20\xd1\xc1\x5f\xf8\x78\x30\x0b\x27\x6c\x66\x4e\xca\x30\xd6\x93\x7d\x18\xe8\xc9\x01\x8c\xf2\xe4\x03\x0c\xf1\xe4\x0f\x18\xdf\xc9\x47\x18\xdc\xc9\x27\x18\xd9\xc9\x9f\x30\xac\x93\xbf\x60\x4c\x27\xe5\x12\x8c\xe8\xa4\x5c\x86\xf1\x9c\xb0\x99\xde\x3f\xc0\xef\x7f\x14\x4b\xa5\x4f\x27\xef\xd9\x38\xce\x86\xfd\x90\x0d\xe3\x78\x10\xb0\x41\x7c\xa5\xed\x90\xf5\xee\x00\x9e\xa0\x87\x07\x1f\xf0\x39\x8f\x0e\xcb\xfa\x1f\xd5\x28\xe8\xa2\x1f\x73\x5d\xf4\xee\x80\x22\xdc\xae\x51\xb2\xe8\x19\x46\xb5\xa7\x20\xe4\x5d\xd3\xfa\xda\xcf\x20\x4b\x56\xc0\x2c\x7f\x12\x68\x37\xe8\x03\xf9\x76\x3f\x76\x93\xa4\xfc\x67\x36\x71\xc2\x12\x59\x7d\x7f\x95\xb3\x1f\xae\xc7\xae\xe2\x5c\xe6\x0b\xf9\x89\xec\x95\x91\xb3\xa7\x67\x35\xa1\x62\xc3\x28\x7f\x2a\xf0\xb3\xbc\x22\xb3\x96\x3f\xd9\x50\xbf\x61\x94\xff\xdc\xf8\xf6\xa7\x0d\x4d\xb0\x76\x0b\x92\x06\x30\xe5\xd7\xbf\xca\xc2\xa1\x4f\x8d\x11\x9e\xfd\x23\x6a\x42\x0e\xc1\xdb\xf7\x31\x10\x5f\x18\x1a\xc6\xd0\x84\xd0\xc9\x1e\x8c\xc1\x13\x42\xea\xac\x7f\xbe\x20\xc1\x15\x2f\x0c\x33\xa7\x0c\xbf\x0e\x08\x2f\xc7\x70\x72\x63\x94\x73\x5b\x93\x19\xb2\x93\x29\xb4\x72\xde\x9d\x8d\x72\x9d\xbb\x52\xeb\x1b\xe5\x47\x0e\xf1\x58\x4e\xd0\x83\xe6\x84\xeb\x4b\x6a\x51\x37\x5f\xe0\x80\x94\x0f\x0a\xc4\x67\xf4\x6b\x81\xf8\x15\x8f\x75\xd0\x2e\x21\xfb\x78\x6b\xfe\xd2\x67\xe2\xb5\x7a\x6c\x96\x60\xeb\xfe\x2d\x5e\xfc\x2b\xd3\x47\x15\x78\x61\xe5\x5f\x7a\xd9\x52\xf2\xb3\xa8\xde\xf4\x09\x3c\x0b\x3e\x14\xb2\x40\xd9\x24\x29\x89\xe9\x11\xba\xab\xa3\x03\x84\x19\x54\x7c\x3c\x20\x8c\xa4\xde\xdf\xff\xc0\x83\x08\xf8\xa4\x0c\x8b\x23\x7c\x46\xb2\xd9\xf5\x11\x6e\x13\x8f\x51\x17\xe7\x41\x38\x98\x75\xa3\x6e\x38\x71\xfc\x0a\x74\xf3\x33\x2b\xe4\xef\x74\x07\x0c\x03\x55\x22\x12\xd4\x68\xcb\x77\xed\xfd\x3f\xa0\x36\x41\x43\x9b\x11\xf9\x0b\xd9\x6d\xc3\x68\xb3\x8c\x21\x74\x23\x22\x61\x8d\xb6\xda\x10\xea\x29\x52\xd0\xe6\xc8\x25\x89\x1c\xae\xd9\xd6\xa9\x51\x33\xc2\xc2\x9c\xf1\x62\x64\x7a\x38\x5c\x57\x63\x7b\xfb\x44\x7e\xd7\xb4\x82\xc3\x3c\x1d\xc5\x9b\x1b\x41\x6f\x5e\xbf\x28\xad\x82\xb1\xa4\x26\xaf\x6f\x34\x8d\x3c\x21\xf9\x50\x7a\x6c\xcd\xb2\xf6\x51\x4a\x4b\xbe\xf6\xb1\xa7\xdb\x42\xdc\xe8\x35\xd4\x44\xa6\xc6\x88\xca\x5c\x0c\x2e\x83\x70\x46\xfd\xce\xa6\x6c\xe2\xc6\x30\x4c\xa9\x6c\x77\x7d\x83\xb0\x7c\x6e\x96\xd3\xe7\x9b\x1b\x21\x30\xba\xb9\x21\xb2\x57\xb2\xeb\xda\x25\x8f\xee\x3d\x22\x03\xf1\x1b\xd7\x85\xb7\x6b\xaa\x7f\xe9\xdc\x68\x74\x0b\x5b\x0e\x45\xd7\x1e\xa6\x04\x6d\x00\xaa\x87\xf0\x58\x3d\x45\xce\xe9\x9a\x01\x10\x23\xa4\x8f\x86\x41\x28\x09\xae\x49\x38\x0a\xe9\x8c\xf8\xab\x7b\xb3\x53\xa3\xf8\x50\x27\xd6\x9b\xe0\x87\x83\x81\xdf\x5d\xdd\x69\x77\xcd\xa6\xee\x06\xb8\x5b\xa3\x59\xcd\xc7\xfb\xba\xe3\xe5\xdf\xb8\xd1\x55\x6a\x3f\xc7\xf2\x3f\xb2\xa3\x82\x93\xf2\xf6\xf5\x92\x62\xbf\x13\xfa\x3d\x6f\xb8\xb4\x17\xc7\xb8\x1f\x0e\xe6\xdd\x59\xd8\xb7\xbd\x0b\xf5\x9c\xf7\x7d\x42\x83\xee\x90\x25\xa8\x87\x19\xf5\x58\xa1\xd9\x24\x0c\x45\x05\x2b\xa7\x49\x9a\xe2\x5c\xbf\xeb\xe9\x1d\x5b\xd3\x33\xd4\x90\x8a\x92\x09\xf2\x15\x8d\x4d\xaa\x4c\xb2\x30\x6d\xdd\x81\xbe\x87\xf3\x50\xd7\x98\x87\xd4\x34\x30\x7b\x49\x46\xf5\xf1\x37\xad\x87\x49\xae\x51\x34\xa1\x16\xad\xc0\x45\x8c\x4d\x25\x55\xcf\xe8\x67\xf0\x6f\x75\xde\x33\xbf\x54\xd9\xc9\x10\x90\xdd\xba\x32\xf2\xc3\x41\xeb\xc8\x05\x8f\x4f\xa6\x5f\x79\xa9\xdb\xd5\x3a\x82\x90\x3e\xab\xb7\x4c\xea\xd7\x1d\x05\xf0\x10\x9c\x5d\x70\xfb\xe0\x2d\x4d\x0f\xa4\x76\x5a\x60\x98\x7b\x6a\x72\xc6\x08\xbc\x83\x56\xa8\x75\x76\xc8\xdd\xe6\xb6\x02\xdf\xad\xb4\x1f\xb9\x0b\x78\x64\x73\xe7\xa1\x36\x7c\xe7\xc0\xce\xc7\x50\x92\x9a\xf9\x3e\x35\x91\x88\x56\xcd\x9f\xdb\xa4\x50\x86\xa0\x5e\x5c\x00\x11\x93\xf6\x23\x1b\x1a\x1b\xcf\x83\x19\x67\x30\x7d\x3b\x49\x68\x81\x84\x95\x1e\xfc\x46\x95\x20\xe1\xf5\xd4\xfe\x31\x29\x0f\xb2\x65\x9b\x6d\xc6\x16\x47\x84\x84\xe0\x6c\x8b\xd1\x80\x82\xb1\x71\xa8\x35\x24\x81\xd3\x4e\x12\x33\xe6\xea\x5c\xd9\x6c\x4e\x8f\xb1\xda\x10\xd9\x11\xfa\x3c\x60\x84\xff\xd0\x19\x18\x46\x2c\xe3\xca\xc7\x78\x90\x3a\x1b\xe3\x8b\x21\xe3\xe5\xee\xd6\xcd\x18\x39\xa5\xcf\x23\xee\x37\x58\x2b\x32\x42\x6c\x60\x25\xb4\x6a\x1b\x06\x2b\x37\x30\x8c\x82\x9f\x24\xdf\x8e\xa8\xe9\xe1\x58\xd9\xf7\x6d\x07\xa2\xf3\xfe\x9a\x37\xf2\x4e\x47\xb9\x62\x1c\x3d\x89\x5b\xbb\x42\x09\x39\xb4\xd5\xe6\x5e\x65\x39\xac\x0e\x40\x63\xff\x1a\x7c\x20\xa5\xb7\x88\xb4\x91\x01\x37\x70\xff\x7a\xd7\x33\x11\x62\xe7\xd3\x5d\xe0\x9a\x8b\x8e\x30\x60\xc6\x14\x8e\xc9\xab\x2b\xae\xe3\x9f\xde\x43\x2a\xfd\x01\x8f\xd5\x9e\x24\xf5\x2b\xd3\x07\x65\x39\x78\x47\x8e\xc7\xfb\x01\x35\x8f\x4c\x1f\x97\x71\x41\x24\x21\xc7\x6b\x98\x1e\xfe\x13\x7c\x2f\xc0\xb7\x3f\xb1\x67\x45\xd7\xea\x4b\xf9\x63\xfa\xa9\xfc\x11\x7b\xd6\x61\x5f\x7d\xfb\xf8\x21\xfd\xf6\xf1\x03\xf6\x45\x1a\x5a\x35\xad\xce\xd9\x1a\x28\xf7\x40\xbf\xd7\xc3\x05\x58\xaa\x97\x1e\xda\xb0\x1c\x57\xa7\xcd\xc3\x44\x8a\xb3\x41\xa7\x76\xd6\xe7\x86\x94\x4d\x6b\x31\xd9\xc4\x08\x6a\x61\xd8\x2c\x1e\xec\xc3\x55\x2b\xa1\xd6\x65\xdb\x44\xa8\xb2\x88\x4d\x0f\x19\xc6\x13\xfb\xb1\x85\x03\x88\x9b\x41\x9e\xbb\x2e\x90\xb4\xa4\x55\xf8\xb2\x0a\xe1\xe7\xdd\x30\x7c\xf1\x91\xab\x9d\xf8\xad\x93\x97\xac\x0a\x97\xaf\x0a\x53\xab\xca\xf5\xff\xd1\xca\x5c\xc4\x10\xfb\xea\x89\xfd\xa0\x02\xf1\x0c\x63\x1e\x83\x40\x74\xb5\x21\x25\x67\x5d\x01\x25\x68\x0f\xd8\x20\x90\xd9\xc3\x12\xf2\x73\xfb\x68\x3d\x3a\x5f\x2a\x61\xa0\xdc\x52\x4a\x85\x6d\x80\xa9\x0b\xcf\xc1\x8c\x56\xca\xb6\xd9\x94\x86\x4a\xa3\xe4\x6e\x64\x0a\x03\x75\xd0\xf7\x1e\x6d\x54\x7d\x57\x4f\x12\xf3\xae\x4e\x5e\xcb\xf6\x78\x46\xf1\x9f\x0c\x6f\x97\x3f\x32\x24\xfe\xf1\x83\xdd\x9c\x41\x6c\x75\x72\x57\x67\x78\x50\xba\x65\xc8\x40\x2a\x48\x68\x02\xf2\x58\xa3\xad\xc0\x4d\x12\x0f\x7b\xc4\x23\x64\x71\x0c\x86\x52\xde\x45\x25\xb0\x3d\x10\x62\xd5\x45\x38\x34\xb6\x21\x46\xeb\xb1\xc7\x32\x71\xb0\xee\xa9\xb0\x29\x64\x84\x57\x87\xcd\x27\xf6\xc0\x25\xf1\xb0\xcb\x30\xd3\x98\x4f\x6b\x6a\xdd\x1c\x6c\xc8\x4b\x34\x97\xf8\xbe\x88\xbb\xcb\xed\xe8\xbd\x56\x0d\x9c\x86\xd9\x94\xcd\x47\x0f\xc2\x9a\x3d\x40\x80\x68\xbb\x10\xb3\xb7\x24\x09\x96\xc2\xab\x00\xd8\x67\x3f\x98\xed\x47\x93\xa1\x79\x88\xf6\xd6\xb4\x2e\xdb\xb9\x87\x8a\x25\x14\xdf\x72\x8f\x5c\x9f\xeb\xda\xdf\xc4\x39\x87\x5c\x8a\x8a\x7d\x76\xd4\x48\x11\x30\x4b\x71\x02\x80\x22\x08\x4b\x17\x80\x47\xbf\xd6\xd9\x58\xc6\x11\x0f\x48\xcb\x75\x3c\xe5\x89\xdf\x33\xf6\x3c\x07\x8e\x22\x09\x11\xe0\x04\xd0\x20\xff\x13\xae\x7c\x89\x0e\xc1\x68\x07\x4e\xb9\xf1\x10\xf1\x8a\x45\x3a\x45\xd9\x33\x4e\xfb\xb4\x5b\x67\xf0\x9c\x06\x3a\xd4\xb0\xd9\x6e\x3d\x13\x47\xcf\x75\x3c\x11\x53\xa9\xea\xb9\x66\x0b\xf4\xe9\x1e\x4c\x3d\x04\x75\x80\x5e\x0b\xcd\xae\x19\xe0\x79\xd7\xdc\xed\x62\x8a\x10\xb7\x2e\xdd\x65\x69\x1e\x88\xa2\xd8\x58\x65\xac\x3d\xa4\x07\x58\x6c\x5a\xe1\xf9\x26\xb7\xe2\xfd\x48\x92\x5e\x8d\xe6\xe8\xbf\x78\x3f\x5a\x14\x62\x56\xd4\xfe\xd9\x2c\xd6\x88\xa8\xbc\x1b\xcd\xd4\x80\xe5\x57\xd2\xed\xc9\xcf\x88\x91\xe2\x3d\x71\x71\xd9\x88\x68\x8b\xba\xb8\x5c\x52\x8d\x45\x0c\x58\x2b\x25\x5b\xd7\xd9\xe9\xe9\xe4\x18\x37\x17\x70\x4e\xba\xa6\xc7\xdd\xe7\xff\x7b\x49\x4b\xc9\xbf\xa7\xdc\x71\x3e\xe6\x8a\x23\xde\x0f\xb6\xff\xbc\xe2\xa4\x8a\xf7\x6d\xaf\x38\xee\x53\xfc\xc1\xf6\x8a\xed\x3e\x6c\xc8\xe2\xbc\x4f\xd9\x9e\xf4\x8a\xbd\x3e\xc3\x3c\xb6\x57\x1c\xf4\x29\xdb\x9f\x5e\x71\xda\xa7\xba\x16\x69\xd0\x48\x43\x56\x68\x1e\x1d\x94\xe3\xaf\x98\x4e\xa7\x3b\x03\xda\x0f\x77\xde\x17\xf9\x26\x2b\x4c\x60\x57\x6d\x64\x15\xee\x81\x86\x13\x15\x98\x74\xe7\x7d\x91\x6d\xbb\x46\x8b\xba\x44\x73\x73\x17\x6b\xa3\x75\x28\x01\xca\xc8\x59\x0b\x1d\xd1\xba\x70\x1d\xff\x73\xe0\xf8\x5c\x6a\xc7\x60\xd9\x77\x19\xa6\x00\xce\xa7\x51\x09\x1b\x2d\xcf\x35\xb9\x4b\x2e\x29\xc1\xf3\x32\x12\x3c\x56\x59\x9f\xd1\xaa\x2b\x1c\x36\x88\x1e\x67\x71\xa0\xcf\x36\xef\x8c\x03\xb7\x55\x75\xaa\xa9\x3b\xe9\xde\x22\x22\x75\x0c\x6b\xe6\x38\x3e\x9f\x0d\x46\x8a\x71\xb9\xfe\xdc\x4f\x23\x5b\x07\xb0\xd7\x02\x32\x63\x73\x05\x18\x98\xf4\x01\xe1\xf1\xbb\x23\x88\xbb\x10\x56\x3c\x2b\x64\xa5\xb8\xd7\x10\x8f\x04\x95\x49\xd7\x0c\xac\x5b\x0f\x55\x02\xf0\x29\xc7\x3d\x75\xf2\xcf\x00\x4e\x6d\x49\xf9\x33\x82\x4e\x38\xfa\xe0\xc7\xc9\xbd\x19\x35\x84\xfd\x4f\xd4\xe0\x54\x73\xaa\xa6\x37\x04\x9b\x79\xff\x9c\x1c\xfc\xe5\x34\xad\xc9\x94\xec\xff\xf1\x87\xd3\xb4\xbe\x73\x53\x7b\xae\x03\xde\xb4\xc6\xca\x12\xa8\xd3\xe0\x29\x17\x0d\xae\xd4\x77\x7c\xb5\xe6\xd5\xae\xdd\x90\xca\x58\x35\x0f\x0c\x57\xa9\xd5\x69\x18\xc6\x90\xb3\x35\x0c\x40\x3b\x0d\xe2\xad\xb2\xe8\x2f\xcb\x53\xb6\xd9\x21\xaa\x58\xb8\xc9\xd7\x6d\xf9\x6a\x91\xdc\x79\xb5\x88\x7b\x30\xa8\x73\xe7\xa1\x5b\x03\x9b\xb6\xb9\x6d\x86\xf7\x4b\xae\xb5\x66\xe2\x52\x4a\x0a\x3c\xc6\x3a\xd7\xd7\xe6\xfe\x03\x1a\x83\x2c\x4d\xa7\xf2\x0e\x2b\xbb\x5d\xf9\x88\x29\x12\xd2\x82\xf1\x90\x07\x50\x17\xd1\xf2\x86\x84\x61\x00\x31\xe6\x87\x89\xa4\x1b\x81\xd8\xdd\x64\x2d\xd0\xab\xf0\xaf\xd3\x18\xc0\xb1\x23\x2d\xa0\x87\x86\xa1\xfc\xb4\xb0\xb6\x0c\x43\x59\xd0\x8f\x87\x5a\xb8\x39\xb1\x88\x28\xa7\xc1\xb2\xf0\xba\xba\xe5\x0e\xbb\x6d\x3d\xea\xea\x0c\x70\x63\xd0\xe0\x95\xb6\xf1\xa6\x0e\xc1\x45\x43\x0c\xb7\x6d\x75\xce\x84\x7d\x16\x67\x9c\x4d\x39\x11\x6d\xb8\x83\xa2\x52\x7d\xe0\xbf\x57\x6e\x7c\xcb\x87\x51\x9b\x1d\xff\x72\x15\x85\xf2\x74\x9e\x91\x93\xcc\x0d\x0e\xd4\xde\xf0\x52\x26\x27\xa3\x4e\x53\x1d\xa8\xff\x66\x1a\xc2\x90\xd0\xd6\xd2\x6d\xdd\xf9\x6e\x81\x7c\xdb\x34\x72\x8a\x1a\x79\x4a\x24\x6d\xeb\xbc\x9f\xde\xef\xf1\xa3\xfd\xdc\xd8\xdb\x97\xcb\x2b\x77\xd9\x4c\x18\x74\x60\x8f\xf7\x0d\xc8\xcf\x6c\xc4\x98\x36\x27\xfd\xb2\x94\xc3\xe4\xab\x89\x1c\x0f\x64\xe8\x59\x5d\x12\x0f\x57\x85\x70\xe5\xbe\xcb\xde\x29\x16\x06\x96\x56\x6d\xce\xdf\xa5\xdb\x82\xea\x12\x2e\x70\x34\x97\xd0\xb5\x35\x73\x59\x56\x25\x96\xd4\xa7\x57\x31\x7d\xab\x6f\x06\xf8\x7c\x8a\xa9\xd5\x1b\x22\x78\x39\x65\x2f\x34\xe2\x2f\xdf\xce\x30\xb5\xbe\x8f\xf8\xcb\x19\xfb\x32\xfb\x02\xde\x87\xce\x0b\x24\xea\x1a\x86\x28\x7f\x0c\x49\x08\x33\xca\x83\x27\xd1\x13\x4c\xad\xc5\x5f\xa0\xc5\x69\x2d\x3c\xbd\x11\x78\x53\xad\xc0\x9b\x6a\x06\xde\x72\xdb\xe1\x75\x64\x1b\x82\x34\xd5\xd2\x6a\x5d\x0d\x06\xd6\x51\x37\xe9\x12\xb8\x4a\xfa\x0b\x8b\x74\xc1\x58\xaa\x2e\xa3\x33\x7f\x6d\xc6\xfe\xcd\x34\x45\x9b\xea\x46\x03\xd5\x9c\xfa\x25\x56\xdc\xf0\x42\x57\x8b\xb2\x76\xa5\x22\x14\xee\x78\x28\x55\x8f\x85\x8f\x90\x2d\x5a\xca\x22\xd3\x0a\x6d\xd0\xdd\x62\x97\xb4\x5b\xcd\x17\xcd\x7c\x45\x42\xd2\xd9\xa1\x29\x42\x72\x9d\x1d\x6e\x6e\xad\xa1\x40\xa6\xd5\x38\x1f\xff\x70\xf1\x8c\xc3\xe9\x10\xd1\x93\x2f\x0e\x55\xfe\xac\x7a\xf0\xfb\xbd\x6b\x52\xfc\x12\x73\xb1\xce\x17\x64\x2f\x63\xed\xc8\xee\x07\x54\xec\xed\x35\xb7\x63\x30\x85\xa3\x27\x5d\xaf\x51\xdb\x13\x34\xbd\x34\xb7\xda\x8c\x49\xf7\x84\xa2\x78\x86\x51\x95\x3e\x17\x1b\x84\x6e\x2f\xdc\x39\x53\x85\xdf\xb4\x88\xc9\xe1\xef\xf8\x75\xbe\xc8\x01\xfa\x27\x33\x29\x9e\xa5\x95\xf1\x85\xdd\x3e\x45\xd9\x70\xfd\x5c\x57\x5a\x43\xb4\xbe\x5c\x89\x2d\xc0\x45\x35\xcc\xe4\x28\xe1\x92\xf4\xed\xcb\x96\xfb\xfb\x53\x1e\x40\x14\x7c\x81\x63\xca\x7c\x75\xaf\xf2\x9c\x07\x40\xbb\xe0\x16\x0f\xa6\x83\x5f\x3e\x82\x20\x81\x90\x7a\xdb\x30\x0a\x4a\xce\x50\xe8\xc8\xea\x70\x81\x9d\x99\xa6\x24\xad\x5b\xbb\x2f\x6e\xea\x48\xe5\xba\xc3\x9e\xe5\x4b\xee\x70\x84\xe1\x99\x6f\x42\x4d\x7c\xd6\xb3\xa8\x5f\x36\xb5\x0f\x27\xa6\xcc\xbe\x2f\x97\xa8\x97\xc7\x7c\x89\x22\x1f\x90\x30\x32\x38\x84\xb0\xf2\xb9\xd5\x7e\xc8\x54\xfb\x41\x54\x1b\xe5\x2d\xbd\xac\xf6\x4f\x7e\x06\x0f\x73\xeb\xfb\x33\x53\xdf\x9f\xa2\xbe\xc3\xfe\x1b\xf5\x95\x3f\x72\x2a\xa2\x9d\x5b\x61\xf9\x63\xa6\x46\x78\xe5\xd4\x51\x2d\x37\xff\x41\x76\xa2\x0e\xe4\x4c\x1d\x06\xb9\xd9\x3f\x66\x27\xe0\x23\x9f\x81\xaf\xa3\x37\xd0\x8a\x6e\x27\xea\x37\x74\xef\x68\x85\x82\x49\xad\xa1\x01\xfa\xf6\x6b\x12\x0d\xf4\x2a\x8f\x39\xd6\x9c\x57\x20\xbe\xf6\x2a\xce\x66\xd6\x81\x99\x14\xc9\x09\x5d\x62\x22\x68\xa9\x61\x42\x39\x31\x36\x34\xfe\x27\xe3\xb2\xc5\xdb\xec\x81\x7f\xce\xbb\xe0\xb7\x37\x9d\xec\x09\x02\x12\x24\x3e\xaa\xfd\x42\x96\xa0\x2c\xac\x7d\x96\x93\xa3\x91\x06\xfe\xb9\xec\x98\x7f\x2e\x7b\xe6\x9f\x1b\xff\xa3\xb3\x84\xdd\xcd\x9e\x4d\xa6\x86\xc7\x86\xcf\xbf\x68\xd6\xe3\x9d\xc6\x9a\x2e\x8b\xc8\x22\x24\x53\x1e\x02\xd1\xa0\xc9\xea\xf8\xce\xea\x48\x12\xae\x84\xf7\x05\xa4\x9a\x3e\x42\x10\xd4\xcf\x1a\xf4\x56\x4d\xab\x97\x85\xcc\xc2\x08\x0e\x77\x45\x5f\x69\x58\x69\x76\xb2\x76\x96\x75\xe5\x66\x93\xa3\x66\x5b\xb8\xc4\xbd\x21\x7f\xf9\xd5\x5a\x77\x17\xb0\xa6\x5d\xb5\x0b\xc5\x37\x89\x1b\x72\x1b\x11\x94\xed\xf8\x9c\x44\x5d\xcd\x13\x79\x8d\x66\xe7\x90\xb6\xbc\xb1\x6b\x18\xa3\x18\x9c\x3b\x78\x63\x97\xad\x33\xdd\x24\x03\xe5\x80\xcc\x2d\x23\xc2\xe0\xdd\x6a\x6b\x2f\x4b\x8a\xf8\x5e\x70\xe2\x5b\x96\x66\x24\x19\x57\x72\x43\xca\x15\x6c\xc3\x30\x44\x6d\x42\x7f\x0b\xb6\xe7\xf7\xd1\x7f\xde\x29\xfe\xdc\x53\x98\x72\xc6\xfd\x16\x6e\x9b\x49\x2e\x35\xfd\x6b\x6b\x3b\x69\x1d\xb0\x80\xdd\x2c\x33\x95\x62\x1f\x29\x45\x6c\x0b\x3b\x58\x2e\x03\xee\x2a\x74\x27\xbe\x3f\x0e\x21\xe6\x46\x57\x61\x0e\xf9\xe1\x30\x30\xd5\x01\xf3\xf1\x03\xd2\x7d\xe6\x2f\x67\x66\xa7\x26\xef\x03\x0c\xc3\x84\x7b\x4b\x7e\x1d\x8d\x3d\xcb\x9f\x4d\xe2\xcb\xf0\x99\xf0\xdb\xed\x1b\xfe\xed\x9a\x7f\x9b\x76\xba\xd1\x8c\x7f\xf4\x27\x2e\xf6\xac\x9b\x7d\x42\xad\x9b\xfd\x8c\xc8\x47\x5e\x7d\x3a\x4d\xab\x36\xcf\xe8\x77\xa5\x34\xb5\x74\xff\x5b\x93\x90\x5c\x5d\xe6\xe5\x5c\x9f\x5c\x27\xbf\x0a\xe1\x36\xe0\xbe\xbb\x95\x3f\xc9\x27\x10\xef\x1e\x19\xed\x63\x0a\x08\xc1\x52\xe3\xaf\x50\x92\x21\x1d\xee\x1e\xf3\x6a\x54\x2a\x92\xd9\xd5\x14\x32\x9c\xa8\x91\x23\xc4\x49\x9d\xf4\x72\xc9\xcf\xfb\x62\xd4\x50\x52\x9f\x66\x3d\xa7\xc4\x24\x1c\x04\xe1\x24\x9c\xa8\x02\xcd\x3a\x5f\xc3\x71\x8d\x92\x19\x34\xe3\xf4\x6b\xb4\x35\xae\x51\x97\x34\xeb\x4e\xd0\x30\xfd\x31\xdd\x12\x07\x38\x6a\x08\xe9\xb8\x1e\xb2\xb4\x21\x2f\x74\x87\x07\xa4\xe5\xae\xee\xcd\xc7\x06\x66\x8d\xb4\xbb\xe6\x63\x43\xcb\xd8\x6b\x64\xd9\x90\xe1\x41\xcb\xe3\x91\xd3\x7c\xe5\x7e\xdf\x13\xee\xf7\x4b\xb6\x2f\x04\x6d\xc5\x61\x9f\x72\xfb\x6c\xe1\x3d\x3f\xfd\xf2\x98\xfd\xb2\x9f\x7e\x19\x55\x57\xa2\xfe\x34\xba\xa4\xbf\x6a\x92\xc7\x46\xde\x85\xa5\xc8\xf0\xfd\x89\xfe\x77\x57\x97\x13\xc9\xf0\x89\x3b\x4c\xcc\xb3\x23\xe4\xc4\x0d\x75\xe6\x61\x40\xfa\x7f\xa2\x24\x81\x87\xf2\x47\xf4\x4b\xb7\x9b\x0c\xef\xfc\xf0\xdc\xfc\x3b\x46\x3e\x93\x7d\xf0\x5a\x17\x90\x9e\x42\x3c\x8c\xf0\x5c\xd6\x41\x3e\x9c\x24\x5e\x6b\xec\x9a\xaa\x8b\x3c\x7a\xa6\xea\xe0\xb2\x6e\x7a\xb8\x5d\x43\x60\x6d\x16\x7d\x4d\x11\x55\xf4\xd5\x14\xe1\xfb\x55\x37\x1f\x19\x95\x5e\xa7\x19\xed\xce\x0d\x4b\xcc\x3c\xd1\x3f\x0e\x48\x5f\x9d\xb8\x15\xb8\xd4\x04\xa9\x98\xc3\x6a\x64\xbc\x4a\x56\x61\x34\x30\x8c\x42\x5f\x3b\xa1\xb9\xcf\xe6\x00\x43\x41\xe1\xac\x59\x07\xc0\x49\x4d\xf9\xeb\xa2\x04\x80\x2c\xc5\x23\x3e\xf7\xf0\xc2\xad\x04\x87\x0f\x1b\x97\x25\xd4\x30\x3c\xc3\xd0\x97\x89\x1b\x3e\x47\x5f\x7f\x31\xab\xea\x45\x7f\x0d\xba\xf9\x1d\x2f\x68\xd7\x8b\x34\xe8\x3f\x5f\x27\x8a\x55\x18\xef\x42\xc1\x37\x8c\x01\xbf\x6b\x12\x6b\x96\xd2\xfc\x29\x0d\x11\x37\x34\x8f\x5d\xec\xd9\xc7\x9e\x90\x73\xa8\x2b\x44\x90\x63\x16\x08\xf4\xc4\x87\x0b\x96\x23\x56\x61\xbb\x86\x03\x70\x1e\xc7\xfa\xe4\x23\x1c\x20\x2a\xfb\x20\xfc\x61\x7b\x9a\x33\x1c\x94\x99\x67\x61\x9b\x0e\x9e\x7f\xf9\x6d\xf4\xa6\xe0\x7e\x2d\x72\x86\x0a\x62\x21\xe1\xb1\x84\x54\xdc\x8b\x6c\x58\x8c\xfe\x98\x3a\x41\x18\xd1\x79\x3c\xb3\x75\x18\x0b\xcf\xf5\xa8\x03\x39\x32\x7f\xbe\x29\xb5\xfa\xd7\xba\xd0\x1f\x53\x59\x61\xf9\x23\x6f\xdc\x93\x09\xfb\xb9\x4d\xd6\xfe\x59\x6f\x32\xf7\xe6\xa7\x3b\xd6\x69\xc0\x81\xb6\x26\x51\x43\x03\xe2\x20\x49\x1e\x1b\x20\x21\x56\xd7\x76\x27\x0c\x1c\x56\xf7\xe6\xa0\x81\x19\xc6\x6d\x92\x01\xa0\xa2\xb6\x97\x17\x58\x0c\x4a\x2c\x63\x27\x63\x96\x4c\x2b\x82\x14\xad\xc6\x26\x67\xf4\x4e\x72\xd4\xbd\x96\x31\x67\xe3\x37\xc8\xe3\x01\x1b\xa6\xdf\xce\x6e\xb5\xb5\x79\xfb\xd3\x56\x24\x02\xa3\x9b\x35\xd2\xa1\x9c\xd1\x5f\xd0\x79\xdb\x47\xcf\x44\xd6\xf0\x41\xc8\xdc\x59\xa5\x3a\xb2\xfe\x68\x9b\x69\x19\xa4\x17\x89\xbe\xa6\x45\x60\xc2\x33\xbb\x53\x8c\xc6\x6f\x2b\x2e\x2b\xb3\x23\xd3\xcf\x29\xcb\xf4\x13\xc1\x85\x04\xca\x2e\x3f\xaa\x09\x48\x2a\x72\x30\xee\x20\xe6\xb4\x23\x38\x30\x7e\x1c\x33\x0e\x18\x1e\x7b\x63\x8a\x50\xe5\x8b\xfd\x12\x9b\xca\x95\xf0\x17\x84\xb9\x4c\x03\xd9\x30\xbd\xd5\x38\x63\xc8\xb2\x46\x25\x6e\x30\xe2\xdc\xff\x8e\x88\x6a\x6c\xcd\x3c\xea\xc0\x5f\x2e\xcb\xe7\xd7\xa5\xe3\x2e\xf7\x02\x89\x0c\xe3\xaa\x67\xfa\x58\xf8\x09\xd4\xbc\x1b\x22\x19\xfe\x67\x05\x5d\xf8\x3e\x5a\x8b\xd8\x91\x4f\x7a\x00\xd9\x21\x03\x76\x96\x74\xfa\xa3\x52\x28\xf1\xc1\xdc\x3d\xae\xd5\x34\x1b\x6e\x15\xf2\x5e\x96\x56\x8c\x70\xe8\x6e\x25\x1c\x06\x29\xe1\x00\x80\x9f\x2f\x6c\xf6\x52\xb2\xb5\xf2\xe3\x89\xda\x9e\xa2\x52\x2b\xb7\x4f\x94\x77\xeb\x78\x96\x67\xbb\x3e\xd4\xb6\xe2\xee\x65\x36\x62\x65\x92\x04\x1c\x11\xb3\x07\x0e\xd1\x5f\xc9\xc7\x3f\x12\x33\xa8\x1c\xec\xdb\xe5\x83\x7d\xb6\x2f\x87\x0d\xbc\x2b\x2c\x04\x46\x0d\x3c\x6e\x38\xe3\x06\x19\x35\xa4\xaf\xd2\x49\x83\xcc\x7b\xce\xa4\x61\x18\xe6\x5e\xb9\x40\x26\x8d\xd6\x38\x70\xcd\xf7\x27\xdd\x49\x18\x0d\x97\xef\x51\x92\xe8\xc9\x47\xb4\xdf\x1d\x0c\x59\x6a\x26\x77\xf7\x6b\x67\x38\x08\xd7\x33\x77\xbf\x0e\x83\xf7\xa8\xc2\xda\x2a\xd9\xd9\x0f\x94\x7d\x18\x6f\x7c\x38\xea\x4c\x86\xfd\x8d\x7a\x0e\x07\xc1\x64\xd8\x0d\x58\xb2\x4c\xba\xa1\x11\x9d\x74\xdf\x23\x41\xb4\x4f\x6b\x94\x8c\x1a\x78\x56\xa3\x64\xdc\xd0\x42\xd8\x34\x78\xb0\xc4\xa9\xa2\xda\xa6\x80\xa0\xa6\x6f\xd1\x4a\xf7\xb5\x2d\xda\x07\x6b\x74\xdc\x9f\xb6\xc4\x03\xa0\x2e\x00\x0a\x69\x12\x43\x48\x3c\x2c\x83\x1c\x09\xf2\x6e\x0a\xc0\x37\x5a\x8b\x3a\xba\xda\x46\x9a\x41\x76\x1d\x54\xc5\x95\xd1\x23\xe3\x37\xac\x07\xe0\x76\xc4\x99\xdc\x3a\x77\x35\xc4\x75\xc2\x99\x6b\x47\x92\x63\x92\x96\x1f\x81\xe6\x0c\xa6\x82\x53\xd2\x69\xb4\x4d\x25\x2f\xde\xfc\x1a\x51\xa4\xa1\x4a\xd6\x24\xdc\xb7\x3d\x05\xc4\x77\xa8\x75\x5b\xe5\x42\x8a\x87\x3e\xe8\x64\xfd\x72\xdb\xfc\x9c\xe8\x4a\xac\xdf\x05\x17\xdb\xf9\x1b\x3b\x3a\xe4\xd4\x22\x7d\x5c\xeb\x2c\x05\x57\x06\x77\x23\xee\xe4\x9c\x82\x47\xad\x1f\x17\x9c\xd1\xec\xcd\x73\x49\x4b\xae\x1e\xa5\x2b\x31\x14\xe3\x3e\xd5\xb5\xcf\x8a\xfd\x3e\x75\xa8\xf5\x30\x31\xfd\x4a\x68\x07\xb8\x50\x30\x3d\xa3\x8c\x90\x4c\x0b\xec\x90\xa7\xed\xa3\xed\x0a\x15\xbb\x23\xfd\x58\x9d\x09\x80\x9c\x35\x30\x83\xc4\x76\xd7\x9c\x01\x40\xce\x72\x01\x72\x13\x2e\xe0\xf2\x93\x9d\x58\x20\x92\x21\x7b\xfb\x7f\x7c\x74\x28\x3b\x2b\x0e\xf6\x21\x59\xe9\x78\x08\xa2\xe7\xbe\x86\x5f\xdf\x03\x77\xf4\xde\xce\xa1\xee\x83\xee\x94\x7a\x71\x18\xd8\x05\xa1\x12\x86\x67\xdd\x59\x1c\xda\x1c\xb8\x92\xe4\x0b\x5e\xd0\x78\x1e\xda\x1c\xbc\x92\xe4\xcb\x0a\x53\x38\xa3\x93\xe4\x0b\xda\xea\xd3\x6f\x47\x59\x2b\x26\x89\x78\x3c\x8e\x40\x09\xfd\xcc\x25\xe4\xbe\x26\x9d\x5a\x4e\xb8\xc7\x61\xf0\x6f\xf9\xcc\xf1\xf0\x06\x14\xfe\x6c\xc0\xec\x9c\xe1\x36\x8f\xda\x19\x1e\x9e\x9b\x65\xe4\x3c\x43\x8c\x49\xa4\x22\xf0\xe7\x92\xf8\x39\x5a\x73\xe2\x56\x8a\xab\xcb\xb5\xe1\xaa\xa6\xab\x64\xf2\x5d\x21\xe1\xef\x6e\xea\x7d\xa9\xc1\xb7\x55\xf4\xc2\x9b\x01\xcf\x99\xa3\x25\x05\xdd\x39\xf2\xd7\x50\x01\x57\x79\xe1\xf4\x44\x99\x10\xcf\x30\x5e\x96\x26\xf7\x58\x94\x25\xa7\xf4\xf6\x86\x81\xbb\x49\x33\x89\x5d\xd1\x5e\x9a\x72\xa0\x0c\xa3\x69\x22\xaa\xb9\x92\xdc\x65\xe8\x3b\x2f\x49\x66\x8a\xbe\x5b\xdd\x9b\x73\x49\xd4\xcd\x73\x89\x3a\xfd\xa4\x7c\x0a\xb6\x92\x6e\x4f\x81\x54\xcb\x06\x02\xe9\x84\xea\x57\x38\xab\xb5\x1d\x9f\xad\xb5\xc3\xc3\xa9\x3d\x6e\x56\xda\xa1\x99\x4a\xe9\xe3\x7a\xa5\xb7\xd5\xfc\x42\x1b\x58\x41\x7c\x83\x6a\x7a\x73\x9d\x30\xc8\x5c\x87\xcd\xd7\xae\xc3\xf4\x8b\xae\xa7\x20\xf3\xda\xc9\x09\x39\x35\x5f\xbf\x76\xe5\xca\x7d\x52\x58\xb3\x79\x85\x2a\x6f\xe0\x25\x44\x2a\x25\xf4\xbb\x47\x61\xa2\xfb\x53\xe1\x0b\xdf\x5e\xd5\xd3\x24\xd1\xec\x38\x79\x62\xed\xb4\x92\x92\x46\xb6\xfa\x0c\xd4\xce\xee\x68\x1b\xb5\x33\xcf\x11\x93\x2c\x1a\xe9\x1d\xd5\x0f\x42\x57\xed\xae\xb9\x00\x98\x59\xbc\x75\xce\x8a\xfc\x7a\x64\x94\x86\x82\xdb\x00\xc2\x99\x54\x18\x75\xc0\xd8\xb2\x7c\x42\xef\x2d\xc9\xc5\x46\xf8\xa1\x75\xb5\xea\xb7\x30\x17\xf7\x44\xfa\x1f\xe9\x3d\xfb\xdc\x07\x50\xa1\x8c\x43\x02\x5a\xc9\x4e\x68\x18\x0f\x66\x98\x09\xec\xe1\x11\xe2\x57\x02\x46\xf4\x48\x06\xe4\xa9\x24\x35\x0d\x85\xb0\x31\x48\x12\x81\xb8\x9c\xb9\x92\xbd\x60\x29\x70\xf0\xd6\x4e\xed\xa7\xd2\x06\x62\x61\x6d\x14\x27\xd5\x0a\xb5\xae\x28\x63\x6e\x6c\x48\x18\xf5\x69\x85\x5a\xfd\x73\xf3\x7b\x5b\xa4\x54\xfb\x94\x8d\xa5\x7f\x6e\x5e\x77\x32\x8a\xbf\xf3\x54\xe6\x00\x2c\xbe\xd2\x2b\x12\x5c\x7e\xe8\x04\x86\x11\xb4\x1e\x43\x97\x10\xdf\x41\xaf\x21\x09\x5a\x81\xef\x8a\xf0\x9e\x01\xb7\xfc\xe4\xb6\x27\xd4\x7a\xfa\xc7\x0c\xc0\x10\xd3\x8c\xac\x31\x09\xb0\xba\x8a\x8b\x44\xf7\xb0\x67\x2d\xa8\x19\x21\x1c\x59\x75\x0a\x1e\x90\x80\x2d\x0f\x5a\x5e\xe0\x1a\x46\xad\x6b\xc2\x13\x2a\x90\x2f\x49\xc2\x79\xf5\x00\x39\x01\x09\x57\xab\xa6\xf5\xf4\x4f\xde\x1a\x72\xb5\xaa\x3c\xd4\x2e\xd4\x02\xb8\xce\x6f\x09\x57\x7b\x5c\x95\xd0\xa4\x56\xa7\x1b\x84\x27\xe0\x27\xb0\x50\xca\x5c\xd0\xde\xf5\xf8\xad\x22\xf8\xb2\xe0\x78\xf4\xbf\x51\xab\xf4\x7e\x59\xad\x12\x53\x6b\x3e\x35\x11\x21\xdf\xdb\x15\x8f\x2d\x9b\xed\xb1\xa5\x72\xa5\xd2\xb6\x50\x3c\xf4\x8a\x93\xaa\xae\xe9\xa8\x56\x6f\xb9\x45\x5f\x8c\x5f\x0b\x10\x2f\x49\x16\x1c\xbd\xf3\x94\xd8\x23\x34\x49\xae\x3b\xab\x7b\x73\x29\x95\xb8\x96\x62\xd7\x9e\x29\x3b\xe9\x5a\x24\x9f\x94\x5e\x57\xec\xe9\x1e\x9e\xf5\xb0\x29\xf7\xfb\xfc\xf7\x32\xe2\x26\x8e\xb1\x72\xb2\x76\x3b\xe0\x3a\x5d\xdf\x06\x22\x82\xca\x48\x7a\x7f\x6b\x4c\x64\x9e\xed\x5a\x5b\x67\xf7\x4a\xdd\xe5\xbf\x56\xdf\x32\x15\x72\x45\x3f\xd7\xe4\xda\xae\xc8\x45\x4d\xb4\xa9\xc9\x25\x94\x0c\xb6\xc6\x89\x54\x4a\x4e\xff\x99\x52\xd1\xaf\xe9\x14\x6d\x3a\x54\xca\x36\xad\xab\x14\x09\xd5\x20\x42\xbe\xc9\x1b\x4c\xf0\x6d\x9a\xe3\x0d\x79\xb9\xa1\x28\xb4\x35\xdc\xe1\x42\x21\x2b\x85\xca\xd6\xdc\xc1\x88\x9e\x28\x25\xa3\x99\xf4\x14\x20\xba\xa0\x9c\xc4\xea\x3e\x66\xf0\x4c\xf8\x54\x6d\x36\x55\x52\x57\x9c\x82\xcb\x53\x95\xd4\xbe\x14\x21\x50\xd2\x5c\x6d\xe1\xc0\xb5\xd9\xa1\x2a\xed\xe8\x58\xb8\xf6\xe2\x69\x14\x9f\x4a\x67\x3b\xa0\x0e\x04\x11\x8b\xf0\xb7\x33\x9e\x76\x2b\x33\xb5\x4e\xa7\x2c\xf1\x7c\x8a\xcf\xa6\xf8\xfc\x58\x28\xd4\x7d\xef\x48\x7e\x6c\x31\x31\x91\x61\x3c\x69\xaa\x51\x3a\x3a\x7d\xda\xaa\xa2\x04\x67\xbc\x57\xe1\xfa\x44\x97\x6d\x4c\x85\xbe\x53\x80\xaf\x6a\x8c\xce\x5e\x72\x32\x74\xf2\xd5\x44\xb8\x7a\x8a\xa9\x75\xdf\x45\xb6\x50\x0a\x52\xd9\xe1\x4d\xe5\x5f\x78\xeb\x05\x36\x94\x86\xf8\x3c\x45\xe6\x9e\xbc\x12\x8e\x3b\xe2\x2c\x8a\x3b\x70\x23\x26\xd3\xf9\x6e\x5d\x36\xd6\xdd\xe8\xac\x11\x45\xcb\x5f\xd2\x11\x52\xdb\x50\xd7\x70\x14\xad\xf2\xdf\xc6\x44\xf8\x6e\xba\x57\x61\x84\x9a\xcd\xad\x36\x49\xcb\xd3\x1c\x4c\xba\x90\x96\x31\x10\x29\x86\x1d\x48\x7b\xe5\xcf\x5c\x49\x94\xef\xfb\x48\xae\xc2\x73\x43\xf4\xd6\x37\x0c\x5f\xdc\xe3\x3a\x22\x0f\xf1\x1c\x2d\x83\x98\x0a\xc3\xf0\xe5\x0d\xab\x30\x34\x55\x41\x73\xd8\xfc\xf9\x05\xa2\x9e\x19\x4d\xe7\xe3\x8f\x1f\x50\xc5\x87\xf9\x2c\x09\x6d\x4c\x35\xbd\x68\xa5\x29\xf0\x08\x01\x28\xeb\x31\xd7\x05\xad\x5f\x99\x1e\xee\xd6\xb0\x4a\x62\x94\x06\x9b\x8d\xd3\x66\xf6\x34\xe3\xce\x49\x65\x47\xe5\x7c\x03\xd6\x4d\x75\x4b\x81\x13\x8e\x27\xfc\x3c\x6c\x76\xb2\xe8\x4c\xfa\x9d\x41\xa9\xc3\x19\x36\x80\x4c\x8c\x49\x59\xef\x26\x94\x60\xb9\x7c\xbc\xf2\x1f\x6b\x95\xeb\xce\x53\x61\x5a\x64\x76\x4e\x3e\x02\x1b\x9f\x83\xb1\x66\x6d\x99\x95\xc1\x5f\xf6\x30\xe6\x1b\xc6\x30\x74\xfb\x99\x8a\xc7\xaf\xb5\x6d\x75\x87\xdd\x64\x3b\x77\x03\xe2\x01\x9a\x41\x72\xd9\xc9\xd1\x21\x72\x66\xf6\xab\x97\xfa\xb1\x11\x00\x89\x52\xcd\x70\xb5\x5e\x1c\x9c\x80\xf0\xe1\x44\x11\xa3\x04\xe1\x76\x62\xa7\x2b\x90\x72\x63\x22\xf5\xb2\xad\xc6\xa4\x15\xb8\xca\x05\xb3\x47\x3c\xf0\xd9\xe3\x29\x9f\x3d\x1e\x92\x62\xea\xd6\x99\x2b\xe4\x4a\xa7\x53\xdb\xb3\x28\x44\xc8\xd5\xc4\xcd\xdf\xce\x6c\xcf\xfa\x3e\x5a\x4b\x3d\x67\x79\x7b\xc3\xb5\xd4\x33\x96\x3a\xfb\xb2\x9e\xf7\xd8\xf6\xac\xf1\xb9\x29\xef\x1d\xe6\xeb\xa2\x86\xec\xfd\xf2\x06\x9e\xe0\xf8\x60\x0b\x30\xfc\xe4\x72\x39\x73\xa5\xcc\xdd\x6d\xc9\xd0\x89\x83\xb6\x52\xda\x3d\xbb\xff\xc5\x5b\xe7\x4d\xce\x87\x43\x89\xda\xb5\xdc\x7b\xa5\x54\x05\x63\x1d\x03\x4d\x30\xf6\x64\x2a\x65\x69\x6d\x14\x60\xbd\x22\xb2\xcb\x81\xc9\x42\xe9\xbb\x49\xb3\xd1\xec\xe1\x86\x3f\x49\x84\xd5\x3e\x68\x00\xb0\x9f\xc9\xd8\x4d\xc3\xd6\xab\xf5\x05\x77\x41\xfc\x16\xe9\x93\x2d\x61\x8c\x1d\x1d\x48\xc1\x36\xb7\xde\xd2\x83\x8a\x15\xca\xfa\x0a\x1e\x7c\xb4\x97\xca\x80\x44\x4f\xff\xc3\x7e\xce\x4d\xff\x53\x35\x14\x7b\x84\x5c\x77\xd0\x8b\x9c\xa0\xed\x6d\x7c\xca\x94\xf9\xde\xe6\xdd\xeb\x74\x4c\x54\x39\x14\xa5\xed\x9f\x57\xf3\xa1\xb4\xde\xf4\xe1\xcf\x9b\xfe\x6b\x7b\xd3\xb2\x45\xfb\xdd\x9b\xf5\x64\xef\xbf\x0a\xe5\x55\x7a\x68\xa4\xdc\x6a\xf6\x40\xf6\x2c\x19\x08\x00\xfc\x21\xb2\x1f\xe2\x09\x37\x88\x0e\xb5\x1a\x13\x08\x20\xd0\x98\x90\xd7\x15\x7f\x6f\xf9\x2e\xd8\x17\x6c\x44\x36\x86\x93\x70\xb1\x29\x61\xca\x09\x6b\x4c\xad\xef\xd3\x84\xec\x3b\xfc\xf7\xe3\x07\xa1\x92\xc3\x29\x09\x78\xfc\x36\xa0\x49\xa2\x4b\xba\x94\x24\x0c\x9a\xe9\x3d\xaf\x4b\x8e\xd6\x02\x05\x6b\xf4\x98\xe3\x7d\x96\xe7\x9f\xd4\x06\x8a\x8a\x45\xd8\x45\x6f\xc7\x75\x15\x0a\xb0\x50\xe4\xa9\xca\x4d\xd1\xc4\xac\xa9\xa3\x16\x39\x7b\xe5\x82\x70\x3b\x20\x5b\xa9\x98\x54\x9c\xa9\x58\x3b\x93\x6c\xff\xf3\x7a\x2f\xf6\xf6\x90\x03\x46\x8d\x5c\xe2\xe5\x03\x7f\x2d\x10\xa7\x61\xc8\x50\xb1\x8d\x09\xf6\xe1\x10\xa4\x84\x8d\x9d\x31\x81\x59\x99\x34\x9f\x9a\x12\xca\x44\xcf\xcd\xfa\x7c\xd7\x89\xe6\x18\x58\xe7\xfe\xf9\xaf\x93\xf6\x8c\x4b\xfa\x7f\xa6\x58\x2b\x29\x70\x9a\x73\x0d\x69\x76\xc0\x1f\xb1\x98\x47\x41\x68\x36\x52\x2e\x06\xab\x33\x53\xd4\x82\xb0\x68\x90\xeb\xc9\xf1\xc4\xca\xd1\x98\xda\xd5\x71\x1a\x8f\xf6\x97\x74\x6f\x77\x44\xdd\x79\x8a\xb7\xe2\xd3\xc6\x90\x4e\xec\xf6\x09\x28\x5c\x08\x0f\x9b\xc0\x13\xe2\x7c\xae\x61\x14\xd0\x8a\x10\x99\xc1\x8b\xcd\x25\x16\x25\xb4\x02\x87\x9b\x79\x65\xf8\x31\x92\x8a\x36\xa0\x1c\x44\x7e\xc5\xf2\x88\x52\xcd\x96\xb7\x4f\x1a\x4d\xa7\x6b\xc3\x80\x37\x3b\xfa\xfb\x7d\x60\xdb\xd7\x8c\x70\xc4\xc9\x75\xbf\xaf\xed\xb7\x27\x6d\xbf\x89\xaf\x52\x3a\xa9\x2d\xcf\x7a\x47\x38\x61\x17\xad\x53\x65\x7c\xc7\x31\x12\x80\x0d\x96\x2b\xd9\xd9\x7b\xe5\x74\xff\xc8\x83\x4e\x6c\xb3\x1c\xf5\x63\x79\x7c\xa7\x1b\x35\xc3\x95\x3c\x37\x32\xb2\x0b\xd6\x16\x23\x8f\xb5\xf0\xc1\xdc\x52\xad\xda\xc8\x5c\x25\xa7\x8a\x9e\x26\x2d\x96\xd1\xff\xe7\xaf\x30\x85\x13\x7c\xaf\xac\xc7\x10\xde\x5a\x96\xee\xed\xc9\x4d\x5a\xfa\x9b\x56\xfc\xbd\xb2\x4d\x57\xb8\xa4\x95\x3d\x6c\xfc\x6a\xb3\x99\xee\xbe\x6c\x2b\x96\xdf\xe2\x5a\xe9\xaa\x12\x9a\xf8\xa4\xf4\xb7\x5f\x81\xb0\xd8\xd4\x8a\x3b\xc8\xf6\xa5\x25\x31\x0c\xd3\xf1\x09\x70\xc3\xe0\x41\x26\xb5\x1c\x0c\x49\xc9\x09\x3f\x93\xc0\xd1\x04\x5f\x91\xc9\xb5\x56\x22\xc3\xa0\xd6\x4b\x48\xcd\x08\x31\xa8\x6f\x97\x4d\x79\x4b\xb8\x0a\x8b\xc5\x6c\x85\xab\x55\x93\x65\xcd\x97\x2f\x01\xd9\xa4\x4c\xf7\x3d\xae\x0c\x04\x4e\xe5\xcb\xb9\x2b\x9f\xd1\x36\x3e\x12\x17\x4f\x47\xea\x26\xf4\xa8\x81\x9c\x23\xb8\xaf\xce\x95\x58\x75\x32\xea\x20\xb5\xfc\xcb\x02\x3f\x49\x8e\xc4\x65\x81\xf4\xac\xe2\xb7\xcd\xb2\xa6\x6e\xdc\x36\xf7\x33\x6f\x1f\x32\x6f\x07\xda\xc7\x21\x29\xaf\xee\xcd\x1a\xbf\x6e\x08\x1a\x66\x67\xeb\x85\x7b\x2d\x47\x04\x7d\x2c\xc6\x77\xac\xc6\x77\xdc\x40\xce\x31\x8c\xef\x97\x84\xc7\x3e\x97\xb6\xf0\x12\x3f\x97\xfc\xc2\xbd\x13\xc8\x8a\x6b\x8a\xa9\xf4\xa4\xfb\xe1\x47\xb0\x09\x8f\xb9\x14\xb7\x17\x9b\xbe\x10\x6a\x82\x60\x37\x6d\x4d\x93\xe4\x8e\x96\x26\xb4\xac\x8f\x78\x25\xfb\x9f\xbb\x3e\x51\x4d\x8f\x1f\x2c\x04\xe7\xda\xe2\x70\xc7\x0c\x49\x72\xfc\x7f\xbb\x3e\x27\x7c\x7d\x4e\xa0\x63\x59\x61\xd1\xc9\xba\xb0\x28\xcf\x1d\x70\x78\x81\xe0\x82\x21\xaa\x6d\x59\xdc\x93\x86\xbe\xac\xa7\xd9\x9b\x85\x24\xb9\x79\xa2\xab\x7b\xf3\xb4\x81\x17\xfc\xfa\xf4\x14\xee\x19\x4e\x85\xc4\xf2\x4d\xa1\xfe\xc5\x88\x26\xc9\x29\xeb\xe4\x43\x67\x4d\xfd\x23\x5f\x90\x4c\xe5\x02\x57\x78\xc7\x6c\x28\xfc\xf4\xcf\x5a\xe1\xe9\x74\x0d\x58\x44\xf1\x51\xac\x22\xdf\x6c\x95\x0b\x87\xb5\x1c\x39\x35\x34\x73\xde\xcf\xba\x42\xe7\xa2\x6b\xd0\x34\x08\x4e\x71\xbd\xf3\x1f\x4d\xe3\x59\x43\x52\xa8\xaa\xd2\xeb\x0e\xa3\x14\x4e\x05\x74\xc8\x43\xeb\x66\x00\xc7\xc9\xbd\x79\xd6\xc0\x4b\x98\xda\x33\x31\xb5\x93\x73\x2e\xa9\x3d\xf6\xe8\x1b\xa1\xfa\x38\xf8\x7b\x26\x02\x08\xdf\x98\x9d\x94\xcc\x82\x3c\xd3\xa9\x3a\x9b\x14\x5b\x95\x71\x0c\x99\x72\x88\x8e\xf7\xd9\x07\xdf\x90\x7a\x3c\xd7\xa7\x48\xe8\x21\x0a\xce\x2d\x60\xad\x01\xcf\xc6\x9e\x74\x6e\x2d\x25\x77\x9c\xa6\x75\x98\x73\x97\xb8\xa0\x9c\x84\x04\xca\x70\xb1\xb6\xa0\x90\xa3\xf7\x2c\xb5\x46\x41\xea\x1c\x6c\x95\xc9\x3e\x45\xe2\xfa\x21\xcc\x71\xa9\xb3\xa3\x46\x04\x8a\x5f\xcb\x4d\xbd\xae\x96\xbb\x29\x65\x85\x48\xf1\x47\xc2\x59\x56\x4a\xe4\xbe\x3b\x7b\x53\x41\xf5\x9a\x9d\x57\x49\x92\x89\x79\x57\x92\x7e\x76\x54\x52\x48\x28\x8e\x88\x87\xdb\xa4\x19\x9b\x01\x72\xc2\x9d\xee\x60\x3a\xa3\x03\x9f\xcd\xe8\x65\x8f\xfb\xf9\xb2\x9e\x71\x48\x42\x6b\x09\x91\x74\x02\x1c\xb4\x6e\x02\xb7\x68\x86\x7b\x6d\x6b\x89\x70\xd0\xba\xf7\xdd\xa2\x19\xed\xb5\xad\x67\xb4\xd9\x24\x98\x6e\xdd\xbc\x41\x62\x5e\x9b\xa8\xd2\xd4\x1c\x4d\x73\xa3\x73\xb4\x49\x50\xb3\xf3\xc7\xf4\xc8\x59\x63\xdd\x2d\xb7\x70\xe5\xac\x91\x63\xf0\x30\x39\xdf\xb0\x7e\x10\x14\x99\x47\x19\xe5\xca\x95\xd0\x7c\x50\x42\xab\x08\xf5\x33\x78\xc3\x3e\xa8\x9f\x71\x4d\x5e\x85\xa5\xd1\x9a\x48\x52\xc2\x4e\x5e\x33\xa2\x10\xeb\xaa\xd5\x6c\xae\x61\x8c\xfc\x23\x9e\x4f\xc0\xb1\x07\x4a\x11\xdc\x0b\x0e\x84\xcb\xc8\x9c\xf6\x9b\x72\x7e\xdd\xc7\x33\xdc\xda\x3b\xbe\x16\x18\x43\xca\xa8\x84\xea\xb8\xe3\x93\xbb\x9e\xe9\x5b\xe3\x08\x7f\xc5\x01\xd6\x9c\x1f\x04\xc4\x6f\x5d\xb8\x98\x53\x32\x81\x13\x16\x8b\x68\x5e\xa3\xe2\xbc\xc2\x7e\x2b\x74\x91\x03\xa3\xc9\xc4\x68\xc8\xd1\xc2\xfb\xff\x59\x7b\xf3\xee\xc4\x75\xe4\x61\xf8\xff\xfe\x14\x24\x6f\x7e\x5c\xab\x11\x8e\x21\x64\xc3\x51\x73\x92\x90\xa4\xb3\x42\x92\xee\x6c\xbe\x9e\x39\xf2\x82\x21\x80\x21\x6c\x81\x04\x9e\xcf\xfe\x1e\x95\x24\x5b\x36\xa4\xe7\xce\xf3\xfc\xce\xcc\xed\x60\xad\xa5\x52\xa9\x54\x2a\x95\xaa\x38\x3c\x3f\x97\xcc\xec\x4c\x76\x30\x49\x13\xb6\x8b\x3e\xe1\xd1\x92\x3e\xea\xb1\xf9\xd0\x2f\x0d\x92\x70\x34\x98\xd4\x1b\x35\xc1\xbd\x0a\x71\x85\x2a\x46\xde\x33\xc4\xdb\xe8\xb7\x25\x61\x1a\xe0\x38\x4b\x84\x95\x80\x93\xad\x22\x61\x47\x76\xf0\x0c\x5f\xa9\x98\x13\x2e\x5b\x14\x60\x81\xfe\xd8\xd1\x28\x5b\x2c\xbd\x2e\xfb\xdb\x20\xae\x3e\xcd\x7b\xfa\x34\xef\xf3\x28\xc0\xae\x3e\xcb\x7b\xfa\x2c\xef\x43\x68\x5e\x8f\x50\x6b\xc3\xb3\xf3\x8e\xf5\xe2\xda\xe0\x20\xfb\xca\xb5\x71\x40\xa8\x75\x06\xa1\xa7\xfd\x1c\x8f\xd1\xdb\x10\x6e\xd2\x1b\x79\x8d\x5a\x97\x50\xe1\xd0\xb1\x11\x36\x10\xc2\x01\x09\x44\x29\x57\x94\x72\xf3\x1e\xe4\xf0\x17\x2a\x97\x6d\xcd\xc7\x01\x3b\xf7\x0f\xdd\x41\xaf\xd3\xb9\xf2\x1b\x23\xe2\xe8\x53\x73\x04\x26\x1f\xfa\x0c\xa9\xbe\x36\xce\x85\x7c\x74\x1e\x19\x1e\x9d\x03\x7b\x3f\x17\xec\x7d\xd5\x1c\x46\x96\x43\x5e\x35\xc7\x77\x07\xf5\x82\x7d\x81\x13\x6f\x07\x84\x60\xb3\x51\xd7\x96\x5e\x0a\x70\x8c\xaa\x46\x6b\x5f\xba\xb0\xfa\x83\x41\xde\x9f\x1f\x11\xf0\x87\x04\x8f\xfa\x46\x7d\xf5\x66\xcc\x83\xaf\x78\xd5\x9c\x16\xc9\x5f\xb9\xf1\x11\xc2\xab\xd2\x47\x47\x08\xd3\x3f\x5d\xbd\x29\x56\x02\xab\x9e\x2e\x7c\xc0\xba\x61\xac\x56\xfc\x92\x16\xc6\xe6\xa8\xfc\x29\xe3\x05\xe9\xe1\x8d\xe6\x24\x98\xb1\x80\x49\x58\xc7\x0a\x7b\x79\xe1\xf4\x49\xd6\x70\x93\x06\x6b\xa3\x23\x1c\x17\x45\xec\xf4\xb2\x66\x44\xda\x66\x97\xac\x15\x16\xae\x78\x24\x21\x27\x27\xf5\x46\xe2\x83\x49\xa4\x96\x5b\x8d\xa5\x52\x3b\x9a\x90\xf3\x2f\x0c\xa6\x56\x6e\xfc\x5e\xe2\xb8\xf0\x21\x55\x6c\xe0\x04\x20\xd6\xa2\x3b\x15\x98\xac\x32\xb5\xaa\xae\x8d\x3d\xee\x26\x0e\x0c\x09\x28\xb8\x2c\x71\x2a\xae\xe5\xb9\x76\xd9\xb5\x5e\xb9\x41\xc1\x16\x21\x6e\x6c\x50\xe0\x13\xd7\x72\x78\xa0\xf6\x6a\x4b\xf3\x11\x21\x35\x44\xb9\xfd\xbe\x70\xb1\xe4\xea\x61\xcf\xf3\x1f\x68\x67\xec\x13\xa7\xe2\x73\x27\x36\xff\xb2\xfe\x1e\xfe\x3d\xa5\x86\x9d\xdb\xc4\x35\x54\x16\xa9\x51\xe2\x06\x4b\x15\x27\x32\x2e\xa7\x0b\x9d\x24\xf1\xd4\x15\x74\x21\x56\xd0\xc5\x0d\x3e\xe7\x2b\xe8\x02\x56\xd0\x85\x58\x41\xab\xe9\xf3\x82\x21\xf1\x59\x41\xa2\xa0\xd7\xd5\xd6\x6e\x82\xe5\xb4\xb5\xba\x8f\xfd\x2a\x76\x20\xa4\x0d\x7f\x67\x01\x8a\x20\x46\x49\xe0\x27\x0a\xa2\x36\xbc\xc1\xb8\x39\x05\x41\x64\xf3\x1b\xd3\xd3\xaf\xa9\x06\xca\xc0\x8b\xae\x16\xbd\xb6\xe0\x50\xac\x98\xca\xaf\x56\x0b\x94\xdf\xa8\x47\xe5\x2d\xe0\xc5\x27\x1f\xb6\x16\xbf\x70\xad\xd5\x35\x07\xd9\xd0\x90\xbf\x2c\x86\x88\x86\x2e\x6f\x54\x9f\x69\xd8\x49\xc6\x6a\x4d\xbf\x1d\x75\xa3\xc5\xe8\xe4\x7a\xb0\x08\x17\x8f\x7a\xad\xbe\xfa\xf8\xb6\xbc\x6e\x87\x47\x08\x6f\x34\xbf\xa6\xd1\x20\x41\xa3\x57\x37\x71\x30\x72\xf4\x39\x4e\x1d\x6b\x2f\x84\x60\xec\xc5\x87\xa1\x9d\x52\x7c\x43\xfd\x5e\x07\x8c\xf7\xf8\x49\x14\x6f\xc7\x0f\xf1\x2f\xba\x9a\x3c\x6a\xbd\xb7\xa9\xe2\xba\xb3\xc1\x27\xe9\x61\xa4\x6d\x1b\x06\x32\xd7\x86\xe0\x37\x77\x54\xa5\xf3\xf9\x79\x5b\xeb\x84\xf0\x1e\x1d\x4a\x76\x0f\x49\xd4\xd1\x51\x8f\x12\x3f\x92\xd3\x17\xcf\xda\xd5\x0d\x1e\x03\xdd\x5d\x09\xba\x63\xa5\x99\x3c\xde\x6b\x0a\xc1\x3c\x15\x30\x26\x7d\x2a\x3b\xac\xa6\x62\xb2\xea\x1b\xd9\xec\xb5\x30\x43\xe3\xdf\x89\x60\x53\x6f\xec\xbc\x21\xa2\xd4\x6c\xac\x88\xc5\x72\x95\x76\x42\x11\x77\x50\x88\x3d\x89\x6c\x08\x59\x49\xbd\x60\xde\xd0\x7f\xfa\xec\x4c\x93\xea\x3b\x19\x55\x73\x83\x6f\xcb\xd9\x6c\xbb\xc3\x6f\xae\xd2\xa1\x37\xae\x56\xdd\x3f\x6f\xc8\x4b\xc4\x8d\x25\x0f\x15\x1b\x49\xbb\xbd\x56\x8b\xca\xf9\x91\xa1\x56\x52\xd7\x92\xd0\x01\x6d\x2c\x99\x61\xf3\xf7\xae\x5a\x34\x2c\xe5\x25\x69\xa4\xb1\x55\xe0\x78\x08\x89\xfa\xd6\x74\xd5\x2b\x8a\xab\xa5\x57\x0e\xd1\x68\xd6\x96\xba\xdc\xe0\x17\x72\x4b\x4f\x64\xc5\x53\x5a\xf9\x1a\x34\xbe\x00\x79\xd4\x3b\xcd\x15\x5a\xdc\x0d\x19\xff\x95\x4b\x9a\xbc\x23\x76\x7a\x12\x37\xc3\xca\xb4\xad\x38\xcf\xc5\xdb\x70\x5f\x8d\xb9\x29\xaf\xd8\xe2\xc6\xe1\x3c\x36\x9f\xaf\xbe\xbd\x63\x9c\xbe\xa8\xc6\xd4\x88\x2f\xfe\x7e\xda\x6b\xa4\x7a\x16\x1f\xe4\xa2\xb8\xca\x90\x73\x74\x16\xdf\xb4\x45\xa4\xa6\x0e\x28\x21\x1f\x6f\x70\xc1\x51\x6e\x70\x51\x5c\x92\x8a\xa6\x0c\x12\x2e\x19\x1d\xc9\x39\x4b\x52\x20\x9d\xcf\xb7\xf6\xe2\x9f\xc5\xe8\x67\x64\x6b\xa9\x34\x62\xb0\xf9\x57\x5e\xc8\x2e\xdf\xab\xc6\xf8\xec\xae\xb8\xab\x66\xd3\x2c\x10\x18\x17\x54\x6f\x67\xe5\xdc\x75\x0f\x13\xc5\x4c\xbe\x16\xa6\x29\x01\xfd\xa2\xb1\xd4\xc3\x86\xa8\x77\xd1\xd5\xf8\xce\xa1\x45\x47\x06\x2c\xf9\x0e\x4a\x3a\xa9\xdb\xe0\xcf\xe6\x60\xfa\x2e\xba\x5f\x1d\x41\x36\x40\xbc\x86\xeb\x54\xcd\x51\x57\x47\x41\x89\xe8\x2d\x57\x3c\x88\x46\xa9\xc5\xa9\x94\x4a\x32\x20\x0a\x42\x99\x00\x9f\x50\x73\x78\x2d\xb6\x16\x64\xc6\x31\x7c\x94\xd3\x6f\xf7\xd0\xd4\xa8\x3e\x38\x27\x2e\x1c\xa3\xee\xc3\xd8\x76\x43\x85\x81\x9f\xfa\x55\x19\x74\x95\x7a\xe0\xa2\xa1\xa1\x7f\xa0\x23\x80\x62\xff\x58\x51\xb0\x51\x11\x54\x09\xe7\x90\xb2\xb4\x7a\xf9\x5a\x6d\x10\x55\x08\x03\x0d\x95\x8d\x95\x57\x4e\x1c\x03\x57\xab\x8e\xc8\x4c\xdc\x5a\x93\x27\xee\xc4\xc2\x8e\x0d\x09\x21\x14\x68\xea\xb2\x07\xa8\xea\x8a\xa6\xd9\x92\xb4\x47\x4c\xd1\xe9\xab\xbb\x4c\xd0\xdc\x0c\x86\xe5\x7a\xef\x5f\xae\x85\x6f\x29\x5f\x1f\x6c\x34\xd0\xf5\xa1\x97\x3a\xbe\xc9\x65\xae\xf0\x53\x42\x22\x77\x9a\x71\x58\x6c\xbd\xea\x44\x91\x88\x7a\x4d\x79\x77\x69\x2a\x57\x6c\x9a\x4b\x26\xbd\x96\x97\x31\xd6\x88\xab\x87\xfe\x74\x74\xd2\xf1\xbb\x7e\x38\xba\x6f\x39\x9d\x56\x18\x54\x56\x25\x96\xdf\x7c\xaa\x81\x9c\x8a\x90\x9c\x90\xf3\x0f\x0d\x04\x59\xec\x0a\x63\x9f\x0d\xfd\x38\x62\x87\x2c\x43\x68\x80\xa3\x3c\xe9\xf1\x74\x9b\x3c\x28\x9a\x0f\xe1\x9c\x7c\x9b\x34\xba\xe9\xc4\xe9\xb5\x16\x6d\x9b\x67\x0d\x6d\xcd\x99\xcf\x4b\xc6\x1a\x77\x15\x9f\xcd\x6e\xed\x89\x9f\x95\x7c\xa1\x2c\x63\x21\x25\xf6\x01\x75\xcf\x00\x91\x32\x7e\xba\x08\x6e\x79\x5b\x55\x5c\x43\x18\x7e\x76\xce\x99\x40\xac\x04\x8c\xbd\xbd\x96\x2b\xf9\xf6\x5a\xe0\x0b\xcb\x06\x36\xc4\xdd\xed\x46\x47\x73\x71\x0d\xd7\x10\x12\x61\xc3\x23\x07\x6c\x98\xeb\xe8\xf8\x9c\x84\x6d\x76\x4a\x81\x9f\x23\x37\xd2\x4f\x7c\xa3\x15\x57\xef\x82\x6d\x9b\x09\x93\x2d\x62\xb6\xc4\xb1\xcd\xa4\xa1\x5e\xa7\x49\x63\xc1\xa5\x7b\x98\xcd\xaa\xc5\x37\x22\x47\x61\xdd\x26\x45\x89\x96\x1a\x1e\x7e\x10\x4d\x84\x2c\x8f\x56\x44\xb2\x05\xc6\x43\xf2\xe3\x11\x4c\x88\xc0\x3e\x66\x7a\xad\x52\x6a\x44\x75\x51\xe0\x57\x19\x7e\xad\x45\xc5\x12\x50\x62\x92\xbe\xd7\xcd\xf3\xa9\x26\x7e\x2a\xa1\x2c\x37\x62\x43\xc8\x0d\xee\xac\x4e\x6b\x39\x1a\xb5\xa6\x36\xbe\x0f\x20\x2c\x20\x77\xce\x27\xcc\x01\x18\xde\x45\x23\xfa\xa4\x43\xe3\x8f\x97\x7a\x76\xab\xa8\xcc\x89\xdf\xd5\x18\xbb\x76\xf4\x17\x1f\xce\xfe\x27\xe7\xff\xe2\xf1\xe7\x99\x0c\x2a\x02\xf8\x5d\xa7\x3a\xe6\x9d\x15\x10\x8e\x20\x68\x22\x21\x5f\x85\xc9\x3d\x89\x8f\xb6\x91\x0c\xd1\xad\x92\x2d\x76\xd9\x42\x5a\xbb\x12\x49\x8f\xdb\xdc\x5d\xaa\x24\x91\xa7\x6d\xec\x92\x35\x11\x7f\xde\x85\xa7\xe6\xae\x3e\xea\xf5\x09\x71\xd8\x1f\x76\x06\x74\x21\x30\x0e\xfb\xc3\xbe\xae\x5d\xf8\xba\x76\xe1\xeb\x0c\x3e\xce\x6c\xa4\xc4\x5b\x7a\xdc\x26\x32\xb4\xeb\x36\x11\xaa\x07\xb6\x42\xd4\x2b\xaf\xeb\x9b\xb4\x47\x62\xa0\x38\x97\xb8\x15\x4f\xef\x96\x3d\x46\x6c\xf0\xfe\xc6\xc3\x0e\x6e\x56\x31\xd5\x9f\xa6\x28\x4e\x69\x9d\x61\xaa\x4f\xcf\x94\x94\xe0\x12\x53\xfd\xec\x51\xbd\xac\x5c\x65\xdb\x69\x6a\x4e\x44\xcd\x88\x93\x20\x95\x51\x19\xa9\xfe\xde\x81\x53\xcd\x4a\xfb\xc5\x88\x2d\x71\x07\xef\xd2\x00\x50\x36\x7f\x73\xa5\x51\xdc\xaa\x32\x6a\x02\x4b\x55\xab\x0b\x27\xdf\xf9\x9c\x9a\x54\x18\xaf\x90\xfe\xb5\x50\xe8\xeb\x2d\x8f\xbc\x71\x7f\xb8\x2e\xa9\x81\x0f\x13\x50\x24\x78\x20\xd9\x83\x85\xa1\x2b\x7e\x76\xce\xa1\xb8\x98\xfc\xf7\x4e\x92\xfb\x3b\x4b\xee\x44\x2e\x83\x68\xfb\x48\x09\x8f\xc2\x4e\x2b\x6d\xad\xc8\x79\xb2\xb8\xb3\xd6\x37\x92\x2f\x5d\xa2\x6b\x0d\xe0\x40\xfc\x27\x70\xa0\x05\xdc\x70\x04\x5f\x5e\x03\x5e\xad\xb8\x06\xbc\x81\xfb\x22\x35\x74\x0f\xdf\xf0\x87\xc4\xb2\xcd\x23\xc5\x44\xf9\x59\xbb\xb9\x11\x11\x7c\x6e\xc4\x41\x6a\x32\x8b\x82\x81\xd7\x23\xdb\xf6\x2f\xf7\xe2\xea\xd0\xba\xb0\xff\xc3\x06\x5f\x1d\x5a\xd4\x96\x62\x53\x7c\xd9\x2c\x89\x86\xc9\x47\x2f\x9a\xb3\xec\xe4\xee\xfc\x58\x78\xae\x64\x72\x64\xeb\x55\xa3\x7a\x75\x88\x1d\x70\x00\xb8\x4a\x38\xe9\x4e\xe4\x21\xdb\x6f\x0a\x93\xf1\x25\xf1\x24\x72\x1c\x2a\xdb\xc6\xae\x78\x2e\x55\x15\xfa\x73\xd0\x07\x7c\x19\x61\x7a\x32\x5b\xbe\xaf\x90\xc7\xea\xa8\x21\x1e\x57\xbf\xbd\xd2\x58\x62\x32\x53\x20\x10\x29\x38\x36\xd2\x98\xc9\xf5\xcc\xe1\x33\x90\x12\x22\xa4\x3e\xe4\xd2\xc1\xac\xbf\xcc\x95\x44\xed\xe8\x52\xa4\x72\xdb\x8a\x87\x85\xca\x3c\x48\xc6\x7b\x67\x19\x69\x75\x61\x5c\x34\xf0\x40\x95\x6c\x4e\x68\xf2\x82\xc2\x89\x47\x65\x4a\x10\xc5\xbd\x44\xea\x00\x7a\xf3\x87\x57\x61\xd5\x61\xb2\xb2\xf9\xa8\x9f\x1f\xaf\x9a\x1a\xc5\xf4\xf0\xa4\x4e\xc8\x75\x50\x11\xbf\xf9\x8b\x56\x91\x4f\xf5\xd7\x1e\xbf\xe0\x62\xbf\x34\x27\xc1\xef\x6a\x09\x85\xc6\xd5\x4d\xd2\x40\x8c\xa5\xce\xe7\x6c\xdd\x9c\xdd\x68\xb3\x77\x2a\xe5\x8a\xd1\x8d\xea\x49\x00\x92\x82\x7f\x2b\x6a\x8b\x8f\x12\x94\x5e\x3c\x6b\xb5\x1b\x7c\x05\x9a\x87\x9a\x58\x30\x7d\x2a\x97\x49\x52\xe5\x50\x4b\xab\x1c\xea\xd2\x64\xef\x58\x5a\x29\x2e\x96\x9d\xa0\xd6\x96\x2e\x17\x4c\xa9\xa7\x3f\xea\x68\x48\xc6\xec\x1d\xdd\x10\x8a\x65\x83\x52\xd8\xf2\x23\x39\xf4\xbd\xa3\x19\xcb\x36\xea\xb5\x55\x3a\x82\x7e\x1c\x69\x88\xc6\x36\xea\x62\x50\x31\x76\xe4\xbc\x3d\xad\x38\x7f\xd5\xdb\xe2\x98\x6c\x42\x0f\x4f\xd3\xc4\x9d\x2d\x67\x86\x31\x1d\x37\xab\xfc\xb0\xfe\x55\x24\x57\x36\x0c\xde\xd0\x69\x4a\x61\x78\x0e\xc6\x88\x72\xd4\x5f\x1f\xc1\xa0\xf2\x45\xf2\xe6\x98\x9f\xc5\xa2\x11\x8b\x1f\xd6\xb3\x63\x73\x4b\x28\x99\x55\x19\x5d\xa7\xbc\x46\xdc\xde\x44\x9e\x5a\xfb\x54\x3f\x7c\xd5\xa2\xa7\x1d\xe5\xbb\xc8\x87\x4d\xea\x41\x5a\x8a\x3f\xf1\x26\x00\xac\xc3\xe5\x87\xec\x7d\x21\x85\xc9\xd6\xa3\x66\x47\xf2\x30\x85\xcc\xfb\x9b\x98\x62\x96\xb8\x9a\xd2\x7c\x77\x92\x3c\xeb\xa4\x3b\x00\x26\xe9\xac\xea\x62\x05\xd3\x92\xd2\x5e\x3f\x75\xb8\xf5\xb5\x18\x1f\x6c\xee\x25\x7a\xa3\x29\x7e\x3d\xe1\xc6\xd5\xab\x38\x4e\x84\x7d\xc9\x7a\xfa\x34\xe2\x3e\xdf\x96\x9e\xcd\xb6\x1a\x5a\x14\x0d\x56\xc2\x92\xb8\x1b\x97\xc7\x18\xde\x8a\x83\x64\xe4\x44\x37\x32\x64\x76\xad\x73\xe1\x01\xd3\x05\x0a\x82\x33\x92\x84\xc0\x95\xf3\xb6\x90\x29\xc2\x2e\xff\x0f\x6e\x5b\x60\xfc\x11\xa7\xe5\x64\x59\x8e\x98\xe2\xd7\x9b\x87\x32\x0d\xac\x89\xe8\xa4\x9b\x64\xe8\x5f\xd4\x98\xf5\x35\xce\xc7\x23\x46\x77\x17\x79\x00\x67\x8b\xd5\x7f\xcf\xdc\xdc\x80\xfa\xf5\x3a\xb5\x97\xae\xa4\x5f\xca\xb9\x90\x1a\xa7\x84\x7f\x43\x73\x8c\xb1\x46\xef\xbf\xfb\x14\xd7\xe1\xf9\xf7\xbf\x55\x8f\x87\xf5\x1b\xd5\x77\x16\xa0\x84\x82\x53\x5a\xa7\xe2\x00\xa7\x2a\x53\x7d\x74\x13\x39\x66\xe0\x96\x0e\xcf\x94\xdb\x82\x80\x08\x2b\xae\x73\x2e\x3a\x14\x3c\x23\x01\xe2\x09\xa1\x7a\xf0\x6f\x78\x8b\x18\xfc\x9b\x49\x7a\x2e\x3e\x3d\x03\x41\x5b\x73\x08\x6b\x99\x4a\x8f\xf3\x95\x1b\x26\xb3\x9d\x9e\xb1\x7e\x82\x7f\xf3\x13\xdb\xe9\x19\x76\x10\xbe\xbf\x01\x62\x8a\x20\xbd\x4f\x40\xca\xe0\x10\x76\xf1\xac\xc9\x18\x24\x14\x8b\xaf\x6f\xa6\xc3\x05\x49\x47\x88\x8f\x42\x9c\x44\x60\xbd\xe3\xe0\xe6\x39\x08\x68\x70\x5a\xe4\x76\x50\x1c\x69\x20\x5a\xf6\xa9\xde\x98\x82\x29\xf5\xb1\x47\x35\x77\xe5\x5b\x75\xd5\xb6\x20\xbc\x59\xc0\x81\xd3\xc1\xce\x07\xc5\xae\xf8\x7d\x35\xa5\xb8\x90\xa3\x72\xe6\xd9\x91\x24\x1a\x10\x4c\xe8\x27\x65\x7b\x52\xaa\xa5\x4a\xf3\xbc\xec\x5f\x80\x80\x94\x56\x21\xd4\xd2\x2a\x04\xd0\x84\xc4\x9a\x83\x4a\xc4\x09\xd8\xb9\x1a\x3e\xa0\xe3\x72\xcc\x79\xbe\x79\x37\x5a\xf8\xa5\x1c\x5a\x5b\x21\x87\xfe\xba\x51\xb4\x42\xbf\x09\x44\xab\xe5\x87\x4f\x69\x14\x3a\x76\xb8\xa9\x07\x08\x70\x0d\xcd\x41\x8b\x5f\x60\x53\x35\x3d\xe6\x9b\x6a\x4c\x70\xd5\xe4\x21\x83\xb5\x85\x21\xd4\x29\x2f\xb8\xe4\xa2\x8a\xdf\x33\x5c\x5d\x6b\x57\x63\x8a\xcc\x06\x39\x3e\xcf\x79\xdc\x9e\xdd\xf4\x09\xbf\x62\x81\x4b\x0b\xfe\x33\xba\xe4\xbd\x1c\xd3\x05\xee\xf6\x28\x82\x8c\x87\x2a\xe6\xbe\xdc\xa1\xd4\x94\x26\xaa\xb4\xbc\x72\x63\x81\x1d\xeb\xf0\xcd\x66\xa4\xa1\x9a\xf0\xc7\xbd\x5f\xb0\xde\xff\xfb\x0e\xf9\xc2\x09\x96\xea\x49\x10\x44\xaf\x3c\x50\x8a\x8f\x03\xb4\xf0\x60\xf5\xf9\x56\xe8\xd9\xec\xac\xe3\x99\x75\x76\xec\x31\x9f\xa8\xe6\xea\x4f\x2d\x7c\xda\xa3\x4b\xc9\xe7\x4d\x76\xd4\xf0\xb8\xda\xd0\xe0\x66\x9a\xe8\xd3\x23\x2e\x79\x68\x6b\x0d\x86\x34\xc3\xf4\x49\xc1\x0c\x60\x30\xe1\xb5\x19\xe8\xc7\x3d\x72\x7d\x4c\x35\x0f\x37\xb0\x8b\x7d\xa8\x12\x76\x34\x0f\x65\xb3\x6b\x0d\xf6\x37\x0a\xe3\x0c\x6a\xa0\x06\xb9\x6d\x69\x6d\xb8\x6b\x85\xe7\xca\xed\x85\x70\x83\xc6\x0a\xc3\xa2\x6f\x13\xae\x30\xf2\xe3\x92\x2e\xc2\xdf\x5c\xd2\x46\xd0\x5b\x45\x0b\x74\xea\x13\x17\x07\xfa\x86\x47\x7c\x1c\xe8\x67\x1e\xf1\x70\xa0\xbf\x78\xa4\x81\xca\x3c\xd7\xe3\xb9\x0d\x9e\xeb\xf2\x5c\x1f\x99\x81\xd5\x81\x78\xd6\x8b\x6f\x9c\xa8\xba\x8d\xf4\x43\xe8\xf9\xdc\x4a\x84\x07\x0f\xa5\xb1\xd5\x6f\xd3\xd5\x6f\x5c\x61\x57\xa5\xf8\x97\x1d\x35\xa4\xb2\x86\x4d\xc7\xed\x50\x90\x87\x4f\x2c\xe5\x1b\x37\x7a\x14\x09\xa2\x66\x84\xcc\x57\x87\x2f\x9c\xc1\xb3\xed\x8b\xdb\x97\x40\x8c\x0d\x5f\x5a\x73\x71\x42\xc6\x0d\x42\x2d\xdf\xc6\x01\x69\xe8\x1e\x1d\xd1\x61\x6f\x3c\x70\x7d\xdc\x26\x0d\x3d\xa0\x5e\xe0\x8f\x70\x87\x34\xf4\xf1\xd0\x1f\xf4\x07\x7e\x63\x88\x43\xd2\xb0\x6e\x3d\x1b\xf7\x49\xc3\x7a\x9f\x52\x1b\x0f\x49\xc3\x9a\xda\xf3\xf9\xe9\x11\x95\x8b\xa2\x11\xbf\xaa\x7a\x1a\xd2\x72\x83\xfc\x16\xeb\xde\xc7\xe3\x96\x96\x38\xe5\x52\xeb\xfa\xcd\xe6\xd1\x6a\xbd\x31\xe3\xa3\xfa\xb3\xab\xbd\x1c\x52\x1c\x4e\x29\xc2\x67\x3d\xb6\x77\x04\x08\x4f\x7b\xc9\x47\x55\xd5\xc9\x1f\x9a\x65\x8b\x96\xad\xde\x22\xfe\xec\xfa\xc3\x21\x0d\xfc\xf2\x75\x48\x73\xc3\x5c\xbf\x43\x73\x94\x6d\x3a\xb9\x67\xfe\xcb\x41\xb9\x93\x2a\xd5\x3a\x28\x37\xf1\x17\x68\x81\xdb\xac\xaf\x56\x3f\xd9\xd7\xd3\x9f\xfb\xc2\x2e\xef\x6d\x0b\x7f\x8b\xba\xbb\x0a\x65\xf3\x1b\xac\xa3\xdc\x0b\xef\xce\x45\x39\xda\xa5\xac\xa3\x00\xf7\x71\x88\xf0\x6d\x6a\x58\x0f\xc1\xff\x1d\xb2\x7a\x09\x64\xcd\x52\xad\x9e\xff\xe7\x01\x88\xa6\x4f\x27\xab\x11\xe4\x22\x8e\x1c\xdc\x41\xf8\x39\xa4\x69\x77\x4b\x91\x87\xd0\x9b\x5e\x66\x38\x76\x9b\x99\x51\xaf\xd7\x71\x18\xdb\x8c\x7c\x8b\xd2\x61\x39\xb3\x9e\x6b\xe8\xa3\xde\x3d\x10\x18\xdb\x93\x17\xf2\x45\xca\xf4\x98\x89\x09\x0d\xb4\x90\x71\x1f\xa7\xc7\xb8\x59\xc5\x4f\xe2\xa3\x23\x2e\x1c\xa4\x4a\xf6\x58\x3f\xd6\x3c\xc1\x8a\x1c\xec\xa1\x85\x29\x78\x78\x67\x85\xfe\x4c\x56\x61\x9b\x4b\xb4\x05\x58\x34\x3a\x75\x4d\x8f\xd9\xe1\x25\x9f\x88\x9a\xfe\x5b\x71\xfd\xc5\x19\x6b\x78\xa3\xc1\xae\xcb\xea\x3a\x36\x71\xa5\x38\xe6\x29\x12\xca\x09\x97\x67\x52\xee\xec\xc5\x09\x01\xbb\x60\xf2\x05\xf1\x3e\x29\x72\x72\xe4\xa9\x43\x73\x6e\xae\xd3\x00\x7c\x5b\xae\xbd\x32\x0a\xcd\xf3\x35\x37\x7e\x78\xbe\x96\xe6\xd5\xcf\xd7\xc8\x7c\xbe\x5e\x36\xaf\x4e\x39\x15\xbd\x1d\xae\xf2\xcd\x61\x9e\x46\x3e\x3b\x31\xd5\xef\xfa\x6a\x9f\xbc\xd1\x15\xee\xa8\x9e\xaf\xbf\x74\x47\x05\x0e\x37\xc0\xfb\x86\xb9\xd1\xd2\x5c\xfc\x70\x13\x1b\x41\x23\x54\xf1\x80\xc1\x94\x13\x59\x6b\x06\x64\xac\x19\xa9\xe4\x02\xe2\x71\x13\xb9\xcf\xa1\xbb\x3e\xf1\xb8\x92\x6c\x72\x82\xb9\x9c\xe6\x55\xae\x7e\x96\xd7\x0c\xf6\xe3\xba\x59\x3e\x0b\x96\x61\x5f\x69\xc4\x34\x3e\x51\xed\xb5\x13\x2e\x36\x1c\xa9\xa1\x7c\xe0\xde\x2d\xb9\xe7\x52\x0f\xcd\xe7\xda\xfd\xab\x76\x56\x4d\x9e\xca\x28\x79\x88\x0e\x5f\xe6\x31\x2b\x49\x31\x25\xc4\xe3\xda\xa2\x24\xac\xae\x84\xd5\x15\xb0\xa2\xc5\x82\xc3\xb8\x3a\xde\xe6\x1b\x55\xdf\x88\x3c\xa4\xdc\x7e\xba\x42\x35\xc9\x1a\x8c\x62\x97\xbb\xb9\x76\x97\x42\x6a\x21\x91\xfa\xc1\x53\x39\x1c\x4a\xfa\x61\x97\x09\x40\x69\xd7\xbf\x22\x50\x67\x66\x38\xa2\x23\xbf\xcc\x83\x37\x29\xf8\x7a\x54\xde\x67\xb8\xf3\xf9\x33\x97\x4a\xcd\xb4\xb9\xbb\x1b\x1d\xfc\xee\xfa\x44\xc6\x28\x5a\x2b\x2c\x9e\xb5\x47\x6e\xb6\xce\x46\x72\x56\xa5\xe4\xf3\x64\x4a\xcb\x6b\x06\x7e\xff\x60\xf9\x78\xfa\x41\xe5\x99\x84\x3c\x0a\xe5\x46\x2d\xf2\x6f\xb1\xca\x07\xfe\x9a\x0c\x80\x73\xd7\x5f\xe1\x02\x5f\xea\xbc\xee\xfa\xf2\x78\x7d\xd7\x27\x14\x4b\xa2\xe7\x76\x9a\x52\xf9\x29\x9c\x67\xf7\xf9\x41\xf4\xa8\xbb\x7c\x70\xac\x3a\x42\xf7\xf1\xd3\x97\xc5\x6b\x8e\xd4\x97\x9d\x32\xf1\xbc\x1c\x25\x72\x67\x86\x41\xd0\x59\x7e\xf3\xff\x12\x48\x58\x2a\x6b\x85\x32\xf7\x52\x90\x56\xdd\x3c\xae\x70\x51\x04\x95\x9a\x37\x09\x3e\x06\x7a\x6e\xd1\x29\x78\x91\xd1\xc4\x07\x0e\xc4\x82\x7f\x7a\x42\x4a\xea\xb9\x48\xe5\x31\x58\x64\xea\x4f\x91\x3a\xaa\xa9\xa9\x49\x9f\x0c\x32\x55\x7a\x65\xf8\xd5\x67\xeb\x52\xb1\x2f\x56\x3a\x5c\x44\x10\xc9\x6a\xfc\x34\x13\x7f\x70\x5d\x17\x08\xc3\xb9\xbb\x2e\x45\x38\x56\x42\x63\xd0\x3c\x9f\x9f\xe1\xb8\x34\x9f\x92\xd4\x6d\xe8\xe3\xf2\x6d\xa8\x46\x55\x3f\xa0\xe0\xba\x68\x14\x5d\x90\x0a\x1f\x46\xe6\xa3\xfe\xf4\x94\x7a\x20\xcf\xf5\x43\x8a\x14\x76\xd7\xaf\xb4\x8e\x68\xf9\x75\x48\x13\xc1\x34\xd6\x40\xc9\x64\xdd\xb8\xb6\xa2\x6a\x70\xe0\x9d\x9d\xb0\x93\xe0\x68\x84\x79\x17\x5f\x52\x1d\x81\x56\xd9\x5b\x28\xbe\xa0\x04\xee\x62\xb3\x88\xb5\x02\xe8\xdd\xe9\x97\xe7\x9d\xc7\xc4\xd3\x82\xa7\x9b\xe5\x70\xf9\xd0\xe6\x5b\xf4\xa0\x31\x14\xf7\x42\x6f\xe2\xac\xf5\x26\xa2\x53\x89\x2f\xeb\x97\x27\x7c\x26\xc3\xf7\x49\x9f\x12\x70\x1c\xfc\xc4\x24\x65\x9e\x76\xb5\xa1\x44\x62\x3e\x6a\x57\x7a\x3d\x5a\xbe\xfb\x29\x43\x3a\x2f\x9e\xb5\x27\xae\xcc\xff\xf6\xb3\xaf\x3d\x25\xdf\xd1\x44\x5b\x92\x81\x79\x7c\x37\x03\x1e\x53\xdc\x52\x53\x18\x91\x10\x72\xf7\x93\xf1\x95\x02\x0f\xd8\xca\x03\xb9\x6b\xef\x6d\x30\xcb\x6a\x87\x14\x21\xe4\x92\x92\x61\x7a\xe4\xf9\x46\xcb\x53\xfd\xbd\xe9\xfb\x9d\xaa\xdf\x19\x01\xab\x66\x5c\x46\x49\x7a\x42\x15\xcd\x59\x2a\xf8\xc4\x44\x7b\x77\x29\xf9\x19\xbb\x08\x95\x5d\xe2\x09\x97\x47\x84\x42\x38\xe9\x56\x07\x17\x0c\xe3\xc0\xab\x78\x64\xab\x9c\x2f\x18\xc6\x0f\x1e\xb5\x32\xbf\x85\x30\xeb\xce\x3a\x3c\x04\x8f\x0d\xec\x2f\x21\x84\xea\x3f\x6b\x77\xe7\x2f\xb5\x9b\x5f\x87\x57\xff\x3e\x7c\x3a\xbf\xaf\x38\xc4\x63\xad\x9a\x6f\x2d\xc9\x36\x28\x8f\x3f\x7a\xf8\xaa\x39\x38\x2f\xd3\x70\x94\x89\xa2\xa2\xe7\xbc\xa8\xcb\x8a\xba\xa2\xe8\xb9\x2c\x7a\xee\x47\x5a\xe3\x13\x38\xf5\x3b\x24\xef\x20\x11\xe5\xfb\x67\x95\x1d\x8e\xc4\x5b\xe4\x51\x22\xba\x77\x2c\x45\x24\x02\x4b\x64\x00\xd1\x93\xf6\x7c\x3e\x6d\xa3\x6c\xd6\x58\x23\xf4\x7f\x9c\x0a\x2d\xd3\x4d\x67\xf1\x0d\x66\x31\xa9\xc4\x7d\x4a\x29\x71\x65\x18\xed\xab\x8d\x98\x4a\x52\x57\x2d\x3f\xbf\x88\x75\xed\xc4\xb1\xae\xef\x7e\x8a\xda\x1c\xf5\xf2\x78\x7e\x3c\x26\xae\xb0\x0b\x1b\x12\x6f\xf1\xac\xfd\x4c\x07\xb9\x7e\xb9\xd1\x56\x50\x7d\x8f\x18\xe6\xcb\xbb\x22\x7d\x98\xe3\xa9\xf2\xb5\x78\xd6\x5e\x38\xa9\xbe\xc0\x00\xef\xc7\x2b\xb6\x61\x19\xb9\xbf\xb7\x10\xa5\x1e\xcf\x97\x98\x79\xef\x55\x9b\x80\x57\x0f\x51\x62\xd9\xc4\xa8\xf7\xaa\x0d\x4f\xa3\x02\xbd\xe5\x7b\x23\xfe\x66\x57\x15\x37\x37\xd8\x90\x5e\x6e\x52\x43\x9a\x0c\xb9\xeb\xfb\x8d\x1b\xfc\x72\x83\xcc\x0d\x68\x8f\x7a\xc9\x6b\x2f\x19\x8c\x6e\x32\xc4\xb1\x21\xe3\x64\xc8\xa3\xd1\xe1\xab\x91\x46\xf1\x99\xf0\xe4\x73\xdc\x00\xab\x00\x2e\x49\x2f\xcc\x31\xd5\x36\x96\x96\xac\x8c\x37\x37\xe1\x6e\xd2\xeb\x5f\xd5\x5f\x48\x78\x12\x94\xf2\x12\x55\x4e\xf0\x5b\xb0\xef\x43\x66\xdb\x89\xb2\x0d\x56\x3d\x41\x55\x0a\x36\x68\x4d\x43\x9f\x1b\x69\x6c\xfc\x2e\x10\x63\xf1\xac\xd1\x1a\xde\xb8\x41\xe6\x37\x5a\x63\xbd\xf7\x3b\x74\x96\xd6\xde\x4a\x09\x61\x32\xb4\x2e\xec\x84\x95\x1a\x9d\xcf\x65\x66\x0f\x45\x8d\x0a\x6f\x45\xe7\xd2\x01\x84\xdc\x79\xef\xc7\x1a\x8a\xab\xcb\xa9\x1d\x9c\x23\x33\x1f\x11\x8a\x60\xe3\xbd\x57\xed\x6a\x16\x05\x98\x52\xb3\xd7\x68\x44\x95\x93\x16\x3b\xf2\x24\xa8\x32\x7a\xe0\x67\xae\xc0\x9c\x0b\x17\x95\xf0\xc8\x5f\xef\xcd\xe7\xae\x55\xff\xb0\x79\xb0\x2d\xc5\xb4\xb0\xaf\x01\x22\x12\xf8\x5e\xd1\x96\x83\x3e\x99\xec\xc8\xda\x71\xc0\xd6\x02\xda\x89\x16\x8e\x04\x8a\x83\x28\x87\x74\x72\x21\xed\x62\xa6\x30\x7f\x1c\xe5\xc7\x8d\x65\x33\xa3\xdf\x85\x5c\x2e\x9a\x25\x05\xfb\xd9\xac\x96\x68\x5a\x86\xe8\x11\x38\xef\xbd\x6a\x67\xa7\x22\x91\xf5\x91\x88\xd2\x53\x8b\x1c\x76\x82\xa6\x6e\x28\x19\xc4\xf9\x84\x38\xf3\xb9\xc1\x3f\x9a\xbe\xe4\x16\xb7\x43\x22\x4e\x8b\xcf\x97\x82\x44\x9f\x35\xa7\x86\xc7\x70\xd5\xec\xd4\xb8\x70\xd9\x72\x21\xfa\x65\x82\x68\x9d\xda\x8a\xe0\xfd\x60\x8f\x92\xb8\x51\xec\x0e\x93\x7e\x26\xfd\x85\x79\x49\x57\x44\x4a\x13\x55\xa1\x50\xcb\x25\x8f\x82\x59\xde\x0e\xb1\x14\x8c\xc5\x30\xc0\xdf\x7a\x2a\x6c\x12\x17\x46\xc0\xd8\xf4\x49\x54\x6c\xb9\x71\x63\x06\xe8\xfb\x5f\x7e\x2d\x19\x9d\x2a\x7d\x3e\x5f\x6a\x5f\x07\xba\x92\xbe\x5f\x5a\x2e\xbc\xec\xb8\x5c\x9a\x49\x40\x90\x18\xaf\x20\xee\xee\x50\xe2\x46\x6f\xfa\x70\x61\x3b\xc8\xb8\x35\xf2\xb9\xc0\x5e\x2d\x15\x22\xd4\xaf\xf1\x83\x12\x78\xb6\x94\xe8\x72\x6b\x16\xb5\x4d\xb7\xad\xb9\x35\x26\xa4\xd5\xd8\x7f\xc2\xde\x27\xaa\x78\x5e\xa5\x1a\xfa\xf4\x6a\xf3\xb9\xc6\x1a\xf5\xdf\xd9\xfc\x2b\xb0\x5d\xb0\xfc\x05\x2e\x1a\x48\xda\x28\x7b\x35\x76\x4a\x04\x7b\x4d\x0a\xa6\x44\x71\x63\x50\x58\x08\xcd\x8c\xec\xcc\xfb\x57\xcd\xad\x25\x16\xc3\x25\xbc\x0f\x81\x45\xc0\x01\x9b\xcf\x01\x04\x85\x00\x83\x5a\xbc\x83\xa9\xac\x99\x9d\xb8\xda\xdc\x99\xcd\x5a\x3b\x19\x15\xf7\x7e\x44\x07\xa3\x0c\x0d\xbd\x8c\x1f\x7a\x99\x3e\x1d\xd0\xae\x3f\xf2\x07\xc3\x4c\x77\x3c\x1c\x65\x1c\x3f\x43\x07\x03\x3a\x1b\xae\x73\xb5\x9c\x75\x61\xaf\x11\x87\xf1\xa8\xaf\x1a\xe8\xb5\xc2\x51\x5c\x79\xd4\xf4\x33\x43\xda\xf5\x33\x1d\x3f\x0c\x46\xcd\x75\x69\x56\xd4\x8a\x34\xdb\x03\x19\x29\xd6\x1b\x0f\x28\x1b\x44\xb4\x95\x36\x28\xf1\xcc\x53\xb1\x14\x2d\x5b\x54\x6d\xce\x08\x1c\xd2\x82\x1a\x6c\x30\x8f\x24\x10\xcb\x64\xb0\xc2\x47\x6b\x73\xc6\x0f\x39\xe3\x90\x18\x4c\xb2\x5d\xc5\x7a\x97\x19\x2c\x2b\x8d\x65\xc7\x02\xde\x3f\xf2\x59\xbf\x26\xf0\x2c\xe6\x4e\x72\x4f\x9a\x64\xbb\x32\x19\xa8\xbf\xff\x61\x83\xc4\x64\xb5\x0e\xed\xef\xa2\xdb\x98\xd3\xca\x22\x39\x59\x44\x6a\x81\x42\x71\x75\x0d\xac\xff\x1f\xf1\xf7\x88\x5d\x8b\xa3\x43\x4b\xc0\x0a\x11\x8a\x5d\x46\xbd\x6e\xcd\x72\x6c\xc2\x53\x81\xa2\xcc\x4b\xc5\x3f\x45\x82\x71\x27\x59\x47\x34\xee\x88\x29\x47\x57\xc4\xe3\x90\x14\x90\x79\x25\xdb\x89\x06\xf8\x15\x9f\x4e\xf1\xb7\x68\x46\x84\x7f\x12\xb6\xf4\xe2\xc7\xe5\xaf\xda\xeb\x88\x22\x33\xa8\xa5\x76\xe3\x58\x1b\x71\x29\xaf\x41\x28\x83\x44\x73\xf2\x94\x61\x13\x6d\x6a\x54\xf7\x43\xef\x57\xab\xeb\x8b\x14\xb3\x70\x40\x58\x19\xb8\x4c\x8b\x81\xa6\x98\x02\xb8\x05\x02\xb9\x15\x8d\xc2\x0e\x00\xbc\x02\x53\xb9\x09\x50\xbe\x03\x94\x29\xd0\x03\x3b\xda\x06\x86\xba\xa8\xaf\xa2\xc0\x5e\x4c\xf0\x6f\x34\xa8\x8c\xec\xdf\x68\x70\xef\xac\xa7\x53\x8d\xe2\x80\x6a\x54\xdf\x68\xb1\x45\x95\x08\x2f\x6d\xba\x07\x22\x1d\xa2\x4b\x53\x6b\x7c\x68\x5b\xae\x4d\x18\xa0\x03\xcb\xb5\xf3\x90\xeb\xda\xe8\xbb\x93\x13\x3f\x17\x8f\x7a\x60\xac\x12\xee\x7e\xbe\x71\xeb\xee\xaf\x24\x3b\xc6\xbd\xae\xa3\x58\x67\x49\xcb\x38\x39\x88\xe9\x48\x3d\xc6\xca\xf5\xe1\x30\xb0\xa4\x56\x92\xc0\x97\x65\x08\xad\xfe\x4c\x7c\x17\xc4\xf7\x87\xf8\x2e\xda\xa9\x25\xef\x30\x12\x97\x14\x4e\x1c\x7d\x1c\x9a\x37\x7d\xd1\xbe\xde\x63\xbb\xe2\x75\x95\xe2\xa9\x2a\x51\x37\x6b\xaa\x01\x4b\x50\x8b\xc5\x75\x91\x26\x8d\x2a\xb9\x01\x57\xb3\x86\x83\x1a\x63\x17\x4d\xc1\x2e\x6e\x66\xdc\xdb\x76\x33\x61\xb4\xe5\x0a\xc9\xb4\xff\x16\xc9\xa5\xfd\x37\xf2\xc4\xcf\xa4\xd6\xec\xd0\x4e\xd9\xb9\xf7\xdf\xc0\xa7\xc6\x32\xce\x6f\x66\x1a\x32\x9b\x8c\x40\x03\x23\xe1\x0e\x71\x85\xf0\x1d\x97\x7d\x9c\x26\xcb\x2e\x8b\xf2\x4a\xd9\xf3\x55\x72\x68\x2b\x81\x96\x56\x43\x2b\x72\x7e\x3d\x9f\x17\xd7\xe0\xd1\x6e\xc4\xb8\x0f\xfb\x94\xb5\x04\xd1\xf0\x39\x9e\x06\xc1\xb8\xeb\x87\x23\x90\x42\x5a\x35\xdc\xac\x21\xb3\x05\xe2\xd3\xcd\xec\x0b\x0d\x75\x73\x26\x98\x0d\xb8\xdd\xaa\x0d\xcb\xb4\x69\x4a\x4c\x59\x53\xdb\xa2\x36\x69\x5a\x27\xbc\x7d\x41\x19\x28\xf7\x5b\x2d\x02\xa6\x9d\xc9\x32\x05\x56\x46\x5d\xcc\xaf\xff\x4b\x63\x7a\xe5\x63\x7a\x5d\x31\xa6\x3e\xd5\x14\xa0\xf0\x0a\xa0\x91\x79\xff\xa7\x32\x00\xb4\x3a\x11\xed\x04\xd0\xcd\x9a\xa2\x89\xb6\x1c\x1b\x5b\xae\x0d\x39\x8b\x67\xad\xcd\xc1\x6a\xff\xdf\x81\xa5\x74\xd9\xf9\xc7\x5d\x76\x78\x97\x9d\x15\x5d\xfe\x71\x94\x4b\x5d\x76\x6b\xc9\x73\xed\xe2\x59\xeb\xd6\x84\xa9\x64\x57\xac\xb4\x77\x0f\xe4\xd7\x47\x1e\xdc\xfd\x23\x24\x05\x83\xfd\x68\x74\xe1\x7b\xf8\x4a\x0a\x4c\x3e\x6c\xf3\xf7\x68\xe7\x33\xf1\x2e\x2d\xe5\x1f\x92\x84\xb5\xa4\x39\xd0\xbb\x07\xd6\x2e\x9a\xf8\x20\x94\xbf\x3a\x6e\x74\x7f\x70\x56\x13\x56\xc4\xdf\xbc\x48\x2f\x53\xee\x11\xe9\xb1\x57\x11\x7f\xcb\x42\x55\xf1\xd2\x16\x9b\xea\xf9\x4c\x71\x87\xc5\xd5\x61\x5f\xb8\xb0\x97\xd0\x88\xde\xf9\x0e\xf6\x70\xff\x1f\x60\x6e\x74\x15\x98\xd9\xf8\x7f\xd0\x8a\x51\x16\x6d\xe4\xe8\x6a\xc8\xdf\xbd\x7f\x02\xe7\xa3\x7e\xfd\x45\xd8\x1f\xbd\xd1\x55\xe3\x27\x89\x8d\x75\xf8\x5a\xa1\x65\x98\x5c\xba\x29\x12\xd0\x77\xf1\x03\x94\x80\x1f\xa3\x95\x46\x4e\x8f\xbd\x35\x92\xb4\x73\x7a\x69\x9b\xe2\x2f\x59\x13\x62\xf8\x63\x8f\x50\x73\x69\x42\x94\x81\x27\x06\xf8\xd8\x43\xa6\x18\xfb\xbb\x17\xc7\x24\xa1\x51\x6a\xa2\xaa\x38\x86\xfd\x7e\xd3\xe4\xb3\x39\x28\x8b\x4c\x4d\x42\xe1\xa0\x2f\xd0\xc4\xa3\x2b\x35\x56\x1c\x31\x12\xd3\xf9\xd8\xe3\x2e\x4a\xdf\xbe\x9e\x4d\x89\x8d\x8f\xf0\x1f\x60\xe3\x23\x64\xd8\x38\x90\xd3\x2c\x06\xa2\x0c\x54\x52\x28\x32\x23\x12\x5d\x1e\xf0\xc7\x48\x1d\xb0\x68\x18\x29\x55\xe2\x86\xbf\x46\xf3\x3f\xc2\xd1\xb7\x47\x3d\xfc\x8f\x48\xfa\x08\x01\x49\xd3\x8b\xaf\x8c\xb2\x18\x19\x3d\xea\xef\xf7\xcb\x42\xf9\xf0\x55\x59\x05\xc3\x57\x42\xa5\x5e\xfd\xa5\x8d\x63\xdc\x45\xd3\x0c\x7f\xc3\x46\x74\x12\x7f\xb8\xe7\x49\xd7\x9d\x28\x49\x20\x84\x5b\x3e\xe2\x68\x90\xf4\xab\x41\xaa\x1c\x2c\xac\x25\xd4\x8c\xd2\xbc\x6a\xf8\x5a\x71\xca\x94\xa1\x15\x16\x09\x93\x20\x19\x06\x37\x29\x2c\x14\x0a\xc3\x8b\xda\xe8\xc9\x36\xae\x97\xac\x16\x2f\xa8\xfa\xac\xf7\xc6\x87\x73\x62\xb7\x26\xde\xeb\x76\x29\x71\xe6\xf3\xd9\xab\x29\x15\xd6\x37\x3e\x7e\x15\x6e\xa7\x7f\xb9\x8a\xe6\xea\x59\xeb\xd5\x84\xc3\xf5\x9e\x60\xab\x1d\x87\xfc\x0a\xcc\x47\x3d\xbc\xe3\x1c\xf3\xba\x2d\xfd\xa4\x33\x0e\x6b\x3e\xea\x17\xf7\xc0\x60\x07\xfb\xdc\x17\xcf\xb4\x06\x9f\x57\x6d\x4a\x0a\x27\x5b\x8a\x0b\xf6\xd3\x0e\xaf\x97\xf0\x45\xde\xab\xa9\xd1\x84\x12\x8f\x6c\x97\x5c\x61\xc1\xdf\x8e\x13\xa9\x7b\xa5\x4b\x9b\x94\xcd\x2e\x34\x99\xb4\xd9\x9d\x5d\x2b\x2f\xbe\x53\xcd\x4c\xda\x29\x17\x1b\xe0\x12\x6a\x7c\x81\xcc\x9b\xd8\x30\x78\xe9\x4e\x0a\x3a\x49\x38\x21\x67\xd5\x0f\x3b\x80\xf7\xaa\x70\xe9\x7e\x2c\x1f\x6a\x9f\xf6\x13\xe9\x8f\xad\xa8\xbc\x3e\xe0\x91\x3d\xf4\xd3\x4e\x54\x76\x39\xed\xb0\xa3\x9f\x4e\x89\xcc\x3e\x9d\x32\x91\x12\xbe\x52\x3e\xe4\xc1\x98\xaf\xa6\xbe\xa5\xf6\x9c\xf8\x52\xca\x40\x66\xbf\xb6\x7c\x86\xa9\x45\xa6\xff\xec\xf8\x11\x19\x1a\x1e\x76\xf0\x49\x15\x53\xfd\xb4\xce\xbf\x4f\xfb\xc9\xef\xc3\x0e\xb6\x0e\x2f\xf0\xf0\xd4\xc6\x54\xbf\x1c\x47\x85\x96\x13\xab\x0d\xee\xf8\xbb\xde\x4d\x85\xb0\xf9\x59\x8f\x13\xce\x44\x02\xa6\xfa\x60\x3f\x9b\xad\x57\xc5\xbb\x46\x54\x96\x40\x81\x1b\x71\x15\x2a\x48\x50\xc1\x92\x25\x92\x20\xc8\x62\x2b\x52\x55\xc8\x20\x21\x01\x5a\x94\xb2\x1a\xb6\x02\x5a\xf6\x63\x0e\x64\xa1\xbe\x3b\x9f\xb4\x04\xc1\x1d\x76\x04\x0f\xe9\x4b\xb7\xe3\xe2\x91\x41\x57\x90\x57\x7d\xa5\xc5\x42\xf8\x6f\xb1\x91\x1e\x76\x2a\x82\xa6\xca\x82\x86\xb0\x1b\xf9\x01\x25\x77\xcd\x8a\xf2\x78\x4e\x71\xf3\xe2\x12\xcd\xcd\x53\x26\xfd\xa2\x4d\xf7\x7b\xcc\xe4\x38\xaf\xee\x31\x76\x97\x8b\x7f\xaa\xc1\x03\x63\xd7\x2f\xd8\x25\xd4\x3a\xb3\xff\x41\x7d\xd3\x4d\x81\xcc\x7d\xc5\x08\x4f\x31\x38\x2e\x88\x23\x3e\x9a\x8b\x99\x6c\x79\xb9\xb4\x60\xb5\x31\x6f\x36\xdf\x6a\xd1\xf1\x8b\x07\xbe\x18\xaf\xc2\x1b\x5c\xa1\x1d\x5e\x98\xc7\xf1\xc2\xc0\x6f\x6f\x60\x9c\x71\x7c\xcd\xcd\xe3\xad\x87\x99\x8d\x07\x3c\x8d\x26\xc1\x36\xc5\xdd\x36\x3f\xb2\x9e\x2a\x77\x97\xb4\xd2\x0d\xca\xb3\x00\x7c\x81\xca\xb4\xd3\x20\x51\x60\x14\x94\x0f\x03\x71\xc3\x59\x5f\x65\x0f\xbf\x66\xac\xf2\xbf\xbc\xb5\x53\x1e\xa8\x1b\x1f\xc7\x67\xd2\x9f\x72\xa2\x40\xb8\x54\x60\xab\x3c\x54\x0b\xf4\xc3\x64\x76\x29\xca\xce\xaf\xcc\xdf\x2d\x2b\x0f\x95\x4f\x3b\xea\x89\xab\x50\xce\x17\x4c\x59\x1b\x1c\x4c\x57\xdc\xef\xa2\x91\xb2\xf8\x75\x3d\x43\x29\x5f\xcb\xc9\x0a\xb2\xd3\x72\x7e\x55\xf1\xad\xfd\xf2\xca\x9e\xf3\x85\xf2\x7f\xdb\xf3\xd6\x5e\xaa\x67\x59\x3c\x55\x58\xda\x67\x39\x64\xad\xb0\x70\x92\xf1\xc6\x7f\xae\x08\x7e\x49\xb9\x1f\x2d\x01\x1d\x8d\xbc\x6a\x49\x92\xa3\x03\xdb\x94\xfe\x06\x8e\x3d\xcc\x44\x1f\xf9\xf9\xd8\x82\x4f\x4d\x52\x66\x30\xc4\x4e\x36\x3b\x69\x69\x88\x4b\x55\xd3\x1a\x5f\x06\x57\x6d\xca\x4a\x49\x95\xc0\xb4\x46\x94\xab\x81\xeb\x36\xad\x48\x0a\xb8\x8d\x15\x67\x82\x14\xf5\x97\xe7\x48\x70\x73\x42\x72\x27\x0b\xa8\x25\x45\x18\xf6\x7d\xa2\xf2\x0d\x4e\x4c\xd3\x03\x51\xd3\x7a\x76\xed\xb2\x48\xfb\x31\x52\xe9\xc9\x09\xc5\x62\x75\x42\xe0\x0a\xf0\xe0\x2f\xda\x76\xc4\x6d\xbf\x0c\x0a\x25\x2d\x23\x6e\x9f\x19\x13\x57\x4d\x23\xea\x22\xe7\xe5\x59\xd4\xf1\xc6\x72\xbc\xde\x58\x7a\x23\x29\x1a\x46\xb2\x45\x91\x1f\xbd\x97\x6d\xef\xcb\x2e\xdb\xfb\x5a\xd4\x90\xc5\x63\xc9\xf3\x39\x7c\x49\xc6\x72\x97\x34\xa1\x19\x07\xf2\x4a\x1b\xa8\x0b\xc5\x44\xa4\x78\xeb\x6f\xef\x2f\x9d\x72\xcc\x94\xef\x70\x55\x1c\x0f\xa7\xd2\x54\x95\x63\x50\xbc\x59\xda\xaf\x38\x07\x6e\x36\xab\x51\x32\x5e\x89\xc9\x7e\x88\xca\xce\x0f\x37\x42\xeb\x8b\x6b\xaf\x2c\x1d\x2d\x58\xe1\x0a\x48\xed\x34\x55\x14\x47\x3d\x2b\xed\x1e\x3a\xab\xdb\x55\xa0\xf8\x02\xce\x98\x55\xb8\x3c\x7c\xfe\x5b\xb2\x80\xf0\xe6\x70\xfb\xbc\xa4\x41\xf2\xc6\x62\xa5\x78\x63\x71\x05\xc3\x65\x3b\x95\x68\xcc\x78\x8a\xd9\x66\x9b\xa6\x9a\x89\xb3\x92\x6c\x54\xe1\x65\x52\x53\xcd\xc1\x9e\x3b\xe0\xcf\x4b\xf5\x63\x4a\x25\x9d\xbb\xfa\xac\x4c\x81\xbb\xf0\x20\x8b\x15\x1a\xed\x72\xae\x3e\x2d\xbb\xfa\x74\xf1\xa8\xbf\x3c\x2f\xaf\xfb\x70\x4a\x26\xd1\x91\x4c\x91\xc6\x6f\xd3\xef\x6c\x19\xcb\x86\x18\x2a\x8c\x35\xc3\x35\x46\x82\x54\x7c\x42\xf5\x63\x0f\x76\xe5\x06\x77\xec\x06\xfb\xb4\x8f\x7d\x22\x46\x91\xf7\x37\x8b\x02\x6e\xcd\xcb\xbb\xe8\xbb\xd6\xc8\xfb\x68\xb3\x91\x73\x17\xa2\xf2\xa1\x63\x9b\xb2\x32\x83\xdc\x37\xbf\xae\xec\x43\xc5\x08\xdc\x71\x2d\x76\xff\x4d\xa0\x35\x14\xa1\xe8\xc6\xe7\xa1\x3a\x65\xde\x63\x6b\x29\x2f\xc7\x7e\xc1\x3e\xad\x58\xca\x75\x3a\x7e\x40\x3b\x99\x51\x73\xdc\x75\x32\x3e\x77\x48\xa0\x67\x6e\xfc\xd6\xa8\xe9\x0f\x32\xdd\x56\xf8\x0b\x72\xc2\xde\x20\xd3\xa5\x53\xf8\x58\x47\xa6\x62\x15\x3a\x14\x40\x35\x75\xea\x0c\x35\x07\x1d\x50\x7d\x7a\xa1\x71\xf5\xf5\xcf\x57\xcd\x61\x47\x20\x96\x20\x6d\x2a\x61\x10\x00\x7b\xce\xc1\x9e\xfc\x7c\x6c\xb1\x4f\x61\x1f\x22\xe6\x81\xcf\x42\x9e\xea\x17\xf7\x6c\x52\x0e\x5f\x35\x4f\x64\xe5\x58\x9a\xc8\x47\xe6\x7b\x8d\xbb\x39\xce\xbb\x8a\x42\xfd\xad\x96\x7c\xa5\xcd\x0e\x6f\xec\xcc\xe4\x82\xaf\x65\x8e\xbd\x8a\x57\x8e\x11\xe7\x10\x81\x37\x35\x55\x41\x99\xfb\x43\xd0\x47\x36\xeb\xfc\x20\x2e\x80\xc0\x08\x91\xc1\xf0\x83\x38\xd9\xac\x00\xc3\x49\x80\xf1\x5e\x8b\x5d\xf3\xb3\xca\x07\xac\xa4\x73\x20\x28\x2c\x0f\xaf\x76\x2e\xee\x0f\x88\x9b\xcd\xba\x51\x2a\x3c\xa5\x59\x23\x32\x3a\xa6\xbb\x46\x28\x17\xaf\xe0\xea\xe1\xc6\x07\xd5\x97\x81\xe1\xe7\xc3\xbd\x66\x20\xfe\x13\xe2\x65\x47\xa9\xae\xf8\x09\x6a\x32\x4c\xd9\x21\x51\x03\x71\x77\xa5\x5a\x63\xc4\x8f\x94\x00\x23\xb8\x92\x1c\x2d\xaf\xa2\x1b\x9f\xab\x16\xbe\x3e\xf7\xcb\x62\xa1\x68\x25\xa5\x18\x91\xd9\xa0\x91\x51\x1f\x5e\x45\x97\x1f\xc2\xe2\x95\x61\x62\x69\x06\x36\x8b\x15\x36\x69\xec\xa8\xdd\x5a\x3c\xb2\xf1\x24\xf4\x9f\xf2\x82\x29\x3a\xf2\xc5\xd6\x42\xaf\x27\x09\x86\xd3\xaf\xc9\xfb\x3c\xfd\xd8\xcb\x66\xd7\xa8\x1e\xde\xc9\xad\x60\xca\xe6\x2b\x26\x51\x84\xdd\x44\xd2\x63\x0b\x25\xd9\x02\x2c\x69\xa1\x9b\x76\xf4\x59\xee\x37\x14\x92\x29\xae\x48\x99\x04\xb0\x1c\x66\x35\xcd\xd5\x67\xd8\xd1\x67\x58\xf2\x11\x04\xb9\x51\x0b\xd6\x78\x66\xe7\x7e\xe3\x7b\xaa\x89\x64\xec\x58\x77\x2c\x09\x09\x47\x74\xd2\xe5\x80\xc2\x04\xb9\x2e\x5d\x00\x62\x79\x36\x71\xf4\x69\xee\xb7\x29\xe0\x60\x09\xae\x48\x88\xc1\x70\xf4\x29\x76\xf5\x29\x96\x1c\x29\x02\x03\xea\x0b\x28\xfa\x2b\xa0\x58\x28\xcf\xa6\x66\xa9\x25\xd6\xb4\x66\x8e\xad\xb9\x9b\x45\xc9\xb9\x3f\x7b\x8d\xc6\xd0\x1f\x95\x69\xce\xc3\xc3\xd6\x87\x5f\xe6\xe7\x02\x27\x4f\x73\x6e\xbe\xf8\xdd\xc3\x06\x5a\x28\x9c\x64\x9a\xd8\x08\xb8\x2f\x4a\x53\x4c\x53\xec\x6c\x01\x58\x83\x2f\x96\x0a\xf6\xd8\xaa\xf5\xb2\x59\x8f\x10\xbf\x62\x94\x35\x27\xef\xa1\x4d\xcd\xcf\x83\x31\xbb\x3c\x56\x29\x6c\xdb\x4f\xb0\x6d\x8f\xdf\x27\x78\xdf\x7d\xc4\xd0\xc1\x76\x62\x31\xf1\xd8\xd5\x67\x84\x35\x53\xd6\x7c\x85\x59\x4b\x7c\x2d\xd5\xf4\xa0\x02\x64\x3f\xbb\x76\xe4\xf8\xc7\x55\x86\x37\xa8\x49\x8b\xf3\x43\xee\xb3\x52\x61\x72\x0c\xda\xf0\x8e\x4d\xe9\x25\x37\x1e\x90\x0e\x75\x39\x1e\x68\x0d\x7b\xd8\x27\x72\x9d\xc0\x93\x16\xb6\x38\x70\x20\x38\x03\x6e\x73\x46\xea\x23\xdc\xe1\x04\xdb\x46\x26\xc3\x16\xe3\xbc\xa6\x60\xcd\xf9\x36\x3a\xf0\xa4\xc1\x5e\x3b\xa7\x39\x3f\xda\x15\xaf\x9c\xf7\x50\x0a\x16\x38\xa1\x51\xec\xb3\x63\x55\x5b\x21\x7f\x1f\xf1\x36\x05\x5a\xad\x91\xe8\xb1\xad\xcf\xec\xb2\xd5\xd6\xa7\xd8\x67\x83\xb7\x4d\xae\x42\x69\xd5\x34\x1f\x5b\x1d\x7d\x8a\x3b\xfa\xcc\xc6\x1e\x2e\x18\x06\x32\x41\x5d\x42\x41\x2f\xe2\xea\xd4\xf3\xb4\x0e\x12\x94\x79\x0f\xa3\xf3\x71\x03\x07\xb8\xcd\x23\x8f\x5c\x50\x9a\xcd\xc2\x04\x5c\x50\xaa\x1f\xbf\x53\xad\x81\x1d\x68\x07\x27\x42\x60\x52\xf4\xc9\x1b\xa3\x68\x01\xb8\xbc\xac\x41\xe8\x68\x21\x79\xba\x78\x78\x8a\xa9\x5e\x0d\x29\xc7\x33\x3b\xbf\x71\x7b\xa3\xb5\x82\xfa\x04\xf3\x3e\x36\xeb\x63\x70\x70\x9a\x0b\x38\x06\x5c\x86\x63\xfe\x2b\xe7\xb1\x3d\x24\x30\x3d\xd2\x36\xe5\x4e\xe2\x12\xbf\xec\x11\x5f\x21\x3a\x58\x67\x6d\x7d\x86\x83\xc4\x72\x0f\x58\xb2\xa7\xcf\x18\xbd\x28\xc9\xbe\x44\x19\xc3\x05\xb6\x04\x21\x4e\x02\x84\x61\x35\xda\x89\xa4\x80\x27\x01\x1e\xb8\x95\x64\x47\x54\x84\x75\x8a\x03\xf8\x97\x65\xa3\x32\x87\x23\xd0\xa7\xb8\x9d\x58\xef\x01\xe7\x46\x53\xec\x25\x92\x53\x70\x40\xe7\x9c\x37\xb0\x99\xc5\x56\x90\x4a\x50\x60\x68\x7f\x05\x83\xe9\xc7\x73\xee\xc4\x3f\x1b\x30\x63\xbe\xfc\xe1\xb0\xbd\xa9\x1a\x2e\x5b\x5f\x81\xd6\x12\xf6\x9c\x2f\x42\xab\x74\x9c\xb4\x6a\x5d\x51\x11\xe2\x38\x8e\x2a\x55\xa2\xae\x98\x52\x2a\x05\x91\x39\x12\x51\xa7\xd7\xb0\xc0\xb2\x59\xed\x90\xff\xc2\xa0\x77\x74\x51\xe4\x82\x27\x79\xb6\x05\xde\x2b\xcc\x07\x81\xfd\x0a\xeb\x08\x65\x57\xa8\x89\xab\x82\x96\x9a\x1d\x6f\x11\x22\x7b\x12\x85\x27\xe3\x6c\x58\x16\x8c\xf7\x86\x1a\x16\x57\x7c\x82\x25\xdf\x27\xbe\x6a\x08\x21\x2c\xf7\x40\x7e\x7d\xf1\xe7\x40\x35\x69\x77\x87\xbd\x15\x66\x62\xea\x01\x40\x7f\x49\x19\x8c\x79\x63\x5e\xe6\xb2\x26\xdd\xb7\xd4\x96\xca\x5c\xd6\x12\x9f\xc7\xc9\x58\xc6\x8f\x42\x03\xca\xc6\xae\xa6\x4f\x02\xa9\x02\x5f\x6a\xf0\xc6\x97\x4a\xd3\x54\x1c\xc0\x84\x73\x8c\x86\xd4\x0b\x47\x37\x1c\x93\xee\x52\xa9\x49\x37\xd2\xcc\x46\xfe\xe4\x3a\x4b\xa5\x0e\x63\x9d\xae\x2c\x75\xda\x5f\x2a\x75\xda\xe7\xf7\x6a\x33\xb8\xa0\xfc\xfa\xa6\xe3\xc6\x07\x86\xfc\xd5\x75\xc7\x8d\xaf\xbf\xdf\x83\x68\xf4\xa7\x70\xd8\x42\x30\x5a\x15\x13\x3b\x71\xb2\x3b\xf6\xc4\xc9\x2e\x79\xdd\x97\x82\x87\xed\x1e\x40\x0d\xa9\x2b\xc9\x44\x53\x8f\x2d\xac\x76\x9d\x63\xed\xa6\x7c\xc4\x81\x27\xd9\x68\x1d\x51\x70\xad\x19\xa9\xaa\x55\x4f\x3a\xfc\x11\x99\xea\x1b\x9b\x89\xbb\xf0\xbe\xe8\xe3\x88\x8a\xad\x48\x3c\x38\x9a\x41\x42\x18\x27\x1c\xb2\x04\xa1\x51\x84\x84\x23\x28\x71\xd4\xa5\x9a\x48\x9e\xcf\x6b\xea\x5b\xf5\x7a\x42\x33\x3e\xe9\x42\xd0\xad\x49\x17\x18\xd6\xd3\x8d\x7c\xa9\x8e\x15\xa5\xf9\xa4\x8b\xef\x7e\x62\xaa\xbf\xec\x83\xb9\x4e\xac\xb7\x56\x32\x16\xff\x75\xe0\x22\x91\x4f\x28\xae\xc5\xda\x1c\x2c\x5d\x7c\xdd\x3e\x6b\x08\xab\x8a\xce\xfe\x1b\xc5\x6b\xe0\xc1\xe1\x3f\xc6\x50\x8a\x86\x3a\x4a\x5e\x4f\x31\x26\x5b\x69\x1f\xb3\x33\x41\xd9\xb1\xee\x3d\x7b\x61\x7a\x2d\x6d\x3d\xe8\xf5\x82\x8e\xaf\x4f\x5a\xc3\x31\xed\xb4\x3e\xc0\xa8\x46\xf7\x06\xf4\xfd\x17\x7f\xd2\xb8\x9e\xf2\xfb\xc7\x10\x25\x5e\x9d\x2f\x30\xf7\xd1\xa6\xf4\xf9\x51\x8b\xbc\xed\x71\x49\x65\x28\x2e\x35\x69\x27\xf1\x79\xd8\x12\x9f\x8b\x47\xf2\x01\xb7\x52\x69\xbf\x38\xff\x55\x23\xc8\x3c\xa7\xab\xbc\x49\xb0\xec\x8f\x9a\x49\xe3\x86\xc4\xc2\x76\xf5\xdf\x94\x4b\x59\x51\x9b\x02\xd9\x9d\x28\x27\x6a\x5e\xd4\x69\x89\x9c\x28\x2e\x02\x32\x37\xd2\x16\xb1\xea\x6c\x1c\xba\xd6\xf5\x87\xad\xb1\xce\xa5\x1b\x2b\xda\x11\x49\xb4\x13\x39\x46\x6c\xc9\x52\xad\xc4\xba\x38\x4c\x08\xbf\x96\x6d\xde\xbe\xb2\x83\xfc\xfd\x79\x85\x35\x58\x66\x4d\x24\xe5\x1d\xeb\xd8\xd6\xda\x8c\xb8\x0b\x06\x52\xc2\x37\x28\xea\x82\xf3\x9a\x02\x22\xb4\x7f\x7f\xae\x8a\x3b\x17\xb5\x78\x25\xf2\x0e\x19\x54\xa9\x47\x81\xd4\x1a\xb8\xb6\x76\xe7\x23\xd3\x61\x3d\x7e\x0e\x7a\xef\x65\xd6\xad\x65\xb0\xdd\x1d\x61\xb7\xd7\x19\x77\x43\x9e\x54\x80\xa4\x85\x02\x8d\xb3\x98\x4e\x93\x13\x25\xad\xd6\x28\xb1\x6c\xec\x90\x73\xc1\x22\xd8\xd1\x5f\x70\x9c\x8f\x80\x89\xf5\x17\x32\x83\xbf\xec\x76\x52\x2f\xbb\x3f\x17\x66\x43\x1f\xf4\xde\x89\x63\xf9\xb6\xd9\xd0\x39\x18\xfc\xfe\x14\x42\x5a\x34\xd0\x22\x7e\x17\xee\xca\xda\x0d\x02\x03\x80\xe7\x1c\x38\xaa\xe5\x5a\xbe\x8d\x45\x2d\x33\xae\xe5\x29\xb5\x58\x69\xd6\x9d\x67\xf9\x36\xfb\x11\x57\x86\x14\xfe\x3b\x6a\x43\x21\x99\xd8\xce\x30\xbd\x3c\x0f\x5d\xeb\xce\xb5\xb5\xfb\xd1\xa0\x15\x06\xe0\x73\x29\x7e\x03\x92\x2e\x4b\x3b\xe9\xb2\xf1\x34\x6e\xd4\xd4\x37\x9f\x40\x32\xd0\x97\x6b\x19\x36\xc4\x64\xff\x08\x2a\x2f\x71\x02\x9b\x63\xb5\x31\x96\x9a\xbb\xf3\x73\xae\x55\xb0\x91\x62\xa9\x1a\x13\x1f\x88\x67\x4a\x69\x24\x5b\x65\x70\xad\xc8\x64\x3d\xa4\x93\xe3\x1e\x62\x2b\xd1\x47\xfd\xfe\x6d\x95\x8f\xb3\x0d\x41\x08\xf7\xe7\xd8\xa2\xdc\xa3\xf9\xd9\xca\xd8\xe8\x1b\x11\xc5\x88\x82\xf1\x1b\x8b\x7a\xf2\x68\x2a\x90\x0f\x5e\x52\xb8\x8b\x22\xd3\xab\x50\x7d\x78\xcc\xb8\x23\xd5\xef\xdf\x98\xf8\x19\x1b\xe7\xa7\x6a\xbf\xac\xae\xed\x97\x78\xed\xb3\x20\x51\xdb\xad\xc7\x96\xd5\x52\x69\x98\x44\xb9\x03\xd8\x60\xa7\xa9\xb8\x41\xbf\x42\xf5\x49\x83\x42\x6c\xa7\x32\x4c\x69\xf3\x04\x5b\x0e\x66\x87\xc9\x6f\x8f\xfa\xf0\x38\x2d\xfa\xae\x5d\x46\x1a\xcd\xd4\x33\x8e\x43\xd7\xba\x75\xa2\xce\x12\xd1\xf9\xcc\x47\xdd\x2f\x2d\xb5\xf4\xf2\x55\x4b\xb4\xf3\xa7\x96\x26\x8d\xf4\x63\xea\xc8\x1d\x67\x72\xbc\x94\x8d\xd7\x41\x4b\x70\xb6\x12\xad\x8b\x42\x4a\x17\xdf\x8e\xd3\x32\x06\x67\x56\x9c\x4d\x63\xc9\xe3\xb1\x27\xb7\x09\xca\xb6\x77\x62\xd9\xe9\x08\x6a\x69\xbf\x10\x94\x31\x0d\xee\x06\x09\x96\x75\x36\x2b\x3f\xf8\x42\xae\x78\x2a\xfd\x42\x11\x06\x9d\xcc\x16\xa1\x64\x44\xe5\x8a\xb3\x54\x58\x29\xc0\x6b\x64\xb3\x6e\xb2\x90\x6c\x68\xc1\x8f\x98\x8e\xde\xea\xca\xad\x8a\x1d\x34\xdd\xe8\x9b\x76\xd8\x91\xde\x8b\xf3\x5b\x91\xa5\xc3\x21\x94\x72\x90\xe9\x13\xb9\x97\xb5\xba\x9a\x8b\xcc\x06\x91\x3b\x58\xab\xab\x49\x03\x86\x43\x57\x9a\xcf\xd3\x8e\x34\x9c\x3f\x6c\x11\x4f\xbc\xb3\xfb\xa8\x99\x0e\x2b\x13\x98\x0e\x2b\xd0\x66\x5f\x2d\xd2\x31\x5d\x99\xeb\xb2\x5c\xca\x0e\xed\x1d\xe2\xb3\xaf\x16\x69\x98\xca\xf3\xcd\x5f\x55\x4e\xbc\x09\x77\x35\x52\xfa\x82\xde\x3e\x7e\xca\x73\xd7\xe1\x4f\xa2\x7a\x01\xf8\xad\xbc\x68\xb0\x0c\x5c\x30\x70\x01\x17\x71\x01\x17\xf6\xf0\xfe\x36\xde\xda\xc2\x85\x2d\x5c\xc0\xdb\xfb\x25\x5c\x28\x14\x71\x71\x77\x1b\xef\xe2\xe2\xce\x16\x2e\x6d\xb3\x42\xa2\x30\x54\xc0\xdb\x3b\x78\x1b\x17\x0a\xec\xff\xa5\x3d\x5c\x2c\xe0\xc2\x0e\x4b\x37\x0a\x78\x17\xf2\x77\x70\x11\x4a\x96\xa0\x59\xf8\xdf\x96\x81\x8b\xbb\x78\x1f\xea\x6c\xef\xe1\x7d\xbc\x55\xc2\x25\x5c\xc0\xfb\x2c\x8f\x35\x89\x4b\x5b\xec\xc7\xd6\x0e\xde\x82\x1a\xbb\x78\x6b\x57\xd4\x65\x25\xf6\xa0\x34\x6b\x74\x17\xef\x41\xf3\xc5\x02\xde\xe3\x49\xbb\x78\x6b\x3f\x82\x71\x07\xef\x40\xb3\xdb\xb8\xc4\xa1\x80\x7f\xb6\x39\xe4\x50\xb2\xc8\xfa\x29\xe2\x12\xde\x63\x45\x77\xf9\x77\x29\xca\x4e\xf4\x67\xb0\x36\xf6\x53\xdd\x14\x61\x88\x3b\x78\x1f\xef\xc8\x4e\x60\x98\x3b\x1c\x9b\x25\x09\x75\xa1\x28\x06\x58\x82\x31\xc2\x88\x4a\x78\x0b\x6f\xc3\x18\xb6\x70\x11\x46\xc2\x30\x93\x18\x03\xef\x80\x23\x85\x8d\x91\xa3\x48\x29\xb8\x07\x99\x45\x68\x87\x77\x50\x30\x64\x7e\xb1\xc8\xa6\xe4\xdb\xb6\xc0\xc5\x2e\x2e\xec\x73\xf8\x4a\x3b\x62\xf2\x0a\x80\xa0\x02\xeb\x7c\xdb\x50\x93\xf7\xd9\xdc\xec\x30\x54\x14\xd9\x14\x31\x1a\x88\x20\x2a\xc0\x40\x4b\xfb\x1c\x51\x25\x01\xe5\x36\xeb\x8b\xf5\xbf\xbd\x0b\x33\x5d\x84\x9c\x1d\xc8\xe3\x14\x50\x60\xcd\x73\x1c\x95\x00\x6a\x36\x90\x5d\xbc\xc5\x0a\x6e\x29\x73\x06\xbf\x80\x1e\xf6\xf0\xfe\x0e\xde\x2d\xe2\xbd\x3d\xbc\x55\xda\xc7\x5b\x78\x9f\xd1\x83\x98\xbf\xd2\xd2\xaf\x6d\xf8\x7f\x09\x6f\x6d\xf3\xa9\xe4\xf4\xc1\x1a\xdd\x97\x83\x62\x14\xbc\x85\x0b\xdb\x80\xcd\x5d\x46\x5e\x5b\x00\xd2\x3e\xc0\xba\xc5\x26\x99\x21\x69\x1f\x97\x4a\x8c\x2e\xf9\xf4\xee\xe3\x22\xe0\x1c\x97\x58\xf5\x18\x49\x7b\x11\xd0\x40\x3d\x6c\xd0\x9c\x54\x0a\x11\xb1\x6f\x2b\xff\x32\x70\xb6\x00\x8a\xa2\x00\xae\xb8\x25\x90\x29\xff\x57\x10\xb3\x2b\xfb\x00\x72\x14\x98\x2a\x40\xfa\x5e\x4c\xf1\xbc\x3f\x28\xb0\x05\xcd\x95\x44\x6b\x8c\x56\xb7\xf0\xb7\x9d\x12\xde\x2e\x6e\xc9\x09\x28\xb1\x02\xfb\x6c\x12\xf6\x77\x18\x74\x5b\xc6\xae\x01\xc4\x0e\x98\xd9\xc1\x5b\x45\xbc\xbd\x5d\x62\xe3\x30\xb6\x81\x80\x0a\x3b\x7c\x55\x16\x0c\x3e\x98\x3d\x20\xa9\x5d\x49\x8f\xb0\x24\xb6\xc4\xd4\x16\x4b\x8c\xe2\x4a\x30\xaf\x02\x2b\x00\xf2\x0e\x5b\xda\xb0\x16\x18\xfd\xec\xb1\x72\xc5\x12\xac\xb6\x22\x0c\x3e\x5a\x1b\x5b\x45\x41\xe4\x6c\xe1\x6f\x71\xaa\x29\x45\xb4\xbf\xb3\xcf\xe6\x74\x27\x46\x53\x31\xc6\xfe\x1e\x6f\x7f\x0b\x08\x07\x88\x50\x22\x8c\xd1\x24\x47\xe3\x16\x9f\x60\x9e\x04\x78\x35\x0a\x9c\xb6\x39\x59\xec\x45\xfc\x4c\x4e\x2d\x6b\xb6\x50\xd8\x2b\x31\xb8\x19\xd6\x8c\xe2\x1e\xfb\xa7\x84\x77\xf6\x4b\x30\x77\x8c\x21\xed\xb0\xff\xef\xe2\x22\x5f\xec\xb0\x4c\xf6\x18\xd1\x6c\xc3\x7c\x14\x8d\x6d\x20\xd6\x92\xc1\x39\x61\x69\x57\x36\xbe\x2d\x78\xcc\x36\x27\x52\x20\xc9\x52\x34\xe3\x05\xbc\xb3\xc3\x91\xb0\x2d\xd8\xe7\x2e\x1f\x47\x89\x4d\xb6\x60\x0c\xc5\xed\xbd\xd4\x8a\x29\x16\x77\xf6\x0a\x78\xa7\x88\xbf\x95\x70\x71\xdb\x28\x89\x91\x0b\xb4\x72\xb2\xd9\xe5\xb3\x54\x80\x96\xf6\x8c\x7d\xc6\xd4\xf1\xee\xbe\x61\xb0\xe5\xb2\xbd\xcd\x8e\x07\x96\xa0\x26\x40\xb1\x11\xfd\x57\xfc\xc3\x7f\xcb\xf9\xe9\x94\xff\xd4\x42\xfc\x5f\x09\x1b\x30\x6b\x25\xf8\x06\x3e\x03\x8c\xd5\x80\xa9\xe3\xa5\xb6\x95\x72\x86\x28\xcb\x4a\x25\xcb\xa4\x5b\xdb\x51\x72\xd5\xfa\x6a\x6d\xe3\x8b\x96\xd3\xed\xc6\xad\xc6\x35\x4b\x4a\xaf\xc9\xde\xd2\x7d\xc5\xff\x2d\x97\x4a\x8f\x47\xcd\xdb\x49\xd4\x36\x94\x9a\xac\xa5\x6f\x49\x00\x4b\x51\xe5\xed\x15\x88\x2e\x29\x68\x49\xe6\xc4\x20\x18\x62\x47\xdb\x16\xa9\x25\xb1\xa0\xe4\xf7\xb6\xf8\x8e\xfb\x92\x3d\xed\xc2\x46\x15\x23\x6a\x27\xf5\xd7\x88\xda\x59\x46\x47\x1a\x9a\x64\x09\x43\x81\xc6\x50\xa6\x57\xa6\x97\x96\x46\x55\x5a\x41\x58\x25\x05\xc9\x69\x92\x88\x5b\x28\x29\x23\x5d\x86\x54\x2d\x6b\x24\x5a\x29\x2e\xcd\x40\x01\xaf\x5e\x4c\x69\xdc\xaf\xfa\x6f\x47\xe0\xaa\x94\x18\x67\xfc\xdf\x37\x09\xf6\xce\x4a\x0a\xdd\x81\xe9\x50\xab\x26\x87\x9f\x4c\x49\xa2\xc2\x48\x4c\xf5\x32\x68\x31\x50\xb2\x25\x23\x41\x2c\xc9\xdc\x42\x41\xa1\x8a\x55\xcc\x21\xc9\x24\x76\xa2\x46\x8c\x68\x3e\x4b\xca\x72\x4d\xd6\x28\xad\x2c\x63\x2c\xd1\x56\x29\x31\x4b\x62\xaf\x4c\xc3\x53\xe2\x53\x26\xec\x91\x7a\x81\x30\x12\x4f\x3e\xb1\x55\x4c\xd2\xe3\x72\x54\x79\x22\x58\x30\x5d\x7e\x0a\x72\x73\x39\x24\x2c\xd7\x2d\xd7\xae\xb0\x7f\xd8\xaf\x7c\xc1\xce\x15\xca\xec\x2b\x27\x3e\xcd\x43\xf1\x06\xd5\x11\x8f\xa2\xbd\x7a\xea\x39\xf4\x43\xe4\x0f\xac\x54\x32\xb6\x8a\x07\x84\x66\xb3\xdb\xdb\x45\x63\xeb\x07\x89\xfc\x83\x15\x76\x08\xa1\xff\x53\xdc\xab\x14\x8c\x72\xa1\x60\x7a\xf5\xf9\x5c\xf3\x78\x90\xab\xdf\x55\x25\x4c\xa4\x43\xbc\x3a\x76\x89\xc3\x00\xc7\x1e\x31\xb0\x0f\xcf\xb5\xcc\xbd\x03\x3f\x1f\x87\xbf\xf6\x73\xde\x8f\x1f\x05\xd3\xb5\x1a\xf6\x01\xa1\x15\x8f\x34\xca\x3e\x69\x80\xa2\xc7\xf4\x0e\xfc\x6c\x76\x4d\xa3\x07\xae\xe5\xd9\xc8\xcc\xe5\x3c\x76\x50\xf2\xf2\x05\x35\x4c\x37\xf8\xeb\x72\xac\xee\xcc\xb6\xa8\xbd\x30\x9b\x7a\xbf\xf7\xae\xc1\x4e\x9a\xdf\x42\x89\xcf\x62\xe2\x33\xf9\x95\x2c\x5a\x4a\x7c\x6d\x23\xf3\xb0\x9d\xcd\x9e\xb7\xb5\x3d\xe5\x20\xf4\xc8\x51\xc5\x2d\xae\xc6\x94\x48\xbf\xdb\x84\xfc\xaa\x18\x07\xb4\x52\x28\x33\xe8\xf2\x05\x38\x36\x96\xc5\xfc\x70\x68\x21\xb9\xb0\x78\xac\x52\xf0\xaf\x35\xa6\xe4\xf9\x88\x7b\xc0\xf1\xeb\xe4\x73\x81\x9f\xaa\x14\xd4\x53\x75\xd0\x89\x45\xcf\xbb\xeb\xa0\x53\x15\x56\x3e\xd5\x5e\x26\xec\x8d\x84\x6b\xd3\x51\x8b\x8e\xfc\x8c\xd7\x1a\xf8\xee\xa8\x33\x5b\x47\xe6\x22\xa8\xb3\xa6\xdb\x57\x7c\x7e\x0f\xa9\x06\x09\x5f\x68\x9d\xad\x0f\xc7\x56\xcf\x78\xcd\x48\x59\xf2\xc4\x0e\x7b\xad\xba\xe6\x68\xee\x7c\xfe\x5a\x17\xda\x62\xa9\x34\x56\xf5\x5b\xed\xba\xea\x7f\x4e\xf3\xe6\xf3\xfb\xb6\x86\x90\x75\xef\xd8\xda\xa4\xc1\xe6\xad\x55\xd7\xa8\xe6\xa8\xcd\xb8\x08\x9c\x6c\x7a\xf1\x43\xe3\x4c\x81\x10\xcf\x7a\x71\x6c\xee\x8a\x81\x12\xcf\xfa\xed\xd8\xb8\xc0\x48\xbb\xed\xd9\xa8\x42\xcb\x5e\xdc\x27\x6b\x91\x6b\x28\xc2\x56\x1c\xc2\x37\x13\xe9\x36\x60\x45\xa9\xde\x5f\x83\xba\x30\x12\x39\x7b\x23\x84\xf8\xf5\xc8\x9e\x8a\x61\xc0\x8c\x73\x1a\x51\xce\x49\x4b\x83\xcc\xe8\xfa\xff\xf4\x12\xce\xf7\xaf\xc9\xb9\x79\x8e\xd6\x8d\xf0\xc4\x8c\xa4\x31\xb1\xde\xbe\x12\xb6\xc4\x85\xb2\x1c\x23\xb7\x88\xcd\xcb\x84\xbc\x48\x30\x64\x01\x19\x83\x18\x16\x7f\x3c\xdc\x0e\x23\x80\xa0\xae\x3e\xb7\xeb\xd4\x71\x50\x47\x66\x07\x66\xfb\xec\x8d\xf8\x75\xe5\x75\x5e\x5d\xd1\xab\x45\x0e\xa2\xa3\xb1\x57\x68\x39\x81\x9b\x9b\xcb\x4a\x58\xd7\x6a\x97\xfc\x8d\xf3\xe0\x03\xa2\xeb\xd6\xb5\x93\x96\xd4\x70\xc4\x2a\x23\x84\xf9\x78\x95\xe9\xef\x2d\xc3\xd6\xe3\xb0\xf5\x24\x6c\x2a\xbe\xfa\x75\x45\x89\xe0\xf6\xc2\x91\x1f\x8e\x48\x3c\x6f\x90\x2c\x88\x77\x8d\x38\x15\x87\xab\x77\x9f\xb5\x3e\x6f\xb3\x2f\xdb\x6c\xd4\x15\x23\xa0\x17\x3e\x09\xb1\xce\x4f\x43\x9f\x8b\x8e\xa3\x39\x98\xad\xb3\x88\xc4\x14\xfd\x56\xa4\xce\x03\xff\x0d\xa6\xbf\x02\x14\x19\xf3\x87\x78\xd9\xac\xe6\x33\xa0\xbc\xa8\x25\x7f\x01\xb4\x10\xd6\x09\xeb\xba\x53\x47\x26\xfb\xdb\xab\x2b\x4b\xe9\xad\x9e\x36\x80\xf9\xd5\xd6\xc4\xf2\xe1\x4b\x04\x7b\x2b\x56\x86\x5c\x60\xb2\xa7\xe3\x0e\xc4\xed\x8c\xf1\x3d\x10\xed\xc6\x2a\x4a\x31\x58\x17\x53\x35\xd0\xa3\x8b\x7d\xae\xfe\xce\xb4\xc2\x8c\x83\x3c\xcb\xb7\xb9\x7e\x3d\x72\x06\xc9\xca\x0e\x93\x86\xd5\xff\x1d\x06\xd9\xfa\x8b\x69\x23\xe1\x44\xf2\xff\x01\xb1\x80\xce\x78\x6e\x47\x40\xcc\x2b\xa8\x58\xa3\x51\x9b\xb0\x4e\x21\x62\xe7\x46\x95\xe2\x1a\xff\x49\x4f\x28\xbe\xf4\x11\x8e\x8b\xf1\x74\xe7\x84\x62\xf7\x84\x22\x54\xa6\x24\xa6\x71\xaa\x5e\x0e\xc5\x46\x9a\x2b\x3b\x7f\xaa\xd2\x0a\x25\xd0\x2b\x0f\x13\xaa\x59\xff\x5a\xff\xeb\xef\xa1\x8d\x36\x36\xf1\x7d\x87\xa2\xb2\x02\x1b\x03\xc0\x3b\xa1\x56\xd3\xb3\xb9\x4b\x95\xd3\xcb\x55\x3d\x4d\xfe\xb4\x66\x1b\xf5\xca\xe9\x65\x99\x2e\xbe\x01\x6a\x4f\x28\xf9\x5c\xff\x7b\x6a\x18\xeb\xe5\x53\x1f\xaf\xff\x3d\x5a\x2f\xaf\x67\xff\xbf\x7d\x73\x1d\xaf\xff\x1d\xc2\xef\x82\x01\x1f\x53\xe3\x88\x7f\x16\xe0\xb3\xc1\x3f\x8a\xf0\x31\xe0\x1f\x5b\xec\x23\x03\xbf\xb7\x58\xc6\x5f\xeb\x7f\x95\xaf\x7c\xbc\x9e\x5d\x2f\x9f\xfb\x78\xfd\xaf\xf5\xf2\x4f\x1f\xaf\xe7\xa1\x40\x69\x9b\x15\xde\xe4\xbf\x77\xd9\xef\x83\xf5\xf2\xa5\x8f\xd7\x09\x24\xed\x40\x2f\x3f\xd6\xcb\x17\x0c\xa8\xb1\x61\xec\x18\x1c\xb0\x1d\xe8\x70\x6c\x18\x7b\xdb\xa2\xd3\x2d\x99\x42\x79\x91\xc2\x0e\x07\x78\x5c\x34\x8a\x7b\x90\xb2\x57\xdc\x2a\x46\x49\xfb\x32\x69\xcb\x5c\x57\x58\x89\x7b\x42\x15\x9c\xf9\x27\x94\x89\x01\x80\x22\xe7\x84\x92\x4d\x8b\xa1\xe8\xef\x69\xb1\xf8\xf7\xb4\xb8\xfb\xf7\x74\xcb\xfd\x7b\xba\xe5\xdb\x9b\x01\xf6\x58\xee\xbf\xb4\xca\xda\x70\x34\xeb\xf8\xf3\x5e\x38\xa7\xd0\xe0\x9c\x0e\xdc\x66\x6b\xe2\xcf\x1d\xea\xb6\x83\x41\x6f\x1c\x7a\x73\xb7\x35\xf2\xe7\xe0\x8b\xba\xe5\xcd\xdd\x9e\xe7\x3b\x74\xe8\xcf\x3d\x3a\xa2\x73\x6f\x38\x0b\xdd\x79\x73\xe0\x37\xe6\x9d\x5e\x18\x78\xfe\xd0\x9d\x0f\x07\xee\x7c\x3c\xf4\xbb\xb4\x8f\xb4\x4a\xd9\xa2\xf9\x0f\x23\xbf\xff\xef\x8d\x72\xde\xfe\x8e\x36\x36\x5b\x78\xa3\x4a\xc9\xe6\x81\x56\x29\xaf\xcd\xff\xde\xac\x68\xac\xc0\x61\xfe\xc5\x16\x7f\x8d\xfc\x7e\xf9\x6f\x56\x14\x2a\xff\xeb\xc7\x5f\xeb\xf6\x7c\xdd\xfa\xd7\xba\xfd\x7d\x7d\xfe\x97\xf5\xaf\xbf\xec\xef\x7f\xa1\xef\x3f\x36\x03\x4c\xd9\x08\x0e\x36\x83\x18\x17\xef\xf5\x38\x96\xae\xca\xdb\xdf\xeb\xdc\xb7\xc9\x85\x47\xa8\xde\xae\x6a\x8a\xe5\xa1\xcb\x23\x7c\x75\x60\x03\x1d\x95\x3f\x95\x20\xdf\xc4\x30\x3d\x2e\x61\x7a\xb9\x1c\x5f\xe7\xac\x18\x93\xc5\xe6\x73\xe3\x00\xae\x4e\x3c\x1b\x24\x56\x70\xb7\xb9\x56\x88\x02\x0a\xa7\x75\xf5\x50\x0c\xd4\xf5\xac\x95\x37\xde\x8a\xe5\xdb\x28\x55\xcf\x20\xc4\xe5\x3e\xe2\x79\x15\xb4\x70\x89\xb1\x46\xdc\x05\x44\xb6\x95\x63\x08\x5e\x19\x03\x89\xc2\x3b\xaa\x23\xad\xb7\xa3\x52\x0d\x46\x18\xd6\xa1\x8d\xa9\x35\xb0\xe3\xe2\x6f\xc2\x62\xbe\x05\x6e\x11\x8d\x03\xca\xfe\x71\x92\xb5\xb0\x23\xca\x2f\xb9\x1f\x95\x2e\x05\xb4\x21\xca\x34\x7a\x83\xcc\x35\x1d\x0d\x5a\xd3\x0c\x63\x6f\x83\xb1\x3b\xea\x0d\x98\xf0\x05\x6d\xbd\xf2\xbb\x6b\x19\xc1\xe1\xc2\xb3\x0c\x36\x22\x2c\xbf\xd8\xe0\x14\x43\xc9\x48\xe4\x8a\x27\x00\xd0\xaf\x53\x57\x43\xd6\x21\x9f\x83\x14\x5a\x79\xde\x80\x23\xd6\x91\xf1\xa3\x2e\x3c\x8e\x5b\xb0\x78\x53\x83\x17\xcc\x96\xf6\x22\x46\x2f\xd0\x08\x32\x01\x80\x88\xb1\x0b\x63\x39\x97\x35\xe6\xdb\x56\x83\x6d\x1a\x57\xb6\xd8\xb8\xb8\x29\x1d\xa6\xab\xaf\xa8\x25\x02\x3f\xe3\x93\x8a\x65\x63\x31\x1a\x4e\x49\x4c\x9c\x27\x96\x9d\xba\xd1\x71\x60\x18\x2e\x07\x9e\x18\xb1\xbd\xe5\x23\x79\xaf\xf3\x57\xaf\x69\x57\x72\x8c\x98\x6e\x05\x82\x5f\x29\x16\x63\x89\xbd\x13\x89\xd9\x19\x8e\xbb\x5d\xca\x25\xc6\x61\xa6\x17\x76\x66\x99\xe1\xb8\xdf\xef\x0d\x46\xbe\x97\xe9\x85\xc2\xc7\x51\xa6\xd7\xc8\xf8\x6f\x63\xda\xc9\x0c\x5b\x1f\xfe\x7a\x34\xb4\x59\x9d\x9f\x99\xa2\x7e\x85\x90\x2b\xaf\xc3\x73\x80\x71\xd7\xb6\x3c\x7b\x91\xb0\x49\x0e\x4e\x94\xc8\xd6\xfa\x2b\x23\xc5\x35\xe2\xc8\xf9\x8c\x81\xfc\xd5\xf4\x33\x41\x6b\xe2\x87\x99\x2e\x07\xb7\x49\x87\x99\xa6\xdf\x0a\x9a\xa3\xcc\x7a\xce\xe1\x35\x73\xeb\x38\xe3\x8c\x47\x99\x4c\xe8\xfb\xde\x30\x33\xea\x65\x9a\x74\xe2\xc7\xc5\x44\x07\xb9\xdf\xbe\x6a\x64\x0a\xf3\xfb\xca\x17\x01\xfb\x3b\xb0\x79\x7b\x6c\x3d\x24\x27\x9c\x11\x9f\x9c\x70\x07\x26\x9c\x2e\xa0\x8c\xf3\x65\x19\x81\x75\xd6\x28\x14\x57\xa4\x78\x77\x91\x32\xab\x10\x68\x88\xab\xac\x11\x01\x90\x30\x97\x11\xe8\x11\xd0\xc6\xb7\x8a\x4a\x40\xf0\xf9\xdc\x10\x64\x14\xd7\x58\xb1\x2a\xe2\x3e\x22\x7e\xa3\x71\x6b\x59\xb9\xf2\x80\xc0\xf2\xf1\x42\x41\x07\x84\x1d\x6f\x0a\x27\xf9\x1d\xf5\x42\x33\xba\xb4\x84\x40\x97\x6f\x3d\xba\x2a\xc8\x9f\x18\x4c\x0c\x51\x3c\xaf\x87\x61\xa6\x15\x4e\xfc\xc1\xd0\xcf\xb8\x34\xe4\x74\xe7\xf8\x99\x11\x6d\xfb\x21\x90\x5d\x66\xf8\x36\xa6\x03\x5f\x4c\xbb\xce\x9d\x6c\x49\x47\x4e\x62\x69\xcb\x3b\xb4\x0f\x41\x85\x06\x36\x22\x2c\x1b\xd1\x81\x52\xcc\xb5\x65\x15\x36\xa9\x6d\xa3\x45\x6c\x91\x11\x03\x86\x1d\xb6\x0e\x85\x67\x21\xd0\x19\x7c\x3a\x96\x9b\x58\x87\xea\x22\x75\x38\x49\x13\x97\x10\x8f\x9d\x65\x17\x54\x52\x14\xf8\xf1\x6c\x9e\x50\x8d\x11\xb8\xbc\x64\x96\x30\xb5\x4e\xa8\xe6\x60\x43\x92\x5b\xbe\x80\xc5\x94\xe6\x0b\x88\x5b\xc9\xa0\x0a\x2f\x23\x4a\xc8\x10\x2f\xf1\xba\x69\xf2\x0d\x3d\x56\x23\x48\x4a\x46\x91\x5b\x56\xef\x40\x2c\x8b\x6c\x76\x4d\x73\x7f\x90\x88\xa8\x81\xbd\xc4\xf4\xe0\x99\xe0\x43\x90\x33\x31\xd7\x36\x19\x35\xf8\xb9\x1c\xf6\x09\x89\x1a\xd0\x7c\xe2\x61\x37\x97\xc3\x2e\x89\xda\x91\x52\xac\x63\x8a\xcb\x65\x1c\x10\x0f\xe2\x0b\x40\x53\xa6\xf8\xcb\xbf\x03\xf1\x1d\xd8\xa4\x6d\xfa\xbc\x3b\x0f\xba\x63\x80\x34\x88\x6b\x36\x0e\x44\xc3\x66\x83\x61\x56\x14\x68\xd8\x9b\xc4\x57\x6c\x53\x04\x44\x92\x6a\xfd\x35\xe2\x01\x69\x07\xca\x08\xf0\x17\xcd\x01\x8f\xce\x93\xe0\x7b\xdc\x38\x9b\xe2\x38\x58\xed\xa3\x4e\xdd\xaf\x4c\x06\x5f\xd5\x58\xe7\x87\xf5\xe4\xa5\xbc\x64\x21\x03\x5b\xce\xe4\x32\xeb\x00\x8f\x33\x12\x0e\x8f\xb3\x8e\xa8\xe7\x78\x62\x3f\xea\xa9\x20\xee\x86\x78\x3a\x43\xe5\x5c\x18\xe2\xd5\x8c\xe8\xb1\x42\x05\xab\x71\xb9\xd7\xdf\xc5\xa3\xde\x1d\x77\x46\xad\x7e\x67\xd9\x8f\x5b\x4a\xdc\x59\xe6\x36\x4b\x7c\x57\x6e\xe9\xb0\xfc\x5c\x7f\x08\xfb\xb9\x68\xbf\xe5\x72\x2b\xba\xcc\xbd\xef\xf6\x42\x4f\x72\xe6\x61\xb3\x37\xee\x78\x9c\xf5\x46\xce\xed\xc2\x71\xd7\xf1\x07\x6c\xfb\x18\xf4\xde\x87\x19\x3a\x84\xac\x46\x6b\x30\x1c\x01\x2b\xe7\x76\x01\x43\x3d\xde\x52\x5e\xe3\x85\xb3\x90\x12\x89\x24\xb9\x76\x9c\x17\x3f\xe9\x3a\x94\x00\xa8\x8c\x44\x82\xea\x7b\x19\x67\x96\xa1\x11\x1c\x83\x0c\x0d\x7b\xfc\xa9\x57\xc4\x58\xb8\x71\xf0\xb2\x99\xc8\x3f\xda\x3c\x9d\xd1\x80\xba\xff\xdd\xf6\xa9\xff\xf3\xfd\x33\x9f\xdc\x3f\x1f\xf5\x76\xf5\x2b\x42\xbd\xf0\x54\x5f\x57\x27\x34\x6d\x94\x23\xe8\x55\x73\x2b\x6e\x39\x66\x3b\x79\x23\x57\xc0\x1a\x7f\x19\x26\x98\x12\xca\x3b\xb9\x02\xd0\xb1\xfa\xe2\x80\x37\xe5\x47\xe0\x90\x48\x70\xcb\xb9\xb6\xe5\xe4\x3c\x5b\xdd\xe3\x7c\x85\xb2\x5f\x4f\xe8\x4a\xd1\x4a\x30\xde\x88\x99\xb3\x1e\xd5\x68\x47\x5c\xca\x92\xfc\x2a\x20\x94\x18\x66\xa0\xee\x60\x41\x2e\x87\x68\x2e\xe2\xfe\x3e\x0e\xd0\xf7\x0f\xb6\x29\x07\xb8\xc1\x1d\x3b\x6a\xc6\x01\xf1\xb3\x59\xff\xc0\x55\x16\x51\x23\x9b\x6d\xf0\x04\xc6\xcc\x14\x8a\xf7\xfc\x69\xa6\x37\x1e\xb1\xc9\x72\xd8\xc9\x66\x98\x79\x6f\xfa\x61\x66\xe8\x8f\x46\xad\x30\x90\x54\x36\xa1\x9d\xb1\x8f\x33\xda\x7a\xce\x07\x1b\x99\xdc\x3a\xca\xb4\x42\x98\x58\x96\x28\x7a\x02\x8b\x27\x21\x00\xd4\x7c\x64\x2a\xc2\x62\x4a\x18\x88\x95\x84\x27\xc9\x57\x61\xb3\x7a\x2a\x8e\x9c\x3c\x11\x7f\x77\x16\x09\xdf\x56\x89\x33\x9e\x72\x5e\x3e\x92\x1a\x40\x2e\x99\x12\x12\xab\xa9\x3b\x27\xfc\x6d\x70\xa4\x96\xbd\x0e\x22\x75\x5f\x32\xe3\xa4\x89\xd2\x8a\x0d\xe5\xe1\x1a\x68\x95\x01\x85\xeb\x47\xd4\xcb\xb0\x6a\xc0\x29\x26\xfe\xc0\xa1\x1d\xdd\x67\xc8\xa2\xa3\xde\xa0\xcc\xa4\x30\x33\x06\xad\xcb\x61\xa6\x84\x5a\xaf\x9e\xad\x19\xc8\xec\xbe\x6a\x34\xb2\xb7\x5d\x1e\xcb\x71\x42\x3c\x3f\x82\x8d\x56\x94\xfa\xdd\x4a\xc9\x6a\x31\x2e\x72\xae\xe6\xa0\x05\x36\x14\x39\xbf\x5a\x4f\x14\x11\xed\x6e\xb2\x93\x5c\x5c\x28\x3c\x51\x8c\xb6\x39\xac\xa2\x37\xcb\xc0\x7a\x71\x1b\xeb\xdb\x58\xdf\xdd\xc6\x05\x5b\xef\xd2\x7e\x22\xa6\x0b\xfd\x0e\x37\x14\x91\x1a\x5e\x73\xac\xa6\x35\x62\x5b\xbb\x9d\x63\x3f\x67\x0e\xfc\x46\x9b\xc5\x85\xaa\x21\x4c\xcd\x7d\xd3\xfa\xf0\x6c\xad\x2f\x52\xd5\xb3\x50\x3f\xb9\x9a\x00\x13\xd8\x23\xd5\x34\xb1\x50\xe2\x2a\x21\xfa\xe9\x77\xba\x40\xd8\xe7\xc5\xa2\x90\x75\x19\xfe\x3e\xcd\xcb\xfb\xdf\xfd\x04\x92\xde\xd4\xf1\x1f\xd5\xa5\x4e\x0e\xbb\x5c\x63\xfe\xb2\xd4\x97\xc3\xfa\x72\x7f\x10\x0a\xc1\x73\xbf\x38\xfc\x9c\xd4\x57\x35\x1a\x6d\x86\xda\xe9\x6a\x82\xcf\x3b\xfc\x99\x53\xdc\xd0\xe9\x32\x31\xb0\x6d\x76\x09\x2e\xde\x15\xe0\xc1\xfb\xc1\x64\x64\xcd\x23\x0e\xf6\x13\xf0\xf9\x71\xb3\x67\x5f\xd3\xd8\x57\xa0\xb9\x00\x1a\xa8\x09\x07\x27\x94\x14\x36\xf9\xc4\x15\xbf\x37\xf5\xfa\xb9\xaa\xa2\x1b\x9e\xa8\x91\x4a\x8c\x1f\x2e\x8a\x57\x4d\xd8\x1b\x74\x69\x27\xe3\xb5\x86\xa3\x41\xcb\x19\xb3\xf2\xe5\xcc\xb0\x15\x74\x69\x86\x64\xd6\x73\x6e\xee\xb7\x6f\x72\x47\xd8\x6e\xb4\x48\x09\x71\x2a\x1e\x2d\x1b\x26\x25\x1a\xcd\x3b\x68\x33\x8a\x60\x33\x38\xa1\xdf\x9b\xba\x3f\xed\x6b\x79\x7d\xfb\x3b\xfd\x4e\xd1\xa6\x32\x07\x23\x75\x66\x3f\x17\x26\xb5\x1e\x1c\x3b\x19\x94\xc8\xa2\x36\x01\x91\x21\xe3\x54\xd8\x47\xd9\x40\xb9\x82\x2a\xb4\xc4\xaa\x3f\xb5\x31\xde\x32\x76\x09\x23\x9e\x97\x57\xcd\x51\xb4\x85\x6d\xcd\x41\x56\x3f\xd5\x91\xc2\x43\x08\x71\x17\x28\xb9\x94\xe2\xb5\x20\x79\x91\x65\xd8\x84\xfc\xaa\xe4\x9c\xb2\xa3\x2e\x9d\x9f\xf5\xe8\xa6\xa9\x0d\x01\xb9\x3e\x17\xc2\x0d\x5e\x53\x3c\x29\x6a\x12\xc3\x6c\x08\x37\xf5\x8f\xa1\x7a\xe8\x3f\x17\x33\x7e\xff\x9a\x3a\xca\xa1\xcf\x86\xd8\xfc\xdb\x6c\xd6\x78\xc0\x43\x7e\x2d\x38\x39\xa1\xa4\xa9\x77\x7a\x81\x56\x50\x5f\x06\x5c\xa8\xca\x49\x0a\x11\x7a\xde\x7d\x4e\x19\xef\x27\x94\x58\xeb\xdd\x56\xd8\x1b\x04\x83\x96\xd7\x69\x85\xfe\x3a\x76\x27\x14\x0f\xab\xb8\x7a\x81\xbd\x21\x9e\x4d\x29\x3e\xae\xe2\xe9\x19\xbe\x3f\xc3\xce\x09\x7e\xac\xe2\x5e\x15\xbf\x9f\xe3\xe1\x39\xfe\x7d\x81\x07\x03\x8a\xd7\xe9\xb4\x35\x1c\xb5\x46\x1d\x7f\x1d\x07\x27\xf8\xad\x8a\x2f\xce\x70\xfd\x0c\xd7\xce\xf0\xcf\x21\xc5\x4f\x43\xdc\xac\xda\x8a\xf5\xb5\x72\xe3\x24\x1e\xa7\x36\x47\xdd\x4e\x79\xca\x67\xe9\xd4\x87\x80\x2d\x67\x3e\x2d\x7b\x98\x86\x6e\xb3\x37\x28\xbb\xf8\xc4\xa7\x65\x07\x6f\x1c\x96\x8b\x06\xee\xd2\x41\xd0\x0a\xcb\xdb\xca\xfb\x57\x5e\x57\xf8\x64\xa7\xd6\xdb\xa1\x1d\x5f\xc5\x7e\x86\xb4\xeb\x97\xeb\x58\xa8\xb2\xcb\x96\x8d\xef\xdd\xf2\x27\xa8\x05\x6f\x58\xd6\xc3\xe9\x62\x21\xfc\x8e\x3c\xb7\x34\xa8\xbd\x72\x73\x03\x67\x23\xfe\xc5\x02\x61\x17\x1c\xf7\x3a\x15\x97\xcc\x40\x59\xf5\x76\x68\x83\xb7\x1f\xf6\xf5\xfa\x2a\x9a\x30\x18\x7b\xc4\x94\x7c\xa8\x89\x4c\x7e\x61\x94\xd8\x78\xd5\x5c\x2c\x21\x4b\x82\x73\x3b\xa6\x8b\x85\x72\x36\x4b\xc3\xef\xae\x00\x5f\x51\x16\xa9\x5b\x2e\xaf\xea\x5f\xa6\x6a\xd4\xc7\x74\x11\x35\xf7\xab\xb5\x92\x7f\xf0\xaa\x77\x67\x51\xb9\x43\x18\xe9\x86\x8d\x52\x8d\xd5\x18\xb8\x8b\xc4\xeb\xe1\x8f\x7f\x00\xc3\xcd\x7f\x03\x43\xcb\x2b\x5f\xd4\x35\xab\x59\xc5\x0c\x02\xbd\xe5\xd9\xe8\x3f\xc2\x75\x2d\xe1\x8a\x8f\x48\x09\x69\x84\xf5\x69\x4d\x66\x76\x42\x90\x44\x9f\x91\x33\xa1\x28\xac\xdc\xef\x61\x59\x3c\x78\xb6\x36\x6c\x6b\x6a\x27\xa6\xe5\x76\x88\x41\x0f\x5d\x1e\x8c\x69\xce\xd3\xa9\x93\x1b\x84\x34\xa7\x79\xfa\x2f\xb7\x72\x78\x56\xbe\x45\xb9\x77\xfe\x7d\xef\x57\x1a\x97\xec\x7b\x08\xdf\xd6\xb9\x67\x57\xae\xab\x2c\x21\x68\xe0\xd3\x90\x96\xd7\xd6\xa8\x55\x9f\xd9\xd1\xb8\x80\xa9\x56\x6a\xe5\xa1\x8f\x72\xd0\x73\xcb\xb3\x17\xfc\xc2\xf1\xfd\xa2\x9c\x24\x0d\x0e\xc2\x38\xc8\x01\x26\x74\x67\x30\x1e\x36\xb3\xd9\xf8\xb7\xee\x3a\x1a\x82\x9e\x92\x38\xba\x03\x1c\x25\x44\xb6\xab\xba\xfa\xee\x16\xde\xff\x76\x38\x1f\x0d\xc9\x67\x6b\xe4\x77\x87\x65\xcb\x5e\x08\x8b\x6d\x1f\x8e\xe1\x83\x90\x89\xe3\x08\x87\x0c\x9d\xf0\x32\x85\xf1\xc5\xf2\xfb\x05\xf6\xe8\x88\x96\x3f\xe1\xbd\xb9\x63\xcd\x5c\x7b\xb3\x88\x01\x9e\xb2\xbf\x58\x20\x24\x1a\x09\xb2\xd9\xa8\xe6\x75\x5d\x0b\xd8\xb2\x31\xa3\x1b\x59\x37\xba\x9d\x25\xc4\x8b\x45\xe2\xab\x56\xe8\x67\x80\xe7\xb0\xc3\xcd\xb0\xef\xbb\xad\x06\x3b\x51\xbd\xb7\x46\x4d\x26\x28\xd3\xcc\xc8\x9f\x8e\x32\x80\x18\x76\xa8\x71\xc9\x75\x5d\x73\x73\x7e\x03\x7b\xc8\x8c\xba\x73\xd1\x02\x32\xd8\x88\xdb\x89\x74\x01\x5b\x27\x9b\xd5\x42\xbd\xe5\x91\x0e\x3e\x9a\x6a\x21\xfe\xe4\xe0\xbf\x85\x8b\x78\x79\xc2\x60\xef\xcf\xf8\x60\x43\x85\xde\x8e\x4e\x68\x74\x10\xe2\xa5\x7c\x89\x12\xde\xcc\x30\xd4\xba\x47\xb8\x90\x78\xc9\x7f\x1d\x1d\xb6\x29\xe1\x95\x7e\x0f\x45\x25\x36\xa2\x32\x15\x93\xed\x2c\x16\x26\x38\x99\xd1\x19\xf3\x24\x6b\xaa\x68\x1a\xaf\xc4\x9b\x95\xb3\xd9\x6a\x68\x6d\xb9\x5d\x03\x37\xf6\xb1\x87\x1b\xb1\x05\x48\x48\xda\xc4\x30\xc3\x03\xc9\x48\xcd\x50\xda\xeb\xf7\x05\x73\x0d\xe1\xd6\xbd\x0f\x1c\xf1\xfe\x2c\xd2\xe4\xf5\x49\xdf\xda\xb0\xf1\x90\x18\xe6\xf0\xa0\x0f\xd8\xbc\xb0\xcd\xa1\xac\x3d\x26\x3c\x6d\x68\x9b\x63\xa8\xfa\x7b\x08\x61\x32\xb9\xac\xd7\xc6\x63\xbe\xc0\x18\xa5\x20\xb4\x58\x18\x84\xb4\x21\x3f\x98\xcf\xc5\x1b\xfc\x89\x19\x90\x36\xc0\x39\x24\x21\xe9\x43\x3f\x11\x94\xac\x1f\xb1\x7c\xc7\x02\xce\xa1\x8d\xc7\xf1\x4a\xbe\x3f\x2b\x8f\xc9\xf1\x09\xd5\x58\x47\xd8\x41\x66\x98\x23\x63\x76\x22\xd2\x8c\x83\x61\x65\xac\xff\x9c\x94\x0d\x64\xf6\x05\x3c\x7d\x3c\x86\xb3\x9f\xe2\x0c\xcb\xbf\x28\x87\x39\x52\xd0\xb7\xbf\x07\xb9\x71\xbc\xba\x6e\x9c\x45\x5c\xa9\xf8\x3d\x80\x36\xac\x13\x5b\xeb\xe7\x8a\xdf\x83\xcd\x82\xbe\x53\xd8\x43\x66\xc0\xd3\x42\x35\x6d\x22\xef\x1a\xfa\x38\xe0\x23\x0c\xc9\xcf\x57\xcd\xd3\xa7\xf9\x86\x3e\x45\xb8\xcf\xbf\x66\xf9\x86\x3e\x43\xf8\x83\x47\xd1\xfc\x20\x6e\x85\xbb\x64\x60\x05\x73\xe1\xf7\x36\xf6\xf4\x59\xee\x5b\xff\xbb\xd6\xce\x4d\xac\x43\x7b\xb3\x88\x50\x39\x51\x62\x62\x0d\xd8\xe2\x63\xc5\xfa\xdf\x45\x11\x3c\x24\x1f\xfa\x34\x2f\xb2\xc6\x64\x98\x63\x3f\xf1\x11\xf9\xd0\x67\x79\x5e\x06\x57\xc9\x11\xb4\x68\x06\x4c\x22\xe3\x57\x3c\xa2\xe1\x0f\x7d\x8a\x8f\x01\x38\xfc\xa1\xcf\x70\x7b\x53\xe9\x1c\x40\xe5\xc5\x8e\x5f\xa1\xa4\xa7\x4f\x71\xbe\x00\xbe\x1c\xb8\x97\x06\xc0\x85\xcb\xc6\xe8\xea\x33\xf9\xc5\xc6\x28\xf3\x3e\x58\xde\x87\xcc\xfb\x60\x79\x81\xbe\xf1\x4a\x0a\x84\x84\xdf\xfb\x15\x8b\xd1\xf4\x87\x5d\xb6\x3e\xb0\x87\x5d\x1b\x99\x81\xde\xe0\xaa\xce\xd3\x8e\x06\x55\x8e\x10\xf7\x83\x3c\x16\x7f\xab\xe2\xef\x10\x7c\x27\xf8\xd6\x99\x9d\xdb\x36\x5d\xe2\x5b\xae\x67\xe7\xb7\xf9\xa1\x9c\x35\x62\x9d\xd9\x3f\x88\x97\xcd\xc2\x6f\xd7\xb3\x0f\x88\x8b\xd0\x67\x48\x9a\x6d\x0d\x66\x36\xe4\x65\xcc\x17\xaa\xb1\x9f\x0c\x09\x0d\x7d\x8a\x43\x51\x9c\x0d\x13\x99\xbf\x92\x99\x7d\x9e\xca\xd6\x0c\x09\xf5\x8d\x57\x34\x24\x7d\xcb\xb0\x31\xfb\x87\xf4\xad\x22\xfb\x55\xb4\xc9\x10\x12\xf4\x29\x91\xd5\xe0\x0b\x10\xd7\xb7\x0a\x89\x8c\x82\xcc\xf8\xc6\x6a\xaa\x39\x45\x91\x63\x86\xca\x60\xc2\x78\x30\x15\x8d\xa3\x8a\x81\x07\x18\x05\x80\xca\x1a\xfb\x9d\xcd\x6a\xdc\xb9\x66\xbd\xab\x79\xb9\x12\x76\xf3\x25\x46\x27\x22\x85\x15\xe4\x10\xc1\x2f\xd6\x11\xc2\x63\x99\x1b\x44\xb9\x41\x9c\xbb\xa6\xf5\xad\x99\x7d\x40\xc6\xd6\xcc\xce\x66\xfb\xba\x1f\x7a\x3f\xc8\x98\xfd\x41\xd9\x2c\xcf\x1a\xaa\x59\x43\xf6\x27\x9b\x5d\x09\x22\x23\x00\x3e\x8a\x1f\x8c\x12\x5f\x28\x94\xc2\x62\xce\xf2\x9a\xcc\xcd\xbb\x08\xe1\x5f\x22\xd7\x95\xd5\xce\x6c\xf0\xb8\xf1\x4b\xad\xe5\x7a\x76\x4e\xf3\xf2\x22\x1f\x21\x2c\xdb\xf4\x10\x42\x0b\x8f\xf8\xfa\xa8\xd7\xcf\x6d\x9b\x3e\xf1\xad\x6b\x37\x41\x25\x2c\x27\x26\x93\x6b\xd7\x3e\x20\x3e\xdc\x8a\x72\x32\x09\x89\x2b\x0a\x99\xf2\x07\x9f\xa1\x19\x76\x45\x05\x98\xa3\x6b\xaa\xb9\x11\x9d\xcc\x70\x18\xd1\x09\x6b\x60\xe3\x15\xf5\x49\xc8\xe8\x84\xfd\x43\x42\x46\x27\xec\x1f\xd2\xc7\xdf\x58\x8a\x3e\x93\x6d\xf2\x2f\xa0\x87\x90\x91\x86\x92\x51\x88\x33\x8a\x89\x8c\xa2\xc8\x88\x00\x84\xe1\xb8\xf1\x70\x04\xa1\xb8\xd1\x2c\xb8\x92\x50\x78\x91\x1f\xbe\x98\x28\x56\x39\x4f\x64\x72\xde\xc7\xd7\x02\x8d\xbe\x40\x3e\x2b\x00\xd8\xbf\x56\xb1\x7f\xed\x46\xd8\x07\x97\x9a\x71\x59\xe2\x45\x8f\xfa\x59\xc7\x68\xd1\x00\x15\xfd\xe7\xc2\x6c\x93\x06\xe7\x9d\x66\x5b\x2e\x76\x59\x29\xd7\x8e\x26\x35\xdf\x8e\x7a\x90\x3f\xcf\xec\x1c\xf8\x61\x11\x31\x91\x6f\x48\x9b\xd5\xc1\x61\x74\x5a\xc0\xd7\x44\xdc\x5b\xf1\xbb\x96\x10\xee\x5a\xc0\xb6\xf3\x0d\x42\x38\xe8\x8d\x4b\xf4\x79\x4d\xd6\x0c\xbe\x23\xc0\xf9\xe9\x8e\x58\x36\xee\xcb\xbb\x98\x54\xc5\x09\x91\x55\xf1\x04\xb6\x3b\xb6\x55\xc2\x46\x78\x4f\x26\x7c\x9f\xb4\x6c\xb3\xcf\x04\x8e\x21\x32\xab\xec\x28\xd8\x1b\x68\x1f\xe4\x5e\x6e\x9c\xd5\x83\x0f\xb3\x2a\x37\xcf\x07\x52\x3d\xa1\x1a\xcf\xab\xda\xf8\x9b\x83\x4c\x88\xbd\xf5\x80\xcc\x89\xde\xb8\xcc\x66\xb5\xea\x8f\x3b\x50\xef\x54\xee\x20\x1d\x2e\x69\xee\xac\xaa\x2d\xb6\x26\xf6\x13\x43\x2a\x5a\x2c\xa0\xeb\x31\xfb\xe7\x88\x18\x8c\xde\xae\xd1\x3f\x19\x01\x1b\xc0\x35\x54\x05\x69\x8d\x6f\x59\x5d\xca\x9b\x60\x60\x40\x2b\x62\x78\x55\x62\xe0\x15\xa3\x79\x20\x7d\xeb\x08\xc6\x30\x21\x0c\xa6\x3c\x83\x09\x5f\xb3\x06\x27\x08\x77\x69\x8e\x4c\xf8\xc8\xba\x14\x99\x47\xb9\xdc\x82\x03\x76\xa4\x80\xf6\x19\x03\x66\xde\x91\xcf\xb3\x66\x79\x22\x64\xa4\xc5\x42\xba\x03\x9d\x24\xf6\x7d\x0e\x92\x79\x4d\xee\xd8\x9f\x2e\x05\x31\xe0\x1e\xc2\xcb\x02\xf2\xfa\x54\xeb\x52\xdc\x05\xa5\xe8\xd0\x3a\xb2\x91\x09\x86\x12\xda\x4d\x8e\x74\xa9\xfe\x73\x82\xcc\x7b\xab\x7f\x68\x67\xb3\x47\x53\xed\x1a\x7f\x36\x68\x59\x50\xdf\x4d\x1e\xf2\x37\x8b\x11\xf1\xe1\x9b\x5c\x17\xf4\xac\x90\x21\xa9\x0f\x1e\xe3\x09\x31\xe9\x02\x5e\x5c\xff\xa4\xa4\x6d\x9d\x7d\x89\xa6\xcf\x7b\x46\xef\x11\xb2\x04\x9c\xdf\xfa\x54\x7b\x80\x59\xcc\x8d\x79\x06\x83\xb4\x9a\xcd\x6a\x3f\x69\x8e\x3c\xe8\xad\x5f\x7c\x4e\x1e\x28\xb9\xc9\x69\x00\x47\xfe\xc1\x3a\xb4\xd1\x66\xd1\xbc\x4f\xef\x90\x0f\x54\x6c\x89\x3f\x69\x0e\x08\x03\x8b\xe4\x1c\x54\x91\x79\x08\x99\x4c\x0e\x7e\x60\xf0\xb2\xc5\xa5\xdd\x0b\x8e\xcb\xc0\x47\x79\xf9\x05\xd3\xf8\x42\x21\x17\x8b\xc4\x1c\xeb\xe2\x97\x9a\xc6\x58\xee\x03\x6b\xf2\x02\x5e\x68\xdf\x23\x13\x00\xb7\x06\xf6\xe2\xf4\x5d\xbb\xc6\x17\x14\x99\x80\x74\x26\x75\x1c\xe5\x72\x29\xf1\xab\xca\x49\xeb\x83\xdc\xe4\x1a\xb9\x6a\x24\x7f\x6d\x16\x31\x9b\x58\xbd\xd3\x0a\xf9\x75\xc2\xe1\x95\xdc\xcb\xf1\x47\x3c\x33\x1f\x08\xdf\x70\xf9\x2d\x59\x79\xe1\x31\x58\xee\xd0\xc2\xd7\xfd\x70\x34\x68\xf9\x43\xe2\x99\xbe\x3e\xdd\x20\x6b\x6b\x9d\xc8\x83\xd6\x78\xc4\x9a\x2f\x07\xf8\xf7\x39\x3b\xc0\xc4\x52\xf6\xf1\xb2\xe9\x84\x21\x2c\xa7\x0d\xdc\x60\xeb\xfa\x80\xca\xe9\x6d\xe4\x72\x88\x5f\x1a\x54\xe1\xe0\xca\x92\x1b\x4c\x18\xc5\x2e\x71\x73\x5a\xc0\x66\x56\x33\x0e\x1a\x95\x40\x6f\xfd\x2a\x1b\x08\x61\x4f\xac\x5f\x0f\x07\x30\x2b\xbe\xf8\xf6\xe1\x7b\xb3\x98\x0b\x80\x3e\x05\x94\xef\x2d\x6f\xd4\x2c\xbb\x98\x5b\x18\x94\x3d\xfc\x73\x52\xf6\xf3\xde\x66\x51\x39\x63\x54\x25\xbc\x5f\x1e\x76\xdd\xf4\x61\x97\x37\xeb\x54\x9c\xc8\xe2\x4e\x1c\x49\x11\x76\x91\x35\xb0\xcb\x86\xec\xd1\x65\xe2\x3b\xeb\x15\x7e\x6c\x6e\xe9\xc5\xad\x1d\xdc\xfa\xa5\x7e\xc6\xc7\x58\x69\xb1\x04\xad\xdd\xcd\xec\x2f\x46\xe1\xb2\xf6\x3c\xd6\x8a\xb7\x88\x3c\xcd\x4a\x4b\x48\xa5\x3a\xfe\x53\xc5\x85\x72\xca\xad\xc5\x9a\xb9\xdb\x28\xde\xdb\xc6\x90\x78\xe2\xe7\xe0\x04\x82\x88\x0a\xff\xa9\x85\x6d\x64\x4e\x46\xd1\xf5\x1e\x84\x3a\x7c\x18\xca\x98\xe1\x6f\x5b\x89\x90\xe1\x0d\x8f\xd0\xc5\xb3\x56\xab\x43\x40\xb8\xd8\xfb\x49\x3d\xe9\xde\x72\x63\x68\xb2\x7f\x08\xf7\xd2\xcc\x7e\x32\x66\x74\xf5\x0a\x3f\x51\xe5\xea\x55\x73\xd1\x7c\x4e\xf5\x86\x07\x6e\x58\xcb\xf0\x8b\xc7\x32\xab\x81\x15\xed\xdb\xd6\x72\xe4\x08\x88\x63\x25\xc6\x92\x27\x22\x44\xc1\xe0\x24\x1a\x13\x35\x8d\x1f\x44\xe4\x4b\x4f\x28\xb7\x43\xe9\xf1\x15\xc6\x8f\xc5\x20\x78\x5f\x09\x0f\x9d\xf5\x55\x1e\xb9\x84\x22\xa0\xe2\x97\x0b\x42\x13\x2c\xaf\x6b\x3e\xcf\xcb\x96\x8d\x47\x7e\x79\xad\x80\x83\x66\xd9\x58\x98\x3e\xdb\x39\x1c\x72\x02\x76\x04\xec\xcc\x19\x60\xf1\x36\xbb\xd2\x60\xa5\x56\x68\x58\xf9\x43\x66\xc6\x1d\x22\x0a\x3f\x2f\xfb\xac\x55\x47\x0f\x46\xac\x5d\x47\x0f\x9a\xea\x62\x3c\x39\x59\xe9\x39\xac\x21\xec\xca\x83\x03\x45\x55\x9d\xcd\xb6\xc0\xff\x9b\xd5\x76\x6d\x0d\x81\x7b\x8d\x01\x93\x59\x3e\x83\x91\x80\x3a\x58\x80\x71\xc7\x81\x17\x2f\xee\x36\x31\x70\x87\x18\x38\x20\x05\x33\xe0\x76\x76\x81\xdc\xa4\x99\x38\x71\xec\xd8\x4c\x02\x04\x19\x8e\x0c\xfd\xf9\x3c\x24\x64\xe0\xcb\xf3\x33\x93\x27\x9a\xae\xad\x19\x38\x10\x07\x02\x06\x50\xab\xa1\x75\x48\x1f\xb7\x49\x80\x79\x69\xce\xf5\xc0\x96\xcd\xed\x85\xa3\x56\x38\xf6\x85\xd8\xb1\x60\x58\x3e\x88\xce\xef\xe0\x0a\x44\x36\xd9\x06\xe7\x58\x80\x01\x48\x69\xe7\x0a\x88\xa3\x22\x5f\xc0\x0c\xc1\x7c\x68\x12\x75\x9c\x8f\x74\x30\x43\x21\x82\x86\x7d\x08\x43\x1b\xc3\x58\x40\xb9\x07\x1f\x61\xf7\xc0\x43\x1c\x01\x81\x24\x58\x26\x31\x6d\x43\x20\xae\xc0\x0c\xf2\x79\x36\x02\x2f\x39\x38\xec\x29\xa8\x4e\x80\x19\x48\x14\x1b\x0c\x0a\x6f\x21\x67\x36\x4a\x32\x16\x0b\xd6\xd8\x83\x0f\x18\x72\x25\xf6\x03\x52\x4c\x74\x48\xc9\xb7\x86\xb6\xae\xeb\xfa\xba\xd2\x30\x4d\xf7\x9a\x2e\x10\x77\x43\x57\xf6\xcc\x7b\xa2\xfc\xa6\x4c\xed\xce\x27\xf1\x00\x72\x0f\x3e\xee\x90\x86\xe6\x23\xdc\x49\x77\xe8\xab\x7d\x74\x16\xdc\x5b\x0b\x1b\x4b\xba\x33\x4f\xe1\xc9\xa7\x89\xdb\x8f\xd8\x86\xb5\x5c\x9f\x50\xdc\xa7\x9e\xd7\x0a\x83\xf2\xc5\x11\x76\x7a\x03\xcf\x1f\x94\xdd\x90\x4a\x25\x1c\x65\x8c\x35\x9b\xd5\x4e\xc1\x3a\x87\x7d\xe4\x7e\x23\xec\xe8\x5c\x4d\x4e\x64\x8a\x2c\xad\x53\x27\x9b\x6d\x4c\xb9\x6b\x5f\x47\x0d\x6d\x1f\xc1\x72\x57\x97\x5e\x80\xee\x7b\x9c\x5d\xbc\x97\x48\xf2\x4d\xc3\x99\x0a\x2e\x63\x93\x77\x75\xd3\x61\xc5\xe8\x8a\xcb\x98\x9f\x2b\x0b\xdf\xf7\x56\x16\xbe\xaf\x27\x5f\x64\xe8\xef\xa5\xd8\x7d\xee\x7b\x49\x31\xae\x70\x86\x60\xe0\x70\xe7\x87\x9e\x3f\xf0\x07\xf0\xae\x66\xe8\x8f\xd6\x91\xb9\xb8\x03\x16\xf9\xf8\x9e\x32\xfd\xe2\x4d\x8a\x91\x21\xd5\x44\xe1\xbe\x17\x37\x7c\x47\x8f\x3a\x6a\x63\x8a\x13\x05\xf5\xf9\xc3\x75\x20\x37\x8e\x0b\x47\xbe\x78\xc8\x66\x83\xb6\xe6\xa0\xf9\xfc\x53\x99\xda\xdf\xea\xfd\xcb\x43\x1d\xc2\xb6\xfd\xaa\x6b\xb5\x63\x84\xeb\xc7\x09\x4b\xcf\xc7\xc4\x26\x11\x17\xed\x1c\x23\xec\xf5\x28\xdb\x7c\xa2\x8e\x1e\xea\x9a\x8b\x6f\x8f\xb1\xb3\xea\x3e\xf3\x29\x79\x95\xfc\x50\xd7\xe2\xc6\xda\xbc\x5f\x47\x36\x19\xd7\x7a\xae\xf3\x2b\xd3\x49\x4f\xb9\x9f\x15\xb5\xa8\x7e\x1d\x60\xaa\x5f\x38\x68\x71\x4e\xb5\x5f\x5f\xbc\x4a\x7a\xe6\x06\x0f\xfa\x20\xd0\xc0\x13\xd2\xc6\x52\x51\x61\xc0\x22\xdd\x6d\x5d\x07\xe0\x51\x37\x88\xcd\xf7\x84\x3b\x32\x69\x7e\xab\x50\x28\x58\x2c\xb3\x1c\x00\xc3\xba\xb0\x2b\x6b\x85\xf2\x63\x4b\xfb\xd5\xd2\x1c\xfc\xb4\xf2\x7e\x8e\x37\x61\x39\x3c\x8a\x36\xfc\x5a\x88\xdd\x1a\x7f\xbc\x32\x08\xe3\x8d\xe3\x3c\x79\xff\x88\x5d\x7e\xa6\xcb\xb4\x18\xe1\x5d\x38\x60\x59\xc7\x1b\x71\xed\x15\x74\xfb\x10\x2b\x6e\x45\x97\x6e\xac\x91\x75\x9d\x2f\x51\x26\xd0\xb0\x40\x26\x94\xd0\x07\xc1\x0a\x33\x1a\x2f\x94\x91\x46\xe2\x5b\x3d\x0e\xae\x0c\x72\x4d\x91\xf9\x26\x2c\x90\x78\x18\xea\xf8\x79\x8d\xa0\x85\x1e\x37\xa0\xd6\xb8\x58\xc3\xab\x0b\x69\x61\xf0\x26\x49\xb9\xf7\x06\x7b\xb4\x8c\x46\xf9\xc6\x58\x97\xea\x51\xe7\x12\x74\xda\x90\x79\x07\x67\x48\xbe\x7a\xe2\x9f\xb3\x7b\x70\x11\x19\x55\xd8\x60\xbc\xe4\x5d\x86\xcb\x06\xff\x25\xa2\xd3\xe3\x16\x5f\x89\x67\x21\xff\x3b\x68\x70\x1e\x73\x4e\xb5\x8d\x34\xae\x62\x9f\x62\x1b\x75\xf3\xfd\x5d\x46\xdf\x7f\x9e\xda\xd6\x11\xdb\xba\x91\x49\x59\x7d\xd1\x4e\x45\xfc\xe5\x79\x3c\xf0\x3c\x8d\xfa\x39\x13\xa1\xba\xce\xc2\x64\xbe\x84\xe7\xb8\x25\x62\x83\xb4\xd4\xfc\x68\x2a\x81\xa8\x37\x96\x88\x5a\x7d\x96\xc7\xc0\x02\x9b\x49\xf6\x2b\x72\x39\xa7\xc0\xc5\xdd\x8e\x0d\x1a\xa8\xbc\x06\x7f\x64\x11\x05\x34\x5e\xe4\x2c\x84\x22\x67\x61\x54\x44\x81\x8e\x17\x39\x6e\x41\x91\xe3\xa4\x0f\xb3\xab\x93\xf8\x95\x63\x4f\x89\x65\x14\x4c\xa2\x99\x1a\x4e\x08\x5d\x3c\x92\xab\x13\xca\x8d\xb4\xdd\xcb\x95\x2e\x3d\x7b\xc2\xfc\x53\x4a\x75\xb3\x7b\x26\x1a\xdd\x0d\xe1\x1e\x95\x5f\x06\x29\xee\x3e\x83\x89\x74\x89\xf3\xd0\x56\x98\x08\x6f\xe9\x92\xfb\xae\x33\x1f\xf5\x87\x76\xba\x2f\x35\xca\xd9\x44\xf4\x25\x74\x35\x0e\xf9\x2d\x02\x3c\x0e\x27\xaa\x39\x9a\x87\x3e\x41\x7c\xf3\x78\x5f\xca\x56\x86\x2d\x6e\xaf\x8f\xa2\x41\x3b\x32\xda\x29\xe5\x93\xaa\x6c\x7b\x8f\x7a\xef\x32\xe5\x3c\x49\x09\xdd\x71\x37\xd1\x28\x3b\x83\xc9\x0f\x87\x1d\xc0\x5c\xee\xcd\x07\xbb\xdc\x1b\x90\x8b\x84\xdf\xa3\xcb\x13\x6a\x7a\x6c\x61\xf0\x55\x31\xd1\x7c\x64\x7a\x6c\x75\xc8\xef\xd8\xbe\xc5\x83\xc8\xc9\x93\x54\xb4\xb2\x2f\x2e\x42\xd9\xfa\x57\x2d\x43\x84\x73\x3c\xe1\xff\xfb\x3e\xdd\x0a\x05\x77\x79\xa6\x72\xd1\x99\xb2\x89\xe1\x0c\x9e\xb2\xd5\xce\x72\xf5\xde\xdb\xaa\x4e\x97\x39\xbf\xea\x4e\x4d\x75\xf1\x75\xab\x6c\x8b\x47\x7d\x4a\x22\xf8\xc4\x4a\x8f\x93\x9c\x44\xe4\xed\x5b\x00\xe7\x56\x0d\x79\xd8\x39\xc3\xdd\x33\x1b\x42\x6a\xdf\x62\x7a\x8b\x4c\xe7\x96\x71\xc5\x4e\x72\x8a\x62\x17\x6b\x9d\x33\xb1\xa1\x00\x99\xba\x6c\x35\xc9\x8d\x9d\x7d\x10\x8a\xd7\x8c\x85\x7c\x43\x22\xae\x14\x59\x21\xb5\x0c\xdc\xaa\xac\x19\xd2\x72\xbc\xb0\x10\x9d\xa6\xa8\x34\xf9\xbc\x8b\xad\x67\x8b\x8d\xea\xa5\xae\x5d\x32\x04\x0d\x1a\xc8\x86\xe5\x10\xdf\xe5\x01\xb3\x54\xdf\x3c\xdd\xaa\xb1\x1e\x01\x37\xad\xaa\x64\xbd\xa7\x92\x48\xdb\x3e\x61\xe2\x95\x23\xb0\x57\x1d\x48\x1f\x51\x1f\x43\x65\x25\x7f\xcc\xc8\xcd\x89\xa8\x3a\x1a\x12\x4f\x04\x73\xbd\x27\xc2\x2f\xeb\x0d\x5f\xf6\x8b\x67\xcd\xbd\xc5\xd7\x27\x14\x99\x8f\xc4\x65\xc3\x32\xe9\xdb\x8a\x60\xe2\xac\xf1\xcf\xc4\x52\x3e\x35\x1d\xe1\x10\x4d\xb6\x27\x00\xd6\xdf\x26\x32\x00\x58\x75\x10\xb9\xc0\xba\xe9\x81\xb9\xa4\x49\x89\xa3\xbf\x75\x35\x6e\x79\x0c\x66\xc7\xc9\xe8\xb8\x02\x78\xf9\x00\x5e\xf8\x75\x93\xa9\xe0\x17\xdc\xd1\x8f\xc0\x19\xa9\xf5\x66\x83\x5b\x6b\x39\x7a\xcb\xb3\x89\xbf\x10\xbd\x59\xce\x20\xe1\x20\xd7\x2d\xf0\x25\xf2\xa8\xfb\x97\xcb\xfe\x40\x3f\x20\xa6\xf4\x49\xda\x89\x19\xe4\x8d\xaf\x34\xaa\xdf\x0f\x71\x14\xaa\x18\x12\xee\x78\xc8\xaf\xa5\xde\xf8\xb3\x82\xf1\x55\x8a\x65\xa4\x42\x00\xcb\xe1\xc5\x26\xfa\x94\x8f\xcd\x83\xc5\x06\x3a\x21\x5f\xea\x83\x24\xfe\xde\x43\xcd\xb7\x1a\x36\xf6\xf4\xc1\x9b\x60\x94\x6e\x61\x45\xcc\x23\x39\x3d\x7a\xd3\xd5\x28\x3e\x3f\xc1\xb3\x11\x8a\xbe\x84\x9f\xd8\xe9\xbd\xc6\xf5\x13\x56\xf8\xc6\x99\x21\xee\x9c\x21\x14\x95\xfb\xf9\x75\xb9\xae\x5a\x2e\xf8\xba\x5c\x30\x84\xe0\x30\x3f\xfb\x4b\x4f\x46\x1c\x6b\xf6\x66\x67\xb3\xf0\x47\x93\x0f\x5b\x38\xd4\xfa\xef\xb1\xe6\x58\x74\x60\x23\xd3\x5d\x23\x9d\x00\xae\x14\x9f\xeb\x8c\x87\x0a\x52\x86\xa7\xb0\x7c\x26\x5f\x9d\xaf\x4c\x8a\xdb\x3e\xc3\x4e\xd5\x4f\x71\x05\xb6\x27\xc8\xc7\xc7\x7c\x2a\x4b\x00\x11\x8f\xc1\xd3\xeb\x09\x63\x61\x60\x9b\xbd\xde\x12\x4b\xe1\x20\x32\xb2\x93\x14\xe7\xda\x51\x50\xc0\x53\xdd\x61\xf5\x1d\x21\xdc\x9a\x8f\xfa\xb8\x94\x22\x82\x5e\x47\x73\x90\x75\xc4\xf6\x4b\x50\x2d\xa7\xc7\x9d\x6c\x89\x87\xdc\x7a\x6e\x2c\x53\xeb\xa9\xfe\xcc\xc3\xf1\xc1\x55\xc5\x09\x25\xd6\xac\x8a\x7f\x9f\xe3\x5f\xe7\xd8\xa9\x62\xaa\x5a\x53\x79\xb7\x51\x2d\xef\x23\x92\xe2\xf8\xd2\xf7\x80\x8b\x1d\xbb\xcb\x1d\x44\xfb\xe0\xc2\xe4\x85\xde\xde\xbf\xa2\xb3\x9e\x49\x23\x81\xc6\x01\x81\x46\x09\xcb\x58\x17\xd2\xa6\xc9\xb7\x6f\xc2\xe4\x90\xf9\x9c\x4a\xe9\xc4\x61\x62\xc9\xaa\xe2\x52\x0b\x36\x68\x60\x8f\x38\xec\x8f\x4f\xe0\x45\xe3\x9a\x9b\xcd\x7a\xf3\xb9\x9b\xcd\xae\x71\x1f\xae\x1e\x92\xd0\xf8\xe7\xb8\x01\x45\x3c\xd4\x20\xae\x7e\xe1\xe8\x77\xb5\xc7\x7f\x9f\xdf\x54\x4f\x9e\xa2\x47\x82\x6b\x2e\x72\x88\x77\x8e\x1b\xc4\x4b\x14\x60\x0b\x2f\x2a\xe4\x59\x3f\x6d\x0d\xad\x11\xe2\xc2\x8f\xf9\x3c\x59\x96\x65\x24\x12\x96\xbb\x73\xb9\xef\xd2\xc6\xc2\xe4\x16\x30\x3e\xcb\xae\x1e\xfe\x3a\xc1\xb1\x5d\x8c\xab\x7b\x74\xe4\x13\x1f\x29\xd1\x2f\xc0\x29\x5f\x7a\x02\xc6\x7d\x0d\xe6\x20\xb5\x86\x2e\x44\xd8\x42\xef\x03\x83\xd4\xa4\x08\x77\xbe\xba\xdf\xaa\xd2\xdd\x30\x12\x74\x1c\x7e\xd0\x06\x3d\x67\xa4\xbb\x14\x39\x6c\x73\xf5\x6f\x41\x3d\xe9\xff\x89\x42\x16\x22\x3b\x58\xe5\x44\x3b\xc5\x0c\x38\x1f\xf0\x57\x8c\x23\x79\xec\x1e\x4e\xa4\x74\xb5\x56\x30\x5f\x96\xa5\x3a\x0f\x7d\x7a\x4c\x84\x00\x9f\x95\x14\xe6\x07\x65\xb3\x1e\x13\x21\x20\x09\x1c\xc2\x7b\xc4\xd3\x3b\x20\x4c\x8a\xe8\x6e\xa0\x3c\x9f\xcf\x3d\x24\x0e\x77\xa6\x9b\xcd\xd6\xc5\x51\xd4\x71\xf0\xb6\x81\x16\x2a\xfe\x1a\xb7\x49\x0d\x61\xbc\x11\xcb\xf8\xe5\x9c\x4a\x39\x07\xb9\x14\xae\x6c\xa3\xed\xaf\xfb\xa1\xc9\x3d\x69\xe0\x71\xc9\x86\x8b\xdb\xa6\x4f\x1a\x82\x4b\xea\x1d\xee\xa7\x1b\x82\x2e\x46\x9b\x34\x2b\xea\xdf\x6a\x3e\x4e\x4f\xca\x48\xee\x62\x6f\x5e\xdc\xcf\xc9\x0c\xde\x5c\x88\x02\x7a\x70\xa1\x21\x2c\xfd\xa9\x5f\x17\xa1\x31\xef\x56\xf3\xd8\x74\x36\xf8\x74\xd2\x37\xad\xb1\x62\x0a\xa2\xa8\xec\xf2\xb0\x24\x9b\x3c\x76\xf9\x2c\x56\xdf\xec\xa8\xdd\x64\xa2\xc2\xc2\x06\x1e\x65\x82\x76\xaa\xc2\x9b\x47\x61\x6f\x04\xdb\x6d\x89\x30\x59\x46\xc8\xda\xa2\x65\x58\x02\x57\xf2\x7c\x8a\xcc\x06\x97\xec\x5a\x5f\x71\x1e\xd6\xa1\x7b\xb9\xa2\x43\x7d\xe0\x37\x06\xfe\xb0\x19\x31\xd4\xe5\x2e\x85\xef\x6f\x36\x9e\xb7\xf7\xb8\x09\xee\xc8\x34\x8d\x23\x41\x01\x9d\x96\x26\x77\x7c\x68\x89\x71\xbd\xb7\x99\x1d\x07\x2b\x68\x41\x90\x0a\x64\x4e\xa7\xe9\x26\xd2\x47\x98\xf1\x25\xe3\x7c\xea\x86\x35\xbe\x84\xf6\x9a\x87\x71\xec\xae\xb8\x24\x06\x83\x67\x29\x58\x0a\x5e\x92\xcd\x6a\x0e\xe7\x21\x51\x12\x52\xcb\x44\xec\x08\x0a\x0e\x7a\xef\xa9\xe4\xe8\x5d\x40\xd2\x49\x4c\x00\x1b\xc6\xdd\x58\x89\xe8\xba\x78\xd6\x82\x5b\x7c\x37\x46\x66\x00\x53\xd2\xfd\x58\x15\x48\x18\x9e\xfb\xf1\x02\xc3\x44\xf8\xfd\x77\x11\x06\xf7\x56\xfa\x37\xbd\xf5\xf8\xfe\x63\x1e\xbf\x6b\xc1\x6a\x5c\xdf\xca\x98\xd1\xb7\x9e\xc0\x31\xc7\x6b\x90\xc6\xab\x8a\xc3\x5b\xaf\x22\xeb\x00\x1e\x99\xb4\xad\xba\xbf\xb9\x55\x4f\x6f\x4e\xa5\x76\x42\xcb\xf5\x13\x8a\x3d\xee\xbf\x88\xd3\x43\x2f\xf9\x80\xb9\x90\x83\x27\x10\x1a\xcd\x17\xd0\xa6\x87\x70\x43\x84\xce\xa1\x9b\x3e\xc2\x01\xb1\x6c\xdc\x26\x86\xd9\x3e\xf0\xcc\x36\x3c\x72\x6e\xdb\x56\xc1\x3e\x68\x64\xb3\x01\xd8\x09\xb2\x6f\x43\x88\xb8\xbc\x20\x85\x82\x02\x86\xc0\x72\x2a\xed\xff\x69\x94\xa1\x8f\xf6\xa6\x8f\x6c\xdc\x21\xdc\x43\x91\x53\xd1\x77\xcb\xfa\xde\x36\x76\x2a\x22\xb7\x81\xca\xed\xff\x91\x8c\xe5\xba\x67\xb5\x6d\x76\x38\x73\x57\x9c\xcc\xfe\xcf\xff\xd1\x3a\xdf\x69\xae\xb8\xbd\xfd\x5d\x2b\xe4\x3b\x4c\x58\x5a\x70\xd7\x09\x75\x26\x2b\x58\xd6\xce\x0e\x2e\x6c\x6d\xe1\x62\xa9\x64\x63\xc3\xc6\x96\x55\x2c\xec\xe3\x9d\x3d\xbc\xbd\x2d\xbf\x4b\x25\x5c\xd8\x33\xd8\x07\x7c\x83\x87\xcc\x5d\xbc\xb7\x27\xbf\x77\x0b\x78\xb7\x80\x0b\x51\x82\x81\x0b\xbb\x45\x5c\xd8\xdf\x92\x0d\x6c\x6f\x83\x07\xd8\x9d\xdd\xa8\x85\x3d\x68\x62\x6b\x47\x24\xec\x17\x71\xc1\xd8\xc5\x85\xfd\x62\xd4\xa7\x81\xf7\xf7\x70\xa1\xb4\x13\xb7\x59\x2c\xb0\x42\xb2\x89\x7d\x70\x02\xb9\x5f\x60\xdf\x36\xae\x89\xb1\xec\xe2\x9d\x7d\xd6\xb4\x8d\x77\x58\xa9\xbd\x2d\x5c\xd8\xd9\xc3\xc5\xed\x82\x8d\xf7\xa0\x23\x06\xbb\x81\xf7\x4a\x36\x2e\x88\x8e\x0a\xb8\x68\x14\xf1\xf6\x9e\x8d\x8b\x90\xb0\x55\xc0\x85\xc2\x16\x2e\xee\xda\x78\x1b\x7a\xda\xda\xc6\xc5\x5d\xbc\x5b\xb0\x71\x89\x7d\xef\xec\xe2\x42\x61\x07\x17\x8b\x11\xbe\x18\x02\xb7\xf1\xfe\xbe\x8d\x0b\x50\x61\x6f\x1b\x33\xf0\x76\x0d\x1b\xef\x43\x81\x22\x1b\xc9\x2e\xde\xb5\xd9\xff\x19\x82\x0b\x78\xbb\x84\x4b\xdb\x36\xde\xb2\x6d\xb3\x09\xcb\xe4\xeb\xa7\x9b\xd7\x3d\xeb\xc2\x5e\x88\x62\x0f\xde\xaa\x63\x66\x6d\x26\x62\xb1\x5f\xf7\x2c\x6a\xe7\x6a\xbe\xfa\xd6\xb6\x75\xbb\xe4\x46\x46\xbc\x59\x6a\xbb\xb6\x56\xd8\x41\x26\xb8\x5e\x12\xce\x98\x9e\xfc\x9c\xf2\xde\x66\x21\xc3\x37\x5d\xf7\x2c\x27\xd2\x64\xbe\xfb\x39\xcd\xd5\x3c\x46\xcd\x39\xf6\xb7\x20\xfe\x16\x6d\x84\xac\xb6\x0f\x92\x4a\x7c\x15\xa8\xaa\x4a\x2d\x9b\xdf\x70\x1c\x53\x8a\xcc\x3b\xfe\x46\x18\xdf\x9f\x50\xf5\xe0\x47\xf5\x6b\xf0\x98\x63\x98\xde\x81\x0b\x0e\xc1\x64\xc1\xb4\x08\xce\x6f\xd8\x3c\xee\x39\x7e\xe3\x08\x99\x0e\x39\x69\x69\x8e\x75\x6e\x6b\x6d\xec\xa2\x5c\x0d\xf1\xac\x5a\xce\x11\xbf\x9e\x8e\x18\xef\x00\x10\x66\x94\x2a\xea\xe2\xae\x6f\x6b\x35\x45\x77\x79\x17\x3f\x74\x81\x8a\x6d\xc5\xe4\x95\x49\xa1\x3f\x35\xe9\xe2\xde\x33\x73\x39\x1f\x39\x7a\x77\xa0\xf9\x88\x10\x52\xcb\x66\x5d\xa8\xea\x8b\x3e\x8f\x13\x6f\x35\xee\x53\x0d\xff\x82\xe8\x46\x1c\x4a\x06\xbc\x7e\x47\xe1\x36\xd7\xd1\x9f\x7c\xcd\x65\x87\x2b\xc8\x3c\x0a\x13\xa1\xd7\x5e\x97\x19\x33\xe7\x05\x67\xd1\x49\xfe\xf5\x16\x07\xb7\xec\x20\xff\x7a\xcb\x75\x76\x27\xb3\x15\x07\xa0\x68\x2b\x72\xd4\x27\x84\x23\x7f\x10\xd2\x4e\xc6\x1f\x0c\x7a\x83\x72\xa6\xdb\x1a\x0e\x5b\x61\x90\xe9\x4d\xfc\x41\x87\xce\x0e\x07\x3e\x5d\x67\x67\x77\xb8\x7d\x51\xd5\x4c\xee\xad\x54\xcd\x38\xe2\xe8\xf4\xa8\x77\xbb\x4b\x27\xa7\xe1\x48\xef\xba\x42\xcf\x49\x91\x70\x55\x7d\x14\x6a\x96\x3b\x9f\x7f\x2e\x44\x8c\xdd\x57\x0d\x6e\x46\x6c\xe9\xe8\xa8\xd5\x93\x35\xb0\xcb\x50\xff\x9a\xf8\xf6\xa4\x6d\xac\x87\x7d\x96\x7b\x1e\x6a\x2e\xae\x9d\x0a\xa4\xb4\x3c\x70\x40\x16\x69\x07\xce\x7a\xfa\xcb\x9b\x14\xbe\x66\x03\x2e\x7c\x71\x19\x8f\x22\x11\x7d\xa5\xe5\xd1\x25\xc0\x15\xd9\xf4\xac\x27\xb4\xaf\x3d\xeb\xe8\xd0\x56\xce\x8d\x6c\x02\xfc\xf7\xcc\xdd\x55\x04\x1e\x15\x11\x93\xbf\x3d\xea\xb3\xc1\x8a\x29\xe0\x9b\x8b\x04\xec\xd5\x61\x92\x5b\xf4\xd9\x39\xd4\x18\x86\xb8\x02\xe5\x0d\x2a\x3d\x69\xbe\x7e\xdb\x60\xe3\x74\x91\xfe\xd4\xd4\x90\xa9\x6e\xaa\xfc\x06\xdb\x57\x9f\x4a\x4f\xae\x2a\x67\x27\x54\xf3\x51\xf9\x27\xfc\x89\x37\x5e\xff\x9d\xc9\xb7\xfc\x80\x8e\x1b\x12\x0f\x1e\x12\xce\xc5\x37\xea\xb2\x28\x88\x6d\x2e\xb8\x4c\xd1\x6f\x4e\xc5\x39\xe6\xe6\x14\x04\x6e\x9a\xcd\x3e\x51\xcd\xc7\x7c\xa1\x03\xf2\x92\x7b\xfe\xeb\xad\xee\xeb\xc3\x66\x1c\xa4\x48\xc2\x7b\xd6\x4b\x51\x6d\x4c\xe0\xed\x5b\x79\x75\x70\xad\x1e\x5a\x9c\x2b\x1e\x37\x4b\x84\x16\x19\x9e\x88\xcf\x45\x1b\xb8\xe3\xf5\x47\xea\x90\x2d\x2a\xe9\x0e\x3b\x22\x8b\x6b\x24\xe7\x4a\x1f\xfa\x23\xa9\x95\x72\xae\x74\x0f\x9c\xa3\x44\x97\x65\x6b\xa2\x69\x56\xc9\x91\xf1\x3f\x86\x27\x50\x49\x1c\x22\x86\x27\xbc\xd2\xc2\xe4\xfd\x36\x8e\x52\xfd\x2a\xe2\xdd\x75\x4f\xaa\xe3\xaf\x39\x69\x34\x6f\xb5\x44\xcf\x52\x70\x6e\xdd\xca\x62\x11\x64\x01\x83\x93\x5f\xfd\x17\x7f\xa8\x3d\xcf\xe7\x72\xd5\x4a\xdd\xa4\x68\xe4\xa7\xd0\x30\xcb\xc2\xac\x05\xe5\xfd\x5f\x57\xbb\xea\x6a\x2e\x86\x2d\x59\xfc\x67\xe3\x42\xde\xdb\x4c\x0c\x2b\xf1\x2c\xf7\x36\xa1\xf0\xb8\xef\x4a\xbd\xc1\x74\x40\x1c\x55\x66\x7f\xec\x10\x57\xa9\xd7\x8d\x26\xf0\x79\x98\x98\xb3\xc9\xbd\x32\x9f\x6f\x0e\x25\x6b\xc6\xa2\x0b\x58\xbc\xf2\xe8\xf2\x1e\x68\xd9\x0b\x76\x54\xe9\x2e\x89\x86\x49\x21\x7a\x72\x2f\x7a\x63\xcd\xf3\xde\x94\xd3\xc1\x95\x07\x47\xae\x17\xb8\xfb\xe3\x48\x16\xd6\x2b\x58\x90\xc1\xe4\x5e\x38\xf5\x17\x35\x9e\x2e\xf9\x2b\x40\x35\xb4\xcc\xf3\x50\xbf\x6e\x33\x52\x79\x51\x9f\xd9\x39\x72\x05\x3b\xfa\x74\x00\xfa\x1e\x93\x07\x72\x88\xc4\x33\xd6\x39\x16\x2d\x40\x3c\x9e\x51\xac\x89\x7c\x73\x68\x36\x7b\xfb\xaa\x8a\x6e\xc9\x3b\x85\xe7\xa1\x9c\x43\xaa\x3f\x37\x34\x57\xbf\x97\x01\xb0\x9e\x87\xd0\x4d\xd4\xe0\x02\x99\xdf\x38\x22\xaf\x57\xf0\x2e\x61\x3d\x25\x61\x04\xcd\x29\x6b\xd8\x13\xe7\x57\x3f\x9b\xf5\xf5\x87\x62\x36\x0b\xdd\xb0\x9f\xc8\x74\xf5\xc7\x0e\x3c\x57\x24\x1b\xc7\x15\xad\xd9\xd5\x7c\xfd\xbe\x8b\xd7\x0a\x08\xb3\x7c\xc2\x60\xc1\xbe\xfe\x3a\xa0\x84\x95\xc4\x54\xef\xf5\xa0\x26\xf6\xf5\xe9\x80\xe7\x20\x54\xf6\xd7\xc0\xdf\x93\xd0\xfa\xf8\xf3\xb9\xaf\x3f\x76\x40\x71\xf2\xd8\xa9\x68\x91\x12\x44\xf4\x7b\xdf\x45\xbc\x21\x68\x9d\xc1\x8b\x59\x41\x88\x4f\x52\xf5\x35\xd1\x67\x22\x0b\x3b\xb0\x36\x3d\xec\x26\x28\xf7\x97\xb4\x5c\xfb\xcd\x15\xe4\xb1\x47\x15\xc7\xba\xb0\x2b\x52\x0b\x55\x31\xca\xb4\xfc\xbb\xb5\xf4\x72\x32\x7a\x7c\xed\x24\x5f\x5e\x3f\xa4\x9a\xe5\x86\x4c\xaa\x3b\x57\x2a\xd6\xe2\x7d\xb2\xd1\xf4\xa5\xc0\x42\x05\xc9\x95\x20\x95\x39\xd8\x2e\xda\x74\x13\x6f\xb9\x7f\x73\x31\x2a\xf1\x36\x18\x7d\x26\xae\x56\xc2\x58\xbd\xf7\xab\x45\xde\x5e\xb5\xcf\x45\x24\x17\x04\xa5\x28\x41\x79\xae\x7d\x9b\xa4\x0e\xaa\xff\x6a\x81\x9e\xb9\x37\xd0\xe0\x37\x5c\x4c\x3b\x20\xe2\x38\x88\xea\x41\x89\xa5\xf4\x59\x2d\x36\xe4\xca\xe7\xa2\xcc\x13\xf3\x05\x1b\x8b\x0a\xaa\x85\x82\x2a\xf9\x35\x5b\x8a\xb0\xe0\xac\x91\xd7\x66\x36\xeb\xac\x91\x41\x30\x9f\x3b\x04\xbe\x06\x2d\x0d\xf4\x5c\x68\x3e\xef\xb2\xc2\x71\x43\xfd\x5b\xe5\x1e\x87\xb5\xca\x04\xa4\x47\x40\xff\x7c\xde\x6c\x69\x2e\x22\x64\x10\xc4\xac\xb0\xd5\xd0\x9a\x2d\xcd\x41\xac\x5d\x39\x36\xb0\xb5\x30\xef\x5f\x93\xbe\x19\x5c\xf4\xe9\x59\xae\x4d\xe0\xe6\xde\x91\xf1\x44\x1c\xcb\xb5\x2b\xfd\x5b\xa9\x08\x01\xbd\x6e\x19\xfc\x1d\xf0\xdb\x21\xf0\x4e\xe6\x20\xfc\x55\x6b\xa9\xaa\xaa\xa3\x04\x6f\x11\xc2\x12\x75\x7b\xdd\x3e\x75\x47\x2b\x64\xfe\x9a\xb8\xbf\x0c\x4a\xea\xdc\xbe\xa9\x6a\xbc\x96\x2b\x99\x70\xb7\x45\x9c\xc5\xb3\xf6\xc6\x55\x3a\x6c\xa4\x4f\xec\x24\x64\x9b\x8f\xe4\x4d\x88\x7d\xcf\xfc\x80\x6d\x3e\xea\x6f\xd1\x2f\x67\xba\xac\xc4\x63\x8d\x2e\xcc\xea\xf4\xeb\xb8\x65\x2d\x77\x81\xcc\xc3\xfe\xd7\x05\xba\x2d\xd0\xc4\x07\xfe\xa8\x4e\x07\x7e\xb8\x6a\x74\x9c\x73\xc1\x85\x66\xf7\x6c\x39\x9f\xef\xbd\x61\xc0\x83\xed\x3d\x7d\x19\xac\xf8\xcd\x9b\xcf\x9f\x4e\x28\x44\xe4\x6b\xac\x3a\x11\x71\x26\xde\xd0\x90\x45\x6d\xbe\x59\xb2\xb2\xe1\x2a\x7b\x89\xb8\x28\x3b\x66\x39\xce\xaa\x08\x65\x51\x99\xaf\xbc\x35\xc4\x0e\x6f\xb8\xa1\x1c\xc5\xae\x55\xfb\x00\xab\x48\x9c\x2f\xf0\x97\xe7\xf1\x91\xec\x39\x75\x26\x82\x05\x47\xa8\x75\x37\x05\x7d\x94\x89\xb8\x09\x1c\xc2\x71\x62\x74\x07\x5d\x4f\x07\x33\xf3\x7a\x99\xb8\xd8\x7b\xb3\xd5\xf1\x35\x9a\xcd\x52\x2e\xa8\xc6\xfe\x68\xa8\xbc\xf2\x1a\xa4\x6f\xb0\x95\x83\x21\xdc\x35\xae\x15\xd6\xd8\x81\xf0\xca\xd6\x1c\xb8\x7c\xcc\x66\x5f\x34\x0f\x46\x9f\x0c\x65\xa6\x51\xec\xe7\x0a\x68\x81\x16\xae\x70\x5c\x05\xb3\xd6\x68\x85\xde\xca\x3b\x72\x69\x4c\x30\xb8\xd4\x54\x1d\xae\xec\x09\x65\xb3\x10\x1d\xcd\x4b\xb8\x5d\x30\x1f\xf5\xc9\xaf\x15\x52\x73\xac\x96\x81\xfa\x1e\xdf\x03\x71\x83\x58\x36\x0e\xe2\xf9\x12\x2a\x99\x80\xb1\xb5\x48\xd9\xd2\x21\x81\xd5\xb6\xf5\xc9\xaf\xa8\x39\xb3\xc1\x7a\xee\xa0\x05\xe5\x4e\xf0\xb8\xb2\xd7\x74\x19\x48\x51\xeb\x58\x3d\x18\x33\x71\x7e\x92\x0c\x26\x48\xd9\x5a\x63\x05\xa5\xf2\x91\x44\xb4\x2a\x87\xfe\xe6\xf1\x89\x55\x4c\x84\x95\x45\x3e\x88\xf8\xdc\x5b\x7c\xcf\xed\x46\x3c\x7c\x04\x6b\x7d\x70\x8b\xdf\xe0\x5c\x37\x10\x0b\xfc\x61\x85\xd4\x24\x02\x0d\x2a\x6d\xbf\x24\xdd\xab\xe8\x27\x54\x33\xd0\x7c\x4e\xad\x57\xb0\x13\x7e\xd4\xaf\x07\x5f\xae\xa3\xab\x82\x08\x84\xa8\x5f\x0f\xf0\x72\x9c\xcb\xaf\x4a\x5b\xe7\x36\x16\x34\x77\x42\xff\x41\xe3\x27\x54\x9c\xbd\xae\x0a\x5f\xda\x58\x58\x83\x43\x65\x35\x88\x3b\xfa\x8a\xe6\x12\xc6\x6a\x5b\x8c\x1f\xbf\xbe\x6a\xd2\x81\xe3\x10\x17\x10\xc2\xd4\xba\x77\xc5\x25\xdd\x88\x89\x08\xe5\xd4\x51\x63\x18\x1f\x35\xfa\x11\x8d\x5e\x4e\xc9\xe7\x62\xf1\xac\x0d\x39\x67\x7d\x24\x43\x81\x6d\x5a\x5d\xa1\x82\xa6\x02\xac\xe8\x0c\xa1\x89\x46\xd8\x7e\xc9\xc6\x94\xe6\x2a\x31\x17\x11\x1d\xaf\x16\x3e\x24\x2f\x71\x54\x5e\xf2\xc5\x22\x8e\xf4\x27\xb2\x45\xa1\x41\x91\xbe\x3d\x5d\xcb\xb3\xd9\xd2\x93\x66\x35\x2b\x96\x69\xca\x9b\xa3\x6c\x28\x15\x56\x0f\xb0\x0c\xe1\xf3\x58\x13\xdc\xb3\xcb\x7f\xb3\x5e\xa3\x11\x27\x2f\xb6\x7d\xab\x91\x58\x92\xca\x0c\x8d\xc4\xe6\x37\xbc\x8d\xcf\x90\x70\x24\xa2\xfa\x4f\x4d\xf1\x7d\x54\xa5\x23\x9a\x19\x51\xa7\xe3\x27\xbc\x78\xd1\x51\xa6\xe3\xd3\xe1\x28\x53\x94\x7e\xba\xd6\x45\x34\xf8\xaa\x66\xa0\x35\x72\xd2\x8c\x9b\x38\x86\x02\x19\x23\xd3\x1d\x0f\x47\x19\xc7\xcf\xf4\x1a\xdc\x1d\xd0\x10\x9e\x32\xc4\x15\x0b\xab\x2b\x16\xbe\xae\x98\x9a\xa1\xa7\x37\xee\xf2\xc6\xd5\x07\xbb\x60\x26\x34\xdc\xc5\x2e\x71\xf5\xd1\x2e\x86\xc0\x85\x8a\x42\x19\x34\x62\x2a\xfb\xa2\x5c\xc5\x65\x00\x34\xd1\x93\xfb\x86\xd5\xb1\xcd\x50\x08\xb6\x21\x27\xc9\x6c\x36\xd4\x9d\xa9\xd6\x46\x65\x8d\x65\x93\x10\x4e\x34\x83\x5b\xad\x83\x29\x6e\x23\x0c\xaa\xe9\x90\x1f\x31\x3b\x24\x64\xed\x16\x50\x64\x7f\xce\x1a\xec\xcf\xe7\xbc\x6a\x5f\xad\x0a\x87\x06\x5e\xbb\x2f\x1e\x21\xf2\x1d\x08\x64\x34\x5f\xf1\x30\xd6\x1b\xf8\x99\x51\x13\x7c\x9a\xf9\x19\x96\xf8\xde\x1a\x35\x63\xcf\x6a\x2d\x2f\xa3\xad\xe7\x42\xce\x86\x72\xeb\x48\x5f\x47\xe6\xb7\xd8\x08\x67\x8d\xf4\xb3\xd9\xb5\x10\xee\xf3\xfa\x08\xf5\xf5\x09\xd5\xc2\xd8\xd1\xab\x97\x9a\x7c\xb7\x17\x8e\x68\x2b\x1c\x66\x68\xc6\x9d\xb9\x1d\xbf\x9c\x59\xcf\x6d\x9c\x50\xad\xf1\xaa\xf5\x31\xdb\x75\xfb\x08\x21\x70\xa0\xb9\xe0\xc6\xdb\x7c\x91\x04\x91\x03\xdc\x90\x04\x96\x07\x0f\xd6\xdd\x6c\xb6\xd5\xd2\x04\x1a\x63\x22\xfb\xeb\x94\xb6\x3a\xbe\x97\x19\xf5\x32\x8c\xfc\xe3\x11\xb5\xbc\xcc\xfa\x5f\xd1\x40\xfe\x5a\xd7\xff\x42\xa6\xc0\x09\x57\x15\xd1\xaa\x16\x42\x5c\xfa\x10\x8b\x25\x20\x0c\xc0\xe5\x5e\xe0\x0b\xb3\x06\x5a\xd5\x7c\x84\x18\xf7\x19\xdd\xe2\xe1\xad\x72\x6b\xb1\xb1\xe4\x95\x62\xb5\xf3\x11\xce\xd3\x11\x7f\xaa\xb0\x18\x81\xc4\xf9\xf4\xb6\x82\x71\xb1\x19\x0d\x6f\xb5\x22\x32\x7b\xb7\xe0\xd3\xf1\x73\xb0\x5b\x5e\x33\xf0\x10\xfe\x1d\xb1\x7f\x17\xd1\x45\x52\x36\x0b\x85\x0a\x58\x55\x9c\x8e\x3e\x92\xea\xde\x71\xb4\x87\xa9\xab\x95\x12\xaa\x5f\xf7\xd3\x4e\x28\x23\xac\x8b\x8d\xfc\x54\xba\xc5\xb3\x3c\x1b\xda\x30\x13\x88\x32\x63\x44\x99\x31\xa2\x18\x9e\xc6\x29\x3c\xb1\x96\x52\xfa\x35\xb1\x8f\x83\x63\x4b\x87\x8b\x72\x12\x1a\xce\x88\x1c\xc9\x88\xc4\x23\x10\xd1\x86\xd5\xb0\xb9\x84\x40\x59\x77\x01\x32\x7d\x46\x82\x41\x14\x2b\xc0\x57\xc6\x3e\x89\x76\x92\x56\x3b\xda\x49\x7e\x39\xd1\xcf\xd7\x2e\xb1\xec\xc5\x04\xa6\xe3\xf4\x8d\x0b\xe3\xfc\xeb\x77\xa0\x7e\x3d\xcf\xc8\x9a\xc1\xf5\x17\xa7\x94\x58\x45\x11\x84\xce\x60\x62\x3d\x94\x58\x0a\xc3\xdb\xe6\x96\xbd\x7a\x0b\x98\x82\xfc\xfa\xe5\xa8\x5f\xaf\x5d\xf6\x95\x88\x7f\xfd\x96\xf8\xfc\x1d\x24\x3e\x9f\x67\xaa\x45\x26\xec\x3a\xdd\xde\xc4\xff\xd5\x4b\xed\x1a\x06\x21\xf2\xcc\xd2\x6a\xa3\x8a\xd2\x9d\xf8\x6b\x5d\xd8\xf9\x22\x2a\xcb\x22\x6c\x32\x0d\x41\xea\xbf\x40\xd0\x2d\xc8\x6b\xe6\xd7\x2e\x88\x47\x58\xde\xd5\xfe\x16\x92\xdc\xe9\x1b\xb1\x28\x8e\x2f\x20\x00\x20\x26\x81\x75\x5a\x61\x12\x20\x49\xd8\x0a\x44\xe6\x2a\x1d\x77\x9d\x8e\x9a\x19\x97\x86\x60\xba\x3f\xa2\x83\x11\x5f\xc4\xbc\xbd\x75\x64\x16\x94\x6d\x9c\x83\x5c\x48\x80\x6c\x20\x4e\x3f\x0e\x31\x4c\xe7\x20\x12\x38\x18\x0d\x39\x39\x52\x8c\xde\x6e\x45\x19\x0e\xdb\x51\x95\xcf\x5c\xc1\x56\xc7\x0c\x3b\x9e\x6c\x5f\xfe\xbd\xb0\xf3\x05\x3b\x47\x9c\xcd\x62\x84\x0e\xcb\xc5\xde\x32\x1a\x06\x0d\xfa\xbf\x87\x03\x77\x3c\x98\xf8\xeb\xc8\x2c\x2e\xa1\xa0\xf8\x5f\xa0\x60\x67\x05\x0a\x72\xa5\x34\x12\xb6\x13\x48\x48\x60\x2b\x89\xab\xc4\x67\x31\xf9\xb9\xc5\x57\xe8\xd7\xe8\xdb\xf9\x13\xfa\x6e\xdf\x57\x1d\xf8\x56\xe2\x8e\xfe\x67\xdc\x75\x7a\x43\x86\xbb\x12\xb0\x4b\x15\x77\xa5\x14\xc5\xe3\x14\x81\xa3\xd4\x62\xfb\xf6\xa8\xd3\x81\xbb\x24\x48\x71\xd7\x2c\xe8\x93\xe6\xc8\xc9\xab\xe6\x33\x1e\xe9\xe4\xc8\x29\xfb\xe9\x21\x33\xa8\x88\x56\xb3\x59\x2a\x14\xa3\xbf\x03\xcb\xb0\xb3\x59\x27\xfe\x2c\x08\x7f\xcc\xd6\xc7\x87\x72\x71\x61\xf5\x67\x62\xe5\xa9\xc2\x39\x1d\xb8\xbf\x7a\x9a\x34\x7e\x61\xc2\x1d\xa4\xfc\xf9\x16\x03\xba\xcc\x9f\xbc\x82\x71\x5e\x8e\xfd\xcd\xc1\xc5\x4a\x43\x01\x21\x7f\xfa\x0a\xf7\x09\xb9\x53\x9e\x2d\x57\x3c\x47\xd6\x16\x32\x13\xc8\x4a\x71\x87\xc8\x1a\x47\x28\x42\x67\x44\xc6\xa6\x65\x53\xec\xe3\xc6\xf2\x0a\x69\x4c\xd2\x2a\xd1\x3f\x01\xbd\x12\x54\x1c\x90\xea\xab\xe6\x21\xd3\x13\xf7\xfe\xdc\xe3\x74\x80\x36\x9b\x7a\xfd\xfc\x7b\x11\x99\xc1\x26\xf1\x4c\x97\x95\x72\xe3\xdd\x45\xb5\x09\x10\xe2\x5b\x53\x77\x7b\x43\xcd\x45\x38\x24\x4d\x7d\xd8\x0a\xd9\xcf\x3e\x29\x6d\x6e\x7d\xe7\x9f\xc1\x66\x11\x6d\x6a\x85\x1c\x2f\xc7\xbe\x10\x1e\x12\x3f\xa7\x75\xf2\xfd\xef\x21\xfa\x4e\xf1\x98\x34\x72\x5a\x98\xeb\x7f\xef\xa0\xef\x8e\xe9\xe6\x48\x60\xc6\xcd\x9a\x71\xb3\xe2\xc0\xdd\xa0\xda\x10\x8f\x31\x6b\x21\x27\x5a\x60\xf5\xf3\xbc\x3e\xf6\x73\x1d\x48\x09\xbf\x3b\xd1\xbe\xc6\x31\x17\x6d\x6d\xef\xb7\xe9\x23\x02\x65\x1c\x3e\x7e\xb8\x4c\xd9\xd4\xb1\x13\xc2\x41\x23\x0e\xd9\x1b\xf0\x64\x9f\x09\xb2\xce\x29\xb5\x02\xfb\x3b\x65\x93\xea\xdb\xa6\xa3\x05\xd8\x05\xaf\x99\x1e\xf6\x72\x6d\x84\x4c\x2f\x47\xda\x8b\xc5\xb7\xaf\x43\xc4\x03\x99\x8e\x5d\xdb\x64\x8d\x12\x49\x2e\x47\x60\x76\xcc\x9a\x25\x92\x66\x64\xd2\x6b\x97\x48\xc2\x91\x49\xa7\x6f\x72\xc1\x89\x8b\x9d\xd3\xb7\x28\x4f\x2e\x46\xb6\x7c\xe4\xf4\xcb\xbc\xe7\x19\x49\x6d\x8a\x74\xc1\x15\x6e\xd3\x5b\xf2\xb9\x30\xa7\xb7\x96\x61\xf3\xcd\x99\xad\x24\xf6\x5d\x90\xdf\x1f\x1f\xf0\x5d\x92\xdf\x0e\xff\x2e\x8a\x6f\x36\x3d\xec\x7b\x4b\x7e\x37\x26\x54\x31\x03\x3f\x95\xde\xea\x18\x10\x71\x30\x23\x7e\xf3\x12\x4b\x71\x93\x5b\x13\xe6\x48\x21\x72\x0f\x7d\x4e\x6f\x2d\x6a\xc3\xf9\xd7\xc1\x5e\x22\xc0\xfb\xb7\xcb\xa9\x36\x59\x75\xa9\xb2\x26\xc6\x19\xf3\xba\x9b\x5e\x98\x1f\xb6\xba\xfd\x8e\x9f\xe9\xd3\x51\x73\x1d\xfd\xff\xec\xfd\x79\x53\xe3\x3a\xd3\x00\x8e\xfe\x3f\x9f\x02\xa8\x79\x53\x16\x51\x4c\xc2\x9c\x39\xcf\xf3\xd8\x68\x52\xac\x61\x1d\x20\x81\x61\xc0\x8f\xef\x29\xd9\x96\x9d\x60\x67\x21\x0b\x24\x90\x7c\xf7\x5b\xdd\x92\xbc\x84\x30\x73\xce\xfb\xfe\xaa\x6e\xd5\xad\x5f\xcd\x54\xb0\x65\xa9\xd5\xda\xbb\x5b\xbd\xd8\xdc\x39\xdc\x75\x33\xaa\x82\xbe\x7b\x72\x4e\xdd\xad\x6d\xad\xc1\xfa\x54\x2a\xe5\x0a\x1c\x3d\xe9\x6c\xf8\x54\x4b\x8f\xfa\x74\x40\xd6\xb3\x61\xc8\x95\xbb\x8d\x74\x39\x7c\xaa\x2d\x6f\x98\xb7\x7c\xb9\x3d\x99\x0f\x6a\x96\xce\x96\xd3\x82\x16\xd0\xac\xa0\x63\x3f\xbc\x48\x85\x2e\x82\xd8\x83\xcc\x47\x73\x8b\xeb\x90\x6a\x12\xd7\x41\x9f\xf9\x52\xa8\xa8\xa4\x3a\xc7\x2c\x50\x42\xc6\x7b\x63\x76\x4d\x87\x17\xc4\xbe\x63\x33\x25\x31\xf0\x22\x2d\x76\x7d\x99\xb0\xaa\x7d\x67\x26\x53\x20\x38\x35\x0e\xaf\xd7\x05\xb9\xcc\xa0\x5f\x57\x57\xd9\xf0\x4c\xb9\xf9\x74\x4c\x2c\x6e\x9e\xc5\x28\xa4\xf9\x58\x4b\x04\x33\xd8\x77\xe6\x59\xfc\x51\x8e\x03\xaf\x1e\xe8\xe8\xd4\x06\x21\xd6\x93\x3c\xe2\x9c\xa1\x2b\x43\x65\xe0\xcb\xae\x4b\xea\xb9\x90\x16\xce\x50\xaa\x6c\x42\xfa\xb2\xdc\x64\xf7\x3a\x27\x00\xc1\xfa\xd3\xd9\x55\xf7\x9c\xa1\xbb\x85\x2d\x43\x7b\xff\xc5\x3b\xd5\xe5\x38\x31\x38\xa2\x81\x36\x35\xef\x55\xb3\xa5\xb2\x65\x1e\xfd\x41\xac\xbe\x65\xa7\xd1\xa7\x3b\xb3\x15\x7c\x70\x44\xd2\x98\x26\xb4\x47\x07\x12\xc3\x11\x8b\x9d\xe6\xcc\xdd\xda\xb6\x7d\x16\x31\x76\x75\x50\xf7\xcb\xa2\x32\xb2\x22\xc6\x3a\x87\xf0\xbc\xb5\x6d\xf9\xe5\x51\xe1\xec\x3b\xe9\x28\x88\x5e\x39\xa0\x3e\x0d\x53\x88\x80\xf2\xde\xaa\x81\x90\xeb\x30\xd7\x45\x7b\x4b\xca\xa3\x9d\xd0\xf8\x93\xb1\x3c\xa9\x24\xf5\xf9\x47\x62\x7c\x33\xe4\xbd\x51\xd8\x1f\x76\x8b\x07\x1c\xc6\x70\xe9\x84\x46\x75\x7d\xb9\x58\xaa\xac\x31\x9a\x84\x61\xc7\xef\x88\xde\x58\xfb\x76\x1e\xf0\x21\xef\x8a\xb1\x18\x8e\x36\xb4\xa3\x01\xb5\x5f\xb6\x63\xa6\x4e\xca\xc9\xa3\x32\xc2\x52\x5f\x02\xf5\x57\xc4\xac\xba\x58\xdc\xb1\x3d\x9c\xbd\xcb\x9b\x71\xae\xa1\x7b\xea\xba\x3a\x8c\xa9\x02\x48\x15\x40\xaa\xaa\xa2\x0a\x30\x55\x80\xa5\xe4\x2a\xdf\xd6\x0f\x86\x1d\x1d\x27\x15\x63\xb8\x3c\x75\x0c\x5f\xfe\x09\xe4\x1f\x21\xff\x84\x84\xbc\xf7\xf6\x3e\xd6\xf0\x57\xf7\x04\x4f\x7b\x40\x29\x40\x47\xb1\xb6\x9a\x69\xc7\xda\x38\x26\x88\xb5\x71\x8c\x88\xb3\x88\xe9\x29\x3d\xf1\xbd\xf9\xfe\x06\x05\x40\x9b\x61\x9c\x42\xe7\xe6\xe4\x31\xad\x80\x9b\x51\x9c\xd6\xc1\xcd\x76\x9c\x56\xc3\xcd\x20\x4e\x6b\xe2\xa6\x88\x8b\x95\x7d\x7f\x1f\x65\x43\xd5\xb6\x99\xb5\x24\x7d\x8c\xe2\x4d\xdd\xaa\x36\x3e\x16\x37\x49\xe1\xad\x06\x16\xc4\x65\xc6\x37\x15\xdc\xb2\xb7\xa9\x60\x69\xb4\xd2\x8f\x93\x47\xfd\xb1\x1d\xbf\x27\x58\x87\xfd\x31\x1f\x2f\xaf\x65\x7d\x01\x27\xe7\x0c\x7a\x24\x01\x32\x85\x13\x9b\x2b\x32\x85\x03\x4f\x1e\x14\x17\x81\xa0\x9c\x56\x38\x15\xd4\xab\x78\x9b\xa2\xec\x6f\x72\xea\x57\xbc\x4d\x5e\xf1\x37\x45\xaa\x10\x13\xc6\x76\xc0\x0a\xa8\x86\x31\xf3\xa0\x67\xfc\xb2\x07\xbd\x12\xa4\xdd\xef\x41\xcf\x40\x6a\x3b\xde\x4c\x47\xb8\xcc\x3c\x33\x90\xc9\x02\x92\x15\xd8\xc9\xa3\x06\xdb\xce\x06\x73\x05\xd8\xf6\x4a\xb0\xe2\x1d\xd8\xc2\x70\xee\xae\x5e\x51\x97\x2f\xbc\xec\xfc\xc3\xf5\xe4\xa2\xd6\x1a\x29\x5f\x0a\xe8\xfe\xb3\xe9\xd2\xd0\xea\x63\x4d\x8a\x38\x3c\xc9\xab\x95\xd9\xf6\xa6\xb0\xc3\x1d\xcf\x26\x6f\x82\x71\x27\x2c\x97\x5d\xa5\x33\xa4\x5e\x7c\x27\x28\x97\x5d\x26\xd2\xd9\x10\xe9\xd9\x50\x56\xf5\x2f\x65\x99\x3c\xea\x2c\x6d\x95\x45\xc4\x0b\x69\xfa\xfa\xe1\x25\x01\x63\xbc\xbe\x5e\xb5\x78\x5d\x8f\x1a\xae\x1c\x45\x01\x44\xf8\x1a\xe9\xd7\x00\x5f\x03\xfd\x3a\x79\x64\xb8\xb2\xd4\x6b\x1b\xbf\xb6\xf5\x57\x81\xaf\x22\xb6\xd6\x6b\xf9\x83\x7e\x5f\x91\xaf\x37\xe3\x4c\x26\x25\x8f\x6e\xbd\x70\x5e\x03\xb5\x6e\x9c\x83\xb1\xcb\xd6\x6b\x8b\x7b\x63\xff\x9a\xde\xa0\xec\x7f\x5f\x9d\xe4\xaf\xd9\x55\xaa\x7e\xb8\x9b\xe9\xa7\x0f\x6f\x61\x9e\x50\x9d\x2c\xfa\xf0\xfb\x2b\xde\x86\xf2\x20\x38\x7c\x16\xbd\xf1\x79\x67\x34\x16\x3d\xb1\x4a\x51\xec\x5c\xa9\x4d\x3d\x15\x14\xec\x86\xa2\xdb\x7f\x16\xbf\x2b\x7b\xb5\xb2\xec\x5e\x1e\xa7\xfd\x6b\x53\x98\x7b\x59\xff\x34\x75\x91\xbc\x78\xef\xe0\x3a\x83\xb9\x9f\x37\xc6\xd4\xb4\x51\x3b\x48\xd9\x8e\x4b\x21\x0d\x0e\x0e\xae\xe9\x3e\xde\x58\x1d\x60\x3f\xbe\xc2\xbc\x90\x4a\x27\x80\xbd\xee\xbf\x4b\x51\xd8\x51\x5f\x79\x51\xb1\xf1\x35\x30\xef\xbe\x64\x77\x66\x77\xa6\xff\x91\xbd\x97\xd3\xf1\x5d\xc8\xd0\x0e\xde\x6f\xd1\x43\x91\x8d\xb7\xb9\x5f\x80\x77\xe6\x7f\x38\x42\xc3\xbc\x90\xef\x30\xd7\x03\x07\x85\x1e\x90\xdd\x7a\x6f\x1c\x5e\xd3\x83\xbc\x34\xf2\x48\x4d\xbe\xa5\xfe\x5a\xdc\x1b\x47\xb2\x67\xd2\x9c\x8d\x0f\x73\x36\x96\x72\x1e\xff\x16\x8b\xe3\x25\x2c\x4e\x7e\x5b\xe2\x64\xa9\xc4\xe9\x6f\x4b\x9c\x2e\x95\x38\x43\x92\x30\x87\x3d\x5a\xcb\xf2\xd4\x1a\x83\x39\xee\xe2\xde\x38\xbb\xa6\x47\xd7\xc0\xbb\x18\x67\xcb\x04\xbb\xca\x27\x95\x91\xb5\x24\xf1\x29\xa0\x5a\x5e\xf8\x1a\x98\x9d\xb6\x74\x17\x71\x26\x45\xa5\x22\x3f\x68\x0b\x95\xca\x07\x03\xd1\x0b\xf6\xdb\x9d\x64\xc5\x1c\xd0\x77\xb0\xa8\x57\xf6\x0e\x83\x2c\xac\x52\x95\x7a\x2c\xc3\xc7\xe6\x3b\x9e\xcd\xb5\x01\xe6\x6b\x60\x1e\x08\x8d\x9d\xc3\xdd\xa2\x3d\xfd\xf5\x32\x29\xfa\xae\xff\x20\x4d\x9d\x42\x21\xd7\xc4\x87\x08\xb9\xa6\x3e\xce\xbf\x68\xea\xe3\xe2\x0b\x0b\x95\x9b\xa6\x58\x33\x7a\x17\xd7\xf9\x2d\xec\xfb\x17\x4c\xff\x7e\x8d\x52\x2a\x6d\xe7\xf4\x39\xc6\x4a\x16\xf7\xc6\xf9\x35\x3d\xbc\xce\x6b\x1f\x5c\x48\x53\x6a\xf3\x73\xac\x6c\x76\xf1\x11\xe5\x3f\x80\x4e\xf9\xf0\xd1\xa8\x52\x6e\x9e\x7f\x21\x94\x03\x52\xe5\x23\x99\x70\xf1\x85\xc8\xbc\x4a\x2c\x04\x59\x30\x99\x56\xe9\x97\x3f\xab\x0a\x8e\x87\x17\x02\xe7\xd2\xf6\x43\x8c\xf7\x45\x6f\xbc\xb4\x23\x69\x9a\x23\xe4\x7a\x31\x42\xcb\xbd\x77\xcd\x72\x22\x6d\x5c\xf9\x39\x26\x0b\x7b\xef\xc5\x38\x5f\x61\xb0\xa4\xfb\x8b\xa7\xfd\xf5\x3b\x48\x68\xfb\xb4\x0c\x4a\x01\xfa\xfe\x45\x5a\x28\x15\x06\xf4\xf2\x9f\x0c\xe8\xd5\xb3\x1e\xcf\xeb\x67\x3d\x9c\xd1\xab\x1e\xce\xf0\x95\x85\x8b\x7b\xe3\xf2\x9a\x9e\x5c\x13\xfb\x78\x6a\x5c\x7e\xd4\xa4\xab\x67\xdd\xa4\xeb\xd4\x52\xef\x50\x4b\x2d\xd4\x3a\x58\x10\x1b\xcb\x9b\x87\x4f\x6c\xbd\x66\x7f\xba\x7c\xb7\x26\x32\x78\x51\x6a\xf1\x19\xbe\x7e\x08\x0f\x7a\x66\x19\x23\x55\x1e\xaa\xa8\xda\xdc\xf9\xfe\x8a\x53\x06\xe7\x8b\x42\x94\x2a\x34\x21\xf9\xf5\xf5\x5d\x72\x59\xd5\xba\xf4\xb9\xac\xd0\xfa\x87\xd9\xe0\xf3\x33\xce\xb1\xdc\x08\x7d\x2f\x30\xf2\x4b\x63\x13\xe8\x0b\x23\x9c\x06\x3e\xac\x89\xef\xd7\xf4\xf8\x9a\xd8\xdf\x73\x9d\xf7\x3c\x30\xbe\xaf\x6e\xf9\x67\x20\xcb\xef\x67\x75\x6e\x49\x61\xcc\x87\x63\xf1\x89\x3f\x7d\x04\xa3\xd8\x7b\x2f\xd7\x7a\x36\x16\x42\x26\xa5\x4e\xf6\x3c\xe5\x61\xaf\x6a\xc9\x7e\xf6\x9d\xaa\x4b\x7d\xa7\x56\xf4\x30\x5d\xb3\x8a\xf7\x69\xea\xaa\x9f\x6d\x13\xd9\x81\xbe\x13\x40\xa9\xa0\xbc\x54\x6e\xdb\xca\x6e\x3e\x75\x99\x3f\x09\x37\x3d\xf1\xda\x11\xc3\xfd\xc9\xf0\x59\xdc\xf4\xf3\xa5\xf1\xcf\xb6\xfc\xf3\x45\xfe\xf9\x43\xfe\xf9\x5a\x84\xfc\xc5\xca\xee\xc3\x79\xef\x99\x8f\x50\x60\x34\xd2\x82\x72\x75\x3b\xbb\xc6\x87\x3e\xf0\x63\x58\xe4\x0f\x4b\x0f\xe7\xa2\xe8\x62\xe7\xea\xdd\xa2\x03\xf6\x5b\x5f\x4d\xfb\x89\xf1\x1c\xd2\x37\xe9\xdf\x7c\x34\xe6\x0b\x62\xe7\x46\x7d\x40\x39\x66\x56\xba\x1c\x42\xcf\xf7\xa7\xcf\x7a\x6d\x36\x93\x74\xaf\x1d\x7e\xd6\x8b\xb3\x95\x70\xbd\xd9\x5e\x25\x9c\x45\xf3\x39\x6f\xab\x25\x98\x70\xa6\x78\x81\xc1\x75\xb1\xf2\x21\x56\xae\x58\x87\xa7\xcf\xb6\xe2\xa3\x87\x9f\x35\x13\xd1\x4c\xb8\xad\x84\xcc\xad\x84\xdb\x09\xd3\x15\xd8\x4a\xca\x7c\x9d\x70\x5b\x1d\x35\xdc\x20\xce\xd4\xb5\x23\xb6\xab\x66\xc8\x6b\x40\x6c\xe5\x8b\xe6\x35\xb0\xa5\x28\xa3\x27\x85\x2d\x3d\x36\xaa\x8f\x9c\x5d\x94\xb3\xf4\x88\xb3\xeb\x5a\x55\xdb\x67\x2c\xae\x1b\x1e\xde\x8b\x1d\xa3\x5b\x43\xd6\xef\x29\xe5\xe3\xc1\xb5\x33\x75\xcd\x67\x31\x1c\x77\x7c\x9e\xec\x26\x9d\xa8\xc7\x12\x94\x7f\x34\x8e\xad\x84\x31\xde\xae\x07\x3b\xa2\xfe\xf9\xd4\xba\x3a\xb0\xe0\xe9\xea\xc0\xfa\x7c\x4a\x77\xa7\x86\x47\x3b\x87\x84\xc6\x2c\x74\x9a\x33\x77\x33\xa2\x1e\xfa\xdd\x45\x8f\x9f\xd2\xc3\x1b\xac\xb0\xcd\x1e\x29\xdf\xd2\x07\x6e\x78\xd2\x17\xa8\xe1\x57\xe2\xad\x6d\xb2\x19\x91\xf2\x2d\xa1\x83\x34\x3d\xc6\xf7\x16\xbe\xa3\x00\x3d\xa8\x08\xb2\xf9\xa9\x07\xa9\xe8\x96\xcc\xfc\x73\x53\x56\xd4\x2b\xdf\x4e\x39\x21\x56\xb1\x3d\x8d\xbd\x8f\x9b\xa3\xd1\x45\x9d\xe0\x14\x47\xc3\x08\xca\x82\x6c\x6d\x57\xb6\x25\xe0\xad\x2f\xef\x90\xf5\xdf\xa1\x29\x71\x8b\x2b\xbe\x6e\x01\x62\x3c\x8a\x14\x92\x05\x0c\xed\xd1\x14\x93\x54\x9c\x86\x9f\xc7\xc4\xde\xc7\x14\x15\xd9\x01\x12\x42\x99\x10\xf2\x6e\x27\x99\xa5\xf3\xc5\xf7\x0c\x62\xdf\xa3\xe3\x42\xf3\x47\x60\x90\xf9\xdc\x37\x4f\xff\x63\x10\x62\x07\xea\x32\x1c\x2f\x9e\x0d\xe2\x3c\xb9\xc6\x80\xd8\x83\xd4\xdf\xc0\xe0\x1a\xf6\xb1\xab\x6b\x7a\x7a\x4d\xec\x2b\xdc\xc7\xae\x86\xef\x89\x9d\x33\x20\x78\x53\x58\x0b\x95\xf3\x63\x5a\x3b\xa7\x02\x8f\x6e\x35\x4a\x25\xc0\xce\x99\xba\x94\x2b\x04\xb9\x44\x50\x83\xca\x53\xd9\x40\x80\xf1\x27\xe3\x6a\x99\xa6\x2a\xac\xeb\x40\x0a\xb4\x7f\x72\x83\x9b\x83\x6b\xca\x61\x51\x32\x6e\x0e\x3f\xd7\xd1\xbd\xcc\x99\x40\xd7\x8a\x97\x64\x15\xeb\x78\x88\x7a\xc1\x04\xf9\xde\xc7\x90\x58\x87\xb2\x44\x3e\xa8\xd2\xf5\xf5\xf2\x55\xd9\x4a\x36\xe5\xf7\xa7\xb4\xb2\x72\x18\x71\x16\x2d\xee\x8d\xeb\x6b\xda\x40\x1e\xe6\x5a\x5b\x53\xe1\xa1\x71\xbc\xcc\x74\xff\xb3\xc3\xfb\xee\xff\x7a\x56\xaf\xf0\x50\xf2\x23\xe0\x75\xa5\x41\xfc\xaa\x4a\x84\xaf\xa5\x12\x37\x83\x21\x7f\x39\xe9\xf2\x48\xd1\xad\x3f\xb4\xff\xce\xec\xa0\xa6\x85\xa3\x36\x7c\x55\x44\x37\x9e\x5d\x18\xe9\x1c\xe8\x4c\x04\x41\xc7\x03\x83\x6b\x5b\x8a\xc3\x91\xb6\xa5\x20\x40\x31\x8e\x86\x6a\x72\x4f\x47\x5c\x79\x40\x39\x1c\xf1\xf7\x53\xf3\x47\xc0\x73\xcc\x98\x6c\x52\x3a\x8c\xe2\x68\xc9\x1d\x4e\x33\xaf\x00\x7d\x9b\x0a\xf1\x66\x5d\xa6\xee\xb5\xeb\x35\xcb\x5b\xdc\x1b\xcd\x6b\x2a\x8e\x38\xb1\x9b\xef\xcc\x25\x8b\x3c\xdd\x6d\x9c\x03\xde\x2a\x90\x0f\xb3\x77\xbc\x0e\x15\xb0\xd8\x5a\xd7\x74\x86\x73\xa0\xa5\xe6\xc0\x5d\xc1\xad\x2a\x82\x95\xcd\xb8\x33\xf7\x3f\xfa\x94\xd6\x19\x1e\x15\x22\xa0\x71\xa7\x85\xa4\x81\xef\xdc\xcd\xf4\xcd\x4e\xc0\x3c\xf3\x6e\x56\x87\x1f\xed\x5e\x4c\x0b\xd1\x02\x33\x88\xd1\x73\x85\x88\x6d\x43\xcc\xe7\x21\x6a\xcf\xde\xbc\xba\x18\x5e\xc5\x46\xb7\x07\x93\x47\x4c\x7c\x98\xe1\x6e\x36\x82\x7d\x9a\x90\xc5\x9d\xf9\xf8\xde\x19\xac\xec\x12\xf3\xd1\xb8\xd2\xc7\xda\xe5\x14\x8e\xb5\x71\x41\x46\xd2\xf7\xb3\x8c\xc1\x21\x10\x62\x7a\x37\xea\xa7\x06\xfd\x7f\xc9\x2c\x5e\x24\x9d\x5c\x15\x08\xf1\x87\x84\xb3\xaa\x7d\x73\xad\x37\x23\x54\x15\xdf\xef\xf7\xc6\x62\x3a\x7e\xd7\x5d\xdc\xd0\x06\x5b\x8f\xda\xc4\x28\x4e\xe6\x73\x43\x3d\x29\x87\x23\x3e\x76\xdb\xf9\x9e\x9a\xaa\x71\x22\xbb\xaf\x78\x8b\x1d\x27\x28\xb3\x7d\xb7\xd6\x56\x5f\xf1\xdc\x14\x70\xd6\x03\x5a\xbc\x57\xc9\x7a\xcd\x19\xba\x8a\x4f\x74\x76\x5d\xea\x33\xe5\x39\xaf\x52\x5b\x67\xdc\x79\x0a\x5c\xe3\x40\x10\x1a\x40\xb2\xa7\x92\x3d\x9d\x6c\xa7\xb7\x6d\x07\x5e\xa9\x64\xa0\x53\x0a\x92\xd3\x6c\xc5\x39\x20\x68\x88\xb1\x34\x44\x46\x20\x3c\x0a\x97\x86\x4c\x74\x0d\x41\x28\x67\x09\x6c\xa7\x9b\xa1\x33\x74\xb7\x6a\xd5\x2a\xb1\x03\x69\x9d\xa7\xfa\x2e\xcb\x1f\xce\xe7\xb2\x88\x07\x45\x3c\x28\xb2\xab\x8a\xe4\xa4\xfa\x57\xb1\x52\x10\x4d\xe7\xe9\x0d\x72\x8b\x9f\xd5\x7d\x0d\xcd\xf9\x6a\x2a\x5c\xfd\x40\x0b\x30\x53\xdf\xa7\x1e\x76\x0a\x3a\xa0\x1e\xf0\x2c\x09\xcf\x50\xf5\x06\xdf\x38\x0c\xa3\x74\xf0\xf0\xe9\x7e\xa5\x16\x06\x76\x6b\x4b\x31\x1c\xbd\xd7\xec\xc6\x53\x9e\x6d\x58\xaf\x33\x44\xef\x41\xbb\x2e\xec\x71\x7e\x22\xf8\xb0\x29\xfc\xb1\x51\xa5\xd5\x1c\x1e\x36\x97\xf3\x02\xef\x6c\x8b\x35\x49\x6a\x4d\x8c\xc4\x58\x4f\x33\x2f\x52\x7c\xf1\x52\x88\x65\x38\x10\x6b\x3b\xdc\x79\xf0\xd0\x3b\x37\xe1\xce\x6d\xe0\x1a\xdc\x39\xf0\x5d\xb9\x99\x77\xda\x4b\x3e\x44\xe5\xe8\x36\x5f\xb4\x87\x89\x03\x6f\xa9\x3e\xed\x38\x6f\xd0\x2f\xac\x44\x6c\x59\xd6\x78\xa7\x8b\x0e\x02\x87\xee\x96\xca\x8c\x03\x20\x5f\x9e\x8e\xc9\x42\xc2\x78\x99\xa8\x31\x4f\xa6\xca\x6a\x51\x95\x86\x5d\xa1\xa2\xb2\xd0\x8a\xce\x62\x87\x5a\xdd\x4e\x35\x3a\x6b\xbd\xf6\x5f\x65\xc6\x49\x01\x8d\x9e\xa4\xd3\x61\x2d\x1d\x88\x77\x71\x66\x97\x82\xf4\x5f\x93\xbc\x83\x0e\x35\x8a\x69\x9d\x5c\x29\xd2\xfa\x1e\x0c\xdb\x99\xcf\x33\x6f\xd7\x48\x13\x75\x42\x03\x3d\x1d\xfb\x79\x98\xcd\x6b\x52\x5d\x67\xbe\x39\xeb\xa2\x1b\x8b\x28\xe9\x7b\x40\xf9\x0d\xda\x1c\x13\xe9\xc9\x4b\x4a\x48\xc1\x44\x85\x66\x78\x84\x7a\x4e\x07\xf6\x4e\x5a\x2c\x50\x53\x77\x6b\x7a\x9f\xf5\x87\x82\x8f\xc5\x79\xa7\x27\xf8\xb0\x31\xe4\x41\x47\xf4\xc6\x86\x6f\x9e\xbe\xc0\xa4\xf7\xcd\x73\xf5\xf7\x4c\xfd\xbd\x80\xbf\xc4\x0e\x9c\x97\x5d\xd7\xa8\xd2\x94\x6a\xc3\xf7\x1a\xf5\xcd\x13\x99\x01\x51\x0a\x60\xfe\x49\x6c\x6c\x85\xcd\x02\xda\x06\x64\x8f\x20\x29\xa2\x9d\x69\x1e\x7d\xe6\x9b\x5d\xcf\x20\xf4\xdd\x86\x72\x2b\x1d\x73\xe2\xba\xdf\x52\x7c\x02\x14\x40\x37\xbd\xd0\xdc\xcf\x30\x79\xa5\x0a\x6d\x5a\xed\x8a\x51\xbc\x33\xc7\xbd\x15\xc4\x87\x73\xa0\xec\x99\x71\x9c\xa5\x24\x6d\x29\x9b\xc7\x3c\x6d\x4b\x1b\x29\xcf\x6b\xc4\xd6\x3b\x99\xfa\xf2\x90\xf0\xf9\xdc\x5b\xd7\xa7\x01\x1a\x7b\xa9\x13\x42\xe5\x38\x10\x86\x94\xbc\x0e\xe2\x8f\xd5\x9c\xa4\xc7\x1c\x25\xda\x2a\x1e\xc9\x5a\xff\x47\x21\x1c\xe5\x8d\x33\xee\xcc\xb6\xf7\x1b\xa0\x97\xff\x0b\xa0\x29\x09\xf5\xc1\xc5\xa5\x84\x7c\xbd\x12\x72\x01\x6e\x58\x84\x7b\xd2\xf9\xe5\x2d\xb6\x06\x7c\x75\x6d\x2c\x63\xab\xc2\x74\xe5\x61\xf7\x96\xac\x54\x46\xab\x34\x9f\x78\x41\x66\x98\x41\x2d\x40\x0a\x8a\x58\xee\xad\x52\x32\x2c\x9c\xf2\x18\xb8\x52\x4f\x0c\x74\xba\xad\xc7\x7f\x3e\xd7\xcf\x93\xbf\x88\xa6\x14\xbc\xac\x32\x2f\xaf\x54\xfc\xee\x6a\x42\x9f\xf9\x78\x2a\xb6\x8a\xf7\x14\x90\xf9\xc8\xfb\x80\xa4\xc1\x8d\x14\x0b\x1c\x79\x39\x6d\xe4\xf9\xdc\xd0\xa7\xbc\x54\x6f\x08\x9f\x5c\xe3\xec\x84\x14\xce\xfc\xf4\x04\xbc\xcd\x93\x9e\xd7\x9a\x18\xba\x8d\x99\xb7\xb8\x95\x3e\x70\x3e\x74\x3d\x77\xbd\xb0\x6f\xff\x09\x21\xfa\xe3\xc3\x0b\x80\x1f\xa9\xd0\xfc\xc7\x32\x7b\xd5\x4e\x32\xad\x8e\x05\xb1\x7f\xac\x16\x02\xde\x5d\xa7\xb9\x74\xe8\x03\xae\x43\x1f\x14\x23\x31\xff\xfc\xad\xdc\xff\xa7\x14\x29\xff\xfc\xa5\x90\xb7\x50\xa1\x3f\xb5\x38\xf5\x67\xb2\xa6\xbd\x17\xe3\xe7\x0a\xb1\x67\xa1\xc0\x10\x0a\x0c\x65\x81\x9c\xa0\xef\xfe\xb7\xb8\xdd\xa7\xa2\xd5\xfb\xdf\xd5\x01\x55\xe8\x1a\xee\xff\xaf\xbd\xf6\xf0\x5b\xcc\x1e\xa4\xd0\xf1\xd3\xf3\xc0\x78\x78\x27\x25\x2c\x54\x14\x58\xd1\x91\xb4\xd7\xcb\xb7\xfd\xf3\x6f\x6b\xf8\x2c\xc5\x01\x9f\x57\x89\x03\x94\xc7\x67\xa4\x08\x6f\x3d\xb7\x68\x79\xc6\x9b\x1f\xcd\x3b\xde\x44\xc6\xf7\x78\x6a\xf0\xe6\x3f\xe8\x4e\xcc\xfc\x7f\xe9\x4e\xaf\xf9\x5b\x96\x4c\xae\xc3\xfd\x01\xd3\xa1\x72\x7f\xde\xb1\xc3\xb8\x54\x5a\x3f\x89\x8d\xaf\xdb\x7f\xea\x0b\x49\x19\xe4\xe5\xc7\xb3\xda\x2e\x90\xcc\x68\xda\xf7\x86\xd7\x54\xec\x9c\xd7\x94\xec\xdc\x03\xff\xd8\xb5\xef\xad\x19\xf9\x40\x4a\xcd\x5c\xa3\xd7\x80\xbd\xca\x2b\x95\xee\xae\xa5\x4b\x8c\xcc\xf6\x29\xc5\xfe\x6e\x59\x5d\x12\xed\x8b\x09\x77\x5e\xd0\x8d\x86\x03\x14\xe3\x8a\xf3\xd7\xc8\xce\x55\xa2\xa5\x3e\x99\x9a\x54\x9e\xdd\x2c\xc4\x07\xe1\x92\x60\xf2\x96\x68\x25\x1f\x6a\x3b\x38\xa2\x9e\x22\x29\xf0\xfd\x10\xde\x67\x5d\x65\x42\xa3\xb3\x5c\xcb\xd3\x7e\xff\x77\x35\x90\x37\x2c\xd1\x38\xd5\x40\x53\x3e\x15\x68\x15\xbb\x2f\xd5\x73\x80\x56\x09\x14\xad\x52\xc7\x02\x27\xa7\x34\xe1\x46\x90\xa3\x57\x2c\x9d\x1e\x28\x52\x45\x03\xbe\xc6\xb6\x7e\xc4\xa3\x3e\x70\xe3\xec\x54\x4f\x1d\xcd\x7f\xa9\x09\xa4\x99\xb0\xfe\xb3\x18\x86\x49\xff\xc5\x6a\x45\x0b\xa2\x2f\xf1\x1e\xb8\xf1\x5d\x93\xb8\x27\x3f\xd3\x34\xff\x28\x25\x7b\xe5\x34\xb9\x56\x3e\x3e\xf2\xdc\xed\xc9\x4f\xf5\xe6\xe5\x38\xe2\x8c\x74\x57\x63\x96\xa7\xbf\xd3\x95\xf6\xe2\x1a\xd7\x53\x4e\xaf\x15\x7f\xfa\xf3\x4e\x6a\x3c\x3c\x7f\x37\x94\xbf\x18\x95\x69\x74\x46\x15\x90\xf2\x48\x94\x15\x18\x78\xd4\x95\xd4\xd5\xdf\xf4\xf3\xd3\xb1\x75\x49\xe4\xb0\x3d\x7f\x5f\xe2\x3b\x32\xa6\xf2\x3d\x8a\xeb\x1a\xc7\xf7\x07\xa5\x0e\x89\x3c\x74\x49\xc7\xcb\x76\x8b\xa9\x4b\x5b\x91\x56\x45\x2b\xa6\x5f\x6a\x86\x2c\xe5\x2f\x7c\xa6\x39\x0c\x1a\xb0\x22\xcf\xc2\xf2\x5c\x8b\xee\x75\xdd\x01\x67\x6d\xda\x9a\xf1\x72\x00\xed\xe3\x65\xaf\xcb\xcb\x1e\x3c\xfa\xe5\x4b\x41\x16\x48\xad\xbe\xdb\x4c\x3e\x67\xe7\x1e\x4d\x09\xd6\x22\x9f\x0e\x7c\xc9\x5e\x4c\x7e\xa5\x06\xe9\x35\x4d\x61\x9e\xc5\x19\x75\xf0\xff\xff\xbc\xfd\x4a\x16\x38\xe5\x7a\x35\x39\x01\xb3\x3e\xdb\x61\x91\xc1\xfd\x25\xa5\xae\x97\x54\xff\x28\x77\xdc\xd3\xe1\xd4\xf2\xe1\x1c\x0f\x16\xc4\x96\x3b\x31\x92\x17\xb8\x95\x67\x2a\xfc\xe3\x9e\x21\x72\xc4\xb6\xc0\xa1\xfc\x25\x09\xaf\x6b\x3b\x3c\x49\x0f\x1e\xba\x1c\xcf\x2a\xad\xf2\xfe\x6f\x55\xf9\x77\xe8\x7b\x5d\xed\xe9\x33\xff\xb8\x5e\xba\xd1\x01\x20\x95\x21\x46\x1b\xe9\xf4\xa2\x0d\xab\x3b\xe5\x74\x00\x5c\xff\xf0\x59\xec\x8e\x06\xc2\x1f\x37\xf9\xb8\xd3\xb7\xae\xe1\xac\x04\x12\x6a\x77\x2c\xa3\xe6\x8b\xef\x2d\xa3\xf1\xcc\xe9\x6d\x04\x27\x9c\x44\x1f\x4f\xe7\x71\x26\x93\x1a\xcb\x20\xca\xc5\xde\xfa\x2d\x0f\x21\x2f\xce\xf0\x72\xa3\xf1\x68\xe8\x43\x94\xd8\x41\x85\x79\xb6\xa8\x30\xdf\x16\xea\x4e\x07\x83\xff\x07\x9b\x41\x59\x6c\x0a\xb5\xc5\x8f\x58\x84\x31\xb7\x02\xf6\xb6\x11\xf6\x7b\xe3\x8a\xbc\xc8\xd8\xb0\x22\x75\xa5\x41\x65\xf2\xa8\xf3\x2a\x36\xac\x91\xf4\x46\x3c\x91\xf0\xcc\x7f\x7f\xdd\x1c\x11\x3a\x52\x91\x5b\x2b\xa3\xad\xed\xf2\x84\xd0\x09\xf3\xec\x10\xef\x9f\x8c\x49\x59\x7e\x13\x5b\xdb\x84\x06\xce\xf5\xa9\xcb\x1a\xc7\xc4\x0a\x19\xbb\x1c\x95\x4a\xf0\x59\xa8\xe4\xd1\x11\xb1\x03\x73\xca\x26\x76\x60\xce\xd8\xc8\x8e\x9c\x93\xc0\x2d\x95\x8c\xc0\x39\x3b\x72\xd9\xc5\x01\xb1\x23\xf3\xc6\xc7\x84\xd3\x23\x97\xed\x36\x88\x5d\x45\x1b\xd2\xb3\xa9\x11\xd0\xe6\x49\x79\x00\xbb\x4a\xb6\xb5\xd8\xd9\xf1\x70\x3b\x42\xcf\x57\xe9\xae\xaf\x8e\xfc\x03\x0f\x23\x1a\x28\xaf\xc5\x71\xa9\xb4\x17\x97\x4a\xcf\x31\xf2\xe0\xa7\x07\x34\x29\x1e\xba\x92\x35\x57\x07\xae\x54\xd8\xb8\xbd\x36\x6a\x18\xa2\x3d\x91\x4e\xb5\xf4\x09\x93\x31\x6e\x30\xa0\x49\x8e\x6f\x4b\x7e\xc5\xb7\x69\x74\x7b\x27\x79\x3a\x51\x79\xec\x7a\x48\x27\x7a\x66\x3e\x39\x96\xf1\x0f\x56\x05\xef\x91\xa5\x33\x3f\x14\x2b\x2c\x08\x74\xd8\xb7\xf4\x46\x1a\x4d\x72\x1a\x21\xb1\x23\xee\x9c\xb9\xce\x7e\x66\x5e\x50\xbc\x9b\xc6\x7c\x47\xbf\xcb\xb7\x2d\xf3\x3d\xee\xff\x26\xdf\x17\x4b\xda\xea\x04\xce\x17\xe5\x42\xb0\x1f\xd2\xc0\xa9\xba\x34\x70\x6a\x2e\xad\xd2\xda\xbf\xab\x3b\xf2\xce\x4e\x90\x7a\xcd\xaa\xd2\xea\x8e\xc0\xbf\x81\xf3\x07\x64\x5a\xba\xa9\xfe\x43\xd6\xdb\x8e\xd0\xdb\x6f\xc1\x0d\xe0\x48\x00\x6d\xb6\x92\xd9\xcd\x53\x12\x06\x7f\x4f\xab\x79\x85\xfd\x36\xa3\x25\xd0\xdd\x49\x52\xbc\x28\xfb\xf4\x3b\xb6\x15\x0f\xa6\x25\xb6\x35\xcf\xac\xa6\x14\xc8\xcf\xbb\x0f\x05\xd2\xf6\x78\x36\x80\x89\xc9\x19\x3b\x6c\x2f\x9d\x5c\xa5\x92\xfa\xe8\x65\x1f\xbd\xdc\x47\x49\x3c\x9b\x5d\xa3\x7d\x04\x27\xec\x0f\x25\x28\x7c\xfe\xae\xe6\x15\xd0\x30\x78\x30\x1f\x17\x74\xb0\x10\xed\x63\xb1\xa4\x67\xf9\xf3\x2e\x83\xf8\xec\xbd\x07\xf9\x8e\xe5\xcf\x5b\xa2\xee\x0f\x0a\x86\xa9\x27\x3f\x0b\xaf\x5e\x24\xbb\x2a\x2f\x12\x48\x67\x38\x56\xf4\xe6\x37\xe7\x73\xc3\x6f\xea\x18\x7d\x7f\x54\xab\x84\xfa\x4d\xa7\x70\x53\xe0\x37\x73\xc5\x82\xe6\xb2\x12\xa7\xbe\x83\x37\x6f\x4d\xc5\x48\x75\x7c\x7d\x41\xf1\x94\x5d\x3f\x8a\xe6\x92\x9f\x1e\xb3\x13\xd8\xef\xb9\x2a\xd1\x44\x6e\x5e\x20\x97\xc4\x59\xd0\x84\x33\x59\x34\x7f\xcd\xd8\x8b\xd5\x3c\x55\x8e\x4b\xe1\xe8\x38\xd3\x77\xa6\xae\x3d\xe0\x46\x40\xc3\xa6\xc1\x49\xf9\x16\xaf\x37\xf0\xcd\xc3\xb7\xc6\xd4\xf0\xd5\xb7\x91\x28\x63\x72\xa6\x65\xe9\x45\x52\x50\x57\x2a\x5d\xbe\x18\x3e\x3d\xdc\xcb\x77\x67\xd4\x7c\xaf\x09\x55\x68\xea\x87\x6a\x51\x8f\xfb\xfa\xc2\x35\xde\xd7\x17\xae\x8d\x8e\xbe\x70\x3d\xee\xa0\x5a\x54\xd4\x44\xb9\x42\x94\x75\x8b\x7c\xfc\xa5\x1e\xd9\xe3\xbe\x16\xc9\xc4\xfb\xcc\xb3\xdb\xcd\x1c\x55\x58\x51\xf5\x50\xaf\xa2\xea\xa1\xdb\x9b\x3a\x4d\x3d\x1d\x77\x80\x72\xdc\x7b\x31\xa2\x15\x0c\xae\xc6\x93\xa7\x78\x16\x6b\x50\x18\x54\xd4\x5d\x6a\xbc\x5f\xf1\xe8\xf6\x26\xa7\xdb\x9b\x45\x37\xec\x9d\x66\xb6\x87\xff\xaa\xc3\x14\x23\xdf\x69\xa2\x10\xa3\x93\x75\xc4\xf1\xd4\xe8\xac\xc0\xaf\x38\xf8\x30\xf0\xc0\xd4\xd0\xc7\x26\x9e\x59\x3e\x2a\x41\x3c\xc2\x00\x2f\x34\xb4\xdf\xcc\x1f\x35\x77\xfc\xc2\xdc\xf1\xd3\xb9\x93\x77\xd1\xf8\xcf\x9a\x14\x37\x51\xfa\x11\xe7\xa6\xfc\xc0\x88\x9b\xcb\x72\x90\x24\xd7\xb9\xbd\x13\xda\x39\x92\x4e\x25\x73\x5d\xd9\xfd\x67\xf5\x76\x9b\x28\x13\xe9\x66\xf5\x7e\x92\xcf\x4b\xf2\x91\x5c\xc5\x78\xc3\x53\x73\xe9\x61\xbb\x28\x25\xe9\xfd\xbd\xc5\xdd\x93\x22\x93\x5e\x61\xf0\x7a\xff\xc7\xc1\xeb\xfd\xa3\xc1\x53\x20\x5a\xea\xd9\x2b\x38\xc6\xeb\xff\x5d\xd1\xca\xb2\xe8\xe4\xde\xe8\x4b\x99\x09\x92\x92\x4d\x26\xb8\x13\x0a\xb7\x54\xfa\xf7\x8e\x7a\xcc\x39\xa8\x3d\xca\x7b\xaa\x50\x8c\x53\x82\x6e\x18\xeb\xdc\x02\xbe\x46\x3a\xa7\x20\xe5\xdb\x6c\xf3\x7c\x6a\xe6\xca\x20\x41\x58\xab\x56\x37\x8d\x5c\xee\x8a\xf9\x35\xaf\xec\xf1\x98\x2f\xf0\x24\x27\x6c\xf6\x35\x5c\x09\x2e\x07\x2d\x07\x29\x69\x6a\x6b\x95\x41\xb3\xce\xd1\xf1\x9d\x85\xd2\x1a\xf4\xdd\x9a\x66\x1b\x36\x8b\x72\x91\x5b\xa7\xe5\xb9\xc6\xd1\x84\x97\x3d\x18\xb0\x4e\xc0\x4e\x26\xbc\xfc\x1a\xf0\x72\x79\x45\xa4\xbd\x11\x22\x34\x68\x96\x4a\x1c\xd9\x42\xd4\x81\xc1\x7d\x0a\x07\xaf\x17\xb8\x64\xd1\xc7\x71\xfe\x07\x92\x21\x7b\xd4\xd4\xa7\xde\x27\x59\xf8\x97\x72\xa2\x19\x6c\xea\x97\xc4\x5e\x56\x1d\x54\x97\x9a\x39\x77\x1c\x32\x2d\x70\x6d\xe1\xdc\xf8\x2e\x63\x07\x47\xa5\x92\x8f\x57\x9e\x82\x2c\x96\x64\x4d\x75\x29\x0e\x62\xec\xbc\x5d\x1f\x43\x0d\xeb\x35\x62\x01\x3d\x61\xce\xba\x75\x43\xa6\x54\xe1\x6c\x1a\x4a\x64\xe9\xc1\x11\xa1\x3d\xcf\x08\x68\x3a\x2e\x28\x95\x2a\x03\x47\x7d\x0f\x87\x55\x26\xb4\x7a\xc2\xc0\x1e\x56\x06\x05\x9b\xa0\xbe\x13\x4b\x57\x97\xeb\x07\xd9\x0d\x7f\x43\x98\x35\x55\x20\x0b\x52\x2c\xc9\xd1\x4b\x39\x16\xcb\xe4\x58\x28\xbf\xb2\x82\x4d\x2d\xc1\xa2\xd0\x43\xa1\xef\x1a\x8d\x53\xe2\x54\x5d\xbb\xf6\x2d\xa8\x4b\xe6\x5c\xb7\xb1\x71\x8a\x6d\x14\x34\x20\x74\xf2\x62\x08\x7a\xba\x87\x8d\x13\xc5\xc6\x09\x68\x9c\xc8\xfa\x96\xc6\xd3\xac\x7d\xf4\x18\x50\x0c\xca\xb7\x44\x89\xc9\xa6\xef\x9b\x9b\xe9\x56\xb5\x9b\xef\x0d\x7f\x38\x6c\x0a\x7b\xdc\x08\xe9\x20\x22\xb0\xc1\x84\x6a\x47\xb0\x43\xbd\xc1\xf8\x68\xed\x1a\xc2\x26\x1f\xe8\x2d\x1f\xdf\x04\xbe\x71\x39\xfe\xfd\xd3\x52\xa9\x31\x05\x06\x01\xb3\x49\xca\xa1\xa0\x7b\x35\x2e\xac\x0e\xb5\x56\x68\xc0\xd0\x10\x14\x8e\x4d\x9f\x56\x29\x50\xe4\x43\xa0\xc8\x77\xdd\x9c\xe8\x74\x3c\x9c\xbd\x89\x67\x9e\x18\x1b\x41\xdf\x47\x33\x47\xb3\xc7\xbb\x62\x34\xe0\xbe\x18\x6d\x90\x85\xcf\x81\x0b\x89\x8f\x38\x79\x5b\xdc\x31\x1c\x60\xa0\xa0\x3f\x56\x65\x89\x30\xbe\x54\x0e\x88\x19\xfd\xf5\xdc\x4d\xfe\x9a\xcf\x0d\x58\xe1\xf9\x0f\x3c\x08\x8c\xc3\x09\xa7\x9d\x33\x7a\x9e\x70\x62\x7d\xf0\x91\x50\xee\x19\x5c\x5d\x14\xb7\xc6\xb3\x44\xb4\xda\x42\x8c\x0d\x42\x1b\x13\x4e\x7e\x25\x37\x52\x28\xe5\xb4\x6b\x46\x53\x5e\x96\x5b\x64\x79\xdc\x93\x8f\xb8\xcb\x2b\x5a\xd3\x57\x13\x52\xcf\x24\xde\x80\xe9\x16\xa8\x91\x14\x7a\x24\x05\x15\x38\x84\x55\x1c\x3f\x41\x55\xdd\x38\x7e\x22\xb5\xdb\x05\x72\x2f\xa0\x5a\x8c\x18\x36\x53\x8d\x03\x35\x84\x4a\x20\x47\xac\x65\x8a\xf0\xf2\xc5\x08\xa8\xdf\xd1\xda\x05\x24\x2d\xfb\x32\x29\x94\x4d\xa6\xc4\x3a\xdc\x23\xb6\x5a\xaa\x05\x79\xaa\x68\x6a\xd7\x7c\xf6\xf9\xd8\xf0\xe9\xd9\x89\xd6\x1a\x1b\xde\xa9\xe0\x9a\xd2\x83\xc9\xdd\xfb\x91\xcc\x8b\xe9\xb4\x18\x57\x09\x0c\xa7\xe8\xa2\x09\x25\x95\x03\x19\xca\x76\xe8\xa6\x4a\x9a\x18\x50\xff\x56\x09\x2c\xa5\x6b\x45\x0d\xc7\xe6\xa5\x12\x77\x02\x38\xb4\xf0\x8f\xf3\xd3\x77\xd7\xd9\xb5\x4d\x38\xe3\xce\xa3\x70\x73\xdf\x33\xfe\x87\xd3\x9b\xa9\xa2\xef\x86\x77\xd2\xcd\x88\xe6\xc1\xfe\xa6\x5c\xf2\x63\xf5\x21\x33\x17\x7c\x4f\xcb\xe8\x9c\xa9\x6b\x0e\x3a\x53\x91\xdc\x75\x82\x71\x7b\x3e\xe7\xce\xae\xe7\xce\xe7\x35\x9a\x7d\x91\xba\xb0\xf0\xe9\xc1\x87\x4f\xbf\x13\xea\xfd\x4e\x7a\x27\x1d\x55\xe8\xe9\xf6\x34\x95\xcb\x35\xa6\xbc\xe2\x53\xaf\x12\xd0\xed\x4d\x9f\x6e\x6f\x06\x44\xc5\x39\x8f\xe0\xdb\x78\xe5\xc5\xb9\x39\xee\x2d\xdf\x9b\xff\x5a\x94\x57\xac\xfa\xf0\x44\xd7\xac\x3d\x33\xca\x1a\x3b\x69\x8d\xbf\xaa\xe9\xf7\x12\x3c\x69\xea\xa8\x6b\x3b\x7d\x96\x0d\x8d\xb2\xea\x12\x78\x9b\x9e\xa2\xf7\x7e\xe9\x1e\x0b\x12\x8a\xc2\xb7\xa5\xfb\xfb\xbf\x2f\x7c\x1b\xab\x7a\xfb\xa7\x84\x8e\x52\x2c\x7a\x27\xc4\xf6\x58\x23\x2c\x3f\x21\x91\xdd\x14\xf0\xe0\x93\xf2\x11\xa6\x04\x3a\x45\x90\xf2\x6b\x08\xf8\x8d\xe8\x55\x9b\x7a\x44\x3e\xb6\x4e\xe9\x45\x1b\xca\x6b\x68\xd3\x5d\x4e\x6c\x0f\x48\x97\xb8\x8d\x9f\x7c\xe6\xc1\x7a\x39\x02\x5a\x10\x85\x78\xe9\x11\x86\x5a\xc9\x3e\x8d\x52\xad\x64\x15\x61\xbd\x54\x32\x7c\x27\x3e\x73\x59\x48\xb4\x80\x6d\x04\x19\x33\xf1\xda\x3e\xbc\xee\x36\x10\x07\x4f\xd2\xc9\x52\x37\x79\xa4\xfe\x7a\xba\xfb\xba\x4d\x63\xb0\x42\xdc\xb5\xa4\xa6\xf0\x81\xb4\x4b\xf9\x67\xc9\x7a\x0d\xea\x13\x39\xbe\x40\x55\x12\x37\xd5\x7e\x57\x14\x7b\x2d\x69\x30\xe4\x42\x62\xfc\x6f\xe5\x5e\x41\xfb\x9d\x9c\xea\xa6\x83\xac\x35\x59\x25\xfe\x3a\x6c\xfc\xbd\xec\x4a\x0a\x36\x8b\xfe\x5e\x76\x25\xbc\xda\x3d\xfb\x40\x44\xb6\xed\x96\x03\xe7\x0b\x5e\x0c\x34\x8d\xc0\xf9\x03\xfd\xda\x08\x14\x97\x11\x38\x48\x30\xf5\x2b\x3a\xb6\x11\x28\x3f\x23\x84\x46\x32\xb5\xea\xa2\xa2\x7f\x53\x46\xf5\xa0\x89\x94\xcb\x56\xfe\xfc\xfa\xf5\xcb\x9f\x9b\x18\xe1\x83\xf6\x96\xd2\xbe\xb8\x2a\xa2\xc6\xee\x13\xa7\x21\x15\xe9\xa4\xff\x47\x92\xb5\xec\xa4\xfb\x1b\x92\x35\xd1\xfc\x58\xb2\xa6\x7d\x7e\xac\x90\xb0\xf5\x97\x25\x6a\x6a\x4f\x37\xf2\xd4\xd4\x2a\xd5\x13\xed\xc2\xa3\xff\xa1\x9c\x69\xd2\xfc\xc0\x93\x88\x3e\x0f\xcf\x25\x2f\x15\x4c\x0c\x31\x9f\xff\xe8\x6a\x2b\xa2\xe0\x84\x5d\x2a\x6b\xd9\x20\xf5\x13\x37\xdd\x4d\x1f\xf9\x75\x96\x3a\x49\x1f\x77\x13\x9e\x3e\x1f\xe4\x9e\x4f\x4e\xd2\xc7\x1f\x0f\xe9\xb5\xf8\x5e\xc2\xd3\x67\xef\x3a\x7d\xdc\xcf\x25\xbf\x3c\xa7\x76\x4d\xf7\xc2\xc8\x16\x51\x83\xb3\x67\xd5\x33\xf5\xaa\x15\xf0\xc5\xbd\x31\x69\x2a\xff\x26\x13\x75\x6d\xbe\xff\x2f\xb6\x5d\xfd\xe3\xdf\xf6\x9d\x79\x83\xfa\xbd\x77\xe6\xad\xfa\xdb\xf7\x58\x25\xe0\x90\x10\x6a\x2b\xdf\xc9\xbd\x7e\xfa\x88\x74\xc3\xc0\xa0\x79\x99\x5b\x87\x1b\xc4\x7c\x34\xa6\x23\xfa\x36\x1a\xfa\xd6\x8b\xc2\x87\x6e\xf8\x09\x1f\x8d\x36\xac\xfe\x13\x57\x37\x30\xdc\xa9\xa6\x97\xc1\xdc\xa9\xb9\x0b\x1c\xce\xc3\x70\xc9\x4b\xef\x68\xe8\x33\x0d\x25\xbd\xcf\xcd\x6f\x0f\x2f\xcd\x74\x62\xda\xdc\x0c\x4e\xd6\xd9\x65\xdd\x63\x53\x18\x62\x78\x25\x96\xa1\xde\x7a\x47\x84\xcc\xe7\xfa\x6d\xda\x86\x65\x0a\x87\x32\x50\x07\x18\x85\x00\xf6\x19\xf3\x5c\x68\x7e\x33\xdd\x8c\xcc\x73\x91\x91\xcd\xdd\xa2\x26\xb8\xe3\x16\x03\x0c\x20\xce\x7c\x28\x38\x93\x7f\xe6\xf3\xe9\x90\xdb\x1c\x03\x71\x9b\xc3\xa7\xf9\x7c\xda\xb6\xd1\x71\xb2\x23\xbf\x53\x48\xa5\xdc\x39\x72\x95\x83\x00\x82\xf6\x49\x3e\xbe\x88\x31\x7a\x33\xf2\x8d\x78\x84\x41\x25\xef\xcc\x97\xe7\xf7\xaa\xf9\xe7\x02\xb2\x4c\x0f\x95\x69\xb4\xb7\xca\xd9\x49\x57\xc5\x1c\x3c\x17\x74\x7a\xb8\x9a\x10\x52\xed\xe1\xf3\xf9\x97\x6a\x95\x7a\xf3\x79\xed\x6b\x55\xe2\x04\x5b\x57\xae\xa6\x97\x43\x15\xe0\x72\xa5\x7f\x9b\x5c\x4d\x2f\x87\x04\xcd\x43\x76\xcf\x30\xfb\xc3\xe5\x7b\xdc\x1b\x9c\xe1\x81\x72\xbf\xe2\x5b\xdf\x2b\x0e\xf4\x4c\x31\x2c\x1c\x16\x17\x8c\xb5\x44\x27\x19\x41\x27\x4e\x27\xba\xc7\x72\x2c\xce\x6b\x53\x87\x4d\xf6\xfc\x8c\x72\xe3\x8c\xfd\x38\x40\x15\xb7\x63\xf9\xe7\x44\xfe\x79\x90\x7f\x3e\x1f\x64\x00\x9e\x3f\x02\xd0\x3d\xc1\xbc\xcf\x53\x8e\x7f\x77\xa7\x3c\x2b\xd4\x93\xe7\xd5\xdf\xa8\x36\xe7\xdc\xff\x77\x65\x4e\x52\xe4\xee\xcc\x7b\x7f\x95\x64\x55\xf6\x86\x26\x61\x27\x5f\x56\x4e\x94\xc9\x17\xa5\xc6\x39\x12\xe3\x9b\xce\x38\x11\xef\x73\xdd\x86\x5a\x7e\x2a\x21\xf6\x94\xc1\x88\x79\x1b\x3a\x2f\x9e\x6b\x6c\xfd\xb7\xb7\x15\x51\xec\xe8\x9c\x7b\xa1\x74\x6c\x4e\x4e\x64\x64\xf9\x74\x7c\x06\x38\x3e\x27\x27\x38\x3e\x4d\x91\x5f\x57\x27\x27\xe8\xf6\x6f\x91\x8d\xf1\x5e\x2a\xd9\xe1\xe6\x8f\x07\x15\xd2\x80\x0d\x70\xcd\x41\x0a\x7d\xea\x71\x2a\x97\x85\x84\xde\x1f\x61\x8b\x53\x00\xfb\xcd\x25\x82\xc4\x16\x2c\xe0\x79\xef\xa1\x34\x62\xd2\x7b\xe8\x4e\x64\x97\xcb\xa1\xa6\x69\x3d\x27\x74\x15\x49\x15\x97\x4a\xf1\x8e\x8c\xff\x19\x93\x85\xd8\xe1\x66\x83\x97\x4a\x06\xfc\x61\x78\xcd\x0b\xfb\x24\xfa\x21\xed\x0f\x8d\x25\x68\x12\x10\xcd\x00\x7d\xd3\x80\x6c\xf1\x8d\x9b\x7d\x0f\x01\xf5\x3d\x26\xb5\x0e\xfc\x0e\xc6\x41\x45\xed\x6a\x7e\xed\x9c\xba\x3b\xdc\xbc\x0c\x0a\x3e\x83\xf6\xf3\x7e\x0b\x79\x10\x74\x7a\xd1\x5a\x22\x22\xd1\x0b\x46\x6b\x63\x31\x1d\xaf\xf1\x70\x2c\x86\x6b\x61\x67\x38\x1a\xaf\x89\x44\x20\x3b\xbe\x81\x96\x68\xd7\xd2\x43\x7b\xda\x59\x1d\x1c\x0a\x7e\x9d\x2d\x15\xac\x4d\x8f\xd7\x74\x17\x9d\x5b\x66\xf9\xc7\x87\x14\x53\xf5\xc8\x2d\xd0\x06\xe4\x80\x8f\x57\x3a\x08\xf7\x3b\x06\x57\xde\x73\x2f\x03\x87\xbb\x96\x7a\xcc\xaf\xe1\x69\x73\xa5\xf3\xea\x2a\x15\x4c\x35\xdc\x0e\x76\x04\xc6\x11\x53\x12\x11\x9f\x46\x2c\xa0\xb1\x1d\xb3\x6c\x14\x13\x99\x39\x70\x69\x8f\xc1\xa8\xd0\x01\x83\x3e\xa5\x23\xe6\x51\x38\x77\xe9\x33\xab\xd2\x57\x96\x00\xb8\xe7\x9d\x57\xbb\x5c\x7e\x26\x13\x68\xdb\xd3\x11\x37\x12\xe7\xd9\xa5\x3d\x3a\xa0\x40\x52\xc7\x4c\xee\x1b\x31\x9c\xed\xec\xe2\xb4\xde\x14\xd6\x25\xb1\x43\x27\x72\x59\xbc\xd0\xfb\xb0\x87\x9f\xc4\xd8\x6a\xa2\x3b\x1b\xe5\x5f\xd2\x9c\xdc\xd7\x67\x01\xf0\xb0\x22\xa4\x3e\xb1\xe4\x33\x24\xcb\x84\xb4\x1b\xdb\xb8\x7b\xe7\x8f\x13\x79\xc4\xc8\xe1\xde\xff\x57\x2e\x76\xc6\x7b\x57\xb8\x8e\x4b\xf5\x54\x83\xdd\x01\x97\x8c\x1d\xee\x70\x9c\x6d\x30\xd7\x4a\x25\x01\x4d\x0b\xcb\x7e\x19\x5e\x11\xe1\x20\x5b\x65\x42\x0f\x36\xea\xd2\x0d\x8f\xb8\x0a\x53\xf8\xe7\x1f\x74\x9b\x54\x6a\xb9\xb1\x79\x7a\x5f\x79\xc0\x58\xef\x28\x73\xa9\xc9\xf8\x7c\xbe\x8e\xc3\x3c\x9f\x87\x1c\xff\xf0\x1d\x38\x43\xbf\xf9\x5a\x5d\x46\xd4\x6f\x07\xdc\xfa\xbc\x0f\x85\x02\xe8\x36\xfd\xa1\x85\x9e\xb5\x81\x70\x09\x98\xf9\xd5\xf6\xbf\x79\x18\xef\xd5\xe0\x15\x8f\x6c\x19\x7e\xc5\x93\x8e\xa9\x85\xca\xbf\xb1\xbb\xb7\x7f\x70\x78\xd4\x38\x3e\x39\x3d\x3b\xbf\xf8\x7e\x79\x75\xdd\x6c\xdd\xdc\xfe\xb8\xfb\x79\xff\xc0\x3d\x3f\x10\x61\xd4\xee\x3c\xc6\x49\xb7\xd7\x1f\x3c\x0d\x47\xe3\xc9\xf3\xcb\x74\xf6\x5a\xad\x6d\x7f\xf9\xe3\xeb\x9f\xff\xfa\xf7\x7f\x2a\xe6\x86\xb3\xef\xb9\x06\x46\x60\x0c\x36\x87\x47\x7c\xeb\xcf\x3f\x08\x29\xff\x3f\x0e\xf6\x7f\x00\xac\xcd\x25\x95\xfd\x67\x6d\x33\xe5\x61\xfe\x8f\x35\xc9\x7a\x38\x59\x7c\x42\xca\xad\x48\xe6\x4e\x8a\x94\x6d\xe1\x82\x75\x3a\x29\xbc\xee\x26\xbc\xf0\x7e\xb0\xf4\x7e\xb3\xf4\x7e\xbb\xf4\x3e\xdd\x2d\xbc\xf2\xeb\xc2\xeb\x65\x90\xd1\xcb\x40\x28\xe6\xbf\x35\x8a\x80\xfa\xca\x32\x52\x53\x97\x85\x3b\xe2\x93\xc2\xeb\x8f\x87\xc2\xeb\xde\x12\x4a\x5e\x11\x87\xfd\x84\xe7\x23\x60\xc9\x83\x74\x9a\xba\x0e\xa2\xc9\x9e\x26\x96\x27\xc3\x0e\x03\xa2\x38\x39\xe2\x74\x3a\xce\x5d\x52\x1d\xa4\xa7\x0e\xe6\xbb\x88\x52\x5f\x5d\x7d\xae\x2d\x3a\x2f\x44\x4a\x7f\x1f\x0c\x79\xea\xc3\xf4\x21\x1f\xf0\xec\xb9\xcf\x99\x6f\x73\xc6\x58\xef\xa4\x54\x32\x94\xa5\xae\x79\x21\xe8\x35\xa1\xd3\xdc\xdb\xae\xba\x8b\x7c\x90\x41\xc6\x7e\x9e\x9b\xa1\x30\x5f\xee\x74\x06\xd8\x69\xd9\x01\x52\xec\xcb\xa6\x56\x1a\x81\x34\x4c\x99\x60\x3e\xc7\x20\x2e\xc3\xfe\xb8\x3f\x9e\x0d\xc4\x65\x98\x03\x43\xec\x3b\xb3\xd5\x5d\x52\xb2\xcb\x45\xe2\x7a\x48\x4d\x99\x46\x47\xdc\x51\xad\x47\x71\xdd\x3a\xcf\xfb\x94\x5c\x0b\x86\xfc\x65\x6d\xd8\x9f\x8c\x3b\x3d\xb1\x16\xf6\x87\x6b\x1b\x2a\x86\x65\x84\x0e\xda\x75\x6b\x30\xbc\x47\x6a\xa5\x00\x38\xe4\x5d\x94\x9a\x0f\x7d\xa0\x3d\x5a\xe2\x43\xe7\x3d\x17\x05\xe7\x3d\x29\x51\x71\x21\xcc\x69\xe6\x1e\x2d\x47\x6b\x1d\xe5\xb3\xcc\xf2\x59\x3e\xdd\x99\xb3\xa8\x70\x4c\x0d\xb2\x01\xe0\x45\x7f\x94\x40\x80\x3e\x16\xf2\xb6\x7e\x95\x77\xe9\x2e\xd2\x9f\x7e\x98\x77\xef\x65\xc9\xe8\x37\xf9\x30\x6f\xde\xb1\xd0\x32\x0d\xc3\x82\xf9\xfc\x6d\x61\x1f\xa1\xdf\x09\xe9\xa6\x27\x05\x9a\x52\xee\x3f\x7a\x06\x9a\x2b\xcd\xe7\x02\xfe\x90\xf9\xfc\xda\xe6\xe6\xa5\x80\x03\xdd\x67\xd7\x3d\xc3\x33\xc3\x4e\x92\x5c\x0e\xb8\xdf\x19\xa7\xe2\x23\xbf\x54\xe2\xe6\x7e\x5b\x66\x42\x10\x9f\x3d\x04\xf1\xd9\x73\x0b\x79\xa4\xab\x28\x8f\x5d\x02\xa0\xd1\x78\xd8\x8f\x05\x4a\x3c\x73\x71\x34\xb8\xd9\x8d\xf3\xbc\xff\x24\x49\x16\x40\x33\x2c\xf9\x76\x9a\x16\xfa\x56\xcd\x0b\x25\xc2\x7d\xe8\x3b\x53\x54\x2c\x5e\xee\xc9\x4f\x77\x66\x37\x7e\x4f\xac\x5e\x88\x3c\x2e\x7a\xd9\x2e\x81\x1b\xec\xf2\x15\xa3\xb8\xda\xac\x7e\xf5\x88\xef\xb7\x57\x56\x9d\xeb\x4f\xc6\x8b\x65\xda\x1f\xd8\x9a\x3f\xf4\x9d\xe3\xd7\xf7\xbe\x9b\x71\xa1\x06\xcb\x2a\xed\xaa\x04\x3a\x54\x78\x5f\xc4\xbe\x33\xa7\xe1\x87\x92\x5a\x5d\x96\x0f\xfd\xa5\x4f\xf6\x6a\xa7\xc1\x63\xcd\xd8\x86\x53\x03\x96\x53\xae\xba\xdc\x82\x3b\x56\x0b\x0e\x79\xe5\x8f\x32\x4d\x96\xac\xa5\xa1\xaf\xfc\xfe\xb0\x27\x86\x23\xd8\x44\x7d\x73\x08\xab\xd9\x37\x87\x33\xe6\xe5\x88\xff\x67\x5d\x0c\x0b\xb4\x39\x7a\x89\x58\xb5\xea\x5f\x0a\x19\x9f\xdf\x65\x44\x1d\xc8\x23\xce\xde\xfc\xce\xd0\x4f\x84\xb5\x82\x58\x4d\xb7\x5d\xa7\xbf\xeb\x1a\xdc\x39\x7f\x75\x81\xd6\xa5\xdc\x9c\xd1\x37\x18\x57\x8b\xa3\x6b\x32\xb2\xa0\xd0\xfb\xbf\x04\x61\x26\x13\x43\x97\xe5\xe6\x31\xd0\x80\xe7\x1e\x86\x12\x1b\x0a\x7f\xfc\xeb\xda\x1b\x30\x19\x74\x59\x6d\xad\x8b\x65\x81\xb6\xff\x75\xd9\x97\x42\xd9\x4e\x80\xe5\x72\x23\x7a\xd2\x4c\x27\x6b\x37\xca\xe2\x1a\xa4\x86\xfc\xf1\x17\x56\x5d\x9c\x34\x7f\x1d\xd0\xf8\x91\x2f\x6c\x99\xe7\xfc\xee\xa3\x3c\xdd\x48\xe7\x79\x17\xcb\x30\x53\xc6\x3d\x6a\x1a\x87\x4d\x14\xb4\x1c\x34\x8d\x56\x83\xf2\xf9\xfc\x54\x4b\x87\xbc\xf9\x7c\x76\x40\x30\x36\x2c\x90\xcd\xb0\xdd\x6f\x33\x21\x9f\x66\xdb\xda\xbd\x43\x37\x52\xf1\x98\x32\x29\x71\xda\xd6\xb3\xe6\xf2\x02\xf0\x8a\x35\x1e\x9e\x40\x2d\xa7\x4d\x8c\x14\x29\xab\x0b\x08\x15\xc4\x9c\x45\x46\x48\xcc\xfb\x47\x23\x82\xaa\x65\x1d\x5e\x4e\x01\x53\x36\xcc\x9b\xfc\xa6\x61\xba\x9e\xdb\xd1\x8a\x96\x11\xf3\x6a\x88\xa1\x3e\xb3\x1a\x3f\x6c\x52\xb6\x1e\x4e\x9b\x45\xcb\xbd\x9b\x2b\xa3\xbd\x4f\xec\x1f\x57\x86\x47\xaf\xf7\xe9\xcf\x01\x2f\x73\x33\xfe\x02\x68\xc7\x5f\xca\xac\xb6\x4a\x69\xf4\xbc\x70\xcb\x2b\xe5\xd5\x8f\x81\x0b\xc7\x74\xea\xa2\x56\xaa\xa1\x8d\x50\x9f\xbc\x13\x1a\x1b\x93\x5e\x20\xc2\x4e\x4f\x04\x1b\x8c\x29\xad\xc3\x5c\xe8\x16\x27\xea\xf7\x23\x53\x06\xca\x31\xc3\xfe\xb0\xcb\xc7\xee\xda\x8d\xe8\x0e\x12\x3e\x16\x6b\x43\xf1\x34\xe9\x0c\x45\xb0\x91\x05\xd1\x93\x52\x83\xff\x31\x9c\xea\x7f\x2b\xff\x5d\xfb\x6f\xd9\xdd\x24\xc6\x7f\x83\x32\xa9\x1b\xff\x35\xf1\x81\xd4\x0d\xe7\x7f\x46\x61\xd0\x99\xb8\x64\x2b\x2a\xba\xc5\x0c\xb4\x23\x5f\x3a\x92\xb4\x0b\x63\x07\x9a\x47\x58\x3b\x10\x4a\x73\xf9\x37\xd8\x4f\x7e\x83\xfd\xf7\xfe\x78\x4d\xf4\xfa\x93\xa8\xbd\x96\x76\x0a\x70\xd0\xa9\x0f\xdf\xaa\xcb\x26\xba\x3d\x17\x4d\xa7\x27\x05\xfe\xd2\x5f\x5e\xda\x8b\x0b\x22\x43\xb5\x5f\x34\xd9\xdb\xc8\x2a\xce\x96\x74\xbd\x84\x32\x1e\xa2\xcf\xd8\xe5\x7c\xce\x9d\x53\xf7\x1b\xf3\xeb\xdc\xe2\xac\x52\xdb\x91\xfa\x9c\x37\x82\x56\x49\x9d\x97\x8f\x3b\xc6\x48\x50\xbf\x02\x99\x88\x55\x78\x2b\xf3\x05\x0d\xad\xf7\xf3\x91\xbc\x05\x2a\x50\x38\xb1\x43\x6e\x08\x32\x9f\x0b\xac\xc8\x80\xf4\x29\x86\x39\x95\x57\xdf\xa1\x1d\xb2\xea\x37\x5e\xbf\x11\x56\x75\x47\x29\x92\x5e\x0b\x52\xbf\xce\xbd\x8f\x04\xa9\x8f\x84\x75\x69\x57\x77\x30\x3e\x42\xc0\xc2\x72\x80\x7d\xac\x1a\x11\x48\xf4\xf5\x68\x04\x76\xc0\xb0\xd6\xba\x54\xed\xe5\x2a\xa4\x8d\x95\xbe\x4a\x0c\x6c\xce\xfc\x0a\x94\xad\x84\xc0\xcb\xa6\xf5\xc9\x86\x63\x2d\xaa\xf1\x1c\x85\xb7\x69\x86\x9f\x98\xe1\xa7\xb0\x46\x82\x42\xb6\xe3\x0e\x5a\xa2\x96\x83\x5c\xc0\x46\x1a\xac\xe8\x17\xad\xfc\x98\x8e\xa0\x19\x1a\x31\x1c\x21\xb5\x2a\x51\x79\xaa\x2a\xcf\x62\x61\x5f\x34\xcd\x0e\xbb\x68\x9a\x01\x3c\x4d\xe4\x53\xba\x9e\xbe\xe7\xd7\x93\xed\x33\xaf\xe3\x4c\x7d\xd7\xf9\xee\xbb\xb6\xcf\x76\x3b\xd8\x2f\xc6\xa8\x6b\xf8\x04\x43\x37\xa0\xc3\x84\x75\xf6\x3c\xaa\xdf\x45\xd6\x73\xea\xb2\xfa\xbc\x69\xdc\x25\x9c\xfa\x74\xc9\x7d\xc3\x54\x1f\x6c\x9d\x50\x19\xea\x7b\xce\xa9\xbb\x8e\x01\xdf\xb3\x39\xec\xf7\x93\xfe\x70\xd4\xf2\x79\x22\xd6\x78\x2f\x58\x7b\xe6\xc9\x44\xa8\xf7\x7c\x40\x2b\x1d\xb5\x29\x11\xbd\x08\x3d\xc1\xa7\x91\x9a\x50\x79\xf8\x23\x90\x08\x42\x7b\xff\x12\x53\xee\x8f\x93\x19\xc6\x83\x52\xc2\xa5\xb5\x97\xb6\xe8\xad\xf5\xfa\xb2\x5e\x59\xa6\x33\x5a\x1b\x0c\xfb\xcf\x9d\x00\x57\x3e\x6e\x6d\x77\xa9\xdb\x97\xe4\x99\xdd\x7c\x10\x5d\x75\xbf\x6b\x70\x62\xf6\x83\x85\x14\x4f\xcc\x8e\x38\x73\xc2\x3d\x7a\xb3\xeb\xd2\x57\x78\x16\x7b\x54\xbe\xe6\xb6\xc5\xcb\x66\xda\x47\xeb\xdc\xbc\x4b\x0d\x86\xb8\x99\x3c\x3b\x55\x64\x5e\xbc\x6f\x0c\xbe\x38\xf8\x83\x91\x45\x0a\x99\xf0\x07\x93\x31\xf3\x8e\xcc\x5c\x75\x97\x21\xc9\x4d\x33\x7e\x34\xe0\x3b\x55\xe1\x63\x77\xb2\x19\x8f\xf9\x7c\x57\xe9\x7f\x54\xfc\xca\x36\xf5\xe1\x4f\xba\x13\xff\xec\x1a\x2a\x0f\xc5\xbf\x81\x4b\x0d\xaf\x82\xb5\x05\x2e\xd9\x42\xb8\x8e\xef\xa6\x29\x24\x47\x0d\xed\xea\xb9\xe0\x95\x4a\x55\x39\x5e\xf5\x9a\x8c\x5d\x5b\x2a\x19\x1e\x73\x66\x47\x78\x85\xe2\x39\x55\xd7\x25\x96\x07\x6b\xf4\x0b\xc3\xa9\x52\x7f\x3d\xe2\xd6\xec\x88\x4b\x3e\x6e\x3e\xdf\xfe\xc6\xb3\x88\xb7\x6f\x72\xba\xa0\x83\x78\x2a\xbe\x58\xce\x65\xc7\xf0\x88\xbb\xb0\xb5\x6b\x9b\x2a\xc6\x7d\x71\xb8\xec\x21\x2a\x58\x50\xf1\x95\xb5\x99\x58\x82\x01\x0d\xca\x83\xe8\x84\xc6\xb6\x44\x81\x48\x81\x15\x4a\xf7\xc4\x96\x21\xe3\xbb\xe8\x28\xfc\x9e\x8e\x4e\x87\xd1\xf2\xfd\x72\xb0\x29\xf4\x12\xd6\x90\x39\xc0\xf5\x16\x79\xd1\x70\x91\xa8\x44\xf4\x03\xc6\xcd\x96\x71\x34\x92\x0e\x2a\x82\x52\xa9\x8a\x91\xef\xc8\x1b\xea\x82\x61\x47\x05\xcc\x51\x96\x07\xd0\x4d\xe8\xf9\x44\xf2\xbf\x01\x86\x5a\xc1\x5b\x54\xe6\x39\x33\x97\x50\x9d\x1e\xc8\x96\xe3\x47\xf5\xcc\x3c\x53\xf4\x02\x92\x0b\x2f\x83\xb7\xaf\x7a\xfd\x34\x00\x03\x68\xb1\xcf\x6a\xb6\x2f\xa3\xef\xf9\xe5\x72\x8e\xdb\x0e\x1c\x7f\x29\x3b\x20\xec\xf8\xee\x4e\xe0\xf8\x30\x3f\x8b\x4b\x71\x77\xda\x19\x99\xb2\x2b\xd2\x25\xcd\xd7\xba\xfd\x5e\x7f\xdc\xef\x75\x7c\x9e\x24\xb3\xb5\x4e\xcf\x1f\x0a\x8e\xc1\xfe\x47\x62\xd8\x11\x70\x64\x2d\x7c\x16\x2c\x72\xae\x32\xbe\xc3\x2e\x78\x38\xe2\xd0\xf3\xf8\x7c\xa0\xaa\x96\x4c\x5b\xa0\x83\xe8\x8a\x52\x29\xf8\x26\x56\x21\xd1\xed\xf4\x7e\x00\x1e\x6b\xc6\x46\x39\x28\x6f\x90\x0c\x9d\xf1\x5a\xb7\x8f\x3b\x45\x9a\x95\x4f\xd3\xac\x02\xed\x75\x8c\x80\xdd\x0b\xae\x22\x93\x92\x52\xc9\xf0\x61\x34\x66\x2e\x0d\xa0\x3b\x5d\xb2\x90\x03\x78\x7c\x48\x6c\xf9\xf4\x3a\x42\x35\x80\x4f\x3e\xdb\x45\x15\x88\xa0\x70\x93\x0c\xdb\xa3\xef\x74\x67\x2e\xf5\x4d\xf1\x25\xbf\x71\x5e\x15\x55\x3d\x9d\x2b\xc8\xc3\x7e\x0a\x6e\xb4\x80\x25\xc5\xc8\x3b\xce\x93\x12\x6e\x1f\x09\x19\x05\xdf\xa7\x98\xd1\x79\xf5\x94\x7f\x9c\x80\x0a\xc6\x9d\xd1\xae\x8b\x21\x52\x1a\x82\x23\x56\x87\x82\x6b\xa7\xdb\xe6\xe7\x5d\x1a\x33\xee\xcc\x5e\x5d\x2a\x0d\x84\xae\x62\xc3\x77\xce\xd0\xf9\xe2\xe7\x00\xef\xdb\x85\x39\x2b\x1b\x51\x39\x71\x76\xdd\xad\x6d\xb2\x79\xfc\x68\x08\x73\x56\x09\xcd\x19\x8c\xc1\x2e\xbc\x4d\xe5\xf7\x61\xf6\x7d\x5a\x09\xcd\x29\xa9\xc8\x34\x1a\x38\x0d\xb7\x1c\xd3\xc0\xf1\x03\xb7\x12\x63\x2a\xf4\xcf\xee\xa3\xd1\xab\x48\xb0\x34\x30\xc7\xfd\x01\xe6\xb9\xf0\x65\x9e\x5d\xcc\x83\x0e\x1e\x62\x19\x5f\x68\x00\x9d\x35\x05\xcc\xce\x02\xb7\x5c\xd3\xda\xe1\x32\xe9\x73\x80\x5a\x57\x0f\x2a\x21\x30\xa7\xf0\x0a\xcf\xa8\xa4\x16\x98\xb3\xf2\xed\x2a\x5b\xe9\xeb\x54\x54\xa6\xb5\x30\xf7\x38\x06\x28\xe7\x66\x7f\x32\x06\x56\x89\x86\x88\xc5\xe0\x9c\x4a\xa5\xb2\xa3\xc4\x10\x66\xc8\x11\x61\xf3\x2b\x85\x67\x68\x58\xfa\x7c\xe1\x67\xcf\x0d\x78\x24\x34\x66\xc2\xfc\xfc\x68\x87\xc8\x2a\x47\x90\x5a\xa3\x11\x64\x24\x76\x68\x4e\xc3\x42\x52\xa5\x46\xf1\xdf\xbf\xab\x74\xfb\x5f\x55\xd4\x0f\x0d\xcd\x80\x63\x1e\x1a\x61\xad\xb5\xa5\x62\x32\x11\x8b\x41\x11\x59\x28\x5d\x13\x71\xa9\x04\x67\x81\x39\x63\x4c\xe3\x4d\xb2\x8b\x87\xaa\xfd\xe5\x5b\x62\x97\xcb\x09\xc1\x5a\x62\x27\x71\xcd\x29\xe0\x8f\x4f\x33\x40\x5f\xd7\x0f\xa3\xa7\x6a\x4b\x11\xc8\xa5\x29\x0c\xaa\xf4\x3f\x05\xac\xfd\xc0\xd5\x0d\x5b\x2e\x95\x6b\xee\x7f\xd0\x86\xea\x97\x88\x63\x7f\x01\xe2\x7f\x13\x69\xe9\x0b\xd8\x16\xcc\x81\x51\xf3\x7a\x86\x64\x83\x6f\xdb\xf4\x93\x14\xb1\x58\x9d\x3d\x3a\xe1\x56\x6d\x41\x68\x21\x87\x4c\xae\xd2\x7d\x61\x99\x7f\xfe\xea\xe3\x1f\x0b\xe2\xaa\x3b\x33\x81\xdb\x2a\xd0\x7e\x91\x5d\xa9\x44\x24\x66\x9e\x39\xe2\x46\x48\x85\x13\xb9\xc0\x26\x79\xe6\x61\xd7\x88\x69\x44\x23\x19\x8f\xf0\xf6\x04\x4b\xca\xe8\x7f\xdc\x79\xda\x75\x75\x04\x40\xa5\xfb\x03\xcb\x12\x52\x43\x97\x46\x2c\x36\x1b\x6d\x0c\x9a\x8f\x93\x13\x57\x3e\xec\x40\x34\x72\x8e\x5d\xa5\x23\xd4\x6a\x58\x11\x8b\x9c\xcf\xae\x1d\xb3\x18\xff\x38\x83\x5d\xb7\x54\xf2\xcc\xb6\x67\xe0\xb3\x9c\x90\x54\x3f\xc3\x98\xa5\x2f\x72\x69\xae\xc8\x25\xd7\x63\xbe\x48\x84\x2f\xde\x70\x32\x6a\x53\x21\x4f\x09\x18\x91\x64\x27\x76\x9e\x67\xd8\x8a\x44\xab\x71\xf7\x58\x84\x69\x89\x4b\x07\x2c\x56\x8f\xb6\x6a\x60\x2f\xc3\xfd\x76\x64\x79\x66\x2b\x30\x7a\xce\x67\x57\xf2\xfd\xe6\xf4\x73\x7d\xa0\xf0\xb2\x06\x0a\xa7\x81\x46\xa1\x46\x77\x4f\xe1\x3f\xe6\x9f\xba\x54\x60\x81\x82\x3e\xd2\xcb\xa9\x85\x2d\x7f\x57\xf6\x93\x06\x5b\xc9\x7f\xc2\x66\xa6\x79\x00\x6e\xda\xc2\xc5\x42\x4e\xc7\xc8\xec\x04\xa5\x92\x11\xb1\xd3\x2b\xc3\x69\x1f\x50\x78\x77\x61\x60\xbd\x3e\xda\xf2\x16\xaa\x17\xa7\x6a\x34\xa8\x1c\x0d\xb5\xbb\x0e\xce\x69\x82\x9b\x40\x8c\x32\x30\x73\x5a\xa5\xea\x69\x56\x25\x34\xc1\xc9\xac\xbe\xd4\xd2\x2f\x35\xa8\x64\xc4\x8d\x84\x46\x19\x52\x72\xf7\xa7\x79\x56\x21\xe7\xae\x30\x6f\x2a\x32\x65\x7c\x3e\xaf\x2a\x87\x85\xcc\x9b\xcf\xab\x8b\x13\x6e\x34\x97\xcd\xbd\x72\xc7\x52\x53\xa9\xd6\x4e\xa5\xd0\x7b\x56\x30\x80\x69\xe5\x98\x78\xf4\x99\x79\xf2\x4e\x76\x1b\xc8\x43\xa7\x8e\xbf\xd6\xdb\xd4\xaa\xd2\x99\x55\x5d\x50\xc1\xc6\xe7\x86\x67\x4e\xcb\x81\x39\xa5\x40\x33\x51\x6e\x9e\xa1\x10\x16\xd3\x67\xe5\x00\x05\x4e\x1e\x77\x66\x48\x60\x9e\xfa\xb9\x5b\xbf\x99\x0b\xdb\x80\xe8\x05\xf3\xb9\x87\x2f\x48\xc1\x60\xbc\x59\x4b\x6d\xcb\x90\x4e\x31\x0f\xc5\x8f\x14\x4a\x11\xf4\xc2\xd0\x02\x7a\xfd\xb1\x93\xc2\x7b\xe8\x1a\x05\x46\x65\x5f\x13\x63\xda\x60\x43\xb2\x78\x95\xfc\x55\xfc\x81\xbe\x4f\x54\xa4\xfa\x7c\xbe\xee\x29\xfa\x51\x05\xcc\x0c\x98\x3f\x9f\xef\x1f\xa5\xa2\xd3\x9f\x8f\xef\xe2\xb4\xcb\x83\xd7\x03\x2a\x5b\x15\xf5\x3b\x06\xba\xe4\x98\xcf\xcd\xea\xd7\x6f\x2c\x40\xb5\xd2\x45\xae\xde\xc3\x42\xbd\x55\xc6\xb8\x39\x9d\xcf\xab\xd0\x03\x53\x4d\xbf\xca\x3e\x56\x1f\x4b\x25\xf9\xb1\x5e\xb5\x64\x42\x9d\x9b\x33\xcb\x33\x67\x64\xd3\xdf\xfa\x73\x61\xfb\xcc\xc7\x68\x6f\xdd\x4e\x4f\x79\x9a\xe5\xe6\x94\x28\x87\xb8\x00\x14\x86\xc4\xe0\xe6\x6c\x8b\x9b\xd3\xb2\x67\xce\xb6\x20\x71\x6b\x5b\x37\xab\xba\x03\x30\xdf\xa6\x96\x4f\x67\x96\xbf\xe9\x2d\x60\x8c\x2b\xf0\x52\x81\xb7\xdc\x6d\x46\x86\xb9\x9a\x17\x66\x12\xc9\xe3\xd5\x93\x4f\x8a\x0e\x0f\xb0\x3d\xa9\x1c\x04\xc6\x73\xff\xdc\xa8\x62\xc8\x50\xa6\x2c\xc2\xb7\x90\xd3\x3e\x38\x37\x54\xf8\x31\xf4\x4b\x57\xdb\x82\xbd\x35\x97\x00\x34\x2d\xc7\x27\x7f\xeb\xcf\x9c\x18\x2a\xa3\xbb\x6f\x0a\xca\x72\x3e\xf3\xeb\x87\x47\xdc\x3a\x3a\xca\x2b\x55\x60\x18\xf7\xaa\x1d\xc9\x28\xb1\xe5\xb2\xd6\x14\xa6\x89\x2d\xea\x46\xcc\x1a\xd8\xb0\x88\xd6\x60\x6b\x4f\xd2\xd7\x0a\xbc\x13\xcb\x88\x59\x50\x37\xa2\x72\x8d\xfc\x0f\x94\xb7\xa2\x72\x8d\x26\x90\x04\x6f\xe5\xa8\x92\xa6\xc3\x91\x98\x9e\x75\xf2\x21\xd1\x0f\xdc\x89\xdc\xec\x39\xc9\x3d\xc7\x2e\xa0\xe0\x1b\x87\xd0\x15\x91\x4b\xe1\x2b\xa1\xf8\x16\xc3\x5b\x04\xbb\x12\xa1\x18\x54\xde\xd1\x99\x62\x42\x0f\xd2\x47\x57\xc5\x21\x97\xb5\xd4\x65\x4e\x78\x94\x1d\x49\xb3\x47\x97\x58\xf8\x55\x3a\x4a\xd4\x32\x9f\x6c\x84\x1b\xef\xef\xd8\xbd\xb2\x8f\x3d\x29\xdd\x45\x18\xa2\x8c\xec\x13\xb6\x98\xd8\x02\x2f\x56\xaa\x3b\x40\xa0\x0b\xd9\xbb\x29\x53\x01\xd8\x88\x94\x67\x15\xb6\x28\x33\xdf\x5e\x05\x65\x91\xbf\x90\xc9\x06\xf6\x36\x25\xe5\x7c\x58\x87\x7a\x49\xde\x17\x58\xf5\x6c\x89\xc3\xa2\xfb\xc6\x53\x2d\x51\x34\xb7\xa9\x4b\xbe\x0e\x96\x4d\x50\xaf\x5a\x9e\x13\xb8\xc8\xce\xee\xf0\x8a\xe7\x04\x95\x1a\xbc\xd5\x03\x2b\xa8\xd4\x72\x37\x08\x4b\x93\xdc\x0e\x70\x3a\xdb\x0a\x09\x64\xb1\x25\x93\xcb\x77\x18\x32\x96\xba\x89\x3e\x53\x28\x07\x84\x3a\xd2\x31\x8f\x13\xb8\x92\xfd\x16\x4c\xa2\x52\xf1\x69\x28\x4b\x01\x6f\x0a\x3b\x87\x80\x4c\x34\x66\x61\x25\x42\x0d\xd9\xb1\x6b\x18\xbc\x12\x92\xad\x18\x29\x8b\x4a\x58\x49\x36\x63\x5b\xc0\xe6\xfc\xf8\x68\x78\x40\x26\xbc\x17\x54\x38\xdc\x09\xdc\x4a\xe4\x2e\xa0\x0c\x62\x21\x68\xea\xaf\xc3\x91\x55\x97\x93\x4d\xbf\xcc\x69\x58\x4e\x36\xe3\xb2\x70\xb8\x0b\x1c\x67\xd6\xee\x1f\x69\x77\x67\xd6\x5c\x8e\xab\x38\x62\x8e\xec\x70\xe0\x08\xe0\x45\xcf\xe1\xa4\x12\xb9\x93\x2a\x93\xe8\x17\x0c\xf5\xd4\x24\x00\xbe\xab\x8e\xbf\x16\x87\x3d\x2a\x37\xc4\xa7\xf9\xe9\xe6\x2b\xe9\x94\xcf\xaa\xc4\x46\xc5\x23\x25\x18\x84\x89\xe6\x33\xaf\xe2\xdb\x59\xdc\xf7\x2a\x0d\x59\x75\x87\xf9\xf5\xaa\x14\x14\x44\xac\x4a\x63\x56\xa5\xd2\xad\x1b\xed\xc9\x5b\xef\x74\x4a\x4a\x8d\x79\x98\x8f\x80\x01\x1d\x31\xc4\x14\xa6\x67\x65\x40\x23\x16\x95\x07\x30\xb0\xd1\x0e\xf3\x89\xdc\x31\x44\xb9\x46\x27\x4c\xee\xa9\x7e\x25\xa2\x23\xa0\xfa\xa3\xf2\x84\xf6\xd8\xa0\x3c\xc1\xcc\xdf\xbc\x74\x6e\x7f\x63\x41\xfd\xed\xbe\x6f\x09\x9a\xf0\xd1\xd8\x4a\x68\xef\xdc\xf2\x2a\x46\x54\x19\x90\x85\xa5\x74\x53\x42\x79\xb6\x41\xb6\x50\x66\xeb\x41\x36\xbf\x12\x2f\x6c\x5d\x93\x87\x35\xd9\x51\x99\x4d\xec\x04\x2b\x12\xe5\xb2\x5a\x1e\xef\xe1\x47\xb9\xad\xf9\x2c\x9b\xb5\x1c\xcf\x71\xea\xcf\xe7\xaf\x8f\xc4\xee\x3e\x1a\x3c\x6f\xa0\xe7\xaf\x8e\x96\x0d\x33\x24\xa0\x21\x33\x70\x22\xf9\x64\x53\xa0\x20\x75\x87\x79\x04\xf8\xd5\xc0\xa5\x5e\x85\x85\xd2\x0a\xc6\x2f\x33\x6f\x4b\xd8\x18\xaa\x17\x48\xa4\x85\xc6\x70\x32\xe2\x96\x8f\xb8\xe5\x05\x23\x77\xef\xae\x8b\xf3\xc3\x8e\x32\x20\x51\xf0\x66\xe3\x31\x61\xf6\xce\x6d\x9f\x3d\xc2\x79\x5b\xa5\xc2\xbc\xef\xc3\xc1\x71\xdb\x31\xfc\xa5\x3b\xcb\xf4\x78\xef\xf2\x29\xa4\x98\x77\x28\x37\x5c\x50\x65\x86\x17\x42\x5f\xf8\xf4\xe4\x88\x13\xbb\xba\x13\x4a\x91\x4b\xe8\x84\x4a\x6a\x22\x4c\xe8\xcf\xac\x7b\xe4\x21\x11\xd8\x11\xf4\x8c\x60\x67\xc8\xe3\xaf\x14\x0c\x72\xa8\x29\x72\x81\xfa\x22\x1a\xe1\x62\x90\x56\x14\x1e\xc7\xe5\x32\x09\x9d\xd8\x2d\xab\x01\x16\xe6\x64\xc4\x29\x6c\xec\x69\x79\x7d\x66\x7a\x44\x76\xe6\xfb\x4d\xf9\x67\x41\x78\xa0\xba\xf3\xb9\xdf\x09\xd6\xaa\xea\x0f\xa1\x01\x7b\x5b\xd8\x0f\x45\xf2\xc4\xcb\xe2\xa6\xc6\x62\xa6\x4e\xa6\x00\x6b\x35\xe0\x0f\x73\x5c\x62\x7b\x18\xb5\xa1\x54\x82\x04\x94\x76\x39\x9e\x9b\x8b\xed\x19\xe4\x06\xf2\x3c\xbd\x81\x4d\xb5\xe3\x60\x84\xf4\x05\x03\xad\x01\x1a\xe9\x96\xe1\x4b\x21\x9a\x0e\x5f\x1d\xea\xc5\xe4\x08\x38\xd4\x4e\x5d\x42\xa3\x2c\x09\x83\x32\x63\x62\x28\x47\x1d\x2f\x82\x3b\x8f\x46\x40\xc3\xf4\x7c\xc8\x6d\x34\xf7\x4d\x25\x7f\x06\x82\x48\x4f\x9e\x2a\x06\x81\x93\xb2\xfc\x74\x30\x60\x96\xd6\xfe\xfc\xe6\xd9\xe5\xb2\x94\xc9\x6a\x52\x10\x35\xa2\x38\x21\x3b\xb5\xc3\xca\xbf\x36\x53\x20\x9e\xcd\x37\x59\xad\xaa\xeb\xac\xfd\x99\x55\xfa\x90\x23\x95\x05\x6e\x18\xd5\x6f\x59\xed\x9e\xd3\xf6\x5d\xa3\x4a\x3d\xe7\x2e\x70\x8d\x5b\x41\xf2\x38\xbc\xfb\x58\xae\x11\x0a\x4b\xd1\xdf\xe1\x28\x89\xf3\xca\xec\x45\x64\x17\x64\x69\x9d\x9f\x9b\x85\x89\x8e\xb6\xcf\x75\x87\x97\x6f\x45\xd9\x73\xad\x0f\x83\xf6\xe3\xf7\x3c\xd1\xc9\x5b\x4b\x17\x3d\xd5\x6f\xc0\x3a\x7c\xf3\xe5\xae\xc4\x1d\x0f\xce\xc2\xdc\x60\x5f\x64\x6b\x34\x6f\xec\xe4\xc0\x51\xc5\x5b\xc0\xaa\x54\x6a\x70\x08\xc4\xa5\x12\xde\x11\xbe\xf5\x6f\xad\x98\xc6\x5d\x2b\x36\xe3\x6e\xb9\x46\x9f\xce\xe1\x58\xa5\x83\x5b\xb9\x3f\x0f\xcf\xe5\xdf\x27\xf9\xbe\x20\xb6\xa1\xe1\x50\x51\xa9\x11\xf2\x31\x18\x2c\x97\x83\x23\x2a\xb5\x3c\x18\x3f\x87\x8e\x04\x14\xc2\x26\x56\xa9\xb9\xd4\x73\x44\xa5\xe6\xe6\x41\xfb\x00\xda\x37\xe3\x6e\x0e\x3f\x80\x97\x81\x05\x5a\x00\x77\xcd\x68\xf5\x56\xc3\xcd\xb8\x5b\xf1\xcc\xb8\x9b\xad\x91\xea\x4e\xe4\x9c\xba\xf5\xc8\xa9\xba\x16\x54\x82\x88\xc6\x5d\xab\xba\x0a\xfb\x42\x2f\xe4\xfa\xfb\xfb\x32\x6d\xed\xcf\xe7\xab\x11\x60\xcc\x03\x9a\xdf\x71\x97\x8e\x43\x2e\x23\x26\x33\x15\x32\x19\x16\x1a\x83\x9f\xf9\x3c\x97\x55\x9e\x93\x28\xe0\x8e\x76\x58\x8c\x3b\x1d\x64\x82\xed\x20\x1b\x72\x41\x23\x1a\x90\x05\x9a\x74\x78\xf0\x13\x33\xdf\x09\x5d\x27\x76\x95\x14\x19\x46\xc7\x8e\x6d\xa2\xa8\x5d\xf3\xe9\xbc\x54\x02\x7a\xd5\x7c\x3a\x77\x59\x6c\x0e\x6e\x89\x56\x31\x36\x87\xf0\xc9\x73\xe0\x01\x3e\x3d\xdd\xc2\x49\x1a\x9b\x7d\x2d\xbe\x7b\x83\x11\xa1\x97\xff\xb6\x38\xbd\xfa\x77\xf1\xe4\xb8\xcc\xfa\x24\x4d\x0b\x72\xbc\x93\x3c\x59\xfd\x6c\xfd\xa3\x1f\x64\xa6\x48\x2d\x79\xbb\x95\xdb\x1f\xb4\x21\x6c\x28\x19\xb4\x9c\xac\x3c\xcd\x51\xae\xd9\x9e\xfc\x8e\x71\x6e\x72\xa7\x12\x63\x5e\xdd\xd7\x57\x85\x95\x80\xec\xb0\x8c\xa7\xac\xfb\x96\x5f\xae\x2d\x52\x2e\x12\xb9\x1f\x1c\x0f\xf9\xe4\x65\xb7\x1b\xf2\x84\xcb\x06\x0e\xd5\x67\xf1\xa8\xa6\x11\x9c\xcd\x14\x78\x12\x7f\x47\x96\x8d\xe4\x4d\x04\x91\xef\xa5\x92\x11\x33\x98\xdb\x3e\x9a\x58\x29\x22\xd4\x48\x10\xdf\x08\xd2\x74\x3e\xfd\x2d\x66\x2c\xa9\x1b\xa8\x7e\x2b\xef\x2d\xac\x98\xfa\x87\x96\x4f\x83\x43\x2b\x5a\x10\xea\x97\xcb\x14\x26\x80\x95\x56\xa0\xfc\x52\xcd\xe7\x91\xc4\x7a\x3e\x8f\x77\x12\xf2\x11\x0c\xb9\x04\x01\x0c\xb1\x52\x7c\x24\x88\x04\xef\x90\x65\x33\x92\x9d\x98\x00\xd9\x9f\x83\x91\x00\x0c\x79\x45\x22\x51\x01\x34\xec\x4f\x52\xc8\x24\x97\x8c\xa4\xe0\x1e\x0c\x91\xad\x43\x9f\xbc\xa9\x21\x37\xfd\xc3\x3a\xfc\xb0\xc0\xf0\x9d\x7e\xe0\x52\x4e\x7b\xc4\xea\xe1\x07\x5b\xe7\x09\x20\x4f\x90\xe5\xf1\xe8\x80\x58\x03\xfc\xb0\xc8\xf9\x3b\x4b\xa7\x96\xd7\x5a\xe1\x67\x93\x13\x18\xd6\xcf\x1d\xb4\x63\xd2\xe2\x01\x7d\x81\xb6\x5e\xcd\x4a\x5f\xe5\x69\xd9\x6c\x80\x6b\xa8\x1e\x5d\x3b\xfc\xf2\x2d\x44\x71\xa0\xda\x47\xaf\xb3\xb5\x06\xeb\x21\x7b\xad\x02\x03\x7a\xa0\x18\xd0\x00\xbe\xc9\x97\x58\xd1\x4a\x49\xa9\x14\x4b\x4a\xc1\xe6\x2c\xb2\xc5\x26\x33\xff\xf3\x9f\xc5\x7b\x1d\xa4\xeb\xf7\x9c\xdc\xdb\xc2\x6e\x15\x24\x18\xa8\x87\x92\x51\x2d\x21\x95\x82\x3f\x4f\x0b\xfd\xe4\x70\xe0\xb1\x95\xb8\x24\xc3\xc8\x37\x62\xda\x23\xb6\x90\x5a\xe8\xb9\xae\xcc\x96\xae\xdf\xca\xad\xd3\xec\x0a\xbe\x65\xb4\xe0\xc8\x7a\xec\x00\x4b\xab\xef\x25\x6b\x6a\x53\xa9\xaa\x89\x8f\x07\x62\x4e\xa9\x1b\x26\xfc\x5b\x20\xe9\x82\xa0\x5c\xa3\x3e\x10\x83\x41\xcb\x08\xd4\x95\xa7\xdc\x69\xb2\x55\x0c\x2c\x9b\xbf\xe0\x69\x81\x8c\x98\x91\x03\x9c\x75\x92\x4a\x78\xcb\x2e\x52\x0b\xd4\x5e\x6e\xd7\x4d\xf0\x9b\x39\x45\xd7\x37\x4b\xb7\xac\x8e\xef\x9a\x33\xdd\x18\xc3\x87\x0a\x53\x31\x48\xa0\xae\x1b\xf3\xab\x1f\x09\xea\x4a\xcd\xb5\x03\xa4\xac\x35\x76\x7b\xe7\xa8\xa3\xb3\x7b\x6e\xf8\xe6\x94\xfa\xe6\x8c\x06\xe6\x94\x06\xe6\x8c\x50\xc3\xab\xf8\xe6\x94\x6c\x19\x81\x39\xc5\x27\x62\xce\xf2\xf2\x41\xf4\x4b\xa5\xb6\xd3\x34\x5e\xf1\x2a\xe5\x2c\xbe\xa0\x9d\xde\xb3\x18\x8e\x56\x6a\x8c\xf1\x45\x8e\xa3\x68\xe5\xcd\x5a\x6f\x64\xac\xb2\x5f\x56\x21\x3b\xe0\x16\x23\x1a\xad\xa6\x4a\x9c\xc1\x93\xbb\x58\xda\x55\x59\x50\xe7\x56\xe0\xf0\xa1\x5b\x86\x7d\x15\xb2\x90\xcd\xc0\x3c\x3a\x5c\x8d\xe9\xdf\xa8\x84\x0f\x57\x57\x02\x03\x62\x1e\x1d\xd6\xb1\x0e\x0b\x7f\x65\x95\x7c\xe8\x92\x2d\xac\x32\x7f\xf8\xc8\x26\xbf\x65\x34\x9c\xe3\x02\xc5\x46\x65\xd8\x56\xcd\x17\xeb\x9b\xe2\xd4\x3f\x86\x00\xae\x3e\x34\xa3\x1e\xc7\x18\x57\x33\x34\x9c\x45\xe9\x65\xc2\xa2\x2d\x23\xac\xc4\xda\xfb\x1f\x4e\x8f\x75\x16\xd7\x8d\x80\xbd\x8d\xfa\x93\xa1\x0f\x7b\xeb\x98\x0f\x23\x31\xb6\xe2\xb2\x4f\x8f\x0e\xad\x64\x41\xa5\xa9\x30\x21\x96\x11\x30\x4f\xb1\xf2\x2e\x05\x74\x59\xa2\x6c\x65\x75\xe9\x30\x57\xba\x1c\x41\x79\xa0\x65\xfc\x32\x8b\x2a\xb2\xe2\x80\x85\x8b\xf7\x34\xe6\x6d\x76\xcc\x7a\x72\x11\x68\x80\x9e\x06\xe8\x01\xb0\xea\x62\x05\x77\x11\x32\xdf\xe0\x40\xcb\xfb\x39\xad\xb4\x70\x27\xaa\x57\x6a\x56\xf8\x2d\xaa\xd7\x2c\xe0\x90\xaa\x68\x4e\xe1\xb1\x8a\x57\xd9\xce\xe8\xa6\x6f\x5e\x46\x7d\xe6\x04\x11\x7f\x7b\x36\xb7\xcd\xa4\x1f\x19\x9c\x6c\xb5\x9d\xdb\x57\xf7\x97\x53\x5b\x1a\x95\xd4\xaa\xa8\x82\x98\x67\x4e\xf3\x12\x8b\x55\xb5\xe5\x04\x4c\xdf\x78\x5d\xd6\xe8\x6d\xe9\x3a\x2d\x6f\xa7\xc2\xeb\x15\x99\x5c\xc9\xa5\x57\x57\x60\x93\x81\xaa\xee\x78\xf5\x14\x23\x8f\x6c\x72\x0b\xfa\xa2\x92\x26\x55\x64\xda\x62\x81\x5a\x27\x3f\x8f\x38\x7b\xfb\x3e\xe3\xd6\xd3\x09\xed\xce\xb8\x75\xdf\xa0\x7b\x33\x6e\x9d\x1d\xe7\x43\x1c\x2d\xd1\xf7\x40\x16\xf7\x0d\x4e\x7d\xfa\xf3\x88\x13\xa0\x50\x4e\xe4\xa0\xd5\xef\x1b\xd6\xd3\x49\x8e\x93\xca\x06\x7f\xc9\x4a\xfd\xe9\xc4\xd2\x6b\xea\xd1\xf0\x49\x1d\x77\x19\x0b\xb6\x05\x5f\x85\xdb\xbb\x6f\xe8\x1c\x38\x66\x32\xf1\xec\x58\x27\xde\xa1\x23\x12\x3b\x10\x21\x9f\x24\x63\x9d\x8a\x60\xf2\x6a\xa0\x0f\x72\x08\xbc\x8e\x33\x7d\x72\x8d\x82\x2d\xc1\xb0\xff\xb2\xc6\x6d\xe0\xe6\xb1\x23\xc2\x56\x4e\xcd\xe6\x33\x4e\x13\x69\x1c\xe0\x75\xcc\x0b\x31\x1a\xf1\x48\xec\xb7\x79\xaf\x27\x12\xbb\xa0\x66\xa7\xf5\xec\x78\xa9\x94\x4b\x5f\x4f\xd3\x3d\x5e\x2a\x79\xdc\x1c\xf4\x47\x63\x05\x06\xde\x9d\xdb\x27\x17\x3d\x70\xe6\x50\x92\xd5\x09\x8e\x9e\x9a\x86\x0d\x62\x37\x39\xba\xd8\xa0\xd7\xe8\x79\x75\xe8\xb3\x4b\x5b\x70\x27\xf2\x5d\x15\xc8\x42\x6e\x1d\xdc\x39\x9d\xb9\x94\x33\xcf\x39\x0f\x5c\x9b\x3b\x17\x4f\x32\x0a\x8d\x98\xb9\xc6\x25\xc6\xf3\x48\xc3\xd1\xf8\xec\x78\xc8\xcb\x6d\xe7\x18\x25\xb7\xb0\xe4\xa7\xbe\xeb\x1c\x3d\xb9\x8c\xb5\x27\xbc\x7e\x25\xac\x34\xa5\x7c\x10\xf1\x32\xbe\x99\xed\xfe\x68\x4c\x39\xfb\x69\xe4\xa7\x3e\x3a\x35\xb9\x98\xba\xb8\xd3\x70\xe7\xb3\x0b\xb4\xf2\x58\xfa\x6b\x19\x8e\x6b\x66\xbf\xd7\x95\xad\x35\xc8\x42\x39\xa5\xf0\xa0\xd1\xc6\x59\x9b\x53\x8e\x7e\x81\xb2\xdc\xa9\x75\x09\xbc\x6d\xb3\xb7\x5c\x67\x59\xb9\x0e\xf2\xf2\xbd\x88\x17\x5a\x8b\xc5\x62\x59\xf1\x31\xeb\xf9\x82\xfe\x28\xa7\x3e\x7b\x5b\xd0\x80\xf9\xb6\xb7\x8c\x22\xfb\x94\xab\xc4\x67\xbe\xf3\xa4\xf4\x9a\x38\xd0\x73\x11\xb7\xf1\x57\xd2\x8c\x30\xbf\xd2\x9d\x28\xd7\x1f\x07\xdc\x08\xe8\x5b\x10\x71\x8b\x2f\x90\x84\x40\x20\xb2\xaa\xed\x02\xde\x55\xa2\x65\x5a\x2b\xb1\x16\xbc\x54\x7a\x9c\x72\x20\x0f\xd5\x54\x98\xb5\x49\x7d\xf9\x98\xf2\x58\xf6\xd1\xbe\x1e\xe4\xa5\xd6\xe4\x0d\xdf\x65\xdc\x6a\xcf\x79\x14\x2e\xba\x6b\xf2\xd0\xf3\xaa\x6a\x82\x2d\x5b\xb3\x20\xb9\x09\xe5\x91\x45\x61\x73\x53\x6b\x86\xc3\x02\xc9\x3b\x56\x54\x64\x4d\xbb\x35\x9f\xf3\x06\x5e\xcb\xb4\xe6\x73\xa3\xdd\x32\x08\xed\xb4\xd8\x7a\x95\xd8\x8f\x2d\xbc\x06\x10\x2f\x6b\x5e\x43\x4a\x75\xe4\x12\x6b\xb7\x72\x7e\xfc\xa1\x28\x2a\xf9\x75\xcc\xab\x61\xbf\xdb\x19\xc1\xba\x48\x9f\xcd\xa1\x18\xf5\x93\x67\x91\x5b\x84\x4b\x5f\x0c\x62\xb7\x5b\xf9\xe5\xc3\x9d\x64\xd7\x35\xfc\x06\x6c\xc2\xa8\xeb\x57\xfc\xac\xc6\xb3\xc1\xed\x61\x07\x2a\x1d\x89\xf1\x49\xb7\x2b\x82\x0e\x1f\x0b\x52\x5f\x4a\x30\x38\xb1\x8c\x10\xda\x15\xb6\x18\x6e\x06\x84\x86\x2d\xf4\xef\x87\x2d\x81\x86\xd6\xe8\x63\x0b\x19\xe5\x94\x2c\xc5\x26\xc1\x99\x0e\x3d\x90\x8a\x86\x39\x7b\x6c\xd9\x2a\x6b\x4e\x6e\xe4\xc9\xf3\xdd\xd3\xe7\x3b\x10\x6e\x9e\x6b\x8f\x87\xb3\x37\xdf\x4c\x9e\xd1\x98\xc8\x77\x1e\x77\x5d\xed\x52\x2a\x20\x6f\xb0\x9b\xe1\xa4\xc7\xfa\x73\xcc\x85\xea\xe6\x37\xa5\x72\x98\x6a\xb9\x8f\xfc\xfe\x40\xb0\xbc\x4e\x74\xd0\x90\xc6\xd6\xe8\xbb\xad\x2d\x7a\x0c\xb5\xa2\x93\x5d\xd8\x39\xce\x5c\xf3\x73\xd4\xef\x47\x7f\xdd\xb4\x45\x8f\x7b\x89\x60\x79\x1e\x44\xc8\x92\xd2\x3c\x2a\xe5\x55\x00\x5f\xf5\xb2\xce\x97\x8a\x2b\xc4\xd3\xa3\x69\xbd\x96\x9f\x48\x71\x2b\x87\x73\x9f\xa9\x5b\xe7\x9f\x23\x26\xc5\x8e\xca\xaa\x4c\x85\x14\xbd\x0f\x72\xa6\x66\x17\x2d\x99\x78\x59\x63\x0a\x83\xcc\xb9\xa0\x8d\x1d\x57\x14\xab\x26\x2d\xc3\xa7\xdb\x68\x58\xf0\x2e\xf9\x0b\xc5\xe0\x15\x69\x17\x27\x2d\x69\x39\xf7\x05\x77\x97\xb8\x95\xf6\xd3\x47\x3a\xcd\x0d\x15\x27\x6a\xd8\x91\x1e\x03\xa5\x2c\xa6\x63\x78\xa4\xee\xc9\x17\x9f\x2c\x6c\xe8\xf6\xb8\x45\xec\xe6\xc0\x40\x98\x05\x44\xaa\xca\x20\xad\x5f\x2a\x45\x2d\x63\x69\xce\xca\xed\xab\x0b\x93\xcf\x8e\x1a\x69\xf0\x37\xb5\xa9\x16\x02\x56\x46\x8d\x4c\x83\x16\x2f\x73\xfb\x04\x8d\xab\xef\x83\xcc\x1a\xe5\x3e\x40\x41\x86\xf9\xdc\xcb\xdf\xc5\x54\xa9\x60\x15\xe4\x26\x69\x64\x47\x0c\x3e\x3b\xa1\x54\x31\xe9\x84\x46\xc4\x22\xf3\xbe\x05\x4f\x01\x30\xf5\x0c\x35\xa2\x05\x0b\x09\x95\x97\x73\xb5\x9d\x40\x71\x8d\xf2\x1d\x2a\xf7\xa1\x35\x78\x4d\x06\x58\xf9\xd4\x43\x1a\x13\x01\x27\xc2\x35\x04\xad\x11\xf4\x81\x81\x1f\x03\xfa\x05\x36\x09\xbd\x70\x13\x98\x19\x5f\x0a\xcc\x54\xa7\x91\x5a\xbd\x3c\xf7\x4a\x25\xf8\x45\xf6\x7f\x7b\x1d\x9a\x59\x2a\x7d\xc1\xbf\xf3\xf9\x23\x4e\x52\x1b\xbe\xcf\xe7\x06\xfc\x41\x41\x34\xe6\x47\xdb\x86\x1c\x79\x16\x36\xde\x73\xb1\xf7\x2d\x39\x66\x0f\x42\x8d\xe4\x67\xf5\xb0\xb0\x85\x79\xdf\x92\x3e\x7c\x72\x63\xc4\x81\xcb\x15\xe6\x83\xe0\xcc\xab\xe7\x65\x09\x7a\x56\x0a\x79\xa7\x15\xa0\x4d\xb4\x21\xf4\x4c\xeb\x91\xb7\xc8\xe8\x91\xc5\xc2\xe2\xb6\x30\x3f\x0b\xce\xfc\x7a\x9e\x96\xcb\x8a\xfb\xb2\xb8\x47\xec\x75\xbf\x63\x08\x52\x2a\x15\x3c\x1a\x76\x5b\xf5\xc8\xf0\x88\xb5\x12\x76\x04\x1b\xbc\x79\xdf\x82\xe5\xc3\x6d\xd9\x87\xd9\xdd\x1a\x7c\x51\x33\xbc\xe9\xaf\x08\x7b\x09\x6b\x52\x2f\x07\x5c\x3d\xb6\xcc\xdc\xfa\x5d\x66\x5c\x53\xb9\x79\x99\xb4\x96\x75\x12\xfa\x92\x80\x00\x9a\xc1\x63\x5f\xa8\x2f\x4d\x3c\x66\x03\x71\x38\x1c\xf6\x87\x46\x7b\xc0\x75\x14\x87\xd0\x80\x7d\xc7\x27\x30\xf2\x7d\x56\xb3\x7d\xdc\xe5\x39\x60\x4c\x39\xa0\x92\x59\xac\x2d\x80\x5d\xef\x40\x5e\xdd\x7b\x01\xc3\xec\x30\xe3\x87\xd2\xd9\x40\x8c\x7d\x90\xd3\x85\x59\xa8\x4e\x13\xc0\x9f\x00\x26\x62\xb1\xe0\xb0\x0b\xf9\x36\x54\xe8\xd9\x6a\x46\x7d\x59\x67\xde\x7c\xee\x17\xbb\x7e\x3e\x4f\x24\x3c\x92\xe3\x6d\xe3\xc6\x2a\xc1\xa2\x47\xde\x42\x38\x4e\xd8\x7a\x55\xe2\x8d\xae\x4e\xb3\xcd\x75\x29\x43\x53\x65\x90\x8d\x96\xbc\x90\xda\xeb\x7c\xb9\xc1\x09\xd8\xa0\x24\xee\x11\x79\x0b\x8c\x28\x8f\xc3\xa3\xda\xe5\xcd\xcb\x1a\x2e\x03\xd8\x29\xab\x14\x8e\x6e\x33\x9c\x40\x97\x91\xc5\x27\x39\x98\xe1\xa4\x40\x83\xe2\xe9\xa5\x76\x5e\x65\x47\x88\x2b\xcd\x2e\x78\xbe\x79\xee\xa5\xbb\xf3\xc7\xa7\x5a\x5b\x6f\x56\x70\xae\x49\xed\xa0\xbe\x8a\x2d\x32\x92\xbe\xe9\xe4\x06\x9e\xf7\x81\x9d\x5f\x91\x52\x9f\xda\x27\x1e\xac\x2e\x23\xc8\x79\xc9\x43\xdf\x77\xe6\x45\x0b\x95\xe3\xee\x03\x02\xcf\xd0\x3b\x1e\x2c\x24\x3c\x20\xb3\xa9\x97\xed\x1b\x90\xa7\x6a\x17\x37\x58\x48\x2d\x95\xba\x8d\xcc\x74\xd7\x23\x4a\x1d\xbf\xdb\xe0\xec\xe1\x88\xe7\xbc\xf9\xb6\xd0\x80\xb3\x93\x39\xa1\x45\xa7\xbd\x2d\x3a\xed\x10\x3b\xf4\x8c\x2e\xee\xeb\xfc\x90\xd8\x5b\x9b\x9f\xd6\xae\xfa\x43\x28\x35\x92\xc6\x08\x9d\xd1\x9a\xdf\x0f\xc4\x1a\x1f\x8a\xb5\x70\xd8\xef\xae\x5d\xf4\xfd\x76\xe7\xac\x33\xa6\x6b\x43\xe1\x8b\xce\xb3\x08\xd6\xbc\xd9\xa7\xb5\x9b\xb6\x58\xdb\x4f\xfa\xa3\xc9\x50\xac\xed\x4e\xc6\xed\xfe\x70\xb4\x06\x44\xe2\x10\x0d\x1a\x2e\x4e\x6e\xd6\x92\x8e\x2f\x7a\x23\x61\xae\xed\x26\xc9\x5a\x7f\xdc\x16\x43\x09\xb9\x33\x5a\xdb\xef\x0f\x66\xc3\x4e\xd4\x1e\x7f\x5a\xdb\xae\x56\xbf\x56\xb6\xab\xd5\xff\xac\x82\x28\xcb\x36\x21\xe7\x68\xad\x29\x23\x3d\x04\xe6\xa7\xcd\xad\x6c\xc5\xf6\xf2\x67\xb3\x1f\xa6\xf6\x73\xdf\xb3\x48\xb8\x77\x3e\x87\x15\x91\x9d\xca\x7b\x67\xca\xac\xfa\x20\x35\x10\x5f\x3a\xcc\xbd\x2f\xca\x71\xd2\x93\x9a\x47\xc3\xed\x34\xeb\xf0\x46\x53\x00\x85\xa3\x7e\xb0\xcd\xaa\x8b\x3b\xd6\x83\xbe\x85\xc3\xb3\x68\x51\xac\xfd\xca\x3f\x1c\x10\x55\x5f\x7e\x7d\xf6\x5a\x6a\x06\xff\x1c\x39\xdf\x91\x29\xd2\x5b\x8a\xaa\xa7\xe0\x2c\xff\x3e\x28\x58\xd6\xcb\x73\x92\x13\x0f\x8b\xaa\xed\x68\xcd\x33\x07\xdb\x95\x0a\xad\x7e\x63\xf0\x54\x2a\xc9\xaf\x6a\x36\x7f\x0f\x78\x5d\x3f\xe8\x49\x02\xdd\x24\x4f\x6a\x4b\x77\xc1\xba\x6a\xe7\xc3\xc1\x7c\xde\x57\x3b\x26\xea\xfb\xb5\x88\x8c\x5d\x12\xaf\xb6\x85\x95\x9d\xf5\xd4\xca\x79\x70\xce\x26\xe7\x53\x2b\xf3\x1d\x03\x03\x50\xb5\xd3\x4d\x6c\xef\x8c\xad\x7b\x76\x0f\x77\x84\xc5\xa7\x3b\xf3\x79\xb2\x2a\x06\xcf\xc3\x41\x2e\x0e\xa8\xf7\x45\x69\xc3\x03\x5e\xc3\x56\x3a\x7a\x48\xc0\xdd\x99\x51\xb8\xe2\x00\x78\x9e\x18\x24\xc5\x6e\xbd\x5a\xf4\x47\xdd\x6f\xa5\xa7\xb7\xca\x06\x2c\x60\xe1\x84\xef\xeb\x95\x3a\x92\x4d\xc1\xd5\xa8\x6e\xa0\x73\x4e\x42\x0a\xb9\xe4\x8a\x7d\x9f\x4b\x81\x90\x71\x28\x4c\x5f\xea\x2c\xe1\x3b\xd2\x02\x0f\x07\xa5\x92\xea\x8f\xbb\xd5\xc4\x9d\x52\x88\x57\xea\xdc\xc5\x03\xdf\x43\x4b\x33\x1b\xc8\x6a\x62\x8f\x54\x83\x83\xa2\x17\xac\xfc\x34\x1c\xb4\xea\xa1\x9c\x26\x96\x90\x11\x30\x34\xe9\x28\x8f\x32\xac\x51\x52\x88\xbd\x16\xb1\x71\xaa\x9b\xc9\xe3\x2a\x2f\x33\x05\xb8\xdd\xfc\x11\xfb\xd4\xc8\x2b\xc7\xfc\xe8\x18\xd0\xec\x55\x22\x4c\x20\x53\x9d\x9a\x8b\x06\x7b\xd9\x72\x4f\x49\x7b\x6e\x0e\x6f\x60\x73\x85\x2e\x92\x30\xf5\x22\x81\x2f\xd4\x67\xe3\x16\x70\x29\x7e\xa9\x64\x78\x1d\xc7\x7f\x72\x0d\xdf\xec\xf8\x84\xea\xa5\x03\x5f\xa1\x8b\x61\x39\x2f\x60\x73\x46\x97\x3f\xf7\x81\x5c\x37\x2a\x17\x6e\xda\xb9\x63\x03\xa6\x2a\x70\xe6\x30\xbf\x71\xb8\x4e\xdd\x52\x69\x9d\x9b\xc3\x6d\x3b\xd5\x21\x81\x64\xb4\x73\xa4\x21\x13\x40\x39\x46\x4c\x38\x68\xa1\x23\x9c\x6d\x3c\xe1\x43\x06\x73\xbd\x1e\x59\x61\x7a\xfe\xc7\x2c\x84\x85\x28\xe6\x73\x8e\x0b\xd1\x43\xdd\x1f\xbc\x30\xc2\x75\x01\x3f\x78\xf3\x05\x3b\x19\x37\x93\x47\x23\xc6\xc0\xe0\x3f\x47\xcc\x43\xaf\x45\x0d\x8e\x01\x93\x8c\x40\x9e\xca\xb0\x04\xab\xfa\xd4\x4d\x80\x62\x48\xa8\x5c\x60\x55\x2a\x7b\x0b\x55\x8c\x20\x8f\x24\x22\x3c\xb4\x74\x01\xca\x39\x66\x3f\x0d\x0e\x4b\x9b\x72\xe5\x60\x3a\xf7\x5e\x23\xd4\x2b\xee\x5c\x64\xd4\x32\x3c\xbc\x97\xa1\x1e\xee\x97\xeb\x55\xb5\x03\xe1\xa4\xc1\x0b\x1b\x1c\x04\x9c\xa0\x43\xc4\x93\x42\xef\x9b\x1d\xdf\x65\x1e\xc5\x11\x80\x97\xfc\x30\x8f\x1a\xbc\x68\x54\xdb\x6b\xd9\xfd\xd6\x52\x44\xcb\x34\xf7\xb0\x65\xe4\x8f\x3b\x38\xec\x86\xf2\xb0\x6b\x70\x63\x88\x87\xdd\xc6\x81\x08\xc5\x70\x28\x82\xb5\x36\x1f\xad\xf1\x64\x28\x78\x30\x5b\x0b\x95\x0d\x6c\xe8\xe9\x6c\xbb\xf2\xcb\x3e\x4f\x12\x11\x20\x89\xb7\x91\xd3\x12\x1e\xbc\xaf\x68\x90\x56\x34\x58\xaa\xe8\x85\x8f\xd6\x7c\xe8\xa6\x44\xd7\xa1\x72\xec\xab\xc4\x77\xe0\x87\xb2\xd5\xb8\x49\x75\xa4\xd1\xe2\x93\x6b\x28\xdf\xbe\xc7\xca\xc1\x17\xa1\x55\x25\x90\xba\x1d\x31\xbe\x18\x36\x90\x1b\x3e\x1e\xf1\x55\x91\x3e\x5a\x8e\x02\x06\xa7\x22\x6c\x93\xaa\xa0\x2d\xed\xc8\xc6\x2d\x96\x8f\x07\x3f\x6e\x14\x6c\xb7\xbc\xf9\x5c\xca\xa1\x9c\xf3\xc0\x9d\xcf\x05\x87\x29\x9c\x18\xcd\x10\x66\xf6\x5b\x27\xe4\x96\xa0\x49\x68\xc9\x3d\x6d\xa1\xec\x48\x7a\x2d\x63\xd2\xe0\x34\xc4\x48\x3d\xb0\xe9\x49\x55\xb4\x75\xe6\x9b\xe3\x4e\x57\xf4\x27\xe3\x7a\xfa\x64\x7d\x3d\xfc\x62\x57\x77\x12\x9c\xd8\x1e\x5f\x16\x7c\x4e\x5a\x86\x40\xdb\x89\x7e\xcb\x88\xf0\xe0\x79\x6e\x19\x35\x7a\x34\xe0\x65\x20\x0b\x69\x42\x68\x68\x26\x21\x4c\xff\xf1\xc0\x10\xf4\x7a\x90\xbf\x25\x25\x6f\xc2\xb9\x79\x42\xbf\x4b\x37\x4f\xee\x3a\xdb\x7d\xe1\xe9\x73\x7b\x34\x9f\x1b\x08\xde\x37\x6f\x02\x3e\x9f\xaf\xd7\x68\x4c\x68\x04\xe7\x85\x54\x0a\x25\x0b\x02\x0c\x49\xbf\x27\x60\x90\xd8\x7b\xac\x68\x5c\xc4\xab\x4a\x5f\xfa\x12\x2f\xfb\x73\x6c\x08\xfa\x36\x9e\x0d\x84\x75\xdc\xa6\x7e\x9b\x0f\x47\x62\x6c\x9d\x0d\x38\x1d\x0d\x7d\x14\xba\x3d\x37\x80\xf8\x93\x8e\xca\xf5\x7c\x8e\x72\xd3\xff\x45\x1d\x42\x5e\xc7\xf4\x25\x45\xf4\xd7\xb3\x18\x76\xc2\x8e\xcf\xe1\xfb\x7c\x6e\x7c\xf0\x85\xbd\x2d\xb4\xfc\xf4\x83\x1c\xca\x9d\x19\xea\x37\xe9\xeb\x38\x58\x6d\xaa\x19\x5f\xe8\xe5\x80\x97\xbd\x72\x98\xf0\x34\x10\xa1\x9c\x16\x6f\x37\x01\xb7\xd6\xab\x0b\x42\x85\x1e\xe8\x9f\x46\x00\xc7\x05\x0d\x08\xb1\xe1\x50\x0c\x96\xa3\x8d\xc3\xdc\x81\x3d\x18\x38\x9a\xba\x21\xb0\x7b\x83\x74\x0b\x46\x1c\xac\x3e\xf4\xa7\xaa\x7d\x9b\x3e\xc1\xe0\x96\xdb\x09\xe0\xf0\x98\xc8\x28\x15\x83\x22\x68\x2e\x75\x24\xa1\x70\xa9\x94\x03\x65\x23\xa4\xfc\xb1\x95\xbb\xd4\x7e\xce\x6f\x28\x1c\x7d\xcc\x9f\xf4\xd3\xcd\x64\x1d\x36\xd5\x47\xc3\x23\x75\x94\x31\x5a\x9e\x53\xcd\xdd\xc4\x4c\xb4\x00\x70\x8c\x21\x5c\xe4\x8a\x0a\x79\x81\xcf\xe8\x84\x5c\xfa\xb9\x46\xb7\xee\xcd\xb0\x54\x9a\x20\xe5\x50\x95\x7c\x44\x12\x92\xfc\x75\xcb\x24\xa5\x81\x52\xd7\x2d\xfa\x8c\xc2\xb9\xcc\x69\xd8\x81\xb3\x29\x9d\x7e\x1d\xfb\x5a\xa7\x7a\x28\x94\x5f\x5a\x2a\x71\x02\xe7\x35\xcd\x53\x16\xcf\x85\x4b\xdd\x26\x4c\xce\xf2\xa5\x40\xcb\x4a\xbf\xcc\xae\xf6\xca\x1e\xb1\x73\x2c\x82\xf6\x4e\x0a\x24\x3a\xba\x5f\x7a\x96\x1b\x1b\x14\xff\xeb\xaf\x30\xe1\xa3\xf6\x5f\x93\x5e\xd2\xe7\xc1\x31\xef\x05\x89\x18\x52\x9d\x3a\xe2\xcf\x22\xb8\xcd\x7f\x42\xb6\xa2\x75\x77\x74\xe9\x3d\x0a\x7f\xbc\xf6\x5c\x33\xbf\x5a\x6b\x47\x90\x79\xed\x2a\xe1\x33\x31\x5c\x0b\xc4\x58\x28\xe9\x6a\x2f\x58\x13\x5d\x4f\x04\x6b\x95\x4f\x6b\xed\xf1\x78\x60\x6d\x6d\x79\x49\x3f\x32\x03\xe1\xf7\x7b\xbe\x18\x8c\x4d\xbf\xdf\xdd\x1a\xbd\x84\x7d\x84\xb6\xf5\x29\x0f\xba\x33\x5a\x33\x7c\x02\x4c\xc4\xbf\xd6\x1a\xa2\x1f\x86\x6b\xad\xb1\xe0\xc3\xde\x08\xe1\x76\x46\x6b\x43\x91\x08\x3e\x12\xc1\x12\x6f\x72\x2e\x79\x13\x2b\xad\xf2\xe5\xe5\xc5\xec\x0f\x44\x4f\xde\xf8\x99\xfd\x61\xb4\xa5\xf8\x97\xd1\x56\xb7\x33\xae\x68\x66\x66\xd0\x1e\x7c\x2a\xf0\x1f\xd3\xd6\x6a\xe7\xd4\x9d\xd0\x10\xdc\xe9\x06\xae\xda\xcf\xc7\x43\xce\x7a\xf5\x9e\x15\x8f\xb9\x3d\xb6\xde\x94\xb0\x70\x3c\x94\x46\x8b\x03\x26\x38\xde\x67\xec\xa3\x67\x20\x2e\x6f\x33\xf8\xa8\x9d\x69\xe7\xf4\x48\x8f\x0d\x52\xbe\x20\x33\x76\x1b\xb0\x81\x23\x84\x6b\xd4\xa4\x17\xcf\x43\x41\xe8\x88\x55\xed\xd1\xce\x00\xd8\xdb\x91\x94\x8b\x0d\x9c\x91\x8b\xb9\xaa\x14\x1f\x9f\x02\xd7\x48\x42\x42\x00\xec\x5b\x8f\xa5\x9f\xf3\x1f\xcb\x35\x65\xfb\xb3\x36\x5e\xf4\xd8\xe5\x42\xb2\x0e\x4f\xd0\x0e\xe5\x98\x24\xf3\x75\xfb\xb9\x9b\x3e\x72\x1d\x74\x6f\x04\xbc\x98\x8a\xd2\xef\xbc\xb8\xc6\xf9\xa9\x8a\xf1\xaa\x13\x9e\x1a\x48\xe6\x64\x09\x3f\xda\xa8\xd4\x90\x25\x34\x23\xa0\x1e\x44\x96\x30\x3c\xc3\xad\x62\xd6\x32\xb4\x73\x3e\x68\xf3\xad\x20\x84\xd8\x63\x0b\x05\x35\xea\xbb\x53\xa5\x55\x5a\x75\x09\x1d\xbe\x98\x83\x64\x12\x75\x7a\xa3\x52\x69\xf8\x62\x76\x3b\x5d\x71\x33\x1b\x88\x91\x73\xea\x12\xc3\x63\xd9\x67\x67\x3c\xe0\xb0\xa5\x78\x66\x20\x46\xfe\xb0\x33\x80\xf1\xc5\x9b\x2f\x05\xb2\xf0\x41\xba\xcb\x30\x1c\x5e\x79\xdd\xad\x3c\xb8\xf3\xff\x8e\x48\x79\x8b\x7e\xba\x24\xea\xc3\x7f\x47\xe5\xe1\xfc\xbf\xa3\xb2\xe7\x54\x2b\xff\x71\xcb\x64\x8b\xde\x8a\x3c\xb6\xda\xc6\x7f\xf8\xe2\x3c\xfb\x2e\x1a\x0f\xc8\x47\xe9\xe4\x61\xc0\x09\x8e\xb0\xc7\x6a\xd4\x67\x5f\x6c\xcf\x46\x52\xd1\x2f\x97\xa9\x24\x88\x76\xfd\x71\xe7\x59\xfc\x94\xeb\xc0\x78\x1e\xf0\xb2\x4f\x68\xd6\x7a\x5f\xb6\x5e\x11\x80\x13\x20\x00\x51\x36\x88\xf3\x47\xdd\xae\x00\xc0\x55\xc0\xa6\x03\xae\x0b\x3e\x4b\xf9\xde\xaa\x5c\x2f\x03\x9e\xaf\xf0\x4f\x5a\xa5\xdb\x35\xb4\x1c\x6b\xbd\x70\x96\x1c\x28\x08\xaf\xb8\x14\xfe\x44\x51\xda\x21\xd1\xf3\xe9\x23\xa0\x93\xac\xea\x3d\xf2\xa6\x6d\xd4\xbc\xe2\x28\x34\xc4\xf8\x07\x1f\x76\xb8\x97\x08\xe3\x26\xe1\xb2\x57\x47\x82\x38\x35\x17\x1f\x9b\xd0\xc1\x72\xb6\x36\x6f\x18\xb7\xd7\x3d\x0e\x6b\x7b\x08\xe7\x3f\x37\x79\x92\x94\x4a\xff\xda\x51\x9f\xcd\xfe\x61\xa9\x64\xbc\x34\x38\x5e\x07\x85\xda\x5f\x5b\xcc\x4d\x2f\x42\x93\x69\xa6\x7d\xc0\xc4\xdc\x7c\x9a\xf0\xa4\x33\x9e\xb1\xa8\x1e\x59\xed\x86\xad\x27\x65\x6f\x8f\xd3\x4f\xfa\x9a\x10\x12\x1e\x8f\x68\xfe\xf5\x78\x8f\xd3\xb8\x1e\x5b\x1e\x2e\xeb\x2c\xfd\xe8\x84\x5e\x12\x3b\xc9\x66\xf7\xd1\x09\x4d\xd4\xb5\xcd\x4b\x83\xdb\x9f\x12\xcf\x98\xb6\xe8\x5b\x3e\x92\xa5\xf5\x9e\xdd\x76\x86\xaf\xae\xc3\x5d\xe6\x2d\x68\xb4\x3a\x67\xc1\x0d\x90\xca\x8e\x99\xaf\xf8\x90\x77\x47\xf9\x8b\xcb\xbc\xbf\xa0\x98\x2f\xe8\xcb\xb0\xb3\x04\x4a\x9d\x83\xce\xcf\x00\x5b\x4e\x4a\xa5\x57\xc9\x59\x9a\xcd\x1b\x9a\x9f\x0d\x7f\x7e\x75\x09\x29\x95\xd6\x73\x9f\xd3\x82\xc3\x33\x42\x14\xf6\xaa\xbf\xaa\xfa\x92\x78\xf0\x92\xc1\x3f\xde\xe3\x3a\x8a\xda\xe7\xae\x79\x71\x31\x14\x41\x67\x28\xfc\xf1\x6d\xf3\x9c\x79\xf6\xcf\x81\x01\x34\x29\x77\xc2\x5d\xf4\x96\x63\x54\xe9\x1f\xff\x22\xe5\xcf\x31\xcf\x97\x09\xfa\xfe\x18\x5d\xe8\xca\x8c\x0b\x2d\x46\x78\x1a\xea\xd8\x7f\x50\xd3\xe3\x11\x99\xcf\x3f\xc6\x94\xb3\x7c\xd0\xbf\xba\xdc\xd9\x0d\x4e\x2c\x6e\x7b\xec\x12\xa5\xb6\x1f\x6c\x33\xef\x37\x9d\xb7\x7c\xa5\x7a\xc2\x21\xaa\x03\x3c\x1c\x21\x23\xfb\x24\x06\x92\xdc\x57\x3b\xa7\x14\x31\x8d\x35\x51\xe6\xb1\x93\x1e\x2f\xa7\x80\xce\x4f\x49\x79\x98\xe4\x12\x7e\xb4\x49\xb9\x97\x4f\x68\x46\xa4\xfc\x94\x4f\x38\x6a\x93\xf2\x44\x50\x8f\x79\x65\xe3\x6c\x37\x4b\x7f\x6a\x90\x72\x3f\x9f\x11\x12\x2e\x76\x89\x0e\xb9\x92\xce\x1a\x83\xd0\x40\x5a\x44\xad\x75\x7a\x6b\x3e\xf1\xca\xcc\x09\xdc\x32\xdf\x2f\xfb\xf0\xf7\x62\xd7\x0e\xd8\x54\x09\x56\x09\x7a\x37\x3d\x14\xc4\x96\x9e\x1f\x80\x1d\x2c\xb3\xde\x84\x97\x83\xf2\x44\x10\xdb\x2b\xb3\xbb\x2e\x97\x9b\xd3\xdf\xe9\x9d\x9f\xbd\x8f\x3a\xc7\x63\xdf\x7b\x4b\xc8\x77\xff\x79\xc7\x5c\xee\x02\x4a\xd7\xcb\x5d\xfc\x2c\xec\xf7\xbd\xb0\xd4\x07\x97\x3d\x68\xd4\xf7\x5d\xd9\x0b\xcf\xe2\xb7\xbd\x70\x85\x05\x9e\x65\x2f\x7c\x7a\xed\xf1\xc5\x4f\x9e\xf7\x22\xb7\x5e\x5d\x64\xb8\x9d\x90\x75\x76\x09\xdb\x18\x12\x0b\x70\xd2\xe4\xbf\xa5\x45\x6a\x8b\xbc\x6d\xeb\xb4\x51\x88\xcc\x40\x7d\x94\x46\x7f\xee\x4a\x7d\x43\xa9\xdd\x29\x55\xaa\x5c\xe6\x97\x93\xb0\xcc\x33\x3b\xce\x3c\x9b\x3d\x6b\x65\x77\x28\x87\x4c\xdb\xb6\x55\xdd\x7a\xcc\x0d\xf4\x47\x52\xab\x12\x4b\x89\x0c\x4f\x6e\xd3\x0c\x35\x95\xa1\x56\xc8\x30\x14\xcf\x69\x8e\x6d\x95\x63\x5b\xe5\xc8\xb9\x06\x6f\x2d\x69\x9d\xf7\x0f\x77\x3c\xb3\x7f\x58\x5f\xaf\x59\xf0\xf2\x4d\xbe\x54\x2d\x6e\x9e\xdc\xee\x78\xe6\xc9\xad\xfc\x72\x72\xfb\x4d\xbe\xc0\x97\xa1\x78\xde\xf1\xe0\x17\xbe\xe5\xef\x89\x67\xe9\x35\x78\xaa\xd0\x02\x8c\x41\xe4\x71\x42\x3d\x69\x0c\x84\xc6\xef\x9e\xed\x55\x2a\xe4\x0d\x95\x5c\x3c\x57\xe9\xb9\x14\xd5\x63\x81\x1b\xd1\x5b\x84\x34\x22\x60\xec\x22\x42\x6d\x70\xf9\x96\xdb\x63\x17\xc0\x0b\x74\x42\x38\x75\x60\x7b\x6c\x70\xf2\xe6\x71\xa0\x9b\xb8\xdf\x3e\x7c\x16\xbd\xb1\xb1\xd1\xef\x79\x22\xec\x0f\x85\xa4\xb8\x37\xf2\x7c\xd5\x4a\x62\xbc\x18\x06\xf5\x63\xca\xbc\x98\x6f\xa9\xd6\x78\xca\xe9\xac\x81\x0c\x14\x34\xec\x15\x0f\xc5\xc5\xba\xdc\xec\xb2\xb3\xd3\x10\xe8\xc9\xf4\x50\xba\x19\xda\x9b\x9d\x04\xab\x04\x80\x32\x37\x1c\x34\xb9\x99\xb8\x9b\x13\x70\xc4\xcf\x9c\x49\x1f\x80\x7b\x0d\xce\xbe\x37\x8d\x8d\xa1\x88\x3a\xfd\x1e\x30\x20\xc3\x0d\xfa\x53\x90\xf2\x46\x24\xfa\xf0\x3a\xda\xa0\xbb\x45\x49\xc5\x7e\x7a\x59\xc2\x0e\x3a\x06\x77\x06\xe8\x93\x1f\xe6\x35\x37\x52\x17\xc6\x9a\x13\xde\x6d\x39\xdc\xb5\x73\x8a\xf2\x6f\x98\xc2\x80\x67\x94\x39\xf6\x1a\xbc\xfc\x38\x2c\xf3\xf2\x75\x97\xd3\x80\x4d\x42\x69\xcd\x9b\x53\x5c\xf1\x3d\x43\xd0\xe3\x36\xb1\x05\xaa\x37\xf9\x76\xa0\xb8\xf7\xbb\xb1\x31\xe9\x18\x07\x0d\x4e\xa5\x90\x97\xd0\xaf\x87\x5f\x54\x5c\xb1\x76\xc7\xf0\x09\x63\xc3\xa8\xfe\xb9\x83\x17\xcb\xf3\xb9\x2f\xef\x76\x2d\x59\x0c\x58\xc0\x02\xd3\x76\x90\xbb\x17\xcf\x7c\xe8\x00\x99\x24\xe5\x66\x41\xd6\x98\x36\x30\xd5\x00\x5c\x37\xa7\x60\x17\x68\x0b\xe9\xde\x46\xdb\x2b\x1a\xbe\xbe\xb2\x46\x8f\xcf\x58\x82\x66\x20\xa0\xa4\x84\x92\xd3\xea\x2c\x02\x90\xb6\xb2\x19\xe3\x73\xa8\x51\xf5\x60\x08\x3c\x3d\x04\x99\x7d\xc8\x33\xea\x33\xa2\x32\xfb\x51\x83\x33\x67\x63\xf7\x60\x83\x6e\xec\x1e\xc2\xcf\x11\xfc\x34\xe0\xe7\x1c\x7e\x2e\xe0\xe7\x12\x7e\x9a\x1b\x54\xec\xd3\x8d\xdd\x5b\x78\x79\xd8\xa0\x1b\x7b\xbb\xf0\xb3\x07\x3f\x50\x7c\x0f\x8a\xef\x41\xf1\x3d\x28\xbe\x77\x0c\x3f\x27\xf0\x73\x0a\x3f\xdf\xe1\xe7\x72\x83\x0e\x42\xba\xb1\xd7\x82\x97\x1b\xf8\xb9\x83\x9f\x7b\xf8\x01\x90\xfb\x00\x72\x1f\xa0\xed\x03\xa0\x7d\x00\xb4\x0f\x80\xf6\x01\xd0\x3e\x60\xb4\x0f\x18\xed\x03\xb4\x7d\x40\x6b\xbf\x09\x3f\x00\x6f\x1f\x10\xdb\xff\x01\x3f\x00\x6f\x1f\xe0\x1d\x00\x4e\x07\x50\xff\xc1\x19\xfc\x40\xd9\x03\x28\x76\x00\x5f\x0f\xf7\xe1\x07\xb2\x1c\x42\x45\x87\x00\xea\x10\x40\x1d\x02\x6a\x47\x50\xe5\x11\x94\x3d\x82\x62\x47\xf0\xb5\x01\xf8\x35\xa0\xc9\x0d\x40\xb2\x01\x65\x1b\x80\x5f\x03\xb2\x34\x00\xab\xc6\x35\xfc\x60\x66\x80\xd2\x80\x06\x36\x00\xa1\xe3\xef\x1b\xf4\x20\xa4\x1b\xc7\x90\x7c\x0c\xc8\x9e\x00\x8c\x13\x80\x71\x02\x2d\x3b\x81\xe2\x27\x50\xfc\x04\x8a\x9f\x00\x26\x27\x90\xf9\x14\x80\x9f\x02\xda\xa7\x57\x1b\x74\xe3\x0c\x4a\x9c\x01\xc6\x67\x50\xf5\x19\xe0\x79\x06\x59\xce\x00\xc0\x19\x66\x01\x00\x67\x50\xf5\x19\x34\xf4\x1c\xd0\x3e\xdf\xdb\xa0\xc7\xfb\xf4\xd3\xc6\x39\x74\xc5\x39\xe4\x38\x87\x2a\xce\xa1\x8a\x73\xc0\xe7\x1c\x3a\xef\x1c\x70\xbd\x80\x02\x17\x80\xde\x05\x54\x76\x01\x95\x5d\x40\x65\x17\x50\xf6\x02\xb0\xbd\x80\x1a\x2f\xa0\xc6\x0b\x00\x75\x01\x50\x2e\x00\xca\x05\x40\xb9\x80\xba\x2f\x7e\xc2\x0f\xc2\x03\x2c\xbe\x03\xd0\xef\x00\xef\x3b\xc0\xfb\x0e\x78\x7f\x07\x50\xdf\xa1\x69\xdf\x01\xef\xef\x00\xea\x3b\x64\xbe\x04\xf0\x57\x50\xe2\x0a\x4a\x5c\x41\x89\x2b\xc0\xe0\x0a\x30\xb8\x82\x62\x57\x50\xe5\x15\x54\x74\x05\x75\x5c\x43\xe6\x26\x80\x6a\x42\xb3\x9a\x80\x4b\x13\xbe\xb6\xe0\x43\x0b\x06\xad\x05\x03\xde\x82\x66\xb5\x00\x68\x0b\x80\xb6\x00\x68\x0b\x70\x69\x01\xe4\x16\x40\x6e\x41\xe5\x2d\x68\x5b\x0b\xe0\xb5\x00\xab\x16\xd4\xd6\x82\xb6\xb5\xa0\xb6\xd6\xc3\x06\xbd\xd9\xa7\x1b\x37\x00\xe3\x06\x60\xdc\x9c\x6e\xd0\xfb\x90\x6e\xdc\x40\xe1\x1b\x28\x7c\x73\xb9\x41\x1f\x20\x05\x8a\xde\x40\xd1\x1b\xc0\xe7\x06\xda\x77\x0b\x48\xdd\x42\xe1\xdb\x8b\x0d\x7a\xb7\x4f\x37\x6e\x01\xec\x2d\x7c\xfb\x01\x68\xfe\x00\x0c\x7f\x00\x98\x1f\xd0\x92\x3b\x68\xd3\x3d\xa4\xdd\xc3\xeb\x03\x14\x7f\x80\x9a\x1e\xee\x36\x5c\x3b\xe8\x18\x1b\xd1\x73\xe7\xd5\x9c\x8c\x3b\x89\xd9\xc4\xdd\x7a\x1f\x76\x6b\x33\xe8\xe0\x9e\xc0\x87\xb3\xa6\xe0\xc1\x6c\x83\xc2\x7e\xa8\xee\xba\x70\x8b\x6d\x34\x38\x7b\xfb\x7e\x6b\xdd\x44\xf4\xf2\xd6\x6a\xb6\xf3\x17\x42\x7b\xad\xf7\x16\x1a\x34\x84\x9f\x88\x79\x66\xf0\x79\x3e\x97\x56\x86\x9e\xf3\xe3\xd5\x65\xec\x26\xd2\x1a\xd7\x9e\xe9\x71\x74\x69\x84\x5e\xe1\x68\xbc\xec\x4c\x4e\x49\xa4\x83\x81\xf1\x36\xe0\xe3\xb1\x18\xf6\xd0\xc6\x46\xb0\xc8\xbc\xf4\x31\x28\xa4\x7c\x8a\x51\x9e\x7d\x14\x59\x6f\xe8\xcc\x55\xa8\xc8\x37\x41\x3d\x30\x04\x0d\x89\x33\x74\xad\xaa\x0e\x81\x13\x3a\x33\xdf\x5d\xd0\x7b\x9d\x39\xce\x65\x8e\x57\x67\x5e\xd8\x01\x0b\xcd\xa3\xc8\xd9\x75\xb7\xfe\xb0\xa5\xf0\xf4\x24\x31\x30\x69\xe8\x96\x03\x5a\xa5\x9e\x33\x74\x2b\x69\x4a\x68\xde\xe3\xdf\xed\x4d\xf4\x02\xb1\xeb\xaa\xe3\x24\x2d\x5a\x55\x45\xe4\x47\x3b\x60\xe6\x97\x2f\x9b\xc2\xd9\x95\xc7\x59\xcc\xb6\x37\x8d\x60\x4b\xfa\x97\xf8\x82\x61\xa8\x54\x39\x81\x1e\xab\xb6\xb6\x65\x88\xc3\x72\x50\xae\x51\x01\x35\xc7\x14\x0a\x57\x82\x4a\x8d\xd0\x84\x71\x33\x79\xc6\x88\x0d\x77\x31\x1d\xb0\x9e\xd3\x93\xbd\x59\xe9\x41\x27\x8f\x94\x4d\xc7\x80\x8c\x98\xf3\x36\x6d\x5b\x0a\x74\xe6\xc7\x89\x02\xee\x14\x5a\x4b\x28\xfa\x75\xb1\x0a\x9e\x86\x12\xa7\xea\x2e\xc8\xc2\xb5\x3f\x21\xb5\x3f\xca\xab\x65\x0c\x18\x94\xdd\x1a\xd0\x09\x43\x78\x32\x3e\x44\xd5\x7e\xdd\x91\x38\xd8\xe5\xf2\x2b\x79\x66\x93\xb2\xd1\x73\x5e\xcb\x88\xd2\xab\x4b\x36\x07\x74\xe4\xbc\xba\x2c\x87\xcd\x44\xa1\xf2\x5c\x99\xac\xc4\xe4\xb0\x6d\xbd\x4d\x6b\xd6\x84\xce\x6a\x56\x95\x1e\x7b\xd6\x33\x3d\xf7\xac\x2a\x7d\x8c\xac\xc4\x79\x75\x69\x33\x84\xbf\xe5\x9a\xbb\x58\x90\x05\x9d\xb0\xe7\x45\xc4\x46\x99\x8d\x4d\x54\x2a\x49\x63\xc7\x52\xc9\xa8\x7e\x8b\x9c\xaa\x6b\x4e\xdb\xce\xd0\x9d\xcf\xb3\xb7\xdd\x4c\xbc\x8e\xc2\x96\x84\x09\xbb\xc7\x3c\xd3\xff\x6c\x0b\xdd\x66\x29\xa7\xf3\xa5\x33\x8e\x11\x19\x30\xdf\x19\xb9\x68\xa3\x35\x51\xdd\xbf\x33\x01\xfa\x7a\xc0\xaa\x96\xf1\xcc\x12\x39\x56\x83\x6f\x13\x67\x22\xc7\xa4\x3e\x60\xcf\x96\xf1\xca\xd2\x84\x0a\xe4\xa7\x03\x56\x65\xec\xb5\x6e\x7e\xdd\x7c\xb6\x8c\x01\xa6\x91\xad\xd7\xcd\x67\x42\xe8\x80\x25\x30\x09\x06\x38\x0d\x06\xcc\x19\x54\xe0\x21\xc1\xde\x92\x89\xea\x59\xfe\x2d\x23\x2e\x85\x01\xec\x51\xe5\x67\xaa\x07\x6b\xc9\x19\xb9\x0c\x56\x57\xdb\x1a\xa8\x3e\x9e\x2c\x6c\x0c\x9e\x95\x2e\x57\xa9\x3c\x4e\x31\x86\x88\xef\x54\x5d\xf6\x49\xf9\x75\x81\xd9\x5b\xe1\x72\x65\x48\x3f\xca\xf8\xd2\x09\x5c\x2a\x23\x7a\xc2\x02\x5f\x50\xdf\xa9\xc1\xe0\x5a\xb8\x48\xb8\x5c\x1b\x59\xe9\xfb\x7c\xe9\xfb\xf7\xa5\x39\xf3\x81\x2e\x7c\x7b\x7c\xb0\x22\x1a\x3f\x58\x82\x26\x0f\x16\x5f\xd8\x21\xe3\xe6\xe3\x43\xce\xe4\x2a\x94\xc3\xe0\x93\x80\x85\x8e\x0f\x6b\x0b\xf1\x6f\xb6\xf1\x76\x2a\x80\x31\x6d\xb8\xf4\x81\x1b\xf0\x48\xe1\x07\x5d\x86\xa5\x4f\x2c\xa6\x2a\xdb\xd0\xa5\x83\x5c\x36\x9c\x7f\x2d\x95\x10\x13\x52\x80\x01\x83\xe1\x39\x0d\x37\x83\x53\x66\x9e\xf4\x61\xc5\x02\xe9\x17\x49\x79\x2f\x51\x6f\x2c\xa6\x01\x8b\xcd\xe3\xa8\x80\x60\x60\xce\x6a\x50\x79\x0d\xc0\xd4\x58\x95\x06\xe6\xb9\xc7\x02\xf3\xd8\xa3\xf0\xc3\xaa\xda\x10\x35\xc0\xcc\xd3\x5a\x99\x41\xad\x14\xca\xe9\x0a\x21\x63\x9a\x7c\xee\xa9\x64\x82\x3d\x15\xaf\xec\x29\xe4\x7c\xd1\x6d\x59\x80\xb1\x60\x8a\x5d\x06\xbd\xe8\x5c\xbf\xba\xce\xf6\x66\xe0\xd2\xdc\xdb\xa7\xc0\x2d\x7c\x2c\xd7\x0a\x9f\xe1\x9d\xc1\x9e\x9c\x2f\xaf\x10\x5b\xca\xa6\x70\x44\x14\x93\xd5\x28\x3a\xbe\x6b\x4e\x73\xa5\xcd\x99\x2e\x94\x5a\x7b\xe1\xae\x79\x0c\x27\xd4\xc9\x94\x5b\x67\x23\x4e\xe3\x57\x6e\x3d\xed\x72\x7a\x3a\xe5\xd6\xcd\x21\x6d\xce\xb8\xb5\x7b\x42\xa7\x33\x6e\x1d\xe6\xad\x4d\xf6\x33\x86\xd8\x63\x7c\x3e\x7f\x5b\x2c\xf6\x51\x27\xe2\xf2\xe7\x0a\x1f\xdc\x35\xf3\xcf\xda\xbf\x17\xb6\xcc\x31\x12\xe3\x55\x9a\x33\x9e\x14\xe4\xa9\x4c\x71\xb0\x02\x4c\x3b\x96\x32\x91\x82\x52\xcd\x41\x2b\xe3\xf0\xab\x68\x51\x8f\x1a\x12\x5e\x7f\xd2\x0b\x3a\xbd\x68\xaf\x3f\x25\xda\x55\x51\x2e\xcd\x4c\xfa\xd4\x5f\x4a\x6a\x77\xa8\xc7\x0c\x58\xa7\x15\xf4\x9d\xb9\xb5\x5d\x46\xc7\x9c\x3e\x24\xd6\x20\xb1\xa6\x12\xd1\x72\xcf\xd9\xfe\x8f\xf9\x95\xfe\xf1\xd5\xfc\xea\xda\x1e\xec\x04\x43\x9e\x24\x22\x19\x59\x01\xed\x0f\x3b\x51\xa7\x67\xbd\x25\x7c\x6c\x79\x34\xe9\x45\x96\xbf\x58\x60\xe4\xcc\x8b\x29\x5a\x7f\x4c\xdd\x52\xe9\x31\x46\xff\x8e\x17\x53\x97\xd8\x8f\xb1\xbc\xe0\xf7\x4c\x59\x14\x0d\x20\xbc\x2e\xfa\x55\x85\xc3\xbe\xeb\x9c\xba\xf5\xed\x6f\xea\xa9\x54\x32\xf0\xa9\xe6\x32\xed\xe2\xc9\xeb\xa6\x68\x7f\x5b\x4e\xab\xb9\xa4\x0e\x5f\x2c\x7c\x84\xcd\xa1\xcb\x54\x58\x14\x35\x76\x4a\x66\x58\x95\x08\x9a\x09\x1f\x6f\x19\xb5\x7f\x57\xb7\xda\xe6\xd5\x89\x0e\xc0\xdb\xd2\x1f\x7b\xd1\xbb\x8f\x57\x7d\xf4\x9f\x6b\xa6\x7d\xb0\xd2\x2e\x2f\x57\x6c\x41\x16\xf7\xc6\x41\x8b\xee\xb7\x88\xfd\xe9\x00\x47\x7c\x76\xb8\x8a\x97\xbe\xe9\xe4\xdc\x4b\x14\x8d\x5b\x32\x6f\xb0\x39\xc0\x34\x60\xe6\xd7\x4d\xa3\x6d\x8e\x3a\x3d\x43\xe1\x06\x9d\x52\x2e\xa6\xd4\x5c\x64\x99\x83\x4d\x14\xce\xe4\xca\x57\x54\x63\x89\xf2\xd9\xd3\x36\xfd\xfe\x28\x0f\x08\x78\xe3\x4d\x01\x04\xca\xe6\xbb\x4a\xa8\xaf\x5c\x5b\x89\x4a\xf6\xdd\x27\x64\x2b\xa0\xc1\x8a\x2f\xaa\xd3\xe1\xbb\x9d\x7a\xfd\xd2\x98\xa8\x3c\x9c\x6c\xfa\x74\x96\xa5\x1a\x41\xc5\xdf\x94\x48\xa1\x9d\x43\x1a\xf4\x38\x63\x4e\xdf\xaf\xcc\x7b\xe3\x50\x76\xf5\xe1\xc7\x4b\x74\xdb\xdc\x5e\xa8\xef\x7f\x63\x24\x7e\x3b\x0e\x36\x67\x4b\x3d\xbb\xf9\x65\xcb\xd8\xde\x94\x8f\xb9\x7c\x69\xc3\x65\xff\xa8\xa6\x5f\x9d\x6c\x7d\xa9\xf8\x9b\x3e\xd9\xe4\x74\x06\x8b\x27\xdf\xc2\xa3\xff\xdf\xad\xf8\x2a\xfd\x5a\xfd\x7f\x57\xfb\xff\x6a\xb5\x1f\xa9\xd5\x7e\xf4\xff\xe0\x6a\x7f\x3f\xcb\x94\xde\x86\x34\xc7\xac\x6d\x15\x97\x6f\xcd\x25\x9b\xef\x16\x34\xd9\x92\x99\xdb\xe6\x98\xf7\x0c\x73\xfb\x2b\x4e\xbf\xb2\xf9\x75\x33\x5f\x0c\x61\x7d\x94\x01\xa0\xc0\xc6\xf0\x0e\xf6\xa6\xb4\xe7\xfc\x65\x49\x1a\xc0\xfe\xe0\x33\xa1\x32\xaf\xaa\x48\x05\x66\xf8\x65\x1e\xbd\x9b\x64\x5a\xf3\xef\x77\x13\xd8\xef\xd2\x1d\x4e\xee\x2c\xa2\x92\xcb\x03\xe8\x2f\xe7\x59\xb5\xc7\x34\x5a\xb9\x41\xcb\xf6\xa6\xb6\xc9\x01\xab\xb6\x29\xa6\x03\x23\x3f\x01\x08\xa9\xe0\x9a\xfe\x83\x6c\x6e\xe7\xfc\xac\xb5\x74\xb8\xa8\xd3\x27\xf6\xb6\x58\x1c\x4b\x3b\x9e\x21\xf7\x8b\x71\x74\x1e\x3e\x9c\x14\xef\xfd\x34\x70\xe7\xd5\x77\xd1\x12\x01\xd3\x14\xf4\xf9\xdc\x50\x4f\x8e\xef\xb2\xb7\x6e\xa7\x67\x05\x9c\x76\xf9\xd4\xaa\x04\x5c\x1a\x27\xae\x67\x19\xcc\x6e\xa7\x37\x9f\x73\xc7\x77\x77\x8a\x89\xa4\xf8\x8a\x7e\x09\xde\x95\xe5\x53\x59\xf6\x5b\x31\x91\x14\x5f\xb1\x6c\xae\x6b\x65\xdb\x23\x31\xde\x83\xed\x69\xb4\x62\x71\x20\xd6\x1a\x08\x97\x5e\xcc\xa0\x05\xf9\x24\x3e\x2d\x44\x57\x59\x75\x12\x9c\xc8\x65\x78\xf2\xbf\xd9\xe9\xd3\x69\x85\x37\x1a\xb3\xfc\xec\xca\x56\x10\x2e\xd1\xda\xbf\xab\x9b\xa6\x9a\x9b\x6a\xe4\x09\x6e\xe2\x30\x5a\x27\x40\x6f\x8a\x29\xb7\x36\x78\xe2\x89\xe1\x68\x83\x46\x33\x6e\xdd\x3f\x73\xfa\x38\xe3\xd6\x46\xc2\xbb\x9e\x18\x8e\x37\xe8\xcb\x8c\x5b\x07\xc7\x0b\x7a\x8a\x02\xf0\xd3\x96\xd9\x15\x43\x9f\x8f\xfb\x43\x76\xd2\xb2\x4f\x5b\xce\xfd\x33\x77\xd9\x21\x3c\x9a\x12\x10\x3b\xc0\x17\x05\x80\x1d\xb5\xb0\xba\x53\x14\xc0\x5c\x7e\x3f\xb4\xae\xe9\xcd\xe5\xd5\x5f\xe7\x87\x47\x37\x96\x77\x86\xcf\xcd\x93\xc6\xf1\x8d\xf5\x63\x97\xd3\xbd\xcb\x9b\x9b\xcb\x0b\xf9\xb1\x75\xa0\x5f\xe5\xf7\x0d\xaf\x3f\x1e\xf7\xbb\x7f\xa1\xde\xfe\xc6\x82\x9e\xe5\x21\xce\xb8\x75\x7c\x42\xc7\x40\x2e\x1f\xd0\xe6\xcc\x9a\x46\xf9\xe0\x26\x05\x8d\xdf\x23\xa0\x77\x5b\x53\x4e\xdf\x7a\xbc\x2b\xb0\x6d\xf9\xee\xed\xc9\xb8\x85\x06\x67\xf2\x3b\x4f\x15\xda\xb8\xb3\x1f\xb8\x19\x13\xee\x97\x4a\xeb\x5e\x6c\x9c\x34\x38\x6d\x21\x81\x91\xb9\x45\xbf\x69\x8b\xb5\xc1\xb0\xff\xa8\x54\x8c\x66\xfd\xc9\xda\x68\x20\xfc\x4e\xd8\x11\xa8\x14\xd4\xeb\x8f\xd7\x9e\x79\xd2\x09\xcc\x8d\x9c\x2f\x4d\x1d\x17\x04\xda\x25\xaf\x22\xac\xd7\x33\x8a\x36\x9c\x13\x80\x03\x9c\x40\xd0\xef\xf2\x4e\xcf\xea\xee\xd3\xa0\x33\x1a\x24\x7c\x76\xd1\x0f\x84\x35\x8a\xe8\xa8\xdd\x7f\x69\xc8\xdb\x8a\x3b\x3e\xec\x75\x7a\xd1\xc8\x5a\xaf\x51\x8f\xfb\x71\x34\x84\xd9\xbc\xdf\x4f\xfa\x43\x2b\x75\xd6\xac\x78\xe8\x87\x5d\x9a\x0b\x8c\x65\x55\x17\x34\xe0\x63\x9e\x88\xd1\x48\x8b\xd7\xa0\xd4\xc6\xd1\x57\xf8\xb7\x41\x95\x0d\xb9\x4a\xdd\xfe\xf3\x5f\xb5\xda\x1f\x1b\xb4\xcb\x87\xb1\x18\xaa\x08\x57\x56\x8d\x8e\x44\x22\x5b\x8e\xc8\xed\xb5\x69\xd8\xef\x8d\xbf\x43\x67\x46\xfb\x54\x5e\xa9\x74\x7a\xd1\x7e\xbf\x87\x5c\x33\x8c\x5b\xbf\x9f\x8c\x3b\x03\xeb\xad\x33\x3a\x1e\x77\x13\x40\x1c\x3e\xb5\x90\x8d\x7e\xcb\x97\x86\xe7\x56\xe7\x55\x58\xb5\x2f\x14\xd5\x23\xac\xd3\x83\x05\x1d\x0f\x3b\x51\x24\x86\xd6\x99\xec\x87\x83\xce\x68\x30\x19\x8b\xe0\x06\xc0\xaf\xd7\x30\x0d\xa3\xd8\x5a\xeb\xd5\x05\x4d\x1d\xd1\x5b\x6f\xda\x69\xbd\xb4\x5f\xd3\x7e\xe9\xe5\x5b\x2e\xfc\xc1\x82\x8e\x3a\xaf\xe2\xf7\x45\xba\x9d\x1e\xe2\xf6\x05\xd2\x25\x96\xdb\x0b\x2a\x83\xb0\x5a\x6f\x83\xfe\xa8\x83\xc3\xd8\x3a\x00\x62\x45\xf4\xc6\x5c\x8e\x6a\x44\x3f\xe5\x5a\xab\x5b\x45\xf9\x64\xc8\x65\x47\xdf\xb6\x17\x0b\xd5\xc9\xd6\x9b\x94\x2d\xbc\xa9\xf1\x53\xd9\x3b\x7b\x4a\x0c\x58\x5b\x2c\x16\x34\x9b\x7a\xd6\xc1\x31\x8d\x85\x18\xec\xc2\xf4\x1b\x37\xa1\x42\x6b\xbd\x4a\xbb\x3c\xea\x75\xc2\x59\xa7\x17\x35\x12\x3e\x1a\x59\x6f\xd2\x08\x15\x3e\xbd\xf6\xfb\xdd\x23\xee\x8f\xfb\x43\xeb\x6b\x7e\x1b\x3b\xcb\xb6\xb1\x43\x5f\x1b\xb6\xfc\x38\xc8\xd9\x9f\xec\xfb\x3c\x35\xd8\x38\x3d\xcb\x7d\x98\x0c\x50\x80\x73\x3f\x91\xaf\xbd\x11\x67\x5b\xff\x9f\x54\x71\x29\x55\x60\x5a\x4e\xf8\x6f\x45\x3d\x55\x2b\xff\x71\x8d\xf9\x47\x2f\x84\xcc\xff\x1b\xc0\x3f\xf2\x79\x4b\x5d\xfd\x0e\xa1\x02\x99\xf8\x79\x6b\x71\x6f\x9c\xb5\xe8\x64\x4c\xec\x3b\x76\xd6\x92\xd1\xcd\xbb\x2b\xa2\x1e\xff\x38\x60\x5c\xf9\xe6\xc3\xf7\x87\x31\xd7\xd1\xe1\xc6\x68\xff\x90\x0b\xee\xd2\x58\xf2\xc9\xc6\xb1\xf1\x42\x7b\x10\x34\x2f\x0c\x42\xee\xc6\x79\xfd\xc8\xd0\x70\x5c\xea\xb8\x74\xbd\x4a\x16\x4a\xf7\x4a\xb9\x79\xf0\xcd\xd3\x07\xe5\xe9\x61\x77\x64\x71\xd3\xbf\xc7\xe8\x7d\x61\xc1\xef\xf5\xc5\xc8\xba\xcc\x55\x5a\xfc\xe8\x41\x31\x4f\x16\x43\x3f\x7d\x8b\x4f\x77\xa6\x7f\xff\xce\x52\x63\x95\x3f\x51\x40\xb5\xe8\x38\xe5\xc4\x35\x04\xf5\x4c\x6f\x9f\xd0\x28\x7b\xf5\xf7\x89\x8d\x6e\x47\xe5\x15\x66\xa8\x9d\x7a\x45\xca\x9b\x26\x50\xdd\x7b\x1d\x23\x24\x48\x79\xef\x75\xd0\xc6\xae\xd8\x05\x3e\x74\x41\x20\x7b\x20\xd7\x99\xf9\x76\x89\x0c\xc9\x9c\xb3\x60\xec\x4f\xf4\x90\x86\xd6\x29\x1e\xe0\x14\x51\xdf\xfc\x79\x4c\x88\x1d\x98\xd3\x1e\x63\x87\xc7\xf3\xb9\x7c\x3a\x1b\x71\xfd\xf8\xb4\xcb\xeb\xdc\xbc\xff\x69\x04\x34\xa4\x82\x58\xdc\x7c\xd0\xcf\x8b\x3b\xf3\xfe\xe7\xbb\x0e\xe2\x6c\xd6\x31\xb8\xb9\xff\x4c\xef\xf6\x49\xa9\xc4\x15\x68\x7b\x45\xc7\x79\x4b\x0e\x67\xf6\x3a\x86\xe7\x08\x97\x68\x7d\x43\x98\x84\x4e\x3b\x70\x8d\x90\x94\x4a\x46\xc8\x7e\xee\x97\x43\xe8\xc1\x7d\xd7\x08\x9d\x58\x06\x70\x5f\xee\x9e\x20\x9d\x20\x18\xc7\xf0\xe1\x3d\x82\x9a\xa1\xda\x7f\xa6\xc2\x16\x4c\x22\xb8\x7b\x82\xca\x7b\xf1\xa3\x71\xd4\xe0\x34\x20\xf5\xc0\x3a\x1f\x71\xc9\x8d\xe9\xef\x01\x63\x77\xfb\x2a\xd6\x4a\xd5\xe6\x12\xfd\x72\x99\xa7\x37\x19\x0e\x77\xed\x6d\xc6\x94\x67\x4e\x94\x02\x21\xca\x8b\xfd\x06\x37\x84\x8a\x42\xda\x29\x90\x7d\x4a\xf1\xf8\xe4\x2f\xc9\x46\x2d\xf9\x52\xab\xda\xa1\xac\x25\xcc\x3b\x91\xe2\x4e\xe8\x6a\x1f\xf6\x18\x49\x5b\x3a\x23\x8b\xb6\xad\x1e\xfd\xe1\x73\x2b\xa4\xb7\x3e\xd7\x2e\x05\x21\x33\xeb\x2d\xf8\xa3\x21\x48\xdd\x37\xb8\xea\x1e\xcb\xd0\xcf\x35\x42\xaf\xb4\xe5\xa4\xa0\x01\xf5\xd1\x5a\x93\x60\xe0\xf2\x93\xbf\x96\xc4\x5b\xcb\xa1\xa4\xb5\xf7\xd5\x34\x86\xb4\x60\x07\x1d\x63\xaf\x83\x9e\x57\x09\x91\xd7\xc9\x34\x64\x5e\xa9\x74\xd8\xe0\xd2\xe1\xaf\x60\x61\x3d\xb4\xf4\x2e\x86\xe3\x2b\x48\x5d\xc8\x01\xb5\xa4\x53\x29\x68\x50\x16\xce\x34\x1f\x13\xe3\x3c\xb5\xec\xda\xf7\xd1\x2c\xf3\xd0\x2f\x95\xae\x26\x06\x3c\x50\x0f\x0d\xce\xbc\xe5\x55\x9b\x0f\xf0\x6c\xfb\xcc\x37\xf7\x9f\x61\x9c\xa4\xaf\x50\xc3\x67\xbe\xac\x9b\xc2\x13\xea\x7d\x36\xf6\xb6\xe8\xc9\x80\xe7\x52\x9a\xb7\x5b\xb4\x5f\x48\xb9\xb9\xda\xa2\xf7\x61\xce\x31\xa6\x0a\x97\x80\xeb\x2c\xe7\x1c\x0d\x3b\xe3\xc4\x35\x42\xea\x99\xf7\xb0\xd8\xae\x75\x6f\xfb\x30\xab\xa3\x32\x1b\x89\xb2\x4f\xb2\x41\x8c\x70\xf8\x42\x1c\x4a\x15\xd6\x33\x37\x40\xb0\xc2\x1d\x37\xbf\xf6\xaf\x1b\x45\xf7\xf0\x1e\x63\xaf\x67\xf3\xf9\x3e\xba\x04\x40\x3d\x9a\xd3\x33\xc6\xd8\xf1\xc9\x7c\xae\x1e\xa7\x79\x2b\x85\x66\x5e\xaf\x28\xe0\xd4\x87\x9f\x80\x55\x02\x4e\x65\xf0\xf5\xcc\x03\xb6\xf9\xe3\x40\x32\xf6\xf0\xe4\x5c\x63\x40\x05\x7d\x3d\xf2\x60\xe8\xc4\xa2\x65\x1a\xe4\x1d\xdb\x9e\xf6\x09\x4c\xb9\xf9\xd8\x06\x5e\xd1\xf6\x8b\x49\x35\xbc\x02\x93\xbe\x6f\x03\xca\xcd\x61\x07\x73\x89\x62\x12\x1a\x92\xd1\xb7\xa4\x5f\x14\x51\xd0\x76\x47\x26\x04\x98\x20\xf2\xae\xbf\xae\x7e\xbf\x35\xa2\x03\x49\x3d\x62\x31\x7b\xe3\x41\x30\x14\xa3\x91\xe5\x39\x91\x6b\x46\xdb\x0b\xfb\x5a\x59\x5d\x97\x4a\x46\x6c\x4a\xaa\x12\x2f\x24\xcc\xd3\xb3\x75\xc6\x6e\x0e\x60\x1e\xe2\xe3\x34\x9a\xcf\x8d\x58\x0a\x66\x46\x4c\x76\x2d\xb1\x71\xc7\x8d\xc9\xc2\x63\xd1\x23\x3a\x11\x42\x5b\xac\xe6\x5f\x54\x06\xdd\x13\x54\xba\x0c\x98\x0c\x9c\xd1\x13\x4c\x94\x80\xd6\x70\x22\x37\xff\x5a\x11\x07\x31\xdf\x04\xe1\x9c\xea\x46\x84\xf9\x16\xa0\x2b\xf5\x84\xc5\x66\xb4\x4d\x7b\x2c\x36\x7f\xf8\x9c\x0e\x58\x6c\xde\xfa\x38\x9c\x02\xdd\xb7\xc3\x2f\xf4\xf1\x5b\xcc\xd4\x63\x36\xd4\x3d\x09\x69\xc4\x7a\x74\xc2\x62\xf3\xff\xcb\xdd\xbb\x7f\xa5\xae\x7b\x8b\xa3\xbf\xaf\xbf\x42\x3d\x1e\x46\xbb\x08\x5d\xa0\x4b\x70\xb5\x66\x39\x10\x41\xc0\xb7\xe2\xb3\xb7\x77\x8f\xf4\x09\x52\x0a\xf2\x50\x41\xfb\xbf\xdf\x91\x99\xa4\x4d\x11\xd7\xde\xe7\xf3\x39\xf7\xdc\x7b\xbe\x7b\xb9\x69\x9b\xc7\xcc\x6b\x26\x99\x33\x99\x0f\xde\x21\x7f\x39\xc3\xc1\x68\x18\x01\x33\xc5\xe4\xbe\x8c\x12\xc6\x33\x98\x46\xc5\x3d\x7c\xd9\x53\x66\x66\xd1\xd2\xa6\xf3\x91\x37\x41\xa7\x13\xa2\xee\xbf\x60\x08\x99\x74\x87\xe3\xe9\x5f\xc0\x09\x6c\x89\x0c\x33\xb3\x24\x47\xd0\xb5\x35\x97\x53\x5e\xe8\x8a\xb9\x94\x47\x35\x1c\x73\x62\xe1\x17\xc3\x31\x23\xeb\xe3\x43\x39\xe1\x3a\x90\x8b\x21\xc9\x87\xf9\x99\xa7\x22\x1a\x81\x43\x95\x0b\x1a\x8f\xc0\x90\xe4\x88\xb6\x1c\x45\x18\xf0\x22\x32\x37\xdf\x2c\x10\xc7\x0f\xc9\x54\x61\xfb\xab\x14\x16\x05\x8a\x1a\x23\xd7\x0c\x2d\x1c\xf1\x6b\x5a\xde\x0f\x74\x7d\xa0\xc0\x99\x50\x50\x0a\xdf\x35\x47\x22\xf0\x53\x75\x62\x97\x99\x7a\xf6\x55\x43\x21\x98\x3c\x51\x1c\xc8\xe5\xee\x7a\x8a\x83\x7a\x3d\xf6\xe6\xb2\x37\x91\xb5\x3e\x24\xaa\x61\x83\x61\x8a\x6f\x04\x56\xde\xc7\xde\x2a\x76\xf6\x5e\xe1\xda\x63\x34\x49\xc6\x4b\x39\xa7\x11\xb9\xde\xf1\xf1\x75\xc6\x67\xb9\xb4\x58\x5c\x4b\xc6\x02\x52\x6b\x1c\xf2\x32\x0e\x9e\x49\xe8\xf2\xcd\xef\xca\xf8\x2b\x5c\x2e\x89\xe0\x71\x12\x0c\x0e\x54\xe9\x2b\x73\xfe\xe1\x48\x52\x50\x9d\xbf\x2d\x8a\x2f\xca\xcc\xf9\x88\xe1\x31\x67\xbd\xa6\xcb\xee\x86\x8a\x0c\x30\xbc\xd3\xc5\xc1\xd3\x5c\x92\xc6\x6e\x49\xb1\xdb\x9f\x62\x7f\x4a\xb1\x3b\x34\x96\xdb\xa4\x02\x57\x25\xde\x52\x85\x25\xdb\x71\xff\xa0\x73\xae\x5d\x56\x0c\x78\x82\x81\x3e\x60\x8f\x79\xe2\xf8\x05\xa2\xdf\x2c\x50\xb2\x4d\x40\x9f\x5e\x67\xcc\xfa\x0d\x3c\xd0\x20\x90\xc9\xe1\xeb\x8c\x5b\xf4\x40\xb8\x42\xbf\xf4\x31\x57\x1d\x0c\xb4\x4b\x9f\xd1\x10\x01\x3f\xbd\x7c\x4b\xbc\xfe\x75\x2f\x12\x95\x79\xdf\xc6\x0e\x7b\x9b\xba\x89\x3a\xc7\x9c\x5b\xbc\x98\xf2\x33\xd1\x47\x46\x76\x1c\xbd\xb2\xe7\x15\x7f\x5e\xf2\xe7\x09\x7f\xf6\x66\xec\x79\x5f\x65\x7a\x07\x0f\xca\x19\xe3\x02\xce\xe0\xcc\x65\xb0\x44\x1d\x9c\x4c\x15\x5e\x1a\x57\x17\x4f\x77\x99\xdb\xa3\x25\x2f\xc5\x81\xe1\x98\x0f\xb6\x30\x14\xe6\x62\x47\x7b\x1e\x28\x92\x38\x04\xe1\xd5\xe7\x46\x49\xc0\xb9\x90\x71\xc7\x2c\x8a\x20\x1b\xad\x94\xa1\x00\x79\x7d\x6e\xc7\x8f\x79\x23\x0a\x68\x49\x20\x21\x02\xf9\x09\x6d\x19\x7f\x97\xdd\x4c\x85\x7b\x36\xdf\xce\xc0\x71\xd3\xfd\x11\x33\x52\x6a\x23\x16\x1c\x32\x32\xe9\x81\xa3\x87\x08\xa4\xf0\x7a\x33\x01\xef\x9c\x0e\x20\x0d\x40\xb6\xd6\x5c\x80\xb6\xb9\x16\xf6\x55\x23\x30\x61\x4d\x4f\xdf\x68\x25\xa4\x8f\xde\x4c\x35\x02\x6c\x6b\x4f\x5d\x62\xd0\x7a\xcf\x1a\x10\xbc\xa8\x29\xea\xfe\x6a\xb1\x0c\x70\x4f\x55\xb5\x0a\x25\x55\x07\x37\xba\x57\xaf\xa2\x7f\x1e\x79\x2f\x1b\x84\x0e\x2d\x0f\xdc\x4c\x03\x2f\x93\x40\xd2\xe4\x81\x8e\xf0\xd7\xc4\xde\x28\x27\x26\xde\x28\x64\xe9\xe3\x48\xfe\xb8\x7c\xa5\xf0\xee\xab\xd8\x36\x6c\x00\xe5\xca\x52\x85\x17\xd7\x19\x6f\x17\xa0\x66\x1d\x68\x67\x8e\xc2\x33\x8a\xc2\x7b\xbe\x42\xa3\x17\x91\x42\x61\x69\xa3\x2a\xb2\xb5\x51\x95\xe9\xcc\x24\x39\x4e\x5e\x85\x75\x71\x69\x90\x1c\x35\x3b\x1a\x0e\xa5\x28\x9a\x49\x43\x79\x56\x5a\x7f\xa9\x4f\xec\xc7\x75\xac\xd8\xda\x53\x63\x9f\xfe\x68\xed\x08\xe8\x2b\xa6\x9d\xcd\x73\x1c\xbd\xaa\x48\x74\x98\x68\xa1\x64\x5f\xf0\xe8\x93\xcf\x18\x3e\xfa\x0e\xbe\xee\x29\x8e\x76\xbe\xea\xfe\x60\x13\x6e\x18\xaa\x74\xac\x5d\x70\x57\x94\x11\xf0\xe4\x82\x23\x9e\xea\xb2\x7e\xa4\xe0\x19\x13\xa4\x01\x8e\xd0\x0e\xa0\xbd\x9b\x9a\x6e\x69\x7e\x9a\x4a\x8f\x4a\x18\x2a\x14\x95\x34\x66\x39\x2c\x73\xe2\x4c\xa3\xb2\x61\x8e\xf6\xe0\x83\xa6\x21\xdb\x1d\x28\xe3\xf1\x05\xf6\xb2\xc3\x34\xbf\x49\x12\xe9\x91\x19\xd1\x1d\x5f\x1c\x7c\xb5\x0f\xd1\x7d\xa0\x6f\x14\xb5\xad\x8d\x58\x45\x41\x36\x19\xf9\x9c\xac\xb4\x21\xcb\x11\xb3\x06\x27\x66\x13\x28\xc6\x83\x3a\xbb\xa3\x05\x55\xd3\xd5\x7a\xae\xa5\x8d\x3c\x74\x79\xcd\x7d\x13\xaf\x97\xe8\x9f\xe9\x37\x09\x2d\x09\x39\x66\xcf\xb1\x2c\x15\x91\x27\xc5\xd5\xbc\x88\x66\x4d\x93\x16\x21\xa9\xa3\x79\x91\xa5\x7e\x82\xe0\x68\xf6\x70\xec\x7a\x63\x4b\xcd\xf8\x00\xdd\x5c\xd2\x9b\xd6\x9e\x1a\x80\xa0\xe9\x58\x1f\xbd\x82\xa0\x5a\x80\x7c\xec\x98\x9b\xcf\x96\xf6\xb0\x40\x01\xf6\xcd\x23\x2b\xef\x33\x6f\x82\x7d\xec\x83\xf4\x87\xcf\x3c\x07\x86\x98\x87\x47\x98\x87\x8c\xb0\xa3\xb5\x2a\xda\x1b\x9a\xb0\x97\xf9\xb2\x60\xce\x20\x22\xe0\xbf\x6d\x6b\x27\x56\x29\x91\xc5\xf6\xc6\x17\xd8\x1b\x47\x68\xa2\x1a\x2f\x74\xa7\x1b\xa1\x49\x5e\xe9\xff\x9e\xec\x47\x7a\x21\x52\x45\x60\x5e\x09\x7e\x8f\xf6\x43\xbd\x10\xaa\x90\x92\xef\x7a\x23\xec\xd1\x7d\xef\x05\xcd\x90\xab\x1a\x57\xb4\x37\x46\xc8\x6e\x82\xb6\xce\x08\x2f\x39\xa0\x8b\x59\xfa\x51\x5f\x09\x12\x6f\xd0\x69\x2e\xb2\x9c\x8b\x8f\xf0\xeb\x98\x80\xbb\x3a\x6d\xe7\x1f\xe6\xf7\xf8\x22\x8c\x3d\xba\xe0\x8d\xc4\x7a\x0e\x7d\xb9\xad\xed\x20\xd6\x8d\xf0\x46\x57\xbc\x0a\xa2\xfd\x57\xa8\xa8\x90\xdd\x63\x6b\x96\x4f\xf3\x2f\x55\xe4\x42\xae\x88\x2b\x55\xa4\x40\x61\x45\xf0\xeb\x83\xd7\x4b\xa8\x91\x2b\x6a\xe4\xb2\x11\xe5\x3b\xcc\x88\xa2\x0b\x1d\x5d\x1a\x75\x9f\x06\xc1\xf7\x39\x6b\x8a\x03\xf3\xa4\xc8\x57\x79\xba\xb8\x60\x47\x6b\x47\x8c\x7a\x84\x4f\xd8\x32\x13\xf4\x12\x8b\xde\x7b\x71\x8f\x68\xdd\x0b\xc6\x7b\x82\x93\xb2\xee\x05\xfa\x74\x90\x16\x88\x29\x4a\x54\x44\xd8\xf6\x4e\x0b\xe9\x5e\xe0\xe2\x9e\xad\xf5\xc7\x66\xdb\xda\x87\x9b\xcb\xfe\x78\xb5\xe1\xe0\x8b\xb9\xb5\x0f\x8e\x3a\x39\xa5\xa0\x8d\x1c\x45\x55\xf5\xcb\x24\x28\x40\x7c\xcb\x57\xe9\xa2\x41\x0b\xd2\x4d\x49\x5d\xba\x2b\xaa\x7b\xfd\xa4\xd8\x5a\x50\x5d\x61\x2d\x97\xce\x85\x91\x67\x5c\x73\x22\xd6\x46\xf3\x06\xf2\xe8\xac\x54\xa5\xb0\xc5\x94\x80\xdb\x33\x39\xec\xec\x10\x79\x7c\x0e\x42\xc1\x92\x9d\x66\x49\x8a\xd4\xc6\xa7\xa0\x02\x69\x5b\xaa\x61\x63\x4a\x0f\x98\xb6\xc4\xa2\xd8\x6a\x2a\x28\x64\x8b\x4d\x81\xae\xc7\xa3\x27\x30\x89\x9f\xdd\x91\xec\xe5\x45\x73\xe9\x1c\x86\xb1\xbf\xbd\x66\x62\x42\x8a\x8c\x99\x51\x7d\x3b\x97\xb3\xb5\xe8\x52\x64\x7c\xa2\x70\xcc\x26\x25\x38\x9a\x16\x98\x34\xd5\xee\x66\xc8\xc6\x41\x5f\xb1\xcd\x4d\x3a\x46\x66\xd3\xc2\xb8\x39\xd9\xb7\xb5\xab\x08\x53\xf6\x1b\x02\x5a\x13\xb8\xfb\xa6\x41\x45\x4a\x87\xbe\xd9\x78\x7e\xa2\x08\x15\xb7\xb9\x63\xfa\xcf\x96\xc2\xac\x0d\x38\xe8\x6e\xa6\xbb\x70\x85\xa0\xdb\xb1\x1a\xc7\x2a\xb8\xde\x0d\x0c\x57\xeb\x3a\x8a\x8d\x2e\x9a\xa0\x5f\xcb\x3e\x9a\x13\xe9\xa3\x25\x7f\x04\x93\x0c\x35\xfe\x24\x3a\x80\x9f\x98\xda\xfc\xb8\x74\xde\xd0\x97\x4c\xe5\x06\x13\x61\xdd\x76\xd1\x60\x67\xa3\x17\x89\x15\xdc\x03\x1e\xd2\x9c\xe8\xf0\x6c\x25\x69\xab\x8d\x18\x42\xdc\xe6\xd7\xf0\xbc\xe6\x32\xbc\xd3\x57\xf2\x15\x40\xbf\x19\x7f\xe1\x4b\xeb\x4a\x42\x92\x0e\x7b\x37\xab\x3e\x72\x10\xf1\x91\xbb\x4f\x7c\xfd\xde\x43\xe7\xe8\xde\xb3\x64\x66\x44\xa6\x48\x80\xfc\x7e\xf5\x18\xa1\x60\x0f\x41\x81\x43\x32\xfd\xf7\x69\x7f\xd5\x6e\x66\x0a\xa3\x56\xd6\x1d\x70\x05\x10\x06\x19\xa9\x50\x96\xd0\x01\xb5\xd5\x57\x8f\x79\xf8\x07\x53\x31\x8e\xb9\x65\x61\x4c\xfc\xfd\xf5\xa2\xbe\x5e\x82\x6d\x63\x5b\x0a\x10\xde\x26\x1d\x60\xc3\xd9\xe9\xb5\xaf\x0b\xf3\xcd\x14\x17\xe6\x0d\x86\x0c\xd1\xa5\xee\x31\x8c\x78\x9f\xb4\x75\x1f\xbd\x8d\x75\xc7\xfc\x69\xed\xd3\x1f\xee\x95\xa3\xa9\x3b\xe6\x8e\x04\x3c\x8e\x59\xcf\x1e\x65\x21\xba\xcd\xd5\x10\xdb\x11\x40\x44\xe7\x3d\xfd\xb4\xa7\x50\x50\x2a\xba\x59\xe8\x8e\x59\xce\xc2\x5c\x32\x80\xcc\x3c\x7f\x24\x7d\x77\x97\x3d\x6c\xb1\xa1\xf7\xba\xb6\xe2\x32\x79\x44\x10\x50\xa4\xe4\xba\x4b\xf9\x46\x47\x3b\xa9\x53\xc2\x8c\x8f\x67\xf0\x46\x90\x27\xcf\xd9\xfb\xaf\x4e\x6e\x04\xd5\xc5\x8f\x3e\x5c\xed\x3c\xeb\x09\x0f\x13\xba\xf3\xa2\x08\xd3\x98\xc0\x42\x23\xec\xc1\x7e\x1b\x54\xcd\x88\x93\x15\xc6\xe5\xb5\xc2\xb6\xa7\xf5\x12\x1a\x21\x73\x02\xd4\x04\x9a\x37\x54\x83\x3c\x29\x51\x4a\x50\xf0\x44\x45\x48\x44\xe9\x09\xba\xa2\x01\x4d\x91\xc9\x2e\x48\x0a\x74\x76\x08\x56\xf4\x80\x74\xb3\x91\x2f\xb7\xe7\x72\xc9\xc8\x80\xa8\xad\xbb\x4f\x09\x15\xdd\xd1\x1e\x6a\x28\xc4\x8e\xd6\x73\x0d\x25\xe0\x6a\x75\xc1\x3e\x5d\x04\x03\x14\x5a\xaa\x44\xac\x4e\xc1\xe3\x11\x7f\x7e\x7c\xd0\xbd\x41\x76\x75\xca\xd9\x18\x76\x44\x6c\x44\xb8\x6f\x86\x16\x37\x50\xc0\xe9\x89\x7e\x93\xd2\x10\x91\x76\xd6\x46\xb7\xcd\x94\x22\x65\xa2\xcc\x91\x76\xda\x16\x56\x07\x44\xc2\xd3\xb6\x39\xb1\xd0\xe9\x9c\xa8\x46\x84\x99\xbb\xa0\xbd\x48\x1b\xb8\xc2\xfb\xf8\x08\x17\x8d\x91\x10\xd8\x1c\xa9\x3d\x5f\x99\xc0\x30\x4d\x88\x12\x21\xdf\x1c\x59\x94\x9e\x86\x49\x38\x81\xc9\x3a\x6f\x20\x47\x8b\x2e\xf9\x6c\xf5\xf8\x93\xb6\x5d\x4c\x61\x4b\x45\x41\x2e\xc7\xdb\x68\xd6\x2c\x65\x92\x31\xbe\xd1\x6f\x4a\x76\xde\x6d\xad\xcf\xd9\x48\xd8\x09\xe8\x44\x55\x4a\xbf\xb1\xab\x8a\x8d\xca\xc1\xf8\xb6\xb9\x5f\x04\x2f\x39\x2e\xff\x72\xf5\x42\xc9\x70\xf8\x47\x49\xe7\x9e\x1b\xf8\xc1\x9a\xe1\xaf\x63\xd7\xf0\xf3\x58\x72\x8b\xe9\x5b\x4c\x41\x01\xde\x4a\x96\xe1\x63\xec\xed\x13\xe6\x37\x19\xf5\x55\x9d\x80\x53\x61\xd4\x57\x63\x6e\x03\x3b\xe3\xfe\xe5\x5a\xc6\xe5\x04\x8f\x0d\x07\x07\x4f\x8a\x03\x4e\x7a\xbe\xf0\x07\x66\x9b\x57\x73\xab\x40\xe8\x6f\xbc\xec\xdd\xcb\x59\x42\x7c\x87\x1d\xfc\xf9\x8c\xba\x82\xfe\x0e\x91\x79\xe4\x23\xb7\x29\xaf\x8e\x7d\xad\x1d\xa1\xbe\x76\xde\x43\x7d\xed\x66\x21\xfa\xdb\xf0\x19\xd2\x86\x74\x61\xf4\x6d\xcd\xdd\xc1\x18\xdf\x4c\xf6\x7d\xed\xda\x55\xfa\xe6\x9d\x63\xa1\xbe\xf6\x86\xfa\xda\x1c\x6d\x15\x51\xaf\x4e\xff\xde\x89\xad\x7b\xe9\x85\x72\x9f\xd6\x92\xdf\x29\xf7\xd9\x11\x8b\xe6\xd8\x8a\x8a\x86\xfc\x5e\x5b\x04\x5e\x78\x28\x74\xf4\x73\x64\x0f\x43\x97\x2e\x8d\xd7\x1e\xfd\xed\x38\x74\x91\x41\xa1\xaa\xfb\xda\xd0\x53\x44\x69\x0c\x2a\xcf\x4a\xab\xd7\x07\xd2\xc0\x6d\x42\x43\xf8\x61\x81\xd9\xb7\x70\x08\xa4\x8c\xec\xb9\xe3\xd3\x5a\x0e\x7b\xe9\x7d\x55\x1b\x57\x8d\xc7\x25\x7b\x34\xc2\x37\x8a\x36\xae\x22\x02\xea\xe2\xbc\x14\x42\x8b\xc0\x61\xa8\xf0\x63\x15\x93\x58\xb2\x17\xba\x92\x7c\x42\xc4\x78\x2b\xd3\xb5\xd4\x18\x18\xab\x47\x06\x6f\x45\x39\xee\xaa\x42\xd2\x12\xb8\x86\xf8\x80\x72\x6f\x9a\x13\x0e\x23\xef\x6c\xe8\x7a\x0a\x25\x1f\x1c\xa0\x71\x90\xdf\x24\x94\xde\x60\xa6\xb4\xb3\x74\xd4\xa3\xac\x81\xa8\xd5\x7b\x29\x53\x53\xef\x31\x6a\x02\x38\x99\xab\x57\xe3\xfa\x88\x28\x8e\xf6\xf4\x08\x78\x69\x74\xe0\xab\xcf\xbf\x6e\xe0\x2b\x64\x5f\x71\xfc\x8d\x9d\xfa\x64\xce\x1d\xaf\x92\x23\x1f\x55\xbe\xf7\x3d\xe9\x89\x2b\x3c\x20\x64\x45\x18\x27\x77\x02\x7e\xf2\xf3\xca\x33\xdf\x57\x79\x04\x3f\x67\x32\xf8\xe1\xd3\x27\x10\x9c\xc1\x15\xf1\x52\xe2\x93\xd7\xcf\xe5\xbd\x4a\x89\x4f\x5e\xa5\xc4\x97\x9f\x13\x5f\xca\x89\x2f\xe5\xc4\x57\x9f\x13\x5f\xc9\x89\xaf\xe4\xc4\x47\x9f\x13\x1f\xc9\x89\x8f\x78\xe2\xb3\xe5\x03\x5a\xd6\xb5\x7f\x7b\xea\xcb\x92\x2d\x6a\x2b\xa4\x5e\x79\xb1\x94\x8b\x96\x8e\x15\x6f\x52\x89\x83\x44\xa0\x04\x36\x81\xc5\x39\xab\x51\x83\x1f\xf1\xdd\x3e\x71\x9d\xf8\x16\x37\x95\xe9\xb3\x9a\xa6\xb7\x3f\xdc\xe4\xc1\xcd\x9b\x65\x3e\xcf\x2d\x85\xd0\x37\x61\xc7\x80\x42\x3c\x88\x14\x98\x18\x22\xfb\x4d\xa4\xd8\x68\x38\x4b\x06\xbd\xc5\x42\x46\x34\x24\x81\xda\xa0\x41\xe7\x53\x36\x13\xce\xe8\xc7\xf5\x94\x08\x59\xa1\x36\xfd\xbe\xa0\xdb\xad\xcb\xe2\x2e\xa7\xa0\xd3\x0d\xef\x57\x34\x1d\xaf\x9a\xf0\x3f\xeb\x8a\x17\x5b\xbc\x38\xc2\xf8\xc0\xed\x13\x7e\x3f\xef\xe9\x04\x08\xa5\x44\xce\xf5\x4d\x77\xd1\x5c\xb7\x63\x4a\x66\xc7\x2d\xa2\xdc\x5c\x2f\x79\x9e\x66\x2a\xe5\xb4\x79\x37\xd7\x06\x91\xfa\x30\xe9\x0b\xd0\xeb\x30\x08\x6d\xb1\x10\xea\x1f\xfb\x34\xe0\xf6\x29\x09\xb8\x7d\xa2\x01\x8d\x59\x12\xd0\x98\xc9\x22\x4b\xc6\xe6\xa7\x92\xd3\xd1\x77\x99\x74\xb5\x8a\xb1\x1b\x31\x73\x8e\xc9\xe0\x86\xd9\xd5\x8d\x7b\x9a\x2e\xec\x20\xf1\xc7\xbb\xfe\x7c\x80\xb9\x1b\x62\xcd\x7b\x1b\x91\xc8\x05\xa7\x17\x78\xeb\xfb\x55\x5f\x21\xea\x8f\x1d\x96\x6a\xb1\x09\x10\x2e\xfa\x8a\x43\xe9\xe1\xb0\x09\x26\xe9\xee\x36\xbf\xb8\x40\xb7\xb5\xf6\x2d\xf8\x4a\x7e\x58\x68\xc4\x51\x28\x8f\x16\x12\x85\x68\x21\x99\xc2\x6a\x09\xef\x51\xa0\x1a\x64\xcf\x65\x17\x7c\xfb\x24\x8f\xb7\xcb\x45\x9d\xfc\x76\xd9\x5d\x1e\xa5\x65\x0a\x34\x88\xd6\xe6\x8a\x77\xcd\x62\x53\xfd\xb1\xf5\xc3\xf9\xa1\x78\x66\xd5\xfa\xa1\xb8\xec\x26\xb0\xe0\xf2\x7b\xc3\x44\x22\x74\xdc\xd3\x4d\x3b\xef\x20\x92\x77\x2c\xf4\xd4\xd5\x4d\xbb\xe0\x20\x52\x00\x55\xbd\xa4\x87\x06\xd9\x1e\xba\xa7\xec\x76\x73\xb1\xda\x07\xe6\x79\x0f\x83\x89\x4d\x20\xf3\x53\x83\xf3\xfc\xf0\x47\x9c\xf7\x38\xf8\xb4\x0f\x66\xd6\x8e\xfb\xc2\xb5\x11\xf3\xc2\x7f\xdc\x07\x2a\x37\xef\xb2\x13\x1f\x97\x29\x5e\xc1\xa9\x8f\x4a\x11\xf8\xaa\xaf\xb8\xd0\x51\x92\xb3\x6a\x67\x4f\xfb\xf5\x5d\x76\x8e\x7e\x2b\xb1\x36\x6c\x2b\x08\xf0\x3a\x3b\x1a\xcb\xe5\x5a\x14\xed\xeb\xaf\x62\x42\x0d\xc5\x39\xbf\x6d\x0b\xa9\xe8\xd9\x21\x9f\xcc\x6d\x76\xf8\xd0\x1c\x29\xb7\x4b\x78\xc5\x37\x85\x75\x0e\x3d\x6d\x27\x9d\x92\x09\xfb\xab\x32\xa3\x2a\xda\xe5\x3d\x3b\x09\x15\x46\x2c\x84\x10\x9f\x76\x37\xc3\x78\xde\x48\x70\xd8\xdc\xb4\xb4\x49\x3b\x97\x73\x38\x9f\xa0\x1a\x50\xae\x76\x79\x8f\x3f\x15\x4d\x19\xe2\x75\xec\x37\x33\x45\x03\x84\xab\x88\x9b\xfb\xa7\x1f\x37\x8b\x4c\x02\x3b\x97\xa3\x83\x69\x23\x88\x3c\xef\x49\x75\x1a\xf2\x6a\xf3\x7e\xb9\x6d\x0b\x2b\x84\x9f\x04\x2e\x84\x94\x52\x5b\x5a\xb2\x87\x74\x5e\xbe\xb7\x23\x1d\x00\xb7\x23\xca\x01\xf1\x32\x62\xe3\xe2\x82\xab\xe9\xd8\xa8\xa8\xc6\x2a\xda\x2e\x16\x25\x8b\x1e\x69\xc1\x89\xc5\x0e\xe9\xca\x23\x6a\xa6\x7b\xf0\x3a\x81\x72\xd2\x16\x09\x2e\xdc\x6c\x0a\xce\xcf\x6b\x32\x0e\x78\xd1\xd0\xa1\x93\x0d\x9b\x75\xea\xbe\x83\xd7\x4b\xba\x72\x47\x17\x72\x04\xb6\x3e\x13\xec\x61\x0c\x9e\xcf\x33\x56\x1b\x3a\xe8\xd7\xf2\x8e\x74\xe0\x68\x02\x63\xb7\x29\x48\x63\xf8\xb4\x9b\x02\x70\x2e\xb7\xee\xee\xdf\x53\xb0\x3a\x58\xf6\x64\x9d\xce\x43\xee\x98\xf3\x89\xe4\x2a\x14\x63\x4c\xb4\xd9\x21\x88\x4b\x08\xb8\x48\xe1\x90\x3e\x3e\x1c\x35\x97\x1b\x35\xd9\x6d\x77\xd2\x46\xa8\xd5\x41\x43\xb0\x8a\xa2\xfc\x7d\x85\xa5\x64\x8d\xd1\x69\xf3\x90\xb3\xc4\x57\x52\x56\x33\xe9\x48\x96\xfc\x1d\x2a\x66\xd0\x5a\x88\xf1\x25\xab\x06\x77\xc6\xc5\xe9\xee\xae\xf9\xde\xaa\xa2\x9d\xa2\x6c\x9d\x01\x9a\xf6\xce\x06\x84\x25\xbd\xb8\x50\x08\x1f\xe2\x24\xd5\x90\x15\xca\xdd\xb1\x11\xed\xb6\x9d\x9a\xa0\xa5\x5f\x2a\x22\x02\x8f\x32\x3c\xeb\x75\x26\x17\xf4\x58\x92\x6b\x76\x48\x73\xf1\x0a\xaa\xf1\xed\x3f\xdb\xf3\x13\xd8\xcf\xf2\x79\x39\xa3\x3d\xb6\x31\x93\xa2\x27\x68\x4b\xd0\x2e\x22\xc8\x4e\x82\x6e\x27\x44\xdc\x26\x5e\x6f\x63\x6e\x87\xf4\x19\x3b\x70\xbd\x74\x31\x50\x5c\xb3\x5e\xb5\x14\xc7\x9c\x5b\x2a\xe2\xef\x9a\x17\xb9\xdc\x0f\xbb\xba\xcf\x33\xd0\xb0\x02\x7f\x37\xe7\xec\xd8\x81\xdf\x3e\xfa\x04\x4b\xfe\x6c\xc7\x4b\xdb\x12\x4d\xb7\xb4\x2d\x13\x9a\x07\xcc\xc9\xc2\x1b\x14\x6a\xab\x12\x5d\x20\xa5\x6c\x3e\xab\xe0\x81\x52\xbb\xde\xce\xe5\x6c\x78\x83\x0a\xec\x3b\x58\x21\xda\xe5\x76\x9e\x68\x57\xdb\xea\x8f\x2d\xdd\xde\x93\xa2\x68\xa0\x6e\xff\x86\x10\x5a\x73\xc0\x5c\x9a\x3c\x35\xda\xb6\x4e\x41\x0a\x19\xbc\xc4\xff\x35\xa1\xfd\x25\xdc\x2e\x42\x15\xab\x4f\x20\xa4\x02\x90\x91\x80\x47\xd1\xb7\xf6\xa4\xd0\x62\x10\x05\x8b\x14\xbb\xc0\xd3\xa8\x3f\x28\xe0\xd4\x8a\x06\x38\xe7\x65\x3a\x41\x4e\xe6\xc6\x61\x92\xed\xa8\x0b\xba\x46\xd6\x17\x40\xee\xc0\x7b\x6d\xc1\x48\x25\xe7\xb7\x9b\x8a\x45\x0b\x29\x5a\x8d\x0b\xca\xae\x29\x1b\x79\x27\xbf\xa1\xae\x0d\x66\x93\xe9\x9a\xed\xad\x91\xe9\xda\x60\x38\x99\xae\xa5\x09\x99\x1c\x2d\x4d\xe8\xe6\xcf\x3d\xa1\x0f\x76\x46\x8b\x68\xd0\xe2\x7c\xf6\x7e\xb8\x90\x29\x33\x4f\x8c\x80\x9f\xcb\x79\xbf\xfd\xd5\x15\x00\xb9\x5d\x0a\xd8\xfb\xbb\x1a\x24\x29\x7d\xa8\x82\x87\x1f\x3c\x90\x07\x63\xa7\xf8\xe0\xf1\xeb\x60\x41\xd0\x11\xad\x83\x8f\x1f\x1a\x44\xf1\x51\x8f\x80\x64\x8c\x38\x6a\xf2\x5e\x61\x0a\x08\x81\x51\x69\x66\x3c\xac\x52\x0f\x78\x60\xea\x01\x0f\x7f\xd0\xe5\x8c\x79\xec\xbf\xa9\x3c\x40\xcc\xa2\x95\xd5\xeb\x9a\x36\x97\x84\x5b\x45\xdd\x0c\xc6\xbb\x33\x61\x7a\x36\x7b\x3a\xb7\x40\x77\xb5\xaf\xcd\xc0\xac\xb9\x96\xa5\x88\xeb\xfd\x4b\x31\x6b\x9f\x09\x76\xb8\x51\x00\x2f\x52\x9c\xa1\x42\xd0\xe2\x10\x4c\x02\xd8\x85\x3e\xea\x63\xa7\xd0\x07\x6f\xfb\x75\x4b\x51\xec\x42\xa0\xfe\xd8\x52\x51\xc4\xbf\x9d\x42\x9f\x7e\x33\x40\xaf\x63\x61\x44\x20\x44\x11\x0a\x50\x5f\x35\x42\xcc\x63\xe8\xc8\xb7\x29\x1a\x3c\xbe\x10\x55\x65\xa7\x45\xa1\x39\xb6\x50\x84\x43\xb3\x6a\xa1\x09\xe6\xb5\xd5\xce\xef\x95\xd4\xdf\xf5\x08\x41\x39\xd1\xf7\x89\xaa\xa2\x3e\x2f\x74\xc4\x2a\x91\x0f\xcd\x23\x0b\x8d\x78\xca\x88\xa5\x1c\xfd\xa0\x29\x45\x75\xa3\xc2\x88\xa5\x64\xb7\xdb\xa2\x7a\x7d\x14\xa2\x00\x8d\xf8\x5c\x0d\x70\xc8\xc9\x6c\xa8\xc2\xdd\x14\x07\x9c\xab\x73\x05\xe5\x33\xc5\x5e\x22\xfe\xe0\xf3\xc8\x1d\x36\x8b\xce\x1a\xac\x60\xb6\x2c\x6e\x7d\x57\x78\x83\xcd\xb1\x95\x17\xaf\x55\x4b\x45\xa5\x1f\xdb\xaa\xe0\xd3\xde\xba\x04\xdf\xd1\xcc\xe6\xf1\x2b\x41\xed\x57\x62\xa1\xde\x81\x38\xac\xef\x12\x06\xf8\xe4\x95\xa0\x92\x6a\x7c\x63\x4b\xf1\x2d\xee\xd0\xc0\xd3\x86\x18\xbd\x67\x3c\xcb\x12\x26\x9d\x3a\x7e\x49\x42\x28\x13\x7e\xad\xb4\x8f\x78\xdc\x4b\x8f\x60\x6e\xc8\xe7\xa9\xcb\x19\xa6\x73\xbc\x09\xc5\x1c\xa1\xf6\x11\x41\xd7\x87\x3c\xa9\x5f\xc1\x57\x34\x9c\xd0\xe2\x7f\x6c\x8b\x50\x9e\xda\x7b\x25\xe8\xe8\x88\xa0\x8e\xc0\xa2\xa0\x82\x7d\x8a\x31\xa7\x47\x70\x58\xc3\x2b\x9b\x1e\xd9\xf0\xbe\x8a\x05\x55\x79\x47\xd9\x34\x82\xdc\x84\xce\x8c\x7a\xbc\x2f\xc8\x94\xa0\x73\xa1\x55\x77\xc6\xc2\xba\x52\xd8\xdb\x0e\x7e\xcd\xb6\x78\xd1\x25\xf8\x4d\x6a\x32\x54\xe4\xac\x4a\xe8\xfc\xbf\x63\x4e\x36\xd8\xe8\x55\x59\xe5\x1f\xdb\xa8\x3b\x44\xc7\xa2\xea\xd3\x29\x3f\x0f\xa9\xae\xe3\x4b\xee\xf4\x61\x8c\xdf\xa3\xe1\x78\x40\x42\xdd\x65\x87\x47\x5e\x6c\xb8\x18\xfc\x01\x1e\x57\x45\x95\x1f\xbb\x84\x05\x9d\x26\x41\x0f\x5d\x82\xdd\xfd\xdb\x90\xe8\x37\x21\x17\x9a\x19\xdc\xb3\x44\x47\x49\xa2\xab\x1e\xc1\x25\x2e\x7d\x4f\xee\x78\xe1\x23\x3e\x43\xe4\xb3\x09\xaf\x8a\xbf\xf5\x0e\xf8\xa4\x6a\x48\x11\xaf\x5d\xc2\x46\xe7\x2c\xe9\xbf\xcd\x2e\x63\x20\x43\xde\x11\xda\xdd\x14\xf8\x00\xc4\xf9\xb5\x22\x77\x95\x2b\x11\x1f\xf3\xe6\x27\xe7\xf4\x45\x38\xb6\x79\xad\x82\x4b\xd9\x3d\x17\xdc\xca\xa6\x82\x04\x10\xe3\x58\xda\xe8\x5e\x3b\x67\x5e\x95\x40\x36\xd0\xf0\xf7\x82\x54\x16\xb5\x8f\x3d\xd3\x87\xd3\xd1\xbe\xd6\x73\xa5\x2d\xaf\x9f\xb9\x68\x49\xcd\xb6\x65\xb7\xa7\x2a\x7c\x12\x8a\x0f\x89\x8b\x7e\xfb\x93\xc0\xe7\xa3\x42\x96\xa4\x20\x5c\x93\x68\x3d\xd7\xc2\xef\x23\x4f\x4f\x54\xf0\x62\xc9\x06\xbc\xec\x96\xff\xe0\x73\xcb\x69\x37\x35\xaf\x91\x8b\x4b\x46\xa9\xf8\xdb\x35\x5c\xd1\x1e\x8f\xee\xff\xc0\x48\x16\x84\x08\xe9\x8f\x52\xf1\xbb\x9b\xe7\x5f\xc8\xe7\x09\x8a\x3c\x41\x31\x93\xa0\x68\x01\xfb\x3a\xaf\x2b\xa6\x2f\x64\x50\x2d\x04\xef\x00\xd4\x42\x66\x92\x0e\xde\x01\x12\xf2\x2c\xd5\x70\x98\x6a\x9f\x79\xed\x58\x8a\x83\x3c\x35\x76\xb1\x63\x4e\xe6\x96\x52\x3d\xa6\xac\x2c\x7b\xbf\xeb\x66\x78\x55\x87\xee\x82\xc8\xa5\xbf\x8c\x5f\x75\x40\xef\xcd\xa5\xbf\x56\x1c\xdf\xe1\x29\x30\xdc\xc6\xb7\x3b\xed\xb6\xbc\x42\x80\x39\x1d\xec\x9a\x60\xd3\xce\x5c\xa2\x5c\x3c\x29\xae\xf6\x50\x53\xd1\x05\x97\x83\x50\x55\xc3\x33\x4b\xd6\x6f\xde\x0a\x43\xa5\x5f\xc0\x65\xc3\x91\x25\x44\xee\xf1\xe6\xb2\x48\xe0\xca\x45\x55\x7b\xae\xee\x6a\x3d\x17\x39\x5e\x34\xf5\xc6\x6c\x75\xa8\x3f\xa6\xee\x9d\x1f\x6a\x7a\xa7\x07\x45\x22\x2e\x97\x76\xe0\x31\x52\x15\xb1\xe3\x01\x15\x79\x11\x4b\xe2\x45\x5f\x26\x89\x2e\xa1\x94\x75\x7c\x37\x22\x32\xbf\x5e\xcb\xa2\x1c\x45\xfa\x22\x28\x0b\x5c\x3e\x2d\xf9\x58\xa3\x78\x76\xd6\xce\x8a\xb5\xe4\x41\xa9\xd6\x70\xf3\xf8\xe0\x89\x99\x2a\x84\xb3\x05\x2f\x9f\xff\x8c\x75\xa6\xf3\xc3\x43\xee\x0f\xcf\x8a\xef\x68\xf5\x56\x74\x38\xef\x90\xb3\x36\xeb\x84\xaa\x9f\x6c\xe9\xda\x59\x5b\x45\xa7\x6d\xd6\xca\xd3\xb6\x68\x65\xd5\xcf\xb6\x32\x06\x0d\x84\xaa\xff\x07\xe0\x7d\x80\x21\x00\xd4\x1f\x97\xf3\xdf\x69\xf5\xc7\x2f\x85\xd9\xe9\x20\x82\x11\xc8\x71\xcf\x10\x1a\x08\x63\x8b\x52\x05\x74\xbf\xee\x83\xb5\x0c\xc3\xe6\x76\x32\x1c\xec\x50\x54\x77\x55\xda\x43\xbc\x0b\xfa\x79\xff\xbb\xe2\x68\x6f\x05\x0f\xe6\x0e\x74\x19\x7b\x47\x76\x3e\xf8\xae\x94\x0a\x8a\xa3\xcd\x0b\x1e\x4c\x1c\xd0\x86\x64\xef\xaa\x25\x1b\xad\xc8\x0e\x99\x69\x19\x84\xae\x99\x92\x41\x20\x17\x83\x98\xc3\x6b\x75\xf5\xb9\xcb\xe8\x1e\xcc\x39\x25\x0a\x21\xf9\xbc\x97\x6a\x54\x80\x07\xe2\xf7\x70\xc8\xcc\xde\xeb\x3e\x3a\xbe\xd7\xdf\xe3\x38\x25\x53\x7d\xf5\xdd\xc7\xf5\x26\x93\x0b\x04\xc9\x8e\x1e\xdc\xa4\xa4\x07\xf4\x7d\x5c\x34\xfa\xec\x6a\xaa\x2f\x96\x8e\x10\xfb\x66\xdf\x32\x02\xed\xf8\xde\x0c\xb5\x76\x64\xe1\x30\x8e\x69\xbd\xcd\x1a\xa5\xbf\xe2\x46\x13\x1c\xc3\x26\xfa\x07\xe9\x02\xd5\x68\x2e\x79\x52\xce\x7a\x56\x4c\x97\x2d\xf0\x42\xe5\xe2\xe5\xa3\x22\x0f\x17\xb9\x62\x07\x91\x14\x3b\x6c\x68\x08\xa3\x0d\x89\xe9\xd3\xd1\x3b\xed\x2b\xae\x38\x58\x0a\xb4\x37\x14\x68\x73\x55\x35\xfa\x7b\x8e\x79\x35\xb7\xf2\x01\xfd\xcd\xe5\x14\x2f\x8f\xa5\x80\x42\x5f\x8d\x1d\xed\x66\x81\xbd\xdf\x10\x2a\x5f\x85\xd4\x9b\x9f\xbc\xcf\x11\xba\x41\x2b\x36\x65\x00\x88\xf6\xb6\xa3\xa4\x1e\xc8\x31\xf6\xf9\xe6\x60\x5a\x1c\xb7\x96\x04\x6d\x08\xa5\x91\xd0\x8c\xe8\x84\x12\x44\x08\xa4\x87\x7c\x54\xa3\x11\xaf\x5d\x12\x53\x02\x31\x84\xdb\x03\x32\xa5\x74\x21\x28\x5e\xb0\x80\x28\xa0\x6b\xa4\xe9\x20\x27\xbf\x5d\x2e\x22\xa7\xb0\x5d\x2e\x5a\x4b\xe2\x98\x6e\xf6\x0e\x13\xbb\x66\x48\x09\x49\xa2\xbd\x36\xe8\xdb\x04\x47\x5a\xfb\x96\xdd\xf3\x05\x7b\x13\xb6\x4a\x7f\x7c\x04\xbf\x27\x5c\x6f\x20\x1d\x88\x19\x2e\x1a\x33\x71\x4f\x36\x63\xf0\x5e\xb0\x63\xce\xf8\x35\xe1\x0b\xcb\x5e\xb2\x3e\x3e\x5e\x58\xf6\x92\xa5\x8a\x64\x84\x2e\x7d\x91\x76\x3b\x45\x91\xf6\xb0\x40\x23\x64\x06\xe8\xc5\x52\xd1\x02\x73\xf3\x94\x76\xbe\xe3\xe5\x23\xad\xe7\xd2\xe7\x4c\x45\x07\xd8\x6d\x8a\x43\x69\xcd\xb7\xb5\x11\x53\x2b\xe2\xef\xfb\x07\x98\x68\x53\xad\x0e\xc7\x58\x2c\x88\xf1\xd8\x3c\xf5\x43\x33\x4d\xfd\xd0\xfc\x94\xfa\xa1\x99\x49\x7d\x2f\xa5\xbe\xff\x9c\xfa\xbe\xa9\xea\xdf\xa4\xe4\x76\x2d\x65\xa9\x7d\x5b\x73\x6a\x69\x6e\x5b\x7a\xa7\xe1\xca\x01\x3e\xa2\xd8\xa2\x4d\xcd\x96\x25\xe0\xd9\x35\x15\x65\x43\x9c\x1a\xdd\x6c\xfa\xa0\xb7\xd2\x8e\xf4\x05\x0a\x89\xed\x85\xfa\x01\x3a\xef\xe9\x36\x7a\xd3\x5f\xe8\x76\x39\xd7\x5f\xe8\x42\x4c\x59\x41\xdd\xe3\xc6\xa5\x7c\x74\xb3\x80\x53\xc2\x38\x86\x8b\xe4\xbe\xd9\xb6\x98\x51\xf1\x44\xe4\xa3\x2f\x61\x6e\xb3\xf9\x49\xea\x72\x3a\x42\x1e\x76\x4d\x87\xee\xf1\x1e\x9d\xc4\x4c\x32\x68\xdd\x4f\x8f\x0d\x53\xd1\x0c\xba\x20\x8e\x1d\x4b\xe9\x80\x71\x71\xb0\x30\xf7\x5a\x65\x17\xa5\x80\x50\x01\xe5\x71\x4e\x23\x85\x68\x36\x6a\xbc\x12\x15\x10\x6d\xb3\x4b\x90\x87\x47\xda\xdd\xa6\xe2\x99\x6f\x70\xf5\x39\xba\x47\x91\xca\x5d\x34\x1d\xf7\x15\x5f\x7b\x43\x3e\x9c\xfe\xe2\x91\x76\x3e\x40\x23\x3c\xd2\x16\x9b\x68\x82\x7d\xed\xcd\x98\xe4\x47\xe6\xd8\xfa\x1d\x99\x8e\x4b\xa7\x29\x04\x16\x68\x10\xe3\xbe\x67\xd8\xd7\xe6\x85\x91\x59\xb5\x8c\xd9\x5e\x44\x17\xe8\x5c\x4e\x81\x40\x21\x5c\xd7\x0a\x95\x09\x9a\xa1\x11\xd8\xa1\x02\x89\xe8\x10\x53\xe2\xc8\x43\x21\x9d\x3e\x74\x9f\x0e\x28\xd2\x39\xf9\xf1\x80\xa0\xdb\xa9\x1e\xa2\xf6\xad\xee\xa1\x87\x85\x3e\x42\xe7\x74\x5b\xe9\x6b\xe7\xe8\x5e\x21\xda\x6d\x19\xd1\xb5\x91\xc9\xd8\x3d\x5c\xab\x6a\x6c\x04\x62\x79\x66\x6b\xa3\x2b\xd6\xc6\x10\xbb\x66\x1f\x74\x22\xb8\xaa\x43\x98\xcb\xf5\x9e\x94\x00\xb1\xc5\x83\x72\x65\xa6\x23\x9d\xc1\xb7\x23\xdd\x46\xad\x8a\xee\xa3\x97\x9e\xf7\xaa\x3b\xa8\xb9\xd0\x03\x79\xd1\x69\x65\xcf\x40\x5f\x7a\x44\x9c\xb7\x10\xed\xf2\xf9\xe3\x63\x9d\x3e\xb4\xbb\xfe\x0a\x71\x1a\xa2\x05\x15\x73\xee\x58\x8c\xee\xa5\xdc\x1a\x5c\x59\x02\xb3\x86\x7c\xfc\x3e\x1d\x8e\xf4\x22\x0a\x3d\x7f\xaa\x17\xb9\xde\x2e\xa1\x5c\x10\xee\x04\xfb\xee\x77\xa2\xf9\x15\xdd\x83\x87\xb0\xe3\x57\xd2\x76\xbe\x3b\x19\xa5\x61\x9a\x1e\xd9\x74\x09\x0b\x2a\xc8\xd9\xd4\xdb\x87\xc8\xdd\xd4\x89\x36\xbc\x8b\x0d\x10\x40\xa4\x95\x38\xc7\xd8\x3e\xfe\xf8\x60\x6f\xb7\x55\xb2\xbf\xfd\xdd\xe1\x25\x5d\x75\xf7\xbd\x82\x53\xf0\xcd\xb1\xa5\xb3\x97\xaa\x65\x3c\x12\x90\xdf\xce\xe6\xbb\x3e\xdc\xa7\xa5\xa7\xf9\x5c\x9e\x5c\x77\x39\x00\x95\x65\x04\x01\x48\x68\xe5\x91\xa5\xb2\x4a\xe4\xa1\xd5\xb2\xb1\xab\x83\x6b\x85\xf6\x1b\xf2\x11\x9d\x89\x27\xb2\x70\x70\x7b\x05\xfd\x3c\x0b\x43\xa1\xab\xa7\x4d\x41\x3d\x2d\x9f\x77\x55\xb1\x05\xc0\x8c\x76\x91\xad\x22\x07\x3f\x0c\x80\x9c\x5d\xb5\xef\xbd\x36\x65\xd7\x2b\xb0\x78\xcd\x0c\x69\xd4\xd6\x65\x7f\xa4\xa9\x62\x23\x40\x97\xec\x60\xf3\xb4\x64\xff\xfc\x8a\x5f\xbc\x3e\x23\x22\x7c\xd5\x9d\xc5\x5f\x19\xb1\xb7\xcf\xa4\xf3\xe0\xb7\x4f\x55\xf1\x6b\xff\x4a\x55\xc6\x82\x21\xeb\xd4\x11\x51\xbf\x2c\xfb\xaa\x47\xa4\xc2\x67\xab\xfa\x21\xd9\x35\xed\x0c\x22\xdb\x58\x0c\x47\x32\x72\x0d\x02\xcb\x8c\xec\x88\xee\x65\x45\x73\x90\x8d\x45\x4b\x04\x08\x76\xde\x2a\x7c\xfd\x34\x13\x38\xe9\x10\x1d\x67\x29\xb1\xf7\x51\x55\x37\x2d\x34\xa6\xbf\xb1\x38\x80\xd5\xc6\x7e\x2e\xa7\x38\xda\xa8\x8a\x4d\xfa\x61\xa9\x49\x4c\xd0\x82\x98\x31\xc4\x04\x2d\x60\x73\xfa\x63\xcc\x09\x00\x58\x75\xa7\x4c\xfa\xa8\x8a\x99\xa6\x1b\x7f\x5d\x74\x55\xe3\x51\x69\x9d\x2b\x36\x5c\x09\x7f\xb2\xa8\x64\xe3\x93\xe4\x62\x09\x14\x29\x3c\x2e\x24\xe0\x22\x1f\x73\xae\x5e\x63\x4c\x3d\x4c\xf8\x00\x27\x9c\x31\x43\x91\x42\x09\xf1\x73\xb0\x42\x09\x15\x55\x34\x13\x9c\xb9\x49\x2c\x83\x60\x85\x0f\x30\xb9\x33\xc1\xf5\xc7\x3c\xbd\xc6\x32\xd8\x3e\x0e\x53\x60\xc1\xbd\x91\xef\x43\xf3\xe9\xae\x05\x02\xf9\xc8\x05\xb5\xb3\x85\x58\xd6\x89\x79\xfd\xc6\xb5\x8f\xe8\x0b\x25\x86\x69\x3f\xd0\xf4\x67\x17\x70\x62\xb9\x5e\x42\x0b\x14\xa0\x17\x6e\x1b\x15\xf1\xc3\x04\x55\x55\x55\x7d\x96\xcb\x5d\x3f\x29\x33\xed\xf8\x5e\xbe\x73\xeb\xab\xef\xb4\x63\x99\x1a\xa0\xe1\xe6\x72\x9f\x21\x8a\xd2\xb5\xb7\x02\x5d\x3e\xe6\x05\x5f\x45\x81\x14\x4a\xc3\xd4\x4f\x25\xc6\xe8\x5b\xca\xd8\xa4\x87\xe7\xda\xed\x13\xf7\xae\xf7\xc5\x90\x1d\x07\x89\x68\xd4\x09\xc3\x1a\xed\xf6\x49\x3b\xef\xb1\xe7\xa8\xc9\x48\xc2\x55\xc3\x72\xdc\x57\x68\x1a\xb0\xa8\xf4\x86\x92\xd7\x39\xc3\x16\xde\x26\x0f\x96\x25\xa9\x59\x01\x34\x2b\x60\xcd\x4a\x46\x97\xc0\xd0\x92\x64\x5c\x03\xd1\x3e\xc2\x1a\x27\x13\x52\x33\x70\x01\xfd\x0e\x06\x25\x74\x41\x87\xf0\x4a\xf3\x14\x6a\x8c\x1c\xad\xde\xc3\x6c\xd3\x31\x3d\x2b\x01\x61\x6b\x8d\x19\x20\xf7\x53\x03\x73\x6a\x42\x6b\xcc\xb4\x76\xc4\x9e\xe7\x3d\x55\x5a\xf3\x52\x9d\x2d\x59\xc4\x8c\xd2\x47\xfb\x8e\x6e\x1b\x84\x9b\xae\x22\xa0\xc2\x6a\x4e\xc1\x59\x27\x9b\x21\xe5\xe2\x77\x85\x14\xc0\x52\x25\x44\xb8\xa0\xd2\x6a\xd6\x2d\x85\xc6\xb8\x05\x22\x15\x93\x3f\x3b\x20\x79\x92\x3f\xf5\xc0\x79\x42\xde\x96\xe6\xf1\x51\x33\xab\xd0\xcb\xea\x71\xe9\xa3\x13\x5f\xcd\x4f\xbc\xfc\x29\xdc\x83\x7a\x01\x5a\x64\xc4\x0b\x4f\x3e\x93\x49\xbe\x0d\x7b\xe6\x94\xee\x97\x5e\x34\x1d\xf7\xbc\x09\x5d\x0c\x50\x90\xe2\x8a\x4b\x89\xd0\x00\x7b\x8c\x72\x84\xaf\x8c\x65\x05\x37\x63\x59\xc1\xc1\x1e\x23\x00\x5d\x4a\x0f\x1a\x41\xfa\xe9\xc0\xe7\x11\x9c\xcf\x07\xcb\x66\x17\x24\xf8\xf7\x4d\xe6\x48\x30\xc0\x27\x57\x0a\xd1\x1e\xba\x04\x05\xea\xb2\x25\x06\x29\xfd\x43\x53\x44\x8a\x1b\xc2\x00\x9f\xc7\x44\x7b\xec\x12\xb8\xd2\x39\xb9\x50\x02\x44\x51\xd5\x6c\xb9\x74\xed\x31\x9f\xab\x20\x2d\xe8\xc8\xb7\x49\xae\x56\xff\x8b\xb2\x59\x4e\x0a\xb7\xfe\x97\x8a\x3c\x2d\x78\x52\xe8\x2b\xba\x0d\x54\x35\xc9\x7a\x72\xa1\x38\x48\xc2\x7e\x81\x95\x7f\x7a\xac\x17\x85\x37\x20\xe6\xef\x87\x09\x03\x8f\x41\x18\x98\xee\xbc\xc0\xd9\xba\xf9\xbc\x0a\x35\xb6\x4d\xd7\x92\x4b\xc8\xd4\xdb\x90\xf4\x4f\x5d\x86\xf8\xb4\x3f\xae\x88\x42\xbf\xe8\x36\xcd\x1b\xf1\x4d\x7c\x27\x15\xa6\x7d\x80\x82\x2f\x21\x27\xe6\x43\x35\xbf\x96\xcb\xd1\xdf\xcf\x25\xf8\x35\xa9\x04\xf1\xf9\x8f\x0b\x48\x5c\x8d\xc6\xff\x40\x85\x35\xc1\xdc\x6a\x76\xe3\xb2\x31\xc6\x97\xfb\xe6\xd6\xce\x0e\xe2\xff\x5b\x7a\x73\xa0\x00\x85\xd2\x18\x28\xa7\x94\x48\xd1\x4a\x29\x15\xca\x0c\xda\x66\xd9\x53\x87\x71\xa4\x76\x0c\xc7\x51\x4b\x91\x97\x48\x58\x92\xa6\x11\x24\x52\x16\x2d\x64\x23\x9b\x12\xa5\x5e\x75\x7f\x41\xd7\x17\xaf\xaa\xc6\x2a\x62\x42\xbd\x9f\x60\x53\xc6\x25\xad\xfd\xe3\x0a\xdf\x61\xfc\xc2\x67\x11\x0a\x05\x4d\x3b\xd1\xe7\x14\x52\x1b\xcf\x44\xdc\x5d\xa4\x57\x16\x43\x71\xb1\x71\x38\x90\xce\x94\xfd\xfb\xc4\x6b\xf1\xc3\x13\xc1\x7d\xee\x37\x32\xc2\x3c\xfe\xe5\x36\x89\x7f\xbd\x95\x65\xe2\xca\x49\xb8\xcd\x44\xb4\xce\x2f\x12\x99\x08\x76\x8c\x3d\x16\x17\x1e\x67\x07\xcc\x1d\xe0\xa5\x22\x2e\x14\xc2\x0b\x6c\x32\x85\xa9\xf5\x12\x57\x2d\xbd\x65\x9b\xe4\x54\xd0\x4d\x36\xdf\x9f\xc5\xee\x8c\x78\xa3\xb5\x4b\x1f\x71\x73\x17\xbe\xcd\xc1\x9d\x96\x21\x2f\x17\x70\xe1\xca\x27\xb6\x88\xbd\xa8\x60\x90\x6e\xb9\x99\x12\xe4\x83\xe0\xe9\x99\xb8\x43\x38\xbb\x57\xd4\xf8\x41\x79\x14\xe6\x67\x1e\xaf\xf9\x29\x69\xc6\xfe\x4c\x82\x3d\xc2\xb7\xcb\xed\x22\x51\x2c\xb5\x0d\x47\x7b\xad\xc2\x11\x84\xf6\xda\x90\x4f\xa6\x84\x99\x0d\x30\xd2\xc2\x75\x0b\x97\x8e\xcc\x59\xb8\x6f\x81\x64\x76\xe7\x56\xeb\xbb\x8a\x6a\x84\xb2\xe9\x45\xfc\x1e\x0e\xf5\xbe\x76\x3b\xd5\x9e\xba\xa8\xdb\x63\xaf\xe3\x5e\x6c\x84\xd0\x62\x9a\xcb\x9c\x39\x96\x42\xf9\x36\xca\x6e\xd6\xe0\x95\x9d\x75\x38\xa0\xa4\x3e\xc2\x3e\x9a\x08\xae\x2f\xd2\xde\x7a\xe4\x7b\xa8\xdd\x4d\xcd\xb1\x95\x87\xe7\x91\x85\x22\x6d\x2e\x42\xab\x2c\x14\x2e\xcc\x22\x73\xb0\xb0\x44\x62\xf9\xab\x6a\x51\x32\x29\xa4\xe5\x8d\x2c\xf4\x02\xac\x23\x1c\x64\xcc\x54\x14\x02\xf7\xc8\x4f\x30\x46\x2a\x65\x1e\x5f\x28\xf3\x08\xf1\x0f\x0b\x7d\xc2\xf8\xc7\x08\xf8\xc7\x90\xf2\x8f\x21\x7a\x41\x13\x34\xa3\xac\xa3\xc7\xeb\x4f\xbb\x14\x38\xff\x73\x9d\x32\x9a\xa3\x7b\x3d\x8c\xd5\xd8\xc1\xef\x8c\x15\x73\xb4\x4b\xc1\x77\x39\x14\x33\x9e\xba\x44\x77\xb4\xbb\x29\x3a\x5e\xe8\x9b\x91\xe2\x22\xb7\x8d\x22\x9f\xa0\x83\xae\x8a\x9e\x5e\x69\xdc\xb4\x8a\x4e\xea\xba\x33\x54\x5c\xb4\x38\x54\xd1\xdd\x4f\xfd\x81\xa6\x7b\x68\xa8\x08\x3c\x3f\x71\x53\xed\x1d\x1a\xf8\xed\xa6\xad\x52\xc6\xcd\xa7\xa9\xef\xda\x70\xb1\xe5\x64\x6e\xb5\x1c\xb8\xd2\x42\x2d\x4a\x01\x93\xb0\x17\x44\x7a\xb5\x8d\x26\xb6\x7e\x1e\x03\xab\x3a\xd1\x3d\x14\x54\xf5\x05\x6c\x57\x94\xe3\x4f\x49\x65\xca\xc3\x9a\x16\xaa\xf7\x98\x5e\xc5\x53\x83\x3d\xc3\x3e\x94\xc0\xf5\xa9\x5b\x0d\xa5\x98\x38\x5b\xa4\xf3\xaf\x28\x26\xa5\xd2\x7c\x05\x82\x5f\x12\x86\x7d\xbd\xdd\xe7\x4f\x85\x73\x3a\xde\x58\xc9\x68\x47\x9f\x2d\x5f\x17\x13\x3e\xe9\xf9\x89\xe0\x2a\x39\x97\x93\x32\x76\xa5\xdb\x7a\x1e\x2a\x16\x8e\x97\xd4\xa9\xe5\xed\xc2\x20\x70\x3f\x4a\xc4\x9d\x24\x88\xd1\xf0\xdb\x48\x22\x68\xa4\xc4\x6b\xda\x10\x73\x35\xf3\xd3\x32\x7d\x4f\xa4\x92\x01\x0e\xb9\x93\xe7\x4f\x80\xdf\x63\x14\xe1\xa2\x11\x49\xac\x25\xb7\x1d\x31\xc2\xb6\x19\x59\x90\x85\xe2\xc9\x48\xda\x8e\x47\xc2\xba\x04\x9c\x3a\x46\xa2\xb3\x26\x74\x1f\x32\x47\x16\x08\x6a\x46\x68\xe4\xe9\x6c\x63\x98\xa8\x74\xc1\x25\xf8\x3d\xa8\xea\x01\x1d\x1e\x76\xe4\xec\xa8\x74\x90\x38\xb1\x67\xa9\xe9\xc8\x94\x90\xb8\x7a\x83\x7e\xa6\x8d\x7d\xb9\xdd\x0f\x14\x55\x27\x74\x81\x0c\xe2\xda\xeb\x92\x5f\x77\xd6\xee\x54\xb4\x55\x95\x05\xbf\x4a\x14\xc4\xdb\x9b\x9c\x25\xcb\x20\xb2\x8c\xdd\xaa\x05\x85\x7d\xbb\xd3\xb2\x1e\x7a\x84\xab\xb2\x97\x5b\x78\x67\x8c\x22\x1f\xac\x8f\x8f\x75\xfe\x66\x9e\x2e\xb8\xc0\xda\x50\x15\x62\xa7\xc7\x62\xa1\xbd\x5d\x20\x1e\x95\x34\x72\x8b\xb2\xac\x7c\x64\xce\x0e\xcc\x29\x68\x7a\x8a\xa2\xc2\x0b\xb3\x68\xa9\xb7\xdc\x6a\x8c\xb6\x08\x11\x49\xc5\x5e\x44\x8a\x92\x95\xf1\x47\xbf\x08\x8d\x2e\x13\xb0\x53\x0d\x4f\xbc\x5c\x80\xb7\x66\xb0\xa7\x04\xd9\x2f\xae\x65\x88\x5f\xed\x13\x87\x03\xcc\x3b\x86\xdd\xda\xaf\xf3\x6d\x8c\xcb\x46\x9f\x94\x05\xaa\x3d\x3c\x11\x45\x45\xc9\x26\x57\xe4\x57\x26\xd3\x51\xd6\xdf\x3b\x08\xcc\x0b\x3f\xf4\x2a\x87\x72\x51\x49\x1d\xc1\x6e\x5a\xda\xdb\x98\x63\x11\xf3\x33\xc8\xa4\xe0\xf6\x79\x8f\x6a\x63\x1f\xd3\x0d\xfe\x5c\x70\x86\x36\x2f\x75\xa8\xdd\x3e\x25\x9c\xf6\x3b\x9c\x5b\x8e\x9a\x4c\xfc\x6f\xd4\x94\xa4\x84\x59\x11\xb6\xf6\x06\xd2\x1e\xec\x7d\x1e\xc7\x4c\x40\x4a\x97\x4a\x81\xb5\x22\x0b\x5a\x45\x12\x32\xed\x14\xf9\xbd\xce\xeb\x52\x1b\xd3\xf6\x7d\x7c\x7c\xaa\x7e\xd0\xc2\x42\x3a\x31\x85\xfd\x9e\x0a\x2a\xd2\x4a\xaf\x97\xfe\xbe\xbe\x69\x55\x83\xd6\x3f\xab\xaa\x71\xa7\xcd\xfe\x50\xd3\x8b\x94\xd5\xa6\x49\xdf\x96\x92\x66\xa2\x25\xf3\x00\x82\xde\x13\x0c\x1e\xad\x00\xf0\xa9\xf4\x45\x58\x12\x06\x67\x01\x69\x33\xec\xa4\x19\x48\xc8\xeb\x6d\xab\x6a\x7c\xa7\x4d\xfe\x75\x6c\xc1\xe0\x88\x5d\xac\xdc\xdd\x39\x41\xc2\x66\xa4\x1d\xab\x46\x06\x5f\x38\x7d\xf5\x0a\x15\x87\x11\x7c\xf9\x43\xbf\xa4\x89\x85\xb8\x2a\x8c\xf9\xeb\x2a\x8a\x25\x3b\x87\xb5\xe3\x05\xc6\x07\x5d\x59\xcf\x95\xf0\x31\x81\x75\x06\x18\x3c\x24\xaa\x7c\x31\x41\xef\xc2\x14\x9e\xb4\x16\x31\xf5\x0a\x3e\x90\xb9\x5c\x76\x50\x25\xd2\x75\xf3\x3a\xab\x1d\x93\x2c\x24\xc9\xe5\xdc\x69\xd9\x8c\x40\x29\xc8\xd9\xa7\xdc\xb3\xce\xe5\x1d\xef\xb4\xb3\xfb\x4f\xe6\x67\x16\xa1\x36\x50\x16\x0d\x94\x21\x31\x27\xa3\xc4\xf9\x23\xc4\x57\x97\xe2\xa7\x4b\xf1\x07\x4b\xf1\xb3\xa5\x78\xaf\x99\x8d\x7f\x59\x8a\xf7\x97\xe2\x5f\x97\xe2\x4f\x5f\x49\x36\xc1\xdb\x88\x64\x0c\x02\x9f\x4b\x47\xd6\x02\x47\x56\x1e\x4f\x2f\x77\x16\xe8\x17\xda\xd6\x3e\x7f\x6a\xe7\x8c\x82\x88\xef\xb4\x56\x63\x69\xdc\x87\x97\x0a\x1f\x74\x30\x94\x22\x16\x52\x93\x58\x78\xbd\xf8\xc9\xb6\x8f\x50\x93\x49\xa8\x65\x9b\xbb\x7e\x15\x11\x8b\x30\x69\x61\x36\xe2\x76\xa1\xa6\x94\x3b\x8d\x78\x5c\xd6\x3b\xf9\x07\x6c\x1a\x6d\xef\x65\x93\xe0\xf7\xda\xf9\xa9\xfe\x5e\x3b\xbf\x39\xeb\x5c\xb5\xea\xd7\xba\xb9\x51\x2c\x6e\x6d\xa0\x8d\x62\x71\x07\x7e\x7f\xd1\xdf\x52\x09\x7e\xb7\xe1\xf7\x27\xfc\x42\x6c\xa9\x02\xbf\xbb\xf0\x0b\x29\xb7\x20\xe5\x16\xbc\x6f\x17\xe1\x17\xd2\x6f\x43\xfa\x6d\x08\xdf\x01\x38\x3b\x10\xbe\x03\x10\xca\x34\x57\xe9\xe7\x16\xfc\x6e\xc3\x2f\x4d\x5f\xda\x29\xc2\x2f\xc4\x42\xfa\xd2\x0e\x0d\x5f\xe9\xac\xac\xb5\xda\x63\xd9\x46\xf5\x5a\x76\x5b\x76\x47\x7f\xee\xff\x35\x07\x66\x14\xf8\xc1\xa9\xec\xca\x6c\xe3\xe0\xf2\x93\x3f\xb3\xdb\xaf\x9c\x9a\xd5\xfe\xe8\xd9\xec\xf8\x8f\xee\xcd\x52\xcf\x66\x14\x72\xed\xfe\x5f\xf6\x71\xf6\x6d\xa3\xde\xfc\xa3\xa7\xb3\xe3\xc4\xdd\xd9\xf9\x1f\x7d\x9e\xd1\x36\x1c\x1d\x25\xde\xcf\x28\x80\xa3\x93\xac\x1f\xb4\x8b\xac\x33\xb4\xeb\xc4\x23\xda\x4d\xd6\x2d\x1a\x2d\xb2\x79\xfa\x8f\x1c\xa4\x9d\x26\x5e\xd2\xce\xbf\x72\x95\x56\xff\x77\xfd\xa5\x3d\x7c\x72\x9a\xb6\x71\x52\x03\xcf\x69\xff\xdc\x71\x5a\x2d\xeb\x3d\xad\xf1\xf7\x2e\xd4\x68\x65\x4f\x69\x4d\x4e\x2f\x13\x8f\x6a\xd7\xff\x15\xb7\x6a\xb5\xc4\xb7\x5a\xe3\x93\x83\xb5\x6f\x9f\x3c\xac\xdd\x7c\xe5\x66\xad\xf1\x95\xaf\x35\x48\x47\xab\x7a\x41\x01\x5c\x5c\x7f\xe5\x7f\xad\xfe\xef\x3a\x61\x6b\xff\xbd\x27\xb6\xeb\xac\x3b\xb6\x7b\xd9\x27\xdb\x46\xa7\xc6\x1d\xb3\xd1\xa6\x64\xbd\xb3\x6d\x74\x8e\xff\xdb\x5c\xb4\x55\xb3\x7e\xda\x68\xaa\xdb\x56\xd6\x63\x5b\x43\xb8\x6d\xbb\x3f\x4e\x7c\xb7\x75\x96\x7d\xb7\xa1\xc5\xb1\x85\x4e\xeb\x9d\xab\xf3\x6b\xdd\x84\x32\xae\x0b\x3b\x45\xba\xf0\xc1\x4b\x49\xbc\x6c\x89\x97\x6d\xf1\xf2\x53\xbc\xec\x88\x97\xb2\x78\xa9\x88\x97\x5d\x3a\xf8\xf0\xf6\x8b\x07\x95\x04\xe8\x92\x00\x5d\x12\xa0\x4b\x02\x74\x49\x80\x2e\x09\xd0\x25\x01\xba\x24\x40\xc3\xaa\x0f\x2f\x02\xf2\x96\x80\xbc\x25\x20\x6f\x09\xc8\x5b\x02\xf2\x96\x80\xbc\x25\x20\x6f\x09\xc8\x5b\x02\xf2\x96\x80\xbc\x25\x20\x6f\x0b\xc8\xdb\x02\xf2\xb6\x80\xbc\x2d\x20\x6f\x0b\xc8\xdb\x02\xf2\xb6\x80\xbc\x2d\x20\x6f\x0b\xc8\xdb\x02\xf2\x4f\x01\xf9\xa7\x80\xfc\x53\x40\xfe\x29\x20\xff\x14\x90\x7f\x0a\xc8\x3f\x05\xe4\x9f\x02\xf2\x4f\x01\xf9\xa7\x80\xbc\x23\x20\xef\x08\xc8\x3b\x02\xf2\x8e\x80\xbc\x23\x20\xef\x08\xc8\x3b\x02\xf2\x8e\x80\xbc\x23\x20\xef\x08\xc8\x65\x01\xb9\x2c\x20\x97\x05\xc0\xb2\x00\x58\xde\x11\x03\x5f\x16\x10\xcb\x02\x62\x59\x00\xaa\x08\x40\x15\x01\xa8\x22\x00\x55\x04\xa0\x8a\xa8\x59\x45\xc0\xa9\x08\x38\xbb\x22\xd7\xae\x68\xd8\xae\xc8\xbe\x2b\xb2\xef\x8a\xda\xff\x12\x69\x7e\x09\x38\xbf\x04\x9c\x5f\x3c\x4d\x59\x60\x7d\x59\x20\x7b\x59\x20\x7b\x59\x20\x7b\x59\x20\x7b\x59\x20\x7b\x59\x60\x76\x59\x60\x76\x59\x60\x76\x59\x60\x76\x59\x60\x76\x59\xe0\x71\x59\xe0\x71\x59\xe0\x71\x59\xe0\x71\x59\x60\x6d\x59\x60\x6d\x59\x60\x6d\x59\x60\x6d\x59\x60\x6d\x59\x60\x6d\x59\x60\x6d\x59\x20\x6b\x59\x20\x6b\x59\x20\x6b\x59\x20\x6b\x59\x20\x6b\x59\x20\x6b\x59\x20\x6b\x59\x20\x6b\x79\x3b\x01\x28\x2a\x26\x90\xb5\x2c\x90\xb5\x2c\x90\xb5\x2c\x90\xb5\x4c\x91\xf5\x1b\x7b\x13\x80\x04\x6e\x96\x05\x6e\x96\x05\x6e\x96\x05\x6e\x96\x05\x6e\x96\x05\x02\x96\x05\x02\x96\x05\x02\x96\x05\x02\x96\x05\xde\x95\xcb\x22\x97\x40\xa9\xb2\x40\xa9\xb2\x40\xa9\xb2\x40\xa9\xb2\xc0\xa4\xb2\xc0\xa4\x72\x45\x40\xae\x88\xec\x02\x93\xca\xbb\x22\xcd\xae\xa8\xc6\x2f\x01\x50\x60\x52\xf9\x97\x80\x2c\x10\xa8\x22\xf0\xa6\x22\xb0\xa4\x22\x90\xa3\x22\x90\xa3\x22\x90\xa3\x22\x50\xa1\x22\x50\xa1\x22\x50\xa1\x22\x30\xa0\x22\x06\xbe\x22\x06\xbe\x22\x46\xae\x22\x06\xac\x22\x06\xac\x22\x86\xa7\x22\x06\xa3\x22\x56\x8e\x8a\x58\x39\x2a\x62\xe5\xa8\xfc\x4c\x72\x89\x1a\x8a\xb1\xa8\x88\xb1\xa8\x88\x75\xa2\x22\xd6\x89\x8a\x58\x27\x2a\x62\x98\x2a\x62\x98\x2a\x3b\x62\xa9\xaf\x88\x71\xaa\x88\x85\xa2\x22\xc6\xa9\x22\xd6\x87\x4a\x59\x00\x12\xcb\x43\x45\x2c\x0f\x15\x31\x84\x15\x31\x84\x15\x31\x84\x95\x5d\x01\xf9\x97\x48\x23\xba\x7e\x57\xcc\xdd\x5d\xb1\x63\xed\x8a\xc1\xd8\x15\x93\x78\x57\x4c\xe2\x5d\xb1\x3f\xed\x8a\x51\xd9\x15\xa3\xb2\x2b\x66\xea\xae\x98\x8e\xbb\x62\x5b\xd9\x15\xdb\xca\xae\x18\x8c\x5d\x31\xe7\x76\xc5\x14\xd9\x15\x1d\xb4\x2b\x9a\xbc\x2b\x1a\xb8\x5b\x16\x89\xc5\xba\x55\x3d\xe6\xcf\x13\xfe\xbc\xe2\xcf\x47\xf6\x04\xb2\x9d\x3e\xcf\xf9\xb3\xc3\x9e\x87\x35\xfe\xac\xb3\x67\x83\xe7\x3f\xe2\xe9\x9b\x2d\xf6\x6c\xf1\x6f\x20\x62\xe9\x93\xa7\x03\x02\xf6\xe6\xba\x70\x7c\xcd\x9f\x0f\xec\x79\xc2\xd3\x9f\x8a\x27\xcf\x77\xca\xcb\x39\xe5\x70\x4f\x79\xfe\x53\x5e\x2f\x4a\x27\xc2\xc8\x9f\xf2\x0a\x9e\xf1\x0a\x9e\x71\x00\x67\x1c\xc0\x59\x93\x3f\xdb\xfc\x79\xca\x9f\xb7\xfc\xc9\x2b\x72\xce\xd3\x9d\xf3\x0e\x3a\xe7\x1d\x73\xc1\x2b\x76\xc5\x2b\x72\xcd\xcb\xb9\xe6\xe5\x74\x78\xc5\x3a\xf7\xec\x79\xc3\xeb\x73\xcb\xf3\xdd\xf2\xef\x3b\xfe\x7d\xc7\xe1\xdc\xf1\xf2\xef\x1e\x36\x2c\x74\x71\x75\x7e\xdb\x3a\xab\x01\x2b\xfa\x3f\xe8\x95\x7a\x15\x2b\xf7\xdf\xe3\x9a\xfa\xdf\xf6\x4a\xfd\x27\x86\xed\xdb\x3f\xf2\x4d\x7d\xf2\xbf\xc7\x41\xf5\x7f\x9d\xd7\xfa\x2f\x39\xa9\xfe\x5f\xe6\x9f\xfa\x0b\xd7\xd4\xdf\xfe\x8e\x23\xfa\x37\x1c\x54\x67\x18\x1f\xce\x8f\xfc\x9f\xb4\x52\xfe\x6f\x5f\x28\xbf\xf1\x95\xf2\xef\xfc\x85\x03\xbb\x99\xf5\x12\x8e\xae\xea\x47\xad\xf3\x33\xf9\x90\xef\x57\x72\x74\xc7\x8f\xdf\x28\x69\x48\x39\xd2\xeb\x9b\x83\xcf\xa9\xff\x7f\x7b\x24\xb8\x38\xb6\x62\xd4\x3a\x5b\x7d\x90\x99\xb6\xf1\x73\xf9\xab\x4a\x28\x89\xfd\x86\xed\x1f\x1d\xb1\xa6\x03\x36\xc2\x82\x02\x4b\x01\xcc\x73\x98\xc4\x70\xb4\x40\x07\x82\x76\x5c\xba\x7f\x6d\x54\x1b\x6b\x07\x87\x6b\x07\x9d\xb5\xda\xd9\x5a\xeb\x6c\xed\xf4\x74\xed\xec\x62\xed\xe2\x78\xed\xea\x66\xad\xd3\x5e\xbb\x79\xdc\xd0\x26\xa3\xb0\x37\x55\x36\xd6\x36\xd4\xbf\x1f\x9b\x6f\x5f\x0e\xcb\xbf\xd0\x40\xda\x61\xec\x10\x98\x74\xf0\x7b\x8c\x6c\xf8\x75\x3a\xec\xfe\xe8\xaa\x49\xf0\xd9\x95\x32\x9d\x20\xdb\x57\x91\xdb\xc1\x57\x4d\x22\x59\x9b\x4f\x45\xd2\xdc\x0e\x26\xfb\x24\xff\x34\xd6\x69\x0a\x00\x62\x78\x1d\x21\x92\x39\xb9\x56\x5e\xaf\x15\xb7\x93\x3f\x7f\x21\x68\x73\xb6\x64\xaf\xd8\xef\x60\x62\xd8\x8a\x1a\xcb\x37\xb0\x8e\xa2\xc6\xaa\xae\xf8\x1d\x7c\xd9\x24\xc8\x56\x32\x9a\xf5\x9d\x4f\x87\xf8\x76\xaa\xc0\x5e\x23\x61\x68\x13\xa7\x0f\x4e\xc4\x66\x61\xb8\x36\x1c\xaf\xcd\x22\xd7\xf3\x7b\x91\xe7\x6e\x08\xe3\x43\x37\xec\xa2\xbc\xe7\x2b\x4e\x4f\xb1\x3b\x20\xf7\xce\x05\xeb\xee\x15\x1b\x24\xa9\x10\x0b\x36\x9e\x5f\x15\x17\x89\x2b\x52\x96\x81\xb0\x0c\xf0\x00\x7f\x3b\xfc\x92\x06\x02\x30\x53\x0d\x72\x3b\xf9\x93\x2b\xa5\xf5\x0a\x57\xd9\xbc\x07\xd0\xc3\x8c\xe4\x99\x87\x91\x8e\x87\x0e\x3c\x75\x95\x38\xed\x3b\x13\x61\xe8\xf4\x14\x90\x4e\x41\xb7\x4d\xa2\xc6\x06\x54\x06\xdb\xc6\x23\x2b\x3c\xeb\x86\x43\xb1\xd5\x58\x35\x5c\x2f\xf4\xa6\xbc\x12\x99\xce\x5c\x9d\x87\x5d\xf6\x2c\x65\x93\x24\x97\x6f\x64\xc9\xe5\x73\x83\x98\xed\x85\xb5\x8e\x07\x35\x66\xd8\x81\x7e\xe5\x37\x6b\xc9\xfd\x88\x9d\x27\x5a\xed\x25\xbf\x59\xcb\xdf\x81\xf4\xf2\x5b\x24\x8f\xd8\x9d\x6c\x6f\xc3\xe9\x7c\x7c\x28\x4e\x07\xbf\x3b\xc3\x68\xda\x03\x87\x13\x7a\x7f\x44\xd0\x64\x66\x4b\x21\xa3\x11\x41\xce\x70\xc6\xe5\x1a\x6b\x35\x34\x1a\x0f\x5f\x7a\x91\xe3\x4d\x74\x67\x44\xd0\xc0\x9b\x8e\x87\x13\xfd\x76\x48\xe2\xf4\x8e\xa6\x63\x12\x2b\x06\x85\x26\xc0\x9b\x14\x55\xef\x33\x52\xd8\xb4\xee\xe0\x62\xb5\xf6\x62\x10\x9c\xd4\x17\x0c\xd1\x60\xbf\x63\xda\x16\x68\x6d\x81\xcb\x1f\x71\x39\xc4\xdc\x07\x51\x64\x4f\xcd\xc1\x80\x90\x11\xc7\xf2\xd4\x5a\x81\xdc\x54\xaf\xb3\x4f\x14\xaf\xa3\xea\xc9\x14\x38\x7b\x21\xe8\x31\x33\x05\x6c\xf5\xdd\xeb\x60\x1b\x5c\x95\xa2\x47\xb0\xfa\x46\xc7\x53\x1e\xc0\x64\xb0\xa4\x2e\xbd\x5d\x56\x55\x03\x35\x3c\xdf\x23\xd3\xd9\xd8\x9b\xa0\xcd\x26\xd8\x60\x79\x8f\xd1\x1f\x5c\x32\x71\x0d\x3c\x5f\xeb\xb9\xc6\xbc\xa7\x04\xe8\x76\x44\xd4\x7d\xc7\x0c\x2c\xec\xeb\xcc\x13\x93\x1a\xd3\x12\x58\x76\x57\x64\xf7\xb1\x4b\x73\xda\xd8\x31\x6f\x47\x24\x4f\xf3\x5b\xc8\xd7\xbc\x08\xdb\xfb\xb6\xf6\x50\xd3\x4d\x50\xd8\x71\xb0\xa3\xfd\xf5\xd7\x61\xeb\xfa\xe2\xa6\x53\x3f\xfc\xeb\xaf\x6a\x18\xaa\x0e\x4d\x05\xc6\x30\x5d\x2e\x10\xc9\xe5\xfc\xce\x75\x17\xdd\x4e\x75\xd2\x22\x4b\x2e\x72\xd1\x5b\x8f\xe8\x44\x7b\x1b\xfa\xfe\xc4\x9b\xa2\x39\x7c\xcd\xf9\xd7\xc4\x21\xa1\xa7\x13\x73\xb0\xb0\x24\x31\xfe\xcd\xa6\xe4\xcd\xf0\xbd\xe7\xea\x44\xeb\xb9\x5c\xb9\x95\x68\xa3\x61\x38\x0f\x86\xd1\x04\xd9\x2d\x02\x02\x84\xa6\x9c\xd7\x6e\xc9\x9e\x10\xc3\x9e\x42\xd4\xfd\xf7\xb3\xb6\x1e\x74\x14\x02\x7a\xa1\xa6\x15\xeb\x22\x40\x9b\x74\xbd\x30\x14\xea\xa2\x44\xeb\x0e\x43\x6f\x82\x82\x8e\xec\x77\x02\x32\xca\x56\x27\x56\x28\x4a\x9a\x47\xd7\xa0\x81\xa9\xa2\x90\x80\xa2\xa6\x6a\x65\x06\x9b\xc8\x95\x02\x85\x63\x9a\x41\xeb\xf6\x92\x3c\xf4\x9d\x66\x03\xe5\x63\x88\x0c\x87\x69\x64\x38\x64\x30\x25\x1b\x82\x99\x2e\xaa\xbd\xe8\x84\xbb\xbe\x41\x6f\x11\xbc\x0b\x97\x8a\xc2\x9f\x22\x9b\x35\x93\x67\xc2\x5a\x2a\x8d\x90\x37\x41\xa4\x45\x32\x52\x93\x4e\xeb\x93\x3a\x62\x27\x52\x1c\xd4\x6c\xc1\x2c\xf3\xd6\xf1\x24\x50\x5d\xa5\xdb\x51\x3c\xe4\xa8\xa9\xf4\x8a\xad\xb5\x1f\xd7\x71\x75\xc2\xe2\x16\xc7\x49\xa4\x6c\x1f\x76\xa8\x38\xe8\xa4\x85\x9a\x47\x44\x45\x01\xbe\xa1\x70\x07\x13\xa6\x86\x98\xf1\xd9\x96\xcf\x7b\x2a\xd3\x5f\x0b\xc9\x54\xcf\xb8\x6d\x0b\xa3\x40\x97\x1d\xb7\xc5\xaa\x41\xe7\xed\x92\xa0\x01\x51\xdf\xa7\xfa\x2a\x65\xd0\x7c\x3e\x35\x92\x2d\x99\xad\x06\xa7\x6f\x1e\x78\x14\xf3\x53\x87\x5e\xc1\xc7\x87\x47\xfb\x0e\xe3\x20\x9d\xae\x13\xbc\x5e\x44\x4c\x7b\xb1\x9f\x68\x2f\x8a\xc8\x17\xdc\x37\x67\x16\x5a\xe0\xf5\x12\x3a\xc0\x9e\x36\x79\x26\xe8\x10\x17\x8d\xc3\xbd\x03\x96\xf6\x90\x42\x77\x5b\x44\x79\x41\x07\xe6\x21\xdd\xba\x16\x78\xbd\xc8\x24\xa9\xe3\x9e\xaf\xac\x2f\xd4\xf7\x09\x5e\x2f\xf1\x10\x1a\x34\x51\xdf\x09\xa6\xe3\xec\x69\xb5\x17\x3a\xc6\xb4\x9e\x62\x6c\xa1\x7e\x31\x4b\xbd\x36\x8d\xe3\x98\x30\x0b\x63\x42\x9d\xc7\x55\x88\xaa\x4b\x43\xc2\xf6\x42\x37\x59\x95\x24\x4c\xed\x76\x64\xa1\x83\xcd\x48\xb1\xf9\x58\xa1\x4e\x5d\x45\x2e\x45\x03\x1b\x86\xcb\x81\xda\x10\x5a\x15\x47\xd4\xc3\x8d\xc5\x52\x7e\x0f\x2a\xba\x1f\x1f\x8e\xb4\xeb\x38\x1a\x4b\x86\x07\x35\xc4\xe2\xd5\x7d\x47\xcf\x5a\x35\x70\x5b\x59\xe9\x7a\xb0\x58\xf7\xdb\x66\x3a\xa4\xb9\x1c\x7c\xee\xd9\x4c\x8f\x34\x97\xbb\xed\x29\x66\x61\xbb\x5c\x44\x45\xb4\x5d\x2e\x4a\x1b\xa4\x23\x03\x88\x82\xbc\xc3\x40\x94\x18\x08\x1a\xc0\x80\x94\xac\x8c\x61\x98\x1e\x4c\xf5\xab\x99\xb8\x82\x4f\xc4\xa8\x08\x97\x99\xba\x27\xb2\x37\xc8\x39\xd3\xb9\xe0\x52\x57\xfd\x17\x61\xdf\xa2\x88\xb9\xf9\xc6\x73\x2e\x02\x76\x3f\x10\x1e\x5a\x7a\x1d\x74\x35\x53\x8d\x3b\xdc\xeb\x70\x3f\x8d\x83\x15\x1a\xe4\xd1\x50\x39\x3c\x50\x8d\xc9\x54\x1b\x38\xdc\x68\xa1\xa8\xc9\xfd\x00\x93\x44\x82\xa0\x36\x57\xbf\xac\x0a\xc1\x0e\xf8\xe0\x26\xb8\x31\x54\x6a\x43\x30\xfe\xf5\x92\x78\xf4\x01\x73\x90\xe8\xf4\x88\x58\x42\x67\xf2\xe6\x3a\x31\xf8\x21\xaa\x5d\x9d\x89\xc2\x91\xa7\x1a\x2e\xc5\x06\x0f\xbd\x4d\x09\xba\x7b\x22\x68\x12\xa8\x5c\x00\x12\x0c\xee\x8d\x5e\x54\x2d\x70\x15\x1b\xb9\x28\xa9\x42\x22\x25\x93\x1a\x53\x8e\x94\xf7\xe1\x88\x36\x76\xa2\x13\xe4\x0f\xc7\x03\x32\xd5\x03\xa6\x7f\xca\x8b\x06\xcf\x00\xbc\xa9\xcb\x13\x9a\x2b\x27\x26\xc4\xe2\x60\x44\x54\xc3\x6b\x09\x31\x20\x14\x20\x0f\xf5\x91\x8f\x12\xef\x19\x06\x5d\xc8\x58\xb8\xcb\xc5\xd7\xfa\x7d\xfc\xc9\x82\xe4\x75\x3f\xe9\x65\xf3\xda\xb6\x94\x0b\x15\xd9\xb8\x73\x22\x8c\xf1\x9f\xc3\x56\x0c\x22\xda\x27\x0a\x98\xd7\x00\x25\x99\x13\xc0\x54\xc4\x25\xf4\xc8\x80\xa7\x39\xbb\x06\x23\x48\xb6\xb6\x08\x35\x1f\xe2\xed\x54\x1a\xe5\xf6\x88\x28\x0e\xb2\x55\x90\xe6\x83\x17\x4f\xbc\x5c\xd0\x7c\x36\x38\x31\x60\xaf\xa9\xa0\x8f\xf9\x68\x5b\xe0\xbb\x6b\x78\x48\xa6\xe4\xe6\xea\x44\x39\x7e\x61\x32\x5d\xd5\xd9\x4a\xa1\xa5\xde\x10\x90\xa9\x50\xa2\x95\x7d\x4a\x3e\x8c\x42\x09\xcc\x66\xd1\x87\xbb\xaf\x38\x78\x67\xa7\x8c\x5c\xbc\xfd\xb3\xa2\xea\x10\xb5\xef\x30\x8d\x98\x9d\x9d\xf2\x77\xf7\x47\x12\xee\xe6\x72\x0a\xd7\x95\xd9\xfe\x59\xf9\xee\xfc\xd8\xd9\x29\xab\x19\xd3\x4f\x60\x97\xd2\xcd\xc8\x91\x79\x2d\xb2\xda\xa2\x76\x2b\x52\x5c\x34\xe5\xe6\xac\x08\x9d\x2e\xd8\x53\x7d\x48\xbd\x5e\x62\x2e\x56\x40\x4e\xdf\xa7\x58\x07\x9b\x87\xe4\xe4\xee\x9e\xa8\xf4\xc7\x3c\xa8\x5a\x0a\xd1\xce\x09\x22\xda\xfd\x80\x27\x63\x52\xdb\x00\xfe\xbc\x01\xfe\x61\x98\x6d\x97\xab\x13\x85\x50\x24\x4e\xd2\xa3\x50\x8d\x69\xac\xf6\xf8\xac\xdc\x2b\x9f\xd0\x81\x4f\x75\xed\xc9\x56\x54\x14\x26\x9f\x61\x55\x51\x11\x11\x63\x1c\x22\xca\x19\xc8\x92\xc4\x64\x90\xcb\x89\x99\x49\x06\x89\xf1\xa6\xf3\x74\xbe\xd2\x50\xb1\x9e\x50\x30\x8f\xcc\xcb\x05\x18\x72\x02\x33\x4e\xe0\x16\x55\x18\x9c\x38\x1c\x72\x29\x1f\x11\x70\x69\xf3\x00\xd5\xf0\x05\xd2\xaf\x17\x97\x7a\x8c\x3b\xa5\xb8\x1f\x64\x96\x75\x7f\x79\x30\x98\x1e\x04\xac\xf0\x0e\x6a\xce\x08\x3a\x3e\x22\xb0\xbd\x33\x95\x7e\x07\x63\xdc\x39\x04\x73\xfa\xf8\x2d\x00\x9d\xeb\xcc\x74\x64\x6c\xe3\x99\x10\x81\x25\x03\x24\xa0\xf7\x59\x0d\x26\x38\xd3\xb1\x67\x42\xda\xb5\x36\x4f\x6a\x30\x62\x8a\x71\x44\xab\xcd\xb5\xf6\x31\x76\x0c\x90\x0d\xa5\x5f\xdc\xe9\x2e\xa2\x8c\xa2\x8f\xc8\xf2\x4a\x20\xb6\x35\x51\xb6\x36\xd8\xa6\x54\x99\x8a\x22\x21\xba\x5a\x9b\x43\x98\x8a\x26\x8a\xca\xe5\xf1\x1e\x8b\x38\xe4\x02\xde\xfd\x17\xed\xd4\x85\xc5\x83\x56\x40\x55\x8d\xe8\xe3\x23\x5b\x30\xcd\xf6\x59\x10\x39\x33\xd6\xfb\xfc\xc9\x65\x92\x65\xc8\xf5\x11\x59\x25\x95\x9c\x60\xb1\xc0\x05\x59\x4c\x99\x0c\x98\x8c\xb2\xb1\x04\x47\x58\x03\xb1\x62\xd5\xb8\xa3\x28\xf1\x49\xb0\xef\xd2\x26\xca\x09\x48\x1a\xc2\xfa\x76\x69\x93\xa5\x25\xa1\x3d\x13\xea\x9d\x36\xac\x19\x93\xee\x27\x18\xb0\x65\xad\xc4\x52\x59\x60\xed\x3e\xd9\x84\x38\x7d\x61\xb8\x3d\x65\x23\x18\x0e\x83\xd0\xd3\x5e\x7a\x93\x19\x09\x7b\x0b\x50\xde\xd6\x8e\xbc\x61\xad\x4b\xc6\xd3\x0d\xd4\xeb\x70\x2d\x2c\xd5\x20\xcf\x0a\x6c\x7b\x08\x7e\x4d\x1b\x9c\x78\x74\xb8\x3f\xfa\xd6\x80\x04\xde\xcd\x55\x8b\xed\x8c\x5a\xbf\x6f\xd4\x5e\x33\xc9\x9f\xe7\x16\xf4\xa9\x1c\xd6\xad\x26\x20\x9c\xd0\x23\x63\x28\x93\x43\x78\xf4\xff\xbe\x7a\xda\x80\x8c\xea\x6f\xbd\xc9\x74\xb2\xb1\x62\xa4\x09\xf3\x91\x1e\xd3\xcd\x74\x69\xd3\xe4\x96\x95\xc1\xa8\x18\x9d\x35\x19\x05\xe7\x6e\x07\xe4\xb3\xe3\xa4\xe1\x7f\x5f\x8f\x89\x37\x3d\x25\xa3\xc9\xf5\x70\x36\x76\xbc\x0d\xb4\x3c\xd1\xd8\x51\x8d\x34\x6a\x76\x2e\xf7\xe9\xc8\x25\x97\x83\x53\x97\xb4\xd8\x64\xf6\x3f\x75\x64\xf3\xf6\x30\x84\xbd\x43\xa1\xfc\xd4\xc0\xb6\x76\xf7\x9a\x60\x9e\x27\x74\xa1\x16\x13\x89\xd6\x59\xcc\x71\xd0\xe2\x19\xa6\x13\xa1\x1b\xf5\x76\x2d\x0c\xbb\x9d\x0d\x05\x85\xf3\xd4\x41\xa7\x75\x42\x49\x9c\x27\x20\x71\xc8\xf3\x2a\x71\xfe\xc5\x24\xf1\x7e\xd7\x90\x05\x62\xcf\x86\xdc\xb7\xdd\xa1\xf6\xfc\xa2\x10\x38\xc8\x49\xa2\x98\x25\xe3\xd4\xc5\x2f\xaf\x19\xa5\xa9\x89\x60\x8a\x85\xbc\xfc\xc4\x14\xb1\xc4\xb2\x60\xf4\xee\x4f\x34\xdf\xd3\x9c\x5b\x06\xcd\x29\x51\x26\x9d\x03\xa6\xa8\xc8\xcd\xa0\x75\xf9\xc2\x9a\x31\xe5\xdc\x6d\x65\x94\xc0\xfb\x1e\xeb\xb0\x47\xe5\xf1\x49\x21\xda\x62\x92\x3d\x06\xb2\xb5\xee\x8c\x7b\x07\x8a\xef\x34\xef\xf8\xb3\x23\xee\xc5\x1c\x93\xd8\xa8\xaf\x54\x74\x98\xd1\xcd\xea\x7a\x02\xde\xf2\xd2\x80\xab\x09\x10\x06\x9f\xea\xcb\x54\x1a\x66\x27\x5f\x7a\x02\x2e\x1a\x0e\xe3\x79\x64\x93\x64\x2e\x26\xa6\x43\x99\x2d\x57\x1b\x3e\x73\x83\x37\x9e\x30\x78\x23\x3a\xfb\x35\x52\x3c\xd3\xb7\x90\xab\x8d\x9f\xf9\xca\xe1\x94\x32\x6d\x49\x79\xee\x0c\xcd\x9e\x24\xf1\xd4\x77\x02\x56\xb8\x6c\x04\xa3\x81\x3c\x4b\x8d\x63\xa2\x0d\x94\x60\x82\x6c\x25\x5b\xe5\x7e\x87\xad\x52\x01\x5f\xa8\xc4\x4e\x47\x93\x5f\x34\xbf\x4c\x1e\x1e\x7d\x4e\x7e\xfe\x75\xf2\x41\x36\xb9\x44\xfb\xf7\x3b\x29\xfd\xed\x60\xd7\x24\x63\xcb\x00\xef\xc3\x9b\x96\xa2\xe6\x72\xec\xa9\xf5\xdc\xeb\xe9\x98\x7e\xae\xe3\x30\x00\x15\xd7\x87\x0b\xc5\x01\xdb\x2b\x13\xa0\xd9\xe8\x90\x3f\xd9\x5f\x59\x80\xef\x7b\xb4\x1b\x87\xc3\xaf\xdc\x5e\x43\x21\x40\xb6\xbb\xac\x28\x6c\x6b\xe3\x40\x51\x0d\x88\x11\xf4\xf9\x62\x62\x3a\x96\x46\x5c\x17\x7c\xb6\x7f\xbb\xd3\x0e\xbd\x15\x4c\x84\xbd\x8e\x31\x58\x71\xe5\x42\xf6\x0f\xbe\x92\x28\x56\x50\x8a\x90\x26\x82\x51\x7d\xf0\x33\xa3\x2a\x7c\x03\x34\xb4\xe1\x19\x14\x00\x54\x7e\x8b\x60\x73\x7e\x88\x6e\x5a\xa8\xd3\x42\xf6\x21\x22\x87\x96\x64\xea\xfc\x2b\xbe\xe9\x3a\x59\x16\xc2\x0e\x0a\x2e\xe9\xaa\x10\x7e\xc5\xf8\xa8\xef\x4b\xfc\x8e\x93\x2c\xba\xc0\xc9\xb0\xaa\x47\x4f\xac\x83\x2c\xa1\xd6\xdd\x1b\x26\x4c\x8a\xa3\x22\x8f\x52\xbb\xd2\xb7\x2b\xac\xa6\x83\xcb\x84\xa4\x4e\xb0\x1c\x28\xa9\xb3\x9b\xe3\x36\xca\xb2\x59\xd7\x43\x33\xac\x5a\x0a\x27\xbc\xe6\x63\xc4\x39\x0c\xba\x84\x12\xd6\x6d\xf3\xf1\x4a\xff\xbf\xa2\x0c\x4f\x68\x66\x1d\x3e\x43\x74\xf3\x58\xb9\x3f\xd1\xae\x77\x14\x9e\x40\x5d\xe1\xb3\xcb\xc1\x26\x41\xb6\x59\xb4\x2c\xe6\x64\xbb\x7d\x7d\x7e\x66\x06\xae\xa5\xd8\x60\xf7\x28\x39\x27\x05\x17\x49\x9b\x35\x35\x56\x91\xa3\x6a\xf7\x5d\x70\x71\xd8\xac\x93\x04\x36\xd7\x66\x65\xad\xf7\x2f\xb9\x47\x6b\x94\x28\x95\x20\x1b\xb9\xaa\xc1\xd4\x4e\x37\x2f\x44\x6a\x58\x56\x56\x53\x09\x61\x47\xf3\xb4\x49\x57\x92\x4d\xff\x76\xa7\xd5\xe7\x2b\xd0\x8e\x6d\x95\x4f\x1d\x41\x73\x14\x21\xd8\x50\xf8\xc2\x7c\xe2\x13\x45\x05\xcf\xf3\xde\xb1\x22\xb1\x38\xb4\xc8\x13\x3f\x43\xdd\xc8\x8c\x79\x8b\x08\x52\xe5\x81\xe9\x62\x86\x5c\xd1\xf6\x81\x81\x7d\xe2\x9d\xfd\x72\xcd\x10\xee\x0e\xf7\x5a\x84\x21\xda\x6b\x94\x05\x7a\xa7\xd5\xdb\x9f\x97\xe4\x07\xb1\x1d\x3e\x78\x0a\x61\x96\xe0\x61\x6e\x78\x9f\x93\x3e\x11\x0c\xd5\x25\xce\x57\xd3\xfc\x89\xc4\x9f\xf7\xbd\xd4\x17\x43\xd8\x37\x1e\xb9\x8a\x95\x36\x08\x32\xa7\x16\x42\x2b\x76\x36\x24\x6c\xe2\xf3\x36\x6b\xb6\xaf\xb8\xea\xbe\xa3\x5d\xf3\x93\x88\x87\x09\x25\x9a\x14\x57\xd5\xae\x07\x3a\x81\x25\x41\x7b\x19\x12\xb6\x2c\xd0\x64\x8a\x0a\x1e\x75\x69\x1a\xe4\x24\xfc\xf0\xe5\x93\x22\xb2\x93\xa9\xb2\x5e\x5c\xde\xb9\x6c\xc9\xf5\xa4\x28\x1b\xdb\x06\xdb\x00\xe5\x2d\x71\x00\x53\x3e\xec\x48\x53\x3e\x7e\x50\x06\x1d\x14\x76\x54\x63\x00\x04\xd8\xf3\x0b\x5e\xdd\xfe\x5e\x8b\x18\xb6\x56\x6f\x2b\xa9\x95\x49\x5b\x1a\xec\xa8\x93\x90\xb6\x13\x82\xe9\xbc\x61\x75\x76\x67\x09\xfb\x33\xe5\xdc\x0f\x8f\xf1\x92\x98\x38\xe8\x29\x51\x47\x35\x22\xa8\x81\x37\x5b\xa6\x85\xe5\x51\xba\x9c\xd0\x46\x69\xe7\x0e\xa5\x04\x78\x0e\x77\x46\x56\x29\x5c\x80\x8e\xf9\x48\x79\x17\x9a\xe9\x04\x81\xa9\x8b\xce\x7c\xe4\xe9\xad\x6e\xe6\x0c\x69\xd8\x11\xcb\xd9\x25\xc9\x2e\x86\x36\xc1\xb6\x51\x7d\xe3\x93\x91\x99\x5a\x52\xe3\x21\x94\x3b\xb0\xb3\x3b\x6b\x72\x66\x49\x13\x9b\x77\x8e\x95\x58\x2c\x48\xed\x2e\x32\xab\x05\x7b\x1e\xb7\x5c\xc0\x5c\xb1\x3b\x88\x30\x03\x06\xbc\x48\xd9\x76\x46\x5a\xc9\x51\x67\x99\x35\x67\x3d\x22\x26\xc1\x9b\x2b\xa8\xc0\xa6\x2f\x54\xe2\x0f\x5f\x05\xb1\x57\x8b\x88\xd0\x89\xbf\x1a\x24\xda\xb5\x57\x41\xe2\xe5\xb8\x5a\x14\x14\x62\x18\x4a\x44\xa4\x7b\x84\x79\xda\x87\x01\xc1\x01\xeb\x01\x83\x08\x17\xca\x67\x82\xdf\x35\x6c\x7c\x38\x0f\xc6\x64\xd4\xd5\x46\x3d\xa7\x7f\x48\xa6\x5e\xa7\xe7\xf4\x8f\xc6\x24\x9a\x85\x64\xdc\x9b\xce\xb9\x72\x10\x3f\x6b\x6a\xfa\x42\xd5\x5d\x74\xf5\x74\x98\x40\x08\xbc\x29\x05\x50\x7d\xeb\x4d\x3e\xe5\xb2\xa5\x0c\x66\xd1\xd2\x5e\x4c\xdf\xb5\x14\xf5\x37\x4f\x27\xb8\xc9\xe9\xd0\x1c\x7a\x96\xf2\xfe\xa2\x0b\x00\xcc\x96\xda\x79\xcc\xf7\xd3\xab\x00\x12\x50\x2c\x19\x76\x94\x73\xca\x8b\x25\xb6\x8a\x5d\x6e\x60\xf9\x73\x31\xdc\xf9\xa3\x9b\x7a\x16\x1a\x9a\xe2\xd9\xb6\x0a\xa5\x24\xa1\x41\x7e\xf3\x1a\xb3\x6f\x51\xaf\xa6\x8f\x45\xfd\x07\xdc\x67\xf4\xe5\x0f\x11\x55\x48\xa0\x33\x13\xc8\xb3\x2e\x58\x7f\xc4\xcc\xd0\xa8\x8d\xd3\x92\x0c\xb2\x67\x03\x01\xcd\xd3\xd1\x9d\x07\xd0\x6e\x20\x94\x5e\xa7\x43\x93\x58\xda\x8b\xaa\xc6\xdf\xc8\xb3\x32\xea\x2c\x3b\xad\xa0\xd8\x2e\x74\x57\xaf\x06\xcb\x8a\xb4\x61\xc8\x0e\xec\x36\x26\x53\x32\x9e\x3e\x24\x86\xc8\x27\x1e\x7d\xf8\xc3\xb1\xb7\xe6\x90\x30\xec\x45\xc1\x9a\x3b\x26\xaf\x8a\xaa\x6d\xf0\xbd\x5d\xee\x0d\xf0\x6a\xb6\x8e\x71\x72\x21\x21\x7a\xbe\xc8\xcc\xcc\x0d\x6c\x05\xee\x13\x4c\x6e\x37\x5f\x34\xa6\x68\x15\xfc\x1f\x5b\x28\xfd\xcc\xfb\x3f\xb6\x54\x8b\x59\x3d\xcc\x26\xda\xe3\xc8\x5b\xe0\xf8\x9e\xcb\x29\xd5\x37\xc5\x43\xd5\xb6\x8a\x8e\x89\x02\x45\xa5\x39\x54\x44\x03\x34\x2f\xe2\xf5\xe4\xc0\xc5\x29\xab\xa8\x9e\x2b\x57\x8f\x19\x1d\x90\x6a\xe7\x66\x6b\xe7\xb2\xda\x19\xfe\x8f\xad\xbc\x94\x44\xcc\x3a\x86\x06\x97\x79\x5e\x4f\x51\xbf\x49\x03\xea\x17\x22\x19\xaa\x8a\xc2\x4c\xdd\x5c\x4b\x35\xae\x06\x4a\x08\xb5\x56\xf7\xe1\x62\xc5\x55\xf5\x80\x5b\x0c\x60\xb7\x84\x25\xc3\xdb\x73\xd3\x1b\xc6\x28\x69\x85\x67\x19\xdf\xb8\xcd\x99\xc8\x1c\x54\x13\x87\x88\x6d\x3d\x5a\x6e\x92\x97\x76\x92\x67\xe5\x23\xd6\xf2\x8c\x0d\x99\x5e\x9d\xf9\xc4\xa0\x38\xb2\x2a\x7f\x81\x67\x92\x3a\x26\x85\x44\xbb\x47\x82\x35\x69\xfc\x09\x82\x94\x7f\xd9\x50\x4d\x22\x70\x30\x8b\xfa\xd1\xf0\x35\x5a\x03\x43\x04\x03\x2f\x9a\xae\xf5\xa2\xb5\x69\xcf\xe9\xaf\xc1\x2c\xd7\x36\x54\x23\x16\xeb\xf1\x08\x83\xa3\xc8\x22\x0a\x71\xc0\xcc\x51\x84\xc2\x48\xe8\xd5\x40\x09\x28\xbb\x14\xa9\xea\xfb\x28\xbd\xcd\x19\xb1\x9e\xf6\x78\x4f\x47\x6a\xec\xf3\x29\x18\xe2\xbe\x0c\x22\xed\xeb\xbe\xe9\x5b\x16\xba\x24\x4a\x84\xce\xd5\x98\x50\x46\xd9\xe5\x79\x02\x79\xda\xba\x7b\x01\x2c\xfd\x3d\x5f\x19\xc9\xe8\xb6\x2e\xd6\xb9\xdf\x22\xb1\x4b\x27\x6f\x2e\x37\xa2\x1b\x49\xba\xb9\xf4\xb1\x2d\x8c\x7d\x01\x7e\x08\x7b\x5f\x61\x98\x2f\xd1\x16\x8e\xe8\x40\x7f\x7c\x7c\xeb\xd5\xc1\x88\xa2\x4d\xd0\x08\x8f\x32\x7b\xd1\x04\x9b\x16\x9a\xe1\x22\x7a\xc1\x23\x5a\xa3\xd9\xde\x8b\x31\xcb\xe7\xd5\x09\xd8\xd2\x52\x46\xe6\xcc\x82\xfd\xa5\xb4\x83\x42\x54\x6d\xd3\xbe\x41\x7e\x1e\x97\x76\x8c\x3e\x9e\x18\x1e\x6f\x94\xcf\x3a\xc2\xdb\xf3\x01\xf3\x1c\xa5\x4f\x71\x08\x68\x55\xc2\x59\x74\xba\xcd\x94\xe2\x58\x35\xce\xc8\xa7\xe5\x47\x6c\xd2\x0a\x49\x96\xbc\xef\x7c\x4d\x14\x13\x85\x72\xc9\x90\x8d\xee\x31\xff\x84\x85\xf5\x14\x87\xee\x51\x1f\x1f\x40\x0d\xa7\x8a\xc0\xc8\xc5\xeb\x74\xeb\x8d\x3a\xda\xad\xad\xa8\xe6\x99\x6d\x19\x4b\x0e\x55\x47\x63\xa2\x2f\x33\xc2\x44\x78\x15\xec\xa3\xd0\x70\xe8\x3e\xe8\xc1\x35\xea\x5e\xb2\x4b\x75\x9a\xad\xab\xce\xc3\x5f\xd7\xf5\xda\xf9\xd9\xe1\xc9\x83\x38\x1a\x0c\xb1\xad\xbc\x75\x11\x51\x91\x43\x07\xb7\x96\xec\x31\x21\x7a\xcf\x78\xe8\x63\x4e\xfd\xda\x87\x88\xd8\x7a\x50\x4b\x2d\x6d\x94\xb6\x99\xdb\x3e\xe6\xc2\x2f\x56\x39\x20\xba\xa0\xe6\xcf\x57\xd7\xe1\xb4\x75\x76\xd3\xa9\xcb\x75\xb8\x3c\x40\xe0\xe3\xc3\xbc\x75\x80\x3d\x75\xf7\x95\x3e\xed\x87\x10\xd7\x7c\x55\xef\xd3\x39\xe1\xd2\x1f\x5a\xdb\xf0\xef\x2a\xdb\xff\x6f\xa9\xeb\x75\xeb\xfe\xaf\xe6\xf9\xcd\x95\x5c\xcd\xf3\x00\xf5\x31\x31\x6d\x5a\x49\x44\xb7\x0a\x5e\xe1\x5c\xee\x9b\x12\xe6\xf1\x28\x22\x2a\xea\xe3\xd2\x16\xc6\xb8\xff\xf1\x51\x64\x0f\x17\x51\x72\xfb\xcd\xfd\x4d\xd8\xde\xca\x9d\xc1\xf6\x73\x39\x9a\xe7\xa6\x0f\x8b\xf6\xff\x58\xb3\x0e\xab\x2d\xb9\x45\x0b\x9f\x77\x7c\x94\x74\x7c\x98\xc7\x9d\x3e\x41\x7d\xf0\xce\xf3\xff\x49\xd7\xdf\xd5\xeb\xc7\x69\x25\xfb\xd8\x4d\x6b\xd0\xf2\xff\x67\xaa\x70\xd0\xaa\x9e\x9d\xdd\x54\x4f\xd2\x9e\x3a\xae\xa1\x3e\x66\x7d\xd5\x74\x59\x5f\xa1\x6f\x7f\x1a\xd9\xdb\xff\xe1\x91\xad\xd5\xcf\x3a\xf5\xb3\xb3\x96\x5c\x69\x5b\x69\x1f\x90\xff\xd7\x26\x37\xdb\xe0\xce\x46\xc4\xe0\xbe\x86\x0f\xdf\x92\x95\x69\xa7\x28\x4b\x7b\x3c\x77\x18\xb7\xdd\x03\xae\x2d\xfa\x82\xab\x15\x09\x9a\xf3\xcf\x09\xd6\x4b\x22\xb6\x65\x93\x2f\xa2\x45\x69\xe3\x4e\x66\xa9\x2d\xfe\xb6\xf7\xc9\x0f\xe6\xfe\xa3\x54\x44\x05\x5b\xd5\xc9\xf7\xe4\x53\x36\xc5\x39\xe9\x30\x7b\xa1\xcc\xc2\x9f\xf6\x73\xfb\xe7\xd6\xaf\x9f\x3f\x77\x4b\xbf\x8a\xdb\x5b\x3b\xa5\xdd\xef\x5d\x2d\x1c\x06\x92\x93\xab\xb5\x52\xbd\x50\xf9\xcd\xed\x01\x16\xe0\xf6\x92\xc8\x7e\x1c\xa6\xb2\x60\x0f\x98\x04\xfc\x03\x4c\xc9\xc6\x68\x36\xdb\xdc\xfe\x73\xbe\xb4\xe1\x2f\xd0\xcd\x77\xf8\x05\x4e\xc0\x4e\x48\xe6\x7c\x80\x11\xd1\x8c\x69\x13\x5c\xd8\x75\x43\x70\x61\xdd\x67\xcc\xad\x1d\x38\x1f\x1f\xc5\xdf\x0e\xbb\x7c\x6a\x6c\x2a\xaa\xbe\xb5\xe7\xec\x3b\x85\x92\x5e\x32\xae\x5e\x19\x6b\x69\x0a\x37\x8f\x13\x07\xbb\x1c\xd4\xb3\x83\x0b\xf4\x9d\xb3\xa4\xe0\x44\x04\x22\xda\x44\xb9\x68\xa8\x70\x70\xca\x85\x07\xda\x44\x79\x3b\x20\xcb\xc7\x53\x09\x9f\x2e\xfc\xac\x1c\xb0\x83\x16\x38\x7f\xee\xd5\x56\xde\x42\x7b\xd7\x19\x4b\x64\x6d\xa2\x3c\x1e\xa9\xc9\xfb\x43\x8b\x19\x01\x5c\x27\x4f\x8a\xcd\x8e\x54\x9f\x5b\xa9\x1c\xe8\xd9\x30\x2a\x84\xbd\xc8\x23\xe3\x35\x10\x12\x5b\x7b\xed\x4d\xbb\x6b\x01\x19\x4d\x40\x32\x74\x38\x5d\x9b\xcc\x46\xa3\xe1\x78\xea\xb9\x94\x44\x4b\x8f\xb6\xbf\x92\x96\x33\xa6\x7a\xe2\x2c\xd8\xb3\x0c\x4e\xec\x8c\x8a\x4a\xa0\x5d\xf6\xb9\x95\xc8\x3e\x0b\xac\xb5\x95\x80\xd2\x11\x28\x90\xbe\x9b\xbe\xca\x3c\x2b\x83\x6c\x50\x3f\xef\xef\x05\x6a\x3f\x8f\x7d\x2e\xdf\xc4\xf8\x5c\x21\x82\xe3\xe3\xf7\x20\x22\x7a\x11\x01\xcf\xa3\xf7\x91\x17\xb9\x7a\x10\xc7\x7e\x2e\x27\xe4\xf2\x44\x37\x3e\x34\x88\xe2\xa0\x71\x47\x29\x21\xc0\x48\x15\xee\xd1\xef\xb4\xf6\xca\x93\x88\x4d\x6e\x99\xf7\xba\xc1\xad\xba\x34\x36\x3f\xcf\xb7\x42\xc6\xd5\xdd\x93\x2c\xcc\xe5\xc2\x1d\x6b\xe4\x28\xaf\x6c\x1a\xaa\x28\xfd\x72\x18\x1e\x4c\x1c\x8c\x5d\x92\xcb\x11\x8a\x35\x14\x6d\x20\xcb\xc4\xc1\x45\x04\x41\x25\x39\x11\x8b\xa1\xe1\x34\x54\xce\xf0\x4c\x83\x27\x8e\x48\x4c\x03\x72\x39\xa5\x88\x21\x74\x9f\xe5\x63\x06\x46\x29\x48\xbd\xb8\x97\x86\xff\xc0\x5b\x10\xfe\x1d\x6f\xa9\x3a\x84\x7c\xe7\x21\x3f\xf0\x16\xd4\x71\xd6\x82\x60\x08\x43\x94\x83\xd6\x2e\xb7\x96\x43\x4e\x5b\xe0\xfa\xb3\xfb\xcc\x8f\x46\x4a\x88\x98\xce\xc2\x82\xf5\x51\x8d\xef\xb4\x59\x6b\xf9\x60\x70\x3c\xca\x74\xb9\x98\x50\x44\x9e\xc5\x6f\x6c\x15\xd2\x26\xee\xc7\x07\x2f\x23\x11\x35\x9a\x48\x7e\xd6\x5e\x33\x82\x54\x73\xf6\x95\x4a\x9a\x39\x19\xab\x25\xb4\xab\xe6\x07\xcc\xbb\x5b\x7a\x99\x48\x14\x27\x91\x90\x4a\x87\x73\x9e\x5d\x3f\x85\x7d\x24\x42\xb1\x94\x1b\x22\x8e\xef\xb4\xc8\xc1\x2b\x2e\x34\xc5\xc9\xc1\xc4\x91\x4f\x25\x26\x60\x65\x4d\xac\x13\xac\xb3\xf8\x97\x38\xec\x1e\x8d\x56\x21\x23\x24\xba\x69\xf0\x43\xf2\x03\xad\x17\xbd\x78\xe3\x89\xa7\xf0\x4c\xad\xcd\xd5\xa7\x6f\x64\xcf\xde\x2f\x94\x74\xf2\xdb\xde\x2f\xe9\x45\xf9\x0e\x86\xdd\xb3\x01\xb8\xc7\x11\x26\x1f\x1f\xcc\x0e\x1e\x50\xe0\x61\x8b\xe0\xf7\x68\x36\xb0\xbd\xb1\xbe\x7a\x6d\xd2\x1e\x47\x0a\x31\x87\xae\xa5\xc6\xa8\xe7\x7a\xd1\xb4\xe7\xf7\x32\x89\xd3\x1a\x98\x35\xd7\x8a\xd1\x46\x7e\x63\x85\x5d\xe9\xc7\x3e\x89\xd1\x46\x61\x55\x54\xab\x4a\x63\x56\x46\x75\xbc\x18\x6d\xe0\x55\x31\x4e\x48\xe1\x7d\x5f\x15\xf5\x00\x45\x29\xab\xa2\xce\x28\x3c\x75\x55\xcc\x39\x8d\x41\xab\x62\xae\x69\xcc\xff\xbd\x2a\x66\x73\x1c\xc7\x46\x1f\x8e\xc4\xb5\xda\x57\xee\xd4\x56\x79\x00\x09\x5b\xc4\x24\x5a\xeb\x59\x51\xad\xc4\xe8\x0c\x7b\xc0\x25\xc4\xb9\x3c\x35\x16\xb0\xc1\x3d\x28\x8b\x0e\x7a\xee\xa8\xc6\x02\x38\xae\xd6\xf3\x0a\x7a\xa2\xe3\xc9\x06\x46\x79\xb6\x2a\xcb\x56\xfd\x3a\xdb\xa5\x9c\xed\xa0\x93\xde\xa7\x76\x31\x89\x1f\x94\x83\x0e\xf2\x7b\xaa\x71\x00\x00\x9e\x86\xbd\x68\xc5\xf9\xb3\x69\x89\xb3\xf7\x45\x57\x3a\x79\xa7\x4b\x63\x71\xcf\xcd\xe5\x6c\x30\x3d\x2d\x0e\x71\xd6\x4b\x86\xb3\xd6\x8b\x26\x53\x12\x39\xde\xd0\x5f\x3b\xe8\xe4\x72\xa5\x3d\x47\x5b\x74\xcd\xb6\xc5\xef\xc9\x5e\x4e\x14\xf5\xb7\x03\x0f\xb0\x82\xbc\x5e\x54\x0d\x8f\x03\xa2\x04\x5d\xad\x03\x5e\x4f\x6c\xe4\x68\x0d\x38\x95\x97\x23\x0f\x3b\xc9\x69\x7b\x7a\x12\xce\x1a\x90\x25\xc4\x7a\xbe\x52\xc2\xfc\x40\x0d\x4a\xcf\x48\x8f\x2c\xba\x66\xd1\xe2\x66\x05\x57\xb7\xd0\x56\xdf\x09\xa8\x3a\x68\xcf\x91\xa2\xaa\x71\xe2\x03\x0c\x13\x23\x4b\xe4\x89\xfe\xad\x7f\xea\xdf\x7a\x07\x1d\x74\x54\xa3\x0e\xd5\x7b\x39\x59\xed\xb3\x8f\xc5\x36\x06\x9f\xa5\xec\xbe\xac\x18\x37\x2c\xab\x35\xe7\x8a\x6a\x14\xe1\xba\x3a\x97\xa3\x5b\x81\xe8\xa5\x45\x47\x45\x36\x93\x33\x6c\x74\x14\x5b\x55\x59\x23\x74\x91\x36\x49\x58\xed\xa8\x06\xc1\xfe\x13\xb3\x21\x3d\x60\x0d\x4d\xaf\x98\x92\xb6\x1d\x72\x94\x3b\x64\x28\x77\xf8\x35\xca\x9d\xcb\x28\x77\x04\x5d\xe2\xdb\xd2\x8d\xc7\x11\x83\x70\xf4\x35\x84\xe6\x8b\x5c\x72\x8d\x97\x5c\x63\xf9\x6a\x5f\xe7\x3b\x93\x4b\x6e\xf2\x6c\x4d\x96\xad\xf9\x75\xb6\xd0\x97\xb2\xb5\x3e\x8d\x61\x8b\x8d\x61\xeb\xeb\x31\x2c\xc6\x3c\x36\x3b\x86\x12\x92\xc0\xcc\x07\xc7\x5f\x1d\x79\xfa\xb7\x79\x1d\xdb\xac\x8e\xed\xaf\xeb\x78\x21\x37\xed\x98\x67\x3b\x66\xd9\x8e\xbf\xce\xe6\x0e\xe4\x9e\x1c\x48\x9b\xc5\xa2\x8b\x4d\x62\xc5\x0f\xca\xa0\x45\xa0\x7d\x49\xaa\x46\xe7\x73\xa2\x46\x07\x0d\x5a\x44\x35\x1a\x2b\xe6\x99\x24\x01\x08\x93\x0a\x30\x8d\x09\x2a\x52\xf4\x64\x72\xe5\xf2\x92\xd0\xe8\xa4\xbe\x49\xd9\x34\x5c\x4e\x71\x92\xa4\xa0\x7d\x76\xd2\x51\x0a\x20\xba\x0e\x37\x04\x9c\xd8\xbd\xe1\x67\x90\xd3\xf9\xc8\x5b\x1b\xfa\x6b\x91\x17\x90\x69\xef\xc5\x83\xc3\x47\x29\x33\xb4\x26\xe6\x15\x5f\x39\x3e\xfe\x93\x02\x27\xe0\xc7\x1d\x7e\x0c\xcb\x5a\xc1\xe6\x02\xcf\xb8\x8a\x83\x63\xeb\x08\x6d\x6c\xa6\x6d\x52\x7f\x9f\x42\x4f\x06\x6f\x12\xf2\x9f\xb2\x21\x3b\xfd\xc3\x42\x2f\x01\x38\xf9\x0c\xe0\x84\xad\xd8\x27\x5f\xb6\x07\xda\x72\xca\x2e\x93\x61\x67\xb7\x62\x9e\x7a\x65\x23\x8a\xbf\x45\xc2\xd8\x08\x6c\xe5\xa4\xb3\xe4\x30\x5e\x46\x62\x9a\x48\x14\xbd\x9a\x6b\x95\x49\x93\x33\x4e\x75\xa5\xab\x26\x63\xc1\x6c\x92\x58\xa8\xb4\x29\x13\xfe\xa0\x9c\xb1\x19\x76\xf6\xf5\x0c\xdb\x8a\x79\x6c\x16\xf5\xce\x3a\x9a\xa7\x3d\x47\xc9\x1d\x3b\x5f\xcf\x8b\x88\xee\x5a\xc8\xc1\xa5\x55\xcb\x27\x25\xe9\x01\x33\x41\x44\x57\x2c\x91\x2e\x5f\x22\x11\xc9\xe7\x55\xc3\xa5\xed\x83\x14\xce\x77\xec\x02\xee\x21\x97\x99\x94\x34\xc4\x96\xe7\xd2\x95\xb2\xb4\x0e\xe2\xc1\x2e\xdd\xad\x8a\xa8\x88\x38\xbe\x3a\xaa\x10\xb6\x00\xd9\xd7\x8e\xc2\x19\xba\x86\x4d\x54\x83\xfc\xe7\x16\x14\x9d\x96\x9c\x7a\x0e\xe4\xcd\xfc\x72\x21\xa1\x10\xf6\xfd\x27\x90\x11\x62\x02\x9f\xbd\xcf\x2d\x94\xbd\x91\x51\x34\x8e\x55\x26\x6c\x99\xac\x42\x6d\xba\x0a\x9d\xad\x40\x0a\xde\x7f\x5f\xec\x3a\x36\xef\x36\x92\xcf\x27\x9b\xc4\xfa\xba\x42\xfe\x73\x4b\x5e\xd4\x22\xa1\x90\xc0\x68\x5c\x92\xdc\x1a\x4d\x3d\x92\xdc\x96\x7a\x04\xdb\x29\xe5\x7f\xde\x49\xb4\x1b\x29\x53\x33\xa7\x7b\x54\x6a\xc5\x71\x4e\xe9\x29\x08\x2b\x94\xc0\x93\x85\x8b\xed\x82\x43\x17\x0d\xf7\x37\xa1\x50\x53\x59\x6b\xf7\x07\x04\xa8\xa8\xb4\xe7\xaa\x92\x3f\xc9\xa5\x5b\x1a\x1f\x7b\x3f\xdc\xef\x8a\x5d\x70\xd4\xbc\x63\x00\xf0\x9a\xc5\xdc\x26\xbe\x79\x44\xf1\x55\x26\x75\xc5\x83\x6d\x1e\x6c\xd3\xe0\x88\x51\x84\x93\x2f\x07\x68\x2e\xaf\xb8\x43\x99\x91\x24\x78\x94\x7c\xbe\x8f\x49\x14\x78\xba\x6b\x76\x17\x16\x6a\x3b\x44\x77\xb5\xb6\x43\x50\xbf\xaa\x97\xe2\x8c\x6c\x24\xc6\x94\xa8\xf7\x09\x65\xd5\x46\xea\x3e\x5c\x00\xbd\xbb\x64\x4a\xc0\x0e\x2a\x9a\x8c\x74\x1a\x81\x6e\xa6\xfa\x3b\x53\x10\xd3\x89\xd6\x6c\x83\xa7\xaa\x63\xf6\x5a\xb2\x62\xf9\xe8\xea\xe2\xf3\x8e\x7c\xc1\xd6\x94\x8b\x3f\xaf\x29\x47\x7c\x4d\xa9\xb1\x35\xa5\x3a\x52\x2e\xfe\xb4\x58\xd4\x60\xb1\x48\x8a\xbd\xe4\x7b\xd6\x25\x5b\x00\x2f\xbf\x5e\x00\x37\xc7\x52\x6d\xaf\x3e\x6d\xc7\x57\x6c\xb1\xb8\xfa\x7a\xb1\xd8\x8e\x79\xec\xdf\x6f\xc7\x97\x99\xed\xf8\x59\xda\x1f\xe7\x1d\x4c\xb4\x7e\x35\xcf\x0d\xce\x1f\x13\x4c\xe8\x58\x71\x0b\xd9\xcf\x04\x13\x3a\x60\xdc\xcc\xfd\x16\xdb\xfe\x9a\x5b\xe2\xb6\x1e\xb0\x3e\x7e\x66\xb8\x42\x5c\x77\x89\xab\x03\x3c\xe7\x09\x65\x54\x2f\x88\xb0\x34\xae\x50\xb2\xb4\x37\xa3\xb8\xe7\x24\x57\xd8\x5b\x79\xec\xf0\xb3\x90\xe1\x56\x5e\x9c\x77\x31\x5c\x7d\x7f\xd3\x09\x9a\xeb\x76\x46\xbe\x62\x9c\x95\xc5\x7c\x79\xe6\x4e\xab\xd6\x31\xd1\x8e\x49\xea\x45\xed\x98\x50\x06\x37\x97\x3b\x79\x52\xc4\x87\x9a\x8d\x25\x6f\x52\x2c\x79\x53\xe1\xd4\x82\xbd\x17\x92\x2c\x3f\x4a\xc5\xe2\xc7\x07\x93\xa8\x4d\xfd\xa4\x9f\x3c\x29\xb6\xfa\xf1\x01\x1e\xd2\x9b\x5b\x3f\x94\x64\x46\xab\x12\x1d\x9f\x1e\x5c\x2e\x29\x35\xdd\xf4\x20\x83\x7c\xc2\xe6\xa6\x8b\x5c\x9e\x1d\x7e\xba\xda\x1b\x08\x2a\x16\x65\x3d\xc2\xe9\xbf\x0e\xe9\xbb\xab\xcd\xe3\x8c\x13\xfd\x59\x6b\x49\x03\xd5\x64\x5a\xb5\xf3\x0e\x77\x8b\xe1\x30\x6f\xae\xe9\xc2\x13\x10\xc5\xc9\x97\x54\x2e\x31\x8a\x1d\xb8\xb8\xf4\x4c\xdf\xc2\xfe\x9e\xb3\xcf\x9a\xe9\xe6\x7d\x55\x67\xf5\x74\x55\xc3\x66\x97\x9f\x32\x0d\xf3\x7a\xa1\x64\x1c\x2c\xc9\xe3\xd9\xad\x13\x85\x55\x2b\xe9\xc7\x4e\x4f\x19\xd1\x41\x9a\x77\xd4\x55\x7b\xc2\xe2\x02\x6c\x60\x73\x2c\x67\x42\xb7\xe9\x19\x4c\x8b\x64\x4d\xe8\xce\x3b\xc6\xa7\xbb\x39\xb9\x81\xc2\xfb\x23\x6f\x59\x1e\xdb\xa6\x6f\x7d\x17\x5e\xfc\xfd\xa4\x52\x9e\xac\x5b\xf1\x96\x2d\x45\x14\x8a\x5c\xcc\x70\x35\x3d\xf4\x71\x61\xed\x73\xd5\x8f\x8f\xf5\x93\x27\x78\x16\x31\xc6\xee\x27\x03\xb6\x6c\x37\xa5\x5b\x8f\xcb\x84\x1a\xe9\x20\x1b\x83\x27\xc5\x5b\x7d\x2a\x4b\xb4\xb7\xdf\xb6\xf6\xb6\x5f\xd2\x89\xf6\xb6\x47\xdf\x0a\x25\xbd\x18\xab\xdc\x39\x24\xd1\x86\x5b\x3f\x3c\xb3\x6d\xa1\x00\x50\xdf\xf8\xe7\xf3\x25\xa0\xcf\x3d\x8f\x92\x90\x6f\xb9\xdc\x79\x47\x71\x11\x04\x65\x1c\x78\xa2\x10\x17\x51\x84\xd7\x8b\x68\x84\x8b\xc6\x88\x89\x12\x8f\xc4\xf6\x34\xc1\x9e\x39\xb2\xb4\x37\x34\x63\x2f\x73\xf4\x82\x1d\x65\xa2\xa2\x08\x47\xb9\xdc\x0b\xc6\x78\x66\x00\xe0\x89\x6a\xf4\xf3\x98\x75\xf6\xac\xf0\x82\xb6\x54\x23\x4c\xbf\x7d\xb4\xa5\xc6\x0e\x8e\xf6\x4b\x7a\xa9\xd0\xff\x11\x7e\xd9\x88\xcf\xd3\x3a\xa0\xcf\xdf\x9e\xe9\x89\x15\x28\x6d\x09\x79\x4b\x14\x98\x61\x1b\x72\xb5\xc9\x40\x51\xe9\x46\xe4\xc8\x43\x3c\x97\x91\x94\x61\x2c\x72\x0c\x27\xeb\x47\xd5\x66\x72\x2a\xc5\x3d\xec\x1a\x6e\xa1\x20\xe4\x54\x6c\xd3\xb5\x32\x8e\xfb\x8b\xeb\x18\x7b\xea\x3b\x53\xc4\x3b\xe9\x28\x1e\x3f\x57\x76\xc5\x76\x0e\xe2\x0c\x1d\x70\x57\x5c\xda\x73\x73\x39\x85\x05\x5d\x75\xe8\xa6\xce\x33\xb9\xaa\xa5\xaa\x86\x27\x28\x32\xd3\x43\xbe\x05\x96\xe0\x1d\x3e\xe3\x62\x26\x3e\xdb\xea\x30\x7e\xe0\xa2\xa3\xdc\x75\x99\x77\xa7\x3a\xa5\xe8\x2c\xca\x28\x0b\xcc\x5d\x72\xff\xc6\xaa\x48\x77\x64\xb3\x6d\xed\xbf\x37\xdb\xba\x8d\x56\x6e\xd2\x0e\x10\x99\xcc\xd0\xba\x2c\x5d\xf6\x59\x7b\x98\x96\x4b\x37\x24\x17\x44\x10\xaf\x9e\x14\xf2\xd9\x74\x82\x8b\x6d\x70\x7e\x80\x1d\xfa\xe0\xce\x70\x60\x2c\xdd\x74\xe5\x66\x63\xab\xe6\x72\x1e\x48\x3a\xba\x88\x48\x2c\x3e\x1d\x26\x8f\x4b\x2c\x2f\x5a\x04\xbf\x9f\xb4\xce\xea\xd5\x2b\xfd\xf6\x08\x5d\xbe\x11\x7d\xc3\x7b\x1b\x0d\x23\x2f\x9a\xf6\x48\xb8\x81\x2e\xe6\x44\xdf\x18\x0d\xc3\x79\x34\x1c\xd0\x80\x18\x55\x69\x16\x76\xe7\xa0\x67\x6f\x66\x18\xc1\x23\xd3\x3f\xe9\xa4\xc6\x64\xc9\xad\xdc\xd7\xdd\x6e\x8a\xd1\xe2\x83\x48\xb4\x9b\xa9\x36\x3f\x66\xf1\x6c\xc4\x2d\x15\x49\x91\xe6\x6c\x6e\xa9\xf4\x5f\x06\x49\x97\x87\x81\x9d\xe9\xc4\x31\x92\xda\xb7\xa2\x01\xe9\x32\xe7\x12\xe1\xe5\x36\x75\xa6\x12\x60\x5b\xf1\x55\xd4\xc7\x8e\xe2\x8b\xde\xef\xe7\x72\xfd\x3d\x0f\x4e\xb5\xfa\x6a\xec\xe1\xe2\x9e\xc7\x68\x36\xaf\x50\x32\xd2\xfe\x90\x07\x92\x8f\x9e\xa4\xac\x29\x77\x4e\x32\x07\x14\x52\xc0\xa9\x2b\x43\x71\x5b\x16\xff\xb9\x63\xf9\x6c\x13\x0e\x7a\x37\x2d\xa1\xb2\x10\x30\x64\xf5\x81\x9e\xfe\xd6\xc7\x5d\xcd\x7b\x1b\x29\x22\xac\x64\x09\xd7\x4a\xb4\xe0\x7e\x1e\x7b\x2a\x82\x7d\xc9\x0c\x50\xdf\x52\x0d\x1f\x2f\x0d\x0b\xcf\x2e\xfa\x9f\x8d\xc8\x55\x3a\xa2\x51\x83\x05\xfd\xcd\x48\xd2\xe9\x68\xb1\x87\xb0\x67\xef\x7d\x7c\xf0\xc9\x5c\x97\x27\xb3\x07\x93\xd9\x67\xec\xdb\x12\xea\xf8\x16\xe7\xe5\x32\x28\x60\xcb\xe3\xef\x53\x92\xb8\xda\x62\x96\x11\x18\x36\x53\xe2\x1c\xa6\xc1\x01\xc5\xe9\xb3\xf3\xb3\xba\x7e\x89\x4e\xe7\x44\x1f\xb5\xd0\xe9\x8c\xe8\xa7\x01\xba\x9c\x11\xfd\xb1\x85\x5e\xde\x88\x7e\x77\x88\xce\x66\x44\x7f\x3a\x8a\x51\x4d\x4a\xff\xe0\x13\xfd\xfa\x08\x8d\x66\x44\x9f\x1c\xa2\x60\x41\xf4\x5a\x1b\x8d\x67\x44\x3f\x38\x44\xf3\x37\xa2\x3b\x75\x01\xe4\xf5\x8d\xe8\xf7\x87\x31\x3a\xa4\xb9\x79\x8a\xde\x82\xe8\xdd\x2a\x41\xb3\x37\xa2\x1f\x8e\x09\xba\x38\x6f\x9d\x75\xae\xf5\x97\xd6\x12\x5c\x56\x58\x8c\xea\x34\xef\xf1\x1b\xd1\xbb\x6d\x14\xce\x89\xfe\x38\x27\xe8\xe8\x8d\xe8\x41\x3b\x46\x0d\x1a\x77\xe7\x13\xdd\xab\x23\x3b\x20\xfa\x65\x17\x55\xdf\x88\xee\xd7\x63\x74\x44\xa3\x2e\xe7\x44\x9f\xb7\xd0\x64\x4e\xf4\x5a\x13\x1d\xcf\x88\x3e\x6b\xc4\xa8\x29\xb5\xe5\xaa\x75\xd4\xec\xe8\xe7\x13\x74\x52\x6f\x74\x74\xd2\x45\x9d\xf3\x0b\x7d\xb3\x8d\x0e\xce\x3b\x9d\xf3\x53\xfd\xe2\x10\xdd\xfb\x44\x9f\x1c\xa1\xde\x9c\xe8\xcd\x23\x34\x7e\x23\xfa\xd5\x61\x8c\x5a\x12\x8c\x2f\xb2\xc4\xe8\xba\x83\xdf\xcf\x6f\xf4\xab\x2e\x3a\xbb\xd1\x3b\x41\x8c\xda\x34\xd7\xed\x8c\x80\x5f\x9b\x19\xd1\x7b\x75\xd4\xa6\xad\x6d\xc4\xa8\xd3\x49\xe0\xf1\x12\xdb\x73\xa2\x3f\xb5\x62\x74\x4c\x33\x4d\xde\x88\x5e\x1d\x13\xf4\x42\x7b\xef\x80\xc4\xe8\x04\x9a\x4e\xbb\xe5\x08\x0d\xe7\x44\x3f\x7c\x25\x31\x3a\x95\x6a\xd5\x9d\x13\xbd\x71\x24\xba\xe5\x62\x46\xf4\x61\x0b\x7d\x5b\x2c\x88\xfe\x4a\xf3\x9f\xd1\xa4\x57\x73\xfd\x2d\xc8\x26\x89\xd1\x39\x8d\x39\xac\x37\xaa\x37\x27\x1d\xdd\x6e\xa0\xb3\x37\xa2\xf7\x1a\x31\xba\x80\x95\xf3\x8d\xe8\x9b\x75\xc4\xfb\xfc\x66\x46\x74\xbf\x1d\xa3\x4b\x68\x17\xad\x76\x90\x8d\x4a\x46\xf1\x26\x6d\x1e\xc7\xb3\x93\x39\xd1\x0f\xde\x08\x6a\x50\x3c\xa8\xc7\xe8\x0a\x56\xd9\x37\xa2\x47\x63\x82\xfa\x6f\x44\x1f\x8c\x49\x8c\x6e\x3b\xf8\xbd\x3f\x27\xfa\xe5\x11\x47\x8f\x18\xdd\x75\xb0\xf9\xce\x64\x1f\x36\xfe\x63\x7b\xbb\x5c\xae\xd5\x36\x50\xd8\x0b\xba\x53\x8f\x86\xfc\xdc\xa9\x36\xea\x5b\x1b\x31\xe2\x69\xbc\x03\x29\xb2\xd1\xd8\xde\x2e\x16\xd3\xc8\x20\x1b\x59\xab\xc9\x91\x9d\xaa\x14\x59\xfa\x59\xdb\x2a\x1d\xa6\x91\x1b\xff\xf1\xeb\x57\xb1\xf8\xeb\x97\x5c\xf4\x61\x63\xa7\xd4\xc8\xa4\xa1\x29\x6a\x65\x39\x4d\x69\xa7\x76\xd0\x68\xc8\x69\x0e\x0f\x7f\xfe\xac\x54\x36\x32\x15\xf9\x55\x39\xdc\x92\xd3\x94\xcb\xd5\x6a\xb1\x28\xa7\xf9\x55\x69\x1c\xc8\x95\xdd\xf8\x8f\x83\xdd\xad\xfa\x56\x3d\x53\x9f\x83\x72\x79\xa7\xb4\x11\xa3\x6f\x69\x7f\x95\xca\xdb\xbf\x76\xe4\x44\x3b\xa5\xdd\x83\x5a\x39\x05\x44\xe4\x2e\x39\x38\x2c\xd7\x0e\x32\x2d\xda\xda\xaa\x56\xb3\xad\xde\xde\x39\xac\xd4\x32\xb5\xad\x56\xab\xd5\x52\x49\x4e\x53\xff\x55\xff\x55\x6a\x64\x5b\xb4\xbd\x9d\x1d\xb8\x5f\xbb\x95\xca\x61\xa6\xac\x7a\xb9\xb2\x9d\x6d\x75\xa3\xb1\xdb\xd8\xca\xb4\x7a\xf7\xa0\x58\x29\x66\x7a\xef\x70\xab\x78\x50\x3c\xc8\x94\xb5\x53\x2a\x96\x33\x69\x0e\xca\xa5\xc3\x83\xaa\x9c\x66\x7b\xeb\xd7\x56\x79\x2b\x83\x48\xc5\x83\xc3\x4a\x5d\x4e\xb3\xb3\x53\xf9\x59\xcd\x8c\x66\xb9\x5a\xad\xd4\x7e\x66\xe0\x1c\x6c\xd7\xab\x99\x76\x95\x0f\x2b\xc5\x5a\xa6\x5d\x07\x95\xca\xf6\x56\xa6\xac\xc3\xea\xaf\xd2\x76\x59\x4e\x53\x2a\x1f\x96\xb7\x32\x6d\xdf\x3a\xac\x57\xb3\x69\x0e\x7e\x95\xb6\x77\xb7\x33\xfd\xbc\x5b\xaa\x57\x33\x69\x1a\x3f\xb7\x77\x7e\xd5\x37\xd0\x37\xa9\x13\x77\x76\x76\xab\x99\x86\xfd\xaa\xed\xfc\xda\xce\x60\x45\xad\x58\x29\xfd\xdc\xc9\x0c\xea\xaf\xda\xcf\x52\xa6\xb0\xc3\x4a\xbd\xbe\xb3\x9d\x41\x8e\x6a\xa5\xb2\x7b\x98\x41\x8e\x7a\xb5\x52\x2b\x67\x07\x7e\xf7\xb0\x94\x1d\xf8\xca\x61\x69\xeb\x57\xa6\x61\xf5\xea\x52\x59\xf5\x5f\xb5\x6a\x76\xfa\x15\x6b\x3b\xbf\xb2\x9d\x58\xfa\xf9\xab\xbc\xbd\x2b\xa7\xa9\xfc\xdc\xfe\x99\x45\xc4\xda\xce\x4e\x85\xc2\xb1\xd0\x35\x5d\x6f\x12\x4c\x83\xff\x32\x98\x56\xa7\xff\x36\x62\xd4\x69\x11\x6c\x9a\x3b\x16\x32\xb7\x90\xfc\xfb\x13\x95\xd1\xee\xd2\xdb\x36\xfa\x89\x76\x50\x19\x55\xb2\x5f\xcb\xb1\x68\x17\xfd\xb2\x2c\x74\x43\x6b\x00\x6e\xd2\x3a\xde\xdb\xf4\x7a\x3a\x0f\x3d\x9d\xd7\xe8\xa6\x8a\x7a\x53\x12\xf6\x1c\x7d\xbd\x18\xa3\x60\xdc\x73\x29\xfd\x39\xd1\xdf\x6d\x32\xf1\xe8\x2b\x5d\x69\x07\xbd\x68\x38\xa6\x59\xcf\x47\xc4\xe9\x4d\xe7\xba\x56\x61\x61\x47\x3c\x7d\x12\xfe\x13\x7d\x8b\xbc\xd7\x4e\x6f\xc0\xf2\xae\x97\x10\x09\xc3\xe1\xeb\x29\x4d\xac\xaf\x17\x69\xae\xeb\xe9\x78\x18\x05\x27\xbd\xc8\x3b\xec\xb1\x83\x7e\xfd\x27\x44\xdc\x79\xa4\xbf\x22\x98\xa5\xef\x0c\x3f\x45\xef\xd0\xd8\xb3\xe1\xd4\xe9\x26\x41\x25\xc8\x71\x4a\x9e\x58\x75\x97\xc3\x45\x33\x24\x10\xb3\xa8\x37\xed\x74\xc7\xde\xa4\x3b\x0c\x5d\xbd\xa4\xb1\x90\x89\xfe\x3e\xe8\x85\x61\x6f\xe2\x39\xc3\xc8\x9d\x80\x0d\x9f\x01\x99\xea\xe6\x46\x57\x1f\x0c\xf4\xc9\x44\xbb\xbe\xbe\x5e\x23\x1b\x16\xea\x45\x53\x6f\xfc\x42\x42\xdd\x2c\xa1\x1d\x54\x2a\xa2\x9d\x22\x2a\x15\x8b\x68\xab\x48\x5f\x8b\x56\x8c\xbe\x84\xb1\x3a\x7f\x69\x07\x6d\xd3\x6c\x83\x5e\x34\x9b\x7a\x52\xb6\x8b\x20\x9b\x7a\x8b\xa6\xe7\x89\xbb\xc3\xd9\x38\x53\xc2\x27\xd8\x5b\xa8\x8c\x4a\x5b\x56\x8c\x5c\x32\x97\x52\xb6\x7c\x54\xfd\x04\xb7\x42\x8b\x1f\x46\xd3\xae\x0c\xf2\xf4\xf4\x74\x6d\x0e\x76\x0b\x4f\xd7\xe6\xf3\x0d\x74\x5c\xcb\x66\xfb\xb6\x8d\xca\x56\x8c\xe6\x1e\x91\x6b\x72\xd7\x5d\x51\x69\xda\x3b\x4b\xfd\x84\x4a\xf5\x6d\x2b\x8e\xe3\x2c\x5a\x4d\xf4\xf7\x3f\x8e\xc6\x9d\x27\x43\xff\xfb\x9e\xf7\xfd\x95\x1d\xbe\xaa\xb7\x2f\x0f\x56\xf5\xf6\x3f\xed\xea\x4f\xfd\xbc\xdc\xc9\xab\xba\xf8\xb8\x26\xcc\xcc\xd2\xff\x96\x80\x6e\xff\xfb\x7d\x1b\xa3\x5b\xba\x0e\x74\x7b\x93\xe9\x30\x18\x93\x81\xfe\xde\xad\xbe\xf5\xa4\xa9\x5e\x83\x15\xe1\x52\x5e\x05\xd8\x22\x71\x19\xc7\xc8\x26\x63\xfd\x3d\x18\x0f\x67\xa3\x3b\x70\xe1\x78\x74\x40\x21\x7e\xbb\xa3\x20\x5f\x00\xce\x4d\x8b\xa0\x6e\xf2\x36\xe9\x2d\x3c\x06\x9e\xce\xe1\xde\x02\xe6\x2b\x79\x83\xb7\xed\x62\x0c\x42\xa4\x67\x64\xe0\xe9\x41\x0d\xad\x5e\x9a\xde\x3c\x2e\x80\x5a\x8c\x91\x3d\xb3\x6d\xe1\xe4\x71\x29\x51\x1c\x23\x87\x44\x6e\xe8\x4d\xa6\x3d\xa7\xaf\xbf\x77\x87\x74\xc5\x69\x4d\xae\x7a\x93\x5e\x14\xe8\xeb\xa5\x18\x91\x28\x1a\x32\xa7\xfe\x13\x38\xed\x9f\x0d\x56\x40\xa2\x64\xfe\x64\xea\x0d\x58\x2f\x38\x07\xb1\x30\x2a\xf5\x39\xe9\x4d\x75\x29\x69\x8c\x06\x74\xcd\xa1\xed\xa5\xcd\xa8\x89\xa5\x15\xb0\x39\x1b\xfa\x50\x45\x36\x71\xfa\xb4\x27\x23\x97\x05\x31\x17\xb5\x0b\x0f\x71\x0f\xb2\x9b\x55\xfe\xc6\x7a\xba\x18\x23\xa7\x4b\xc6\xd3\xea\xd8\x23\x74\xb0\x56\x65\xa6\x23\x34\x1d\x0e\xc3\x69\x6f\xf4\x55\x27\x65\x47\xf9\xb6\x9a\x0c\x33\x0b\x78\x3a\x40\xa3\x9e\x77\x1d\xf6\x1c\xef\x00\xfc\xda\xb2\xe0\xaa\x47\x83\xaf\xbc\x49\xcf\x9d\xb1\xd8\x24\xf9\x37\x91\xfe\xd3\xc8\x55\xbd\x18\x91\xb1\x47\x92\x6d\x61\x3b\x41\xd4\x89\xfe\x3e\x81\xa4\x07\x87\x5c\xac\x98\x72\x5b\xbd\x88\xb7\xb5\x04\x8e\x79\xa5\x7c\x36\x19\xb3\x18\x6d\x6b\x07\x4d\xba\xc3\xf1\xf4\x20\x09\x29\x21\x7b\xf8\x96\xc6\x52\xbe\x54\xe4\x2c\xa1\xd1\xb0\xc7\xa5\x94\xcb\x31\x22\x70\x3c\x30\x39\xf5\xa2\xd9\xea\xee\x41\x6e\x6f\x42\xec\xd0\x73\x3f\xb5\x65\xe3\x3f\x9c\x22\xfd\xb7\x11\xc7\x28\xf4\x02\x2f\x72\xf5\xf7\xc8\x7b\x3d\x61\xaf\xeb\x25\xb4\x12\x3b\x46\x24\xe8\x45\xc1\x0a\x60\xc5\x62\xa9\xe4\x38\x1b\x31\x9a\x38\xe3\x61\x18\x56\xc7\xe3\xe1\xeb\x44\x7f\xa7\x15\x7c\xe1\x5d\x9b\x24\x42\xbd\x48\x0e\x7f\xa2\x78\x46\x82\x60\x0c\x77\xf3\xc3\xa8\x43\xc6\x81\x37\xa5\xfb\x33\x00\x67\x93\x4d\x54\x71\x25\x0e\x7c\x9e\xc5\xa5\x62\xf1\x47\x49\x2b\x97\x76\xf3\x87\x5e\x8c\xa4\xa5\x21\x24\x93\xe9\xc1\xcc\xe9\x7b\xd3\x0b\x6f\xec\x78\xd1\xb4\x17\x7a\x7a\x11\x75\x7b\xae\xc7\x82\x5b\x53\x6f\x30\xa1\xed\xff\x66\xc3\x37\x74\x75\xa1\x44\x51\x9e\x25\x38\x9b\x0d\xbc\x31\x9b\xf4\x49\x80\x4d\x43\x32\xa2\xdf\xf7\x19\x6b\x89\xe2\xa0\x7b\x5b\x3a\x43\x7f\xc8\xa4\x28\x15\xb8\x68\x76\x21\x9b\xea\x31\x93\x6a\xfb\x3b\xf9\x4e\x0a\x5b\xf4\xf7\x3b\x61\xc7\x71\x9b\xd9\xe3\x38\x32\x07\xd6\xb7\x05\xac\x2f\xf2\xe7\x44\x9f\x1e\x49\xd5\x22\x6d\x00\xb7\xa4\x5a\x73\x7b\x24\xe4\xd7\x17\x4f\x5c\xfb\x2b\x09\xb9\x6f\x11\x16\xf4\xd4\x12\x41\x0f\x22\x68\x9a\xa4\x7a\x6c\x91\x44\x01\x2c\x01\x25\x1b\x8f\x6c\x4b\x4e\xe5\x2f\x22\x85\xa0\xe8\x90\x8b\x6d\xae\x7f\xf6\x33\xe7\xb2\x24\xed\x67\x82\xb6\x8b\xaa\x41\xf0\x26\xfd\x6c\x3d\x13\xb4\xd9\x02\xe3\x50\x04\xb3\x86\x24\x47\x37\xb3\x31\xa0\x8e\x6e\xa3\xc5\x8e\x4e\xd0\xf9\xad\xee\x66\xcc\x2e\xb2\x66\x13\x4c\xcc\xb6\x6b\x89\xd3\xb1\x61\x0f\x0e\x3c\x89\x79\x62\x5b\xca\x8f\xff\xeb\x3a\xff\x23\x50\x3f\x3e\x4c\x4b\xb2\x9a\xd7\x26\xcb\x76\x3f\x18\x28\xe4\xe2\xa7\x27\x85\x8c\x83\xd9\xc0\x8b\xa6\x13\x54\x52\x91\x87\x1d\x7e\xf8\xe7\x8a\xe3\xb3\xcd\x9e\xe2\x21\xd7\xf4\x2d\xf5\xe3\x03\x3c\x08\xc3\xbb\xe1\x60\x66\x68\x60\xe2\xa9\xc6\xc0\x06\xf9\xe0\xb4\x48\xaf\x9d\xb9\xf4\xf8\xb2\x38\x07\xfb\x6d\x02\xf2\x75\x5f\xc3\xf2\xdb\xd9\x5b\xad\xeb\xd5\xb2\x88\xeb\x9b\x3d\x66\x57\x47\xbe\x0e\xbc\xe7\x37\xb1\xf7\x1d\x34\x39\x53\x8d\xa0\xa7\xdc\x77\x54\xe3\x0e\xdf\x73\x33\x13\x4f\x2b\x64\x00\xdf\x37\x9c\x90\x4c\x26\x1b\xba\x7b\xc8\x34\xc4\xae\x43\x85\x24\xf5\x8b\x91\x8d\x89\xd6\x23\x8a\xaa\x3d\x29\x17\xc8\x46\xc4\xbc\x5f\x70\x71\x9d\xde\x44\x23\x4f\xb4\x12\xda\x23\x88\xf2\x3d\x9e\xa6\xa6\x95\x24\x01\xbe\x3b\xed\xbe\xbf\xe2\xb2\xf6\xe1\x10\x5c\xfa\x75\x57\xc9\x5f\x12\xb3\xe3\x58\x18\xbf\xf8\x34\xc9\xe9\xb2\xda\xfa\xfc\x54\xb1\x91\x73\x98\x94\x71\xdf\xd1\x3c\xed\x94\xa4\xca\xf7\x60\xb4\x21\xb0\x57\xba\xc1\x3d\x07\xd3\x51\xce\x0a\x09\x97\x35\xef\x99\xc4\x86\x7b\xa6\x78\xcf\x64\x45\xc6\xc8\x7b\x5d\x9b\x9d\x31\xc9\x8c\x7b\xa6\xf1\x96\xb1\x01\xf0\xc0\xfb\xfe\xa1\x83\x68\xa7\x07\x3d\xe5\xa1\xa3\x1a\x0f\xcc\x1c\xd3\xaa\xe2\x7c\x5e\x9c\xff\xb7\xc5\x3d\xac\x28\xee\x31\x2b\xf8\xbc\xc9\x74\xd8\xe5\x1b\xcd\xcd\x44\xf7\x3e\xbd\x95\x01\x29\x4b\x32\xf5\x14\x62\x7a\x0e\x1d\x46\xe4\x31\x25\x4e\x9b\x5d\x88\x99\x5d\x73\x6a\x21\xd0\xe3\xb0\x4c\xc7\x42\x7d\x5c\x34\xfa\x7b\xbe\x91\xcf\xf7\x55\x6e\x51\x8e\x98\x4f\xed\x3c\xb9\x31\xfb\x96\x85\x22\x4c\xcc\x4e\x83\x7f\x81\xe0\x0a\x51\xd1\x08\xdb\x66\xdf\x42\x13\x1c\xb4\x89\xd9\x87\xdb\x9e\x22\xc6\x23\xd5\xc3\xde\xc7\x47\x71\x1d\x47\x70\xa3\xe2\xa0\x10\x32\xb8\xc8\x9c\x58\xdc\x64\x9d\xb7\x9f\x86\xe5\x47\xdf\x95\x52\x1e\x14\x51\x94\xa8\x30\x51\x7f\x8c\x54\xd5\x52\xf5\x4c\x82\x20\x89\x12\x0a\xad\x71\x9c\x88\xdb\x24\xfd\xd0\xcd\x4e\xce\xae\x59\xb7\x90\x8b\x03\xb8\x75\xf1\x8c\xac\x41\xe0\x5c\xae\x88\x99\x46\x44\x3e\xef\xa9\xae\xe9\x59\xb8\xc8\x1b\xe0\x89\x15\xcf\x35\x8b\x16\x76\xc0\xc2\xed\x0f\xdb\x2c\x5a\xea\x77\x1b\x24\x57\xf8\xfd\x62\xd1\x20\xa6\x57\x28\x59\xbf\x71\xaf\xcd\xde\xf6\x7d\xac\x55\x40\x3c\x93\x7e\xc1\x0d\x96\x56\x52\x0d\x80\xee\x28\x74\x28\xac\xbc\xaf\xfe\xa0\xc5\x52\x58\x9e\x95\xca\x0c\x49\x7a\x0b\x62\x35\x84\x81\x37\x8b\x88\xfd\x2b\x59\xa9\x48\x27\xb6\x6f\xe4\x28\xa5\x92\xe7\xba\x72\x85\x92\xfa\x9f\x15\x0b\x15\x4a\x12\x76\x38\x37\x59\x6b\x3b\x60\xb0\xf9\xf3\x54\x34\xd9\x6d\x84\x7b\xa3\x10\x55\xb5\x62\xb6\xf8\x27\xe2\xfa\x04\xdf\x5c\x29\xe2\xbe\x02\xb9\x2a\xb2\x4d\x62\x19\x0e\x6e\x36\x88\x14\xcc\x16\x7f\xc7\x2c\x26\x0d\x23\x7b\xd8\x85\xfb\xc1\x7d\x9a\x41\xa7\x23\xe4\xdd\xf0\x9b\x06\x07\xac\xbb\xa0\xf3\x9e\x62\xcb\x8a\x46\x76\x52\x5f\xf2\x19\x8b\xd9\x06\x64\x70\xfb\xb6\xec\xbe\xde\x66\xd6\x65\x5d\x95\xa9\xca\xdb\xa6\x6b\xa9\xef\x6e\x62\x47\x76\x6d\x1a\xbb\x78\xbd\x18\xf7\x7c\x25\xb9\x72\x26\xc6\xdf\x64\xe7\x56\x72\x6f\x98\x7e\x30\xcc\x04\xcf\x42\x1e\x9b\x05\x1e\x9f\x01\xa0\x72\xe4\x8b\x77\x2f\xef\x7c\xa7\x99\xad\xe4\xda\x9f\xc8\x96\x08\x6f\xd2\x1b\x29\x58\x50\xfb\x3e\xdd\xef\xa0\x55\xdc\x4c\xc4\x81\x10\x03\x79\x98\x10\x61\x48\xe2\x7e\x3b\x99\x78\x8e\x25\x17\xcb\x94\x05\x26\x24\x99\xa5\x8e\xc5\xe5\x5a\x16\x6f\x69\xb7\x89\x92\xd4\xf8\x90\x28\xfe\xcd\x92\xa4\x8f\x2c\xf4\xf9\xf6\x87\xcc\xa2\x2a\x79\x61\x83\x85\x24\xc5\x43\x8d\x78\x4e\x66\xed\x4a\xbb\xdf\x96\x30\x95\x2e\x64\xb4\x58\xad\x3a\xfc\x4a\xd6\x6a\xf1\xb6\xc7\xdb\xbf\xcf\xbf\x97\x2f\x56\xfb\x62\x46\x3c\x7c\x21\xad\x5f\x5c\xc7\x92\x3d\x75\xa6\xc9\x51\xcc\x88\x44\x00\x5a\xbf\x7f\xba\x9e\x2b\x94\x0c\xc9\x4e\x32\x72\x28\x05\x62\x25\x62\x20\x14\x29\xec\x3c\x26\xa6\x6b\x7d\x0f\x28\x2a\xa4\x7b\x9d\x64\xef\xf3\x66\x85\x34\x49\x70\x93\x5c\x8a\x3b\x86\x53\x28\xa8\xb6\xe9\x58\x18\xd6\x38\xf2\x23\xa0\x83\xa5\x22\x52\xc0\x34\xf4\x3b\x7c\xae\x10\x9f\xe9\xde\xb0\x46\xf7\x6e\x24\x83\x31\xd0\x8e\x34\xcd\xd3\x8d\xd4\x0b\x50\x13\xd3\x7d\xb6\x14\x29\x45\x8f\x43\xf9\xf9\x9b\x36\x6d\x1f\x64\xc4\x9f\x9f\x94\x22\xfa\x59\x00\xa9\x25\x55\x87\xf5\x31\xb5\xb9\xba\x94\x3f\x14\x7d\xcf\xaa\x91\x5a\xb3\x01\x14\x29\xfd\xaa\xc0\xda\xc4\x17\xa2\xa2\x6a\xd8\xe6\xab\x6b\xd1\xa5\xae\x6c\x7d\x7c\x14\xd5\x3c\x4d\x41\x43\x67\xae\xa5\x10\x73\x07\x02\x0d\xdb\x6c\xb0\x44\x3f\x79\x22\x6e\xb3\xa7\x39\x9c\x8d\x27\x0a\x31\xb7\x79\x32\xb0\x0f\xc8\xce\x48\x14\x62\x6e\x49\xa1\xd7\xec\x90\x05\x8c\x8e\xcb\x69\xd3\xf3\x1a\x58\xb6\x21\xea\x73\xd7\x0e\x96\x28\xaf\xaf\xb4\x40\xc8\x77\x3b\x56\xe3\x6f\x30\x4f\x6e\xf0\x86\x0c\x7e\x8d\xd7\x60\x8d\xd7\x6f\x0d\xea\x0e\xbd\xb2\x76\x3a\x8c\xa6\xdd\xb5\xc6\x2c\x0c\x1f\x3c\x32\xce\xb8\xc9\xe8\xdf\x60\x73\x43\x3e\x56\xda\x40\x1b\xe9\x1b\x3f\x0f\xda\x40\x1b\x70\xde\xb3\x81\xbc\x29\x41\x1b\xec\xc4\x66\x03\x6d\xc0\x49\xcc\x86\x85\xc2\x1b\xfc\x1e\x1b\x8f\x4a\xff\x66\x49\x2e\x26\xbc\x31\x89\x85\x6d\x2e\x01\x33\xb8\xc1\xa6\x59\xb2\xe8\x3e\xc1\x7e\xd3\xa7\xfc\x96\x7d\x5f\xfe\xa2\xdf\x16\x0a\xda\x04\xa7\xc9\xe9\xaf\x85\x7a\x34\x6c\xa7\x58\x44\xdb\xf0\x57\xda\x42\xa5\x1d\x54\xa6\x31\xc1\x0d\x36\x4b\xa8\x54\xdf\x46\xe5\xfa\x4f\xb4\x5d\xae\xef\xa0\xdd\xf2\xcf\xfa\x0e\xda\x2a\x6f\xfd\xaa\xfc\xdc\xde\xa5\x39\x4a\x3b\x3b\xe5\x5f\x5b\xe5\xfa\xb6\x64\x50\x2d\xba\x59\xc1\xfe\x1c\x04\xcc\x6c\x46\x2d\xe0\xbc\xcb\x3b\xe9\xeb\x51\x9b\xa0\x83\xb9\x3e\x6c\x13\xae\xe5\xdb\xee\x4a\xb1\x23\x16\xfb\x9c\xc4\x76\x18\x88\xba\x9c\x68\xcc\x12\x4d\x68\xa2\x2c\x73\xb4\x14\x2b\x31\x4a\xe3\x76\x86\x6f\x24\x99\xc9\x38\xc9\x44\x92\x34\x22\xca\x46\xb0\x45\x3f\x8d\x1e\x66\xa2\xd3\x2d\x4f\x4a\x32\xca\x96\x9b\x5d\x04\x9e\x33\x91\xb0\x24\xc8\xd2\xab\x37\x19\x2d\xdb\x8b\xbf\x12\x8b\x5f\x97\xc9\x7e\x53\xc4\x4e\xfc\xa0\x0c\x6f\xd0\x0b\x30\x11\xc3\x9b\x2f\x35\x75\x87\x37\x9a\x67\x1e\x3b\x96\x4c\x82\xb3\x5d\xbf\x21\xeb\xd6\xce\x67\x60\xfb\x04\x9b\x16\x13\x85\x23\x9a\x84\xf3\xaa\x08\x5b\xfa\x64\xd8\x9f\x7c\xd2\x29\x90\x7c\xb8\x64\x9e\xa6\xa3\xf3\x21\xf9\xa2\x93\x42\x4d\xda\x31\x6d\x13\xc5\xb4\xe9\x0a\x07\x22\xa2\x67\xb6\x85\xe8\xfe\xce\xd5\xfc\x1e\x8a\x56\x86\xb4\x9e\x8a\xc5\xed\x55\x12\xc6\x26\xb2\x0c\xde\xca\x65\xe1\xfe\xab\xe5\x22\xa6\x4c\xda\x9d\x76\xfd\x85\xfe\x9f\x76\xad\x30\x23\x73\xb5\xf6\x4a\x6b\x5b\x50\x1b\x1a\x7f\xd3\x58\x15\x3f\x4c\xe2\x47\xc5\x95\xbc\x14\x58\xa7\xf3\x8b\x9f\x65\xc1\x13\x9c\xa2\xec\x3a\x2c\xd0\xc5\xac\x09\x3a\x59\x27\x34\x43\x2c\x72\x35\x6c\xb0\xa0\xcd\xed\x61\x97\x85\x96\x98\x62\x17\x88\xfa\x03\x2c\x49\xdc\x28\x1e\xe2\xe8\xc5\x7b\xfa\x52\x35\x9c\x7d\x05\x88\x58\x09\xa3\x81\x72\xc4\x9b\x52\x98\x4d\xc9\xc6\x92\xaa\xea\x0a\xc9\x84\x13\x16\x8e\xec\x0c\x04\x9a\x1a\xe4\xbf\xbc\x1b\xc5\xa3\x4f\x20\x28\x91\xb0\x10\x39\x74\x09\xf6\x70\x71\xcf\xa5\xb1\xfb\x9e\xce\x89\xa8\xc1\x38\x91\x59\x3f\x74\x09\xb6\x0d\x47\x52\x08\xe5\xd3\x31\xd1\x03\xb5\x39\xa5\x49\xbb\xe5\x72\xeb\x53\xb7\x10\x21\x8e\xc3\x4d\x49\x0d\xc6\xc4\xb0\xf7\x04\x6c\x43\x65\xda\x66\x82\xe7\xb2\x29\xa5\xce\xd5\x06\x86\x2e\x41\x25\xe6\xbb\xe7\xe3\xc3\xde\xc3\x22\xcf\x52\x96\xd5\xfa\xa8\x22\x9a\xb5\x62\x3c\x12\x26\x30\x4f\x5b\x9f\x47\x9b\x92\x4b\xa2\x44\x15\x71\x02\xef\xa1\x48\x09\x76\xd6\x68\x17\x4f\xe7\x23\x6f\xe8\xaf\x11\x8c\xf1\x53\x77\x9f\x9b\x79\x23\xaa\xfe\xc9\xe0\x1b\x58\x57\xa6\x60\x67\x74\xb5\x5f\xb9\x63\x6c\x49\xef\x95\x3f\xec\x24\xdb\x99\xaf\x72\x36\xe5\xd6\xa7\x4d\x27\xfb\xbd\xb3\x1c\x5f\x5c\x0a\xd8\x5a\x4e\xb1\xb3\x9c\xa2\x54\x2c\x5a\x16\x7a\xa1\xed\x70\x46\xda\x69\xfd\xb0\x75\x73\xfa\xd7\x61\xb5\x53\x47\xff\xce\xe7\xc3\x50\x7b\xa8\x57\xaf\xfe\x3a\x3d\x3f\xeb\x34\xff\xaa\x1e\x1c\x5c\xa1\xbb\xae\x85\x5e\xa1\xbb\x68\x2b\x68\xcb\x68\xdd\xa0\xc6\x5b\xf4\x07\x6a\x46\x6b\x43\xbf\x59\x40\x51\xda\xa5\x59\x57\xb0\xe6\xf0\x66\x96\xd8\xd7\x76\x71\x69\x1b\x17\xbd\x26\xda\x9e\xf4\x4a\x49\x84\x6c\x17\x57\xec\xf8\x69\x67\xa7\x63\xf2\x33\x79\x13\x23\xf3\x6d\x69\x58\xfe\xf7\x8e\xf9\x5b\x76\xcc\x3b\xad\x53\x79\x18\xc5\xe7\x75\xf3\xfc\xaa\xc3\xbe\x12\xfc\xcf\x06\x83\xad\x6d\x4e\xef\xc1\xfd\xd0\x3f\xc2\x85\x74\xbb\x99\xb7\x3f\x59\xa3\x17\x67\x2d\x76\x81\xc0\xe9\xc3\x6f\x1c\x66\xce\x5b\x05\x5f\x11\x31\xe6\x81\xb1\xda\xa1\xfa\x83\xbd\x94\x8a\xaa\x8a\x42\x7c\x7b\xa5\xec\xac\xd8\x8f\xde\x9f\x3c\x3d\xb1\x28\x12\x15\x88\x8a\x82\x1b\x7d\x27\x8e\x55\x34\xa2\x5c\xca\x04\xaf\x97\xb8\x2f\x97\x30\xf1\xe5\xc2\xfc\xb8\x84\xcc\x8f\xcb\x82\xd6\xf7\x87\xf2\xa2\x3d\x79\xdf\x5f\xb4\xe0\x46\x45\x76\xe6\x2b\xb5\xa3\x08\x26\xb2\x0e\x6c\x4b\xe9\xf4\x94\xc5\xaa\xc3\x85\x17\x44\xac\x98\x19\xbe\x98\xa8\xcc\x22\xd9\x04\xaf\x93\x27\x65\x91\x70\xcb\x37\x3d\x65\xb4\x44\xcf\xa6\xe7\xba\x36\x57\x19\xa2\x53\xca\x63\xc6\xea\x7d\xec\x6a\xc7\x63\x62\xf8\x7b\xd8\xd5\xda\x63\x92\xcb\x79\xeb\xd8\x37\x3c\xec\x23\x3f\x8f\x5d\xed\x64\x4c\x04\x1f\x0f\x6a\x45\x8e\x16\xdc\x7c\xf7\x69\x7f\xa5\x9f\x8a\x9f\x0f\xbe\xbb\xda\xe9\x98\xa8\x2a\x8a\x70\x5f\xf1\x50\x88\x1c\xed\xc9\x53\x8d\xe8\x37\xd1\xfa\x83\x5c\x4e\x21\xf8\xbd\x3f\xd0\x23\xd4\xf5\x88\xfe\xbe\xd9\xd3\x21\xb7\xa7\x7e\xa7\xc9\xd0\x6c\xcc\xbe\x43\xf6\x1d\xc7\x12\xf3\x8f\xbe\xd1\x8c\x05\x97\x40\x56\x66\x36\x44\xeb\x7a\x12\x61\xb8\x58\x46\x08\xd9\x4a\x99\x69\x21\xc0\x0b\x14\x61\x37\xef\xa3\x11\x66\x46\x57\xc2\x1f\x4a\xa9\xa0\x38\x79\x4f\x55\x7f\x04\xac\x35\x53\x1e\x1a\xd1\x10\x63\xb4\xe7\x92\x5c\x6e\xb4\x87\x43\x23\x9f\x1f\x09\x8b\x76\xa3\xef\x01\x9a\x70\x10\x6c\x6b\x21\x05\xf7\x7b\x84\xec\x82\x52\x2a\x78\xea\xf7\x48\x55\xd1\x4c\x20\xd9\xa0\x17\x29\xa4\xe0\x88\x68\x9f\x45\xbf\x60\xca\xd0\xda\xb9\x5c\xf1\x37\xd9\x2f\xed\x05\xb9\x9c\x22\x20\x4e\x7e\x8c\xd4\xef\x23\x01\x60\xc6\xbe\x5e\xf0\x48\xd5\x8b\x7b\x98\xec\x4f\xb0\xe0\xc9\x27\xaa\x3e\xe3\x36\x18\x0a\x11\x9a\xa9\x94\x43\x9e\x15\x26\xb9\x1c\xf3\x78\x74\x3a\x26\xfa\x08\x9d\x8c\x89\xfe\x82\x8e\xc7\x44\x9f\xa0\xf6\x98\xe8\xb3\xb4\x57\xfb\x12\x4d\x2c\x58\xfa\xa2\x24\x32\x5b\x34\x8a\xbf\xc1\x0e\x07\x2e\x30\x71\x5c\x6d\xe7\xb7\x14\x49\x7b\xd7\x28\x62\x86\x01\xe4\x3f\x4b\x45\xd5\x50\x09\xff\xfa\x51\x4a\x89\xa2\x12\x28\x6c\xed\x60\x4c\xf6\xb5\x1d\x5d\x9a\x7a\x44\x9e\x7a\x79\xd9\xbe\xcf\xf3\x8d\x30\xdf\xda\xdd\xc4\xc5\xf8\x41\x79\x16\xe4\xf4\xf3\x0d\x3b\x93\x5f\x65\xb2\x64\xed\x67\xbc\x9a\xd0\x7e\xfe\x82\xd0\x16\x3b\x78\x6a\x5e\xb4\xd7\xc2\xa7\x32\xed\x7d\xd5\x50\x91\x30\xa2\x7e\x78\x89\x65\x03\x37\x8b\x2a\x51\xe9\xd6\xc3\x2e\xed\x2d\x6e\x46\x7d\x05\x95\x03\xc4\x9f\x58\xa3\x28\x21\xe7\xe2\x7b\xa5\xda\x26\xa9\x29\xe5\xff\x87\xb9\x77\x6f\x6a\x5b\xd7\x1e\x86\xff\xef\xa7\x28\x67\xfa\xcb\x58\x44\x11\x09\x2d\x3d\x3d\x36\x22\x03\x4d\xb8\x53\x0a\x25\x01\xea\xf1\x9c\x91\x2d\xdb\x04\x9b\x10\x72\x03\x42\xf2\xdd\xdf\x59\x4b\x92\xed\x5c\xe8\x3e\x67\x3f\xbf\xf7\x99\x67\xf6\x2e\xb1\xee\xf7\x75\xd3\xd2\x5a\xac\x71\x41\x35\x71\x88\x62\x78\x1a\xf2\x4a\xad\x59\xf9\x42\x23\x5e\xdb\x28\xd0\x2e\x77\x4f\xf4\x33\xa1\x31\x0f\x69\xc2\x23\x62\x5b\x90\x6d\x39\x3d\xe2\x55\x93\xc7\xd4\xee\x56\xbd\x75\x5e\xa9\xd1\x3f\xb6\x6c\xec\x78\x68\x32\x89\x10\x27\xc8\x48\x56\x4b\x72\x03\x70\x8d\xeb\x0f\xb4\xfd\x3d\x9d\x5a\xb0\x29\xa7\xd3\xea\x0e\xf7\xa7\x53\xf4\xff\x22\x39\x9c\x6c\x01\xc7\xd9\x9f\xd9\x96\xcc\x4c\xa7\xa8\xad\x1a\x54\x6a\x14\x37\x89\xbf\x81\x44\xef\x7a\x40\x08\xa1\x41\x85\x4b\x2a\x74\x56\x7f\x43\xd2\x8a\xd8\x40\xdb\xdb\x50\x57\x25\x58\xc7\xea\xe4\xba\x00\xb8\x27\xb8\x74\x7c\x6e\x09\x36\xea\x57\x04\xfb\xd4\x21\x1b\xa6\x9b\xd9\x6b\x0a\x25\x75\xca\xba\x5f\x2e\x4b\x12\x28\x16\xe7\x53\xa7\xec\xaf\xcb\xdc\xba\x91\xee\x54\x66\x97\x73\x60\xf6\x45\x46\x36\x06\x6e\xa0\x1e\x7d\x64\x33\x93\x11\x8e\x81\x22\x1c\x17\x6c\xbe\xc0\x76\x63\xfd\x5e\xd1\x92\xb9\x71\x1e\xa6\x9e\x91\xba\xc1\x64\xc1\x13\xa3\x36\x24\x04\x74\xa3\xe3\x9b\x59\xa0\xb7\x97\x96\xd8\xd0\xfb\x92\xcc\x9b\x54\xbe\xfb\xc4\xf1\x92\x68\x15\xcd\x9a\x61\xdc\x8c\x6d\x8b\xfa\xea\xfa\xbc\xd1\x89\x3b\xc3\x41\x16\xaf\x14\xf1\x75\x7d\xca\x8f\xde\xbe\x08\x86\x8f\x7d\x5b\x37\x4a\x7b\xfd\x30\xea\xbc\xd8\xad\xee\xa2\x15\xa6\x8b\x7d\x42\xe8\x60\x14\xad\x4e\xfd\xb5\x0f\x34\x7f\x76\xbc\xc2\xe7\x8f\xb2\x37\xcf\x49\xef\x2e\x43\x6b\x60\x1f\xaa\xde\xba\x25\x2b\x01\xd9\xb0\xe2\x75\x2b\xaa\x84\x84\x38\x92\xe3\xc7\x86\xaf\xad\x57\xd6\x9c\x78\xdb\x77\xca\xe5\x98\x04\x15\x2e\xdc\x9a\x79\x5b\xd5\x6b\x59\x21\x20\x20\x42\x6b\x6c\x93\x38\x98\xb8\x59\x4c\x7c\x2f\x21\xd2\x09\x1a\x88\x60\xfa\xe7\x42\xba\xae\x71\xf6\xe1\x5d\x66\xf4\x47\x37\x33\x79\xbe\x9a\x1b\xbd\xfb\x33\x33\x2a\xfe\xc8\x87\x2e\xb2\xa1\xb9\x8d\x85\x6c\x36\xf7\x8e\x33\xdb\xe6\xfb\xa7\xfc\x6d\x86\xc6\x6e\xfa\xad\x05\xb7\x94\x83\x56\x5e\xba\xdf\xaa\xf7\x5b\x36\x64\x09\x9f\xa1\xf8\x6c\xef\x18\x9f\x66\x3e\xad\xba\x59\xb4\xf4\xfe\xdc\x3f\x75\x85\x47\xea\x22\xe7\xef\x5d\x8f\x2c\x0a\x98\x87\x19\xec\x3e\xa8\xf1\xda\xec\xd6\x1a\x1a\xd8\x3d\xd4\xb0\xfb\x2f\x59\xfa\x25\xa3\x3f\xfa\x0e\xaa\xa5\xee\x87\xef\x5a\x05\xab\xef\xc1\xb6\xac\x57\x6a\x76\xb0\x23\x95\x21\xa0\x77\x97\xa0\xf5\xc7\x25\xb8\x6f\xfd\x95\x38\xe0\x9d\x65\xb8\x6f\x59\x55\xf2\x37\xd9\x7e\x99\xb1\xfd\x21\xb0\xfd\x92\x7e\x3f\x16\xd4\xb8\xe8\x38\xa8\x21\xf3\x89\x9c\x39\xf2\xe0\xfa\xcd\x78\x27\x48\x7e\x75\x26\x21\x2f\xc0\x55\xf5\xd0\x3b\x24\x64\x3d\x54\x82\x02\x2d\x1c\x97\x64\x5d\x52\x5f\x93\x15\x3e\x06\x51\x36\xa0\x22\x0a\xe9\xc3\x2c\x59\xb7\x9d\xf1\xf8\x8f\xfe\x22\x8b\x9f\x33\xf7\xda\x59\xd0\x66\x71\x56\x0c\xc9\x05\xac\xbd\x71\x6b\x76\x90\x71\xf5\x8f\xbe\x61\xea\x09\xf5\xf5\x0d\x88\x19\x90\xa3\x13\xe6\xb8\xf2\xd5\x00\x6e\x91\xb3\xce\xe0\x99\xf9\xb0\x6b\xdb\x7a\x0e\xeb\xdf\x23\x3b\x33\x7a\x73\x50\xab\x9f\x3c\x0a\xfb\x14\x1d\xc6\x1a\xe8\xf4\x76\x1e\xd8\x73\x6f\xfa\x79\x7a\x2c\x8a\x6e\x05\xb4\x75\x77\xed\x23\xf9\xbb\xe6\xdd\xb5\xe0\x16\x78\xcc\xec\x6b\x2b\xfb\xaa\x55\xf3\xe4\xfc\xf3\x73\xfe\x89\x15\x18\x8e\x33\x8f\x2b\x24\xe7\xb1\x9f\xf3\xd8\xff\x9e\xf3\x44\xde\xd0\x73\xe0\xec\xb3\xfd\x53\x36\xec\x3c\x84\x8f\x91\x14\xab\x2c\x5f\xc0\xb4\x0e\x5b\xb3\x2c\xaf\x14\xc3\xf0\x9d\x6c\x8f\x2d\x6b\x74\x2c\xe8\x67\x3a\x3e\x86\x65\x2a\x96\x80\x16\xde\x2f\xf5\x8c\xa5\x5e\xe6\x4a\x29\x83\x5c\xef\x94\x79\x6a\x15\x60\xcb\xa8\xa5\xcc\x1f\x8e\x34\x24\x91\x17\x2b\x54\x33\x04\xeb\xf9\x8e\xe0\x82\x75\x7d\xed\xe9\x79\xdc\x32\xde\xfd\x72\x79\x24\x2e\x7f\xea\xfa\x1e\x4b\xdc\xc0\x63\x32\x64\x77\xcf\xd3\xa9\xf6\x9a\x26\xdc\x40\x6d\x26\xf8\x14\x1e\xfb\x31\x74\xab\x9e\xad\x8c\xed\x17\x2c\x00\xcd\x5f\x91\xfb\xac\xe7\x53\x09\x8d\x09\x1a\x50\x9f\x75\x8b\x7b\x28\x85\x46\x12\x57\x62\x4b\xdf\x1f\xa6\x53\x15\xe5\x46\xbb\xde\xec\x9a\x85\xff\x5e\x09\x74\x58\x17\x71\xfc\xf5\xcd\x8a\xd4\xb7\x6b\x61\x43\x06\x3a\x09\x6c\x3d\x16\x18\xb8\xc7\x46\xc3\x19\x82\xb9\x1f\x2b\xa6\x46\x89\x15\x9f\x5c\xc1\x26\x81\xc7\x46\xc1\xfc\xa3\x4d\xbf\xfe\xd6\xf3\x6d\x9f\x76\x7d\x55\xe3\x0f\xc8\x78\x2d\x3c\xf3\x38\xf3\x9a\x1d\x1d\xfc\xc1\x17\x42\x0a\x33\x95\xc0\x8c\xca\xa2\x6d\x9e\xe7\x56\xc1\xf8\x45\x66\x8d\xb2\xd1\x37\x10\xc6\x7f\xd6\x5e\x3d\x9e\xd4\xef\xab\x76\xc7\x71\x66\xec\xcb\xeb\xf4\xa1\x86\xa4\xe7\x4f\xc6\x3d\xc7\xb3\xde\x05\x41\x6f\xa1\x57\x26\xbf\x71\x0f\x35\x7c\x5e\xed\x29\xaa\xd1\xd7\xa1\xe6\xb1\x28\x28\xe1\xe4\xb6\x9a\xd9\x99\x4f\xf5\xd7\x3e\x7b\x7a\xb0\x02\xb7\xef\xd1\xc0\xdd\xf5\x88\xb3\x7f\x9c\xb9\x8c\x0c\x8a\x9b\xa2\x99\xab\x7f\x15\x9e\x61\x5f\x58\x9b\xc4\x79\xbc\xb0\x24\xad\x42\x0b\xf8\x55\x43\x59\x3f\x8c\x53\x2a\xcf\x8e\x85\x8b\xd0\xfd\xbc\x16\xe1\xca\x57\xe0\xb0\x85\x45\x68\x34\x30\x88\x03\xca\xe1\xa3\xee\x7d\xe4\xdd\x4f\x9b\xce\xda\x63\xd7\x8a\x48\xa9\xb4\xd6\x85\xdf\xe9\x34\x64\x77\xbe\x05\xe7\x3f\x77\x51\x13\x41\x8b\x92\x9d\x4e\x38\xbf\x3f\x42\x8d\x0a\xc1\x1a\x43\x4b\xc2\x2e\xa4\x01\xa1\xaa\xa9\x88\xb6\x8e\xd1\x40\xe2\xe9\x13\x0f\xd9\x9e\xb0\xd6\xaa\xc4\x81\x46\xbe\x0b\x47\xb0\xe3\xa6\x15\x11\x27\x2a\x95\x22\xf7\x21\xf0\xd6\xf8\xe0\xa0\x54\xb2\x42\xf7\xc9\xb3\x02\x0a\x45\x4c\x2d\xf0\x8d\x7d\x3e\x3e\xc0\xca\xfc\xe7\xf9\xca\x9a\x1d\xe7\x00\x07\xf9\x87\xda\xfc\x67\xf4\x8a\x24\x19\xea\x3f\xfa\xa2\xcf\x21\x0e\x6a\x85\x1a\x5f\x6f\x75\x8d\x68\x4c\xf2\xd7\x37\x7c\xe8\x0e\x07\x2b\xbe\xc6\x4f\x27\xab\xe7\xf5\x16\x72\x9c\x3f\x71\x1f\x88\xb8\xf8\x7a\x25\x75\xf1\x56\x34\x91\x2b\x58\x9a\xe4\x46\x72\x05\xeb\x3d\x64\x96\x74\x8b\xe6\x72\xf5\x3d\xff\xbd\x75\xf6\x9d\x42\x43\xbb\x6e\xdf\xcb\x57\x68\x97\x0d\x1f\x7b\x65\xc5\x10\xb3\x5d\x77\xd7\xdb\xd8\xd4\x1b\x6f\x9f\x1d\x75\xa0\x0c\x44\x1f\x78\x54\xea\x8f\xb2\xaa\x81\x4a\xda\x69\xc2\xff\x81\x26\x2a\x8f\x9b\x73\x67\x59\xb9\x25\x36\xc0\xee\x7c\x88\x4e\xcb\xf5\x30\x60\xd9\x0e\xeb\x01\x17\x4c\xf4\x43\x61\x5b\xc1\x7b\x2a\x2a\x1f\x0f\xd5\x0d\x88\x76\x0f\x19\xf0\xdf\x0f\x68\xa4\x27\x40\x8f\x54\x27\xa9\x15\x68\xf1\xf9\x3e\xec\xa3\x00\xba\x19\xc0\x78\x68\x76\x06\xe8\x53\x97\xea\x93\x4b\xd4\x5b\x7e\xe5\x2a\xcc\x37\xae\xc2\x8e\xb2\x23\x82\x4e\xf4\x8f\xb3\x43\xc6\x4e\x0f\xc9\x9c\x09\x16\xd5\x97\xdc\xbc\x1e\xda\xca\xda\x15\x66\x69\x7e\x5d\xaa\x20\x74\xce\x57\x2e\xc3\x67\x82\x5d\x9b\xd0\x71\x6a\x41\xc8\x4d\x27\x05\x07\x47\xbf\x1f\x00\x69\x17\x2c\x2c\xb4\x56\x7b\x12\x15\x6c\x9f\xdd\xee\xa3\x93\xce\xc8\x3d\xf4\x68\x97\xdf\x09\x2b\x62\x83\x8e\x0c\x07\xe6\x0d\xb3\x32\x69\xd0\x05\x6e\xb7\xcb\xb7\xd4\x02\xf7\x54\xbe\xbe\xd6\x4a\x37\x59\x7b\x98\xb5\x07\x59\x7b\xbc\x4a\x9c\x1e\xef\x6d\xd4\xbe\x55\xd7\xef\xd8\xcf\xa3\x0a\xfc\xd9\xd8\x74\xd0\x06\xef\x9e\xa8\x5b\x29\x7f\x39\xa2\x5d\xfe\x99\xd8\x10\xf5\x7c\x9c\xc5\x7c\xa1\xbd\x32\xc7\xdc\x5f\x54\x5a\x3a\x14\xa5\x52\x96\xaa\x7a\x30\xe0\x90\x32\x39\x76\xb6\xaa\xd5\xed\x2e\x26\x73\xfe\x72\x34\x9d\xaa\x68\x82\x31\xaf\x4d\x95\x79\xa4\x78\x81\x4e\xb4\x98\xeb\x2d\x52\x03\x91\x61\x77\x68\x06\x11\xe1\x20\x00\x88\x58\x5b\xdb\xbc\x5b\xb7\x22\x7e\xc7\x82\xc7\x81\x85\x5d\xea\x12\x1a\x55\xb4\x4d\x85\x3b\x36\xe8\x74\xb3\xe8\x4d\xb2\x51\x88\xd8\xac\xe8\x78\x62\x47\x9c\x7d\x26\x4e\xb4\xce\xa5\xa3\x9a\x2d\x95\xac\xee\x3a\xdf\x24\x8e\xf2\x66\xd1\x3b\xc5\xfd\xa3\x04\xa8\x5d\xb4\xff\xaf\xa5\xa7\xd2\x19\x94\x4a\x23\xb4\x0f\x35\xe6\xda\x31\xc6\x84\x6f\xae\xab\xaa\xd7\x47\xe5\x1e\xdd\xd3\x9d\x9b\x90\xf5\x71\xd9\xa7\x63\xae\xfa\x30\x21\xeb\x1f\xc6\xe5\xc0\xa9\x6e\x8f\xea\x29\x93\xc2\xda\xa3\x63\x62\xa7\xee\xe1\xc4\xc3\xcf\x59\xea\xfa\xe8\x4f\x77\x84\x7b\x60\x2f\xb0\x52\x1a\x6a\xb7\xd6\x2a\xea\xfc\xd9\x32\x2e\xb9\x9c\x51\xa9\x14\x97\x4a\x82\xed\x03\x4c\x89\xe9\x08\x00\xca\x3e\x6b\xee\x5a\x49\xb6\xe3\x46\x85\xdd\x76\x64\x48\x03\x74\x68\x7e\x99\x5b\x0f\xd9\xd7\x10\x8b\x4a\x7e\xfc\xd3\x72\xcf\x0f\xa8\xef\xf6\x02\xcf\x23\x4e\x11\xce\x4b\x7a\x7e\x80\x12\x37\xc9\x0f\x91\x18\x25\x12\x8e\xa4\x04\x70\x88\xe7\x51\x22\xd8\xc0\xf3\x98\x83\xf7\xa7\x2e\x40\x3d\x9f\xed\xa2\xe1\xdd\xc6\xd0\x82\x4f\x88\xc2\x4e\x5c\x07\xe8\x31\x1c\x31\x07\x10\x3e\xd8\x2c\xc5\x50\xeb\x4b\xa9\x24\x4b\xa5\x35\xc9\x1a\x77\xa5\x92\x64\x17\xcd\xcc\xf0\x84\x3e\x57\xd0\x5c\x94\x87\xfa\x1e\x8d\xf3\xd0\xae\x47\x13\x1e\x96\xa3\x8d\x4d\x9a\x66\xb1\x08\xfb\xe2\x8d\x4d\x47\xb2\xf6\x18\x67\x0e\xfa\x1d\xd2\x14\x0e\xdf\xc6\x26\x85\x68\xe8\x9b\x92\xa8\xb2\xad\xf5\x98\xf6\x00\x91\x05\x4e\xaf\x54\xb2\x7a\xec\x87\xbf\x03\x7b\x1a\x65\xe1\x78\xa7\xd8\x63\x0f\x89\xd5\x25\x6a\x0a\x8e\x4f\xb1\xaa\xb0\x1c\xd1\x94\xf6\xd0\x45\xbc\x64\xdf\xe3\x52\xc9\xb2\x42\x8e\x03\x98\x4e\xad\x90\xbf\x0d\x5f\x7b\xa1\xfd\xda\x9c\x11\x8a\xe7\x3f\xa1\xa9\x6e\xfc\x7b\x4c\xc3\xdc\x8d\xb9\xee\x5d\x71\xb4\xc5\x71\xd0\xe2\xc0\x8b\xc3\x86\x6f\xe6\xf7\x47\x83\x3b\xfa\x01\x50\xab\x36\xe0\xcc\x9a\x71\xa9\x04\x7f\xd9\x65\xa9\x64\x25\x1c\x3e\xb1\xae\x17\x9c\x20\x1d\x78\xa5\x21\x06\x74\x05\x12\x91\x79\xcc\x25\xec\x10\x42\x25\x74\x08\xfa\x5b\xdb\x84\xff\x43\x1a\x13\x2a\x15\x42\x8b\x09\x0d\xf5\xb1\xa1\x21\xee\xe7\xa4\xbc\x49\xd3\xf2\x26\xa1\x21\x6c\xf4\xa4\x5c\xdb\xac\x40\x04\xfc\x90\x2c\x8b\x8e\xcc\x73\xe5\x59\x12\xc5\x52\x75\x69\xc2\xee\xa4\xb5\x1b\x12\x9a\xc0\x6c\x6f\x42\x37\x06\xc2\x0a\x69\x82\xcd\xf3\x18\x77\x67\x8c\x5b\xf7\xf1\x55\x98\xbd\xab\x51\xbe\xa4\x31\x22\x66\x3c\x23\x80\xff\x81\x32\xca\x65\xcc\xc7\xe6\x4c\xf8\xa5\x92\x75\xa2\x02\xac\xf3\x1b\x3d\x4c\xfb\xec\xee\x77\xb6\x69\xef\x7e\x6b\x4a\xc2\x64\x8a\x7f\xd3\x5a\x51\xab\xf1\x24\xa7\x8e\x72\xd4\x27\xf9\xe0\xd4\xf2\xdd\x8b\x89\x47\xd4\x5c\x42\xcf\x25\xf5\xf5\xf4\x62\x8d\x8e\xcf\xf6\x46\xa5\x92\xe5\xe3\x08\x7e\x1e\xd0\xa0\xd0\x79\x9f\xcc\xb9\x3b\x3e\x28\x1e\xe1\x8c\xc6\x77\xe3\x57\x4f\x2f\x55\x88\xd4\x88\xf3\xeb\x40\x58\x01\xbb\xff\xad\xe0\xc4\x15\x86\x12\x1d\x6a\x61\x28\xd5\x21\x75\xfe\x71\x9f\x5d\x1c\xaa\x3d\x76\x71\xa8\xf7\xd7\xc5\xa1\xda\x5b\x17\x87\xfa\x24\x23\xf5\x63\x80\x02\x3d\x1c\x08\x32\x9b\x5d\xb3\xc9\xfd\x3b\x42\x06\xdf\x7d\x0d\x3c\xe3\x04\x6a\x9f\x3d\xa4\xca\x28\x8b\xd8\x09\x94\x2d\xb8\x4c\x54\x00\xac\x3e\xe4\x5d\x0f\x36\xd0\x6f\x71\xa6\x34\x5b\xb8\x5a\x6b\xcd\x5b\x3c\x1a\x4a\xd7\xf7\x90\x30\x40\x64\x19\x01\x69\x20\xc3\x34\x1c\xc2\xc1\xc1\x44\x32\xbb\x66\x87\xfb\x2b\xc9\x2a\xe1\xfe\x7c\xf5\xea\x3f\x2f\x8d\x50\xbd\xd1\x67\xbd\xc0\x22\xc4\xbe\xc8\xa2\xf6\xb5\xe9\xa5\x5b\x02\xdb\x0b\x29\x24\x3d\x6c\x45\xfe\x34\x86\x4b\x83\xb6\x04\x3f\xcd\x69\xf6\x80\x10\xe3\x70\x12\xb6\x5e\x91\xcd\x13\x45\x2b\xe6\xa7\x8b\xb4\xb9\xcf\x8e\x50\x35\x57\xa2\x15\x25\x59\x30\x89\xab\xdd\x8a\x09\xb6\xef\x18\x48\xe8\x0b\x04\x81\x27\x4f\x34\x36\xf6\x1a\xd9\x81\x5f\x87\x3f\x76\x95\x26\xdc\x77\x07\xbb\x5e\x1d\xff\xda\x6f\x2f\x76\x95\xbe\xda\xd5\x19\x1e\xf8\x81\x4f\xbb\x7c\x6d\x2d\x9d\x4e\x83\xe9\x74\xad\x86\x1b\x01\x0e\xb9\xd6\x91\xe6\x71\xa9\x14\xa9\x2e\xf5\x80\xd6\x51\x8f\x45\x7a\xc6\xf4\x91\x92\xd6\xf4\xdc\x03\xaf\xf2\x99\x94\xd9\x96\xb9\x19\xea\xc1\xd6\xa9\xd4\x20\xca\x11\xb0\xad\x06\x74\xa4\x16\xb8\xe7\x06\xd2\x2b\x63\xe6\xca\xc0\x44\x9d\x05\x5e\x19\x33\x57\x46\xc8\x08\xcc\x66\xb9\x21\x94\xec\x19\x47\x8f\x4b\x37\xf2\xd0\x63\x48\x5c\x17\xec\x97\xb4\x7a\x6e\x47\x7a\xb4\xc7\x5e\xca\x09\x7b\xa1\x3d\xf6\x5a\x4e\xd8\x2b\xed\xb9\xc7\xb0\x5b\x4f\x80\xcf\x3d\x0e\x10\x94\xda\xa3\xef\x30\xbb\x7f\xc8\x1f\x2f\x94\x40\x33\x2d\xe4\xad\x9b\x91\x26\xd8\x2c\xb1\xf4\x24\x00\x01\xd3\xe5\x38\x32\x18\x3c\xc5\xf1\x52\x1c\x5b\x45\x45\xc0\x98\x2a\x2a\x1a\x71\x5f\xc1\x87\xfb\x98\x7f\x68\xdc\x5b\x31\x4a\xd3\x13\x98\x51\x58\x26\x5e\x75\x12\x65\x20\xe5\xfb\xa9\x05\xdd\x4b\xd8\x2b\x21\xee\xef\x57\xcf\xaa\x8c\x89\xd3\x7c\xb1\x7c\x65\xa7\xe5\x32\x4f\x75\x56\xcc\x52\x5e\x09\xcc\x16\x7b\xc1\x87\x2f\xc5\xaa\xa8\xcf\x8e\x30\x85\x43\x3d\x3a\xf0\xca\x13\xf6\x8a\x2b\xab\xc7\x27\x95\xa3\xb1\xef\xa7\x85\xf1\x29\xeb\x2f\x18\x15\xc8\x77\xe2\x60\xd8\x85\x38\x33\x13\xc4\xa3\xbf\x2d\x39\x7f\xaf\x80\x1d\x1a\x93\x19\x80\xc4\xc1\xa9\x25\x29\x90\x1e\x30\xa9\x08\x1b\x71\xd2\x66\x69\xa9\xd4\x2d\x95\x9e\x71\xf5\xba\x34\xa5\xfb\x4d\x61\x85\x24\xbb\x25\x44\x8a\x64\xb6\xc2\x41\xec\x9c\x7c\x53\xc1\x08\x6d\x70\x49\xbb\x96\x70\xf7\x26\x9e\x76\x12\x6b\xe7\xa7\x53\x98\x9b\xb7\xc2\x19\xff\x70\xcd\xfa\x61\xdc\x19\x0c\xc3\x7e\x33\x0d\x1f\xc2\xee\xf2\x89\xcf\xec\xce\xef\x33\xff\x51\x19\x47\xcb\x1b\xe6\x82\x66\x32\xca\xe1\xb3\x1b\x78\x46\x92\x83\x01\xee\x7a\x84\x7e\xea\x14\x62\xa8\x4f\xa6\xd3\x3c\xa8\x04\x8f\x73\x8e\x36\x26\x7f\x0b\x06\x8e\xd2\xd5\xe6\xc2\x8d\x63\xbb\xa1\x74\x45\x66\xdc\x50\x8f\x66\x94\x16\xd3\xe6\x58\x1c\x23\x00\x71\x85\x37\x9d\xce\xd9\x09\xab\x3a\x52\xb9\x64\x2e\x97\x25\xb1\x56\xd6\x85\xda\xf3\x24\xab\x6d\x9e\x2f\x2a\x5c\xc4\xb4\x16\x84\xf0\x6d\xc0\xc3\x6d\x85\x35\x81\x9b\xd6\x1f\x3e\xfb\x1e\xe7\x18\x78\xaf\xb5\xe4\x40\x80\x73\x2e\xd8\xa7\xbe\xba\x53\x82\x2f\x28\x73\x1a\xe4\x65\xbe\xb7\xe6\x14\x37\x0f\x3d\xce\x7f\x1d\x4c\xa7\xea\x6b\xd0\x30\x5f\xbf\x8f\xf2\x22\x8d\xe5\x66\xd6\xb8\x70\x6f\x27\x5e\x1d\xff\xda\x3e\x3b\x3c\xcd\xb3\x9f\x1d\x2f\xd8\xea\x4b\x5c\x5f\x61\xeb\xc4\xf5\x2b\xa8\xed\x80\x9f\xe5\x1a\xc4\x02\xd4\x5f\x93\xac\x3d\x9d\x4a\x76\x11\xd2\x90\xaf\x85\xd3\xe9\x5a\x08\x11\x21\xbb\x08\x8d\x39\x57\x6b\x0d\x80\x76\x00\xd1\x01\xbb\x08\x09\x92\xca\x61\xc1\xf8\x60\x2b\x7f\xee\x27\x50\xa2\x98\x29\x49\xb3\x4f\x71\xa9\x14\x74\x2c\x9f\x35\xb7\x48\xdd\x12\x2a\x9d\x35\xb7\x94\xd0\x91\x1a\xbb\xbf\xa2\x2e\x58\x3b\x62\x8f\xa9\x2d\xa8\x89\x49\xee\x2d\x9f\x25\x54\xbc\x63\xad\xaf\xe2\xab\x12\x33\x62\x07\xc4\x0e\x0a\x74\xcb\x8f\x05\x7d\x6c\x5c\x51\x63\xdc\xae\xed\x9e\xc2\xdc\xa9\x5f\xdb\xcc\x27\xc6\x61\x8c\xcf\x44\xe1\x0d\x50\x73\x7e\xfa\x4d\xcd\xe5\xb0\x6b\xe9\x6d\x43\x36\x36\x0b\x46\x6b\xe7\x55\x73\xd9\x95\x84\xad\x94\xf8\x9c\x9f\x01\xef\xe4\xb6\x27\x1e\xe7\x57\x71\x51\xcc\xd5\x5a\xd4\x4d\x01\xa8\xd6\x3a\x35\x3e\xd2\xd6\xaa\x54\x39\x45\xd1\x28\x57\xbf\xac\x82\x45\x3c\xf6\x9c\xc4\xb0\x89\x29\x2e\xab\x7a\x34\x95\x96\x4a\x69\x3e\xe2\x94\xb5\xd9\x4b\x31\xf0\xaa\xdc\x97\x44\x3c\x41\x97\x53\x86\xff\x48\x59\x9b\xf6\xf8\x5e\x0b\x5d\x39\x39\xa1\x32\x07\xca\x39\xef\xd5\xad\x00\xc9\xe7\x2e\x7b\xa1\x5d\xf6\xaa\x5e\x7e\x11\x5b\x30\x71\x5b\x0f\xd8\x5e\xcf\xea\x51\x68\x3b\xf6\x58\x30\x60\x2f\x85\xef\x57\x9a\x32\x1f\xa2\xf0\xe7\x95\x9a\x0a\xec\x00\x88\xef\x5e\x16\x76\x62\x9e\x28\x26\x24\xe4\x6b\xfe\x74\x2a\x67\x6b\xb2\x24\x58\xe7\x5e\x19\xf1\xf5\xeb\xb1\xad\x86\x5b\xc1\x07\x67\xf5\xc8\xae\xd2\xcc\xae\x5d\xc6\xae\x0b\x94\x2d\xab\xdf\xc8\x43\xbe\x09\x8e\x28\x86\xa8\x00\x9e\x69\xbe\xbf\xb2\xd0\x5f\xa9\xfb\xab\x72\xab\x4e\xe7\xdf\x59\x7c\x3b\x8f\x6e\xe3\x38\x90\x7d\xee\x91\xa2\x77\xd8\x02\xf5\xbc\xf0\x92\x43\xaf\x6b\x00\x4b\xaa\xc1\x97\x5a\x44\x69\x16\x51\x9d\x4d\xe9\xb1\xb6\x31\xf1\x96\xaf\x5c\xc8\x5e\xeb\xa8\xe9\x89\x7c\xbc\x1a\x98\xc4\x81\x85\x6c\x7c\x46\x43\xf6\x7c\x46\x28\x64\x80\x20\x64\x1f\x9e\xc1\xf7\x33\x7e\x8f\xce\x10\x0a\xc2\x2a\x42\x02\xc5\x18\xe8\x49\x8d\xd8\xd0\x9f\xd9\xf2\x9b\x86\x9f\x39\xa1\xa8\x6f\x40\x03\x8e\xc7\x37\x08\xf1\x15\x6d\x30\x9d\x56\x3d\xf4\xe8\xfe\x10\x78\xac\x19\xce\x59\x23\xbd\x78\xaf\xf0\x89\xfc\xeb\xc2\x97\xff\x55\xcb\xfd\x64\xae\xf0\xaf\xff\xaa\x65\x55\x38\x5f\xb2\xab\x63\xb1\xca\xd0\x9f\x60\x69\x7e\x08\x25\xf2\xd0\xb8\x9a\x27\x89\x05\x2d\xd1\x2e\xaf\xd2\x1e\x47\x7b\x9d\xdd\xed\x9e\xd3\x2d\xda\xec\xec\xe2\x91\x5c\x1b\xb0\x4f\x31\x41\x99\x1e\x00\x03\xde\x3b\x22\x6f\xda\x91\xd2\x88\xfb\x74\xcc\x03\x27\xe1\x52\x8b\x76\x06\xec\x7c\xc2\x5e\x2a\x23\xba\xa7\x3e\x5f\x2b\x63\xda\xe0\xd5\xed\xca\x64\xdd\xd2\x11\x03\x96\x44\xec\x95\x94\xf7\x74\xcc\x8b\x8a\x79\xd1\x36\x30\x2b\xd6\x80\xbd\x0e\x31\xf6\xf0\x8e\xbd\x90\xf5\xbd\xb2\x8a\x79\x55\x31\xaf\x64\x7d\x52\x2a\x35\x4a\x25\x6b\xc2\xef\xdc\x89\xf4\x2c\x25\xcb\x9a\x2b\x45\x37\x49\xb9\x10\x6d\x8a\xd2\x4d\x42\xe8\x8a\x42\xa3\xa5\xfc\x63\xc8\xba\x3d\x29\x27\x84\xbc\x0d\x32\x5f\x9e\x1f\x87\xb3\x01\x5f\xab\xcd\x50\x75\x2f\xbf\xc8\xe9\xce\x10\x04\xbc\x8d\xb4\x3b\xcb\x31\x1f\xa8\xd3\x61\xbc\x61\x76\x22\xcb\x4a\x30\x72\xe4\x65\x86\x2c\x13\xd6\x26\xfa\x7d\x47\x02\x01\x3a\x70\x0f\x8d\x57\xd5\x5f\x07\xea\x95\xc6\x4d\x43\xfd\xfe\x3e\xb2\x13\x7e\x96\x58\x29\x4d\x88\x93\x6c\x7f\x90\xa5\x52\x82\x5a\x67\x11\x7f\xbb\x38\xb5\x47\x14\x7b\x41\x63\x9e\xcc\xb9\x46\x0d\xb4\x9b\xd5\xbd\x86\x3d\x51\x64\xfa\x00\x91\x34\xdf\x6b\xd4\x27\xca\x4a\x65\x6a\x25\x40\x82\x26\x48\x86\x27\xc0\xc5\x26\xee\xae\x47\x6c\x9d\x31\x68\xe2\x44\x27\x2c\xed\x74\x43\x94\xd5\x3d\x74\xba\x56\xe2\x26\xbb\x4a\xb4\x32\x51\x14\x6e\xa1\xb2\x64\x17\x05\x30\x7b\x54\x7d\xf6\x3d\xaa\xb8\xd7\xac\x4c\x59\x25\xec\x7a\xaa\x70\x79\x02\xed\x55\xf6\x08\xc1\x6d\x34\xe1\x13\x26\xb5\x75\x20\x2b\x25\x8e\x95\xf0\xc9\x4e\xa2\xc8\x92\x09\xf9\xcb\x61\xcf\xf9\x76\xcd\x1c\xbb\xa2\xf5\x0e\xe5\x5a\x21\x7a\xec\x7f\x8c\xc3\xe1\xcf\xc7\x4e\x77\xd8\x10\xc3\xd1\x03\xfb\x87\x33\xcb\x98\x97\xf9\xf7\xb4\x45\x3f\x1a\x87\x1a\xd7\x3d\xb7\xe6\x9e\x5c\xeb\x2b\x84\xa8\xa0\x84\xf6\xb4\xc9\x5d\x6f\x76\x6b\x1d\xb6\xe8\x73\xab\xf0\xc2\xe2\x28\x7f\xcc\xc9\x9e\x36\x51\xc7\x4f\x86\x51\xa7\xdb\x19\x2a\x7b\x00\x1d\x69\x07\xb3\x02\x38\x38\x6e\x15\xef\x09\x94\x98\xdb\xf9\x6d\x41\x61\x7a\x63\x15\x09\x55\x6c\xf6\x70\xdf\x12\x28\xde\x10\xac\x23\xd1\x0a\x72\x26\xe4\xf4\xd1\x31\x17\x76\xeb\x9a\x1f\xe2\xb5\xdb\x87\x6b\xf6\xeb\xdb\x02\xc7\x9f\x3f\x93\x55\x17\xe9\x73\xe4\xd0\x9a\x60\xf7\x72\x3a\xf5\xdd\x43\x6f\x0d\xa8\x3c\x80\xe6\x87\xa7\xb3\xd6\xb1\x98\xd3\x92\x92\x86\x96\xd5\x37\x3b\x45\xb6\x5e\x16\x18\x07\x89\xa2\xa8\x41\x93\x38\xbf\xb4\x3f\xfa\x49\x34\xcf\xfb\xb0\x56\x38\x9d\x5a\xf0\x53\xac\xd2\x0a\x3a\x96\x60\xc1\x57\x52\x2a\xad\xe1\xef\x82\x62\x15\x0a\x68\xf4\xbd\x8c\xbe\xc2\xd1\x17\x3b\x54\x5d\xe2\x50\xc1\x6e\xbf\x28\xef\x60\xa7\x13\x8e\x37\x56\x4a\xb0\x31\xb4\x04\x5e\xa4\xe9\xce\xc0\x37\x6b\x85\x90\xaf\xb3\x5f\xc8\xc3\x3a\xfb\x26\x0b\x13\x2f\x9d\x01\x5a\xce\xc1\x8c\xb0\x34\x8d\x45\x82\x4f\xb0\x56\x50\x2a\x9d\xb4\xcc\xd5\x49\x2b\x50\xda\x7b\x7e\xd6\xed\x5f\xf7\x30\xa0\x70\xce\x31\x41\xbb\x78\xa1\x39\x97\xf1\x44\xce\x65\xbc\x5e\x95\x31\xb7\xb7\x7b\x94\x2e\xce\xc5\x87\xb9\xc9\xc8\x26\xad\xb9\x6b\x85\xb9\x41\xe7\x88\xbb\x1e\x8d\x79\xd5\x89\xb7\x61\x0f\x1c\x7b\x4e\x8c\x5e\x79\x63\x52\x2a\x45\xb8\x71\xcf\x9b\x36\xa4\xc4\x1e\x3b\x6f\xd2\x4e\x57\x86\x2f\x76\x3c\x23\x4e\xf7\xde\x8a\x56\x53\xbc\x29\x74\xfe\xbc\x49\x7d\x76\xde\xc4\x77\x47\xa8\x0c\x06\x2d\x44\xa6\x7e\x7d\xa3\x13\xb9\xb1\xe7\xf6\x02\xcf\x39\xcd\x26\x2d\x75\x13\x8f\x26\x64\x06\x5b\x10\x88\xa4\xd4\xad\x7a\x0a\x3c\xfd\x3e\x2a\x95\x6e\xe6\x6e\x7f\xf3\x8a\x61\x35\x4c\xdd\xf8\x1d\x7b\x6c\xe0\x23\xf0\x38\xfe\x69\xb9\x37\x03\x1a\x7b\x84\x1e\x65\xad\x98\x1c\x34\x22\x40\xd6\xe9\x99\xc1\x53\xb7\xb4\x46\x82\xbc\xdd\xe6\x3b\xff\xdd\x15\x5a\x9d\x2d\x9f\xf3\x98\x38\xc7\xad\x82\xab\x8f\x74\xfe\xf4\xd0\x6c\xeb\x8f\xf6\xf1\x7a\xa3\x70\x9c\x50\x24\xf9\xdb\x7a\x6e\x8a\x25\x2b\xca\x9a\x9f\x9c\x44\xae\x80\x2d\x8c\xcf\x6c\x34\x91\x96\xb9\xf0\xce\x73\x00\x31\x61\x9e\x17\x36\xed\x90\xa7\x45\x04\x32\x3e\xb0\x43\x2e\x8b\x31\xc9\x91\x1d\x72\x7f\x96\x77\x24\x44\x61\xd4\x9c\x07\xab\xb5\x6a\x51\x6c\xd7\x32\x1c\x8d\x00\x38\xf9\x36\x73\x0c\x7b\x37\x89\x9c\x9b\x67\x2b\xa0\x6f\xbd\xc7\x81\x02\x82\xc9\xd1\x8c\x38\x01\xcb\xad\x45\xf1\x3c\x6d\xaf\x39\x9b\x4b\x1a\x86\x2f\xc3\x42\xf2\xf8\x00\x93\xfb\xa1\x58\x2a\xe3\x8b\xfe\x8a\x38\x65\x8b\x69\x39\x01\xed\x5c\x2d\x45\x07\x62\x18\xc6\x8f\xfd\xd7\x41\xd8\x85\xf8\x71\x67\xf8\xba\xb2\xad\x82\x21\xac\xa5\xb4\xcc\xb8\xcf\x52\x8a\x31\x04\xb5\x94\x60\x8c\x36\x2d\x25\xac\xcc\x8d\xc6\xae\xde\xad\xeb\x71\x1c\xf6\x53\xf1\xea\x3f\xbe\x2c\x25\xf5\xc4\xf0\xee\xdd\xa6\xd0\x8e\xd3\xdc\x4c\xd3\xe0\x2b\x5e\x9f\xeb\xb4\xc5\x39\xf9\xb0\xb8\x2a\x83\x61\xd8\xeb\x85\x12\x12\x57\xad\x85\x36\x9b\xc5\xe7\xf6\x81\x73\xd3\x9b\xdb\x1a\xbe\x06\xd7\xf5\xf1\x41\xb6\x4d\x10\xfc\xce\x4d\xb4\xde\x05\x06\x2e\xf3\x62\xf9\xb3\x66\xa1\xbc\x63\x24\xc8\xdf\x45\xa9\x04\x7f\xe1\x18\x40\x3a\x0d\xb9\xac\x0b\x76\xfa\x84\xec\x35\x95\x5c\xaa\x12\x30\xe7\x68\xd9\x89\xbf\xb5\x42\x3b\xa4\x59\xc5\x72\x96\x25\x29\x8b\x52\xfe\x68\x38\x84\x9d\xfb\x6e\xb6\xb0\x3b\xec\xbf\xae\x48\xc7\xfb\xa4\x0e\x5e\x3d\x75\x4c\x77\x60\x4b\x19\xed\x09\x2c\x51\x17\xcc\x7f\x56\x7d\xcb\xca\x86\x7a\x50\x05\x6e\xe0\xb4\x55\xbc\x62\x41\x60\x79\xd3\x20\xbf\x33\x0e\x03\x45\xad\x1f\xb3\xb4\xbd\x06\xf9\xf4\x5e\xda\xf7\xe3\xf7\xd3\x82\x26\x99\x97\x6a\xf9\x39\x5b\x28\x4e\x84\x56\xa5\x42\x6e\x4f\x2e\x96\x1d\x34\x72\xce\xf1\xcc\x67\x57\x92\x46\xea\xeb\xe5\xde\xd1\xf6\x27\xb0\xb2\x9c\x9b\x89\x80\x57\x5e\x0b\x69\x0c\xf8\x29\xe1\x6f\xca\xb3\x2a\xce\x45\xd8\x95\xea\x03\xe5\x5d\x4a\xe3\x49\x73\xaa\xdc\x5f\x60\x55\x53\xae\xba\xe4\xa4\xa5\xd2\x5a\xca\x2e\x94\x45\x73\xce\x79\xe2\xbe\x7a\xf5\x13\x61\x25\x54\x12\xdb\x4a\x79\xca\xc2\x7d\xa0\x73\xda\x63\x6a\x72\x18\x79\xda\xa7\x50\x58\x3a\x40\x53\x52\xb7\x12\x06\x5b\x43\x52\x1d\xc7\x53\x62\x5b\xe8\xd0\x39\x21\x79\x4f\x65\xa5\x86\x1d\x95\xba\x97\xe9\x8c\x10\x3b\x2a\x95\xe4\x1a\xd7\x9d\x9c\x4e\xad\x42\x5f\x32\x39\x06\xd6\x3e\x9d\x9a\x0a\xcd\x34\xe3\xed\x64\x71\x16\x3e\xac\x9a\x06\x42\x66\xa9\xb9\xba\x26\x05\xf5\xfa\x78\x6e\x52\x12\x1e\xc3\x2a\x75\xcd\x10\x69\xcf\xdc\x51\x0e\x78\x8f\x2a\x46\x2f\xa4\x13\xec\x17\x4d\x54\x8f\xe8\x1e\x5f\xab\xd2\x46\xc6\x59\x4c\x3c\x6b\xc4\x12\x77\xe2\xb1\x36\x6b\xb4\x69\xf6\xdd\x6c\xe7\xb4\xc5\x0f\x3e\x71\x7e\x6c\xf3\xc4\xf9\x61\x5a\x3e\xe3\x90\xf1\x87\x47\x2f\xf9\x19\x6b\x3b\x67\xec\x02\x08\xbf\x01\x93\xc2\xba\x64\xe3\x33\x7a\x89\xe2\x81\x4b\x36\x3c\xe3\x1c\x22\x4a\xa5\x4b\x36\xc2\xef\xe7\xb3\xe9\x54\xe7\x1b\x42\xbe\xd1\x99\x31\xf3\x7e\x99\x0b\x1f\x2e\xd9\x6b\xa9\x64\xed\xf1\xb5\x1a\x6d\xf0\x1f\x84\x00\xb1\xbf\xb6\x07\x2c\xd9\x18\xf7\xee\x0f\xe8\xcb\x0e\xf4\xaa\x52\x21\x97\xba\x2f\xc0\x8d\xa9\x8a\xf7\xdb\xf4\x92\x1d\xb4\xa1\x03\x8d\x36\x34\xba\xdf\x86\x0e\x34\xf1\xfb\xa0\x9d\x75\xa0\x01\xf9\x60\xa0\xb8\xc9\x55\x3d\x8d\x55\xf5\x0c\xb4\xde\x82\xbe\xe2\xec\xd1\x2e\x4d\xc9\x4c\xe9\x13\x0c\x1a\x34\xf0\x20\xa9\x11\x5a\x02\x29\xcc\x7e\x08\x14\x30\x95\x34\x55\x7a\x53\x9d\xc8\x0a\xc9\x9b\xe4\x07\xa8\x44\x1d\x62\xa9\x5f\x07\xf4\x43\xe0\x29\xbd\xac\xbd\xc0\x12\x6c\x1f\xe8\x17\xff\x44\x64\x0e\x67\x23\xf2\x06\x9b\xfe\xb4\xeb\x74\xb9\xcf\x8e\x3b\x28\x69\x9b\x4e\xbb\xe4\x2d\xe6\xf1\x74\x9a\x6d\x0e\x88\x26\xf9\x0e\x49\xd9\x51\x98\x9d\x66\xd5\x5d\x8c\x92\x9e\x7b\x31\xf1\xa8\xfe\xd6\xfb\x25\x26\x4e\x57\x29\x0a\x0c\x84\xd5\xc5\x0c\xdd\x2c\x69\x56\xd4\xbe\x88\x60\xb8\x71\x1d\x6f\xa3\xed\x28\x77\xf3\x90\x0f\x1b\xf0\x17\x0c\x1b\x9f\x33\x9f\x19\x50\xa6\xe4\x6c\xc1\x89\x91\x73\x44\x64\xb6\x18\xa5\xe1\x87\xd6\x99\x18\x47\x00\x4c\xc7\x11\xdb\xef\x10\xf5\x4e\x59\x87\x10\x32\x68\xbf\x1c\xe5\xb2\x24\xd5\x35\x1e\x62\xa3\xea\x50\x45\x66\xeb\xf7\x4f\xad\x88\xaa\x14\x1a\xb2\xdf\x2d\x42\x43\xf7\x2c\xf0\x4a\x25\x95\x00\xdf\x34\x64\xc9\x9d\x20\xe8\x57\x45\xcd\x22\xd5\x73\x00\x25\xcd\xf8\x69\xa8\x2f\xdf\x15\xed\xf9\xfa\x82\xf7\x2a\x1e\xe4\x35\x63\x2e\xe2\x60\x18\x7b\x44\x43\x52\x94\xef\xc8\x93\xc2\x93\x0b\xf2\x66\xe0\xb6\x62\xc9\x00\x4a\xd7\x05\x3b\x08\x33\x95\x17\xdb\x00\xe8\xba\x81\xc3\x85\xd8\x9b\x46\x5d\xb0\xa3\xc3\x3c\xf3\x8f\xa2\x7a\x95\xea\x0e\x60\x76\xe0\x6b\x0a\x16\xfe\x16\xef\x5f\x31\xa3\x22\x98\x70\xb5\x78\xfb\xd2\x52\x90\xe9\x1d\x93\x00\x8e\xcf\x6e\x63\x51\x2a\x2d\xfa\xb1\x29\xdc\xe8\x26\xae\xf0\x50\xb3\x22\xc9\x4d\xc1\x58\x61\x3d\xd4\x32\xef\x2a\xa9\x58\xb2\x2e\xb3\xd0\xac\xc8\xb5\x54\x9d\x48\x79\x9e\x29\xb8\xb4\x08\xdd\x08\xe0\x95\x8f\x92\x5d\x27\xc1\x1b\x20\x3d\x72\xd4\x8a\x50\x2a\x64\xbf\xa4\x95\xe0\xcd\x67\x82\x82\x52\xf8\xfb\x4a\x13\xf6\x3b\x16\x5a\x97\x2f\x61\xbe\xa0\xd2\x28\x4f\x5c\x37\x68\x80\xdc\x83\x50\xf7\x59\x50\x53\x51\x57\x22\xc7\x97\x6f\xef\xa3\x47\xb3\x5a\x19\x7e\x9c\x7d\xb8\x66\x07\x8b\xd7\x74\x54\x22\x0a\x0f\x4a\xa5\x80\xb5\x0d\xc2\x0c\x0c\x1a\xda\x6d\x59\xe8\xb9\x39\xe2\x42\xef\x87\xba\x1c\xd8\x8d\x63\xdd\xcf\x88\xfa\xb8\xcb\x12\x1e\xb0\x36\xbb\x7c\x9a\x4e\x03\xd6\xce\xb9\x8a\x68\xb5\xf0\x87\x86\xa8\x52\x02\x68\x24\xc5\x82\x8f\xa3\x21\x1e\x81\x2e\x0f\xd8\x69\x97\xf6\x78\x50\x80\x21\xd3\x69\x8f\xbc\x25\x05\xc6\xa5\xc8\xa5\x24\x34\xd4\x50\x45\x0b\x15\x03\x76\x1a\x00\xc0\x39\x0d\x68\xca\x07\xa7\x56\x8a\xbe\x31\x74\x61\x80\x2f\x74\x00\x9c\x1e\x5e\x2d\xc3\xd4\x0d\x78\xd5\x19\x6c\x77\x35\x20\x1a\x94\xcb\x24\xe5\x18\x1a\x78\x6e\x62\xb8\x75\x64\xfa\x53\x18\x49\x8a\x23\x49\x61\x24\x29\x8c\x44\x67\xd5\xe7\x30\x21\x4e\xcf\x68\x1a\xa8\x7b\x69\x2d\xac\xea\x65\xf2\xac\x9e\x11\x5a\xf5\x8c\x90\xaa\x97\x15\x9e\x85\x3c\xa9\x27\x08\xb5\x42\xad\x81\x1c\x66\x8c\x54\x04\xac\x16\x8d\x51\x51\x64\x81\xcd\x54\x6b\x60\x18\xcd\xc0\xb0\x98\xc1\x9c\x68\xe0\x03\x04\x29\x0a\x49\x60\xca\xa3\x7e\xa9\x14\x9e\xe4\x8c\x2d\x95\x54\x45\x93\xa2\xe2\xa5\x81\xf1\x9a\xed\xd3\x14\x2b\xa2\xe3\xdf\x78\xff\x54\xd8\x4b\x11\x79\x3b\x3b\x16\x16\xb4\x5d\x2a\x59\xc1\x74\x9a\xdf\x3b\xc2\xa2\x11\x2a\xa7\x53\x4b\xf2\x7e\xd7\xf2\xd9\x69\xc0\xfa\x21\xc5\xdf\xa7\x0e\x21\x54\x5f\xe4\xe9\x4b\xd7\x7d\xf6\x08\x30\x4b\xdd\x28\xc0\x41\xf1\xdd\xd1\xc4\x43\x93\x67\x28\x77\x5a\x75\xa1\x90\x83\xe8\xcc\x21\x90\x46\x5d\x80\xb9\xd4\x73\x6f\xac\x86\xe0\xd5\x6d\x48\x68\x06\xf6\x73\xad\x80\x88\xef\xb7\x94\x1c\x09\x70\xb8\xb8\xb7\x22\xf6\x20\x09\xa0\x43\x2b\xe2\x91\xc1\x7d\xa4\x54\x92\x4a\x5e\xb8\x80\x02\xb5\x8f\x1b\xd8\xc2\x49\x86\x06\xe3\xe9\x34\x21\x6f\x6a\xec\x06\x82\x63\x81\x38\xa3\x6c\x53\x5e\x75\xd2\xed\x58\xef\xc1\x34\x47\x86\x18\x95\x2a\x64\xa8\xbf\x8d\x36\x18\x01\x50\xa3\xb3\x25\x98\x21\xc9\x92\x66\x32\x43\x86\x12\x90\x58\xc4\x01\xa2\x15\x91\x61\xb4\x1a\x19\x46\x45\x64\x58\xa4\xf6\x6f\x56\xc2\x1b\x04\xa3\x28\xbe\x91\xdb\xa1\x23\xcb\x7c\xd3\xb8\x97\x82\x68\xa9\x94\x00\x53\x57\x96\x6b\x00\x21\x23\x05\x9a\x14\xe5\x9d\x14\x06\xaf\x74\xcb\xac\x37\x6d\x1b\x39\x62\xdf\x63\x16\xf8\x16\xa1\x37\xb1\x0a\xfc\x0c\xe9\x48\xd8\xb5\x19\x5e\x26\x38\xdd\xed\x24\xbf\x45\xe8\x61\xb5\x5d\x34\x8c\x88\x1f\x70\x00\x7b\xac\x5d\x2a\xad\xf5\xd8\x45\xa8\xa6\xe8\xf8\xd4\xea\xe1\x6e\xea\xe1\x6e\x1a\xe0\xf7\x00\xbf\x53\x35\xd2\xfc\x8a\xb8\xf5\x97\x70\x35\x43\x65\x06\xae\x2e\xe2\xb3\x6b\x76\x74\xb8\x02\xc8\xfe\x68\x15\x1e\x17\x53\x99\x09\xf9\x32\xfc\x46\x8a\x42\x8d\x68\x79\x3f\xeb\x97\xf8\xb0\xb1\x68\x61\x9b\x9d\xfd\x13\xb7\xdf\x74\x8a\x3b\x2d\xcc\x29\xf1\xf7\x36\x48\x88\x42\x6f\xdf\xfd\xf9\xe2\x91\x52\x29\x71\x0f\x81\x2b\x48\x0a\xca\x90\x4e\x54\x2a\xa1\x3e\x64\xc4\x5e\x68\xc4\x5e\x69\x04\xc8\xb0\xcc\xb6\x68\x64\x60\x95\x06\xbb\x6a\x0f\x2b\xc4\x68\xf6\x2f\xe0\x46\x2c\x1d\xb3\x17\x1a\xb3\x57\xb5\x73\x23\x0f\xea\x30\xdf\xc5\x6a\x7c\xae\x74\xaf\x71\x55\x7c\x5c\x15\x98\x9e\x04\xbd\x98\x0b\x23\x03\xca\x1f\xcb\x00\xae\x86\xbd\x5c\x34\x0c\x37\x47\x5e\x98\x93\x88\x1d\x04\xba\x4f\xe2\x7e\x90\xec\x22\x24\xfa\x5e\x29\xe1\x92\xb5\x9d\x98\x37\x5b\xa8\xd8\xe7\x98\x5b\xe2\x33\x9f\xed\x42\xb1\x84\xbd\x54\xe2\x1d\x9e\xba\x81\xf4\xa6\xd3\x84\xbd\x94\xe3\x6d\x0e\x08\x00\x02\xaf\x2a\xe9\x2c\x50\x21\x4c\xc2\x5b\x8a\x98\xaf\xd5\x14\x30\xc1\xfb\x18\xf6\x52\xac\x41\x95\x07\xd0\x98\xb0\xd7\x62\x79\x53\x9a\xbc\xc5\xeb\x3c\xd6\x17\xce\xd0\x81\x54\xa9\xf3\xe8\xef\x03\xd8\xe3\xd0\x38\x96\x44\x0e\xe9\xb5\xa2\xd1\x11\xef\xae\x03\xd6\xec\xad\xf7\xe8\x80\x0f\xd6\x07\x90\xba\x9e\x20\x5e\x2c\x0f\x76\x78\x5c\x2a\xa5\xe5\x04\x7f\x7b\xd9\x2f\xc4\x03\x79\x5e\x30\xdd\x38\x8b\xf9\x5a\x75\x06\xa4\xb4\xa5\xd0\x7b\x46\xcc\x5d\x37\xec\xc1\x11\x0d\x68\xe8\x21\xac\x86\x39\xab\x23\x00\x89\x68\x4c\xd5\x56\x95\xf4\xc7\x31\x2a\x54\x12\xba\xab\x72\x10\x62\x23\xac\x8d\x51\x4d\x74\x0e\x63\xa9\x9a\xf0\xc2\x42\x6a\x74\x45\xa5\x41\x57\x02\x3f\x21\x0f\x44\xe6\xa8\x4a\xad\x70\x48\x3f\xa8\xc8\xa2\xc6\xa7\x28\x9e\x96\x25\x6a\x46\x28\x52\x04\xf0\x1b\xd2\xe0\xf8\x56\x41\x7d\xab\x27\x0b\x26\xa1\x9f\x27\x00\x66\x06\x5a\x02\x49\x9f\xac\xbc\xc1\xe7\xfa\xd3\x94\x36\x38\xdd\x7c\x62\xd9\x9f\x93\x22\xd1\xee\x64\xdc\x49\x58\xf8\x8e\x14\xc3\x85\x64\x4f\xe1\x28\x85\x85\xa3\xa4\xf7\x6b\xa8\x0f\x51\xb2\xeb\x39\x5a\x4d\x74\x35\x69\x35\x77\xc0\x62\x32\xc3\xda\x8f\x3b\x24\xd7\xb1\x36\x83\x08\xb3\x21\x84\x66\x00\xa1\xe9\x7e\xce\x59\x68\x1e\xd0\x6f\x2a\x32\xa3\xc0\x3b\x16\x44\x91\x0a\x7d\xc4\x8a\x85\xd4\xe4\x89\xbf\x44\x9e\x08\x45\x9b\x2c\x28\xd2\x9e\xb4\xe6\x96\xce\xcf\x75\xcb\x0f\xb6\x8c\xc4\x06\x0f\xe5\x9a\xb5\x16\x4e\xa7\x21\x7b\xd9\x8e\xf0\x24\x86\xec\x65\x27\x82\x33\x42\x70\x6b\xf9\x6e\xbc\xeb\xe1\xb5\xcd\xbd\x15\x11\x83\x8d\xdd\xc7\x06\x95\x46\xf3\x0c\xb6\xc5\xbd\x15\xd3\x80\x6a\xcd\x0e\xdc\xe6\x48\xa4\x87\xa8\x7c\x1d\xb2\x57\xda\xc5\xcb\x6a\xbc\xb3\xde\x07\x4e\x21\x34\x8a\x29\x75\xb7\x4b\x6b\x9e\xed\xd6\x68\x57\xa9\x0a\xe1\xae\xd0\x17\x96\x34\x29\x87\x6e\xd5\x23\xda\x8a\x41\x4a\xd3\x72\x88\x6e\xe1\xee\x98\xf0\x07\x96\x49\x53\xdf\x35\xad\x9f\x07\x58\x0f\x8d\xfb\xf7\xd0\x6e\x41\xce\x95\x67\x42\xe8\x8c\xe6\x2b\xc0\xf5\x98\xbb\x4f\xef\x0d\x2a\x31\x2a\xe6\xfe\x08\x16\xa7\x54\x5a\x33\x9f\xec\x53\x0b\xa7\xc9\x35\x11\xee\x75\xe0\x01\x1c\xa9\xd4\x00\x06\x67\x17\x80\xb0\x0b\x15\x41\x12\x19\x6a\x04\x88\x65\x1e\xb9\x29\x4c\x8a\xd2\x91\xed\x02\x55\xad\x6c\x7c\xb2\x3b\x61\x68\xef\xec\x70\x4b\x9a\x7a\xc4\xc1\x15\x87\x74\x3a\x20\xb3\x0c\x90\x7f\xe8\x11\xa7\xcb\x63\x54\xbe\xec\xa2\xbc\x69\x3a\x4d\x21\xea\xf8\xa7\xd5\x35\x1a\xcd\x3d\xda\xc5\x22\xfa\x72\x31\x50\xcb\xb4\x72\x86\x86\xe1\x0b\xa0\x5d\x80\x0c\xb8\xfd\xe6\xe8\x96\x70\x9e\xa7\xcd\x5c\x64\x02\x9b\x6e\x68\x95\x6c\x5e\x35\xf7\xfe\xb4\x9f\x71\x7c\xea\x9e\x27\x5c\xb8\x40\x0a\xdd\x58\xf1\x06\x29\xf7\x5d\x08\xb0\xde\x7e\xa6\x5b\xe4\xbe\x78\x6b\x7c\xd0\x30\x5f\xbf\x0e\x8c\x51\x98\x54\x9d\x28\xad\xc7\x0a\x07\x16\xcd\x22\xe3\x65\x78\xca\x53\x26\xce\x36\x36\x69\x75\x3b\x45\x99\x9b\x7e\x5e\x52\x38\xe1\x29\xed\x22\x37\x08\x93\x18\xd1\x84\xe4\xc2\x4e\x5d\x1b\xaa\x28\xeb\xda\xb4\x74\x41\x3d\x66\xc9\x2b\x21\x14\x1f\xba\x40\x44\x59\x41\x0c\x7d\x5d\xbe\xeb\x65\x42\x85\x94\x76\x01\x2a\x99\x67\x0f\xaa\x39\xf1\x07\x5e\xae\x8b\x8c\x29\x7b\xc2\x77\x61\xb0\x03\x5e\x0e\xb4\xe8\x01\x48\x66\x25\xae\xd0\xab\xe6\x1e\xf8\x9e\x5a\xaa\x68\x1e\x04\xb4\x17\x19\xff\xe2\xf5\x73\x4e\x00\xa9\x67\xeb\xec\x86\x00\xc6\xd3\xba\x69\xc7\x5e\x1d\xfe\xd8\xbe\xba\x7c\x05\x0e\xf2\xf8\x9e\xdd\xd0\xae\xd6\x24\xe8\xd2\x6e\x19\xa2\xdc\xf3\x17\x6f\x3d\x9d\x7f\xde\xab\x9f\x9c\x74\x69\x8d\xa6\x54\xe4\xe4\x33\x2a\x0e\xfd\xcd\x3e\x00\x6e\x5e\xd5\x89\xca\xdf\xe8\x84\x13\x17\x24\x2b\x85\xe9\xba\xfe\xdf\x99\xae\xfe\xdf\x99\xae\x2e\x0d\x69\x4a\x6b\xff\x5b\xd3\x75\xf0\x77\x66\x6b\x75\x1f\xde\x9b\xad\x78\x99\x92\x9e\xeb\xab\x41\x3c\x99\x05\x2b\xc3\x71\x07\xb8\x59\xbb\x9a\x12\xfa\x2e\x3d\x64\x25\x7f\xcf\xd9\xa3\x34\xc4\xe6\xa8\x98\x8b\x46\x1e\x71\xee\x72\xe6\x1a\x88\xd2\x11\x40\x34\x75\x89\x39\xc3\xde\x86\x96\xcf\x8e\x04\x0d\xc6\xa8\xf0\x0c\xa1\xab\x3b\xda\xef\xa3\x4b\x6b\x23\xf9\xd2\x77\x88\xac\x15\x1a\x2c\x8c\x0d\x7c\x6f\xe8\xfa\x81\x6a\x6e\x1a\xe8\x56\xb0\x66\x7c\x22\xde\x25\x87\xfd\x52\xc9\x67\x97\x04\xf8\x07\x8d\xe1\xf9\x9a\xb5\xf6\xd8\xc5\xbb\xf7\xb5\x2e\xfc\x12\x27\x46\xf4\x1d\x20\x2b\xac\xdf\xbf\xa0\x61\x9f\x39\x79\xe1\xed\xa2\x36\xed\x24\x42\x5d\xda\xc6\xd0\xf2\xd5\x8b\xe1\x79\xfd\x05\x5a\x1c\x42\xeb\x38\x7b\xd2\x26\x35\x2f\xe1\xbb\x1d\x63\x0d\x3c\xe2\xf9\xe5\x1b\x62\xc0\x42\xc9\xfd\x03\x5c\x04\xcc\xbd\x20\xe2\x43\x15\xb2\xcb\x39\xbd\x73\xd4\xa8\xd8\x85\x65\x9a\x6b\x7e\x5f\x89\x05\x72\x6d\x11\x7c\x40\x85\x0b\x33\x9b\x5d\xb3\x87\xad\x55\x2f\xc6\xfd\x33\xcb\xd8\xe7\xbe\xdb\xd4\x16\x5d\x3e\x5c\x33\xff\xec\xbd\x97\xf4\xe7\x4f\xfa\xe9\x6d\xa6\xbf\xfa\xb1\xd3\xfd\xe8\xb3\x34\x97\x6f\xa6\x6e\x80\xa8\xc3\xff\x65\xf9\x18\xa0\x22\xb1\xde\x12\x73\xb1\x92\xd3\x42\xca\x40\x00\x8d\xd4\x7b\x03\xa8\x27\x2c\x4a\x20\x71\x71\xd9\xc0\x37\x38\x4a\xa3\xe2\x3b\x61\x05\x04\xfe\x46\xc4\x23\xce\xab\xe6\x40\x95\xfc\x2b\xe6\x31\x6b\x05\x39\x1f\x0e\x75\xc6\x48\x43\xe1\x5f\x37\xf5\xd8\x9d\x40\x6c\xb4\x5c\x19\xfc\x4d\x89\x47\x68\x5e\x25\x71\xa4\xd9\xf1\x52\x67\x95\x4a\xbf\x14\x4b\x68\x51\xfa\x5b\xd6\x7d\x33\x24\x62\x3e\x80\x6a\x45\xc2\x71\x75\xef\xe7\x9a\x32\xaa\x1b\xba\x25\xfd\x58\x05\x11\xad\xaa\xbb\x21\x80\x6a\x09\x38\x7c\xb9\x5d\x8f\x06\xcb\x55\x77\x17\x2a\xa5\x31\x0f\x60\x42\xb0\x8b\x7f\x3d\x1b\x1f\x90\x1d\xc7\x7a\x56\xce\xc6\x49\x51\xef\xa3\xeb\x65\x8a\x39\x58\x82\xcc\x8c\x5a\x06\x1a\x63\xb8\xdb\x5c\xd4\x94\xfa\xdb\x1b\x26\x53\xcc\x9c\x9b\xe3\x82\xd7\xef\xcc\xd6\x40\x44\xab\xb8\x42\xa1\xa7\x83\x35\x9a\x2d\x45\x88\xb7\x3d\x91\xb2\x3b\xb0\xbc\xb0\x11\xfc\x86\xe6\x75\x64\xa1\x5e\x6a\xea\xd5\x5f\xa6\x4a\x42\xa5\xa9\x8d\x2e\xad\x5d\x46\x6d\x65\x4b\xe7\x17\xb5\x69\x82\xc2\x9a\xc5\xa4\x20\xe8\xcc\x73\xd1\x80\x90\x2c\xd8\x52\x4f\xd4\xe7\xfa\x14\xd0\x6a\xa6\x80\xd3\x0a\x74\x54\xad\x50\x84\xd0\x80\x07\xba\x83\x66\xe5\xf2\x05\x8b\x09\xc9\x15\x69\x0a\xe2\xd1\xce\x89\xc8\xd4\xe3\x5e\xb8\x60\x2f\xd3\x69\x55\x01\x88\x57\x2e\xd8\x6b\x16\xea\x69\xef\xea\x97\x4a\x9a\xfb\xa2\x1f\xb4\x11\x27\xf1\xf5\x26\x71\x01\x1e\x06\x2f\x26\x04\x90\xb0\xd0\xce\xbd\x6a\x67\x3e\x5d\x9b\xc7\x10\x5c\x30\x5f\xdb\xca\x38\xe2\x82\x1d\xa9\xcf\x13\x80\xc8\x27\x81\x0a\x1c\x43\xe0\x58\x07\x06\x3e\x1f\x3f\x76\xe4\x47\x74\xc0\xce\x06\x7e\x1d\xfe\xd8\xe7\xda\x31\x02\xf0\x19\x52\x4b\x9f\x0f\x7c\x83\xb3\xd9\x01\x64\x3b\xf0\xed\xaa\xd3\xd4\x9d\xc8\xeb\xc0\x77\x6d\xf8\x57\x99\x40\xd1\x20\xf2\x3b\x5f\x5b\x13\xec\xee\xfb\xec\xfe\x04\x4d\x47\x5d\x7f\x5a\xb6\xd4\xa3\xd6\x91\x5f\xe9\xc7\x37\x47\x73\xba\x67\x7a\xcb\x17\xaa\xcf\x9f\xcd\x85\x7c\x78\x6a\xf9\xec\xa5\x2c\xd9\x0b\x5a\x9d\xa6\x30\x5a\xa0\xe1\x31\xfe\xb5\x2c\x51\x33\xdd\x17\xee\x2b\x1c\x11\x76\x9c\xbf\x70\x09\xdd\x57\x8f\xf3\x50\xdd\x78\xfb\x18\xf0\x21\xa0\x44\xba\xb0\x4e\xfb\xa9\x05\xf1\x14\xf3\x50\x4c\xa4\x50\x8a\xcc\x08\xf5\xf9\xaf\x8e\xe5\xd3\xfb\xce\xbb\x2f\x66\x92\x13\x6d\xe8\xfa\x57\xc7\x12\x6e\x3f\xf0\xac\xdf\x77\x64\xd5\x7d\x55\xe6\x6e\xbe\xd1\xb1\x04\x59\xe3\xfc\xbc\x70\xd9\xe4\xf3\xb7\x19\x55\x06\x13\x84\x31\x98\x90\xcd\x48\xe0\x61\xbd\xb7\x77\x80\xd5\xae\x3a\x96\x74\xab\x2a\xe6\x32\x24\xb4\xd1\x01\xd2\xbb\xff\x60\x35\x20\xa1\xe6\x11\xe2\x54\x39\x47\xa6\xb6\x7e\x9f\xa0\x7c\xde\xfe\x6d\xcd\xeb\x9a\xf9\x68\xcb\x1e\xdf\x11\xbd\xcd\x1c\xc8\xe5\x0a\x8f\x46\x24\x37\x06\xe9\x2b\x8d\x96\xf3\x16\xf4\x2b\x3d\x11\x7c\xad\x56\x90\x56\x3e\xa8\x31\x03\x93\x9e\x9e\xe4\x4e\x90\x50\xb3\x64\x60\x1b\x17\xcb\x27\xa9\xa0\x52\xf4\x13\xfb\x7b\x2a\x94\x7b\x54\xfb\x22\x15\x99\x8f\xd5\x03\x93\xdc\xc8\x92\x7f\x14\x92\x8f\x4d\xf2\x5e\x96\x7c\x59\x48\xde\x35\xc9\xcf\x59\xf2\x51\x21\xf9\xa7\x49\x3e\xcc\x92\xcf\x0a\xc9\xaf\x26\x79\x9c\x25\xef\xa7\x62\xe6\x2d\x7b\xf2\x8b\xfb\x42\x76\xc2\xee\x50\x7b\x5d\xab\xd9\x2f\xa9\x50\xee\xd9\x36\xed\x61\x2a\xe8\x4b\xcd\xde\xdf\xa3\xaf\xf8\xf7\x65\xd3\x3e\xd8\xa3\xaf\x9b\xe8\x4a\xf1\x1d\x1f\x88\xad\xbb\x99\xf6\xa9\xb8\xc2\x0b\xe1\xdd\x1f\x4a\xcd\xe8\xf8\xef\x15\x7b\xd7\x81\x1c\xa6\xfe\xc9\x11\xa1\x96\xd0\xa7\x7b\x34\x73\x49\xf8\x61\xce\x0b\xe0\xb7\x99\x73\xde\x62\xe8\xfa\xaa\x13\x70\xdf\xf1\xb5\x53\xda\x9f\x46\x93\x68\x70\x40\x81\xb0\xbb\x82\xc8\x41\x31\xd6\x74\xaa\x97\xc7\xcd\xf5\xe5\x59\xbb\xa4\xa4\x77\x21\xae\xce\xc1\xde\xdc\xf8\x7f\x16\x8b\xdd\xad\x8e\xc7\xbe\x3d\x88\x97\xce\x43\x67\x12\x4a\xd5\xbb\xb0\x2b\xfc\x34\x3c\xea\x0e\x43\x34\x81\x38\x86\x51\xac\xd5\x96\x7b\x73\x31\xa3\x83\xb0\xdf\x09\x07\x57\xaf\xbd\xd0\x1e\x34\x8a\x0e\x0d\xd9\xd7\xbf\xd3\xd1\x95\x4e\x38\x17\x5c\x38\x5e\xac\x1e\xcb\x7f\x56\x14\x87\x3b\xe8\x89\x7e\x82\xda\x7a\xbe\x83\xa7\x36\x7b\xce\x72\xde\x72\x85\x57\x20\xe7\x7f\x16\xb4\xc1\xdf\x66\xce\xad\xb0\x7c\x2a\xdc\x7d\x6f\x3a\x15\xc6\xe4\x51\xeb\xc1\xf2\xdd\x7d\x74\xdb\xc6\x2f\xea\x96\xcf\x9e\x7d\xc0\x16\xa2\x9f\x84\xfd\xe9\x34\xa0\x3e\xeb\xdc\x03\x89\xa2\x1c\x1f\x4f\xa7\x01\xb1\xad\x80\x1f\x3e\x00\xc9\xb0\x90\x79\xff\xc1\x3a\x7b\xb0\x02\xca\x36\xb7\x10\x75\xcf\x17\xdc\x7f\xb0\x7e\x64\xa9\x45\xaf\x67\xf9\x23\x9a\x25\x17\x3f\x71\x66\x30\xca\xd8\x90\xea\x3f\x18\xcf\x3e\xa7\x92\x6b\xe4\x77\x28\x78\xf4\x68\xcc\x51\x1e\xf4\x05\x7d\x13\xbe\x2d\xe7\xac\xf9\x48\xd6\x7b\xa0\x69\x60\x4b\x76\x33\x36\x76\xe0\xfa\x21\xbf\xce\xac\x58\xee\xf7\x05\xed\xec\xe9\x94\xd7\x07\x7e\x99\xa5\x34\xfb\x82\xb2\x6f\x06\x01\xb6\xb9\x46\xff\x37\x4d\x5e\xd3\x5e\x7c\x9a\x7c\x53\x7d\xb5\x9f\xf8\x67\xf5\x75\xfd\xc4\xbf\xa8\xaf\xa8\xa7\xf8\x86\x78\x4b\xfd\x46\xfa\xb7\xa3\x7f\xef\xb6\xb8\x46\xd3\x93\xb6\x8a\xf1\xd9\x2f\xeb\xb0\x49\xaf\xaf\x0c\x35\xf0\x83\xff\x6c\xe9\x2b\xe3\xb6\x5b\xf5\x88\xbb\xaf\x0d\xd1\x5f\x35\x55\x89\x0b\x6d\x46\x6b\x57\xd7\xf0\xaa\x7f\xaf\x27\xea\xf7\x6a\x52\x78\x69\xf0\x7a\x6f\x91\xd9\x87\x0b\x74\x2a\xf4\x7a\x3f\x67\xc7\x2f\x93\xbc\xe3\x3a\x68\xa9\x3b\x3b\xb4\xc8\x76\x6e\x20\xf8\xdc\x31\xda\x04\x0d\x4b\x59\x08\xf6\x4b\xa5\xb5\x4f\x1d\x64\xf9\x08\xbe\xa0\xf8\xf8\x60\x0d\xa2\xb2\x28\xff\xe3\xe3\xc3\x68\x30\xfc\xe8\x87\x1f\x1f\x23\xf5\x8e\xe2\x1f\x65\x89\xee\xf2\xee\xfb\x44\x3b\x47\x2c\x95\xde\x29\x1a\xa0\x34\xf0\xdd\xc2\x06\xef\xcf\x0a\xac\x59\xff\xc1\x18\xee\x4a\x62\x2a\x39\xf6\x1c\x5a\xf9\xbc\x23\xb3\xda\xff\xd1\x10\x43\xf1\x71\x08\x00\xe2\xe3\xe0\xee\x71\x94\xca\x8f\x77\x62\x1c\x7e\x14\xc3\x8f\x69\x28\x06\xc3\x8f\x9f\x3f\x06\x8f\xe9\xe8\xa1\x3b\xf8\x07\x71\xb4\x1b\x80\xbb\x36\x5d\xab\x52\xb7\x79\xe7\x19\x35\x79\x9d\x70\xd3\xa4\x6b\x35\x95\x40\x23\x13\xf9\x3b\x8f\x74\xcc\x0a\x07\xec\x32\x2b\xa2\x63\x3b\xc5\xd8\xdf\x4d\xe2\x3c\x69\x7a\xa9\xfd\x64\x0c\x1b\xb4\x9f\xb6\x65\xdd\x32\xbb\x48\x98\x64\xec\xcc\x15\xc5\x56\x4d\x22\x6f\xde\x99\xb7\xd0\x57\x13\xc0\xe6\x66\xfd\xdd\x2c\x53\xb1\xbd\xf6\x13\x21\xf6\x07\xb3\x67\x33\xc7\x94\x78\x71\x64\xfa\x71\x9d\xf5\xe3\x1a\xfb\x21\x4c\xb4\x6a\xdf\xd4\x1b\x17\xeb\xbd\x7e\x02\x8e\xeb\x28\x3b\x3b\xa7\x13\x81\x42\x65\xdb\x1c\x0a\x2d\xc8\x6e\xa0\x17\x08\x9f\xfd\x78\x02\xb0\x94\xeb\x8e\x05\xec\x0c\x58\x93\x5c\x2c\x1b\xb0\xd1\x83\x25\x09\x66\x75\x13\x8f\xcb\x99\xcf\x52\xee\xaa\x6b\xcd\x9b\x06\xbd\x8e\xed\xbc\x35\xf7\xd3\xab\xa0\xfd\x7d\x0f\x9a\xa4\x87\xa7\xf6\x5a\x95\xde\xc6\xc2\x8e\x69\x62\xbb\x1e\x95\xcf\xc2\xd6\x13\x44\x43\xf3\x7d\x3d\x99\x41\x3f\xf6\x87\x3c\x74\x7c\xd6\xdf\xe7\xc0\x76\xfb\xec\x17\xaa\x9c\xc3\xaf\xbe\xc9\x1d\xf0\x9a\xe3\xb3\x93\x2e\x77\xbd\x02\xc0\xea\x9e\xac\xb8\x41\x17\xb0\xfb\xb4\x9f\x3c\x1c\x4e\x68\x86\x13\x71\xe9\x1e\x79\x56\x48\x05\x6c\x03\x1a\xe7\xc1\xdf\x4d\xd8\x40\xaf\x57\x96\xcf\x42\x94\x6b\xc4\x10\x08\x20\x10\x17\x0c\x34\x5d\xb6\x90\xd2\xd3\x11\x31\x46\x04\x28\xe3\xc8\x41\xfe\xe3\xc9\xca\x17\x7d\xd0\x1d\xe8\xd9\x42\x8f\xd0\x11\x1c\x17\x7a\xf5\x7d\x9a\xf0\x80\xa6\x3c\xa4\x5d\x1e\xc1\x30\x7a\xbc\x0b\x5d\x4c\x69\xc4\xee\xda\x84\x0e\x78\x97\x35\x45\x16\x1c\xe5\xa9\x30\x9e\x71\x1e\x84\xf1\x4c\x32\x13\x0f\xba\xff\xac\xfd\x84\xcf\xc2\xb2\x5c\xed\x27\xa2\x55\x64\x27\x84\xbc\xe9\xd7\x50\xe6\xde\x12\x7a\xb4\xb7\x54\xc5\xf5\x13\xaa\x65\x66\x55\x5c\x67\x55\xec\x2d\x57\x01\x83\x38\x95\xd6\x80\x46\xec\x50\x10\xb7\x8f\x3c\x76\x84\xc7\xe5\x8a\x44\x00\x25\x6f\x1f\x2c\xf8\xa5\x93\x5c\xf2\x1e\xe9\xe3\xa4\x26\xa8\xc1\x27\xf4\x07\x8f\xd8\xd5\xc4\x6d\xa8\x77\x8d\x3f\x54\xc2\x0f\xde\x39\x2e\x37\xca\xad\x90\x9e\x01\x16\x89\x98\x4f\x7f\x94\xf7\x9b\x34\x02\x18\x1d\xb1\xeb\x89\x7b\xec\xfd\x0f\x06\x8e\x3d\x8f\xd0\x33\x00\xe1\x67\x84\x5e\xc2\xe1\x50\x99\x9f\x4f\x70\x9f\xfe\xe0\x57\x26\xe6\xe0\x80\x36\x20\x42\xa3\xff\x33\x77\xdf\xa3\xfb\x13\xfb\x92\x36\x27\xf6\x8f\x99\xa3\x7b\xc1\x7f\x38\x58\xff\x77\xcf\x6a\xa0\x94\x7e\xb7\xcd\x3f\xe0\x40\x76\xdb\x74\x8f\x38\x23\xfe\x7c\x65\xc5\xb0\x75\x46\xc4\x19\x43\x20\x81\xc0\x58\x6d\x1b\xce\xf9\x28\xd3\x10\x1e\xd7\xd5\x8c\xd9\xd6\xaf\x16\x1a\xb8\x2a\x95\x7e\xb5\xac\x84\x8e\x49\xa9\x64\xc5\xac\x1b\x58\x23\x42\x13\xf8\x1d\xa3\x28\x25\x62\xc1\xb5\x95\xd2\x01\x6c\xd6\xb7\x8e\xb4\x7b\xe8\x45\xd9\x1e\xd0\xdf\xb1\xb0\xbb\xd4\x17\x36\xcc\x34\x95\xa1\x1d\xd3\x76\x04\x9c\xdd\x88\xbe\xda\x63\xed\x31\x7a\x82\xce\xc5\xed\xbd\xd9\x8c\xcc\x04\xeb\x3f\xe0\x8b\x1c\x86\x76\xeb\x23\x14\x5e\x09\xbd\x34\x02\x10\xda\xde\xbe\xb0\x04\xf3\xa9\x60\xaf\x6d\x42\x25\x13\x5f\x2d\x88\xcf\x17\x4a\x98\x85\xca\xfd\x52\x0a\x35\xef\xb8\xbf\x81\x30\xb9\x9e\xb8\xa1\x47\x81\x4f\xbe\x9a\xb8\xbe\x47\x03\xb6\x3f\x29\x95\xb0\xed\x13\xbc\xa6\x7a\x53\xaf\x90\x42\xda\x91\xb6\xaf\x06\x13\xb0\xe6\xc4\x28\x42\x17\x6f\xf3\x02\x77\xdf\x9b\x11\x7a\x69\xaf\x55\x67\xc4\x11\x80\x7b\x07\x87\xa6\x8b\xbb\xed\x0c\xa5\x06\xab\x2d\x0d\x16\xd1\x52\x53\x18\x2b\x38\x70\x6c\xc2\xb9\x18\x38\x39\x12\x00\x1c\x10\xd3\xda\x4c\xf7\x16\x1d\x8b\x74\x14\xda\x72\x46\x8b\xf1\x1d\x13\x1f\xce\xcc\xb5\xa1\x86\xe8\xa5\x92\x35\x5f\x2b\x9c\x34\x89\x03\x2e\x94\x8f\xf2\xf2\x84\x14\x2b\xb8\x56\xf7\x3e\xc5\x0a\xae\x57\x55\x10\x9b\x0a\x82\x59\x86\x91\x75\xba\x4f\x8f\xe6\x5d\x14\xf7\x4e\x32\x6b\xd5\xb7\x0f\x86\x86\xea\x6b\xb3\x9f\xe2\x89\x57\x34\x31\x15\x0f\x4c\xe2\xf1\x21\xaf\xd4\x66\x1f\x7a\x4a\xd0\x10\xf4\xc3\x39\xcb\xb4\xf3\x17\x80\x55\x75\x05\x81\x7e\x0b\xde\xf1\x02\x6c\x38\xf3\x19\xa1\x0f\xe8\xd0\x54\x97\x21\xf8\x48\xd9\xad\x7a\x9c\x0b\x57\x28\xa3\xef\xc4\xf4\xb3\x46\x4d\xff\x44\x66\x2c\xbe\x7f\x5b\x08\x1c\x1f\xc2\xc6\xcb\x55\xcd\x94\xdd\x1e\xb6\xb5\x8e\x55\x57\x6a\x34\xd6\xf7\x1f\xaa\x66\xe5\x2f\xd6\xb2\x6a\xd5\x6a\xc5\x27\x1b\xb5\x6a\xd5\x64\x24\x34\xc9\x7c\x3c\x18\xdb\xcd\xc5\x64\xc7\xe7\x4f\xc8\x8f\x1b\xb5\x16\x37\xf2\x2a\xa6\xea\xc8\xab\x60\x97\x6a\x6c\x6b\xdd\x04\x13\x8f\x10\x07\xaf\x66\xaa\x9e\x21\x0d\xe2\x01\xaf\x51\x1f\x6d\x04\x2a\xa7\x17\x84\x18\x63\x08\x50\xaa\x6c\xea\xd3\xd3\x50\x81\x48\x53\x69\xac\x82\x04\xce\xfe\x7b\x53\x2c\xb6\xbb\xa5\x92\xd8\x49\x0d\x85\x7d\xfb\xc0\x9f\x3a\x56\x40\x4a\xa5\xea\x76\x50\x0f\xec\xfe\x89\xbe\x8b\x44\x4b\x42\xca\x40\x96\x99\x60\x5d\x60\xdd\xaa\x69\xc3\xcd\xf1\xa0\xfe\x41\xb9\x06\xd9\xd0\x69\xc4\xd6\xae\x3a\x4c\x98\x38\x79\x66\x4d\xab\x88\xa7\xed\x85\x11\xa3\x87\x6d\xe3\x1d\x57\xe7\x21\x59\x15\xf3\x1b\xf1\xf6\x61\x5d\x94\x75\x9e\x6c\x17\xea\x98\x78\x50\xdc\xcf\x6a\x31\x0a\xc6\x0e\xaa\x8e\xaf\x84\x3a\xbe\xba\x5c\x5f\x3b\xb9\xb7\x84\xeb\x7b\x44\x13\xce\x6b\xb5\xfc\x9d\x5b\x56\xcb\xe0\x64\xde\x06\x66\x8d\x73\x81\x63\x41\x03\x2e\xaf\x5d\x51\xb6\x04\x13\x4f\x6c\xf8\xf8\xb3\x1f\x06\x9d\x01\x4c\x77\xad\x4a\x2a\x55\x92\x0b\x95\x50\x0c\x78\x58\x81\x72\xc6\xf1\x66\xb9\x86\x34\x14\x56\x62\xc9\x75\xc1\x6e\x1f\xca\x50\x0f\x59\xae\xa8\x7c\x11\xae\x72\xf0\x38\x5c\x1c\x1e\x7a\xe5\xac\x3a\xc1\x36\xb6\x56\xae\xa1\xec\x4a\x35\x10\x60\xdb\xa4\xd0\xcc\x2a\x37\x9f\xfd\xc5\xfb\x2b\x38\x76\x9c\x67\xde\xd1\x6b\xfa\x12\x3d\xf3\x98\xeb\x57\x84\x13\xe8\xc7\xfa\x81\xd1\xec\xd0\xa6\x21\x60\x43\x85\x5a\xdd\x18\x29\xa3\xea\x76\xe4\x84\x40\x11\x25\xf5\x68\x27\xac\xef\xde\x5b\x01\xb6\x62\x07\x76\x5c\xd7\x2e\x1d\x68\x48\xec\xa4\xae\x7d\x3f\x60\x9a\x23\xb4\x31\xf6\xd0\xf1\x39\xfb\xb6\x2e\x9c\x90\xd7\xd8\xe6\xba\x70\x22\xf4\x69\xa2\x14\x54\xc4\x4e\x38\x9d\x8a\x6d\x7f\x3a\xf5\x77\x78\x48\xc8\x5b\xc0\x6b\x0e\x70\xa6\xf2\x51\x5f\xd6\x08\x9a\xf2\x80\x26\x3c\x72\xaa\x9c\xc7\xd3\xe9\xda\xe9\xbd\x15\x13\x74\x90\x91\x4e\xa7\x56\xca\x61\x60\x71\xbd\x96\x7b\x13\x52\x47\xbc\xa2\x5c\xa1\x28\x0d\x92\x98\x90\x8d\x3b\xb7\x35\xc1\xe3\x4e\xd6\xf3\xac\x1a\x2a\xa4\x84\xd0\x74\x9d\x57\xb7\xa1\x22\x03\x59\xc4\x8b\xb5\xb5\x9e\x58\xe9\x7a\xbc\xb1\x45\x68\x8d\x6c\xa4\x04\x56\x66\xf6\x7c\xd7\x49\x43\x6b\xcd\x8a\x77\xb8\x5f\x2a\xc5\xdb\x3c\x24\xa5\xd2\xd6\x0e\x3a\x1a\xdc\xda\x09\xea\xb1\x2d\x32\xff\xcf\x75\xb6\xb5\x2d\xea\xca\x64\x2d\xb1\x6b\xb6\x28\x1a\xdf\xce\x29\x5c\xc3\x7e\x6b\x8e\x7c\x22\x78\x50\xff\xd4\xb5\x7c\xba\x37\x10\xf4\x08\x1d\xd7\xdb\x17\x45\x86\xdc\xa7\xdf\x07\x8a\x17\x5f\x61\x59\x37\xd5\x16\xac\x27\x02\xdf\xd7\x09\x76\x33\xb6\x2f\x0c\xdc\x78\xbc\xe6\x2d\xa8\x79\x77\x60\xee\xe6\x1e\xf4\x0d\x6e\x14\x18\x43\xd0\x23\xc4\x0b\xce\xaf\xe7\x95\xbe\xcb\x75\xdd\x33\xe2\xf8\xab\x9d\x9b\x03\x54\xd3\x7d\x75\x5f\x03\x0f\x5d\x9d\xc7\x21\x8a\x7b\xde\xf3\xb3\x1b\x05\x33\xe7\x9a\x75\xe6\xfd\x7e\x98\x5e\xa1\xb3\x00\xf1\x75\x39\xed\x21\xe4\xca\xaf\xe0\xde\x73\xb1\x62\xd8\x59\xba\xec\x74\xba\xa6\x73\xce\x19\xa2\x53\xc2\xf4\xb7\xe1\x63\x4f\xa3\x6b\x65\x8a\x37\x0d\xa3\xa1\x89\x70\x0f\x3c\xaa\x44\x53\x26\x22\x90\x5e\xa5\x90\xa8\xc5\x55\x26\xe6\x2c\xc8\x52\xb1\xae\xc7\x7e\x27\xec\x2a\x8d\x1b\xfb\x2a\x06\xfa\x4d\x4f\x09\x0d\x3e\xd9\xc7\x0d\x2a\x3f\xd9\x7a\x3d\x66\xd4\xe7\x7b\xda\x0f\xce\x43\x48\x05\x75\x0d\x36\x7c\x60\x9f\x72\x31\x7c\x6e\x53\xdc\x88\xb5\xf4\x42\x28\x47\x23\xb6\x29\x7f\x71\x68\x03\x99\x98\xdb\x31\x98\x2d\x7a\x94\xb8\x9a\xf7\xba\x79\xbd\x69\xf6\xdd\x93\x30\xa2\xa0\x9b\x2b\x2e\x2a\xfe\x86\x96\xbd\xfc\xba\x17\x3c\x70\x4e\x7a\xea\x22\xa3\x4a\x66\x57\x48\x8e\xc5\xa3\xf7\x96\xf3\xe6\x6a\xe6\xa8\x3c\x77\xdd\xe5\x65\x83\xca\x4d\x7a\x1c\x0e\xbf\x87\xdd\xe1\x4a\x73\xf5\x3a\x73\x59\xf7\x6d\x63\x73\x06\x3b\xee\x6a\xd1\x53\x74\x31\xf7\x93\x28\xba\xd0\x1c\x1b\x6d\x7c\x4c\x1b\x1f\x9b\x71\x8e\x27\xdc\x2f\xc0\xf8\x2a\x3a\xef\x3a\xf6\x9c\x60\x5b\x22\xec\x3d\xe9\x59\xbe\x1b\x78\x34\x28\xe8\x08\x3c\x2f\x21\x25\xaa\x4a\x0a\x36\x9e\x14\x0b\xfb\x65\x15\x15\x78\xee\x39\xde\x06\x76\x22\xcb\xdf\x11\x6c\x7c\x9c\x0b\x4a\x7e\x3c\x0e\x3f\x86\xdd\xc7\x51\x7c\xf7\x71\xd0\x13\x81\x32\x82\x91\x0a\x3f\x4c\x07\xec\xe3\x8f\x30\x94\xf6\xc7\x7f\x94\xfd\xf2\x3f\x3e\xc6\x8f\x43\xf8\xc4\xd2\x8e\xaa\x36\xf4\xac\x95\x76\x21\xd9\xf5\x26\x8c\x83\x5d\x6f\x66\xea\xfe\x9c\xcb\xba\x70\x7b\x81\xb7\x83\x86\x45\xeb\x35\xbb\xaa\x1d\x7b\x54\x6a\x33\xe2\x04\xda\x3a\xca\xf2\x18\x32\x23\x17\x38\x0e\x1a\xf2\x17\xad\x3c\x11\x8f\x2c\x42\x7d\x35\x30\xe2\xf8\xec\xae\x6b\x85\x64\x86\x6e\x82\xfc\xa5\xda\xfc\x6d\x89\x18\x1b\x3d\x05\xb9\x18\xeb\x7b\x9e\xc2\xae\xce\xab\x52\x3e\x21\x0e\x71\x0a\x98\xec\xd5\xac\x58\x61\x75\xb4\x09\xec\x4a\xad\x78\xa7\xe3\xab\x7e\xf9\x6e\x50\xae\x79\x14\xb8\x7f\xe5\xca\x5d\xf3\xa1\x37\x57\xe5\x88\x3d\x89\x9d\x10\xd8\x20\xe8\x74\xf1\xcd\xaa\x40\x77\x4e\x8a\xad\x89\x0d\x4f\x83\x14\x78\xac\x2e\x72\x33\x37\x67\x55\x1a\xf2\x38\x73\xcb\x8f\xf9\x92\x32\x97\x6e\xe8\xc1\x6c\xc7\xea\x53\x2f\x73\xc2\x93\x0d\xec\x43\xbc\xb1\xe9\x24\x38\x63\x11\xbe\x68\x5a\x70\xee\x8f\xb5\x44\x58\x12\x78\xfd\x2e\x3e\x48\x2d\xf3\x48\x57\xe3\xbb\x69\xe8\x59\x41\xb9\x46\x6b\x85\xd7\xfb\x33\x43\xe8\xe4\x1b\xf2\xe5\x64\xc1\x38\xd1\xc7\xdd\x7b\xcb\xc7\x7b\xdb\xf1\x71\x65\xce\x86\x7e\x6b\x51\xf8\xbb\x0a\xd5\x9c\x1e\xd0\xc3\x39\x4c\xd3\x39\xe7\x98\x70\x72\x40\x8f\x8f\x34\xaf\x02\x28\xe5\x67\xa3\xde\x69\xda\xbb\xc7\xb0\x81\xae\xe2\xcc\x16\x1f\x24\x89\x3b\xfd\x22\x05\x02\xe7\x83\x42\xe0\xf0\xa0\x10\xb8\x6c\x90\x80\x5f\xde\xa9\x66\x52\x7f\x5e\xd6\xec\xd3\xb3\x83\xbf\x85\xd9\xce\xfb\x7c\x4d\x73\x3a\xf2\x9b\xaa\x29\x7a\xd6\xfd\x3e\x34\xc8\xee\x14\xb6\xe7\x27\xdd\x60\x7c\xc8\x0b\x78\xca\x91\x5c\x02\x75\x23\x69\x8d\x6e\x12\x5b\x57\x75\xaa\x5f\x52\xc5\x87\xeb\x5a\x38\xde\x1d\x29\xa7\x6c\x85\xa2\x1b\x56\x8d\x7d\xad\x7d\x5b\xc7\xbf\xc6\x11\xea\xe5\xfe\x1c\x5e\x55\x91\xf7\xb7\xfc\x08\x26\xf5\xfe\x59\xe4\x0f\xad\x1a\xf7\x42\x4d\x75\xe7\x59\xd0\x5f\x57\x54\xcf\x8b\x4e\xdd\x03\xe8\x0b\xa3\x89\x9f\xcd\x28\xbe\x9b\xa8\xbb\x2c\x2a\x52\x04\x9c\xa3\x24\x8f\x3f\xcf\xb9\xee\xab\xf6\xd8\xf0\xa2\xc2\x23\xfd\xdb\xb9\x35\xac\xe0\xc3\x57\x9e\x4d\xe9\xa7\xe3\xfa\x4f\xe8\x86\xff\x2c\x68\x2d\x9b\x81\x9b\x7d\x5e\x9d\xfd\x7a\xb6\x5a\x7f\x02\xbc\x48\x0f\xb4\x0c\x48\xff\x2b\x54\xaf\x32\xbe\x8f\xee\x73\xb3\x91\xfa\x6e\x18\x26\x13\x38\x23\x25\x5e\x58\xc9\x1f\xb1\xcb\x19\x99\x7d\x50\x35\xbf\x4b\x0f\xcc\x51\x01\xf9\xce\x5d\xe3\x17\xc4\x84\x52\x9f\xf3\xcb\x3b\xb2\xab\x75\x38\xf4\x6b\xa7\x82\x1f\x9e\x1a\xfd\x17\xfd\xd7\xbf\x68\xd5\xa3\x05\xce\xa4\x5c\xce\x3c\x06\x0c\x6d\x74\xbd\xe5\x7b\x45\xfb\x3b\xcb\xf4\x43\x08\xbb\xb5\x86\xea\xc8\x96\xac\xf0\xcd\x75\x4b\xef\xb7\xb2\x5e\x39\xa2\x0c\xf6\x55\xb3\x2c\x6d\xa3\x67\x41\xb2\x2c\x8a\x76\x8f\xf8\xb5\x4e\xd2\x1b\x4f\xbf\xc8\xaa\x72\x0e\xec\x20\x29\x1c\x0f\x1c\x8c\xd9\x30\x05\x13\x98\xda\xbc\xca\xe5\xbe\x53\x55\x30\x51\xf1\xfe\xdb\x81\xe6\xfd\x22\x88\x04\x0e\xe2\x2d\x28\xbe\x80\x28\x78\x84\xdc\x33\x4a\x2f\x11\x2a\x60\x7b\x34\xe5\x35\x27\xdd\xd6\x5b\xa8\x54\x82\x0a\xd6\x78\xa6\x23\x1d\xf3\xfb\x7b\x2b\x46\x76\x15\xd8\x5e\x33\x80\x98\x4a\x42\x51\x6e\xb5\x50\x1f\x00\xd8\xef\x26\x2a\xc9\x36\xbd\x7a\x80\xef\x7c\x28\x56\xe7\xcc\x57\x37\x33\xc3\xd7\x4e\x8c\x70\x28\x33\xb4\x54\x87\x86\x58\x94\x89\x29\x9d\xc9\x30\xb7\x9d\x5b\x75\xc8\xad\x02\x4d\x57\x5e\xa2\xf5\x4e\x13\xb2\xb1\x69\x0c\xa7\xbe\x2c\xaf\xf4\x69\x42\xe7\x8e\xdd\xf0\xa5\xa2\x8f\xe7\x7c\xfa\xfd\x2d\x8a\x57\xda\xc5\x55\xc4\x6e\x12\x53\xbe\x62\x58\xe5\x9f\xe7\x24\xb3\x64\x1a\xc5\xc0\x9d\xe5\xb9\xeb\xe6\x53\x3b\xd7\xc9\x76\xf8\x79\x9f\xbc\xf9\x73\xe3\x37\xbe\x08\x3b\xb7\x8e\x9c\x03\x4f\x68\x25\x51\x74\x75\x6b\x98\xd7\xbc\x4f\x1d\xbd\x94\x4d\xaf\xa3\x6c\x3c\x21\x95\x1c\x6f\x5b\x6d\x99\x11\xb9\xf2\x1b\x3d\xd1\xe6\x3a\x8e\x6c\xf7\xed\xc5\x56\xc6\xec\x5f\xed\x80\xea\x9c\x69\xd8\x8d\x87\x77\x76\x34\xf3\xe8\x49\x60\x77\x9a\xf4\x38\xb0\x77\x8f\xe9\xc0\xb7\xcf\xa9\xe8\x06\x77\x8f\x7d\x55\xfc\xc0\xb7\xab\x33\xc3\xa0\x66\xb0\x92\x5f\xde\x51\x0d\x96\x4f\x13\xfa\x41\x3b\x4d\x4d\x60\x29\xba\xa6\xab\xb4\x67\xba\x48\x23\xae\xde\x82\x39\x71\xdd\x0a\x39\xf4\xa7\x5b\x4e\xa0\x37\xe5\x64\x46\x31\x94\x42\x48\x7d\xeb\x78\xa0\x29\x20\x67\x2f\x4b\xe9\xa9\x32\xfa\x3b\x35\xf9\xd0\x6d\xe4\xaa\x3a\x93\x85\x3a\xd3\xf7\xeb\x2c\xa7\x2a\x94\xd5\xe9\x04\xfc\x6d\x6f\x64\x1b\xf0\x4f\x1b\x3f\x6d\x03\xf7\x67\x8e\xcf\xdf\x3a\xbf\xed\xb7\x9e\x18\xde\xd9\x21\xdd\x1b\xd9\x6b\x35\xda\x0b\xed\x40\x4b\x56\x03\xd6\xf8\x39\xa3\xb1\xc9\x11\x41\x0e\xbf\x98\xc1\xaf\x07\x6c\x6f\xa4\xf3\xdd\xfd\xb6\xa5\x7e\xb4\xaf\x94\x97\x8c\xac\x71\x89\xcb\x40\xff\x27\x7a\x87\xd3\x28\xd6\x9f\x31\x3d\x1f\xda\x82\x9e\x1e\xda\xfe\xac\xf8\x1c\x6f\xb7\x28\x7d\xd1\x3e\x5d\xcd\xd1\x10\x0a\x02\x56\x2c\x01\xd0\x4e\x20\xa8\xab\x12\x94\x25\xeb\xc3\x25\x0c\x17\x65\x2c\xad\x07\x95\xcd\x75\xc1\xe2\x43\xc8\x17\x72\x40\x07\xf8\xd2\xa5\xff\xe0\x9c\x1f\x0b\x74\xd3\x13\xba\xf2\x09\xe8\x27\xb5\x55\xae\x3a\x0b\x0a\x3b\x82\x5f\xfc\xd4\x00\x56\x2a\x7d\x30\x43\x18\x50\x9f\x4a\x81\x2a\x3f\x82\x1d\x69\x41\x27\x3b\xe2\xee\xb9\x57\x30\x7a\x4e\xd5\x75\xac\x40\x5c\x01\xb4\x4c\xc4\x1e\xdb\x6b\xfc\xd7\x41\xa9\xa4\xbe\x06\x0d\xa5\x3f\x79\x83\x0f\xb8\xd0\xf9\x0f\x80\x9c\xc6\x89\x40\x7b\x4c\x18\x9a\xcb\x21\x09\x0d\x3a\xe8\x27\x93\x94\x4a\x00\xe3\xdd\xaa\x97\xd9\x56\x11\x1a\x3a\x57\xd5\x5b\x0a\xf2\x16\xf1\xa6\x56\xd6\xc6\xd7\x50\x0a\xee\x45\xb9\x31\x6d\xac\x2a\xca\xaa\x8a\x3c\x2c\x56\x2e\x47\x8e\x01\x8c\xb0\xa7\xb2\xa6\x9d\x10\x62\x43\x1a\x91\x99\x50\x40\x4f\x64\x10\xaf\xb0\x08\xf1\x21\x74\x7c\xf4\xc2\xf5\x8a\x51\x01\x50\x0e\x62\xca\x7a\xe9\x7e\x9e\x53\x81\x40\xe3\x83\x25\x01\x7c\x09\x2a\x0c\xe0\x82\xbc\x65\x2e\x31\x53\xee\x17\x22\xc7\x42\x1f\x8b\x63\xa2\x6a\xc4\x91\x67\x92\xf6\x31\x29\x9e\x4f\xcc\x89\xdf\x9b\xd6\xa2\xe1\x03\x45\x88\x51\xed\x4f\x59\x6e\x28\x52\x8c\x46\x26\xfc\x99\x6d\x7e\xfe\x4a\x1c\xc1\x0f\x34\xdd\x2c\xcb\x21\x95\xe5\x28\x5b\xe4\x9b\x4b\xe4\x47\xf2\x36\x0e\xe7\xdf\x72\xdf\xde\x2b\xf2\x23\x08\x95\x3f\x04\xbc\x64\xf1\x3d\xad\x50\x36\xf7\xb4\xdb\x10\x25\x6b\x62\x3a\x15\xc6\x9c\x8d\xad\x8d\x7c\x16\xde\x69\x2b\x3b\xe2\xc1\x2f\xd8\x22\x2c\x8c\xa8\x44\x4b\x19\xf3\x36\xa0\x65\xfd\x48\xed\x21\x16\x46\xc4\x96\x45\x9f\x28\xa6\x7f\x5a\x2e\x7f\xdf\x31\x7a\x27\x15\x2b\xb9\xc7\x31\xbe\x6b\xf9\x8d\xfa\xec\x85\xcc\x48\xb9\x06\xc7\xee\x1e\x22\xaa\x34\x13\x35\x58\x01\xff\xdd\xb1\x82\xf7\x05\xfd\x5c\xb0\xd7\x19\x21\xf5\x80\xbd\x2a\xd9\x42\xc1\x02\xf1\xea\x2b\xd2\xc5\xb3\x6f\xd6\x45\x07\x89\xb1\x20\x84\x7e\xa5\x71\x6e\xbf\x4f\x38\xef\xec\xeb\x07\xcc\xc8\x37\x15\xde\x30\x4b\xf5\x82\xf9\xe2\x27\x80\x10\xa9\x6d\xe4\xc3\x1e\xa0\x21\xf5\xdd\xae\x87\x07\x99\xd0\x11\x7f\x9b\x39\x23\xd6\x91\xbc\xc7\x3a\xd2\x19\x69\x53\x40\xda\x80\x80\xf2\x83\x82\x53\x36\xe6\x31\x2c\x0c\x70\x09\xb7\xc2\x1a\x53\x9d\x13\x5f\x55\x13\x67\xc4\x76\x85\xc6\x71\xaa\x25\x1f\x5d\x40\xe7\x18\x0e\x91\xd8\xee\x71\x8e\xc4\x06\x6c\x18\xd6\x31\xef\x2a\x7c\xe6\x8c\x59\x1a\x94\x4a\xa6\x91\x3b\x69\x41\x04\xf0\x7b\x23\x76\xc9\xd7\xaa\x19\x51\x36\xe1\x55\x67\xb2\x3d\xc0\xd1\x38\x93\x72\x99\x40\x4f\xd8\x11\xde\x15\x69\x0c\x1a\xea\x6b\x42\x76\xe4\x4e\xbc\x19\x71\x52\xbc\x06\x86\x59\xb1\x74\xe6\xaa\x87\x7d\x1e\x13\xb7\xef\xd1\x11\x6b\xc6\xfc\x6d\x46\xaf\x9f\x2d\xf8\x04\xac\x13\x95\x27\xe5\xad\x19\xc1\x24\x3d\x41\xba\x67\x2a\xea\x12\xcd\x3a\x9f\xf4\xac\x11\xed\xb9\xbd\xc0\x23\xce\x84\xab\xa3\xf1\x61\x84\xe1\xe9\xb4\xea\x8c\x17\x9a\x84\xe6\x76\x3d\x47\x99\x2c\xba\x6a\x59\x13\xaa\x93\x8e\xbd\xf5\x31\x1d\x11\x07\x01\x58\x8f\x38\x48\xea\x8d\xc8\xec\xf9\x44\xa0\x0f\x80\xf1\x89\xc0\x6b\x77\x05\xda\xd4\x04\xc4\x66\xf8\x10\xd5\xe3\xb1\x3b\xf1\xa8\xe0\x3d\x25\x8c\x18\xf1\x1e\xfb\x75\x2f\xa8\xcf\x55\x0b\x7a\xc7\xf8\x66\xc7\xe0\x76\x78\x55\xbb\xad\xbb\x3e\x2e\x0b\xa2\x76\xc8\x0b\x8f\x28\x4c\xd6\x28\x73\x1f\xc3\x55\xd6\xec\x00\x26\x85\x6d\xdd\x5c\xad\x8d\xa0\xd1\x17\x5d\xde\xe0\x15\x65\x3c\x4b\x43\xa5\x58\xb5\x1f\x19\xa8\x94\x98\xb0\x82\x4a\x34\xe5\x51\x39\xa6\x5d\x1e\x95\x81\xb4\xc2\x93\x50\x45\xa7\xea\xc5\x23\xa2\x2c\x6f\x04\xc6\xec\x86\x7e\x46\x13\xb8\x03\x8f\x8e\xb9\xef\x0e\xbc\xdc\x5a\xc0\x58\xa5\x4e\xb2\x13\x32\x2a\x9e\x90\x31\xa1\x63\x34\xfb\x07\x27\x03\x8e\x87\x33\xce\x77\xf8\xc8\xec\x70\xcc\x3c\xb7\xc9\xcd\x46\x56\x9a\xd9\x3d\xc0\xc5\x0b\xfb\x7e\x02\xfb\x7e\xa4\xf7\xbd\xd9\xeb\xd7\x01\x34\x76\xfd\x6c\xc1\x27\xd5\x56\x30\x7b\x34\xa1\x30\x7f\x14\xb1\x0c\xc1\x6c\xf3\xbb\x4f\x1f\x4f\xe8\x06\x1e\x97\x3c\x07\x9c\x18\x1d\x8d\xef\x52\xe7\x0f\xcd\x1e\xaf\x3a\x7b\xdb\x13\x75\x68\xf6\xca\x65\x52\xdd\xde\x2b\x95\xac\xa4\xcc\xbb\x84\x8e\xf3\x03\xf4\x62\x4b\xfa\x6a\x27\x74\xfe\x20\x41\xb9\x3d\x38\x48\x1f\x4e\x7a\x00\x08\xd4\x8e\x4f\xca\x3c\x75\xd0\xd0\xe6\x98\xcc\x66\x7e\xbe\x30\xf8\x4a\xd0\x01\xb4\x36\x9d\x5a\x31\x4f\x2a\xf1\x4a\x32\x46\xb0\xce\x39\xe7\x83\xfd\xba\x5f\xe6\x41\x25\xb6\x55\xb8\xd3\x2c\x95\x2c\xbf\xac\x2f\xd0\x82\x4a\x0c\xcc\x84\xde\xf9\x6a\xb1\x23\xb3\xd8\x63\x1e\xe1\x3a\x17\x9d\x41\x71\x1f\x87\xe3\x0e\x76\x3d\xf6\x5a\xe6\xbe\x93\x19\xc9\xcd\xad\x86\xaf\x86\xc6\xad\x79\x17\x76\x05\xdc\xa0\x29\x35\x74\xb1\x71\xec\x91\x19\xac\x71\xc1\xf8\x68\x58\x7c\xd6\x89\xf7\x2e\x81\x2d\x9d\xdf\x4b\xb5\xc5\xdb\x86\x96\x52\xd6\x49\x93\xf0\xd5\xf6\xe9\x43\xa7\x6b\x57\xd1\x3b\x4b\x95\x73\xbf\x5e\x90\x9f\xd8\x09\xbd\xf6\x6d\xd7\x9b\xe1\xc3\xb4\xd9\xf2\x40\x1a\xf3\xb8\x58\x5d\xa2\x66\x0e\xf1\xb7\xd5\x05\x75\x6d\xc7\x77\x03\x38\x05\x85\x83\xfb\x7d\xa1\xe0\x0a\x0a\xb3\x40\x3b\x04\x15\xc1\x6e\xf6\xd7\xe1\xec\xd6\xb6\xe1\xb3\x1e\x6e\x58\xf0\x5b\xa9\x11\xbb\x4a\x63\x6e\x05\x15\xcb\x02\xaa\x61\x1d\x45\x92\x11\x21\x1b\x9b\x88\xb6\x16\x26\x21\xa3\x7c\x61\xa3\xc4\x8b\x8f\xe0\xc8\x9b\x98\x5b\x38\x31\xbf\xac\x33\xe2\xc4\x40\x39\x45\x4e\xe7\xde\x4a\x60\x42\x0a\x30\x29\x7f\xd4\xb8\x44\x02\xe5\xd0\x48\x5f\x36\xb3\xfe\x83\xdb\xf7\xd6\xad\xcd\x8a\x82\x3b\x1b\x9b\xda\x4b\x4c\xb8\x2d\xb5\x24\xc4\xf5\x1c\xc1\x8f\x71\x92\x8a\x36\x23\xae\x35\x31\x94\x4f\xe4\xde\x7f\x8c\xd8\xf3\x8e\x68\xb0\xa7\x64\x63\x66\x9a\x89\x41\xf3\x55\xda\x5d\x38\x48\xb4\xc7\xab\x4e\x4f\xc1\xee\x5e\x6e\xf7\x3c\x70\x7b\x1e\x1d\x65\xb0\x6c\x90\xc3\x32\xdf\xed\x79\x95\xa8\x62\x55\xb7\x7b\xf5\xd8\xae\x12\x5a\x03\xd0\x56\xdd\x1e\xe1\xee\xab\x8f\x10\x17\xd9\xe7\x54\x63\xc4\x31\x96\x42\x44\xb8\x87\x9c\x58\x5a\x8e\xe8\xab\x5d\x35\x30\x60\xa2\x60\xc0\x78\xe6\xd1\x06\xc0\xac\x06\x00\xc8\x01\x00\xc8\x46\x0e\x20\x07\xef\x00\xc8\x71\x7d\x6f\x19\x48\x56\x69\x77\x09\x48\x8e\x00\x48\x0e\xe6\x80\x64\x43\x81\xb0\x86\x86\x95\x8d\x1c\x18\x0e\x56\x03\xc3\xc6\x7b\xc0\xf0\xfa\xd9\x6a\x14\xc0\x6c\x4a\xbb\x73\x60\xf6\xa4\x67\x35\xe8\x40\x03\x35\xa5\xe6\xe4\xa4\x65\x3e\x29\x47\xe5\x78\xe6\x1b\x3a\xdf\xf9\xa0\xcc\xef\xa4\x95\x78\x0e\x74\x85\x15\xb9\x12\x74\x85\x15\x59\x00\x5d\x6a\x11\x13\xb3\x88\x0d\x9e\xc0\xfa\xfd\x16\xd8\x31\xd8\xe6\xb4\x91\xfb\x85\x2b\xfb\x84\x36\xcc\x61\x78\x29\x40\xb1\xc2\x4e\x3f\x3e\x59\x32\x73\x56\xd8\xea\x2b\x76\x98\xa9\xe3\x6a\x9e\x8a\x35\x15\x18\xd1\x81\xb4\xe6\x18\x41\xd8\x17\x65\x49\x53\x7d\x7a\x7c\x8a\x96\x22\x93\x4a\xea\xa0\x18\xcc\x4a\xcb\x3c\xbb\xcf\x7f\x03\x58\x96\x22\xd0\x4a\x3c\xf5\x0c\x32\x7f\x9c\xbd\xe4\x84\xe3\x26\x74\x6a\xd5\x6d\xee\x3b\x24\x28\xf3\x9b\x90\xfa\x1b\xbc\x56\xcd\x7d\x19\x9f\x4a\x2b\x28\xdf\xf7\xcb\x01\x15\x4c\x7e\x83\x6e\x14\x24\xa0\xb7\xad\xa2\x3e\x8e\x92\xfb\xed\x1a\xe9\x7d\x4b\xf3\xec\xe7\xfa\x6a\xce\x88\x8c\x3f\x05\x46\xa6\xde\xbc\x57\x83\xfd\xae\xf5\xf7\xb4\xe4\xe8\x87\xfa\x09\xff\x89\x9b\x0a\xb3\xf7\xd0\x28\x09\x71\x7e\x21\x2c\x80\xe8\xc4\x57\x52\xe9\x1f\x77\x74\xef\x48\xd0\x0b\x88\x4b\x13\x7e\x05\x71\x67\xfb\x10\xea\x3d\x70\x14\x18\xff\xd8\x57\x4e\xd3\xd5\xc5\xfa\xe6\xba\x25\x60\x2e\x05\xbe\x93\xaf\x6d\x7c\x26\x68\xac\xe1\xb1\xad\xaa\x13\x13\x41\xbf\x1f\x09\xfa\xeb\x00\x62\xaf\x63\x25\x10\xef\xef\xa3\x3c\x5c\xb0\x5e\x5f\x45\x1c\xec\x0a\x08\x9e\x4c\x54\x29\x79\x4c\xbb\x91\xa0\x7b\x77\x10\xd9\xfa\xa2\xf2\x04\xcf\x98\xe7\xb4\xa9\xa4\xe1\x93\x06\x84\x6e\xbf\xa8\xd0\x43\x53\xb9\x88\xbb\xfd\x82\xef\x83\x4f\x9b\x4e\xc0\x7b\x5d\x2b\x00\xbe\x05\x08\x7b\xbb\xd7\xb5\x24\xa9\x3f\x62\xd4\xcd\x83\xa5\x62\xa9\x54\x3f\x01\xfb\x19\x12\x5b\x05\x94\x30\x4d\xb0\x93\x53\x1e\x38\x82\x0d\x63\xc1\xaf\xa1\xf9\x46\x83\x9e\xe3\x18\xbe\xa8\xf0\xed\xbe\x0a\xdf\x00\x39\x7c\x72\x3a\x9d\x9e\x3b\x81\x9a\xae\xd6\xb1\xb6\x6f\x8e\x63\x69\xec\x0a\x7a\x75\x45\xef\x8f\x88\x23\xd5\x45\xc5\xf5\x71\x7e\xe5\xf1\x61\xe9\xce\xc3\x58\x46\xcf\x2f\x3c\x6e\x7a\x96\xa0\x0a\x1e\x05\x00\x8b\xe4\x3b\xec\xc8\x60\xff\x5d\x99\x9a\x60\x67\x4d\xd5\x9d\xa7\x7e\xd6\x1d\xc1\x7e\x06\x6a\x6a\x5f\x71\x75\x4e\x86\x2a\xd4\x1a\x0b\xaa\xfc\x02\xb7\xf5\xd4\xf7\x95\xfa\xb1\x23\xd8\xcb\xbd\x8a\x79\xc6\x12\xdf\xf5\x18\x2f\xc6\x82\x9e\x1f\x09\xea\xef\xeb\x3d\x29\xff\x69\x7c\xd1\x9d\x04\xfa\x5a\x54\x68\x2e\xaf\x54\xb2\xd6\x04\xfb\x15\x01\xb7\xfc\x4b\xd9\xd7\x5a\xe3\xca\xd0\x39\x29\x68\x97\x1f\xb5\x9b\x1f\x3b\xc5\x97\x27\x1f\x1f\x1e\x65\x98\x7e\xec\x0c\x3e\x3e\x76\xd3\xd7\x8f\x83\x51\xaf\xf7\xd8\x1f\x86\xf2\xe3\xf3\x5d\xd8\xfd\x28\xd2\xf4\xa3\x7a\x83\xf2\x51\xf4\x73\x55\x77\x7c\x20\xfe\x0f\xe2\xcc\x6e\xf1\xaa\x20\xfc\xe7\x3b\x8e\xd2\x47\xad\x99\xa3\xb2\xec\x4d\xde\xbb\xcb\xf8\x31\x73\x3e\x9c\x0a\xeb\x76\xf1\x66\x24\x7f\xac\xc7\x7e\x38\x27\xd9\x4d\x42\x41\x9f\xfe\xf5\x1b\xec\x31\xf5\xfd\x02\xdf\x4a\x0a\xab\x3c\x2a\xf9\x8e\x36\xee\x1f\xae\x71\xde\x3b\x2a\x95\x42\xb4\xf0\x5f\x17\xe8\x59\xb4\x18\x79\xdd\x40\x79\xed\x26\xb1\xa5\x79\x28\xf1\x5d\xbd\x9d\xc4\x3b\x3f\x9c\xee\xe6\x93\x47\x33\x5b\xff\x00\x10\x70\x74\x27\xa2\x98\xae\x5d\x88\xb1\xe7\x6f\x16\x71\x26\xba\xc3\xec\x7b\x34\xd7\xe7\x1f\x78\xe1\x1a\xed\x7a\xe6\x99\x60\x60\x60\x8b\xa1\xa0\x22\x13\xe1\x46\xf8\x32\x54\xcb\x6c\x9b\xf7\x26\x43\x62\x22\x74\x06\xc9\x7d\xed\x3e\xbb\x8e\x35\x6b\xac\x98\x66\xd2\xba\x4f\x00\xf8\x4c\xa3\x54\x5b\x61\x90\x82\x28\xe3\x07\xe2\xc5\xda\x54\x90\x27\xd4\xac\x14\xd0\x10\x73\x09\x81\xe6\xb9\x48\xa6\xd4\xa3\x13\xe2\x2c\x61\x30\x9f\xa0\x90\x89\xcf\x7a\x0f\x04\xd8\x4b\xd7\x73\x46\x19\x11\x7b\xd1\x40\x2a\x76\x93\x7e\x00\xd0\x3f\xa8\x6c\x02\xab\x90\x27\x8b\x13\x45\xe4\x22\x62\x90\x02\x12\xab\xdb\xa9\x26\x85\xf3\x6c\xad\x63\xcc\x16\x96\x37\x0d\xd9\x8b\xb7\xd6\x9c\x7f\x3a\x2e\xde\x53\xeb\xb9\xa4\x03\xae\xc7\x3d\xe6\x11\xbb\xdc\xa7\x13\x7e\xdd\xb2\x22\x3a\xa6\x03\x42\xf7\x78\xcd\xc1\x7b\x1e\xf6\xf0\x75\x3a\x85\xbf\x3b\x7b\xa4\x54\x9a\xb8\xc7\xde\xf6\x58\x0b\x01\xf7\xe8\x98\xdf\xdf\x5b\x63\x3a\x41\xa9\x48\xa1\xb8\x33\xe0\x7b\x05\x87\x7c\x03\xa7\x5c\x8e\x48\xde\xcf\xe3\x03\xec\x67\xa0\xfb\xd9\xc3\xe1\xce\x12\xe8\x67\x71\x38\x07\x4d\xcc\x66\x56\x16\xef\xb1\x75\x91\x58\xcd\x90\x6a\xa2\xe6\x44\x7a\x32\xd0\x50\xd3\xbb\xf3\xd1\x55\x85\x12\x7e\x73\x69\x8d\x60\xcd\x15\x97\x15\xf2\xc4\x15\x27\x9e\x5b\xf5\xa6\xd3\xaa\x93\xf2\x04\x76\x05\xfa\x71\xeb\xfe\x79\xbb\xa4\xea\x52\x28\x1b\x66\x37\xef\x43\x58\xe6\xa9\x1b\x79\xba\x88\x62\x0c\x11\xaa\x76\xd1\xc7\x20\x7d\x31\x46\x37\x5e\xed\xd0\x50\x89\xaa\x56\x60\x11\x55\xa9\x81\xcf\xbb\x40\xd2\x49\xfb\xdc\x91\x3c\xd1\x36\xc5\xb1\x63\x55\x94\x5c\x99\x3b\xa5\xef\x11\xbb\xd9\x47\xaf\x98\x34\xe0\x61\x59\xba\x55\xaf\x12\xd0\xb0\xcc\x8f\xee\xdd\x5f\x81\x67\x29\x6b\x91\xfa\xca\xe7\x7b\xc4\x3a\x3d\x4b\xbf\xae\x0d\x70\x28\x81\xf4\x80\x48\xc7\x0e\x01\x4a\x0d\x78\xa2\x6c\x91\xef\x89\xbe\x6e\x2e\x50\xcd\x85\x65\x94\x27\x53\xe5\x27\x6a\x3f\xb5\xc2\xca\xdc\xea\x2c\x57\x47\xcd\x41\xed\xf4\x2c\x1f\xd1\xf5\x77\x91\x9d\xee\xbd\x67\x24\x13\x9a\x9d\xec\x38\x43\xcc\x8c\x68\xf8\x28\xff\xb9\xfa\xa1\x32\xeb\xee\xea\x1e\x9c\x8d\xf4\x7b\xa6\xcd\x1d\x9f\x1d\x5a\x64\xa5\x26\x8c\x7e\x1b\xf4\x31\xee\x8c\xc3\xee\xc7\xe1\xe3\x47\xd9\x17\xcf\x1f\x87\x77\xe1\xc7\x7e\xf8\x34\x0a\x07\x00\xd8\xf1\xdd\x20\x40\xef\x4e\x64\xe9\xc7\x29\x08\xbf\xce\x8e\x48\x91\xe0\x02\x3a\x9c\x0b\x76\x66\x91\x4a\xcd\xa9\x6e\x73\xe1\x88\x4a\x45\xe9\xa1\x08\xe2\xf8\xec\x1a\x70\xfe\xcc\x90\x50\xfe\x9c\x4f\xd3\x22\x9f\xa3\x75\xae\xa6\x53\xcb\xe7\x12\x35\x5e\x14\xbd\xe9\x1b\x9d\x6e\x31\x9d\x5a\x02\xb8\x42\x1f\x08\x60\x54\x86\x6d\xaa\x36\x0c\x0f\x56\xf6\x73\xc1\xaa\xb6\x0c\x2e\xd0\xe6\xb8\x3f\x67\xd3\xab\x78\x5d\x22\xd8\x0f\x1a\xf0\xf8\xd1\x12\x38\xb6\xa7\x26\xf5\xdd\x3e\x9a\x04\xc8\xe2\xba\x10\x07\xd4\x55\x98\xc7\xf5\x4c\x5c\x94\xc7\x3d\x9a\xb2\x71\xd1\x86\x8b\x59\x24\x48\x52\x50\x90\x06\x18\xa8\x40\x05\xeb\x0a\x02\x56\x32\xfd\x93\x8f\x6a\x50\x3b\x41\x5d\xd8\x96\x28\x6f\xae\x07\x64\xe3\xb3\x32\x63\x13\xf1\x53\xd4\x73\x09\xb0\x19\x1a\x03\x4e\x53\x03\x8f\xdc\x57\x8f\x46\x2c\xec\x4a\x65\xd8\x28\xec\x4a\x1a\xf3\xa8\x12\x38\x62\x75\x57\x76\x8b\x5d\xd9\x85\xae\xf4\xff\x9b\xae\x38\x21\x76\x25\xc4\xf3\xbf\xeb\x41\x8c\xd4\x5d\x09\xb3\xb7\xe9\x90\x0b\x3f\x1c\x9f\xed\xf2\x37\xd4\xf7\x0b\x68\x1f\x15\xf9\x22\xad\xee\x17\xd3\xe1\x63\xcf\x96\xd4\x7f\x1c\x0e\x1f\x1f\xec\xd0\x28\xfa\x85\x95\x39\xa5\xfb\xdf\x05\x9d\x9a\x02\xd5\x70\x56\xd8\x3e\x05\x2b\x99\xc5\x4d\xa5\x8e\xc6\x4f\xa3\x6a\x37\x90\x78\x44\x64\xcf\x7a\xeb\x89\xe1\x30\xec\x77\x6d\x61\x54\x5a\xa2\x81\x30\x84\x7c\x38\x10\x5c\xce\x86\xc2\x3a\x43\xe5\xcc\x79\x69\xc2\x86\x3e\x6f\x3f\xe7\x6c\xff\x0c\x24\x3b\x0f\x2c\x41\xca\xd6\x20\x2c\x5b\x9b\x3b\x4a\x17\x56\x90\xba\xa9\xdb\x36\x35\x13\x52\x54\x9b\xfb\xd4\xb2\x32\x05\x4b\x81\x9d\x6b\x88\xa1\x36\x71\x10\xa7\xd6\x61\x44\x66\x9f\x94\xa6\xc7\xbc\x7b\x4e\xed\xc9\x44\x68\xe7\x25\x71\x6c\x0b\x7e\xfb\xc8\x6e\x9b\xbb\x97\xff\xde\x6f\x9d\x9e\x16\xbd\x96\xfc\x8c\x6c\xc1\x3b\xbe\x28\xc6\x1d\x47\x85\x02\x67\xe7\x3f\xae\x0e\xff\xbd\xbb\xb7\x77\x59\xcc\x32\x82\x2c\x27\x8f\xee\xae\xf4\xd8\xaf\xc3\xf3\xcb\xab\x7f\x37\x76\xaf\x9a\x0b\xae\xa6\x56\xe4\xb8\x3a\x3a\x6b\xce\x8a\xd3\xed\x17\xa7\x9b\x0e\x3b\x0f\xe1\xef\xc7\x6e\x08\x84\xf1\xcc\x19\x0a\xeb\x53\x6b\x71\x8e\xcd\x7c\xb8\xe7\x01\x1e\xf0\xe5\x89\x36\x39\xe6\xe6\x52\xb4\xcd\x5c\xb6\x3e\x17\xee\xd9\x47\x4d\xa0\x2b\xd4\xfd\xee\x8d\x5a\xbc\x54\x3f\x28\x8d\x4f\x95\x1a\x6e\x6e\x53\xb8\x9d\x79\x2e\xfa\x9c\xf3\xc7\x22\xcf\x10\x64\x19\xe2\xd3\x62\x06\xd1\x86\x45\x4a\x57\x68\xd9\xa4\x13\x2e\x8a\x23\x28\x02\xc0\x1f\x73\x12\x33\x27\xe0\xbf\x2f\xad\xa7\x8e\xe5\x93\xba\x6f\x7f\x06\xa4\xe3\xfe\x6e\x59\x01\xcd\x74\xa8\x6b\x5b\x84\xde\xf7\x04\xfc\x23\x74\x21\x69\x93\xd0\xc3\x9e\x80\x7f\x8b\x49\xff\x22\x34\x78\x14\xf0\x6f\x31\xe5\x2b\xa1\xd7\x8f\x02\xfe\x11\xcf\x11\x30\x53\xc1\x8a\x31\xcb\x76\x06\x2f\x1d\x5f\x77\x71\x8b\xd4\xb7\xa0\x8b\x3e\x76\xd1\x9f\xef\xe2\x79\x44\xcf\x23\x6c\xcb\x9f\xef\xe0\x75\x44\xaf\x97\x12\xfe\x45\xa8\x78\x14\xf0\x6f\x31\xe5\x2b\xa1\x07\x11\x3d\x88\x4c\xe7\x96\xe6\x7b\xf0\xb0\x84\x0d\x0d\xd7\xbd\x77\x53\xd7\x47\x5d\x07\x89\xbd\x78\xf4\xd5\x48\xf4\x86\xd1\x27\xb5\xf5\xd9\xae\x7d\x2d\x08\x01\xa1\xcc\x79\x46\xbf\xb3\x51\x53\xbf\x16\x3d\xd5\x8a\x63\x93\x39\xc3\xb8\xe7\x4b\xb0\xe7\x69\x20\x8c\x00\x01\x06\x80\xa4\x83\xd9\x7a\x81\x7a\xc0\xe6\x98\x6d\x22\x55\x18\x00\xcf\xf9\x32\xe0\xd1\x9a\xb0\x3b\x30\x42\x03\x5d\x32\xa5\x93\xf8\x74\xee\x81\x56\x7c\xaa\x2f\x27\x84\x11\xe3\xa0\xf0\xa8\xa8\xa6\x2f\x08\xd9\x18\x37\x05\x29\xd7\x1c\xb9\x13\xd4\x2d\xc0\x25\x7a\xda\x65\x25\x20\xd4\xa0\xd7\x8d\x80\xac\xab\xb7\xf2\x59\x7a\x50\x91\x79\x3a\x60\x85\x80\xcc\x66\x5a\xf1\x2e\x7f\x03\xab\xc7\xbc\xe0\x27\xd3\xc4\x4a\xbc\x3e\x11\x3b\x3c\x64\xdd\x9f\xe4\x2d\xe0\xa1\xfb\xc3\x57\xd8\x5c\x79\xa1\x53\x57\xb2\xca\x5c\x8e\x99\x49\x05\x62\x89\x99\x30\xd4\xe3\xd1\xdf\x6c\xf0\xfa\xe0\x3f\xa6\x54\x66\x11\xa3\x41\xf8\x53\x48\xd9\xe9\xc6\xf5\x41\x68\x9f\x1b\x06\x2a\x9d\x28\xef\x32\xe7\x83\x7a\x50\x96\x65\x61\x8b\xb2\x2c\xe7\x9a\xdf\x7e\xfd\x2a\x2c\x07\x76\x50\x84\x2b\x61\x7b\xfe\xc5\x87\xe2\xde\x64\x41\xad\x53\xa3\x97\xa7\x17\x83\x41\x86\x23\xf3\xbc\xff\xdc\xe7\x05\xd9\xfa\xcf\x25\x45\x52\xd8\x60\xba\x81\xb5\x2a\xfc\x5f\x9d\xbb\x18\x8f\xda\x7f\xc8\x5f\x83\xff\x31\xff\xaf\x67\x2b\x6c\xaf\x56\x19\xcc\xf5\x27\x27\x08\x2e\x63\xff\xdd\xac\x7a\x60\x33\xe2\x60\x0e\xe6\xcb\xf7\x98\xf1\x73\x7f\xa6\xf3\xec\x3d\x2c\x83\xbc\x73\x7f\x4e\xb1\x30\x6e\x17\x34\xc3\xe5\xa9\x99\xb7\xe0\x14\xce\x43\xd5\x31\xb0\x4f\x27\x97\x75\x22\xec\x8f\xda\x36\x0f\x48\xc0\x6b\xf9\xd3\x34\xc9\x03\x37\x41\x99\x46\xc0\xab\xfa\x15\xbb\x74\x9f\xa4\x67\x75\xf7\x89\x53\xa9\xad\xf1\xb0\x1e\xf0\x44\x58\xd2\xbd\x0b\x3c\x2b\x2c\xd7\x08\xad\x55\x89\x1d\x22\x2f\xe0\x48\x9d\xb9\x15\xaa\xcc\x12\xf6\x57\x85\x87\x95\x5a\x45\x42\x95\xd9\x1e\xaf\x18\x9a\xf5\x3e\xcc\xc8\x82\x89\xe0\xd5\xd9\x35\x8f\x61\xdc\x4e\x43\xcc\xbf\xc7\xd0\x39\xca\xe5\x22\xac\x77\x8f\x3c\xa4\xdd\xaf\xd9\x45\xcc\x97\x33\x57\x2a\xcb\x99\x61\x7d\x56\x3d\xf4\x28\x68\xc8\x4d\xc4\xfa\xc2\x5c\x91\x75\xd3\x57\xfd\x22\xec\x3e\x04\xba\x66\x30\xd7\x47\x91\xb5\xab\x45\xc9\xa2\x62\x8a\x6f\xe8\xfa\xc8\xaa\xce\x7f\xe8\xbf\x5f\x0d\xbe\x02\xfc\x0f\xeb\xb9\x7e\xbf\x9a\xe6\x7f\x5e\x4b\x6e\x65\x63\x09\xd6\xa6\x39\xa8\x8d\xcd\x91\xcc\x35\x9e\x07\x92\x17\xdc\x43\x5f\xce\xdf\x55\xf9\xe6\x3e\x77\x5b\x19\x9d\x73\x2a\x95\xc0\x21\x9d\xc8\xfa\xa5\xf2\xb9\x41\xa5\x06\x9c\x6b\xf0\xe7\x77\x70\xbf\x16\xa5\xe7\x57\xba\x19\x1a\xea\xcf\x1c\xd2\x68\x30\xcc\x52\xc1\x3a\xbe\xe5\x93\x8a\xf9\x0c\x08\xd9\xb6\x64\x39\x9c\xf3\x4f\x7d\xb5\x78\xb7\x36\x90\x08\x30\xf3\x6b\x24\xc1\x46\x31\x0b\xc6\x56\x40\x05\x4b\x8b\x9e\x75\x5b\x79\xa7\xd0\xad\xa5\x60\xc3\x08\xbd\x62\x66\x81\xa5\x4e\x55\x8a\xe5\xef\xda\x8b\x32\x76\xd7\xd3\x2f\xf4\xfc\x05\xe8\x8e\x3e\x65\x90\xf5\xfb\x89\xfc\x81\x19\x12\xea\x15\xe9\x1e\x87\xa4\xe0\x9f\xbf\xc0\x96\x75\xda\xf3\xa6\x96\xf3\x27\x74\xae\xaf\x5e\xb0\x9d\xde\x03\xbb\xac\xe3\x02\x4f\x9f\x7e\xad\x58\xeb\x73\xa1\x9e\x9b\x12\xc7\xdf\xe6\x81\x43\x42\xe5\x19\x9f\x42\xc2\x13\x42\x8c\x9a\x32\x34\x85\xf6\x23\x91\xdb\x8f\xdb\x96\xdc\xa8\x55\x09\x81\xe3\x10\x10\xea\xaf\xf1\x10\x1f\x5d\xea\xb2\x05\xf3\x1c\x05\x7b\x67\xed\xa5\x4b\x82\x83\x13\xb3\xf1\x7a\x57\x66\xe3\x0d\x5b\x66\xe3\x1d\x7c\x36\xb8\xe0\xa5\xc9\x43\x47\xf0\xa4\x9d\x79\x0d\xf5\xb3\x00\x6c\x00\x5d\xc7\x84\x5b\x80\x82\x37\x74\x4d\xbd\x53\xae\xe3\xd7\x45\x25\x98\xdd\x23\xd8\xed\xf8\x7c\x85\xca\x50\x5e\xf3\xba\x2e\x52\xd1\x55\xcc\x1c\x55\x6e\x18\xcd\x83\x6b\xdb\x30\x12\xdc\xd2\x6a\xa8\x3d\x73\x00\x7b\x13\xaa\x7b\xad\x99\x8c\xaa\x2d\x34\x80\xbc\x63\x4d\x6a\x50\xf5\xc7\xa1\x62\x17\x6a\xb6\x09\xe6\xbc\x81\xca\xad\xc1\xd5\x4b\xb3\x5c\xa3\xb5\x0d\x53\xe7\x2c\xa3\xe5\x0a\xe6\xc9\xf4\x56\x33\x9d\x2a\xb6\x9d\xed\x50\xa0\x61\x7c\x62\x1a\x35\x78\x3b\x6b\x55\xeb\x55\xa9\xa6\x7d\x8a\x75\x54\x6a\x64\x03\x3e\x8a\x4c\x65\xba\x0a\xab\xcb\x61\xf6\x6e\xe9\xc4\xac\xe4\xf5\xae\x59\xc9\xab\x5d\xb3\x92\x27\x63\xae\x99\x34\x29\x05\x8f\x1c\x53\x98\xeb\xb2\x75\x4d\xe9\xc8\xe1\xc6\xa6\x1d\x69\x11\xaf\x94\x82\xd4\x43\xde\xbf\xb2\x6a\x74\x78\x65\xe9\xac\x15\x9d\x91\x90\x8d\x5a\xf3\xb3\x6d\x99\x92\x52\xa0\xcd\x65\x9d\x8a\x4f\xe1\x15\x8b\xad\x63\x28\x1c\x24\x6d\x99\xe5\x01\xf6\xd5\x8e\x36\xc4\xf3\xa0\x6d\xad\xdc\xc5\xc8\x7d\x15\xf6\xab\xee\xba\x16\x40\x35\x3a\x85\xb7\x15\x77\x31\x9c\x53\x5d\x01\x21\xc4\xf6\xb7\x79\xe5\xbd\xfa\x2a\x3e\xad\x08\x2a\x69\xf0\x5f\xd4\x48\x23\xbe\xb9\xae\x73\x55\x24\x0d\x0b\x21\x5d\xcd\x62\xfd\x11\x0d\xb3\xfa\x89\x2d\x76\x16\xfb\x63\x5a\x0b\xc8\x62\x79\x9d\x8f\xfa\xa6\x5b\xf4\x83\x2c\x54\xe5\x6f\xf3\xd5\x35\x49\xf2\xe7\x7e\x99\x7a\x2b\x22\xab\xb8\xd8\xc5\xc5\x69\xca\xbb\x51\xa5\xb5\x7c\xaa\xf4\x02\xab\xf9\xa9\x88\x85\xb9\x0b\xca\xe1\x06\x92\x2d\xeb\x08\x04\x08\xf5\x77\x78\x45\xd4\xff\x72\x84\xf9\x00\x61\x0b\xfd\xed\x41\x98\xbb\x89\x98\xcb\xed\x60\x76\xcd\x53\x24\x76\xae\xd9\x27\xff\x3d\x52\x50\x0e\x67\xce\x35\x0b\x83\xf7\xd2\xc7\x27\x90\xbe\xff\xf8\x5e\xfa\xf5\x2e\xa4\x47\xdd\xf7\xd2\xaf\x76\xf1\xd9\xe9\x02\xe0\x32\x8c\x4f\xe1\xcc\x91\xf9\x5e\x15\x6f\x53\x9e\xe3\x7a\xa5\x66\x67\x4a\x2c\x62\xdd\xdf\xd1\x63\x5f\xf7\xcd\xd4\x02\x22\x14\xc4\x16\xeb\xfe\x76\x9e\x56\x29\x24\xe6\x73\x2a\x88\x5d\xc5\x37\xb4\x2b\x81\xf0\x12\x2c\x50\x48\x55\x0f\xb6\xa2\x07\x45\x36\x36\x6d\xb1\x63\xf6\x61\x61\x47\x40\x1f\xb6\xb3\xad\x9e\x37\x3a\xbf\x69\x6c\x1d\x5d\x00\x68\x0f\xed\x8c\xa8\xba\x03\xae\xd3\xdd\xf3\x3d\xe3\x8f\xea\xd3\x09\xea\xf1\xcc\xd1\xb1\x0f\xff\x77\xe9\x58\x25\x7b\x44\xca\x53\x17\xdb\xd0\x5d\xcb\xd0\x6c\x5f\x03\xc5\xbb\x81\x70\x4d\xd5\x1a\x79\x7c\x3a\xf1\x94\x72\xce\xbb\x34\xad\xce\xb6\x3e\xba\x2a\x30\xc6\xd8\x17\x60\x83\x91\xa8\xc3\x2c\x17\xb1\x45\x76\x84\xb3\x92\xb8\x7c\x97\xd2\x35\x95\x0f\xff\x5c\xb9\x22\x34\xb6\xdf\xa9\xfd\xc3\xbb\x14\xf0\x9f\xfb\xfe\xb6\xa2\xf3\xc0\x3c\x57\xb2\x5c\xdb\x79\xe3\x15\x31\x77\x0e\xa0\xc0\xec\x4f\x64\x74\x77\x99\x9c\xb9\xcb\xcc\xd5\x9d\x6c\x1a\x34\x37\x78\x42\xf8\x71\x91\x99\x31\x37\xea\x0f\x67\x03\x4c\x78\x68\x5b\x6e\x8d\x6e\xd2\x2d\x8f\xcc\xba\x48\x69\x3c\x1f\xbe\x73\x53\x71\x52\xb3\x08\xf5\x4d\x69\xb4\xc1\x4e\x1c\xf9\xf8\x51\x5d\x5f\x00\xb3\x08\x44\x5b\xa7\x6d\xf9\x06\x74\xb1\x4f\xbe\x95\x01\x79\x16\x06\x16\xa1\x82\x50\x5d\xdd\x99\x1e\xb8\xa3\x6d\x05\x5c\x9a\x1b\xd5\xc1\x13\x2d\x90\x70\x77\xed\x42\xec\xcc\x51\x7d\x3c\xa9\xbd\xd3\xc7\xbb\x98\xed\x3f\x42\x37\xb3\x60\xd4\xc5\x4b\xe4\x56\xb1\xf6\x8a\x9e\x24\x20\xf0\xe5\x5c\x92\xa0\x9a\x9a\x3a\xd9\xd4\x62\x7a\xf1\x62\x49\x1a\x10\x23\xa0\x50\x07\xb9\x4a\x1c\xb9\xc3\x45\xa9\x24\xb7\xb9\x9f\x8b\x33\x14\xbc\x99\xcb\xb7\x5c\x5b\x80\x4e\xee\x8b\x6b\x7d\x36\x40\x0a\x78\xee\x39\xea\x63\x7b\x81\x49\x5a\x45\xab\xb6\x3f\x1b\x0a\xe7\x3e\x12\x86\xc4\x01\x32\xd4\xc4\x55\x74\x36\xb2\x61\xe9\xa2\x15\x5d\x19\x59\xa2\x51\x75\x82\x29\x32\xbb\xe6\x8f\x1a\x87\x2c\x80\x70\x4d\xa8\x2d\x93\x9d\xef\x83\x56\xb1\x4c\xd6\xfe\x09\xb5\xb4\x3f\xff\x19\xb5\xdc\x47\x68\xee\xe0\x7d\xdc\x76\x70\xf2\x67\xdc\xd6\xbb\x2a\x9a\x06\x2a\x8a\x39\x1e\xaf\xcc\x34\x37\x4f\xb4\xa3\x01\xe0\x34\xf4\x6b\xdf\x21\xd7\x53\xda\x3c\x51\x31\x49\x60\xde\x88\x0e\xaf\xf8\xf0\x4a\xcb\xe8\x7c\x83\x8e\x03\x2d\xaf\xee\x0c\xd7\x75\xa6\x02\x24\xcf\x95\xa1\xe6\xde\x01\x29\xe7\x06\x13\xb1\x21\x58\x67\x08\xdc\x5e\xad\xba\x8e\x11\x65\xc1\x9a\x27\x15\x7f\x1d\xe3\x37\x04\x7b\xbc\xc2\x07\x39\xb8\xfd\x6a\x45\x58\x8c\x56\xe4\xaf\x79\x0f\x97\x6f\x11\x9c\x9b\xf6\x0b\xc8\x2d\x31\x8f\x25\x83\x89\xa9\x45\xd3\xaf\x49\x50\x6f\x1b\xcd\x0c\xbb\xba\x63\xe2\x2a\x85\xc8\x19\x59\x8d\x8a\x92\xe0\xbf\x40\x45\x49\xb0\x12\x15\x7d\x58\x42\x1a\x05\xda\xa0\x79\x42\x83\x7c\xca\x85\x32\xe8\x68\x02\xdb\xb9\x44\x48\x4f\x3c\x99\x03\xaf\xb0\x6e\x3b\x02\x88\x0b\x95\x01\x1b\x74\xaa\xdb\x9a\x60\x4b\x82\x6c\xdd\x02\x2d\xde\x98\xd8\xd5\x1d\x61\x6e\xa9\x4d\x7a\xa0\x37\x34\xe4\xa3\x3e\xaf\x68\xe0\x6a\x30\x40\x2e\x04\x7d\xbc\x5a\x17\x1b\xc8\x40\x8c\x0a\x3d\xd6\xb0\x31\x09\xb4\x92\x60\x40\x2a\xfe\x7f\x28\xca\xf9\xdf\x9c\x88\x6d\x51\xff\x7f\x68\x1e\x14\x28\x7c\x6f\x22\x96\x50\xb1\x9e\x88\xff\x83\xe1\x2b\xf9\x91\xc8\xb6\x62\x36\x64\xdf\x0c\x39\xc3\xec\x88\xb0\x76\x32\x4c\x5d\xc0\xe4\x9a\x89\x03\xb4\xad\xa9\x7e\x95\xd9\xce\x67\x35\xc7\xeb\x99\x97\x9d\x9d\xc5\x56\x0b\x13\xe9\x67\x97\x04\x50\x66\x7b\x55\xa3\x73\xe4\x43\x3d\xcb\xbb\xd0\xa6\xca\x30\x5b\x58\x10\xff\x3f\x5e\x10\xbc\xcb\x37\x60\xef\xcf\xb2\xbd\xa7\x55\xbc\x79\x2e\xde\x1b\x48\x83\xb9\x46\xb1\xc1\x5c\xa9\x6f\x10\xd7\xef\x7b\xc3\x90\x3f\x3f\x8a\xbf\x43\xbf\x7c\x78\xfa\x33\x01\xf3\xfb\x7e\xa3\x56\x35\xa4\x01\x52\x33\xca\xa2\x7f\x0f\x48\x16\x01\xa1\x4e\xdb\xd2\x7c\x57\x2a\x0a\xc4\x4b\x2a\x14\xf1\xe2\x6b\xfd\x8c\xc0\x3d\xf6\xc8\x32\x7d\x12\x18\x4d\x30\xd4\x2b\x91\x3c\x70\x95\xa9\x8d\x2a\xe7\x3e\x72\x3e\x9f\xff\x50\x12\xa6\x01\x8a\x6c\x7a\xb3\x80\xcf\x2f\x88\xaf\x14\x59\x90\xd2\x08\xd6\x79\x86\x8e\x0c\xdd\xb0\xa1\xb2\xc9\x0a\xe0\x1d\xf9\x88\xce\xea\x0d\x8d\x85\x1b\xe2\xbf\x1f\xa7\x99\xa5\xc1\x13\x95\xdc\xf5\xe8\x9a\x55\xdb\xe1\x01\xfa\x7a\xd7\xef\x30\x09\x79\x43\x73\x20\xf8\xed\xe4\xca\xee\x35\x1a\x61\x46\x27\xdc\x8e\xd0\x8c\xc7\xaf\x13\x61\xf9\x14\xa7\x24\x70\x43\x8f\x4c\xa7\xba\x5c\x88\x6f\x78\xe5\x6c\x05\xfd\x17\xac\xa4\xff\x80\x40\xd2\x6b\xfc\x2e\x01\xa8\xe4\x96\xb5\xea\xba\x5e\xf1\x05\x8a\xb5\xa6\x29\xd6\x61\x91\x02\x35\x83\x5d\x2c\xbb\x6e\xf9\x95\x1a\xd9\xf0\x0d\x89\x9a\x0b\x59\xf5\x69\x7f\x7e\x14\x8b\x94\x9c\x3a\xe0\xf9\x89\xb8\x9e\x33\xaf\xf3\x3a\x31\xce\x0f\xea\xc2\xae\x39\xb5\xcd\x6d\x1d\x6d\x00\xaa\x1c\x0a\x43\x4d\xe7\x1c\xd7\xeb\x64\xa3\xb6\x99\xb1\xf8\xc1\x50\xa8\xfb\x17\x75\x7e\x1f\xe6\x95\x0f\xa0\x50\x15\xb0\xff\xb5\xb2\x4f\xf5\xce\xad\x84\x2e\xeb\x86\x81\x3a\xc1\x8b\x28\xbc\x30\xa3\x8f\x0f\x6e\x13\x67\x49\x98\xe7\xf5\xaf\x13\xd3\xb6\xfb\x5b\x2e\x5e\xf4\xff\x11\xcf\xeb\x12\x73\xf5\x56\x74\x9d\x2b\x6a\x59\x41\x00\x98\xa2\x5a\xc3\xa0\xb6\x38\x81\x2b\x5b\x98\x0f\x96\x6b\x9b\x15\x33\x93\xe4\x7f\x74\xf9\xff\xa9\x6d\x12\x3a\xb7\x1e\xc2\x48\x02\x45\xb6\x10\x8f\x0f\xee\x19\xf0\xe6\xfa\xb8\x3c\x3e\xb0\x41\x38\x6c\x5d\x7d\xdf\x1f\xa5\xe9\x6d\x28\xfa\x08\x3a\x9d\xf9\x34\x58\x19\xd8\x76\xf3\xb1\x87\x8f\xa3\xfe\xc0\xaa\x52\xfc\xef\x3f\x63\x69\x8b\x79\x90\xf7\xda\x5e\x8d\x67\x56\xdd\xd8\x2c\x95\x45\x1c\xf0\xdf\x60\x92\x22\x94\xbf\xc9\x6d\x69\x6a\x91\xc4\x8d\xda\x6c\xff\xb7\xef\xd6\x94\x44\xf6\x2e\xbb\x22\x7d\x5f\xc6\x70\xf5\xce\x2e\x7d\x57\x70\x30\x7a\xaf\xc4\x3b\x04\x88\x81\xd8\x82\x00\x7c\xf5\x37\x6a\xd5\x8c\xd2\x47\x0c\xca\xbe\x7c\xfe\xb2\xf9\xaf\x2f\x5f\xbe\xd5\xfe\x55\xfd\xbc\xb9\x55\xfb\xb6\xae\x04\xe2\xa2\x12\x6c\xfb\x15\x51\x0f\x6c\x9f\xfc\x19\xb7\xde\x6a\x33\x2f\x5a\xf6\x19\x24\xdc\xad\x35\x3f\xd3\xad\xe6\x67\x5a\x6b\x7e\xa1\x35\xf8\xf8\xdc\xfc\x42\xbf\x36\xbf\xd0\xcf\xcd\x2d\xfa\xb5\xb9\x45\xff\xd5\xdc\xa2\xb5\x6f\xcd\x2d\xfa\x19\x42\xb5\x2a\x7c\x6e\xd6\xe0\xfb\xcb\xe7\xcd\xe6\x16\xfd\xf6\xf5\x0b\xe4\xac\x7e\xc1\x84\xaf\x9b\xff\xfa\xe7\x97\xaf\xcd\xcf\xf4\x9f\xdf\xbe\xfd\x6b\xf3\xf3\x37\xa8\xb0\xb6\xb5\xf5\xf5\x5f\x5b\x9b\xcd\xcf\xfa\x09\x48\x10\x2d\xa2\x5d\x23\x3f\x35\x1d\xc2\xf6\xbf\xfe\x9f\x54\x7e\x73\x62\x0c\xf6\xdc\x5f\x69\xb2\x28\xca\xc4\xd3\x41\x82\x08\x47\xe1\x84\x4d\x93\x8c\xbb\x55\x2b\x68\x3c\xe9\x93\x3b\xd8\x2c\x6b\x46\x58\x73\xbd\x83\x4d\x62\xac\xb5\xdd\x36\xb8\xa9\xcd\xfc\x2a\xcb\x58\x85\xe6\xcc\xa1\x0d\xa4\xae\xf0\xb6\xb1\x6e\x92\x95\xe4\x42\x91\x6a\x4f\x59\xb2\x6e\x2f\x90\x9a\x4b\xbc\x6d\x40\x83\x7d\x7d\xb9\xb3\x59\x7c\x2a\xd6\xcf\xf4\x91\x86\x9b\xbc\xc6\x01\xa2\x7f\xe1\xdc\x77\x36\x39\xf7\xeb\x02\xcf\x95\xfd\x39\xfb\x16\xa6\x83\x76\x4d\xc5\x0d\xef\x79\xcd\xfe\xa2\x48\x02\x0c\x09\x68\x6c\x76\xcd\x6f\xff\x1a\xec\x0f\x37\xd5\x01\x1f\xde\x67\xc3\x39\x32\x10\x24\x9b\x90\x09\x2a\x66\x2f\x1d\xa8\x4e\x64\x89\x6d\x3d\xa9\x86\x8e\x31\xe3\xab\x11\xb3\x8a\x5a\x36\xa4\x14\x45\xcc\x94\x2c\x66\xff\x62\x6c\xc2\xe4\xdd\x40\x6e\x5b\x47\x2a\x9a\x22\x9f\xbb\xec\x9e\xa4\xd0\x43\x87\xac\x84\x30\x90\xa5\x52\x29\x0c\x63\x99\x7d\xc2\x71\x98\x6d\xf2\x87\x81\xbc\xfa\xf9\x48\xcc\x92\xfe\xf5\x38\xb0\xd4\xea\x81\x7c\x26\x8e\x69\x78\xd5\x40\xe6\xa1\x1f\x64\x29\x97\x0b\x03\x59\x02\x3e\xf9\x7a\xc4\x4f\x4b\x33\x5c\x18\x47\x73\x71\x41\x3a\xcb\xd9\x57\x0c\xa4\xf9\xa7\x71\x68\x19\xc1\x04\x30\xc9\xf6\x9f\x46\xb4\x90\x56\xae\x79\x15\xb1\x6d\x24\x29\x85\x32\xda\x8c\xd2\xaa\xe5\x2c\x2e\xe6\x4a\x2c\x33\xdc\x34\x70\x51\x1f\x4e\x6a\x4c\xf3\x0e\xef\x75\xbd\x7a\x9f\xeb\xe8\xfb\xab\x52\x29\xdf\x5d\x06\x88\x41\xdb\xb9\x15\xb7\x1c\x34\x94\x4a\xd6\xe2\x34\x19\x20\x41\xe7\x9a\x5d\x0d\xc4\x57\xe2\xba\x42\x97\x15\x95\xae\xbb\xcb\x0d\x38\x29\x95\xcc\x18\x74\xd7\xf3\x1e\x7f\x2e\xf4\xb8\x52\xa1\x15\x93\x11\x16\xc3\x5a\xbd\xfe\xe6\xd4\xd2\x62\x9b\xab\xba\x9b\xa3\x9c\x41\x5b\x99\x85\xc1\x4b\x77\xc0\x3f\x6b\x55\x42\xf4\x5e\xd2\xc5\x32\xb8\xbe\x23\xea\x0a\xd4\x73\x2e\xea\x46\x20\x4c\x3f\x7f\xd9\xfa\xda\xdc\x52\x2a\x7c\x28\x21\xc6\x2f\x20\x8a\xb5\x96\x5a\x56\x7e\xce\x0d\xe4\xef\xdc\xf5\x53\x17\xbe\xcc\x56\x0d\x5f\x84\x66\xb1\x32\xa2\xd7\x37\xa4\xa0\xe0\xe7\xe5\x61\xdb\xf2\x15\x89\xa6\x94\x8d\xe8\x17\x63\xee\xc3\xd7\x44\xac\xe4\xbe\xfb\x43\xc2\x57\xc8\x6b\x6b\x5c\xd2\x88\xfb\x6e\x27\x54\x0f\x71\x7c\xf7\x0e\xbf\x12\xee\xb3\x18\xe9\xb4\x5f\x61\xf0\xd8\x95\x03\xe4\x11\x4c\xdc\x59\x27\x4d\x3b\x83\x2c\x21\xe5\xd5\x35\x1e\x21\x5f\x14\xe3\xdf\x04\xff\xfa\x5a\x93\x2f\x98\x4e\xc3\xe9\x34\x25\x40\x3d\x5f\x85\xd0\x43\x2b\x28\xd7\x4c\xff\x36\xd5\x53\x63\xcc\x50\xe6\x57\x21\x15\x65\x3e\x6c\x5b\x32\x4f\x4e\x01\xc2\x97\xf9\x75\xa4\x93\xa2\x2c\x09\x22\x42\x13\x1d\xaf\x8e\x4e\xe6\xa2\x5b\xa6\x7e\x5f\x47\x7f\x26\x05\xfb\x3d\xf9\xf4\x8f\xda\x45\x9d\x95\x73\x2a\xf3\xe9\x96\x66\xba\x8d\x0a\x97\x9a\xd6\x88\x4b\x3d\xad\x31\x97\x7a\x3e\x13\x2e\xf5\x7c\xa6\x5c\x2e\xcd\x67\x37\x8b\x5b\x98\xcf\x80\x07\x65\x9c\x82\x85\x75\x54\xba\x25\x71\x6c\xf6\x42\xe0\x40\x4e\x3d\xa5\xe1\xe2\x94\xfa\x9c\x1f\x47\x85\xac\x30\xb9\xf0\x77\x6e\x06\x75\xc6\xd1\x7c\xc6\xeb\x48\x67\xcc\xe7\x14\x22\x42\x13\x9d\xac\x8e\x4e\xe7\xa2\x5b\x61\x66\x61\x14\x53\xbb\xd9\x8c\x17\x8c\x5c\x2f\x29\xe8\x28\xaf\x6c\xdb\x3e\x5a\xf1\x14\xfc\x26\x2c\x8b\x55\xeb\x33\x6e\x1b\xd8\xcf\x79\xf8\x22\x8c\x3f\x05\x31\x9d\x0a\xce\xcf\xcd\x60\x3a\xe6\xac\x18\x2b\xac\x35\x1a\xf2\x2a\x8d\x78\x95\xc6\xbc\x8a\xe6\x33\x7c\x9e\x08\x4b\xa0\xc6\x5d\x15\x00\x5b\xad\x4a\x9c\x2f\xda\x52\x80\x15\xe4\x89\x5b\xb0\x81\x6a\x55\x52\xa9\xd1\x7f\x9a\x64\x99\x27\x7f\xd3\xc9\xb4\x56\x35\xa9\x61\x9e\x5a\xab\x99\xe4\xa8\x10\xf9\xc5\x44\xc6\x85\xc8\x7f\x9a\xc8\x24\x8f\xdc\xac\xd2\xcf\x18\x59\x00\x56\xb0\x15\x59\xeb\xea\xbb\x95\xc9\x9a\x68\x4c\x93\xa2\x25\x5a\x3d\xb5\x68\x5b\xff\xd5\xe3\x5c\x28\xd7\x7c\xd5\x82\xc5\x6f\xa1\x41\x83\x85\x69\x15\xc8\x47\xd6\x7d\x2a\x1d\xc9\xe1\xdb\x91\xbc\xba\x23\xeb\x95\x4f\x27\xc2\xaa\x48\x1a\x10\x5b\x9c\x0a\xbc\x0b\x32\x4e\x78\xf0\xbd\x46\xc0\xab\x3b\x61\xbd\x02\x69\x95\x10\x72\x7d\xd2\xe6\xac\x8a\x9a\xc8\x3f\x1f\xb0\x60\x61\x09\x21\xbf\xe9\x61\x95\xe7\xee\x8d\xaa\x45\xbb\xea\x54\xa2\x75\xd5\x8e\x70\xaa\xdb\x81\x63\x9c\xb8\x0c\xaf\xac\x00\xa6\x0d\x59\x8e\x08\xa1\xd5\xa9\xb0\x94\xd1\x82\xad\xed\x04\x27\x7f\x6b\x3d\x2e\x4b\x1a\xf2\x97\x36\x5a\xb0\xa2\xe1\x36\x30\x7c\xe1\x8e\xa8\xf8\x44\x19\xf3\x73\x42\x9e\x40\x26\x27\xcb\xa4\x8c\x1e\xe4\xf9\x54\xb6\x08\xb2\x39\xb2\xcc\x23\x27\xa8\xf0\x68\x96\x69\x56\xe5\x4f\x21\x4e\xfe\xff\x19\xca\xce\xfb\x43\x29\xfb\xd0\x49\x2e\xfe\x72\x2c\x59\x46\x93\xcf\x4a\xca\x35\xf2\x1f\xe5\x7d\x77\xe0\xf9\x22\xbe\xcc\xc1\x49\x1c\x44\x7e\x01\x34\xf7\x18\x07\xb5\xad\x0b\xcf\x15\x4e\xc5\x9c\xec\x1a\x6f\x4e\xb1\xbc\x4f\x1c\xb1\x81\x6e\xe4\x54\x4d\xfa\xad\x54\x45\x10\x07\x90\x4a\xa9\x54\x6b\x56\x6a\xd5\x1d\x75\xe9\xa8\x13\x0b\x6d\x21\xe1\x5d\xc0\xe0\xc1\xe9\x9c\xd5\x7b\x38\x25\x34\xcd\x0c\xdc\x66\x82\xd9\xd6\xa7\xec\x4a\xf1\x93\x11\xcc\x8e\x62\x23\x98\x95\xb1\x91\xc6\xa6\x99\xce\x54\xfb\x82\xc7\x99\x00\x37\xd1\xb7\xce\xff\xe6\x5a\x29\xfe\xe9\x41\xf0\xc3\xc7\xcc\xb3\xf1\xcd\x05\x84\x8c\xe4\x56\xc6\x2c\x4e\xb5\xfa\xfe\xa7\xc2\x99\x95\xa7\x4b\x26\x0c\x8c\x8e\x25\xbe\x51\x37\x5a\x96\x8e\xe4\x96\x2c\x07\xc8\x5a\xa9\x71\x47\x6d\xcb\xa8\x44\x4a\x42\x25\x15\x4c\xc6\x5a\xcb\xb2\x38\x19\xaf\xed\xf9\xb9\x58\x92\x4f\x3f\x25\xcb\xf2\x69\x99\x4d\x43\xfb\x22\x9b\x06\xdf\x4c\xc3\xc9\xbf\xcd\x34\xdc\x7c\xe2\xee\x44\x13\x5e\xa3\x08\x68\xaf\x42\xe8\x9f\x79\xe8\x78\x2e\xed\x38\x02\x88\x57\x08\x7d\xce\x43\x3f\x17\x73\x7e\xcd\x43\x71\x5c\x4c\x8b\xe3\x62\x2d\x71\x4c\xb7\xe6\x73\x56\xe7\xb3\xce\x07\xb7\xaa\x0b\x99\x17\xc2\xcd\xcf\x0b\xe1\x2f\x0b\xe1\x7f\x92\x82\xd1\xb9\xc9\x2a\xbd\x77\xdc\x85\xec\x29\xc1\xc9\x17\x6c\x14\xe3\x0a\xa1\x96\x29\x15\xac\x7d\x81\x9a\xaf\x54\xb0\x93\x7f\x93\xd9\x87\xd7\x15\x42\xfc\xdc\xb2\xec\xa1\x76\xb4\xf7\x94\x10\x6d\x5a\x56\xcf\xbe\x71\x7d\x51\x7c\x4e\x71\xf3\x49\xab\xa0\x8a\x6d\x1e\xb0\x9b\x0b\xf2\x36\xb4\x8d\x36\x3a\x0d\xb9\xcc\xa4\xdf\x91\xfa\x0e\x03\x8b\x38\x52\x6f\x50\x09\x07\x44\x01\x07\xce\x23\x12\x70\x37\x02\x78\xa1\x65\xed\x90\x7d\xff\xd1\x22\x15\xfc\x8a\xba\x16\x5a\xb9\x91\x66\xe3\x85\x84\x78\xb9\xf2\x7b\x4c\x03\x9e\x25\x45\xc4\x51\x3a\x5d\x61\xdb\x8a\x68\x56\xbc\xf0\x8a\xa0\xd0\x85\xd6\xa7\xa2\xa9\xed\x1a\xe7\x92\xb5\x3f\x95\x4a\x92\xdd\x5c\xec\x48\x38\x66\x34\xe5\x83\xb6\x05\xe1\x75\x48\x02\xba\x4a\x87\x81\x92\x72\x3d\xda\xe3\x1d\x41\x07\x3c\x45\xa6\x14\x1d\xa6\x77\xf5\xa7\x13\x6e\xf3\xc8\x81\xb0\xe2\x5c\xb4\xb1\x2c\x99\xe9\xfe\xea\xb1\x0f\x8c\x8d\x99\x54\x73\x56\x63\x2e\xe9\x84\xf7\xe8\x1e\x0f\x69\x83\x8f\xb5\xfe\xf2\xd8\x0c\x70\x42\xe8\x98\xa5\x3e\xa1\x3f\x96\xd3\xf6\x74\x5a\x7e\x47\x37\xd6\xcd\x4d\x48\xe5\x83\xf9\xde\x23\xa4\x62\x35\xca\x3f\xc8\xc6\xe6\xf6\x98\xb5\x2f\xc8\x5b\x30\xef\x59\x2b\xa9\x5b\x91\xb0\x7a\x64\x3a\x45\xa5\x65\x89\x88\xb9\x47\x43\x42\x28\x46\xe8\xe9\x0d\xe9\x28\x9b\x56\xf4\x22\x0c\x5c\x53\x8f\x2b\x1d\xe7\xd1\xdc\x6a\xa9\x72\x3d\x42\x9c\x1e\x0f\xd5\x05\xdd\x52\x4d\xb5\x62\x4d\xb3\xa4\x54\x8a\xb6\x43\x74\x66\x23\xd1\x6f\x59\xc8\xbb\xb4\xcb\xd3\x7c\x9d\x61\xda\xf5\x04\x74\x69\x8a\x53\xd2\xe3\x21\x32\x59\x34\xe4\xa1\x62\xfa\x42\x9e\xe6\xca\xd6\xbd\x2c\xd0\x03\xaa\xd9\x04\x22\x48\xb1\xc2\x72\x0f\xf6\x58\x5a\xe9\xed\x0c\x36\x36\x4b\x25\xe5\xb9\x0a\x36\x51\x8f\x76\x89\xba\xf7\x94\x70\x86\xde\x22\x2e\x9d\x2e\x8f\x9d\x94\x07\x4e\xa2\x1d\x33\x3b\x1d\x1b\x8f\x51\xc2\x53\x65\x18\xaa\xba\xcd\x13\x27\xa9\x54\x48\xe6\xde\x2c\x75\x13\x8f\xf9\x12\xb6\x42\x82\x01\x3d\xdf\x9d\x99\xf2\x74\x32\x53\xd9\x12\x1c\x73\xa4\x47\x96\x60\x09\x1a\xe1\xf0\x06\x59\x74\xb7\x18\xad\x56\x3a\x51\xf6\x0c\x2a\x5d\xf5\x4b\x2a\x56\x5a\x1e\x90\x8d\x0f\x9b\xdb\x11\x6b\x5f\x94\x4a\x09\xdb\x7b\xb0\xd4\xe4\x2a\x5d\xf4\x98\xcc\x00\x0c\x43\xaf\xbb\x3c\x42\x93\x75\xb1\x31\x59\xa7\x5d\xd0\xb9\x5d\xd5\xe3\x52\x29\x2a\x97\xd5\xe5\x1c\x1c\x55\x89\x7e\xae\xf4\x42\x04\xe6\x98\x2b\x6f\xec\xc5\x58\x38\xf0\xc0\x13\x4a\xe0\x23\x62\x65\x60\x31\xd2\x98\x37\xc8\x8e\x78\x90\x1d\x71\x1a\xc0\xf0\x1e\x7c\x4b\x92\x9d\xa8\xfc\xa5\x3a\x9d\xc6\x7a\x11\x3a\x82\x66\x05\xca\x59\x01\x00\x09\x28\x10\x8e\x15\x30\xe8\xd8\x6f\x92\x07\xca\xad\xcb\xe6\x8e\x44\xdb\x1d\x30\x3c\x60\x9a\xaa\xd0\x74\xcd\x89\x94\x21\xc7\x08\x40\x59\x97\x4b\xed\x86\x7f\x4b\x3f\x4c\xd5\x73\x57\x89\xf5\x1c\x96\x4a\xb1\xbe\xd3\x45\x97\x74\x84\xbc\x49\xbe\x56\xcd\xd6\x2d\xe6\xdd\x99\xe4\x6b\xb5\x19\x6c\x0d\x48\xd3\x4a\xf7\xca\x52\x19\x5e\xd3\xc5\x68\x69\x3f\x70\x63\x8f\x46\x6c\x38\x2a\x95\xd6\x22\xf6\xf4\xa2\x2f\xe9\x22\x75\x43\x37\x9b\xcd\xb2\x4d\x92\x99\x07\x0f\x8c\xc1\xfd\x39\x97\x84\xbb\xed\x65\x7a\x83\x76\x69\x8f\xbc\x85\xca\x2b\x18\x55\xab\xa3\xa0\x4b\xd1\x01\x4f\xac\xb5\xe7\x37\xcb\x01\xed\xf1\x9e\x7e\x56\x46\x5d\x7c\x49\x15\xd3\x1e\xf1\x1c\x01\x10\x30\x42\xe9\x42\x41\x3f\x0a\x45\x0a\x05\xad\x70\xc0\xec\xca\x72\x0a\x2c\x3a\x92\xfe\xb0\xcc\xbe\x79\x8e\x14\x64\xa6\xbf\x50\x55\x4c\x2f\xad\x23\x33\x13\xbc\x73\xd1\x66\x3b\xe8\x07\x17\xc4\x09\x8b\x11\x92\xe8\x67\xec\xe2\xc5\x8a\x68\xa8\x58\x83\x01\xaf\xd2\x11\x17\x5a\x51\xac\x13\x59\xc1\xce\x68\x3a\x1d\xed\x48\x32\x30\x0f\xbf\x21\x6b\xa0\xb2\x0c\xa0\x06\x43\xe7\xf8\x3c\x04\x02\x98\x0a\xb2\x01\x1f\x7e\x6e\xe9\xcd\x62\x5f\xb7\xb6\x7d\x1c\x3b\xaa\xfe\xf5\x68\x17\x69\x39\x1c\xfd\x53\x21\x86\xc6\x84\xb0\xe7\x43\xab\x40\x59\x85\xa7\xf3\x8f\x66\x94\xca\x2c\x1a\x16\x81\xaf\x72\xad\xba\xf0\x90\x44\xce\xfb\x46\xd8\x2b\x6a\x48\x25\xa3\x8c\x5e\xba\x1f\x09\xee\xcf\xf6\x10\x61\x3f\xac\x56\xfc\x72\x8f\xbd\x75\x53\x0c\x5d\x93\xec\xfd\xe9\x0d\xdb\xfd\x48\xcc\x88\xa3\x2a\x0c\xc6\x0b\x8e\xec\xcc\x8b\x01\xce\xaf\x62\x25\xc1\x7e\x40\xad\x5b\x94\x5c\x9d\x4f\x16\x28\xdf\xef\xc5\x3e\xb7\x5f\x4c\x97\x0f\xa1\xc7\xdf\xff\xd0\x63\x9d\xdf\x12\x45\x93\x57\xd8\xf3\xef\xed\xc5\xa7\x9d\xef\x17\xd9\xf5\x66\xc4\xf9\xfe\xbf\x31\x8e\xe8\x54\xac\xd0\xa9\xf8\xf9\x6f\x33\xa0\xdb\x0b\x43\xb3\x66\x2f\xa6\xae\xbf\x19\x92\xf5\x2e\x11\xfc\x67\xd7\x0a\xa8\xb4\xee\xc6\xd9\x0b\xcc\xfb\x3c\xf6\x3e\x8f\xed\xe4\xb1\x9d\x3c\x36\xce\x63\xe3\x3c\x36\xca\x63\xc3\x3c\xf6\xfc\xab\x89\x8c\xf2\xc8\x51\x37\xcb\xda\xcd\x63\xdb\xdf\xf8\x91\x8a\x94\x79\xe4\x6b\x64\x08\xec\xcb\xc3\xe2\xe3\xcb\xf8\x54\xac\xb4\x23\x00\x53\x73\x77\x2a\x68\xe7\x54\xd0\xcc\x9e\xc0\x87\xe8\x14\x1d\xf6\x89\x8e\x58\xe1\xad\x0f\x26\xd0\xe7\xf7\xa7\xda\x46\xbe\x22\x55\x1d\xc1\x13\xf3\xd6\x43\xeb\xae\x5e\x7f\xb3\x1e\xc7\xa2\xec\xb3\xb4\x87\xba\x17\x69\xcb\x85\x6f\x00\x41\x89\x29\xfc\xb6\x1f\xdb\x3e\xdb\x8f\xe9\x2d\xfc\xde\xc6\xf4\xe4\x9b\x0d\x99\xe8\xf1\x37\x3b\xa0\x87\xdf\xec\x87\x96\x1b\x78\xf4\xe8\x9b\x2d\x00\x98\xd1\xe6\xad\x2d\xdc\x03\xdf\xa3\x8d\x6f\xb6\x59\x1d\xba\x37\xb4\x43\xb6\x37\xa4\x23\x69\x87\x6c\x24\x69\x53\xa7\x45\x89\xa0\x8d\x5b\xdb\xf5\xe8\xf7\x6f\x76\x75\x06\x60\x4d\x79\x2c\x16\x28\xc4\xe0\x82\x1d\x89\x5c\x97\xe4\xed\x48\x40\xd6\xb3\x8e\x0d\xc0\x18\xd1\x8b\x9e\x66\x94\x21\x0b\xf7\x7e\xe2\xa1\x13\x3c\x74\x52\xda\xd0\xd4\x3b\x36\x58\x5b\x53\xc9\xf5\xaa\x5d\xa3\x50\x2b\x15\x2c\xfe\x99\xbf\x50\xc6\x2a\xb6\x31\x8b\x12\xa7\xb0\xf6\xbd\xd8\xc0\xf0\xb6\xd9\x21\x04\x11\x0b\x02\x57\xa0\x6b\xf6\x86\x8e\xf6\x76\x83\xab\xd4\xb2\xb0\xb3\x55\x8f\x0d\x05\x35\x82\x44\x0b\x66\xac\xac\x17\x9b\x50\x33\xbf\xb4\x46\x0a\xee\x16\xaa\x8e\xcf\x26\x2f\xdb\x3e\x93\x7b\x8e\xf1\xb3\x18\xff\x8f\xee\x8b\x22\x89\x7d\x4d\x93\x7e\x48\xb9\xb4\x12\xa5\xcf\xa0\xc9\x87\xb7\xa1\xb0\x13\x7a\x63\xa7\xe8\x34\x53\x1b\x76\xcf\x2c\xd4\x6c\xcd\xc8\x2c\x2e\x97\x67\x92\x07\x33\xc1\xa3\x7b\xec\x24\x6c\x20\x65\x84\x1b\x27\xd8\xc9\x67\x57\xc0\xe4\x46\xb3\x59\x50\x41\xe7\x6b\xc9\xff\xc7\xdb\x9b\x3f\x35\xae\x63\x0d\xa0\xbf\xf3\x57\xc0\xfd\xf8\x5c\x56\x47\x71\x27\xcc\xdc\x3b\x33\x36\xea\x14\x21\x04\x48\xb3\x74\xb3\x04\xba\x5d\xae\x57\xb2\x2d\x9b\x60\x63\x4c\x9c\x04\x08\xc9\xff\xfe\xea\x1c\x49\xb6\x13\xe8\x9e\x99\xaf\x5e\xbd\x99\xdb\xc4\xd6\x66\x2d\x47\x67\x91\xce\x02\x4b\xeb\x24\x1f\xc1\x8d\xff\xc2\x1b\xe8\x9b\xf7\xf7\x90\x12\xbf\x07\x93\x44\x83\x49\xb2\x02\x26\xf7\x1a\x4c\x7e\x9c\x48\x30\xb9\xeb\x97\x60\x72\xfe\x17\x40\x09\x76\x7d\x5f\x25\x8d\x12\x5e\x81\x8b\x3c\x18\x2c\xcf\x37\xc3\xd5\xb5\xdf\xa9\x2d\x38\xc5\x51\xc2\xeb\xe9\xc8\x0e\x97\xce\x5a\xd1\x15\xd8\x10\xb5\xbc\xbb\x3e\x6d\xd3\x08\xf2\x22\x2b\xfe\x46\x43\xd8\x4d\xd1\xbd\x19\xc9\xd2\xc7\x1c\x26\x22\xba\xc7\x10\xdb\x1f\x4c\x67\xcd\x06\xff\xbe\xbe\xcb\xe5\x09\x9b\xbc\x39\x6f\xff\xf9\x09\x9d\xc7\x10\xc7\x6f\x32\x3c\xc4\x15\x4e\x70\x6d\x86\x34\x85\x7d\x6f\xfd\xf8\x0e\x9f\x0c\xae\x4d\xe9\x61\x86\x03\xc6\xf9\x0c\x23\xfb\xf6\xff\xa8\x5c\x79\xd6\xf4\x80\x67\x2e\x0e\x67\x3f\x46\xe6\xc3\xf5\x47\x78\xfc\xf1\xde\xe4\x34\xaa\x9c\x08\xe0\xb2\xc1\x9a\x05\x34\xcd\xed\x04\x63\xdb\xd7\x4e\x7f\x92\x93\x0f\xbd\x7d\x5e\x8d\x4c\xdf\x3a\xfe\xe7\x87\x9e\xc1\xd7\x9d\x6a\x2c\xc9\x12\x84\xcf\x96\x13\xed\xfa\xd6\xc1\x0f\x19\x24\x25\x22\x2a\xac\x1f\x26\x45\xd2\xd1\x71\xca\x1e\x06\xdc\xf4\xad\xa3\x7f\xd2\x18\x44\x83\x9f\x57\x66\x6d\x2b\xf5\xe3\x06\x97\xfb\x88\x38\xbe\xf5\xf5\x9f\x8c\x31\x31\xe1\xc8\xa7\xdf\x0f\xb8\x99\xd6\xc2\x35\x66\x7a\x53\xa6\x6b\x7b\x51\x36\xe0\x5b\x03\xf5\x05\x94\x1d\xb7\x5a\xb4\x60\x01\x7e\x81\xd0\x29\x6b\xb6\x9d\x0c\x76\x64\x26\x77\xa4\x74\x0b\xae\xe4\x47\x3a\x67\x81\x39\x93\x3b\xb0\x89\x8d\x39\xcd\x36\x63\x53\xc3\x98\x7f\x61\x85\x61\x98\x53\x26\x9d\x4c\xa9\xc8\xca\xd6\xde\xa3\x49\xaa\xd8\xca\x5d\xf2\xd6\x65\x81\xd9\x5d\x69\x60\x14\x99\xdd\xdd\x79\xa3\xad\x8e\xe4\xe0\xb5\x39\xdf\xf5\xad\xde\x3f\xc9\x5b\x5e\xc6\x58\x59\x62\x88\x95\x2e\xbc\x27\x90\xf9\x43\xc6\x03\x90\xf1\x93\xf1\x3d\xf1\x2a\x81\xb3\x67\xdd\x36\xe7\x64\xd7\xb7\xf6\xff\x09\x9f\xd4\xdc\x32\x70\xb8\x3d\xeb\xf6\xcb\x1c\x84\x1f\x1d\xf3\x30\xc1\xc8\xa7\x98\x9d\x34\x1a\xcb\xee\x62\xb1\x91\x6a\xd4\x32\xa3\xb7\xf6\xbc\x8e\x5a\x7c\xc0\xe3\x0a\xbb\xa0\xb8\x84\x41\x85\x73\xf2\xd6\xde\x9d\xca\xa5\xb8\x37\x53\x3a\x6d\xb6\x31\x4e\x4b\x5e\xf9\x5d\x90\x7e\x8c\x85\x5c\xfd\x82\xbc\x4d\x99\x70\x0b\xcf\x99\x41\xdf\xe6\x9a\x65\x97\x2e\xbb\x53\x59\x28\x93\xa3\xeb\xb2\xd4\xcd\x3c\xda\x63\x53\xeb\x3c\x30\xbb\xd6\x84\x83\xd0\x1d\x9a\x3d\xea\x5b\xd3\x10\x9e\xb9\xf5\x1a\x75\xce\xdc\x3d\xcf\x3e\x53\xf1\xa7\xb3\x46\x1b\x5b\x31\x8c\xd4\xcd\x1a\x6d\xcf\xba\x6d\x76\xad\x5b\x00\xbf\x7f\x36\xce\xc8\xdb\xac\x9a\xd5\x79\xe5\xe9\xab\x27\x43\x27\x9f\xc9\x21\xcd\x80\x94\xa0\x9f\xb4\xb7\x9c\x15\x4e\xc2\xe6\x7a\x1d\xca\xd5\xcc\xc9\x1b\x67\x21\x5f\xeb\x79\xb3\x8d\x7d\xe7\x9a\x01\xa7\x65\x17\x60\x1c\xd6\x6d\x1d\x43\xa4\x34\xfe\x66\x27\xf4\x61\x9a\x4e\x46\x79\x8a\x11\x9d\xef\xb9\xcd\x41\x16\xd1\xbb\x69\xd5\xab\x7e\x6f\x4d\xf7\x54\xee\x21\xd7\xab\x85\xef\x26\xb5\xa8\x65\x4e\x22\x3d\x47\x37\x1a\x89\x2c\x9b\xb2\x08\xe4\xdf\x3d\x8e\x42\xfc\xb1\xdb\xf2\xa4\x03\xf6\xec\x84\x9b\x99\xf5\x42\x33\x77\xe0\xd1\xd4\xfa\x1a\x50\x6e\x9d\xff\x85\x01\x66\xda\x8c\x05\x9d\xbd\x81\x3d\x3a\x70\x60\x13\xa3\x8f\xe3\x94\xed\x40\xaa\x8c\xb4\x66\x4b\x59\xae\x9a\x84\x6a\xed\xa4\x83\x7e\xe8\x5c\x6e\x5d\x18\x86\x70\x33\xaf\xc2\x22\x85\x44\x7d\xd8\x92\x19\xaa\x49\x6a\xe4\xd6\x2d\xf9\xbc\x63\xc3\x0f\x05\x18\xc9\x3c\xf7\xe2\xd5\xa3\x33\x06\x5d\x2c\xe8\x94\x72\xd8\x84\x5b\x80\x4d\xe2\x6a\x0b\x74\x59\xac\x84\xc8\x8b\x07\x73\x46\xbb\x84\xbc\xcd\xab\x45\x86\x2d\xe5\xbe\x7a\x5f\x66\xe8\xfa\xe9\x2d\x2a\x41\x3f\xaa\x40\x3f\x6a\x34\x96\x73\x75\xde\x00\x90\x9f\x03\x21\x47\xc0\xbf\xb5\x0b\xba\xc7\x6d\x09\x24\xd8\x21\xe5\xf7\xd7\x57\x41\x6d\x0a\x74\x1d\xbc\x9a\xad\xb6\xc8\x54\xc6\xb5\xe1\xca\x05\xe7\xec\x99\x57\x45\xde\xb9\xe2\x5c\x92\x72\xd9\xeb\x2e\xe7\x25\x4e\xd7\xe8\xf5\xea\x17\x61\x81\x95\x82\xfb\xb2\x26\x11\x65\x75\xdc\x1d\xb2\x60\x64\x86\xa4\x13\xda\x2d\x27\x60\x6c\x6f\xd0\x31\x03\xc6\x29\x67\x41\xc3\x97\x1e\x54\xf0\x9c\xbd\xe9\x7f\xde\xa9\xfc\xa7\x34\xe0\x6d\xfd\x92\x27\x68\x86\x94\x37\x80\x0b\x45\x88\x3a\xe1\xcc\x75\xdb\x1e\x75\xff\x6c\xe1\x1f\xf8\xdb\xa2\x6d\xf9\xf7\x4f\xfc\xf9\x9b\x4c\xd3\xa9\x65\x7a\x2d\xa7\xca\x6b\xd1\xbf\xaa\xb4\x9d\xf2\xb1\x5e\xa0\x45\xff\x51\x7b\x5e\xcd\x69\xd1\xbf\xad\xbc\xfd\xb5\xf2\x06\x65\x3d\x7a\x57\xf6\x19\xda\x87\xbe\xb4\xa1\x1f\x3b\x2d\x3d\x8a\x76\x4b\xbe\xbf\x1f\x91\xec\x90\xec\x7e\xbb\xf5\xdb\x41\xea\xbe\xeb\xb1\xb6\x5b\xff\xd1\xe8\xab\x21\x57\x03\xf9\xfb\x7f\x33\x37\x3b\xff\xa7\x79\x5a\xcf\xad\xf5\x57\xff\xff\x4f\x99\xb0\x51\x2f\xd2\xf2\x3c\x10\x4d\xd8\xdf\x2a\x61\xee\xe0\xe3\x1b\x88\xcb\xbe\x16\xdd\x7c\xe6\x97\x31\x44\x43\xe2\x04\xd2\x10\x9b\xa2\xb7\x58\x2c\x30\xe0\xe6\xd9\x1d\xa1\xfd\x63\x8e\xf1\xbe\xa4\x08\xa8\x5c\x88\xf6\xe3\x9a\xf7\xac\x87\x7e\xe9\x3d\xeb\x6e\x5c\x4b\xbf\x88\x39\x6b\xed\xa2\x0f\x59\x9f\x8f\x0b\xed\x7c\x57\x37\x7e\x3d\xc0\xa3\x10\x74\x7c\x5b\x73\xa7\xeb\x84\xec\xd7\xe1\x06\x91\x5b\x44\x17\xbd\xba\x95\x9b\x01\x81\xee\xdf\xaa\x91\xfc\xd6\x09\xef\xbf\x0d\x6c\x25\x27\x66\x58\x06\x2e\x3c\x1d\xd5\x86\xf3\xfc\xc0\x56\x26\xe7\x79\x8f\x13\xed\xa8\x57\xde\x02\xb8\x47\xde\x16\xfb\x7e\xb7\x58\xa0\xb3\x66\xf6\xf3\xb8\x83\x7e\x88\x0f\x9f\x39\x3d\x27\x36\x3e\x6f\xe3\xb3\xa3\x4c\xfc\x9e\x1f\x56\x46\x1e\xb0\x37\x74\x20\x69\x07\xf4\x77\x33\x20\x85\xdd\xb5\x79\xb8\x18\x10\xba\x81\x37\x56\xdf\xea\x9d\x4c\x51\xe6\x0d\xd9\xed\x83\xa9\xaa\xb9\x7d\x8f\x4a\x77\xc8\x73\x51\xba\xa1\xbd\xeb\xbf\x6f\x2d\xc0\xe8\x2b\x2a\xbb\x2c\x79\x13\xf3\xd5\x69\xc8\x5f\x38\xa1\x5f\x8f\x39\xbd\xeb\xea\x4b\x38\xff\xcf\xd5\x22\xa7\x33\x4e\xe8\xc9\x31\xa7\xbd\x67\x0e\x73\x75\x53\xcf\xec\xf5\x30\x38\x51\xac\x2b\x0f\x63\xa9\x97\xee\x67\xe6\x5b\x34\x4a\x53\x74\xb4\xb4\x56\xe7\x67\x1f\xea\xdc\xfc\x5d\x87\x64\x9c\xbc\xaf\x81\x19\xb3\x7c\x75\x36\x38\xf4\xb5\xf5\x6e\x92\x12\x9c\x24\x0e\x93\x14\xac\xcc\x0d\x5f\xfd\xec\xe0\x88\x50\xdd\xcd\x1f\x27\xab\xdf\x2c\x9d\x04\xc6\xb9\x76\xfd\xcb\xff\x54\x24\x4e\xa5\xd3\xd2\xf3\x41\xcd\x6b\xaf\x76\x94\xeb\x5c\x3c\x4b\x08\x76\xbd\x4a\x22\xbe\x1e\xb1\x78\xb1\xf0\x2d\x15\x8e\x78\xc0\xcd\xab\x01\x21\x44\xe7\x5d\x69\xd7\x64\x23\xba\xf1\x5e\x4f\xf8\x6d\xe9\xf8\xd6\x0c\x08\x0e\xb7\x66\xa4\xc3\xad\x99\xcd\x9d\x47\x78\x8b\x88\x61\x98\xbe\x15\x31\x78\xac\x22\x98\xeb\x13\x97\x7e\x69\x68\xf8\xc0\x4e\x57\x96\x2a\x26\x20\x35\x17\xaa\xa7\xaa\x8c\xaa\x26\x94\x87\xdc\x2b\x51\xdb\x33\xd1\x9e\xb2\x77\x78\xd6\x6d\xce\x7d\x86\xde\xda\x9b\x21\xa7\x0f\xfc\xc5\x0e\xb9\x02\xe8\xb0\x8e\x3a\xa2\x3b\xce\x22\x27\x62\xe2\x72\x45\xe6\x85\xa5\x3f\x24\xe5\xf3\x8f\xe3\xf2\x44\x09\xca\x33\xc6\xbe\x1e\x29\xd4\x33\xc7\xd7\x1f\x3a\xcc\xe9\xe8\x4e\x9e\x61\xb9\x47\x1e\x63\xdf\xef\x94\x36\xdc\xc3\x50\x99\xb5\x29\xab\x0c\xc1\xa5\xd7\x67\x75\xed\xb7\x0a\xc4\x5d\xd8\xee\xbd\x88\xd3\xa3\x48\xf5\xe0\xe7\x09\x0b\xb5\x99\xfd\xf5\x48\x47\xeb\x3e\x50\xa6\xac\x03\xfe\xd1\x99\xdf\xf6\x85\xa9\xf0\x30\xe5\x2b\x7e\xe1\x2e\x94\x9b\x7a\xf4\xed\x87\x71\xc3\x98\x6f\x18\x5b\x11\xc7\x57\x93\xc3\xd7\x24\x2f\xab\xef\xfd\x29\xa4\x11\xb2\xbc\xb1\x46\xfb\xef\x1d\x6c\x09\x6e\x8d\xf6\x4d\xd5\xcf\xcf\xed\x16\xe5\x8b\x85\xeb\xd5\x8f\xfb\xfa\xc3\xd5\x3b\xf0\xe2\xda\x24\xd6\xd3\x1d\xfa\xfd\xb1\xce\x5f\xd8\x59\x86\xbb\x61\xc0\xcd\xed\x3e\xa9\x34\x51\xa6\x05\x5e\x25\x6d\x71\xeb\x62\x6e\x18\xfe\xa3\x19\xd0\x59\x1f\xba\xb8\x85\xcf\xb7\x13\x4e\x16\x8b\xeb\xb2\xee\x8f\x09\x6f\xa0\x1b\x92\x2d\x6e\x5d\x8f\x0c\xc3\x14\x8b\x45\xeb\x0b\x7c\x40\xeb\x12\x31\x78\x31\x0c\x68\x4f\x8e\xf4\x61\x08\xc2\x20\xf6\x01\x38\xc3\x10\x3d\x94\x43\x73\x30\x69\xd6\xf9\x0b\xf4\x4f\x70\x16\x3a\xdc\x0a\xf9\x84\x5f\xbd\xe6\x02\xa3\x76\xf4\x63\x16\x5a\x97\xfa\xc3\xf1\x1d\xfa\xcd\xfd\xb1\x92\x28\x64\xe2\xdd\x98\x05\xd6\xa5\x89\x49\xfb\x3d\x42\x6f\x8e\xb9\x35\xdb\x7b\x81\x5d\x3a\x1e\x85\xe9\x28\x13\x85\xe5\xf3\x42\xc0\x53\x5d\x95\xe6\xb0\x54\xa5\x0e\xc7\x8c\x3f\xa2\xef\x98\x01\x37\x67\x5f\x09\x3d\x3c\xe6\xb5\x63\x10\x06\x25\x80\x0e\x84\x63\xc6\xa6\x7d\xa5\x1d\x24\x81\xaf\x72\xd0\x24\x38\x5e\x1e\x5d\xea\x76\x0e\xba\x80\x87\x9e\x80\x43\xc4\x80\x0f\xcf\x57\x66\x40\x6b\xf9\xd3\xaf\xa8\x99\x24\x57\xa2\x96\xde\xd3\xf5\x04\xd4\x13\xef\xea\x4d\x64\x3d\x29\x9a\x84\x38\xc7\x73\x1f\x60\x89\x85\x3a\x55\x94\xa9\xfc\x85\x89\x32\x3e\x9c\x2a\x86\x58\x40\x77\x81\xea\x64\xfd\xc4\x5f\x6a\x05\x26\x5f\xab\x64\x98\x6a\x59\xf4\x8b\x4e\x42\x65\x2f\x9d\x5a\xb6\xc4\x74\x76\xd5\x62\x00\x95\x61\x96\x55\x91\x2d\xd6\x0c\x31\x7e\x9b\xcc\xdf\x62\x21\xef\x4c\xfb\x36\x07\x54\xe1\xe8\xa9\x05\x28\x92\x33\x5e\x1b\x24\xd6\xc4\x77\xc1\xad\xa2\xfa\x7a\xd5\x4f\x68\x4c\x17\x78\x0a\xca\xce\x10\x52\x3f\x83\x79\x5c\x11\x00\x3e\xf8\x0e\x5b\xed\x21\x03\xe4\x50\x89\x01\xf9\x89\xd6\x33\xad\x3a\xbb\x05\x5f\xac\x9c\x2f\x03\x00\xa2\x53\xfc\xcf\x00\xd6\xd2\x3d\xfe\xc3\xa8\x78\xe0\x93\xe0\x0e\x43\x92\xff\xd1\x80\x3d\xb0\x12\xa1\xfb\x69\xfd\xcc\x9e\x03\x02\x0e\x1b\x26\x9e\xc5\x9e\xbf\x78\x1d\xeb\x4f\xbb\x69\xfd\x89\x61\x0a\xfb\x2c\x68\xb6\x61\xf3\x44\x2c\x6c\x04\x9f\x30\x1f\xef\x86\xf8\x36\x7a\x09\xc3\x2e\xaa\x2d\xb8\x58\x1c\x67\x26\xb7\xd4\xaa\x3e\x00\x85\x94\x59\xc0\x1e\xb5\xe4\x45\x92\x3f\xec\x14\xea\xfb\xf0\x6d\x7b\x52\x7b\xd1\xf2\xf5\x64\x34\x49\x85\xcd\x81\xe2\xd1\x8c\x3f\x00\x23\xe3\x6f\x9b\x84\xc2\xe8\x6c\x98\x0a\xca\x73\x1b\xf6\x3e\xd5\x7b\xd9\xe6\xae\x98\x7b\x74\xf2\x60\x73\x6b\xf2\x40\xaf\xa0\xca\x95\xa0\x22\xb2\xa1\xe7\xf4\x36\xb4\xdf\x0e\x84\x7d\x6b\x72\xeb\xe4\x5f\x20\x87\x8e\x13\x7c\xc9\x73\xc0\xa8\xb4\x0c\x94\xa9\x0b\x5d\x1f\xd5\x0a\x9d\xff\x03\x0b\x0d\xee\xed\x80\x1e\xf8\xb6\x6f\x1d\xf8\xf4\x98\xdb\xbe\x75\xcc\xe9\xd5\x9d\xed\x5b\x57\x77\x52\x84\xe4\xd6\xe9\xa8\xbe\xfa\x93\xba\x14\xc7\x4b\x32\x32\xc5\x29\xa3\x80\xda\x3a\x33\x7c\xb6\x61\xf2\x3a\x72\x2a\x3b\xcf\xea\x36\xcc\x7e\xd1\x0f\xaf\x98\x41\xec\xb9\x6a\x0f\x56\xa5\xd1\xd6\x7b\x7a\x4f\x36\xa7\x82\x83\xbc\xc3\x19\x11\x50\x7c\xee\x06\xf3\x8f\xee\x86\xde\xf8\xbf\x6c\x4e\x27\x1c\x66\x8d\xd3\x5b\x9b\x5b\xb7\x52\x72\xae\x9d\x13\xa9\xe3\x23\xc5\x34\x61\xa0\x14\x8a\x21\xc3\x63\x06\x4b\xd0\xe9\x62\xaf\x22\x62\xef\xab\x07\x82\xb1\x3b\xe3\x8f\x3e\x37\x51\xfe\x8a\xcf\xff\x01\x5d\xbe\xb5\xf9\x6f\xbf\xf6\xe3\x44\x7e\x6d\x74\x6f\xe2\xa5\xe9\xc5\xc8\x8c\xde\x99\x17\x58\xb7\x9f\xe4\xcd\xd4\x8b\x3a\xf0\xbf\x12\x65\xc2\x62\x71\xa4\x3d\x97\x59\xb7\x84\x70\x0c\x84\x47\xc5\xbd\xe4\xa7\x60\x4a\xb8\xc5\xff\x45\x9c\x50\xa4\x62\x02\xa8\x8b\xff\x0b\xe3\xc0\x28\x41\xa5\x0e\xcc\x7b\x7b\x1c\x61\x39\x32\x0c\x33\x66\xf1\xbd\x19\x11\x42\x85\x61\x8c\xee\xcd\x18\x88\x24\xdd\x70\x85\x87\x74\x62\xfb\x46\xa9\x7d\xa2\xae\x00\x50\x93\x9b\xca\x9d\xde\xdb\x31\xb7\x23\x80\x9a\x18\x40\x49\xd4\xa1\xa5\xa8\x43\xcb\xf1\x50\x1b\x44\x48\x04\xf4\x85\x29\x44\x53\xbb\x51\xc1\xe9\xba\x52\xd3\x76\xe0\xcb\x43\xbd\x15\xa0\x70\x1e\xee\x61\x5f\xf6\xab\xe3\xd5\x88\x85\x9c\xc6\xac\xed\xc4\xbb\x90\x21\x4f\x98\x62\x7d\x5b\x81\x49\xb1\xd7\x94\xbf\xcd\xb6\xe7\x24\x30\xe4\xf2\x56\x38\x21\x64\x09\x2c\x12\x62\xbe\x88\xb5\x24\x08\xa6\x8c\x5b\x37\xa7\xa6\x4f\xdc\xe1\xdc\x63\x18\xd9\x37\x66\x2d\xa4\xb7\x9b\xa3\xac\x98\xf0\x2c\x10\x8f\xd1\xe6\xe4\x1a\xa7\xae\x3a\x17\x6e\xff\xeb\x1f\x28\x89\x12\xa2\xef\x45\xe4\x99\x18\xde\xa7\x59\x3e\xbd\x45\x5a\x0b\x00\x90\xd2\x98\xd0\x84\xbd\x4d\x43\x9b\x5b\xd3\x90\x76\x61\xaf\x75\x27\xf4\x0e\x70\xf9\x5d\x9f\xfe\x38\xb1\x39\x40\x0b\xcd\x24\xfe\x02\x6e\x93\x53\xb5\x43\x72\x16\x5b\x7c\xc4\xf5\x4c\x52\x35\x91\x34\xc2\x0f\xf4\x05\x7c\x20\xa1\xbe\xb5\x1d\x10\x59\x2f\x93\x27\xc3\x2c\x33\x0c\xf3\x62\x64\xe6\x78\x79\x50\x83\x3a\x6e\xdd\xb2\x41\x0d\xae\x10\x46\xb1\xe0\xe9\xe8\xb7\x05\x1d\xae\x63\x2b\x5a\x2f\x6c\xa3\xca\x29\x13\xb1\x29\x84\xf3\x0f\xda\x9a\x70\xcd\x70\x5a\x79\x6e\xc2\xbb\x9e\xb6\x51\x64\xa6\x95\xe3\xf9\xb2\xb5\x95\xcf\x55\xcf\xaf\xb5\xf4\x57\xe6\xe3\x16\x73\x3e\x1e\xe7\x6f\x3f\xf9\x7f\xdb\x79\xf8\x15\x2e\xdd\xbd\xcb\xa3\xc4\x0b\x98\x73\x10\x60\x7e\x31\x85\xff\xe9\x47\x3a\xd8\xfa\xe9\x88\x72\x62\x17\xfa\x2c\xb0\x86\xd7\x14\x8a\xde\x93\x01\xa3\x2e\x6c\x19\x6d\x9e\xf2\x95\x3d\x0b\x0d\x7c\xb4\x67\x73\x85\xec\xf5\x5e\x5b\xd9\xb9\xf3\x35\xcd\x50\x47\x13\xfa\xce\x2a\x9d\xef\x94\x6f\x72\x43\xb5\x4a\x66\xa2\xd9\x06\x1a\x50\xf1\x00\x75\xc6\x4a\x8a\x83\xbe\xd5\xe3\xee\xc0\x2b\xb9\x9f\x46\x9b\xc8\x18\xb6\xaa\x81\x92\x41\xb1\xab\x6f\x56\xed\x33\x5d\x3d\xd4\x4f\x30\xc8\x8b\x98\xa3\xa2\xbc\xec\x4d\x48\x55\x10\xc3\x46\x5b\x45\x02\x93\x84\x24\x3a\xd0\x85\xf8\x8b\xd9\xa6\x21\x5e\x10\x70\x90\xd2\x7a\xea\xca\x0a\x24\x35\xa0\x49\x9f\x43\x07\x17\x73\x78\x51\x76\x77\x5d\xc2\x0c\xb4\x5d\x55\xb4\xe7\x54\x34\x01\x4b\x73\xcf\xdd\xf6\xe8\xad\x44\xfd\x7d\x01\x04\x02\x97\x4c\x65\x5a\x67\x13\xb7\x05\xeb\xd6\xda\x65\x81\x61\x04\xbb\x2c\x44\xd0\xad\xb3\xda\xb3\x93\x95\x10\x0c\x82\x4b\x04\x78\x3d\x5a\x8b\x20\xa6\xa5\x57\xeb\x78\x1b\xe4\x5c\x1a\x58\x33\x82\x71\x5e\xa0\xac\x8e\x1f\x9d\x05\xe6\xf3\x15\x72\xa8\xd7\x23\xd8\x2b\x33\x02\x34\x7b\x25\x55\x15\x6f\xb6\x31\x97\x38\x12\x6b\xfb\xd6\xf4\xd8\xf4\x01\xd5\xf8\x80\x67\xb6\xda\x0a\x9f\x00\x67\x82\x2d\x83\x84\x2e\xfb\x25\xb9\x00\x19\xf6\x5a\x9b\x02\x01\xb9\x5e\xed\x72\xd9\xe1\x67\xe5\xc8\x4c\x70\x0a\xe2\x39\x02\xaf\x6f\x8d\x73\x53\x29\xfd\x87\xec\xe5\x0a\xf1\x1c\x91\x0b\xf1\x51\x53\x5a\x8e\x98\xd1\x98\xe1\x48\x82\x32\xc6\x4f\x5f\x98\xb1\xf4\xdf\x1a\xa1\xcc\x4f\x30\x32\x06\x3a\xc6\xaf\x3c\x1e\xc0\x7a\x05\xf4\xd6\x8e\xd5\x86\x42\x0a\xfe\x6e\x25\x24\xcb\xf2\x76\x7f\x2c\xf1\x2e\x05\x41\x8b\x82\x60\x45\xe5\xde\x78\x3d\x5e\x2c\x24\x73\x8c\x80\x38\x37\x8c\x03\x09\x4c\xd5\xda\x01\x7d\x76\x1e\x35\x7b\xe9\xb3\xcb\xd1\x5a\x78\x46\xcd\x55\x2b\x93\x41\x09\xf4\x86\xa1\xed\x17\x25\xe4\x4b\x8c\xfa\x04\x13\x71\xfe\x42\x0c\x63\xe7\x8b\x94\x1c\x4d\x9f\xdd\xdf\x9b\x3e\x95\x32\x23\x91\xe2\x21\x4c\xa5\xaf\x1e\x4f\x8f\x4d\xbd\x22\xe5\xa4\xca\xf5\xad\xa6\x56\xbc\xe7\xab\x6a\x8e\x6f\x14\xd6\x04\xd6\x2c\x80\x39\xf4\xeb\x53\xe8\x7f\x00\xe9\xd1\xc7\x73\x79\x50\x87\xea\x90\x53\xa9\x6c\x0a\xbc\x7b\x39\x4f\x32\x82\xf5\x6a\xb8\xf4\x90\xb5\x76\x79\x33\xe8\xb4\x6d\xe0\xdf\x59\xf8\x09\xb7\x77\xf8\x89\x13\x27\x90\x67\x05\xfc\x13\x3c\x40\x21\x9c\x0f\x1d\x33\x4f\xfb\x91\x08\x6a\x16\x2d\x01\xe3\x4b\xe2\xf8\x5b\x0a\x39\xa9\x2e\x5c\xac\x7e\x93\xc6\x3a\xdc\x8a\x72\xb0\x8e\xee\x9f\xbe\x8d\xdc\x54\x78\xee\x89\x67\x0a\x8a\x6a\xe1\x55\xfb\x68\x27\x50\xef\x27\x0d\xee\x4d\x41\x83\x46\xf8\xc9\xa7\x31\xa0\x38\x54\x43\x5b\xd6\x96\x67\x45\xb4\xd6\xac\xb2\x62\x97\x56\x44\x64\xc5\x93\x38\x01\xec\xc6\x00\x76\x63\xa0\x77\xa3\x64\x91\x5e\xae\x60\xdb\x08\x2b\x4e\x51\xf9\x5b\xdf\xc3\x87\xd6\xcd\x1e\x05\xf9\xff\x6a\xaf\xd9\xa6\x09\x1e\xd8\xed\x0f\x4d\xe0\x0f\x28\x30\x1f\x4a\x8f\xf5\x39\x26\xea\x56\x8e\x46\x2c\xa6\x31\x4b\x9d\x50\xf2\x36\xaf\x43\x53\x69\x00\x56\x5f\x05\xf6\x95\xa2\x8a\x79\x42\x05\x6d\xb7\x68\x08\xbc\x12\x74\x46\xea\xc2\x39\x25\x11\x04\x46\x4d\xb0\x96\x23\xa4\x9e\xa5\x40\xf5\xc7\xd0\x15\x1e\x8d\x94\x26\x29\x2e\xb8\xa6\x6f\x01\x80\x98\xb4\xbe\x04\x7e\x5a\x07\xed\x92\xe0\x24\x75\x5c\x11\xa6\xea\xb3\xb6\x5f\xb3\xed\xd9\xf2\x17\x8b\xf6\x17\xf4\x53\x8d\x8a\x3b\xdc\x9a\xe5\xa4\x76\x81\xa9\x6d\x90\x7c\x17\xef\x41\x7d\x40\x84\xb7\xe4\x33\x60\xcd\xbc\xd1\x26\xd2\xfb\x0a\xde\x15\x30\x99\xa7\x06\x10\x29\x5f\xe0\x71\x13\xe4\x30\xf2\x39\x00\xec\x2a\x1c\xd1\x6c\x6a\x5e\x13\xf3\xe3\x66\xf0\x49\x10\xa7\xbd\xab\x54\x70\x65\x69\xc3\x40\xed\xce\x84\x2c\xab\xd9\xf0\xe5\xfd\xac\x50\x21\xa4\xe1\x73\xc2\xb3\x6e\x95\x76\x02\x74\x07\x75\x52\xe3\x06\x0b\x28\xd6\x96\xed\x13\xe2\xc4\xec\x7c\x64\xfa\x04\xba\xa6\x1d\x94\x5b\x22\x6a\xc6\xd8\x29\xf9\x81\xb6\xd2\x35\x6f\x34\x88\xee\x58\x03\x3a\x46\xeb\x1d\x13\x51\xd5\x31\xbd\x2d\xea\xb1\xdc\xbb\xff\xcd\xb4\x56\xa6\x47\xbe\x72\xc6\x03\x8c\x8a\x40\x83\x4f\x17\xa3\x4d\x03\x8b\xae\x06\x1d\x37\x1a\x04\x0a\xc6\x1e\x96\x50\x85\x61\x07\x87\x86\x61\x16\x57\x78\xf4\x23\x0c\xa3\xb8\x32\xc5\xe7\x10\xc4\x14\x0c\xd9\x0b\xc3\x43\x87\xd3\xae\x6c\xc7\x03\x01\x3c\x42\xff\xf7\xb2\x6b\xef\x16\x3a\x61\x2b\xeb\x4c\x95\x4b\x6e\xd7\xa3\xa9\x03\x43\x50\x28\xe2\xea\x58\xb1\x22\x33\x0c\xe9\x05\xaf\xf0\x0c\xf2\x02\x96\x12\xfa\x56\x59\xea\xf1\xe2\xe2\x48\x3d\x5e\xe9\x54\x42\xb8\xb1\x47\x3e\xcb\xe7\x76\x8b\x50\xad\xcb\x5b\x55\xa9\x0d\x1c\x95\xfc\x61\xec\xb8\xd8\xb0\x23\x7d\x37\x6e\xb4\x3d\x6b\xc2\x3f\x63\xf2\x84\xd3\x2d\xb3\xf5\x25\x21\x38\x01\x89\xd4\x58\x6e\x7f\x91\x92\x4b\xb3\x8d\x01\xef\xb0\xc2\x2d\xa9\x2a\xc3\x10\xb1\xc9\x94\xb5\x9c\x54\x76\x31\x85\x69\x86\xae\x88\x46\xf4\x29\xf9\x14\xba\x69\x15\x86\xb4\xee\x51\x7c\xaf\x8e\x8f\x65\x58\xc9\xda\x51\xd2\x81\x8f\xc8\x54\x32\x9f\x07\xbe\xe6\x3f\x0f\xfc\x5f\x8b\xd6\xdc\x1a\xc6\x7c\x59\x3b\x54\xaf\x2c\x5d\xe5\xa7\x94\x53\x1e\xeb\x6e\x0c\x5f\xb8\x1b\x6f\x31\x56\xc4\xf0\x28\xb9\x11\x45\x61\xef\xc6\xe5\x79\x1d\x90\xdb\x77\xf9\xfd\xb8\x96\xff\xe3\x7d\xfe\x8f\x78\x85\xec\x1c\x57\xe1\x59\xd8\xc9\x7d\xc9\x55\x92\x92\x8b\xb5\xb5\x44\x15\x54\xf9\xfc\x45\xe7\xf3\x17\x5b\x49\x5a\x8e\xcf\x24\x41\xf0\x9b\xac\x4d\x83\x06\x6b\xd7\x79\x46\x54\x8b\xaa\x28\x0b\x32\x96\xd2\x00\x03\x2f\x21\xee\xc6\xa4\x36\x66\xe2\xb3\x95\xf1\xd6\x03\x38\x54\x19\x82\x5b\x51\x0b\x10\xa2\xcf\xf6\xee\xcd\x50\x2a\x51\xa2\x97\x77\x8c\x02\xd6\x22\x4b\x58\x0f\xb9\x74\x98\xac\x0e\x18\xfb\xc2\xf4\x09\x8d\xb8\x19\x20\xe7\x03\x65\xe4\x32\x4a\x4a\xee\x03\x86\x0d\x96\x2b\x93\xf4\x52\xdb\xf4\x9a\xb3\x31\x8c\xac\x94\x36\x49\xf5\xf2\x14\x10\xcd\x7d\x3d\x4b\x12\xf1\xed\x61\x5d\x28\x25\xd4\xc2\xc9\xc9\x02\x33\x70\x5f\x3d\xfd\x88\xca\x0f\xcb\x55\x22\x87\xd4\x0d\xe9\x9c\xe0\xd6\x6b\xd7\x1a\x65\x33\x31\x2e\x44\xf9\x61\xc5\x1d\xbc\xcb\x7a\x0a\x88\x83\xf7\x06\xa1\xfa\x15\x9a\xf2\xe1\x69\x4e\xcb\x6e\xd3\xf8\x3d\xd1\xa3\x09\x05\x31\xdf\x77\x24\x41\xe4\x43\x47\x2a\x6b\x5d\x67\x66\x2a\x0f\x48\xbe\xf5\x09\x71\xfc\x47\xfd\xfa\x3a\xe5\x44\xcb\xdf\x67\x65\xa1\x8b\x3e\xc6\x6a\xac\x6a\x7d\xef\x63\x80\xc6\xeb\xda\x49\xcb\x25\x34\x94\x2d\x16\xf9\x62\x51\x2c\x16\xd3\x4e\x62\x75\x6f\x59\xa9\x93\x96\xd1\x22\xe0\xa9\xe8\xf3\x60\xf2\x38\xb6\x73\x9a\x8f\x45\x34\x7a\xb1\x0b\x5a\x4c\x23\x78\x98\x2e\x6d\x33\xab\x7d\x71\x0e\xfd\xa0\x4f\x23\x33\x23\x86\xe1\x0f\xcd\x84\x66\x84\xd6\x0b\xec\xd5\x0b\x04\xaa\x80\x99\xb1\x54\x9f\xf5\x77\xa7\xf2\x18\x33\xb1\xd2\xdc\x7c\x93\xf1\x60\xec\x4c\x07\x86\xd9\x28\xcf\x0e\x33\xf7\x21\xf0\x68\x15\x1e\xc6\xce\x6a\xb1\x62\x96\x84\x1e\x97\x9f\xdc\x9f\xe2\x59\x52\x38\x04\x6c\xe5\x24\x2c\xb1\x8a\x07\x93\x38\x29\x73\x3d\x80\xc7\x90\xa0\x3a\xd6\xde\xd0\x0c\xa9\xa0\x01\xf0\x23\x81\xe4\x46\x02\xeb\x39\xa6\x11\xde\xe1\xd0\x00\x39\x88\xbf\xb7\xd0\xb2\x78\x8d\x81\x08\x58\xcb\x09\xa4\x32\x56\xd0\x68\x90\x90\xa5\x2e\xc6\x46\x0f\xa5\x71\x4f\xa4\x21\xc3\x3d\xd8\x43\xa3\xab\x15\x96\x42\x20\xbe\xea\x0b\x33\x52\x7c\x44\xb8\xc2\x47\xdc\x58\x59\xf0\xee\xe6\xa8\xc4\x7f\x0a\xbd\x18\xc6\xe5\xb5\x0e\x19\xa0\x5d\x5f\x09\x84\x65\xed\x97\xfc\xa1\x2f\x23\xf9\xad\x5c\x2e\xbd\x3b\xee\xae\xcb\x72\x34\x60\x56\xab\xfd\xc9\x04\xa1\xaa\x09\xe2\x15\xb0\x14\xf0\x0b\xf8\xa1\x26\x65\xe3\x35\x65\x11\x94\x72\x73\x11\x34\x03\xda\x22\xc4\x69\x7d\x81\xaa\xba\x74\x29\x68\x43\xa2\xe6\x7d\xad\xa7\xa0\x81\x85\x97\xcb\x8d\x1b\xab\x2f\x3e\xba\x8d\xd3\x1e\xd2\xd4\x69\x44\xc3\x2c\x25\x5a\x52\x9e\x4c\x7c\x52\x17\x98\xea\x4c\xae\x1c\xe1\xa0\xb2\xfb\x96\x77\x3e\xfe\x0a\x0d\xae\x1f\x5b\x05\xca\x15\x9b\xdf\x31\x7d\xc9\x16\xc9\xb3\xf7\xcf\x80\x3a\x1b\x80\x26\xed\xaa\x4e\x2d\xba\x1e\x2e\x5d\x00\xeb\x74\xf2\xaf\x5f\x19\x10\xe8\xa3\xe8\xba\x3c\x49\x6c\x74\x5a\x9b\xe7\xff\x6e\xcc\xba\xf2\x8a\x8c\x63\x73\x35\xd4\x1b\xeb\xfc\x1f\x2b\x2d\xf0\xd2\xa5\x9c\x9e\x28\x18\x8a\x9e\xa8\xcf\x6a\xa2\x1a\x6a\x0a\xe5\x98\x3e\x9a\x69\xf9\x19\xfd\x91\xeb\xa3\x5f\x1a\x47\xf4\x85\x1c\xd4\xc9\xbf\x24\x78\xd5\x54\xf0\x24\x7c\xe9\x28\x10\xee\x91\xa7\xa2\x40\x88\x03\xbb\x9c\x3d\x09\x49\x4d\xeb\xcf\xe5\x5a\x52\x2d\x1c\xcb\xf5\x8a\xa5\x44\x79\xb2\xef\x7f\x29\xef\x89\x0c\xc3\xdf\x2d\x0f\x67\x6c\xff\x4b\xe9\x37\x57\xd2\x50\xc8\x96\xae\x44\x4b\xb2\x59\x35\x7f\x34\x5c\x35\xc4\x90\xeb\xfe\x05\x38\x50\xf9\x58\x15\x1d\xaf\xdc\x2f\x69\xda\x2e\xf4\xc5\x54\xfd\xf8\xf5\xf1\x7a\xb1\x78\x7f\x24\x5b\xdf\x7e\x87\x1f\x19\x63\xd3\x4c\xdd\x0d\x47\x7e\x69\x57\xf3\xe3\x4e\xdb\x74\x74\x9f\xca\x28\x46\x5f\xf3\xd2\xc5\xf3\xf7\xb0\xf4\x8f\x79\x7d\xa5\x4d\x91\x6f\x33\xae\x6d\x91\x6f\x32\xae\x6d\xb2\x87\x19\xd7\x46\xd9\xc2\xe7\xac\x36\xc9\x47\xf5\xe3\x70\xb5\x64\xa1\x5a\xaf\x87\x31\xd7\xf1\x38\xfc\x66\xbb\xc9\xc9\xff\x06\x6b\x71\x3a\x36\xf9\xb2\x6a\xea\xeb\xb0\x0a\x54\xa3\x63\x0b\x59\x3f\xee\x80\xc7\x6c\x91\xcf\xa6\xff\xa9\xe6\xcf\x71\xe7\x8b\xca\x5a\x2c\x76\xbe\xf8\x75\x76\xa8\x3e\x3b\xd0\xd2\x91\x34\x80\x92\xa5\xd1\xaa\xfb\x36\xe3\xf5\x93\xf6\x36\x80\x03\xe6\x76\x38\x4c\x9f\xad\x0d\xb3\x7e\xdc\x49\x2e\x1b\x9f\x50\xa0\xfa\x14\x36\x39\x4c\x0b\x9a\xf8\x39\xfe\xae\xaa\xe7\xf8\x0d\x16\x56\x87\xf3\x3f\xee\x5c\xdf\xa3\x29\x4b\xac\x0b\xbc\x07\x1c\x66\xbc\xa3\x8f\xe6\x77\x3e\x25\xd6\x2d\xdd\xf9\x64\xe2\xa7\x9a\x89\x75\x4b\x88\x1d\xd1\x0c\xc0\xc1\xe7\x66\x22\x55\x1b\x29\x1a\x71\x66\xd6\x44\x38\xe9\x6e\x64\x18\x66\xbe\x92\x1f\x51\x41\xac\x89\x20\x52\xb3\x14\x0d\x14\xa4\x2e\x65\x62\x5d\xd0\x5b\x1b\xbe\x70\xfd\x97\x1d\x48\xb2\x20\xab\xc8\x80\x9b\x99\x15\xdf\xd1\x94\xbf\x3e\x4e\x27\x76\x46\x27\xc2\xce\x97\xa5\x7b\xf8\xb8\x5a\x88\xc1\x7b\x1d\x7a\xff\x53\xe0\x84\xac\xbd\xeb\x77\xda\x76\x58\x9b\x3c\xd7\xa3\x4a\x14\x40\x29\x40\xcd\x81\x5c\x04\x0e\x70\xd7\x88\x3f\x05\x34\xfe\x04\xa0\x0a\x32\xf9\x3d\x5e\x4f\x2c\x1f\xee\x57\xae\x88\xea\xbb\x14\x78\x7e\xeb\xb6\x62\xb3\xa3\xda\xe2\x9e\x94\x10\xc2\x59\xd5\x49\x0e\x40\x5d\x96\xbf\x5e\x55\xdf\xac\x9a\x7e\x2b\xa6\xb6\xb6\xcd\x2b\xa6\xd4\x77\x6f\x5f\x3c\x0c\x4f\x0c\xf4\xd3\xe6\xd6\x44\x2c\x16\xbe\x35\x11\xcb\x25\x85\xa2\x2d\x48\xdd\x6a\xd7\xd5\x3d\x4f\x91\xd5\xd6\x83\xf7\x81\x4b\x66\xdc\xba\xbe\x5a\x2c\xda\x34\x64\x65\xe7\x40\x94\x71\x42\x6b\x22\x00\x7d\x70\xd8\x66\x0e\x79\xf3\xa5\x61\x69\x09\xe3\xa5\x2b\x09\xdf\x51\x55\x05\x0d\xc8\xd2\x57\x76\x9d\xd0\xac\x0c\x2c\x00\x0d\x39\xe4\x2d\xa8\xd5\x17\x55\x7d\x28\x5f\xd6\xf7\xf5\x62\xbe\xbd\xde\xda\x82\xde\xbd\xd8\x3e\x2d\xa6\x76\x68\x15\xd3\x4f\xa2\xb6\xd1\xce\x56\x9c\xfe\xd7\xa7\x12\xc3\xb6\x7e\x30\x83\xa5\xc5\x9f\xe8\xb4\xed\x96\xbe\x88\x83\xf7\x92\x9e\x35\x82\x25\x6d\x91\x5d\x74\x3e\xf3\x49\x27\xbf\x89\x73\x9b\xd3\x73\xc1\x57\x4f\xe2\xbf\xae\x6e\x52\x09\x4a\xda\x9c\xf2\x7b\x88\x4c\x6f\x75\xd0\x15\x49\x23\x47\x98\xe7\xa0\x66\xd6\xb3\x32\x0a\x10\x19\x9d\xad\xd8\x3a\x07\xa4\xea\xef\x46\xbf\x9e\x71\x28\xa8\x2a\x27\xaa\xf2\x32\x7a\x37\xeb\xb2\xa9\xb5\x79\x4f\xaa\x56\xa0\x46\xd9\x4a\x24\x5b\xa9\xe6\x3e\x81\xb9\x8f\xa8\x38\xb7\x63\x4b\x9c\xd7\xc3\x0e\x9d\xbf\x53\xdd\x3c\x18\xba\x27\x5e\x65\x47\x16\xdd\x9b\x6e\x3e\xe3\x8d\x90\xfa\x87\x1e\x46\x0c\x50\x05\x95\xda\xd6\x2d\x1b\xd4\x35\x97\x8e\xe6\x52\xbd\x6d\x45\xe7\xed\x78\xce\x09\xfd\x9b\x34\x1a\x6d\x7d\xe1\x8b\xc5\xbf\x5a\xbb\x9c\x70\xf6\x37\xa5\xa7\x95\x25\x25\x8d\xc8\xbf\xb1\xde\x7d\xe9\x61\xe3\xfb\x5f\x6b\x1a\x86\xd3\xd2\xaa\xee\x62\x2d\xeb\xe2\x99\x13\x1a\x96\x1e\x16\x6f\x57\x73\xbf\x41\xee\x8e\xca\xec\x9f\xad\x66\xbe\xce\xa5\xa6\x9e\x24\x27\xb7\xab\xaa\x58\x73\xc8\xbc\x38\xe6\x34\x1b\xeb\xc6\x2f\xd7\x3e\xfd\xf3\x59\x73\xa7\xd3\xd0\x7d\x0d\xb4\x1b\xc7\x6f\x7f\xb1\xe3\x7a\xb1\x83\x27\x4e\xe8\x56\x9b\x2c\x7f\x98\xe7\x43\x7a\x30\x24\xce\x0d\x3b\x57\x0a\x5c\xfe\xf6\x07\x3e\xfd\x9f\x66\xd2\x33\xad\x9b\x07\x1e\x06\x9d\x99\xfd\x5c\xb3\xfd\xab\x8a\x56\xa6\x7f\x5c\x46\x3e\x57\xae\xd3\x50\x2d\x83\x63\xa0\x6f\x9b\xab\xc8\xdf\xbe\x74\x39\x7c\x63\x6d\xdf\xbc\xb3\x25\xd4\xee\x6e\xf4\x77\x35\xbe\xe5\x20\xd2\x29\xad\x3b\x39\x4a\x75\xfa\x5f\x53\x2f\x44\x07\x63\x2a\xda\x7f\xaa\x74\x6d\xef\x8f\x3b\xba\x94\x0a\xf0\x9f\x61\x35\x20\x27\xe2\x59\xf2\x0e\xd0\xdd\xf2\x66\x5d\xad\x3b\x55\x8b\x4c\xd5\x72\x52\xb5\x72\x54\x2d\x12\x55\x2b\x41\xd5\x54\xd3\x5f\x4c\xcc\xf7\x6f\xa6\xa0\x9c\x66\xd6\x54\xca\xf3\x4b\x90\x23\x55\x5b\x80\x26\xa7\x74\x56\x6a\x40\x3e\x3f\x40\x7f\x0d\x63\x2b\xac\x9c\x07\x28\x20\x27\xea\xb7\x33\x63\xdf\xb4\x8d\x18\xb1\xa7\xec\x74\x68\xe6\xf2\x34\x61\x53\x3b\x53\x07\x91\x68\xe0\x7d\x8a\x54\x6c\x8a\xfb\xdb\x4f\x05\x62\xa1\xb1\x34\x34\x54\x75\xe8\xd4\xba\x7b\xf9\x52\xe0\x29\xdf\xd4\x2a\xa6\xa4\xde\x30\x9d\x4a\x05\x3f\x6c\xb7\x9e\x81\x1c\xfe\x9c\xe1\xa0\xa4\xea\xa0\x8e\x77\xaf\x56\x3d\xe4\x84\x76\x55\xd0\xd5\x9c\xf6\x94\x30\xd3\x95\xda\xa0\x91\x8c\xb2\x4d\x08\xdd\x38\x5b\xcf\x51\x9a\xa1\xf4\xf4\x3d\x1c\x62\x9c\xfe\x2b\x19\xa7\x7f\x06\x28\xf0\x08\xa3\x62\x37\xba\xa8\x53\x39\x83\x76\xca\x94\x1b\xdf\x76\x7b\xcd\xae\xb7\x5c\xd2\x0b\x60\x49\x2e\xca\x40\xff\xdf\x7b\xd8\x80\x2c\x12\xa2\xcb\xc3\xd6\xee\x1c\xe9\x9d\x61\x54\xc5\xae\xe5\x77\xe2\x46\xbd\xa0\x2f\x8f\xa7\x19\xfb\xd6\xab\x97\x1d\x1c\x62\xd9\x64\xa5\x6c\xf0\x71\xd9\xc3\x03\x2c\x1b\xc8\x20\xf8\x2b\x35\x60\x4e\x2f\xd9\x05\xc6\x0e\x5c\x2c\xa6\x86\xd1\xda\x85\x15\xe9\x54\x95\xd5\xe0\xa3\xfa\x00\x89\x3d\x53\xed\x9f\xea\x3b\xb8\xa1\x6c\x04\x16\xb9\x34\xc9\x79\xe0\xac\xed\x3c\x70\x6c\xd1\x79\xe0\x8d\x06\xf9\x65\xb3\x67\xd8\xac\x13\xc9\x56\xa0\x01\x5d\x59\x4e\xd3\x7a\xf5\xb5\xa9\x9a\x48\x35\x60\xd9\x88\xa4\x48\xb7\x17\xe6\x05\xe5\xee\x9e\xd7\x04\xf0\x38\x0d\x3c\x42\x37\x06\x9c\xc5\x00\xa3\xa8\x7c\x72\xc4\x9d\xa9\x61\x98\x47\x9c\x01\x05\xcc\xe9\xd4\x7a\xbd\x45\xc8\xa4\x03\x3c\xaa\x6d\x11\x2a\xe5\x4d\x05\xfe\x86\x71\xc4\x11\x6e\x65\x25\x09\xa6\x74\x05\x74\x2f\xdc\x4b\x8f\x9d\x82\xdc\xcf\x4e\xfa\xdc\xbc\xa0\x2d\x3a\xa4\x11\x95\xde\x3a\x30\x18\xfd\xbb\x4e\xe9\xe9\xe3\x4c\xa5\xd0\x7a\x27\x65\x1c\x03\xec\x8f\xe4\x75\xf4\xac\x60\x92\x9c\x94\x01\x77\x1f\xb8\xd7\x60\xf8\xdb\x94\xee\xe9\x43\xf2\x96\xb3\x21\x6f\x0c\xb8\xdb\x2a\xa7\xb3\x05\x15\xc3\xb2\x5e\xc1\x42\xa8\x68\xed\x71\x7a\xf0\x62\x16\xb4\x70\x8b\x3d\x6f\xb1\x00\xcc\x74\x71\x61\xb6\x40\xa2\x97\x69\xd6\x2b\xcb\x4b\x35\xfd\x50\x6e\xcc\x69\x47\x27\x5c\x8d\xcc\x23\x6e\x89\xf3\x0f\x6e\xf4\x50\x89\x0a\x19\xbb\x2a\xb3\x86\x9f\xde\x5e\xec\x16\x7d\xb5\x07\xdc\xe5\xd6\xf5\x5f\x8d\xa0\x34\x23\x92\x48\x11\xef\xb1\x97\x4b\xdc\xe9\xf5\x5b\x40\x2e\xd9\x6b\x6e\x5d\x54\x76\x4a\x5c\x1b\x29\x29\x1c\x4d\x8f\x6d\xbf\x32\x44\x28\xfa\x74\xa3\xf0\x6d\xd9\x97\x89\xe8\x70\x85\x8d\xb5\x61\x82\x1c\x31\xb7\x6e\xe9\x90\x13\x65\x9c\xa4\xbe\x0b\x80\x0e\x73\x87\x13\x49\xf5\xb5\xff\x03\x6f\x76\x69\x6d\xf3\x2b\x0a\x78\x3a\x62\x27\x9a\x16\x09\x3a\xe4\x8d\x07\xde\x0c\x69\x48\x67\xd6\xdd\x0b\x21\xce\x90\x37\xd8\xf9\xc8\x1c\x70\xb2\x0c\x59\x0c\xc8\xab\x5a\x62\xf4\x1b\x02\xeb\x94\xff\x0e\xc1\x49\xfe\x58\x67\x14\x3e\xcb\x61\x38\xa9\x7d\x4e\xdf\x2f\x2f\x7c\x0d\x17\xb8\xaa\x30\x08\x58\xd1\xaf\x5e\x8f\x71\x37\xbd\xd8\x92\x42\x36\xe4\x47\x3e\xef\xd0\x57\x7b\xc8\xcb\xa5\x90\x5f\xc6\x49\xce\xad\x63\x68\x6f\x49\x9c\x94\xc5\x56\x2a\x62\x74\xbf\xe7\x7a\x4e\x4b\x59\x1f\x9a\xf0\xcd\x14\x26\xca\xb7\x46\x39\x1e\xd7\xf6\x53\x73\xc8\x9b\x09\xd5\xe4\x77\x28\x07\x73\x88\x80\xef\xb3\xd8\x42\x3b\x8c\x2e\x1f\xab\x86\xfc\xaa\x21\xbc\xe4\x91\x26\x0a\xb2\x15\x85\xbf\x3e\x68\x8b\x06\xf0\x3d\x4e\xc8\x8a\xf5\xf1\x37\xed\x8b\xb1\xf4\x9c\x26\xcf\x56\x7c\x53\x82\x4b\x48\xdc\xb1\xf7\x29\x6a\x88\x4f\x71\xe5\x6d\x4d\x7a\x07\x5e\x6a\x6f\x65\xd3\x10\x8f\x00\x81\xaa\x03\x53\x5c\x20\x53\x9c\x7f\x83\xbd\x7c\x67\x05\x8f\x85\x7a\x03\x49\xb3\x7f\xe6\x24\x8b\x85\x99\xb0\x9d\x2f\x5c\x11\xc2\x4e\xdb\x56\xb2\xb3\x68\x70\x2b\xce\xc9\xe7\x48\x05\x76\x90\x25\xa4\x44\x8b\x8f\x28\xd2\xd6\x6c\x7a\x53\xd6\xa2\xd2\xc0\x50\x37\xe6\x64\x0d\x96\x90\x54\x87\x9c\x52\x4d\x64\x1e\x5a\x08\x67\x2c\x50\x76\x9d\x43\x51\x19\x3b\x97\xf4\xca\x96\x70\x9b\xd2\x8c\xd0\x12\x6a\xed\x14\x38\xe3\xa4\x2e\x0b\x9c\x7c\x24\x0b\xf0\x8a\xe9\xa9\xcf\x40\x82\xd2\x7c\x8b\xea\xfe\x51\x41\xb9\x25\x6e\xa5\x2f\xb7\x66\xf4\xa9\x36\x3f\xe4\x73\xec\xa8\xb8\xe7\x61\x7d\x88\xae\xe7\x24\xd5\xf8\x92\x06\x53\xdf\xcc\x98\x4c\x4c\x3c\x8a\xfb\xc1\xa7\x99\xb4\x21\x84\xf5\x08\x69\x1b\xf8\x18\x39\xda\x4c\x6f\x7c\x2e\x77\xbd\xeb\xc1\xfe\x6d\x72\x60\xab\x01\x01\x14\xfd\xca\x12\x09\x37\x4b\xf6\xe1\xde\xcf\xac\xdb\xa6\xf5\xe7\xa7\xf8\x53\x84\xec\x61\x6b\x37\x57\xc4\xb9\x28\x77\x49\x0b\xcd\x1e\xd5\xb6\x08\xab\x1d\xd1\xc2\x0d\xa1\x65\xff\x4c\x22\xa7\x4c\x22\xa7\xa2\x92\xe8\xd3\xe5\xc6\x8d\xf5\xe3\x66\x3d\x70\xe2\x3b\x6e\xd3\x97\xdc\x66\xb0\xc2\x6d\x86\xff\x1f\xf3\x8b\xb7\x66\x5d\xb7\xa7\xe6\x82\x03\xe7\x5a\xc7\xd7\x0f\xa5\xf7\x0d\x89\x08\x09\x48\x3e\xb2\x53\xfe\x9f\xa5\x9d\x16\x2b\x0e\xd1\x05\xd0\xe9\xd0\x0c\x15\x12\xf4\x87\x52\xfd\xf1\xb0\xd4\x4d\xd4\x1c\x59\xf2\x91\x95\x4e\x50\x72\x5f\xe9\xc7\xd9\x9a\x6d\x4b\x59\xfd\x20\x35\xb1\x53\x9a\xa9\x0a\xf1\x7a\x4b\x39\x2d\x56\x8c\x50\x22\xc6\xd8\xdd\x61\xc7\xcc\x19\x00\x02\x4b\xd0\x63\x58\xd1\xa7\x05\x6b\xca\xe7\xd1\x01\x2d\x58\x0b\xd8\x0f\xd7\x93\xf7\xbf\xc8\x64\xf0\xaf\x92\xc9\xa8\xf1\x4b\xa3\xc8\x14\x44\xfa\xdc\x6a\x39\xc9\xae\x00\xce\x26\x69\x34\x48\xb4\xce\xd8\x04\x0d\x59\x0d\x56\x78\x23\xe9\xa4\x76\x46\x9a\xb1\xe6\x4e\xa6\xc0\x08\x44\x54\x9d\x6f\xee\xb9\x7b\xde\xe7\x1d\x42\x56\x89\xfe\xb4\xa4\xf9\x09\x6b\x3b\x09\xbe\xe3\xa7\xa6\x6e\xe2\x35\xd8\xd4\x4d\x80\xd6\x07\xc8\xbc\x84\x54\x00\xf3\x22\x80\x79\x81\x72\xd4\xfa\x93\x38\x35\x02\x1d\xac\xd0\xe7\x5a\xa4\x6d\x24\xce\x4e\x20\x95\xa9\x1c\xd4\xa3\x0a\x3e\xd4\xfb\x52\x1b\xa0\x39\x75\xfd\x55\x5a\xed\x97\xe4\x81\x7f\x40\xab\x7d\xb9\x1d\xfc\x3a\xad\xf6\xdf\xd3\xea\x00\xb6\x6a\x5e\xed\x54\x5f\x53\x6a\xff\xc3\xdd\x5a\x34\x7c\xeb\x96\x96\x6c\xdd\x0a\xc1\x5e\x2e\x97\xce\x8d\x75\x73\xca\x7e\x61\xa7\xf5\x1c\xb3\x66\x4d\x3c\x74\x7c\xeb\x66\x8f\x49\x32\xe2\xf8\xd6\x95\x7c\x0e\x42\xcf\x79\x7c\xd1\xe2\xeb\xb4\x30\x49\xed\xa2\xd9\xb9\xb1\xa6\xc5\x07\x12\xeb\x55\x8c\x72\x25\xdf\xfe\xe8\x94\xbd\xb6\xcf\x3b\x6f\xb7\xb6\xe6\xf5\xc2\xd1\x58\x60\x51\xbb\xd9\x5e\xda\x32\xc3\x9a\x3c\xe6\xb5\x8c\x76\xfd\xc4\xe2\x74\xf5\xec\x5a\x3c\x6f\xee\x9f\x28\x7f\xa2\xd6\x0b\xa1\xea\xe9\x95\xd4\xce\xc9\xce\x56\xaa\x5c\x8f\x4c\x3e\x8e\xa7\x0f\x22\x9b\x14\xb4\x77\x42\x55\x13\xc8\xed\x55\x75\xce\x7f\x5d\xe7\x43\xa5\x40\xbc\x98\x4d\x10\x39\x35\x02\x00\x08\x60\x71\x1b\x81\xbb\xe7\x91\x25\x55\x99\x6b\x9f\xf8\xfe\x91\x53\x49\x18\x8c\xa4\x1a\xe4\x93\x4f\x15\xb1\x21\x9f\x82\x5a\xbd\x6f\x1f\xcd\x00\x32\x67\xdc\x6d\x7b\xf5\x0f\xe8\x5b\xe6\xca\x92\xdc\x75\xb9\xf5\xd2\xf4\x25\x97\xc3\xad\xd7\xa6\x8f\x3b\xcf\xa3\x90\xde\xf8\xf7\xe9\x8d\x7a\x7a\xf3\x7d\xba\x47\xbf\x9d\xf0\xfa\x4d\xf7\xc5\x2f\xbc\x1c\x1d\xa7\xa6\x76\x97\x10\x10\xaa\x8f\xd6\x42\xad\xe6\x15\x34\xb9\x7e\xc4\x00\x50\x35\x00\xb8\xf8\x4f\x8e\xac\xa6\x5d\xde\x08\x29\x9f\xbc\x3f\xb2\x2a\xef\x1c\xb5\x69\x61\x53\x6f\x04\xb2\xfc\x61\x5e\xe8\x93\x99\x8b\xdf\x9d\xcc\xcc\xba\xf5\x93\x99\xff\xe2\x60\x66\xef\xdd\xc1\x0c\x80\x7a\xb9\x17\x3e\x3e\x99\xf9\x2d\x55\x5c\x3f\x83\x11\xbf\x3c\x78\x89\x4a\x2a\x14\xb3\xeb\x51\x65\xcb\xf0\x21\x38\xab\x83\x69\xea\x9b\x01\xe2\x2a\xf5\x51\x60\x17\xc9\x92\xca\xb0\x73\x78\xc8\x69\x0e\x45\x3d\x53\x52\xb8\x51\x66\x26\xd2\xdd\x0a\x52\x53\xf1\x8e\x93\xdf\x93\x47\x15\x59\x69\xcc\x2d\xcf\x5e\x3a\x59\x49\x43\xce\x8f\xa5\x70\x8c\x14\x24\x68\x46\x20\x71\xbf\xcb\x6d\xad\x9c\x26\xa4\x8a\x61\xc9\xd6\x45\xe4\xb0\x11\xd5\x0a\xae\x9c\xf5\x64\xeb\x44\x2b\x69\x44\x78\xae\x11\xaf\xd4\x91\xb7\xe3\x6d\x27\x50\x1f\xc1\xfb\xf1\x5f\x7e\x47\x8b\xe2\x91\x26\x76\x21\x10\xbb\x8c\xd6\x31\xa0\x3e\x93\x73\xc7\x52\x10\x0e\x42\x90\xce\x73\x56\x2f\xd3\x92\x62\x60\xca\xc2\x55\x49\x29\xd5\x92\x52\xf6\x9b\xf9\xc5\x42\x00\x6d\x65\x7b\x86\x91\x59\xc7\x92\xce\xad\x48\x50\x19\x90\x19\x61\x9f\xd3\xb5\xfb\xff\xbc\x81\x0a\x00\x9f\xea\x1c\x1a\xaa\x5b\xd6\xaa\x1f\xfa\xac\xf9\xaf\xd6\x8a\x7c\x55\x2f\x5d\xf4\x81\x9c\xbd\x13\xb7\x72\xfa\xaa\xd1\x7c\x43\x13\xff\xba\xb8\xb5\xa7\xe8\x29\xf4\x37\x50\x3c\x47\x6d\xd9\xf4\xa1\x64\xa8\xc4\x86\xc5\xa2\x45\x73\x96\x37\xc4\x47\x5d\xd5\xce\x09\x63\x2a\x9a\x51\xc5\x12\x14\xbb\x49\xc7\xf5\xec\xab\x8f\x36\x42\xcd\x50\xf5\xfd\x60\x04\x1b\x1d\x54\xe6\xe9\x6c\x6f\xcc\x0d\x03\x3e\x1b\x20\x17\x58\xdf\xdd\x7b\x03\xbb\xe8\x13\x1a\xa8\x24\xc9\xe2\x37\xdb\xef\xca\x6d\x60\xc3\x15\x7d\xbd\xac\xfb\x71\xcb\x69\x81\xf8\xab\x45\x4a\xea\xee\xbc\x67\xa3\xff\x0d\x82\x80\x4d\x2f\x7e\xcf\x7a\x06\xbf\x67\x3d\x83\x15\xd6\x53\xd8\xa8\x9b\xba\xc2\x61\x2a\xbe\x58\xb2\x99\x11\xf0\x96\x31\x13\xc4\x36\x23\xe0\x38\x63\xd6\x94\xcf\xa3\x03\x1a\x6b\x03\x20\xf1\xff\x0b\x1a\x12\xd2\xeb\x93\x92\x4f\x6a\xc8\x23\xfc\x08\x27\x00\x33\x9f\xbe\xc7\x09\x21\xe2\x04\xd1\x08\xb0\x8e\xde\xd6\x01\x6c\xeb\x94\xea\x53\x03\xc0\x67\x1f\x6d\x71\xc5\x4d\xd5\x61\xb8\x38\xd4\x0c\x68\xb0\x02\xc3\xb2\xd3\x82\x06\xcd\x10\x5a\xcb\x1a\x66\xd0\xcc\xc9\x2a\x58\x6f\x20\x5c\xd7\x79\xdb\x0f\x20\xb8\x9c\xc1\x15\x60\xca\x68\xbe\x82\x84\x10\x42\x91\x34\x56\xc0\x55\xa9\x2b\xbc\xbf\xd7\x27\x6f\x3e\x62\x1c\x84\xb3\x4a\x1c\x15\x5a\xf9\x24\x55\x6e\xc2\x3e\xb2\xe1\x5b\x13\x1f\x45\xc5\x31\xf3\x15\x1b\x01\xc9\x2e\x07\x75\x76\x39\x58\x91\x70\x2b\x4f\x1b\x29\xf0\xcc\x11\xf0\xcc\x31\xb2\xcc\x80\xc7\x82\x0f\xd9\xe5\x90\x06\xd6\x6d\x33\x29\x19\xe5\xff\x0b\x7b\x0c\xd8\xaa\xe2\x8f\x4f\x83\xff\x03\x7f\x7c\x71\xf7\xdf\xf1\xc7\x87\xde\x0a\x17\xac\xb8\x63\x3c\xf9\x59\x61\x9b\xeb\xab\xf6\x3e\x80\xfa\xd3\x58\x22\x81\xa7\x73\xf9\xdb\x55\xae\x08\xee\x15\x47\x90\x6a\x24\xa1\xde\x7b\x4a\x5e\x9d\xfa\x35\x2f\x09\xdf\x9e\x99\x72\x54\xf2\x7a\x2e\x93\x7f\x5c\xaf\x70\x5d\xea\xea\xf2\x87\x79\x39\xa4\x3f\xae\x81\x85\xba\x44\x16\x6a\xe3\xe4\x97\x41\x18\xdd\x83\x27\x45\xfe\x27\x13\xc6\x1f\x4d\x4e\x7f\x0e\xe8\xdd\x23\xd9\x62\xdf\x65\xf2\x99\x15\x8e\xd8\x36\xa0\x84\xe3\x3e\xfd\x76\xcc\xe9\xf6\x41\x45\x0b\x30\x93\x89\x03\x15\x07\xe9\xcc\x4a\xfc\x2d\x76\x1a\x57\x36\xce\xfd\xc7\x60\x5a\x6c\x4e\xf8\x38\x16\x93\xcd\x3f\x1a\x65\xa5\xc6\x1f\x9b\xa3\x62\x33\x7b\x9c\x6c\x16\xd3\x3c\x7f\x1c\x4f\x44\x88\x26\xcf\x93\x3b\xb1\x19\xdc\x3d\x16\x22\xdb\x0c\xee\xf8\x78\x82\x56\xd1\xd6\x1f\x44\xf7\xe5\x3e\x64\xc7\x99\xa9\x3b\x4e\xaf\x66\xbc\xcc\x4a\x7c\xc6\x6e\x7a\x1d\x3d\xdd\x18\xdb\xf5\x5a\x39\xcc\x90\x20\x82\x55\x30\x61\x5b\xc5\x28\x3d\xd3\xb1\x8e\xa6\x80\xb9\x2f\xcd\xa3\x03\x7a\x73\x45\xe8\x95\xda\xb0\x78\x8d\xaa\x82\x51\x9d\x69\xbf\x36\x8b\x45\x3d\x85\x8f\x05\x5f\x4d\x29\x26\x22\xcf\x45\xb8\x37\x16\x5c\x77\xed\x6a\xb5\xd7\xf3\x43\x62\x18\x65\xe6\xed\xdf\x57\x32\x67\x73\x8e\x96\x0e\xca\x7e\xef\xcc\xd1\x3a\x4f\x56\xe2\x2b\x1d\x9a\xd3\xd8\xc6\xdf\xfb\x43\xfb\x11\x30\xf3\x76\xad\xfa\xe8\x98\x5e\x5e\xd1\x73\xa2\x5c\x7a\xba\xc3\xb9\x57\xad\xc6\x75\x56\xe4\x22\x18\x45\x23\x11\x6e\x3e\x8e\x47\x22\x9b\x70\x00\x08\x98\xdf\x0d\x0d\x8e\x6f\xca\x3f\x47\x2f\x2e\x1f\x63\x4c\xc5\xed\x29\x41\xac\xec\x13\x36\x2f\x3b\x75\x15\xdb\x21\x3b\x1f\x3a\x42\x03\xb0\xe3\xb3\x8b\xa1\xf2\x94\x63\xc5\x91\xf4\xf8\xe5\x60\xd9\x8b\x3b\x3b\x64\x17\x43\x2a\x74\x26\xf5\xd9\xf9\x50\x93\xcd\x5e\xbc\xac\x94\x49\xd4\x6e\xb1\xae\x39\x46\x00\x6a\x39\xb1\x76\xae\x56\x9a\xbe\x46\x6e\x0c\x0c\x1a\xba\x67\x51\x9e\x72\x71\x2a\xdc\x62\x8f\x37\x12\x7a\x55\x78\x34\xa1\xdf\xef\xe8\xeb\xb1\xb4\xb7\x54\x6e\x7b\xaa\x69\xb9\x42\xf0\x6c\xf2\x97\x51\xb1\xf9\x30\x2d\x26\x9b\xbe\xd8\x7c\x8c\xa4\x41\xfe\x8c\xa7\x53\xa1\xe1\xef\x3e\x72\x13\x8f\xa5\x4e\x80\x3f\x78\x3a\x9b\x39\xd2\xf9\x0f\xbb\x3f\x34\x0c\x33\x63\xdc\x4a\xdd\x96\x67\x5d\x06\xd6\xdd\xa8\x98\x3c\xc6\x63\xfe\xd0\x9d\x06\x89\x98\x14\x32\x10\x6f\x50\xed\xba\xd2\xeb\x8b\x6f\xf5\xcc\x16\x61\xec\xe0\x8e\x8c\x6c\xad\x30\x75\x5d\xc2\xa0\x9c\xdf\xa2\x67\x87\xac\xad\xe1\x0c\x4d\xf4\x3a\xd1\x81\x2d\x0e\xb4\x4b\x6e\x39\xb5\x97\x87\x12\x36\xba\x3d\xf9\xbb\x3f\x90\xbf\xc1\x81\x1d\xb2\xaa\xf0\x32\xac\x5d\x6f\x86\x6c\xe3\xfb\x9d\xa3\xf1\x90\x9e\xc7\x80\xba\x59\xe1\xd1\x16\x0d\xe9\xfe\x11\xcd\x88\x23\xdc\x96\xa7\xb1\x55\x7d\x35\x7f\x1e\xcb\x4f\xdc\xf4\xec\x12\x72\x5a\x88\xf5\x51\xb3\xa1\x5a\x0f\x68\x4c\xae\x83\x24\x75\x08\x58\xb2\xe4\xc5\x2f\x4b\x2e\x87\x7a\x22\x9c\xcb\xa1\x25\xdc\xaf\x81\xa7\x71\x1e\x86\xed\x2e\xb1\xee\xd5\xaa\x05\xe1\x99\x54\xc4\xf1\xd1\x6e\x52\xb9\x67\x7a\x4f\x0d\x7e\x1e\x2f\x6d\x5f\x2f\xe0\x07\xf9\xdd\xde\xd2\xae\x1f\x53\x56\x8e\x5d\xea\x7b\x6e\xd0\xe0\x8d\xeb\x07\x4e\xf7\x8f\x39\xf5\xad\xc7\xa1\xb4\x2b\x86\x0f\xdf\x87\x9d\x1b\x74\xbb\x1d\x52\xf8\x0c\xb1\x6f\xe5\x1b\x71\x7c\xab\xc7\x51\x63\xcc\x3a\x7b\x82\xed\x55\xb9\xf9\x0c\xad\x69\xa2\x8c\x63\x02\xeb\xd4\x24\xd2\x63\xbb\x3c\xc4\x0c\xac\xe9\x83\x89\xe1\x6c\x02\xf7\xd8\x33\x23\xda\x02\xd6\xea\x9d\x01\x99\x36\x7d\xb0\x0e\xb8\x19\x51\x6e\xc5\xdc\x1d\x20\x8b\x43\x16\x8b\xf3\x25\x1a\x64\x87\x1c\x9d\xd8\x9e\x4d\xec\x94\x4e\x27\x76\x8c\xce\x7d\x53\x06\x8b\x6c\xc5\xdc\x9a\x3c\x3e\xa6\x93\x51\x4e\x12\x2b\x14\xec\x6a\x88\x1e\x15\x5b\x1e\x8d\x64\xc7\x95\x29\x0d\xf4\xdd\x8d\x3d\x16\x2d\x7d\x2b\xd5\xee\x24\x65\xcf\x43\x2b\xbc\xd5\xde\xe6\x05\xfb\x21\xfd\x0b\x50\x4c\x8d\x3c\x42\x7d\x0b\x39\x3c\x41\x68\x90\x98\x81\x75\x30\x36\x23\x82\x2a\xfe\x56\xea\x46\xb0\x7d\x98\x4e\x74\x7c\xeb\xdb\x13\x0b\xad\x83\xbf\x1c\xdf\x9a\x26\x38\x3b\xce\x86\x6f\xf5\x27\x2c\xb4\xfa\x13\xc7\xb7\xc6\x7d\xc9\x34\x5c\x22\x9a\xe2\x40\x5b\x01\xa4\x8a\xc4\xe1\x40\x6f\x57\xba\x05\xed\x6b\x57\xa8\xb0\x3e\xf0\x35\xac\x62\xf1\x30\x34\x43\xeb\x49\x10\x47\x30\x68\xd3\x85\x17\xaf\x72\xf1\x22\x48\x95\xca\x42\x57\xcc\xbd\x52\xe7\x40\x6c\xc9\x84\x9a\x6b\x8f\x34\xdd\x2c\xc4\x78\x24\x8a\xcd\xc7\x6c\x93\x6f\xc6\xa3\x99\xc8\x36\xdf\x21\x98\x3b\xb1\x59\xf0\x07\xb1\x59\xfa\xff\xf8\x83\xe0\x38\xdc\xd0\x3d\xf2\x3c\x66\x56\xcf\x8b\x45\x8b\x34\xda\x8e\x60\x30\x24\xd9\x89\xc5\x02\x47\xab\x5f\x99\x70\x84\xae\x27\xea\x95\xea\x17\x2b\x3f\xeb\x7b\xe4\x6d\x89\x5b\xe4\xcc\x09\xac\xaf\x78\x0a\xa0\xc4\x64\x73\x9d\x29\x0b\x59\x60\xa5\x2e\xc7\xc9\x08\xac\xfb\xd0\x30\x42\x94\x38\xd8\xcf\xe3\xd2\x19\xa6\xde\x0c\xd6\xa5\x19\xf5\xa9\xf5\x27\xa1\xb5\x14\xd1\xa7\x6d\xe2\x61\xd8\xb6\xbe\xe7\xf6\x3d\xfc\x22\x72\xf8\xa3\xd0\x0e\xad\x51\xa8\xb5\xd5\x0f\xe6\xca\xae\x46\xfb\xda\x3a\xb8\xb3\xdf\xee\x63\x3b\xa1\x17\x91\x9d\xd0\x1f\x33\x3b\x06\x28\xfc\x09\xbf\x6d\x8f\xbe\xb4\xed\xc3\x2e\x7d\x6d\xdb\xfd\x2e\x3d\xf2\xe1\xef\x09\xfe\x9d\x4d\xec\xad\x16\xbd\x38\x40\x93\x4c\x42\x47\x59\x28\x5e\xd0\xdc\x35\xb4\xfa\xf3\xa5\xf2\x76\x13\xaf\x3a\xf4\x52\x5d\x5b\x12\x00\xd2\xbe\x61\xc4\xd6\xfe\x9d\x09\x8f\x84\xfe\xdb\xde\xc6\xef\x3e\xe1\xf8\x2e\xf7\xd8\x56\x0b\x39\xeb\x9f\x66\x60\xa5\x6b\xc2\x95\xef\x06\xde\x62\x61\x86\x66\x20\xef\xf7\xb7\x00\x59\x1d\x18\x46\x68\xc2\x2f\x91\x06\xc2\x72\xb2\x03\x24\x29\x72\xc6\xbb\x3d\x78\xaf\xba\xd3\x6c\x2b\x83\xc1\x9c\xaf\xcd\x1c\x0e\xea\xf2\x98\xcb\x31\x6d\xc8\x0e\x36\xdb\xef\x6d\x0a\xb7\xf5\x09\xe5\xea\x05\xa5\xd6\xe1\x63\x18\x6c\xf7\x13\x6f\xd4\xe2\x72\x85\x78\x83\xd9\x64\x95\xa6\xdf\x67\x2c\xb5\xac\x90\x58\xdd\x57\x44\x0b\x7d\x45\xa8\x88\xd4\xca\x63\x04\x95\x01\x79\x2f\x1e\xcd\x9f\x0f\x9c\x28\xbb\x95\x8b\x47\xb3\x48\x39\x51\xa6\x9b\xc9\x31\xff\x08\xf3\xa2\xf9\xab\x61\x98\xed\x83\x3f\x95\x89\x1f\x27\x8b\x85\xd5\x6a\x7f\xd1\x6f\xa4\x13\xa9\x18\x0f\x76\xac\x1e\x96\x04\xd5\xa1\xce\xd0\x03\xab\xa2\x06\x3f\x8f\xed\xcb\x43\x9a\xb3\x16\x46\x53\x01\xbc\x40\xa7\xac\xe5\x4c\x77\x0b\x67\xaa\x31\xee\x0c\x73\xa6\x1e\x9d\x33\xbf\xcb\x1b\xd3\xc6\xb5\xa8\xbc\xbe\xfa\x8f\x26\x47\x02\x80\x59\x84\xbc\xe5\x8d\x86\xf2\x41\x0c\x0c\xb3\xe4\xf5\x1a\x67\x77\x74\x7e\xcc\xe9\xf0\x90\xd0\x1e\xe3\x6a\x47\xcc\x1b\xfd\x03\xda\xcf\xd0\xab\x6e\x8f\x31\xd6\xcf\xb8\x73\x66\x18\x66\x8f\xcd\xac\xfd\xd8\x0a\x7c\xad\xd0\x72\xc6\x2e\x74\x53\xee\xbc\x91\xde\xd1\xf4\xce\xa3\x67\x1d\xeb\x4f\xbb\x4d\xe8\x29\xfb\x56\xcb\x9c\x1c\xd3\xc9\x31\x2a\x8c\x5c\xb0\xd6\xee\xa9\xd3\xfa\xc2\x4e\x0d\xc3\x3c\x65\x7f\x11\xe7\xf4\x33\xdb\x71\x5a\xbb\x1b\x98\x80\x66\x5c\x52\xe5\xe6\x6d\xa9\xcc\xca\x66\x40\x23\xb6\x3d\xc3\x78\xe2\xe6\x25\x55\x6f\x5a\xa7\xa6\xfe\x95\xeb\x43\x7a\x7d\xe8\xd1\x1d\xe2\xd4\xc6\x38\x3c\xa0\xd7\x57\xf4\x3b\x41\xbf\x2b\x2a\xed\xf9\x6b\x69\xb1\xdb\x63\xdf\xae\xcd\x1e\xa1\x5d\xb6\x77\xcc\xdd\xae\x47\x1f\x38\xe3\x56\x0f\xf7\xf2\x00\x1e\xe3\xc8\x6d\x79\x92\x39\xd3\x8e\x48\xd0\x46\xf7\x88\xb3\x07\x4e\x51\xf1\x01\x0a\x1e\x71\x28\xf3\x20\xb5\xf6\x4b\x1b\x93\x21\x14\xb2\x04\xa7\x87\x82\x0d\xf0\x61\xe0\xeb\xf1\xc0\x17\xbe\x07\x6c\x7e\x4f\x33\xc1\xe6\xf7\x68\x76\x72\x6a\x12\xc3\x78\x18\x99\x3e\x50\x50\x04\x49\xc3\x30\xbf\x07\x2c\x84\x32\x01\x71\x1e\xb8\x74\x59\xf7\x3d\x30\x87\xd2\x1e\xeb\x81\xbf\xa8\xb7\xa7\x80\x2c\x9d\x2e\xeb\x9a\xd8\xcc\xaa\xbf\x0b\x86\x0d\x72\xda\x02\xe6\xfd\xf5\xca\x1c\xf2\x4a\xac\xde\xfc\x0e\x9b\x6a\xf9\x11\x91\x7e\xbd\x32\x0f\x05\x55\x75\x07\x3e\x6c\xfd\xb7\x31\xcf\x62\x61\x3f\x70\x9a\xec\xd9\xa7\xd5\x94\x8e\x26\x9c\xfe\x8d\x2c\x6b\xbe\xad\x59\x97\xbc\x3d\x70\x76\x55\x95\xb9\x1e\xd0\xc4\xda\x37\xbb\xd6\xf5\xc4\xea\x3f\x98\x40\x55\x37\x0e\x73\xde\xc8\x89\x33\xe0\xc0\x29\x74\xdd\xed\x8f\xec\xde\x33\x81\xf7\x17\x84\xfa\xa5\xf5\xca\x90\x5b\xd7\x7d\xd3\x97\xa6\x1b\x0e\x67\xdc\x6d\x7b\x4e\x65\x14\x72\x28\x20\x5b\x59\x76\xa8\x71\xba\x3e\x95\x0a\x5d\xd6\xf5\x81\xda\x54\xce\x11\x67\x45\x66\xf6\xdc\xbe\x47\x87\xc4\x09\x32\xf3\x88\xd3\x33\xe5\x42\x24\x60\x63\x99\x45\x9c\x22\x00\x8c\xab\x32\x44\x58\x1f\xd3\xe1\x21\x7d\xe0\x2b\xc0\x35\x95\x52\x92\x61\x98\x22\x6c\xb0\xb1\x68\xc0\x98\x11\xe7\x1c\x5f\x99\x2e\xe2\x12\xf5\xfb\xed\xca\x2c\xee\x08\x5e\xff\x9c\x5c\x99\x3b\xc4\x2b\x9f\xbb\x56\x91\x13\x8f\x10\x39\x4d\xc4\x49\x25\x4f\x02\x68\x75\x66\x8d\xc2\xc6\xcf\x9c\x53\xe9\xce\xea\x81\xd3\xed\x18\x48\x0a\x32\x4d\x03\x5e\xf9\xae\x9a\xa1\xef\xaa\x9b\xd8\x3e\xae\x6d\x91\x71\x9f\x8e\xfb\x1e\xdd\x6a\x49\xcb\x2b\x60\xaf\x5a\x34\xe6\xf6\x25\x3d\xf8\xd3\x9e\xd2\x1b\x61\xcf\xac\x1b\x41\x67\x91\x3c\x44\x91\x3e\x40\x7b\x34\xec\xdb\x67\x74\x3f\xb6\x8b\x80\x9e\x04\xf6\x11\xa7\xc3\x99\x2a\xd0\x97\xbf\xe8\x43\x2b\xa3\xe7\x07\x75\x98\xf8\xda\xe5\xc8\x04\x8e\x32\x71\x83\x0a\xfd\x43\xca\x43\xfb\x94\xfe\xfc\xbb\xdd\xde\xa1\x1b\xc1\xb3\xfd\xc1\x3e\xa5\xe7\x27\x76\x7d\x53\xcf\x06\x74\x36\xf0\x68\x9b\xd0\xa3\x13\xfb\x82\x26\xb6\xeb\xd1\x9f\xd7\xf0\xf7\x09\x3a\xfb\x24\x68\x7f\x6e\xbf\xdb\xdb\xf4\x60\x6e\x8b\x70\x49\x96\xf0\xbf\x8a\xa0\xdc\x96\x04\xa5\xb4\x94\xd6\xb6\xc8\xd2\x57\xa4\x72\x78\xa5\x62\x85\xba\x5e\x69\xc9\x7b\x64\x12\xa7\xd1\x48\x4b\xed\x0b\xab\x67\xa6\x84\xe6\x80\x20\xee\xcd\x94\xce\xee\x80\x45\x6c\x31\x96\x76\x1e\x0a\x3b\x29\xa4\x32\x33\x63\xa9\x61\xe4\x5b\x8c\x3d\x14\x25\x03\xb6\xf7\x28\x5d\x30\xe5\x98\x8a\x1a\x0e\xbb\xd5\xa9\xc4\x69\xce\x1b\x69\xe3\x1c\x59\xbd\xb7\x98\xdb\x6f\xcb\x6a\x41\xb3\xa5\x13\xb1\xb7\x69\x20\x67\xfc\x46\xa0\x9f\xed\xa5\x13\x4a\x6e\x75\xd9\x62\x2c\x36\x8c\x9c\x31\x96\x14\xa8\x60\x10\x00\xd9\x88\x19\x46\xd2\x12\xec\x0d\x97\x28\xae\x35\x47\xb1\xfd\x25\x95\x8d\x46\xd0\x22\x0a\x5e\x32\x2a\x98\x00\xca\x17\x33\xc6\x82\x83\xce\xdf\xed\xb6\xee\xb3\x6c\x3c\x6e\x36\x69\xb6\xc5\x98\x40\xde\xb2\xec\xfd\xcf\xac\x1c\x1b\xbb\x2d\x0c\x43\x00\xa6\xcb\x2b\xe6\x93\xe7\x1c\x7d\x23\x40\x22\x53\xbf\x78\x6f\x21\xbd\x6c\x43\x2f\xac\x69\x00\x1d\x89\x00\x0a\xe7\xcf\x76\x4e\x7f\xce\x6d\x55\x12\x46\x5b\x56\x87\x0a\x29\x3a\x66\xaf\x4f\xdf\xd5\x23\x6f\xc4\x6a\xfa\x36\x5a\x4e\x86\x11\xa6\x90\x21\x86\x05\x97\x6b\x19\x48\x2e\x3b\xc5\xb9\x87\x29\xdc\x65\xa2\x62\x8f\x2f\x25\x6b\xfc\x3f\x7f\x34\xd2\x46\x9c\x72\xe2\xe4\xc0\x40\x37\xda\x9e\x03\x13\x9a\x7a\x12\x77\xe3\x20\x0d\x23\xaf\xa4\x97\x5d\x06\x74\xc2\x30\xcc\x46\x43\xe0\xd4\x84\xae\xf0\x56\x67\x67\x1b\x66\x07\xdb\xb8\x11\x4c\x68\xfd\xfb\xf0\xd6\x0e\xe8\x34\xb1\x43\xda\x9f\xd8\x19\x3d\xf8\xcb\x4e\x6a\xb6\x0f\xfc\xb4\x66\x09\xbc\xc5\x98\x5f\xf5\x74\xff\x31\x9d\x3e\x64\xc8\x9b\x57\xac\x7b\xf0\x98\x15\xa3\x62\x22\xb2\x89\xbd\x29\x9e\xa6\x3c\xc5\xa3\xab\xf0\xf1\x81\x8f\xb2\xcd\x00\x6b\x14\x9b\x3c\x93\x27\x5a\xfa\x7d\x94\x55\xfc\x3e\x8a\x06\xd6\x1f\x2b\x9e\xfd\x6e\xd6\x63\x54\xe2\x76\xc1\xa8\x61\x6a\xb3\xc8\xab\xa7\x40\xf1\xdd\x95\xc3\x79\xdc\x37\xcd\x1d\x9a\xae\x6b\xf5\xc0\x58\x00\x92\x70\x4c\xc7\xab\xd2\x89\xee\x96\x1e\x93\x18\x4d\xee\xc4\x58\x4a\x22\x8f\xe3\xcd\xc7\x34\x6c\xe2\xb3\x2a\x07\x7d\xa5\x99\x92\x1a\xb1\x3f\x7f\xe8\x22\x7f\x28\x80\x8e\x70\xbf\xb6\x60\xbf\xb6\x9c\x9d\x2f\xb9\xd3\x68\xe4\x3a\xbe\x1f\xe4\xe4\xd2\x64\x23\xbe\x37\x73\xd8\xc9\x4e\x6a\x06\xc4\x81\xa9\x8f\x68\x41\x9c\xe2\xdd\x4e\x2c\x96\x4e\x01\x92\xa8\x9c\x57\xe6\xe6\x9e\x23\x00\x20\x0b\xe2\x64\x6e\xe0\xb1\x5c\x99\x3a\xdd\x08\x3b\x07\x28\x7e\x28\x00\x8c\x5b\x54\xed\xdd\xa5\x74\x41\x01\x9d\xc9\x77\x93\xaa\x33\x53\xb6\xd3\xc8\xe9\x6f\xba\x94\xff\xef\x8e\x61\x40\xbf\x42\x37\x6f\xb6\x11\xbc\xa0\x83\x3a\x22\x45\xe0\xa1\xd6\x17\xf4\x10\x63\xe9\x55\xfd\x45\xc4\xae\xf6\x3b\x76\x1d\x7a\xe9\x4e\x3d\x89\x3c\x0a\x52\xf5\x77\x46\x37\xe6\xcf\x76\x50\xf6\x37\x07\x1c\xaa\xa5\x49\x58\xe0\xd3\x98\xbc\x25\x2c\xaa\x02\x39\xe4\x2c\xc5\x81\x68\x1c\x99\x93\xb7\x0f\x87\x20\xf1\x23\xcb\x57\x11\x24\xcb\x0d\x23\xf8\x18\x43\xc2\xd7\x4a\x14\x99\xae\xa0\xc8\x1c\xf7\x78\xf4\xd1\xc2\x24\x2b\x28\x52\x20\x8a\x14\xd2\x15\xc4\x12\xf8\xf3\x74\xb1\x08\x14\xf0\x05\x08\x7c\xa8\x91\x18\x62\x9c\x03\xe6\x9b\x09\xb0\xff\x72\x0e\xd3\xfa\x04\x2a\x5c\x29\x5b\x4f\x2a\x5c\xa9\xbc\x4c\xd0\x94\xa5\x1a\x57\x42\xbf\xfd\xe3\xce\x8e\x42\x9a\x01\x22\xcd\xc5\x42\x26\x13\xe0\x24\x9b\x4d\x5a\x6c\x31\x16\xad\x48\xe6\x1a\x79\x06\x0a\x79\x46\x72\x99\x56\x91\xa7\x4a\x64\xea\x17\x91\x67\xac\x91\x67\xa2\x90\x67\xa2\x90\x27\xae\xa2\x2a\x29\x91\xa7\x7e\xc1\xa8\x8f\xcb\xb5\x89\x05\xe4\xb9\x21\x89\x0f\x67\x2d\x27\xc2\x03\x97\x12\x79\x4a\x68\x0d\x25\xf2\xcc\x71\x55\x04\x22\x4f\xfe\x11\xf2\xcc\x25\xf2\xf4\x99\x70\x79\x03\xb5\xb0\x42\x37\x47\xe4\xe9\x1f\x7b\x8b\x85\x7e\x91\x98\xd4\x37\x0c\xbf\x8e\x49\x03\x8d\x49\x39\x8d\x90\xc8\xf0\x8f\x30\x29\xb6\x71\x23\x18\x5f\xd6\x50\x69\x08\xa8\x54\x00\x2a\x8d\x00\x95\xc6\xcb\xe5\x8d\x35\x3a\x5c\x33\x1d\xe6\xaa\x1f\x6b\x16\xc1\xe8\xb5\x08\xe1\xa5\x42\x7d\x3f\xd6\x51\x5f\xe0\x1e\x01\xf2\x0b\xac\x98\xa3\x07\xa6\x1b\x41\x63\x29\x3a\xd1\x84\x8d\x06\x0d\xbf\x71\x2d\x68\xca\x84\xbb\xed\x2d\x16\x02\xbe\x82\xd6\x92\xd7\xbe\xf5\x7c\x68\xa6\xc8\xc5\xe6\xf2\xfd\x82\xcb\xf7\xc5\xe2\x9c\x16\x2c\x44\xb9\xaf\x65\xef\xd0\x29\xc8\x34\x31\x75\x13\x2d\x35\xc9\xac\x7f\xd8\x2d\x0c\x42\xca\xd8\xe5\xe1\x62\x11\x32\x56\xf4\xf0\x07\x6a\xed\x4e\xed\xad\x96\xd3\xc2\xb8\x33\xe6\x94\xe9\x0a\x7f\x11\x67\x2a\x85\x2b\x4c\x47\xd9\xca\x67\xb1\x75\x69\x26\x20\xe3\x71\x6b\xea\xbb\x26\xc7\xab\x0b\xc3\x90\x95\x50\xe1\xce\xff\xbc\x43\x6c\x9f\xfc\x2f\x16\x18\x78\xe8\xe1\xe5\xdb\xb5\xe9\x6b\x03\x13\xed\x12\xb4\xea\xc4\xfe\x80\xcc\x41\x1a\x94\xdd\xee\xd1\x49\xcf\x23\x74\x0e\x0c\xb4\x0f\xbc\xf5\xbc\x8c\x7f\x53\xd5\x0c\x0e\x88\x4a\x53\xa7\x02\xc5\x64\xfc\x98\x08\x1b\x2b\x4c\xb9\xbd\x43\xf1\x98\xc0\x97\x87\x04\xbd\x7f\x53\x6c\x2e\x96\x20\xaf\x1e\x43\x17\xbe\x8e\x39\xc8\x9f\x67\x9d\xae\xdd\xa3\x5d\xf6\xb6\xff\xa7\x1d\x3c\xca\xae\x9d\x8c\x39\x3d\x19\x73\x10\x53\x7b\x76\x97\xd0\x6e\x95\x35\x18\x73\xba\x31\x80\xbc\x53\xb2\x74\x8a\x72\x11\x94\x50\x59\x10\xa7\x07\xb2\x02\x7e\x57\x62\xaf\x33\x9c\x4a\x37\x69\x4c\x9f\x39\x9d\x3e\x73\x0f\x4f\x4b\xe8\x49\x46\x48\xcf\xca\x52\x76\xe6\x9c\x95\xad\x6c\x17\x9c\x6e\x17\x1c\x43\x7d\x9d\xd6\xa7\x81\xfd\x3c\xc6\x19\xd4\xab\xca\x8a\x1e\x39\x05\xf1\x1d\xab\x7d\x7d\xe1\xf4\xeb\x0b\xf7\xa8\xc4\x48\xaf\x07\x4b\x42\x1f\x47\xe6\x29\x41\xe1\x59\x26\x9e\xaa\xeb\xe6\x8b\xca\x55\x6b\xb5\xa4\xe5\x39\xd8\x25\xe3\xd6\xe8\xd0\x0c\x60\x96\x2e\x3b\x7c\xe5\x3c\xcc\xe6\xf5\xc3\x30\xe7\xd2\x30\xcc\x0b\xb6\xd5\x26\xcb\x4b\x86\x6b\xdb\x99\xdb\x7a\x25\xcf\x48\xf5\x01\xa2\x46\xd0\xed\x11\x29\x8b\xc3\x74\x3c\x4e\x38\xbd\x3c\xe6\x84\x0e\x01\x64\x86\xf0\xfb\xe6\xf3\x20\x89\xc7\x8f\xd3\x2c\xb4\xdf\xf6\x63\x68\x6b\x28\xdb\x5a\x2e\x1d\x75\xca\x0f\x1d\x35\x0c\xd5\x45\xc3\x30\x67\x4c\x0b\xe8\x0f\x9c\xf9\xc8\x04\x09\x34\x1d\xaf\xdc\x9d\x8d\x42\x1b\xf7\xd1\xad\x50\xfb\x4a\x0a\x44\x79\x85\xb5\x03\x24\x90\x5a\xce\x41\x7e\x57\x20\x73\xa9\xa4\x22\x9c\xe2\x71\x9f\x6e\x68\x91\x68\x16\x81\x3c\x25\x85\x1e\xbf\x14\x7a\x2e\x41\xe6\xe9\xd1\xef\x07\xf6\x29\xed\x81\x10\x33\x9c\xd9\x73\x90\x7c\xba\x52\xec\x09\x95\xd8\x13\xd3\xe4\xbd\xc8\x53\x80\xc8\x33\x55\x22\x8f\x94\x78\xf0\xb3\xc3\x03\x3a\x3c\xf0\x56\x44\x1e\x4c\x5f\x11\x77\x66\x6b\xe2\x8e\x2e\x74\x36\xa0\x67\xd2\xfe\xa6\x3f\xb7\x25\xf6\xba\xe8\x5c\xc8\x21\x25\x28\x01\xb5\x50\x02\xba\x92\x09\x87\x87\x34\x5f\x71\x20\x2d\x27\xb4\xbc\x06\x2e\xd3\xa3\x15\x7d\xc0\x18\xdf\xdc\xae\xef\x99\x6e\xd8\xf0\xa9\x5f\x57\x1e\x8c\xeb\x45\xdd\xb0\x71\x31\xe3\x0d\xde\xb8\x16\x0d\x9f\x86\x8d\xcb\x19\x6f\xf8\xb4\x96\x84\x09\xde\x52\x7b\x83\x3a\x94\x01\xaa\xb7\x92\x15\x3f\x15\x3e\x7b\xdb\xf7\x51\x3f\xfd\x05\xfe\x4e\xbf\xc1\x5f\x9c\x00\x3e\x16\xbc\x80\x07\x54\x5f\x7f\xea\x23\x1b\x53\x29\xc9\xbf\x2d\x95\x21\x40\xa2\x03\xe5\xaa\x60\x43\x89\x9b\x79\xc8\x4f\x49\x30\xc9\xc9\x62\xa1\x51\x2f\x3c\xfb\x7d\x3a\x65\xfc\xd1\x0c\x68\x6c\x16\xb4\x7f\x47\x68\xef\x98\x13\x7d\x83\x38\x55\xb7\x5b\xdd\x9e\xed\x5b\xfb\xbe\xa4\x99\xf5\xcb\xa5\xbb\x3d\x6e\xfb\xd6\xe1\xcb\xfb\x9c\xde\x18\x72\xa6\xdf\xde\xe7\xcc\x8e\x6d\xdf\x4a\xde\xa7\x17\x3d\xdb\x77\xf7\xf7\xbc\xf7\x39\x97\x87\xb6\x2f\x35\xa3\x56\xd3\xbf\xdb\xf2\x45\x7b\x28\x28\x89\xf0\x71\x36\xe3\xe9\x28\xdc\x1c\x65\x13\x31\x9e\xf1\x74\xb3\x98\xbc\xa6\xc2\xde\xfc\xa3\xb1\x31\x25\xce\x12\xd9\xfd\xb4\x93\xba\x85\xfa\x98\x0d\x8f\xc0\xc3\x2e\xdb\xbb\x38\xd0\x81\x67\x18\x2d\xc6\x70\x68\x68\x6b\x02\x4f\xcc\xc5\x3c\xb4\x5c\xd9\xf7\x5d\x55\xb0\xd9\xf6\x64\x8c\x88\xd6\x96\x2e\xff\xbf\x3b\x35\x7e\x60\x32\x0a\x92\xa6\xee\x48\xc5\xd1\x87\x22\x1a\x65\x22\xdc\xf4\x5f\x37\x79\xb6\x29\x66\x02\x20\xe0\xc1\x17\xe3\xcd\xc7\xa8\xc6\xd6\xab\x76\x71\x5e\x56\x1b\xde\x1b\x0b\xfe\x7f\x6f\x17\xc3\x8f\xe1\x34\x90\xb7\xa9\x8c\xd3\x09\x00\x70\x7d\x48\x88\x93\x01\x19\x93\xef\x09\x9a\x13\xe7\xec\x56\x27\xf4\x0f\x08\xfd\x79\x6f\x1e\x00\x7a\x3b\x87\x9c\xeb\xa1\x99\x53\x01\x95\xd6\xa8\x53\x2e\xa9\x52\x4e\xf7\x41\xce\x9e\x72\x7b\xba\x84\xf2\xe5\xa7\xa6\xe3\xd2\x0e\x5a\x26\xe4\x73\xed\xd8\x28\xa9\x12\xf7\xa1\x14\x9d\x55\x09\x93\x63\xf4\x6b\xf4\x0e\x64\xe9\x5c\x06\x16\x8d\xcc\x82\x3e\x1f\x12\x42\xf1\x94\x57\xbe\x0f\x0f\x08\xdd\x90\x68\xa6\x27\x5b\x82\xd4\xd9\x80\x00\x8e\x99\xb2\x37\x09\x1d\x53\x7d\x44\x4f\xc7\x09\xb7\x73\x3a\x49\xb8\xcd\x69\x91\x70\x3b\xa1\xfc\xd4\x9e\xd1\x97\x7b\xc0\x79\xcf\x76\x17\x90\x55\x6f\xe9\x70\x06\x60\x53\x8b\xf2\xc5\x75\x90\xb6\x9c\x71\xd8\x76\xbe\xf5\xd4\x07\x31\x7f\xba\x7c\xef\x80\xec\xba\x7e\xd7\xe3\x5e\x1e\xd2\xa2\x47\xf7\x07\xb4\xdb\xa3\xc1\x81\x47\x03\xf6\xb6\x74\x7e\xae\xb8\xe5\x04\x54\x13\xb8\xdc\x63\xfe\x12\xa6\xed\x7a\x84\x24\x28\xfd\xd8\x27\x83\xd6\x0a\x0b\x5c\xdf\x3d\xf2\x50\x13\xac\x52\xbe\x71\xb9\x57\x43\x84\xc3\xb5\x8b\x59\xbd\xf7\xfd\x4a\xa3\xa1\x76\x85\x0c\xac\xaa\xd5\x9f\xe0\x6d\x78\x09\x8a\xb7\xf2\x1e\xbe\x50\xf0\xb5\x19\xf0\x2c\x7b\x5c\xb9\xa7\x2f\x26\xe3\x51\x16\xff\xa1\x95\xc2\xf0\xae\xae\xa5\x05\xe6\x7a\x53\xbd\x4a\xaa\x35\x0b\xf2\xef\x5a\x0a\xcb\x73\x6a\x51\x3f\xa6\x0e\xdf\xeb\x10\xdc\x89\xcd\x97\xdf\xab\x10\xf4\x87\x66\x48\x61\x6c\x14\x59\x01\x69\xc5\xf1\x61\x43\xaf\xff\xb6\x21\x41\x03\xdd\x4a\x0d\x5d\xd5\x14\x43\x40\x28\x4c\x43\x1c\x7f\xe9\x90\xe9\xc3\xa9\xed\xd5\x8f\x2d\x7e\x39\x1d\x74\x73\x34\xd9\x2c\xee\x1e\xa7\x69\x08\x99\x93\x3b\xb1\x59\xae\x09\xde\x70\x06\x8f\xd9\x64\x94\x4d\x1f\xa7\x85\x3e\x08\x81\x21\xfc\x41\x9c\x8d\xfe\xd0\x0c\xea\xc3\x5e\x5e\xde\x9b\xdc\xba\x8f\xd6\x2e\xc4\xe4\x6c\xe3\xba\x05\x9e\xe2\xdb\x7e\xb3\x6e\xd1\xe3\x58\xde\xa7\xfe\xcf\x1f\x8d\xa0\xf1\xc7\xef\xd6\x11\x03\x9f\x84\xe5\x7d\x64\x19\x8d\xe9\xe9\x1c\xbe\x54\x06\xf0\xb8\x1b\x1b\x86\xd9\xda\x0d\x4b\x25\x9f\xb0\x54\xee\x09\xeb\x4a\x3d\x32\x2c\xc2\xdd\x98\xb5\xf0\x92\x4e\x0e\xa7\xb7\xea\x33\x5f\x46\x7f\x58\x12\x07\x33\xe3\xe8\xc3\xcc\xda\x16\x09\x4e\xb5\xfb\x2c\xd5\x9d\xe1\xd0\xe4\x84\xe8\x28\xe8\x4e\xe5\x5f\x04\xf7\xe4\x34\x91\xb7\xf4\x20\xcc\x61\x98\x17\x00\x50\x75\xca\x8a\xec\xb1\x90\xaa\x0f\xf2\xce\x5b\xac\x2b\x11\x08\xa9\x3a\xe0\x13\x9a\xb0\x9b\x21\x3a\xfe\xaf\xdd\x28\x84\xda\x15\x58\x22\x4f\x05\xbe\x24\xe4\x1d\xd9\x8b\x79\x2e\x57\x7f\xd3\xfc\xa3\x91\x34\xfe\x20\x80\xe8\xf1\xbc\x08\x0a\xfe\xcf\x1f\x8d\xa8\xf1\x87\xb5\x79\x58\x96\xd2\x90\x9c\x3d\x66\xcd\x4c\xc4\x7c\x32\x9a\xe1\xf9\x97\x8c\xa6\xfb\x12\xda\x21\x3d\x8a\xec\x98\x7e\x07\x5c\xb8\x44\xc3\xd4\x65\xe9\xbe\xf1\xc6\x7a\xfd\xe7\x07\x8a\x7c\x4a\xd1\x4b\xa9\x9e\x3d\x8d\xad\x28\x67\xec\xaa\x03\x7d\xb7\x6b\x8e\x03\x62\x79\x64\xb8\x9a\xd2\xf6\x3a\xdb\x03\xfb\x5d\x1a\xbf\xb3\xcf\x8b\xa5\x73\x63\xbd\xfc\x17\x1f\x54\x0d\xd5\x05\xda\xdb\x61\x1d\xe1\x49\x11\x5c\xe3\xc6\x0e\xd0\x77\x5b\x4b\xc7\x6e\xab\xe6\x12\x2a\x94\x50\x50\x2d\xf6\x8a\x16\x0b\xec\x67\xaa\x3c\xaa\x4a\xfd\x1f\xf4\x7a\xfa\x56\xe9\x4a\xd5\x14\x1c\x6a\xab\x2d\x95\x1c\xd0\x36\xf4\x3e\x72\x63\xeb\x49\x78\x34\x96\xea\x23\x82\xde\x0e\xcd\x98\x10\x1a\xb3\xd7\x2b\x33\xb1\x04\xa7\xb1\xf6\x33\x19\x1b\xc6\xc5\x35\x9a\x10\x2c\xc3\xd2\x5e\x03\x0f\xbc\xb1\x62\x8b\xd0\x08\x2a\x85\x50\x29\x22\xf4\xe2\xda\x0c\x69\x44\x48\xed\x58\x55\x9c\xfe\x4a\x21\x47\xe1\x54\xa7\xba\xfa\xab\x2e\x8e\x61\x7c\x52\xed\x45\x3b\x8c\xfd\x8f\x06\x87\x03\xa9\xc6\xe5\xc3\x1e\x89\xad\x1b\xe1\xd5\x74\x5f\xb4\xd6\x8c\xa0\x89\x1a\x72\x28\x87\x4c\x13\x78\xc1\xab\xc3\x64\x75\xfc\x61\x35\x21\x09\x26\x40\x09\xf4\x30\xf7\xbc\x02\x22\x95\x42\xa5\x75\xe6\x44\xa7\x5a\x63\xc9\xe4\xd6\x55\x08\xfc\xf0\x7d\xa8\xa3\xc4\xb1\xfb\x43\x62\x18\x97\xf7\xca\x35\x45\xb4\xe6\x33\x3f\x0b\xcc\x96\xba\xe1\x53\xe5\x4f\xe3\x7a\xd5\x50\xb7\x4d\x95\x26\x56\xb9\x36\xea\xdd\x1a\xed\x9b\x81\x2e\x44\xe8\xa1\x74\x0b\x00\xb0\x53\x22\x40\xfa\xcb\xaf\x8f\xf6\x4d\xe2\x1c\xd6\x75\xb1\xb4\x56\x72\xe5\xae\xd3\xd7\x5a\x7a\x12\xe9\x54\x9b\x4c\x69\xc2\xdd\xf4\x3a\xd9\x57\x15\x48\xee\x69\x8c\xc7\x3a\xb6\x0e\x90\x67\x18\xa2\x9c\x1b\xbf\xfc\x9a\x5f\xc3\xcd\x41\x99\x1a\xd4\xfa\x50\x06\x15\x34\x8c\x58\x35\x40\xbb\x3d\x35\x4b\xab\x3a\x97\x88\xb4\x56\xe7\xa6\xce\x2b\x63\xb9\x4d\x40\xec\x5a\x41\xe7\x79\x34\xb9\x53\x68\xaa\x46\xb9\xde\xa9\xa7\xa2\x92\x64\xf9\xf1\xfd\x81\xea\x54\xc0\xb3\x30\x15\x05\xf0\xe0\x85\x61\xdc\x95\xa3\xc3\x4c\x90\x50\x0d\xc3\x1c\x95\x6b\x76\x7f\x5a\x29\x96\x6a\xed\x51\xc3\x48\x56\x6b\x15\x01\x3a\xcc\x34\x0c\x33\xfd\x65\x45\x7f\xea\xfb\xa9\x28\x0c\xe3\xb1\x36\xd5\xb5\x75\xa9\x56\x45\x3e\x1e\xdc\x23\x30\x96\x2a\xac\xef\xfa\x8e\xae\x5a\x13\x7f\x4b\x2a\x32\xaa\xf9\x2b\x1f\x4a\x20\x7b\xa8\x75\x35\x10\x6c\xa8\x00\xa9\xf7\x51\xc8\x98\x4d\x6e\xcd\x7e\x2a\x3d\x61\xd9\x8b\xfd\xa8\xec\x8d\x06\x2b\x6e\x7d\x0d\xcb\x66\xd6\x08\xe5\x7f\xd1\x4c\x56\xf6\xeb\xb1\x7c\xca\xeb\xdb\x50\x6d\x25\xc3\xe0\x4a\xc3\xe0\x2a\x56\xb3\x00\x13\x42\x0c\xe3\xa9\x2c\x5d\x03\xf2\x7d\xed\x95\x7b\x23\xd0\x09\xda\xbb\x8e\xa4\xb4\x8e\xbf\xc5\xce\x0b\xc3\xf0\xb7\xd8\xd1\xa1\x8c\x70\x56\xa7\x28\x18\xd6\x4b\xb9\x0e\xd0\x36\x95\x68\x6e\x14\x68\xbb\x51\xed\x46\xa0\x11\x10\x74\xa5\xcb\xef\xd6\x5b\x69\x7d\xdc\x0a\xaa\xa6\xd7\xda\x81\xfa\xa8\x99\x15\x84\xde\x17\x16\xba\x87\x9e\x5a\xbd\xfd\xc8\x1a\xe5\x66\x48\x9c\x71\x39\xc2\xa2\x7c\x52\xa0\xb3\x58\x98\xdb\xda\x48\x41\xe9\xa4\x12\xfa\xf3\xa4\x44\x35\x25\xf4\xd5\xa9\x5c\xf4\x11\x7e\xdf\x0e\x68\xc8\x7e\x48\x96\x88\x68\x73\x28\x6d\xf7\xe2\xd7\xad\xe4\xa4\x9f\x26\xbc\x36\xaa\x66\x35\xc6\x37\x35\xe9\x40\xb2\x0e\xee\xeb\xee\x8c\x0e\xee\x55\x56\xc6\x7c\xeb\x64\x8e\xc1\x34\xfd\x9a\x7d\x5d\xce\xce\x69\xc1\xce\xf1\xbc\x1b\x4d\xf0\xb4\x91\xc7\xf4\x23\x53\x9d\x44\xc5\xd9\xf1\x89\x83\x5e\x42\xfc\x8f\x8c\x37\xb8\xeb\x7b\xfa\x0b\x95\x07\xba\x5f\x46\x34\xd8\x62\xe7\x4b\xe2\x3e\x08\xcf\xbc\x14\x64\xf9\x7b\x51\x27\x67\x53\x39\x4f\x4e\x81\x4f\x71\xb4\xce\xcd\x43\x89\xb7\x96\x0d\xa4\x1f\xbd\x26\x4d\x91\x73\x26\xcb\xa5\x3c\x7a\xc9\x0d\xa3\xe8\xe4\x0d\x9e\xf2\x46\x61\xe7\x9d\xdc\x2e\x3a\x85\x7d\x2e\xcd\xad\xf8\x8b\xb9\x23\x2d\x88\x44\x69\x41\x34\x5b\xcd\xa8\x9c\x11\xcd\x57\x33\x92\x32\xa3\xcb\x7c\xb4\xac\x69\x6e\xec\x7c\x2a\x68\xc2\xbe\x7f\x33\x03\x9a\x51\xbd\x90\xb4\x2b\x05\xdc\xd6\x6e\x82\x36\x79\x9d\x04\x5d\x11\xd8\xe7\xb4\xc7\x02\x73\x5a\x96\x43\x7b\xa0\x33\x19\xdf\x58\x7f\x09\x3f\xf1\x49\xe0\x47\x94\x27\xa4\x66\xaf\x79\x06\x9c\x45\x20\xbf\x93\xd3\x50\x7e\xe0\x8c\xb5\x76\x03\xf9\x81\x40\x7f\xe0\x94\xb9\x9e\x73\xba\xee\xdb\x68\xa7\x66\x50\x64\x4e\x17\x8b\x33\x62\x18\xa7\xeb\x36\x82\xa2\x21\x8b\x15\xcd\x1d\x28\x17\x4b\x93\xa3\xd3\x75\xa7\x46\x91\x2a\x36\x93\xc5\xd2\xf5\x62\xca\x9f\x11\x42\xa5\x74\x69\x24\xcb\xcf\x75\xb3\xb7\x17\xe6\xa9\xb4\xae\xf7\x4b\xeb\x7a\xd4\x2e\x95\x76\x2c\x69\xcd\xfb\x4a\xe9\xbb\x44\x28\xd7\x25\x53\xc3\x50\xdb\xe5\xb8\x0a\x96\x3e\xa5\x2f\xb6\x2f\xdd\xa4\x14\xf4\xd5\x16\xda\x90\xa7\xb7\x24\x6a\xaa\x0b\x9f\x25\xe8\x5f\xc2\x3e\x27\xf4\x0c\x8f\x95\x46\x7d\xe5\xa4\x22\xff\x38\x4a\xae\xf4\x4d\x51\xf4\x69\xe1\xdb\x01\xd4\xcd\xd7\x82\xe5\x6e\xa0\xc1\x0e\x85\x96\xea\x9d\x39\x53\x9d\x09\x42\xaf\xb9\xd2\x9b\xee\x92\x60\x0c\xda\x35\xe7\x2c\x61\x39\xc0\x10\xed\xa4\x15\x62\x52\x78\x4d\x34\x23\xaa\x5a\xa3\x82\xfa\xa5\x73\x96\xe8\xbd\x73\x96\xa8\x6c\x08\xe9\x9b\xcf\xca\x26\xaa\xa5\x78\xdf\x16\x45\x5c\x32\xca\x4d\xbf\x6e\xff\x1d\xeb\xab\x7f\xed\x9b\xfb\x0c\x95\x2e\x3b\x53\x95\x6e\xcf\xf4\x29\xae\x75\x15\xd6\xea\x3d\xac\xe2\xbe\x34\xa4\x01\xbb\x94\x07\x26\xbd\x8f\x5d\x4d\x6e\xb6\xb6\x40\xd8\x42\x14\xeb\x6b\x05\xf1\x90\x53\xe1\xfc\x5c\x71\x76\x40\xde\x38\x06\x77\x41\xcf\xbe\xa8\x83\x17\x8c\x4c\x41\x56\xa3\xfd\xa8\x30\x1c\x18\x68\x53\x30\x8e\xca\xa2\xda\xfd\x34\x67\xe1\xe7\x1d\xea\x03\x27\xe9\x4b\x87\xe2\x4d\x4e\x6a\xef\x4f\x41\x63\x2d\xf4\xce\xe9\xda\xf5\x1b\xe0\xf2\x52\x82\xc4\xc1\x01\x5a\x3e\xd3\x3c\x28\x4d\x98\x19\x22\x40\x37\xdb\xe4\xf3\xf3\xa9\x54\x6f\x17\x40\xcb\xcf\xac\x87\x67\xe0\x9c\x5f\x4e\xb9\x99\xd0\x52\x61\x28\x39\x5c\x75\x29\xe3\xa4\xbb\xa1\x12\x61\xd2\x1a\x93\x9f\xb0\x16\x93\x02\x69\x0a\x18\x7e\xb8\x7e\x4e\x50\x9e\x84\xb7\x68\xcb\x5b\x12\x9a\xb3\x66\x9b\x16\xac\xe5\x14\xbb\xa1\x94\x0c\x0a\x2d\x19\x4c\x19\xa4\x14\xd2\x13\x18\x72\x2f\xbe\x54\xcf\xdc\x6a\x4b\x33\xd1\xcc\x9d\xa2\xd6\x34\xb6\xa5\x6f\xf7\xa7\x56\x02\x15\x12\x32\xc3\xf0\xfc\x18\x04\xae\xe4\x7b\xe7\x0c\x6a\xd0\xae\x94\xa3\xe6\x1e\xed\x49\x41\x3a\xa5\xd3\x52\xd7\x90\xd0\x1e\x2c\x5e\x17\x16\xaf\x07\x78\xeb\x87\x1c\x8d\x13\xc1\xf4\x2b\xdd\xb6\x53\xd6\xda\xed\xa1\xb7\xf6\x0b\x96\xb9\x73\xcf\xb9\xbc\x36\x23\x7a\x86\xae\xec\x3b\x5d\x28\xd8\x6b\x5c\xb8\xa7\x1e\xb1\xe5\x0b\x21\x4e\x80\x4e\xed\xbf\x3d\x33\xed\xac\xf4\xdb\x33\xcd\x1b\x6d\xa2\x2f\x0b\xdf\xbb\x10\xf4\xd9\xdb\x30\xb2\xdf\xb2\xb1\x9d\xd2\xd7\x67\xdb\xa7\x93\xc4\x0e\xe8\x5d\x6a\xf3\xc6\x86\x19\x2e\x16\x71\x07\x3e\x61\xb7\x08\x7d\x4c\xed\x33\x3a\xec\xdb\x3f\x15\x70\x4e\x69\x4a\x21\x8f\x6e\xb5\xc8\x72\xa9\xce\x47\xa4\xb7\xed\xef\x02\x63\x41\xca\x09\xdd\x1f\xa0\xef\xfd\x99\x3b\xf0\xa8\x6f\x0d\x23\xcb\xff\x8b\xb5\xb6\x60\x72\x67\x6e\xd0\x6c\x7b\x1d\xf9\x03\x39\x77\x52\x22\x27\xce\xb6\xde\x00\x74\x4a\x0b\x98\x17\x9c\x68\x9f\x38\xf0\xc1\x06\x00\x72\x97\x05\x9d\x96\x9d\xd3\x4b\x16\x94\x9d\xd4\x57\x6e\x31\xba\xce\x05\x18\x2b\x41\x66\xc8\x5a\xce\x70\xb7\xe7\x0c\x1b\x0d\xb2\x5e\x85\xce\xdd\x13\xcf\xe4\xb4\x4d\xbb\xf4\x92\x06\xca\x47\xa0\x4a\xec\xa9\xc4\xe5\x72\x19\x2c\x16\xef\x8f\xa4\xc8\x5b\xff\xfd\x31\x8d\xc6\x0a\x35\xcd\x36\xd8\x2b\xa1\xdc\x2b\x42\xee\x95\x08\x10\xc1\xaa\xc2\xf7\x9a\xbf\x69\x7f\xa9\x4d\x99\x02\xb5\x0b\x6a\xd6\x4c\x7a\x0b\xa0\xe9\xfe\x0f\xf9\xe4\x08\x00\x84\xb4\xda\x43\x19\xbb\xbc\x36\x05\x45\xe5\x38\xd7\x3f\xa6\x49\xe1\xa9\x8d\xa0\x8c\xa3\x8a\x92\xed\x51\x9b\x20\x21\x6f\x53\x79\x27\x22\x57\x42\x76\xa8\x54\xd8\x9e\x49\xa8\xc6\x3d\x41\xe7\x6c\x06\x00\xdc\x65\x2d\xa7\xbb\x9b\xcb\x06\xbb\xb2\xc1\x1e\xcb\xdd\x2e\x90\x72\xf4\x47\x1f\x4b\xd0\xef\x49\xd0\x3f\x03\xd0\x9f\xab\xdb\x4b\x75\x8e\x75\xf6\xf1\x67\x33\xc3\x98\xa9\x1d\xb1\x0e\xd6\x45\xa3\x4d\x9c\x1e\x7b\x93\x47\xe5\x3d\xd4\xf2\x98\x5a\xbd\x3b\x37\xdf\xf3\xac\xfd\x58\xae\xac\x02\xed\x18\x40\xbb\x00\xd0\xc6\xd4\x3b\x80\xe4\xc7\xd4\x4e\xe9\xe3\x88\x43\xd5\xa4\x50\x80\xcd\xe9\x94\xc6\xb4\xa5\x40\x7a\x7b\x88\x00\x00\x20\x18\x13\x47\xf5\xaf\x07\xa0\xf0\x1f\xc2\xc1\xdd\x6f\x4e\x36\xf0\x90\x06\xd8\xc3\xdf\x41\x40\x70\xb0\x24\xce\x4f\x0c\xb5\xf6\x81\x57\x5d\x0d\x04\x8a\x56\x38\x3f\x57\x43\x35\x09\x14\x71\x13\xc2\xeb\x13\x5b\xa2\xa9\x48\x9f\x38\x69\x27\x9b\xf7\x91\xcb\xd1\x94\x45\xdb\x90\xd6\x8c\xcc\xbf\x3d\x53\xa1\xc3\x91\x4e\xe5\xe1\x88\x4f\x23\x5c\xcd\x59\xf5\xda\x46\x3d\x83\xf2\x75\x07\xb9\xf6\xf2\xf5\x6f\x1e\x70\x80\xcf\x57\x26\x3a\xa3\x9f\x42\x4d\xfd\x32\x83\x7a\xfa\x65\x0e\xb5\xf4\x4b\x54\x07\x92\x69\x19\x1a\x3a\x2a\x9f\x66\xe5\xd3\xfc\x17\x03\xed\xc2\xee\xd0\x53\x14\x02\x34\x75\xb5\xb6\xf9\x7c\x77\x06\x48\x35\xa4\x5d\x40\xaa\x05\xe4\x4d\x09\xc5\xdf\x88\xa0\xae\xd9\xb7\xb9\xdd\xeb\x70\x2b\xe8\x5b\xdd\x3f\x6d\xfc\xdd\xff\x93\x9e\x04\xf6\x18\x48\x16\x1a\x82\x10\x0d\x64\x3e\xdd\x78\x7d\xb6\x05\x8d\xee\xb9\x3d\xc5\x4b\xe7\xab\x47\x3b\xa2\xf1\x3d\xb7\x7b\x9d\xb9\x3d\xa3\x77\xf8\x34\xb3\xe7\x54\xc0\x13\x40\x60\x57\x42\x19\xf6\xae\xa0\xd2\x0f\xb3\xa3\x86\x81\xce\x81\x94\xa9\x37\xad\x87\x0c\x7e\x7d\xc7\x8b\xbc\xc3\x2c\x81\x95\xba\xf2\x5a\x37\x42\x38\xba\x3c\x24\x15\x2a\x8a\xac\xed\xb8\x13\xb9\xdb\x9e\x0d\x68\x45\x63\x18\xd8\xbe\x35\x37\xdc\xb8\xcd\x23\xdc\xe6\xa9\x54\x70\x92\x4a\xf2\x69\x55\xdd\x8d\x3d\xb7\xed\xd9\x6a\x87\xa7\x80\x87\x9e\xd5\xe9\x20\xd0\xe5\xea\xa8\x38\xd5\x57\xc0\x12\x4d\xc1\xa2\x22\xa2\xca\x89\x63\x2a\x0c\x95\x13\xc3\xd8\x82\x96\x31\x0a\x87\x44\x62\x89\xfc\x14\x1e\xd4\xe2\xde\x8c\x70\x6f\x66\xca\x2e\x27\x63\x5b\x18\xbc\x0b\x90\x7e\x52\x52\x31\xdc\xea\x2d\x98\xdb\x9c\x9e\x3e\xdb\x29\x6c\xec\x64\x49\x8b\x3b\x9e\x0b\x3b\xb2\xbe\x1f\xd0\xfd\xbf\xec\x4c\x93\xab\xd4\x30\xcc\x44\x93\xab\x6d\xed\x91\xd9\x87\xed\x1e\xc9\x55\x48\x56\xee\xea\x47\x1f\x9f\xbc\xb6\x9c\x40\x9f\x39\x06\x8d\x06\x91\x0b\x14\x10\x67\x7e\x2a\xa3\x27\xde\x98\xf5\xf5\x9b\xbf\x6f\x04\xf9\x42\x79\x8b\x16\xb2\x96\x13\xca\xe5\x08\xf5\x72\x08\x16\xb8\xd2\x2b\x01\x5e\x04\x49\xfd\x14\xf9\x54\xf4\x64\x54\x78\xe1\x4e\xe7\x5e\xe5\x02\xef\x3e\x72\x85\x3a\xc1\xbd\x1a\x99\xc2\x4a\x3e\xc0\x31\x5b\x18\x95\xfa\xbb\x50\x47\xe1\xe2\x79\xf3\x6b\x62\x72\xa0\xc3\x8f\x29\xc5\xdf\xd3\x67\xb2\x94\xe2\xf5\x99\xf5\x72\x4f\x05\x0b\x2e\xcd\x98\xf6\x4e\xb8\xe9\x13\x9a\x10\x9a\x3a\x93\xd2\x0e\xd5\xaf\x62\x2d\x44\x07\x76\xca\xfc\x32\xee\xa5\xb2\x25\x9d\x38\x3a\x10\x43\x2d\xd3\xfa\x53\xe7\x2e\xab\xd4\x65\x22\x3f\x94\xd2\x44\x71\x44\x42\xfd\xc2\x6a\xd4\x96\x23\xf9\x4f\x0e\xc2\x7d\xe8\xba\x3e\x17\x96\x64\x34\xaa\x31\x93\xf1\xaf\xf9\xc7\xcd\x16\x8e\x3e\x4e\x4c\x24\xb2\xf2\x57\x5e\xb0\xaa\xd5\xae\xa9\x37\x40\x4a\x26\x75\x91\xf5\xc2\x28\xa5\xd6\x1c\xd8\xc1\xa9\x5c\x94\xc2\xa3\x33\x79\xf5\x22\x35\xb7\x68\x97\xe5\xd5\xe6\xea\x69\x6b\xcd\xae\x62\x10\xa7\xab\x0c\x62\x44\xe8\x69\x85\x0f\x7b\x8b\x45\xc4\x81\xed\xf3\xad\xab\x10\xd5\x74\x12\x68\x7f\xce\x62\xb7\xf0\xd0\xe7\xe0\xf3\x5f\x20\x7d\xfd\x65\xcf\xe8\x14\x9e\x66\x7f\xd9\x73\xba\x07\x4f\x5d\x78\x7a\x85\xa7\xf9\x5f\xf6\x6c\x49\x4f\xd9\x56\xbb\xc2\x98\x17\xf4\xd2\x01\xe6\x33\xea\xc8\xee\x34\xdb\xb4\xab\xac\x37\x24\x2f\xa5\x0c\x4e\x9b\x6d\x55\xa0\x51\x15\x80\xbe\x74\xcc\x2e\xeb\x35\x52\x39\xd8\x5a\x9f\xe8\x05\xbe\x35\x7a\xf4\x12\xdf\x1b\x3d\x1a\x31\xa6\x9a\xd2\xc7\x59\x6c\x08\x98\x80\x9b\x43\xd2\xc1\xc2\xac\x67\xcb\x6a\x74\xa3\x55\x22\xfe\x2d\xc6\x4e\x65\xb1\x53\xd2\x89\x55\x31\xd9\x28\xb1\xcd\x0b\x76\xc9\xba\xec\xdf\x34\x7e\xc1\xba\xb6\x58\x2c\x4c\xa9\xa9\x45\xe8\x2f\x1a\xbf\x54\xc5\x2e\x65\x31\x45\x41\xce\x88\x63\x9e\x32\x24\x1d\x67\x84\x18\xc6\x54\x91\x95\x29\x43\x44\x95\xd3\x88\xe2\xf0\x4f\x89\xa3\x16\x07\xf5\x3a\xba\x48\x53\x90\x91\x3e\x7d\xb6\xbb\x34\x1b\xdb\x91\xc4\x57\x7a\x55\x2e\xcb\x55\xb9\xa0\x1f\xad\xde\xb0\x6f\x4f\x97\xcb\x02\xd1\x5d\xa1\xb0\x5a\xae\xb0\xda\xa9\xe2\x58\x0a\x9a\xd3\x6c\x85\x72\x96\x90\x52\x48\x5c\xe7\xe4\x15\x89\xf9\x18\x47\x4d\xe4\xce\xfa\xf9\xfe\x6a\x3f\x20\x6f\xdc\xda\x8e\x41\x80\xd4\xc6\x9d\x9d\x3d\x7d\xdc\x1d\x10\x5b\xa5\x5e\x1e\x1a\xc6\x6b\x95\x4c\xbb\xd5\xb3\x24\x67\xb5\x60\x6b\xbf\xa5\x67\xf2\x9c\x3a\xd2\x37\x40\x34\x56\xc4\x0d\x36\xa6\x75\x83\x56\x76\x71\x69\x65\x5a\xc9\x8e\x31\x90\x8e\x18\xf6\xd5\xc0\xb3\x43\x34\xc2\x92\x3b\x37\xad\x6f\xda\xc0\x9a\x26\x6e\x52\xbb\xfb\xa1\x85\xba\x21\xca\x6b\x2d\x64\x90\x23\xe9\x5c\x46\x73\xe0\x62\x56\xf2\xda\x65\x5e\x01\xbb\xee\xf9\xca\x14\xb0\x6d\x73\x68\xe4\xf9\xca\x8c\x24\xbb\x53\xe3\x63\x8a\x92\x67\xc9\x49\xbc\xce\xb3\x98\x53\x49\x11\x0b\x82\x11\x96\x22\x9a\x03\x80\x6d\xc5\x72\xce\x91\x6e\x16\x84\x46\x92\x7e\xe2\x2e\x07\xca\xf7\x62\x17\xf4\xd5\xce\x35\xa1\x8b\x01\x24\xa6\x23\x6e\x4f\x97\x54\xc1\x44\x4c\x7d\x9a\x11\x1a\x57\x2b\x5f\x2e\x40\xfa\x1f\x51\xb5\x3d\x4d\xd5\x24\xa8\x54\xeb\x87\xef\x95\xde\x9a\x5f\xa3\x30\xa6\xa6\x31\x64\x59\xf1\x1f\xef\x0d\x87\xb5\x29\x19\x10\x9d\x0e\x52\x9e\x6c\x5c\xb7\x16\x7b\xdb\x7e\xb6\x75\x89\xed\xe7\x0e\xfc\xb1\xdb\xb4\x78\x29\x13\x8b\x97\x0e\xfc\x81\xc4\xe0\x31\x17\x3a\xdd\xbd\xdf\xf3\x3a\xf8\xd7\xde\x6a\xd1\x49\xca\x6d\x6d\xb2\x56\x71\xcd\xf2\x52\x56\x9d\xb3\xd4\x6f\xd5\xd5\x1d\x2a\x6e\x80\xf2\x12\x55\xd3\x57\x48\x43\xea\x1a\x59\xc3\x19\x4d\x90\x43\xb2\xc4\x43\x7e\xc7\x8b\x51\x81\xfe\xba\x15\xd7\x74\x5f\x73\x06\xb6\xc5\x4c\x2c\x17\x88\xf1\x84\x8f\xb2\xc9\xab\xbc\x93\xc7\x00\x92\x5b\x2c\xd1\x0f\x29\x3e\x6c\x85\xb5\xf3\x8e\x9f\x23\x33\xb2\x12\xea\x03\x10\x07\x66\xb2\x58\xbc\xa1\xa1\x6a\xcb\x49\x77\x81\x4f\x51\xe7\x23\x0a\xa8\x21\x25\xd5\x56\x31\x5b\x39\xcc\xbe\xa2\x44\x01\x7a\xb3\x67\x91\x75\x12\x38\x85\xec\x5a\x26\x7f\xcc\xc8\xfa\xf1\x2f\x06\x7f\x16\x8b\xa9\x95\x1e\x99\xb2\xdc\x8f\x7f\xd1\xdc\xda\x1e\xb3\x29\x05\xe0\x8b\xac\xdb\x7f\xb1\x0d\xf8\xbb\x58\xc4\xb2\x50\x6e\x89\x3e\x83\x14\xe9\x48\xa4\xfd\xa5\xb0\xb6\x9f\x17\x8b\xf6\x97\xcc\xda\x7e\x26\x53\xe6\xdf\x98\x53\x34\x01\x93\xcd\x38\xed\x2d\x56\x58\xc5\x8b\x61\xb4\xb7\x58\x86\x0f\xa6\x0e\x95\x0d\xaf\x14\x32\xe1\xd3\xfb\xa7\xdc\x9c\x02\xbc\xca\x7a\xc4\x69\x31\x56\x58\x93\x94\x1b\x46\x62\x18\x5b\xc0\xb3\x19\x86\x89\x99\x72\xeb\x64\xac\x58\x26\x2c\x5f\x61\x0f\x7a\x75\xf1\x4b\x1a\x3a\xbf\x2d\xa9\xd2\x0a\x7b\xd3\x7b\xe5\x6d\xa9\x6d\x5b\x39\xf4\x46\x41\xce\x8f\xb9\x67\x18\xe3\x17\xd3\xa7\xf8\x5c\x1a\x5f\xbb\x17\xaf\x9e\x61\x9c\x3e\x63\xc6\xc5\x6b\x2d\xa3\xef\x19\xc6\x0f\x6e\xfa\xee\x28\xf0\x28\x3e\x6c\xfb\x1e\x85\x74\x52\x15\x3a\x0f\x3d\xc3\xc8\x7c\x55\x0a\x1f\x64\xa9\xf3\xb0\x5e\xec\xfb\x4b\xbd\x31\x7c\xaf\xcc\xbf\x61\x20\xe7\x39\x0f\x46\x93\xd7\x5a\x5b\x2b\xe9\x55\x4b\xc1\xab\x6e\x49\x7e\x27\xa8\x75\xd9\x92\x53\xb1\xda\x16\x16\x5b\xcd\x59\xaf\x80\xca\xb4\x86\x91\xf3\xb5\xe2\x98\x5e\x2b\x0c\xd3\x7b\xf5\x9a\x0b\xc3\x08\xa0\xe5\x6f\x2f\x58\x54\xa7\xae\x15\xbc\x1c\x85\xa2\xc0\xc3\xec\x6f\x2f\x9e\x55\xc0\xdb\x4a\xd6\x5a\xf1\x8b\x47\xe9\x93\xa6\xac\x31\x56\x09\x6c\x63\xad\xc4\x5a\xc5\x9e\xc8\x26\x65\xa5\x50\x64\x93\x7a\x06\xf9\x28\x42\xe7\xc1\xfa\xb9\xa7\x74\x90\xef\x94\x06\xb0\xb0\xcf\x5f\xbc\x8e\xfa\x05\x5a\xa1\x4a\x54\x16\xe0\x86\xc1\xa5\xff\x16\x9f\x30\xc6\x0e\xee\xf0\xfc\x15\x92\x80\x70\x04\xb8\xb1\x65\x27\x55\x00\x49\x41\x43\xd6\x1b\x99\xd2\x08\xe5\xf0\xc1\x0c\x09\x11\x1a\x84\xa5\x4a\x74\x58\x41\xb2\x4e\x58\x96\x9e\x26\x42\x77\xdf\xf7\xd0\x57\x0c\xfb\x71\x47\xde\x26\xe3\x57\x85\xb9\x66\x8f\x66\x48\x96\x01\x07\x8e\x3d\x26\x6f\x4b\xf9\xd5\x08\xfd\xdc\x45\x64\xa9\x5c\x58\x18\x86\xd9\x1f\x99\x21\xfd\x71\x47\x3a\x26\xde\xde\x26\x5f\xb9\x19\x12\xda\x3b\xe5\x84\x9e\x6f\x8e\xb2\x4d\x28\x73\x9f\x98\x82\x0a\xf7\xdc\x23\x34\x84\xc7\x73\x42\xe8\x37\xb1\x96\xfb\x4d\xe8\xec\x6f\x82\x10\x62\x0b\x06\xdb\x72\x8c\x43\x22\x4e\xc8\xc4\xb2\x9c\xa5\x90\xd4\x9c\x8e\x76\x33\xd3\x0d\xbd\x15\x07\x04\xab\xa1\x87\xac\x09\xae\xa3\x15\x0a\xd6\x97\xa4\x09\x33\x74\xa8\xcb\x03\x95\x26\xe0\x23\x87\xd5\x8b\xe4\xf9\x8f\xaa\x04\xce\x8e\xab\x17\xc1\x0e\xae\xd1\xa7\xa0\x52\xff\x0c\xac\xfd\xb8\x5a\xc6\x48\x4b\xc7\x89\xdb\x45\xe7\x04\xe9\x3b\x5f\xa2\x3e\xf3\x17\x8b\x73\x27\xd8\x62\xec\x70\x80\x1a\x60\xe7\xc2\xbc\xc9\xcc\x88\xba\x7e\xa3\xdf\xa7\x7e\xa3\xd7\x87\x6d\x80\x96\xfb\x84\x72\x6b\xff\xce\xbc\x80\x6c\xbf\x31\x9a\x72\xca\x2d\x9c\x25\xac\xdf\xeb\x4b\x0d\xb2\xb0\xac\x3f\x18\x50\xbf\x71\x88\x71\x79\xc7\x82\x10\x1a\xc0\x67\x55\xed\x74\x0f\x6a\x3f\x8d\xb0\xd1\x87\xc4\x3c\x95\xc9\x0f\x98\x7c\xe6\x13\x42\x96\x4e\x0a\xf8\x4c\xb0\x6f\x90\x75\xfc\xc2\xcb\xd9\xca\x98\xff\x68\x46\xf4\xe8\x85\x6b\x25\x96\x4c\x86\x58\x84\x7d\xc1\x32\xc0\xae\x03\xa8\x33\x58\x29\x80\xd8\x31\x23\x4e\x6a\x26\xa5\x9e\x76\x50\x49\x81\xda\xc3\x90\xbe\xc8\x2c\x7a\x76\x6a\x26\xf4\xb0\x6a\x23\xb0\x4e\x30\x66\x2c\x60\x71\xfc\xbb\x58\xf8\xd6\x49\xb0\x58\x40\x06\x51\x53\xbc\x91\x62\x96\x34\xe7\x38\x1c\x10\xaa\xde\xaf\x0e\xe1\xad\x6a\x6a\x38\xc3\xa6\x44\x9f\xe1\xdf\xaa\xa9\xe1\x4c\x37\x95\x62\x8e\x6c\xa9\xd7\x2f\xdf\x93\x31\x87\xd7\x95\x3b\xd5\xfd\x01\x76\x56\x65\xd1\xb5\xfe\x9e\x04\xcc\x7c\xdf\xd3\x14\xd3\x56\x3b\x7a\x12\x94\x1d\xd5\xfa\xeb\xd0\xee\x64\xcc\x57\x3e\x17\x1c\xd8\xbe\xf5\x6d\xce\xe0\x4f\xad\xb5\x6f\x73\xdd\x8a\x7e\xc7\x9a\x55\xcb\x64\xe9\x5b\x78\x00\xca\x92\x25\x47\xb7\x38\xc8\xff\x30\x4e\x03\xeb\x96\x73\x86\x7f\x17\x8b\x44\x12\xeb\x44\xbe\xd3\xb2\x0e\x01\x7a\x1c\xcb\xa5\x7e\x61\x31\x0d\xca\xc3\x85\x40\xc9\xb0\xfa\xe9\xe7\x31\xda\xd0\xcb\x9b\x59\xf1\xe9\xce\x9d\x87\x9e\x19\x93\x4f\xed\x16\xf9\xdc\x6e\x51\x09\x58\x9a\x07\x08\x49\x79\x9d\xbd\xfd\xcc\x42\xfa\x01\x50\x14\xbd\x12\x38\x74\x6f\xfc\x1b\x33\xa1\x5b\x2d\x22\xa1\x74\x43\x9e\x3e\x8a\xa6\xc8\x4c\x55\x82\x7c\xde\xc1\x20\x9f\xb5\x79\xab\x79\xaf\x5a\x6d\xa6\x5d\xe7\x6f\xfb\xa7\x35\xbf\xc6\x20\x60\x04\x37\xa6\x8a\x58\x26\x4f\x57\xfc\x9a\x27\x23\x47\x18\xc6\x96\xaf\x24\x1c\xe9\xd1\x48\x60\x30\x0d\x60\xc3\xef\x13\x33\x90\x0e\x57\x9e\x52\xb6\xb5\x05\x3f\x55\xf8\xe8\xca\xc3\xd4\x70\xfd\x9e\xec\xda\x47\x1d\xb6\x33\x2b\x1f\x1b\x86\x19\x5a\x77\x39\x20\x7d\x3a\x8c\xc9\x62\x11\x5a\xf1\xbd\x89\xcf\xe8\xf9\xcb\x3a\xe0\x48\x10\x34\xeb\xfb\x94\xda\x5b\x5b\x9c\x26\x23\xdb\xef\x6c\xb5\xec\xad\x36\x0d\x1e\x33\xb4\x29\xf6\x51\xbf\x2c\x58\x0f\x0c\x55\x29\x36\xa9\x9b\xb8\x9f\xc7\xc0\x83\x6f\xc7\xba\x3b\xda\xd5\x9d\xf2\xaa\x76\xa6\xe3\x40\x4a\x2d\xa9\xed\x98\x44\x0c\x0f\x24\x02\x4f\xca\x5b\xfa\xa5\xed\xd1\x8a\x5c\x44\x2c\xc9\xcd\x88\x86\x56\xcf\xe4\xd6\x0d\xe0\x2c\x5a\xea\xc3\x99\x31\x64\xc6\x94\x4b\x43\x41\x9a\x30\x81\xfe\xff\x98\x38\xe8\xc4\x76\xd4\xb8\x14\x8d\x18\x50\xe7\x4a\x30\x26\x69\xc5\xa4\x2c\xfa\x2b\x0d\x25\xad\x52\xb1\x58\xfc\xdc\xa7\x79\x4d\xd9\xa5\xca\xb8\xc8\xb9\x93\x30\xff\x7f\x77\x3a\x7e\xb3\x6d\xfb\x8e\xcf\x84\x95\xba\x89\xe7\x24\xf2\x41\xda\x8b\x0b\x14\xf5\x56\x35\xfd\x9c\x18\xa4\xbd\x84\x38\x91\x9e\xf7\x88\x38\xb1\x7e\x8e\x89\x93\xb0\xac\xf1\xad\xdb\xc0\x2e\xe7\xf0\x14\xeb\x96\xfc\x8f\x5a\xf2\x7f\xd3\x12\x7a\x9f\x58\x6f\x4d\x9e\x64\xaa\x26\xf9\x6a\x93\x14\x9b\xe4\x84\xd6\x9a\xa4\x65\x93\x1b\xa8\x8d\x28\xe7\xd2\xe1\xec\x2d\x19\xd5\x41\x23\xa1\xfb\x0f\x36\x87\x29\xa2\x77\xcf\x76\xaa\x8c\x86\x39\x1b\x9c\x96\x1e\x46\x83\x2a\x9c\x6c\x5d\x59\x67\xf0\xfe\x92\x57\x09\xe2\xe8\x4c\x0e\xbd\x56\xc3\xee\xe8\xf8\x25\x88\xb8\x09\x20\x2c\x5b\x58\x67\x13\x39\x2d\xa8\x56\xa3\xee\x2f\xb4\xc8\xe4\x2b\xf5\x56\x5e\x0e\xc6\x6d\x79\xa4\x71\xbc\xd7\x28\xdf\xff\xe6\x11\x18\x4e\xf9\xde\x5e\xcb\xdf\xf1\x48\x69\xfc\xcc\x6b\xe0\x12\xcb\xc6\xfd\x63\x8f\x96\xdf\xc1\x43\x4b\xcd\x5d\x01\x1c\x11\xa7\xce\x6f\xe1\xc7\x6b\xeb\x83\xaf\xd1\x4a\xd7\x6a\xf2\x7a\x62\x18\xf3\x91\x19\x13\xa9\x1d\xcc\xf0\x96\x73\x3e\x32\x23\xad\x78\xbd\x36\xf9\x52\xcb\x97\xb3\xa8\x31\x16\x6a\x89\xdf\xaa\x09\x48\x56\xa7\xaf\xed\xd9\xeb\xdd\xe2\xeb\x25\xd4\x04\x23\x07\xf9\x9b\x0e\xf2\xdf\xf6\x27\x91\x3d\x38\xf4\xb5\x93\x87\x81\x67\x18\x1b\x66\xc2\xae\x46\xe6\x47\xa7\xc3\x9b\x6a\x32\xd0\x27\x12\x6f\xb0\x71\xcc\x1b\x89\x56\x58\x6a\x24\x71\x19\xb3\x70\xf5\x63\x1c\x00\x4e\x00\xf8\xa1\xa2\x09\x05\xf4\xb5\xe2\x5a\xec\x5e\x1d\x36\x7c\x70\x5c\xf0\xf6\x98\xda\xdc\x7a\xa1\xa7\xcf\x36\xb7\x5e\x6b\x08\x3c\xf8\xc0\x87\xbe\x3c\xa4\x3e\x7d\x26\x6b\xee\xa6\x4a\x17\xb6\xd0\xd2\xeb\x5a\x43\xe2\xa3\x86\x5e\x28\xb7\x5e\x65\x0c\x1d\x14\xed\x51\x8b\x21\x0d\x69\xb2\x72\x52\xa1\xd8\x3b\x6b\x3a\xe2\x3a\xdc\x35\x22\x28\x19\xbd\xfd\x85\xd4\x54\x29\x65\xd2\xab\x72\xce\xc5\x3f\x68\x26\x96\x45\x1e\x53\xe2\xf8\xd6\xfe\x5f\x4a\x03\x4f\xdf\xc0\xc9\x4c\x18\x1a\x55\xd1\xe0\x53\x9a\xd1\x5c\xf3\x58\xd1\x8a\x92\x58\xca\x84\x93\xb1\xd0\xc9\x59\xb2\xa6\x14\x96\xb2\x80\x66\xcc\xa7\x39\xe3\xcb\x2a\x06\x48\x24\x4f\x33\x92\x46\x83\xc0\x3e\x62\x11\xe2\x4a\xca\x15\x99\x5f\x2c\xb8\xbe\x31\x1a\x45\xe6\xf6\xc8\x74\x4f\x63\xda\x7d\xe1\xb4\x77\x80\x6c\xeb\x33\x29\x7d\x35\xa8\x1a\x20\xda\x04\xcf\x8c\xf5\x0e\xf0\x90\x1b\x1e\x4f\x63\x87\x5b\xfc\x07\xdb\xd8\x6a\x39\xdc\x1a\xdd\x73\x56\x38\x05\xbb\xba\x30\xaf\x46\x26\xff\x0f\xee\x22\x52\xbc\x86\x40\xc0\xb3\xce\x4f\xf0\x02\x36\xb2\x5e\xee\xe5\xbd\xb6\xf4\xbd\xc5\xe5\xb1\x47\xa3\x31\xd5\x0e\xb8\x20\x65\x8a\xb8\xa7\x70\xa7\xea\x2a\x64\xce\x32\x7c\xc3\x9b\xca\xae\x7e\x69\x7b\xc4\x99\x59\x87\xff\x60\x73\x67\x66\x1d\xfd\x83\x75\x9d\xdc\xe4\x74\x46\xe7\x44\x3d\x74\xc9\x52\xa3\x4c\x18\xc6\x56\xbb\x06\xbf\x8f\xa5\x09\x06\x2f\xdd\xda\xae\x29\xf8\xe4\xf7\x4a\xc1\xc7\x1d\x78\xc4\xc9\xee\xcd\x60\x35\x84\x4d\xa5\xeb\x93\xde\x9b\xc1\x8d\x8e\xa2\x4e\xf5\xa3\x2f\x21\x47\x5b\x16\xf9\xd6\x95\x40\xac\x2b\x22\xb4\x77\xf9\x22\x88\x84\xd5\x90\x86\x0c\x72\xa2\x2a\xb2\x29\x2d\x3d\x42\xae\x28\xc0\xa7\x2c\x70\x23\xc0\x3d\xc1\x8d\xd4\x33\x29\x45\x1a\x69\xbc\x71\x34\x34\x7d\x9a\x68\xfc\x81\xe6\xa0\x66\xf2\xc9\x77\xcf\x5f\xbc\x5d\xf8\xbc\x7c\x24\xe4\x2d\x66\xca\x41\xeb\x72\x09\x72\x5b\x00\x68\x91\x54\xda\x06\x21\xcd\xb5\x69\x49\xc4\xe2\x95\x6e\x28\x11\xcf\x30\xa2\xdd\x10\xf9\x87\x50\x95\x24\x8e\xea\x5d\xcc\xf0\xcb\x11\x43\x67\x39\xcd\x36\x79\x0b\xb1\xb7\x34\x06\xc9\x4c\x7e\x35\x97\x23\x08\xdc\xa8\xd1\xae\xa3\xc0\x5c\x1e\x5f\x66\x2c\x6a\xec\x38\x99\xfc\x6c\x26\x41\xbc\xac\x92\x95\x27\x1f\x39\x79\x0b\x59\xa6\x9a\xac\xb7\xf1\xfe\x83\x4b\x3d\x3b\x1b\x39\xf9\x28\x3f\x63\x83\x7b\x33\xa1\x39\x71\xca\xbc\x0c\xf8\x86\x7c\x59\xc7\x5f\x37\x6b\x07\xdc\x56\x8f\xab\x0b\x2a\x4d\x84\xb5\xea\x74\x47\x89\x1a\xae\xef\xb9\xdb\x5e\x27\xb4\xae\x8f\x4c\xf5\x22\x8f\x2a\xed\xd0\xea\x0b\xd3\xaf\xa3\xbd\x9b\x8a\xbb\xad\x61\x3a\x6d\x6c\x10\x38\x01\x0b\x9d\x90\xf1\x0a\xc3\x29\xdd\x60\xa9\xad\x25\xd5\x82\x13\xf5\x7c\x28\x15\x68\xcf\x94\x5a\x1c\x3a\xaa\x0d\xa5\x6f\x6d\xcd\x03\xf8\x9e\xc3\xad\x33\xa9\x1e\x7d\x15\x77\xda\x8c\x65\x1d\x33\xdc\x0d\x0c\x43\xa0\x42\xdd\xf5\x77\xad\x69\x17\xd1\x90\xc6\x34\x20\xc4\x36\xc3\x2f\x1f\xe6\x07\x34\x06\xce\xda\xfe\x4d\x23\x01\x4d\x69\x08\xc0\xf9\x8b\x46\x42\x9a\xd2\x00\xf2\x6b\x9b\x74\xbc\xa6\x78\xe1\x5c\xde\x9b\xbe\xf5\x35\xac\x5f\x64\x84\xe4\x4d\xdc\xd4\x54\x99\xe3\xc8\x0d\x3d\x0a\xa5\x5c\xed\xbd\xfe\x38\xe7\x12\x07\x63\xf5\x40\xfc\xae\x7a\x2f\x96\xd5\x03\x51\x56\x3f\x52\xd5\xab\xa5\x2a\x3e\xec\xd7\x7f\xdd\xf0\xf8\x69\xbd\x61\x51\x83\x01\x74\xab\x6e\x18\xc1\x8b\x19\xd0\xcb\x91\xf2\xc6\x7f\x6b\x86\x14\x60\x90\x90\xe5\x0d\x74\x8c\xbd\x57\x27\x09\xb4\x3c\x00\x28\x67\x8f\x97\x90\x69\x1d\xa2\xe4\x61\x86\xec\xf2\xc2\x0c\x09\xe9\x70\xeb\xf9\x61\x8b\x15\x87\x8b\x85\xd6\xca\x0c\x14\x44\x05\x0a\x6c\x02\xad\x6c\xae\xf4\x33\xdd\x8b\xc0\x33\x43\x22\x05\x18\x7b\xab\x85\xae\xd5\xc7\x4f\xbf\xeb\x85\x94\x46\xe4\x87\x14\x5e\xda\x6a\x95\x18\x71\x0f\x3d\xfc\x41\xd7\x56\xf3\x84\xec\x23\x62\x30\xb1\x5e\x2d\x54\x2a\xe5\x9f\x77\x94\x57\xc9\x7e\x6a\x0a\xec\xb7\x40\xd5\xfa\x90\x0a\xec\xb5\x70\x0f\xbd\x66\x48\x68\x8c\x78\x35\xde\x1c\x65\x9b\x81\xf5\xb5\x8c\xd2\x7e\xc7\xcd\xb8\x72\x6d\x1e\x47\x6e\xe2\x95\xf1\x08\xb6\xcc\xf6\x17\x13\x0a\xbb\x09\x4a\x27\x9d\xda\xb3\x3b\xf0\xec\x16\x21\x1a\x23\x5f\x5e\xd4\x0b\x02\xdb\xb0\x87\x61\x56\x2e\x2f\xcc\xf3\x51\x3d\x8b\x40\x06\x3a\x3d\x5c\x2c\x32\x44\xd7\xa9\x61\x1c\xc1\xee\x49\xc9\x62\x91\xa9\xe7\x4c\x63\xef\xad\xb6\x93\x76\xb2\x8e\xa9\xc3\x2a\xa4\xb0\xa7\x33\x54\x6d\xd5\x31\xcb\x52\xb9\xb7\x31\x90\x09\xb1\xcd\x84\xa5\x72\xdf\x63\x3a\x26\x64\x32\x41\x16\x81\x6f\x4b\x55\x52\x9c\x99\x84\xec\x86\x8b\x85\x4e\x08\x42\xaf\x99\x92\xdd\xb0\xfc\xfa\x52\xbb\x80\x51\xcb\x7c\xfc\xef\x80\xed\x3f\x83\x21\xa4\x80\x7b\x9c\x82\xb0\x54\x2e\x23\x2e\xb7\x78\xb7\xdc\x0a\x74\xd4\x92\x84\x08\x7d\xa2\x36\x3f\xe1\x47\xab\x1f\xd5\x57\x3f\xd2\xd2\x91\x19\xe1\x42\x01\x2f\x4b\x08\x4e\x75\x48\x23\xb2\x58\x98\x01\x0b\xac\x51\xbf\x83\xab\x38\xea\x4b\xdc\xac\x0b\x04\xa4\xb3\xd5\xb6\xcd\xca\x16\x24\x16\x93\xbd\xb1\xe0\x26\x59\x2d\x81\x33\x54\xee\xe1\xa7\x8f\xb4\xc5\x52\x20\x93\x52\x3b\x56\xb0\x37\xee\xdb\xbe\x95\x26\x34\x7a\xcc\x26\x97\xa3\xb9\xb0\x7d\x2b\x7f\xa0\x69\x60\xfb\xd6\xed\x6c\x49\x23\x16\x3d\x9a\x21\x75\xc3\x31\xa7\x79\xcf\xa3\xe8\x36\x2e\xc0\xa4\xed\x27\x4e\x2f\x9f\x38\x1a\xb7\xdd\x64\x90\xc2\xc7\x9c\x46\x63\xee\xd1\x73\x00\x8c\x53\x4c\xf3\xc7\x9c\xc6\x90\xf6\x27\x40\xe2\x36\xa6\x05\x63\x4e\xef\x20\x6d\x78\x45\xbf\x1f\x12\xe7\xe7\x07\xda\xcb\x65\xac\x7f\xd7\xa3\x39\x73\x3d\xd4\x59\x9b\x26\x6b\xea\xca\x38\x1b\x27\x27\x80\x89\xac\x98\x03\x9d\x1c\xdd\x9b\x82\x72\xab\x38\xc3\xc7\x9c\x72\x34\x85\x2a\xad\x75\x94\x5b\xa3\xc5\x22\xc7\xe8\x72\x92\xef\xd4\xda\x5c\x21\xa1\x05\x0b\x80\x18\x16\x84\x4e\xb5\xb6\x7c\x43\xaa\xd0\x3b\x42\x2a\x7f\x4f\x99\xba\x1a\x9d\x2e\x29\xb7\xae\x03\xf6\x55\x4b\xc0\x53\xfa\x9d\x9e\xd3\xad\xb6\x72\xf0\x0f\xe4\x4c\x85\xce\x48\x81\x98\x38\xf9\x5a\x03\xd2\xc3\x14\xb6\x71\x52\xb5\x91\xd3\x08\x49\x4f\xc9\xa9\xe7\x4c\x3b\x25\x28\xd8\x31\xce\xdf\xf0\x89\x53\x01\xf3\xb7\xd5\x82\x7e\xca\xc4\xab\x27\x4e\x37\x2e\x9e\x20\xb5\x4d\xe8\x8c\xdd\x47\x1c\x92\x7f\x3e\xc9\x85\xcb\x61\xe9\xe6\x6a\xe9\xae\xcb\xa5\xeb\xb2\x5b\xac\x7d\xf3\xa4\x96\x2e\x87\xc5\xeb\xa9\xc5\xbb\x7d\x52\x8b\xd7\xde\x21\xf4\x4c\xad\xde\x8f\xa7\x8f\x56\x6f\xdd\x58\x1f\x36\x4c\x79\xe2\x27\x9f\xba\xbd\x4a\x14\xd0\x4f\xda\x7f\x4d\x20\x9d\x2b\x1d\x3f\x70\x2a\xe4\x80\x82\xc6\x64\xc6\x69\x41\x68\xa4\xdf\xfb\x4f\xa8\xe4\x17\xab\xa1\x05\x8d\x8b\x01\xcd\xe9\x8c\x38\x3f\xb8\x19\xd3\xeb\xa1\x19\xbb\x7d\x7d\x3d\xa6\x0f\xdb\x71\xb8\x41\xa3\x0b\xfd\x9d\x03\x54\xde\xca\xb6\xa2\x3d\x4e\x73\xda\x05\x98\x3c\x95\x29\xf1\x1e\xea\xc5\xa4\xec\x7a\x68\xa6\xb2\x15\x67\x5b\x7d\xf8\x0e\xc6\x7a\xa6\x03\x41\xb5\x9c\xa0\x12\x16\x82\x2a\x5a\x38\xa4\x05\xa5\xc1\xaf\x7c\xb3\x86\x72\x7c\x03\x5f\x25\xd0\xef\x41\x09\xb5\x81\x84\xda\x33\x42\x33\xc1\x06\xbe\x35\xa4\x45\xc0\x60\x02\xad\xfd\x18\x68\xa2\x72\xc7\x6b\x8b\xce\x5c\xd8\xdf\xf7\xe8\xc0\x87\x52\x78\x28\x69\x18\x8f\x99\xa9\x5f\x48\x67\x43\x3f\xca\x0a\x45\x00\x80\x3e\xf0\xb7\x18\x2b\x80\xbf\x51\x80\x1e\x28\x85\x23\x11\x32\xd7\x6a\x53\x6b\x87\x5a\x7f\xf3\xe8\x73\xc4\x8e\x1e\xcc\x81\x4f\xe8\x38\x81\x27\x75\x74\x76\x72\x20\x6f\x14\xe8\xc3\x1d\x2a\x7c\x85\x74\x3a\x32\x4f\x1f\xe8\x73\x44\xb0\x85\x32\xed\x4c\xa5\x3d\x47\xac\xff\x60\x9e\x3f\x98\xe3\x04\x83\xb0\x3d\x47\x1e\x7d\xb8\xa3\x02\x6f\x65\x7e\x70\xb3\x08\xa0\x9c\x14\x82\xa0\x2b\xce\xf7\xc0\x2a\xce\xe4\x9e\x50\x93\x55\xdf\x4d\x99\x40\x09\x92\x0e\x54\x90\x95\x33\xeb\x2a\xac\xef\x2c\xac\x4d\x8b\x80\x26\x34\xa3\x29\x6c\x34\x42\xa0\x49\xd8\xee\xeb\x8d\x9e\xd4\x1a\x55\x45\x60\x57\x12\xd4\x87\xe4\x64\xb9\x71\x63\x9d\x9c\xbc\x3b\xf4\x5c\x3f\xdb\xf4\x2d\xb4\xf4\xc7\x2b\x40\x1a\xb1\x37\x68\xc6\x76\x3d\x5a\x9c\xd9\xae\xb7\xac\xfb\x6b\x57\x7c\x4e\xe4\xf8\x2b\x95\xae\xc4\xcb\x04\x8f\x4a\x2a\x4d\xb1\x96\x13\xef\x8a\x35\x3d\x6c\x21\xa3\x4a\x24\x8d\x36\xcd\x58\x6b\x97\x7d\x1f\x99\x3e\x48\x58\xa1\x74\xd4\x9b\x10\xc3\x30\x53\x65\x59\x83\x47\x2a\x90\x46\xc5\x3f\xed\xac\x23\xb5\xdd\xe9\xf8\xf1\xf9\x58\xba\x05\x5f\xae\x84\xe8\x38\x7b\xe2\x8d\xa4\x71\xf5\xc0\x01\x9e\x03\x02\x1b\xb1\x23\x6d\x45\xa5\xbf\x4d\x3b\x82\x15\xc1\xc7\x32\x6e\x6b\x54\x27\x28\x5f\x4f\xdf\x45\x05\xa2\x78\x92\x40\x0b\x5a\x8a\xcd\xae\xfb\xd7\xdf\x29\xfe\xe7\x51\xb7\xbd\xf3\x4f\xaa\xfe\x79\xd4\xdd\xf9\xf3\x4f\xaa\xfe\x79\x9e\x52\x58\x63\xac\x00\x2e\x0e\xe4\xf9\x00\xdd\x4d\x49\x67\x62\xb4\x87\x82\x37\x0a\xa6\x67\x4c\x05\x0d\xf4\x81\x89\xf0\x91\xc4\x62\xdc\x4d\xdf\xdd\xf3\x08\x3d\x65\x3d\x26\x13\x2f\x58\x57\x46\xd9\x85\x82\x2a\x70\xa1\xd2\xbe\x47\x35\x34\xd6\x65\xbe\xf5\xa2\x2a\xbc\x2a\x4f\xd4\xa7\xcd\x8c\x0e\xd9\x25\x7d\xe0\xac\x99\xc9\xe8\xe3\x03\x8f\x1e\x71\x96\x35\x12\xe0\x0a\x3e\x0d\xb8\x73\xda\x3c\xe2\xbb\xa5\x9c\x63\x18\xa7\x0d\xfd\x0e\x14\xde\x30\xcc\x4b\x06\x49\x74\xc8\x4e\x1b\xaa\x1a\xb4\x97\x95\xee\xc0\xda\xbb\x03\x54\x06\x60\x17\xf4\x94\x0d\xe9\x50\x8a\xb4\x43\x86\x27\xd2\x23\x60\x15\x53\x0e\xdf\xe4\xd6\x76\x60\x0e\x61\x41\x03\xe5\x74\xfd\x88\xbb\x63\xef\x0b\x8c\xa5\x63\x06\x0c\x67\x20\x63\x7b\x03\x02\xdc\x40\x46\x33\x36\x3a\x40\x2f\x5c\xdb\xd7\xf6\x56\x9b\xa6\xdc\x17\xa9\x0a\x9c\x34\xa4\x3e\xb7\x13\x7a\x6c\xbb\xeb\xe1\x97\x8e\xaa\x00\xe3\xc3\x25\x9a\x62\x65\xca\x12\x6b\x35\x70\x52\x40\x37\x4e\x75\xd4\x24\xaa\xae\x47\x87\xee\x4d\x80\xd6\x5e\xa3\x47\xf4\xc3\x36\x24\x4e\xa0\x23\x1d\x48\x7d\xa8\x01\xaf\x14\xa2\x60\x80\x99\x47\x87\x7a\x60\x28\x39\x24\x04\x46\xfa\xb6\xa4\x87\x82\xa9\x2f\x75\xe9\x25\x01\xfc\x86\x73\x75\xc4\x2d\x9f\xb3\xde\xa3\x99\xd0\x83\x47\x22\xc1\x00\x08\xca\x99\x61\x6c\x4d\x4b\x7c\x7a\xf4\x60\x86\x04\xd0\xa9\xc4\x3a\x03\x9f\xce\x08\xb6\x11\xa1\x8d\x6d\x67\x7b\x60\x9f\xc3\x8e\xaf\x1a\x9a\xc3\x02\x08\x2b\x0d\xd8\x77\xfa\x83\x9b\x88\x0c\x08\x71\x26\xb6\x46\x8f\xb2\x7b\x02\x98\x39\x40\x67\x03\x1f\x9a\x3b\x03\xbc\x88\xe6\xa5\x99\x60\x30\x09\x80\x11\x9f\x46\xe6\x0e\xe9\xec\xd8\x2d\xfa\x12\xd5\x5e\xbe\x07\x6c\x9c\x00\xa6\x13\x21\xa1\xdf\x9e\xe8\x36\x34\x62\xf1\xc0\x24\xce\xb7\x27\xf6\x3d\x70\xc7\xde\x2e\xdb\x8e\xdc\xb1\x67\x18\xdf\x03\x77\x4f\xbe\xed\xc9\x00\x08\xdb\x11\xcc\xc9\xdd\x3d\xcc\x66\xf0\x62\x6e\x47\xb4\x08\x88\xb3\x1d\xc1\x64\x08\x74\xa8\xf2\x0c\x43\xdb\x1e\x90\xe7\x48\x42\xf9\xc0\x77\x7b\x73\xcf\x24\xd6\x0b\x81\x7e\x0c\x70\x13\x34\x5e\x22\xba\x1d\x59\x5f\x03\x36\x3a\x80\x87\x41\xc0\xf6\x06\xe5\xc5\x08\x36\x71\x5e\x10\x1c\x1e\x6c\x12\x68\x64\xec\x35\x1f\xee\xb0\x89\xd5\x66\x5f\x09\xdd\x90\x4d\x15\x7d\xd5\xd4\xe8\x40\x36\xf5\xce\x31\x07\x40\xd3\xa6\x9f\x3e\x06\xc9\x66\xfe\x58\x8c\x74\x74\x1f\xe0\xa3\xbf\x3d\x2d\x16\x38\xf6\x2f\xe5\xb7\x46\x91\x29\xc7\x3f\xc0\x2d\x8c\xee\x26\x43\xf6\xfd\x1b\x10\x0f\x9c\x3e\xaa\x8b\x52\x2c\xf1\x59\x16\x6f\xec\x10\x02\x33\x24\x42\xeb\x98\x8a\xd0\x9a\x28\xd2\x76\x7e\xcf\x8a\x00\xa6\xea\x6e\x9f\x6d\xb5\x2a\x8f\xa6\x58\xf7\x8b\x40\x83\xdf\xcf\x7f\x23\x58\x0c\x67\x78\x28\xbc\x0f\x87\xab\x07\x49\x75\x5b\x52\x87\x55\x43\xa6\xd6\x2c\xde\x8e\xac\x63\xe5\x15\xf7\xee\x5e\xc7\x63\x14\x21\x2b\x02\xd6\x02\x70\xc1\x44\x47\x84\xbb\xe3\xc4\x11\x61\xa3\x41\xa0\x02\x6a\xe5\x89\xe7\xcd\xd1\x57\xae\xe3\x69\x17\x81\xde\x92\x83\x2a\x8e\xf0\xdd\xbd\x2b\x42\x6f\x49\x08\x2d\x82\x06\xc3\x71\xcb\x39\xff\x45\x23\xe5\xb6\xc6\x39\x96\x6d\x14\xc1\x92\x20\xec\x1c\xfa\xac\xe5\x1c\x20\x34\xa9\xad\xf6\x1c\xd1\x17\xa0\x95\x99\x30\x8c\xf3\x7b\xc3\x30\xb7\x23\x2b\x14\x0c\xaf\x05\xdb\x54\x9e\xbd\x6f\xe8\xc3\xf7\xf3\xfb\x25\x71\x06\xd2\xd0\xf1\xfe\x2b\x37\xb7\x23\x82\x07\x58\xd3\xc5\x62\x4b\x18\x86\xb9\x35\xf0\x17\x8b\xf6\xee\xc0\x47\x1b\xd9\xc5\x62\xe0\x5b\x77\xfb\x44\xdf\xd6\x46\x55\x84\xa6\x23\x2e\xa3\xef\x3b\x30\xce\x2f\x43\x8e\xe8\xec\x50\x58\x2f\xac\x4b\x8f\xb8\x84\x56\x62\xcb\x94\x33\xc0\x71\x32\x71\x6f\x40\xd6\xc2\x37\x95\x25\x1a\x67\xee\xd8\x6b\xec\x94\x05\xa9\xfc\xc4\xe8\x80\x1e\x0a\xeb\x95\x9d\xe9\x45\x55\xd0\x80\xf5\x2e\xca\x6f\xd1\xb2\x43\x08\x26\x86\x61\x0a\x39\xa4\x2d\x35\x84\x37\xf4\x10\x33\x50\x5e\x31\x79\x0c\x70\x85\xb0\xf0\xe1\xd8\xb0\x4d\xa7\x1a\xe4\x4a\x97\xdf\xf5\x70\x19\xbc\x98\x40\x2c\x50\x16\x57\xe8\x2e\x81\xdf\xaf\x4f\x2c\x85\xd5\x3a\xe2\xf4\x50\x60\x0e\x00\x61\x1b\x1e\x8e\xd9\x3b\x34\x3e\xac\xa1\x71\x34\x12\xf7\xa0\x20\xae\xf8\x90\xb3\xa1\x25\xfe\xe9\x48\xa4\x2d\x39\xd2\x21\x10\xa0\x23\x5e\x86\xd5\x19\x72\x3a\xb4\x34\xab\x40\x94\x4b\x9c\x23\x4e\x9c\x8d\xcb\x26\x43\x12\xb6\x5c\x66\x8c\xc7\x9d\x96\xfd\xc0\x1d\xce\x2e\xee\x9c\xc2\x30\x22\x8c\x91\x80\xa4\xac\x45\x39\xbb\x8a\x69\x97\x95\xd4\x96\xf6\x14\xf9\x95\x82\x93\xb6\x3c\x56\x37\x28\x87\x7f\xda\x6f\x2f\x76\x97\xbe\xda\x3d\x3d\x84\x8c\xd6\xa2\x81\xd9\xda\x39\x63\xbe\x94\x84\xac\xb0\x03\xea\x4f\xb3\x30\x15\xf6\x69\xe7\x54\xe9\x55\xd6\x82\xf5\x9f\x7e\x10\xac\x1f\xe8\x7b\x0c\xd4\x1d\x83\xbe\xbc\x06\x9e\xe3\xb3\x1a\xcb\x55\x73\x12\x5e\x2a\x38\x66\xe8\xfa\x5b\x46\xda\x07\x9a\x0e\xa8\x1e\x29\x01\x88\x95\x67\xd2\xde\x34\x21\x8e\x5f\xf9\xd5\x55\x17\xd3\xf2\x88\x38\x65\x19\x36\xea\xeb\x46\x73\xe6\x43\x7b\x3a\x3c\x7b\x46\x73\x2b\xbe\x23\x4e\x0a\x0c\x85\x13\x4b\x8d\x87\xb8\x99\x02\x6b\x12\xff\xbf\xb4\xbd\xf9\x72\xdb\xb8\xb2\x38\xfc\x7f\x9e\x22\xfe\x2a\x3f\x15\x31\x82\x31\x72\xce\xc9\x9d\x73\xc9\x60\x54\xde\x63\x27\xde\xe2\x45\x8e\x59\xac\x53\x00\x09\x52\x32\x69\x4a\xd6\x62\x4b\xb6\xf4\xee\x5f\x75\x03\xe0\x22\xc9\x99\xcc\xbd\xe7\xa6\x52\x16\xb1\x37\x80\x46\xa3\x01\xf4\x52\x65\x2a\x9c\xa4\xbc\x4a\x25\x5e\xca\x93\x66\xe6\xa5\x7f\x56\xb9\x8c\xb4\x72\xbf\x9a\xf0\x74\x33\x2b\x3c\xca\x94\x77\xb0\x95\x3c\x45\xaf\x47\xba\x51\x27\x69\xa6\xe4\xf7\x8f\x28\x89\xd9\xfc\x48\x9f\x4a\x0b\xf8\x6f\x0c\x88\xd4\x3f\x9a\x9f\xc8\xb5\x16\xb7\xe6\x27\x26\x40\xbd\xec\x2c\x42\xff\x34\x1e\x0e\x50\x49\x5e\xf3\x14\xbd\x7d\xe3\xd0\xbc\xaa\xd2\x7d\x28\xdd\x8f\x7f\xb4\x16\xc0\xfb\x2d\xe3\xe7\x0b\xca\x5f\x5a\xec\x7c\xa1\x79\x15\x39\xdf\x3d\x19\x1b\x89\x93\xa6\x9e\xd6\x45\x0d\xa9\x62\x3a\x73\x13\x0b\x4e\xba\x99\xd4\xd0\xea\x7b\xd7\xe0\x95\x2a\xf0\xea\xc9\xe2\x95\xc6\xa9\x02\xa5\x76\x56\x24\xc7\xb5\x68\x78\xc4\x4f\xac\xb0\x72\xc8\xd2\x46\xe3\xce\x09\x97\x5e\x9d\x4a\x81\x4f\xc1\x6e\x78\xa4\xdf\x9b\x0a\x41\xc1\xc3\x3f\x30\x41\x8e\x30\xe5\xf0\x8f\x52\x32\x93\x7d\xd1\x49\xa1\x4e\xfa\xf2\x07\x21\x64\x01\xad\x3c\xc5\x68\x15\x0c\x3e\x0c\x71\xd5\x01\x63\x2f\x91\x34\x1a\xa7\x27\xc2\xa9\xba\x06\x1f\xfc\x4c\xc4\xbe\x22\x2e\xbf\x24\x2d\x7f\xba\xf2\x7e\x5a\xf4\x5f\xf9\x32\xf0\x22\x95\xa9\xb1\x7a\xaf\x8c\xfe\x57\xd8\x68\x6c\x7d\x2e\xce\x59\x40\x27\x11\x37\xf1\xc7\xf8\xd1\x47\x2d\x31\x19\xb0\xf0\x79\x83\x5f\xd8\x83\x94\x89\xc1\xb7\x3c\xa9\x43\x67\xdf\xbc\x90\xdd\x5d\xf3\xab\xef\x8e\x39\x95\x49\x1a\xd1\x8d\x2d\x74\xdf\x62\xea\x85\x81\xee\x0a\xcc\x62\xbc\x64\xdb\x1c\x64\x21\x60\x6c\x0e\x7a\x80\x19\x21\xa9\xbf\xee\x9a\x3b\x88\x0d\xe5\x8b\xc0\xf6\x26\xf6\x45\xa0\x8f\xc9\x46\x22\x2a\xc2\x28\x7f\x0a\x8b\xe9\x75\xe1\x25\x6c\x70\xc0\x85\x97\x20\x28\x40\x34\xd0\x02\x72\xdb\x09\xd9\x43\xea\xb4\x08\x3d\x11\x4e\x42\xfd\x80\x10\x17\x1d\x86\xb4\x88\x97\x18\x11\xa1\xd0\x83\x76\x78\xb2\x80\x9f\xe2\x40\x65\xde\x83\xcb\x43\x0b\x21\x98\x4f\x77\xcc\x7e\x2d\xe5\xd4\x74\xb4\x24\xa0\x64\xf9\x39\x5a\x58\xa0\x0b\x69\x0b\x73\xc9\x02\xc7\xb9\x85\xbe\x34\x7b\xd5\x46\xf1\x9f\x62\xf6\x78\xe0\x99\x51\xe2\xb5\x83\xe7\xbb\x16\xd2\x9e\x74\x49\x49\xef\x75\x81\x8f\x35\xa9\x9f\x68\xa7\x38\x8d\x46\xc6\x6e\xf0\x0f\x8b\x87\x15\x65\x08\x1d\x61\x15\x20\xac\x6d\x48\x23\x2e\x9e\xf9\x79\xc0\x06\x07\x5e\xe4\x0c\xe0\xac\x9a\xfa\x83\x80\x6f\xb4\x68\xe8\x0c\x28\x24\xf9\xa9\xee\x55\x7f\xe8\x0c\x50\xb4\x93\xa4\xe8\x28\x22\xf6\x07\x01\x9b\xde\xcf\xe7\x12\xa8\x6c\x25\x59\x87\xed\x20\x9c\xd8\x25\xba\xaa\x26\x76\x77\xe4\x9a\x31\xb9\x85\x55\x36\x16\xf8\x40\xa1\xf7\xe1\xdb\xbd\x6a\xda\x5e\x2d\xed\xf2\xb0\x9a\x76\x50\x4b\xdb\xa9\x95\xdb\xad\xa5\xed\x1e\x57\xd3\xbe\xd4\xd2\xc2\xfd\x6a\xda\x7e\x2d\x6d\x54\xab\x73\xc7\xa4\x2d\x2a\xd6\x72\x17\x1d\x00\x9f\xaf\x7b\xe2\x7d\x9d\xba\x15\x59\x81\x03\xe5\x48\x60\xff\x67\x6e\x45\x5a\x00\x23\x67\xc6\x59\xf4\xde\x4a\x3d\x95\xdb\xf2\xc7\xa1\x75\x12\x5d\xaf\x4e\xf1\xd5\xea\x68\xec\xc5\x3c\x34\xb6\xe7\xce\x60\xc9\x5e\x3c\x52\xe9\x1f\x04\xb0\x1e\x20\x76\xbf\xdb\x0e\xd9\xd5\x8b\x0f\x71\x81\x7f\x10\xb8\x21\x93\xa7\x5e\x5c\xf7\x76\x16\xd3\x5d\xe5\x86\x6c\xf6\x60\x85\x8d\x43\x36\x54\x40\xf0\xf8\xf0\x8b\x70\x42\x76\xb5\x4f\x25\x8a\xc1\x7b\x45\x77\x23\xb4\xf1\xa1\xd5\xb2\x63\x3a\x14\x51\x6f\x02\x9c\xc1\xfd\xb9\x1b\x2e\x16\x5e\x07\x26\x6c\x6d\x0f\x63\xfb\x10\xce\x1e\x15\x95\xac\x9f\x51\xc9\x4e\x9e\x81\xb6\xc6\x43\x9e\x74\x0a\xef\xb5\xa4\x94\xb8\xf3\x3a\x30\xc5\x6b\x6b\xeb\x96\x05\x60\x79\xa6\x54\xb2\x6e\x56\x16\x6d\xbf\x8e\xfb\x03\x37\xc4\x2d\x38\x53\xf1\xd8\x0d\x61\xd9\x3f\xa3\x95\x68\xe4\xcb\xbb\xaa\x97\x74\x21\x7a\x3b\xa0\xf1\xd0\xad\xb6\xbf\xb0\x76\xfc\x3a\x80\x28\xbf\xd0\x7a\x72\x2f\xa0\xf9\x7b\x54\x31\xa9\x27\xc5\x90\xe4\xbf\xbc\xe8\x47\x96\x8d\x10\xf5\x3e\xaa\x76\x98\x07\xc2\x89\xe8\x47\xe2\xdd\xc1\x6f\x84\x47\x40\x80\x6f\x13\xff\xfe\xbf\x8f\xed\x7f\xb8\x1f\x09\x30\x09\x85\x24\xa3\xba\x17\xcb\x0a\xcb\x5e\x9e\x6b\xcb\x20\x8a\x2b\x76\x2a\x7f\xff\x48\x2f\x85\x13\x52\xe8\xdb\xe6\xc7\xdf\x14\xa1\x03\x1d\x1c\x9a\xe0\x9d\x0e\x1e\x06\x4d\x45\x28\x8e\x51\x93\x2b\xe2\x61\x21\xcd\x24\xe1\xb0\x00\xaf\x38\xa8\xc6\x0d\x03\xba\x55\xf2\x8f\x43\x15\x8e\xdd\x10\x15\xa1\x51\x36\xfd\x5d\x07\xd6\xdc\xdb\xc8\x5d\xe8\x9f\xeb\x6b\x26\x98\x34\x94\x4c\x1d\xa7\xfc\xf9\xca\x09\x99\x12\x34\x64\xfb\x92\x8d\x4b\xc9\x08\x6b\xb1\xce\xba\x97\x97\x2c\x1f\x06\xec\x16\x25\xe6\xb2\x67\x9a\x68\xf6\x56\x6d\xe2\x03\xf6\x6f\x31\xf0\x52\xe6\x14\xa9\x9a\x95\xb8\x54\x3f\x23\x20\x86\xd0\x88\xf7\xcc\x0c\x25\xd4\x44\x8f\x53\x02\x6b\xac\x8c\x47\xbf\x14\x36\x18\x43\x30\x05\x7a\x5d\x75\xcf\x7b\x3c\x12\x74\xa3\x45\x2c\xb7\x24\x99\xfc\x2f\x34\x83\xb1\x52\xb9\xfc\x2f\x42\x68\xaa\x37\x45\xa2\x7d\xef\x28\xf3\x5b\x3c\x42\xbd\x7e\x7f\x74\xbf\x7f\x13\x4e\xc4\xa6\x34\x62\x33\x1a\xb3\x29\x8d\x61\x8d\xf7\x27\x63\x1c\xdf\x74\x05\x47\xab\xf7\x80\xdd\xce\x2a\xe3\x5d\x98\x6b\xb9\x8f\x7d\x89\xc3\x2e\xb9\x60\xb3\x33\x23\x4f\x1d\xa1\x2d\xb1\xe7\x2b\x27\x41\xcb\x87\xc5\xb8\xa3\x67\xc7\xd9\xf3\x9f\x5c\xb2\x97\x7f\xcd\xe7\x21\xcb\x87\x7f\xf2\xd8\xf8\xcb\x6f\x34\x62\x6b\xa6\xb6\x8a\xc2\xb1\xf5\xea\x0f\x1d\x8e\x08\xc5\x5f\x85\xc2\xff\x1a\x73\x56\x12\x12\xee\xa8\xaa\x25\x19\xd2\x9e\xc2\x6e\x0e\x73\x5a\xb3\x15\xd3\x6e\xb9\x5b\xae\xae\x7c\x8b\xb2\x8f\xbf\x39\xd1\x26\x9c\x95\x5b\x9c\xf3\x64\x3e\xc7\x89\x8e\x9b\x09\xf9\x8c\x5f\x11\x69\x34\x8a\xa8\x3f\xf5\x17\x69\x3b\x06\x21\x20\x12\x56\xa7\xce\x49\xdc\xb8\xc9\x13\xf3\x2c\x51\x38\xd1\xca\xc7\x82\xb2\x7f\x10\x9a\xf0\xb3\x82\xbd\xe4\x4e\xc8\xfa\x3d\xd1\x4e\xdd\x2d\xf2\x9b\x64\xe2\xfc\xf7\x8f\x9e\xe4\x8e\x6a\x77\xfd\x99\x0c\x5c\xa8\x8f\x38\xc9\x26\x66\xc5\xca\x93\x66\x48\x3c\xc4\x1e\x98\x93\x98\x78\x42\x7f\xa3\x38\xb2\xf5\x3d\xfe\x4d\x38\x66\x8e\x69\x21\x9f\xf6\xae\x03\x7b\xcf\xd2\xfa\x59\x2f\x22\x67\x1c\xaf\x09\x57\x2d\x2a\x0b\xc5\x2e\x30\xaa\x60\x62\xd1\xa4\x65\x64\x26\x16\x78\xab\xf5\xe4\x97\xc6\xcb\x29\x93\xff\xa2\xa1\x23\xd9\xd3\x7f\xa1\x3d\xd0\xa5\xc4\x67\x9d\x38\x45\xa4\x5e\x4e\x9c\xe9\xc4\x17\x48\xcc\x96\x13\xb7\x75\xe2\x0e\x24\xe6\xeb\xe8\x3d\x6c\x2d\x28\xd2\x07\x2b\x60\xef\xc6\x85\x01\xda\x87\x9f\x19\x3d\xb8\x71\x13\x36\xa5\x87\xf0\x33\xa3\xe3\x13\x37\x65\x53\x3a\x81\x9f\x19\x7d\x3a\x71\x33\x36\xa5\xcf\xf0\x33\x83\x65\x92\xd7\xd6\x46\xd2\xa9\x48\x4d\x6f\x84\xec\xe6\xa0\xb4\xa6\x6b\x05\x60\xb3\x08\x17\x47\xb1\x52\x34\xa9\xc5\xd5\x52\xac\x07\x55\x59\x0f\x51\xb1\x1e\xa2\xfa\x7a\xa8\xf0\x74\x71\x81\x43\xe8\xb1\x89\xa6\xbc\x45\x33\x2f\xe3\x00\x01\xca\x2e\x97\xa7\x3b\x09\xcb\x22\x63\xbb\xa9\x20\x70\xc8\xd3\xa1\xbd\x14\x9f\x18\x9d\x42\x6e\x08\x1b\x05\x66\xdf\xb6\xae\x63\xfc\xad\x80\xdd\x6e\xea\xcf\x56\xc0\x6e\xdd\x96\xab\x98\x38\x27\xbf\x65\x6c\x3f\x15\x74\xc2\xf5\x3b\x7e\xbe\x89\xea\xaa\x88\x89\xf1\xe6\xe8\xf7\x8f\x54\x2f\xab\x01\xcd\x71\x3e\x06\x6c\x4a\x07\x7c\xc0\x66\x74\xa4\x33\x8d\xe8\xc4\x3a\x2a\x42\x42\x6f\xae\xfc\xf1\x71\x81\x4d\xe9\x08\xa8\xd3\xe0\xc0\xcd\xd8\xe0\x60\x51\xf0\x4a\x49\xc9\x17\x9e\x2d\x1f\xdd\xf4\x43\x37\x8c\xa9\x79\x78\xb7\xf6\xa8\xdb\x86\x50\xf6\x33\xe2\x86\x55\x32\x4f\x36\x23\x76\x98\x89\xa6\x13\x31\x71\xde\xc4\xe5\x37\x7b\x6e\x46\xb8\x06\x2b\x07\xa6\xeb\x9b\x1a\x03\x2a\x0c\xf7\xd9\x2d\xb8\x41\xc9\x9e\xa5\xf1\x50\x3d\x13\x65\x64\xef\x5e\x47\x26\x65\x46\xff\x20\x28\x4c\xfc\x17\xc2\xd3\x65\x9f\x7a\x05\x2e\x15\xbe\xd8\x4f\xeb\x9e\xcf\x0b\x4c\x96\x74\xe6\x86\x8b\xe2\xce\xa9\x88\x0f\xe9\xcc\x95\x8b\xc5\xca\x7d\xed\x92\x17\xf6\xb2\xcd\xb8\x22\xf8\x63\x40\x42\x30\x60\x40\x61\xdc\x42\x42\x35\xe6\x06\x9a\xc8\x56\x58\x73\x59\x97\x4a\xd3\xa7\x2c\xc0\xe8\x7e\x8e\x7e\x3f\x42\x7c\x52\xdc\xe0\xdb\xca\x1e\x0a\x61\x92\x45\xee\xbc\x1c\xd1\xd0\xb8\x1e\x0d\xd9\x53\xc4\x23\x6f\x23\xd7\x45\x24\x9e\x00\xbb\x91\x63\xd2\x29\x1e\xc6\xe0\xf0\xa7\x4d\x76\xe8\x5c\x4e\xc8\xf2\x8c\xff\xd8\x27\x6b\x74\x27\x76\x97\xf0\xc2\x40\x85\xf5\x84\xec\x54\xfe\x56\xe5\xff\xca\x49\x3e\x2c\xc5\xd6\xb5\x9c\x37\x3e\xe6\x2d\xeb\xda\x96\x86\xe7\xf1\xc9\x11\xaa\xd7\xea\x77\x28\x1f\x6a\x24\xef\x48\x5b\xb0\x3d\x07\xa3\x38\x7f\x4e\xda\x61\x7b\xcb\x6d\xb9\xa1\xbb\x55\x02\x79\xf4\x46\x6b\x85\xb6\xef\xaf\xb5\xb3\xb1\x11\xba\x1b\xad\xb2\xda\x2f\x6f\x75\xa2\xaa\x58\xfc\x3f\xec\xc3\x47\x77\xab\xde\x87\xce\x4d\x75\x9c\x51\xe3\xb9\xea\x82\x89\x73\x1e\x6a\x61\x5c\x2b\x9e\x0e\x70\x95\xc5\xb1\x40\xc5\x10\x39\xe0\xdb\x7c\x2e\xb4\x0d\xd8\x15\x16\x40\x2b\xbf\x58\x73\xe4\x2c\x11\x83\x6a\x57\xc4\xbd\x23\x88\x69\xcc\x6f\x55\x5d\x02\xdc\xdd\xbc\xed\x1a\x85\xc6\x56\xfc\xbf\xb0\x3a\xa3\x47\x42\xa0\x22\xcd\x52\xa4\x24\x15\x83\xcd\x85\x52\xa6\x93\x34\x79\x44\x25\xfc\x51\x68\x0a\x26\x0f\x9d\x84\x50\xfc\x95\x40\xf8\x90\xc0\xed\xa5\xc2\x4d\xe8\x6e\x2a\x5c\x49\xf7\x53\xe1\xc6\x40\xd9\xc4\x82\x68\x99\xf1\x84\x4b\xf6\x84\x92\xb9\x1b\x49\xad\xd3\x15\x43\x3a\xd2\x18\xd2\x41\x65\x8a\xdc\x9e\xed\x05\x6f\x79\xe2\x73\xa2\x5d\x75\x78\xa2\xc9\x3f\x92\xd8\xc1\xa0\x08\xa8\xfe\x6d\x6e\x05\xb4\x55\xda\xf3\xd2\x4e\x88\x13\x36\x39\x47\x09\x59\x6f\xf0\x99\x8f\xbc\x41\xb3\x49\x47\x9b\x9b\x44\xe8\x84\x41\x40\xa5\xfe\x1a\x05\x54\x8f\x54\xc2\x1e\x0f\x7c\x11\xb0\x51\x2a\x74\x5d\x92\xb7\x3c\xf9\x39\xd1\x17\x0a\xb2\xd9\xc4\xb2\xa9\x2f\x75\x01\x61\x9b\xb4\xd9\xd0\xbd\x48\x91\x6f\x57\x42\xc6\x01\x37\xb5\xda\x22\x9c\xcb\xf9\x5c\x72\x9e\x58\x6f\x24\xed\x01\x43\xff\x15\x6c\x9c\xa2\xeb\xc6\x96\xf6\xf5\xc1\x13\x73\x27\xb6\x0a\xff\x3b\x9d\xa4\x7b\x80\x9f\x45\x17\x96\x20\x3a\xaa\x02\x74\x54\x03\xdc\x4e\x01\x6c\x81\xb9\x3e\xaa\x15\x88\x93\x2f\xcb\x5f\xa2\x01\xd8\xc2\xda\xb1\x5c\xb6\x76\x3c\x9f\x6f\xf4\x7a\xce\xed\x9b\x56\xba\xec\xad\xe0\x53\xbc\xb0\x82\x7d\xa1\x36\xea\xf5\xeb\xd6\x1d\x43\x7e\x0e\x50\xa1\xe8\x38\x84\xcc\x69\x8a\x6e\x01\x57\xf6\x10\x0b\xc3\x7c\x86\xc8\x9e\x62\x5a\x04\x69\xca\x70\xd5\x68\x0c\x0d\x39\x4b\x27\x6a\x6e\xc1\x51\x10\x78\x36\x27\xda\x54\x10\x52\x5e\xf8\xa7\x16\xb7\x36\x0c\x2f\xf1\x60\x8f\xe5\xaf\x2f\xff\x72\x15\x15\xe7\x6e\x4c\x0f\x33\xe1\x4a\xcb\x69\xb7\x5b\xae\xe3\xc4\xb0\x99\xaa\x4d\xa8\xac\xa6\x4f\x7f\x5e\xf5\x7f\x79\x0f\x0b\xc4\x76\xca\x2b\x04\x88\x2e\xba\x75\xab\x77\xf1\x41\xe9\x6b\x00\x4d\xd2\xaf\x98\x52\xb8\xfe\xe2\x48\x5f\xa1\x80\xb3\x57\x08\x89\x3b\xa1\xe9\x5e\x68\x8c\x58\xc6\x9b\x46\x5f\x38\x2e\x0d\xfe\x17\x2e\x46\xd0\xca\x25\x54\xb4\x45\x36\xf1\xb7\x55\xdd\xe7\x7e\xbc\xa5\x8e\x97\x45\x9e\x28\x4d\xd6\x4b\x1e\xc2\x9e\xf7\x21\x69\x87\xfe\x87\xc0\x97\xa5\xd1\x0f\xc0\x3e\x8a\x14\x05\x4d\xbf\xcb\xaa\x96\xb8\x57\x2a\xb6\xa0\x19\x0c\xe4\xb4\x4f\x72\x2e\xb4\x19\xb5\x78\x0b\x16\x3b\x7e\xa6\x97\x7c\x63\x4b\x7f\x8a\x1e\x7f\x7d\xd1\xb7\xd9\x74\x7f\xe2\xb6\x68\x96\xb9\x2d\xfa\xfd\xd8\x6d\xd1\xcb\x63\xb7\xb5\x58\xdc\x77\xfc\xaf\x01\x13\xf1\x8a\x94\x8b\xa9\xd4\x0f\x03\xae\x9d\xcc\xa1\x91\x4a\x53\x29\x7b\x51\xdc\xc8\xdf\x88\x1e\xdb\x9f\x70\x38\x3b\xd8\x60\x06\xd4\x67\x56\x04\xbf\x1f\xd7\x52\x2f\x21\x38\x23\x0b\x6f\x32\x70\xb0\xf1\x25\xec\x35\xdd\xf2\xe3\xc7\xc0\xd1\x9e\xce\xb4\x73\x63\x57\x2e\xc8\x82\x94\x83\x90\x56\xd8\x91\xa5\xa1\x38\xe0\x52\x7f\xec\x0d\x79\xa8\xbf\x64\x97\x47\xfa\x6b\x36\xd3\x4f\xb6\x3a\x43\x4b\xbf\x60\xc2\x80\xea\x98\xee\x05\x26\x2f\x7e\x38\x69\x87\x4e\xc6\xc4\xeb\xf0\x14\xa0\xf4\x3a\x6c\xa7\x6a\x5e\x5f\x37\xe4\xff\x90\xc0\x33\x98\xc6\x4c\xe8\x79\xec\x98\xaa\x88\x97\x76\x98\x62\x3b\xfe\xb7\x40\x5b\xab\xae\x4c\xe2\x45\x9d\x40\x1c\xb0\xe7\xb1\xf7\x1d\xd1\xbe\xa6\xc1\x61\x7b\x77\xc0\xba\xa1\x23\x29\x44\x68\x8d\x8d\xe7\xb1\x23\xb0\x09\x81\x30\xab\xe7\xf7\xb7\xa7\x0e\xd4\x33\x08\x81\x5d\xfa\xa6\x93\xe9\xf7\x2f\x14\xef\x3c\x07\x02\x4a\x95\xa8\x7a\x59\x6f\x7e\x6f\x88\xe5\x7e\x06\xc1\xde\x70\x09\x84\x8a\x1a\x6a\xb5\x32\x25\xbc\xeb\xbf\x53\x4b\x85\x7f\xb6\xab\x5e\x3a\xe7\x1a\xec\x6c\x22\xf4\x26\xeb\x5c\xe8\x88\x87\xc9\x52\x3f\xbe\x97\x65\x8e\x46\x98\xe5\x39\xb6\x65\xbe\xe8\x88\xe9\xd8\x46\x98\x5a\xcb\x1c\xa6\xd6\xe7\x22\xc7\xa1\x2e\xf2\x54\x44\x24\x3a\x62\x5c\x44\x1c\xed\x63\xc4\xac\x88\x10\x07\x18\x31\xd1\x11\x8b\x0e\x00\xbd\xc6\xb6\xf7\x5d\xe6\x98\x89\xd4\x13\x24\x20\x46\xc0\xf4\x4d\x37\xb9\x64\x53\xa0\x96\x9b\x28\x7d\x64\xdd\x19\xb4\x3c\x09\x0b\xb0\xa5\x7d\x71\x95\x2b\x49\x96\xcb\x88\x4a\x96\x5e\xce\xe7\x12\x57\xcb\xcd\x50\xd0\x57\x94\xd4\xc5\x05\x4a\xa7\xd2\x05\xfe\x5f\xaf\x50\xe0\xf6\xf5\xe2\x5c\x2c\x08\x16\xe3\x1b\x2d\xaa\x0b\x5e\xbd\x5d\xf0\xfb\xb1\x2d\x78\x79\xbc\x58\xa0\xb5\xf5\x0e\x4c\xc2\x5f\x77\x90\x86\xa6\x83\xa1\xed\x60\xb8\xda\x41\xc1\x85\x7f\xf1\x18\xe8\x8e\x8a\x00\xc8\x56\x4b\x6b\x3d\x02\x84\xd8\x6f\x24\x66\xd4\xf6\x3f\xac\xf4\x3f\x84\xfe\x63\x07\xae\xff\x4e\x07\x3a\x30\xff\x6b\xe0\x9f\x7d\x73\x70\x8f\xd4\x57\x7d\x63\x9c\x1b\xa4\xd9\xe7\x5f\xb4\xd6\x1c\x36\x75\x07\x4d\x4d\xa5\x2b\xe9\x8b\x72\xc3\x05\xda\x4f\x30\x74\xa5\xb0\xe9\x52\x84\x6f\x4e\xaa\x16\xec\x67\x33\xad\xba\x87\xf5\x74\x6c\x3d\x0b\x42\x33\x73\x05\x71\xda\xc7\x53\xba\x25\x53\x21\x02\x3b\x1d\x0b\xbe\x46\xb8\xd9\x00\xc8\x2b\x8d\x17\xad\x89\xb2\x0e\x94\x15\xaf\x50\x9d\x1b\xbb\x5c\x04\x42\x71\x3b\x14\xd4\x68\x46\x01\x39\x3d\xeb\xe3\x8d\xde\xbb\x0e\xac\x88\xb7\x86\xc8\xab\x41\x50\x74\xe8\x43\x75\x60\xc4\x02\x6b\x44\x68\x7e\xf4\x61\x61\x40\x57\x9e\xde\xae\xb4\x3e\xee\x45\xa5\x3f\x6a\xa3\x4d\x07\x43\xf5\xa4\xf2\xf1\x9e\x39\x18\xdf\x3a\xc2\x57\x8f\x01\x2a\x8e\x16\xcd\xdd\xe2\x20\x5a\xf2\xce\x44\x8c\x0a\xf8\x88\x66\x08\xc4\xf8\x6f\xf7\xec\xfb\x5b\x3d\xeb\x16\x3d\x9b\xfd\xed\x9e\xa9\xd1\x12\x1e\xd9\x4a\xf3\x01\xc2\x3f\x83\xec\x50\xf5\xe4\x6f\xc3\x7b\xf9\x16\xbc\x43\x03\xef\xbb\x0e\xec\x07\x7f\x13\xe0\xb8\x06\x30\x7d\xee\x2a\x95\xed\xa9\x6c\x2c\x5c\xc1\x22\x35\x16\xbd\xec\x97\xa6\x67\x88\xdd\xab\xde\x8b\x65\x9d\x65\x57\xbb\xc3\x30\x70\x9e\x55\x61\xe9\x23\x82\xc3\xa5\xbe\xd8\xb8\x1d\xb9\xfa\x4a\x2c\xac\xba\xed\xf7\x04\xec\xef\x7c\x70\xd4\x0e\x79\x57\x38\x91\xbf\x15\x10\xf7\x9f\x1c\xbd\x3b\xb7\x9d\x90\x43\x44\xbb\x48\x30\x2c\x22\x86\xb5\xe1\x58\xfc\xfc\x47\x40\x88\xfb\x8f\xb2\x90\xcd\x5f\xc9\x4a\x5c\x55\x44\x7b\x11\xba\x84\x0e\x69\x7c\xef\x2a\xfa\x65\xea\xc6\x0b\xcf\xac\xa9\x51\x53\xd2\xa8\xee\x32\x72\xcf\x8d\xf8\xeb\xed\xb3\x0b\x45\x6d\xbe\xc9\xa3\x58\xc9\x78\x76\xe8\x46\x65\x13\xe8\xeb\x2a\x22\xc6\xe1\x23\x7f\xbd\xbb\x70\x23\x5b\x3a\x7d\x5e\x2d\x7d\x0e\xa5\x5f\x0f\xfb\xc2\xb5\x55\xd8\xdc\x83\x35\xb9\xfb\x33\x51\x6d\x6c\xa9\xfe\xde\xac\x56\xc2\xde\x45\x09\x76\x1b\x09\x7d\x40\x5f\x4c\x06\x4e\xe7\x7f\xc8\xbc\x3d\x54\x98\xb7\xb4\x63\xd9\x23\x6a\xe2\x58\x2a\xcd\x02\x3e\xb7\x5c\x5b\xde\xe2\x1d\xeb\xf2\x63\xf1\xc3\x79\xe8\xd0\xb4\x43\xbc\x07\x64\x5e\xf3\x4f\x35\x54\x36\x05\xc5\x9a\x82\x25\x00\x9d\x3a\xfb\x73\xae\x8f\x67\xa9\xdc\x40\x8f\x2c\xfa\xeb\xee\xc8\x6a\xb9\x2f\x3c\xc1\x5f\x17\x15\x9f\x67\x70\x48\x33\x66\xeb\xac\xd1\x3a\xeb\x2e\xce\xf8\x8a\xdb\xbd\x76\xa2\x52\x5f\x55\xf1\x88\x59\x7d\x59\xb5\xe4\x30\x4a\xf9\x71\x60\x6c\x89\x27\xec\x06\x0d\xf0\x59\x3b\x6a\x29\x3f\x3e\x77\xfc\xd1\x11\x0d\x69\x1c\xc0\x76\x94\x06\xfc\x35\x54\xf9\x58\x0d\xdd\x84\xdd\xd8\x27\x4f\x2c\x66\xae\x1c\xd8\x0d\xbb\x3f\x6f\xeb\x1f\xd7\xc6\x61\xcc\xfd\xb9\x1b\xb1\xbb\x7f\x52\x8b\xb5\xf1\xa2\xd0\x9f\x7a\x2f\x16\xef\xf4\x58\x66\xe3\x35\x64\xc1\x6c\xeb\xd7\x13\x47\xf8\x62\x18\x00\x85\xb0\x94\xe2\xb6\x94\x1e\x29\x4f\x66\x5f\x46\xc5\x36\x35\x9b\x95\xf2\xef\xc2\x1e\xe2\xa4\x17\xf2\x90\x73\x61\x2e\x62\x4a\xc1\x29\xbc\x8e\xfa\x71\x22\xac\xcf\xe9\x08\x03\x21\x1c\x89\xc4\x9f\x51\x5b\xba\xe1\x42\xcf\xae\xd1\x86\xd6\x82\xcf\x86\x5c\x68\xe7\x4f\xe1\x06\x8f\xb4\x8f\xf7\xce\x1e\xfe\xc8\x7d\xfc\x19\x1d\xe1\xcf\xb3\xfe\xd9\x3b\x26\x6e\x08\xe7\x9a\xe2\x95\x56\xba\xf1\xa8\xe6\x30\xad\x72\x02\xdd\x70\xcc\x9d\xb3\x60\xe7\xda\xd7\xc5\x16\xc5\x4f\x7c\xb0\x34\xdf\xf8\xa6\x69\x3e\xb7\x83\xcd\x8f\x46\x15\xb1\x3c\xba\x22\xa5\x2a\xae\x6b\xa1\x0b\x86\xa8\x7d\xd8\x77\x9f\x8c\x8b\xc8\x29\x6a\x44\xce\xa8\xb2\xe4\x2d\x12\x55\xdd\x40\xc1\xf2\x56\x69\x36\x39\x6f\x19\x85\x00\xff\x72\x1a\xb0\x29\xcd\xcd\xd7\x8c\x0e\x78\xea\x7f\x7b\x09\xbc\x6c\x33\xfc\xcc\x07\x8d\x46\xb6\x19\xfe\xc9\x37\x07\x8d\x46\xbe\x19\x61\x44\xbe\x19\xe9\x08\x27\xe3\x4e\xb6\x19\x92\xdf\xf0\x6f\xd3\xc9\x37\x23\xf2\x1b\xfe\xa5\xd9\x67\x3e\xf8\x0d\x0a\x7f\x36\x56\xbb\x00\x17\x9f\x8f\x28\xba\x9b\x4f\x59\x7c\x8f\xb4\xb3\xa2\x11\xa0\x0a\xb3\xbb\x63\x17\x8d\xdf\x9c\xb3\x3d\x81\xc0\x2f\x59\x1a\x46\xeb\xc2\x68\x68\x98\x5d\x5f\x90\x46\x43\xd9\x91\x7a\x0d\xb1\x91\x64\x9f\x46\xd6\x8d\xe4\xfb\xf1\x42\xd3\xfa\x95\xc3\x78\xfd\xbe\xe5\x87\x5e\xd0\xc0\x50\xda\xed\xc3\xe4\xbb\xe8\x39\xcf\xfb\x82\x0a\xd8\x45\x2c\x9a\xdf\x46\xeb\x9f\x87\xe5\xf2\xde\x13\x96\x7b\x4f\x34\x2a\xdc\xe4\xe0\xaf\xdc\x37\x06\x86\x8c\xd5\xa9\x67\xf3\xbb\x77\xec\x6a\xdc\xed\x0a\x27\xc4\x1d\x24\xc4\xad\x22\x82\x45\x87\x71\x1f\x81\x30\x97\x8c\xd3\x7e\x13\x77\xfc\x0a\x69\x4e\xf6\xdd\xb0\x28\xee\xe9\xe2\x1a\x21\xee\xdd\xb0\x52\x54\xad\x16\x7d\xdc\xd3\x44\xfd\xac\x87\xaf\xbc\x45\xd6\xfe\x5e\x53\xd0\x7f\x68\x85\xf7\x76\xb5\xbe\x02\xca\x2f\x53\x37\x5a\xb8\x90\x54\x44\x55\x00\xd6\xc9\xcb\x2e\x8a\xad\xd4\xca\xfa\xce\x6a\x45\xb6\x02\x84\x9b\x99\x40\x70\x17\x15\x3a\x9c\x77\x2a\x1b\xc7\xf4\x09\xa8\x2c\x7e\x9e\x95\x9f\x0f\xfb\xf6\x62\xc3\xff\xfa\x12\x60\xf6\x72\xda\xef\x4a\xd1\xb6\x87\xfd\xda\xbd\xd9\x87\x1a\xef\x7d\xf6\xe4\x8b\x40\x0b\xb8\xe5\x88\x01\x93\x41\x24\xc6\xea\x6c\x00\xd9\x47\x7c\xcd\x2e\xf6\x45\xf0\xb8\xef\x08\x3a\x7e\xc4\x97\x41\x8c\xbb\x19\x9a\xc8\x91\x8e\xbc\x2b\x77\x16\x5d\x6b\xa2\xc6\xfb\xf9\x78\xd8\x53\xa3\xea\x5d\x81\xdd\x05\x04\xf7\x03\x2a\x79\xcb\x72\x58\x0f\xfb\x78\xb7\xf8\x39\xc4\xfb\xc5\xaa\x5e\xd1\xc3\xbe\x2f\x03\x2b\x6c\x73\xf6\x64\x4c\x72\x6f\x28\xff\xc7\x4b\x30\x9f\xe3\x8f\x43\xec\xc5\x96\x21\x15\xca\x3f\x7c\x0c\x1a\x8d\x0d\xfc\x75\x48\xfb\xdb\xb9\xa3\xb4\xd9\xa2\x33\x6a\xa1\xd7\x26\xc3\xd6\xfd\xd9\xd8\xd2\x07\x01\xb7\x9b\x3a\x66\x32\xfc\x08\xf7\x1c\x14\x0f\xa8\xec\x14\x15\x22\xf9\xa1\x4a\x24\x25\xeb\x45\xa5\x5f\xbb\x93\xde\x68\xd4\xcb\x93\xf7\x0f\x22\x8f\xc4\xb8\x3f\x9c\xbd\x3f\xda\xd3\x2e\x52\x43\xfb\xb4\xa4\x97\x9c\x61\xe0\xce\x9e\x7c\xa8\x20\x68\x03\xe1\xb0\x01\xd7\xa9\x86\xf8\x6b\x2f\x72\xe1\x4b\x8b\x94\x6a\xcb\x87\xf4\xa9\x37\xea\xc9\x4c\xd9\xa0\xca\x85\xcc\x54\x64\x83\xba\x35\x13\x5a\x50\xc0\x12\xf4\xef\x01\xb0\x12\x0f\x8d\x6c\xa1\x1d\xfc\xa9\x6d\xe3\xdb\xb9\x56\x63\x87\x51\x13\xec\xcb\xcf\x47\x2c\x84\x6a\x0c\x42\xf5\xbb\xb5\x9d\xd3\x11\xbc\x82\x78\x68\xe1\xab\x9b\x3a\x82\x54\x6d\x21\x95\x76\x6d\x4f\xed\xa9\x8c\x5d\x1f\x71\xf8\x33\x9f\xbf\x2e\x3c\x7b\xb3\x79\x7d\xe4\x85\x4c\x19\xbc\x0a\xfd\xc7\xed\x00\x93\x43\xfd\xed\x85\xbe\x0c\xd0\x8c\x43\x11\x2b\x03\x2f\x64\x87\x5d\x0e\x7f\x30\xd2\xd2\x4e\x76\xd8\x5d\xbc\xd3\xf0\xee\x8c\xd6\x59\xf3\xda\x10\xfe\xf9\x2c\x28\x7d\xdf\x5e\x0a\x76\xfb\x5c\xb9\x2c\x15\xfc\x47\xcf\x01\x88\xa0\xe5\xf5\xae\xf1\x0e\xbb\xfe\x87\x80\xf5\x22\xce\xa3\x05\xa1\x9b\x5b\x1b\xda\x57\x4b\xc8\xa1\x97\x21\x1c\x4e\x1f\xb5\xd4\xcf\x87\x40\x5b\x97\xdd\x99\x3a\x10\xc0\x18\x7f\xb0\x6d\x62\x6d\xc8\x48\x52\x0e\x73\xe7\x25\x13\x84\xd4\xa8\x87\x3c\x15\xe5\x4d\xa8\xe4\xa2\xa4\x0b\xfd\xda\x8b\xe3\x6b\x0f\xb5\xde\x5e\x17\xb4\x3f\x8c\xd4\xd0\xf5\x03\x7a\x3a\x46\x73\xac\x77\x4b\x4e\xd3\x2a\x0c\x4f\xa2\xc6\x5f\xd5\xcc\x18\xc6\x34\xef\x38\xf6\xed\xfe\x74\xec\xbf\x98\x2d\x4b\xaf\x41\x5b\xe2\xaa\x37\xce\x14\x94\x89\xf1\xf1\xf1\x74\x0c\x73\x13\x93\x45\xe8\x0f\xc2\xc0\x94\x99\xcf\x1d\x1d\x94\x01\x10\x84\xd0\x3f\x9d\x06\xda\xe9\x0c\xf1\x6c\x02\x84\x85\x51\xf6\x2d\x85\xd0\x4a\x89\xde\x4e\xbd\xdf\x3f\x9c\x41\x87\xca\x53\x41\xbc\x81\xa5\x43\x5f\xd5\x8c\xaf\x99\x1f\x53\x86\xa9\x7f\xe3\xf9\xb2\xc8\x8e\x80\xff\xac\x40\x74\x81\x05\x1e\xa7\xce\x60\xe5\xd6\xb6\x3c\xbc\xed\x1d\x1b\xe7\x8f\x27\xb2\x62\xf7\x2b\x44\xfc\x8e\xa8\xf4\x5f\x24\xae\xac\x8d\x16\x15\xac\x9f\x6b\xa7\x9e\x50\x7b\xe6\x87\x6c\x20\x83\xda\x21\xe1\x71\xa5\x93\x8f\xa6\x93\x8f\x7f\xd1\x49\xc1\x06\x72\x51\xe6\x7a\xb3\x6f\x55\x68\x4d\xe7\x1e\xd7\x76\xce\x10\x6c\x3d\x0c\x21\x99\xcf\xad\xec\x80\x1f\x02\x9d\x2d\xfa\x25\xd8\x33\x30\xeb\x40\x38\xf4\x41\x33\xa8\x76\x68\xd8\xa9\x7a\x43\xc2\x8d\xe4\x74\x5b\x50\xad\x6b\x2f\x64\x45\xd7\x1e\x05\xd9\xcd\xa6\x73\x31\xe4\x47\x00\xc8\xf1\xb6\xa0\x21\xda\x00\xd2\xf1\xfd\x5c\x94\x09\x1b\x2d\xbb\x45\xa5\x26\xf6\x5b\x35\xf6\x8b\xb0\x57\xe2\xcf\x47\xbc\xa3\x90\xc1\xc6\xe0\x48\xf1\x48\xdb\x08\x37\xc7\xa5\xff\xe6\x57\x50\xfa\x61\x2c\x68\xde\xb7\x97\xe2\x7d\x13\x3b\x18\x0b\x9a\x0c\x04\x59\x0c\x71\x68\x1f\x27\xd5\x5d\xae\x82\x9e\xa3\xaa\xa8\xc0\xca\xf1\x0e\x0e\x70\xa3\x0e\x1d\x76\x88\xf7\x6e\x84\x15\xed\xfe\xf7\x1b\x4a\xb6\x02\x66\x46\xa1\xe7\x2c\xa0\x69\x3c\x62\x47\x87\xa5\xd1\xd4\x98\x6f\x6c\xd1\x44\xef\x7f\xda\x3d\x07\xcd\x8c\xa5\xdc\x88\xdd\x47\x8d\x06\xfc\xd5\xd6\x3b\xee\x23\x82\x06\x7f\x36\x5a\x34\xe5\xbe\xe9\x2a\x35\x9d\x0b\x68\xc4\x95\xff\x05\x7e\x38\xdf\xd9\x23\x09\xf7\x8d\xa5\x5b\x65\x75\xad\xa9\xc8\x06\x5d\xa1\xc3\xe7\x6a\x41\x8b\xf4\xc2\x0d\x50\x3d\x5b\x19\x7d\xae\x16\x41\x69\x2d\x57\x1b\x8f\x8f\x4a\x1b\x82\x70\xb4\xd1\x0b\x20\x0a\x68\x54\x7c\x37\xb7\x02\x5a\x82\x11\x2d\xd5\x1f\x2d\x81\x21\x97\xd2\x65\xbd\xe1\xd2\x63\x79\x2f\x8e\xdf\x87\x5d\x31\x1c\xd7\x3d\xc9\xe2\xc6\x3c\xee\xaa\xf7\x61\xb7\x3f\x52\xb9\xc9\x02\xe7\x77\xd8\xa7\x25\x7f\x35\x9b\x8f\xd5\x67\x0e\x99\x36\x80\x8f\xc6\x2a\x1a\x8d\xb1\xb5\x26\x45\xb5\xf5\x0a\x6a\x7d\x26\x1f\xd9\x27\xb8\x94\x43\x40\xa1\xd9\x3c\x9a\xf2\x77\x0e\x9c\x5a\x20\x2b\xac\x9e\xd4\xef\x5b\x73\x33\xcf\x47\x34\x33\x16\x6d\xcc\x02\x32\x72\x06\x69\xa3\x11\xc3\x96\xa3\x1d\xa5\xe8\x6e\x85\xac\xfb\xdc\x68\x6c\x84\x2c\xed\xb5\x9d\x0a\x0c\xac\xfb\x4c\xe8\xa4\x12\xde\x7d\xa0\x21\xac\x50\x20\x3b\x66\x49\x95\x5a\xca\x5a\x6a\xff\xc1\x56\xf4\xd7\xe5\x36\x5a\xa6\xa0\x6b\x0d\x28\xbd\xc8\xa0\xd1\x28\x0b\x22\xd8\xa6\xe0\x56\x59\xd0\xba\x36\x9d\x38\x92\x0a\xf6\x94\x56\x9f\xf6\x4a\x96\x2a\x3a\xad\x58\x10\xb5\x92\xb6\x27\xd2\x98\x91\x19\x74\x1c\xb4\xb4\x01\xdf\x8f\xf8\x6d\xdc\xd2\x44\x78\x1c\x4e\x79\xec\x46\x9c\xc7\xc7\xa8\x12\x94\x18\x8b\x6e\xda\xd9\x56\xc6\xfb\x1d\x27\xb5\x4e\xc7\x5e\x23\x08\xc6\x76\x25\xe5\x10\x4a\x68\x88\x4e\x48\xbc\x8c\xe7\xde\x16\xe7\x11\x6e\x4c\xc7\x28\xea\x95\x17\xdf\x4e\xca\x63\x9a\xf1\x88\x18\x8f\x9f\x35\xdc\xb8\x73\x32\xc8\x58\xdb\x52\xed\xcc\x0c\x68\x06\xfb\xa1\x30\x46\x06\x09\x66\x86\xdd\x4e\x04\x6b\xb6\x60\x05\x2b\x1d\xe8\x38\x15\x2c\x97\xc4\x93\xd5\xc9\x19\xe8\x31\x96\x2b\x63\xcc\x32\x5f\xe0\x3e\xe2\x0e\x0c\xb6\xf8\x97\x61\xe0\x60\x80\xa6\xfe\xed\x4b\x60\x27\x49\x10\x52\x71\x79\xe4\x09\x98\x97\x01\x95\xec\x29\xa5\x2d\x3c\xa9\x16\xd3\x33\x58\x18\x2a\xb5\xf7\xdf\x6b\xcf\x8c\x48\xa3\x22\xeb\x2b\x02\x88\x55\xa4\xcc\xc5\x64\x9d\x38\x6d\xf0\x10\xa9\x12\xfc\xf5\xf4\xa7\xa3\x1d\x28\x1d\xc3\xc2\x70\x64\x33\xfe\x3d\x64\x83\x9e\x62\xaa\x07\x00\xfc\xbf\xd8\xb8\xa0\x88\x03\x38\x55\x59\x52\x50\xda\x73\x28\xa8\x81\x8e\x02\x82\x90\xd8\x7c\xc9\x6a\xbe\xa4\x92\x2f\xe6\xf2\xcf\xb8\xed\x87\x34\x09\x5c\x3f\xa1\xa8\x36\xb6\x42\x16\xf1\xe8\x59\x9d\x5e\xc5\x76\x1f\x8a\x49\x08\x29\x04\xa9\x5a\x5e\x21\x11\x04\x70\x71\x11\xb7\xcc\xab\x6f\x5d\x97\x27\x2c\x2a\x17\x45\x58\x5f\x14\x61\x75\x51\xa8\xd3\x25\x53\xa1\x52\xef\x0b\x4b\xb8\x57\x37\x7e\x47\x5e\x05\x6e\x1c\x22\xf0\xec\x35\x5f\xa4\x3c\x59\xed\x82\xa2\x10\xb4\x78\x54\x76\x01\x77\x4e\xb7\xcc\xb5\x1e\xdb\x84\x79\x89\x45\xdc\x51\x88\x3b\x05\xf8\xca\x22\xcd\xce\x5f\x20\x0d\x5a\x39\x03\x8c\x51\xb0\x99\xc5\x2b\xa4\x16\x1d\x28\xbf\xc8\x80\x4c\x0a\x21\x70\x84\x26\xb2\xd0\x6c\x6c\x55\x3c\x90\x25\x1c\xf6\xb7\x2d\x9a\x19\xb4\xf2\xce\x8e\x85\x16\x84\x4b\x4c\xcc\x26\x24\xa6\x7c\x73\xab\xea\xba\x0f\x49\x48\xb2\xc1\x33\x2f\x69\xf2\xb4\x74\x59\x92\xf9\x09\x6c\x4a\x4f\xd7\x4e\x48\x13\x38\x28\x01\x27\xbc\xc1\x07\xac\xa3\xac\xc8\x28\x7c\xa3\x75\x1c\xdd\x91\xd3\xb1\x9f\x07\xde\x76\xcf\x19\x91\xf9\x7c\x5c\x80\x3c\x22\x8b\x01\x4b\xfd\x28\x68\x34\xf4\x2f\x8b\x54\xe5\x53\x53\x50\x27\xe2\x45\x0c\x2d\xbb\x1b\xc1\x14\x45\xcb\x53\x34\xa0\xf6\xfc\xb7\xee\x27\x62\x69\x0f\xb6\xff\xc7\x0c\x36\x23\xf4\xb1\x57\x08\xd0\xa4\x8d\x46\xeb\x33\xfc\x1a\xa7\xad\xbc\xe0\x92\x1e\x27\x4e\x5c\xc7\x42\x35\x9f\x5b\xae\xaa\x1d\x5b\x65\x8c\x02\x2d\xc7\x9d\x52\x88\x0e\xce\x8d\xc8\xfe\x11\x4f\xda\x8d\xaa\x6a\x36\x2d\x3c\x7d\xc3\x42\x06\x79\x4d\x0c\x75\x48\xda\x89\x8b\x26\xa3\xa2\x36\x54\xe4\x02\x17\x89\xc7\xb9\x61\x18\x38\x43\x63\x50\x7e\xc4\x55\x3b\xd6\xfe\xe0\x8c\x1b\xa4\x8a\x98\x19\xf2\xa2\xcb\xc7\xd6\x11\x8d\x1b\x8d\x98\x45\x07\xc4\xc5\xc3\x6d\x2b\x00\x4e\x5c\xe7\x2a\xd2\x74\xd6\x01\xf1\x04\x07\x4e\x0b\x6f\x1c\x79\xd2\x6e\xb9\x5b\x55\x8f\x6d\x23\x03\x69\xda\x4e\xfd\x04\x41\x50\xed\x0b\xbd\x4d\x4b\x7d\x72\x06\x7c\xa9\xb5\x5d\x2b\x90\x6f\x07\xd5\x4d\x3d\x6b\x03\x82\xb9\xa6\x69\x2a\x59\xfc\x95\xe7\x54\x18\x07\x9c\xc5\x39\xb9\x18\xc3\x49\xe7\x2d\x23\x23\xe4\x55\x56\xe9\x3d\x06\xa8\x1e\xf2\x75\xb9\x89\x5d\x9d\x55\x0e\xd6\xda\x5d\x45\x27\x67\xdc\x08\x3d\x3a\x1a\xa1\x38\x0f\xe7\x73\x58\x47\xc2\xce\xed\xce\xbe\x70\x08\xa1\xbd\x7b\x07\xa3\xd0\x92\x66\xc9\x00\x3f\x15\x98\xb1\xcc\xfe\x1a\x54\xfb\xfe\x81\x1b\x86\x47\x87\x2f\x2f\x78\x62\x2e\x5e\xbe\x08\x34\x8b\x63\xa2\xe9\x87\x6d\xe2\x1d\x94\x41\xf3\x0b\x07\x84\xcd\x8f\xc0\x49\x3f\x69\x4e\xfa\xe9\x2d\x46\xba\xe0\x2f\x65\x80\xf6\x7e\xd1\xf6\x4d\xa4\xb4\x71\x0e\xc9\x0e\x5e\xe6\x73\x07\x27\x4f\x5b\xd1\x35\xd0\xc1\xf9\xdb\x1c\x49\x31\x51\xe0\xfa\xb3\x89\x9e\x49\xf4\x10\xef\x05\xeb\x3e\x5b\xb8\x4c\x52\x71\x6a\x2d\xc8\x59\xb8\x58\x18\x18\xab\xdb\x68\xa1\xbb\x56\xa1\x7a\x36\xdf\xce\x5f\xe6\x2b\xa5\x34\xcb\xfd\x01\xe1\x88\x46\xf6\xb8\x73\xf6\xa0\x4f\x43\x07\x70\x1a\xda\x22\x6d\x63\x8d\x6d\x33\x12\x54\xff\xdf\x8c\x80\xd1\xd4\xb1\x2d\xd4\x4c\x42\x6d\x25\x6a\x69\xc2\xde\x54\x53\xc7\x90\x9f\x42\x3d\x5f\xb6\x85\x7d\x9a\xc0\xf0\xd1\x76\xe9\x63\xa0\xd1\x78\xec\x21\xb1\xfd\x76\x8f\x3f\xc5\xad\xc9\x63\x0f\x55\x42\xac\x3b\xe4\xa2\x5e\xed\x07\x0f\x38\x3d\x52\x71\xf1\x31\x52\x40\xa0\xe0\xb7\x72\x9d\xe8\x10\xff\x38\x68\x4f\x13\xf7\x6b\x62\x68\xd5\x0d\xff\x00\x00\xdc\x1d\xd3\x6e\xbf\x76\x25\xfa\xdc\x29\xac\xc6\xa6\x92\xf3\xc1\x51\xf9\xcc\x35\xe8\x29\xff\xb2\x54\x10\x35\x00\x48\x94\xa9\x98\x91\x85\xd4\x6e\xf2\x43\x55\x05\x67\x5f\xb6\xe1\x0f\xbb\x35\xea\x2f\x68\x23\x56\x32\x85\xfa\x24\x98\xff\x6b\x04\x9f\x96\xbe\xee\xcb\xb6\x28\xf2\xa3\x0b\xd5\x2b\x45\x05\xe6\x5f\x6a\xb6\x66\x56\x32\x29\xaf\xc0\xce\x1e\xb8\xac\x48\x05\x4d\x3b\xcb\x7b\xff\x8d\x27\x0b\xe7\x19\x82\x63\x7f\x3d\xc9\xb7\x9a\xa8\x08\xe3\xc8\xdf\xb5\xcf\x80\xd2\xc0\x80\x6d\x31\x62\xd3\x26\xfc\xf9\x93\x0b\x36\x6d\x4b\x77\x53\x12\x1a\xb1\x19\xc4\xcd\x3e\x73\xc1\x66\xed\x4d\xe9\xd6\x9c\x71\x77\x4f\x6b\x32\xe2\x7b\xdf\x9c\x62\x10\xe9\xc5\x8d\xe3\x38\x92\x7d\x78\x6c\xff\xf3\x93\xeb\x48\x76\x1d\x35\x25\x1b\x44\xe4\xf7\x8f\xe4\xf7\xad\x7f\xb5\x36\xd9\x27\xf2\x5b\x97\x9d\x1f\x51\x2c\xc2\xc2\xc8\x7c\x44\x11\x0a\xc7\xd8\xd9\x67\xd3\xa6\xf4\x27\xb3\x80\x4d\x69\xc8\x66\xe6\x7b\x86\x62\x33\x7c\xfb\x1e\xd2\x69\x8b\x0a\x7f\x08\xdc\x18\x9b\xe9\xa8\x19\x46\x6d\x07\xeb\xc4\xda\x7b\xa7\xd5\x97\x4d\x7f\x84\x7e\xa9\x46\x40\x78\x75\x83\x2d\xed\xce\x5e\xa0\x42\x3e\x9e\x38\xb5\x8d\x43\x5b\xd5\xc7\x3f\x5a\x9c\x0b\x76\x28\xdb\x25\x7a\x34\x01\xca\x08\x90\xa4\x19\xb2\xd9\x26\xec\x07\xbf\x7f\x24\xee\x52\x06\x1d\x5d\xe4\x8a\xaa\xa2\x5d\xf7\xcb\x1c\x9c\x28\xd8\x65\xff\x0b\x9c\xec\x9f\xae\x4d\x7a\xf9\x44\x56\xd8\x9e\x3e\x49\xf4\x43\xc3\xfd\xa1\x6b\x12\x95\x49\xa9\x78\x65\xb0\x36\x44\x79\xa4\xed\xa9\xc1\xc7\x0d\xfb\xfe\x38\x9f\x47\xec\x86\x4a\x8d\x26\xc6\x06\x24\xe0\x02\x2a\x38\xc2\xdf\xcf\x92\x4d\xdb\x2d\x37\x82\x21\xa6\x11\x3e\xe9\x39\xf8\xf3\x59\xb2\x19\x26\x6c\xa3\x6b\x01\x7d\x87\x45\x68\xb4\xf2\xfa\x61\x9a\x46\x44\xb5\xad\xaf\x68\xfb\x5a\xc0\xd8\x8d\x9f\xc2\x7e\xb1\x16\xa0\x08\x4d\x3a\xb1\x69\xbb\x08\xb9\xf0\x45\x4b\x78\xf0\xcb\xd5\x60\x22\x64\x15\xc0\x16\x4b\xca\xce\xeb\x00\xea\xec\xb9\xa1\x81\xc4\x93\x3c\x64\x37\x5e\xc4\xa7\x85\x56\x18\xde\x95\x4c\x3f\x0b\x7c\xe5\x84\x91\x9b\xfe\x29\xb4\x91\x4c\x02\x8b\x87\x7f\xfc\x0d\x66\x7b\x33\x62\x53\x93\x77\x06\x79\x01\x18\xc8\x3c\xc3\xcc\x27\x21\x64\x9e\x35\xf9\x3b\xcc\x3d\xdb\x8c\x00\x9d\xed\x28\x2c\xea\x4b\x12\xb0\xb1\xc4\xdd\xf4\x74\x49\x55\x67\xdb\x93\x7a\x19\x00\x8d\x42\xc5\xd9\x50\xdb\x09\x95\x7a\x29\x48\x36\xd3\x6a\xa3\x14\x8d\x00\x54\xaa\xca\x56\xcf\xd1\x15\x89\x11\x9a\x00\xe9\x92\x40\xea\x68\xaa\x3f\xbf\x46\xe8\x79\x93\x8d\x1f\x68\xce\x53\xf8\x19\xf0\xc8\x93\xfe\xcd\x4b\xd0\x68\xe0\xcf\x06\x9a\x8f\x72\x72\xbe\x99\xd3\x54\x3b\x02\x44\x71\xde\x01\x47\x6f\x9f\x11\x0a\x16\xd3\x98\xa7\xfe\x43\x18\xb0\x7d\xe5\x0c\x08\x71\xad\xcb\xc0\x35\x39\x15\x4f\x2a\x39\x51\x4e\x38\x82\xed\x1f\x57\x23\x2c\x7f\xa3\xf0\xa0\xda\x21\x9b\xba\x0a\x97\xbf\x89\x8a\xdb\x21\x9b\xb9\xb1\xa7\x78\xc8\xa6\x9b\xd9\x6f\x02\x35\xb0\x67\xcd\xfc\x37\xb1\x44\xf3\x14\x8d\xab\xeb\xf0\xe1\x3f\x49\xd0\x36\xd9\x56\x41\xd3\x36\xd9\xd6\x0a\xbd\x7d\x8b\xb6\x55\xa4\xe4\xff\xcf\x88\x55\x49\x88\x96\xe9\x54\x49\xa0\x7e\xff\x58\x1d\x9a\x7e\x49\xa2\xaa\xe4\xa8\x4a\xae\x3c\x69\xc9\x95\x5d\xcb\x28\x37\xa2\x4d\x58\x4a\xce\x77\x8f\xf1\xc7\xfa\xa2\x80\xd9\x01\x02\x14\xc2\x8a\x9f\xcf\x43\x2f\xe4\xca\x3f\x84\x5a\x94\x3f\xb4\x4a\x7f\x61\x53\xa2\xa5\x59\x34\x0f\xcb\x15\xf0\x1e\x09\x8f\x9b\x8a\xa6\x66\x67\x13\x5c\x14\x16\xb0\x93\x3f\x53\x36\xb3\x7d\x0d\x9b\xf2\xf7\x8f\x34\x81\x91\x77\x6b\x51\x71\x13\xa2\xc2\xcf\x29\x9b\x96\x79\xd9\x16\x8d\x9b\xaa\x42\xb6\x71\xfa\x74\x94\x75\xda\x51\xce\x1b\xcc\x57\x85\x05\x2f\x47\x69\x56\xe3\xc1\xab\x7a\x39\x61\xe1\x6b\x32\x2a\xbe\x14\x59\x9b\x5e\xda\xc6\x04\xae\xa9\x88\x7d\xd5\x07\x7b\x74\x8f\x91\x01\x81\x52\x1c\x36\xe0\x88\xc6\xc4\x8b\xf9\x83\xfd\xd4\x07\x5d\x9d\x05\x38\xd9\x84\x3d\x66\x8d\x46\xc2\xd2\x5e\x5b\xf0\x17\x80\x2f\x41\x6e\x35\x26\xae\x23\xf5\xa2\xda\xfb\x6f\xe4\x16\xa8\xe0\xa7\x70\x42\x8a\xd8\x87\x10\x0e\x93\xc0\x98\x9c\x3d\xd0\xb8\x3c\x36\x0e\x86\x34\x62\x5f\xc7\xa4\xf4\xff\x61\xe1\x5c\xdb\x3b\xdb\x35\xcb\xec\xf1\x08\x45\x52\xf4\xed\x44\x6c\xac\x89\xc4\x3c\x33\x27\x11\x05\x64\x1a\x5d\x8d\x4e\xdb\x67\x29\x1e\x36\xf7\xa6\xc4\x55\x14\x8f\xe7\x48\x19\x58\xa4\x08\x74\x66\x7d\x97\x54\xd9\xa5\x1d\xe8\x52\x04\x5d\x32\x40\x48\x2d\x4e\x83\x1d\x0c\xb1\x83\x5b\x34\xd6\x1d\x54\xb6\x83\x21\x74\x30\xc4\x0e\x12\x57\x97\xd4\x97\x07\x1a\x68\x33\xb4\x16\x94\xeb\xd0\x4f\xb6\x03\x5f\x05\xf4\x5d\xca\x13\x18\xea\xb4\xed\xc4\x1c\x38\x8c\x04\x6f\x21\xf5\x47\x8a\xc0\xa6\x15\x60\x53\x04\x36\x41\xfb\xce\x00\x2c\x8d\x2a\xf7\x1a\x70\xd4\x80\x13\xc9\x52\x1b\xe6\x1a\x80\xa6\x70\x00\x0a\x16\x14\x58\x60\x73\x46\x4f\xe1\x64\x1e\xe9\x0b\x16\x3d\x85\xd1\x72\x0f\x93\x9f\xf4\x50\x4f\x65\x71\x8f\x0a\xac\x88\xc2\x7d\x01\xb5\xd2\xeb\x53\xd1\x2f\x13\xb5\x4f\x9f\x30\x28\xae\x24\x7e\xd6\x4f\x33\x29\xbb\xff\x6d\xdc\x3d\x59\x4c\x53\x06\xd3\x96\xc1\x54\x00\xa6\x42\x30\xbd\xc2\x6d\x8b\x99\x80\x14\x3d\x65\xd8\x86\xcb\x49\xc8\x78\x0a\x73\x90\xb5\x9d\x04\xe7\x00\x8d\x01\xe4\xfa\x23\x43\xd8\xb2\x0a\x6c\x99\x1e\x4d\xe2\x3a\xd9\xdb\x73\xb0\xa6\x19\x3b\x0f\x99\x99\x87\x77\xd9\x9a\xd1\x8f\xcd\xe8\x27\xba\x5b\xa9\xed\x56\x0c\xdd\x8a\xeb\xa3\xbf\x7a\x8e\x1f\xbc\x79\xc7\x2d\xed\x53\x88\x17\xe1\xd2\x57\x76\xbd\xeb\xe5\xaf\xb4\x63\xa2\xab\x9e\x13\xae\x7b\x7b\xc6\xeb\x5f\xe8\xc0\x82\x78\x37\x3d\x27\x59\xff\x3e\x0d\x03\x25\x58\xda\x5b\xc0\xa1\x01\x6f\x16\x61\x74\xaa\xcf\x95\xb5\x99\x8b\x96\x68\x44\x39\x73\x15\xaa\xf8\x78\xba\xd6\xe2\xd8\x89\xa4\x09\xe2\x5b\x0c\xa4\x05\xe8\x4e\x2e\x89\x17\xf1\xfe\x72\x94\x9e\xf6\x95\x7e\xe9\x7d\xf1\xe9\x1a\xd1\xb3\xb8\x0a\xb7\x06\x58\xed\x65\x37\xaa\xd3\x15\xbd\x5e\xeb\x61\x67\xa9\xd7\x51\xa5\xd7\x54\xd5\xfb\x1d\x9b\x7e\x9b\xa9\x8d\x56\xa7\xb6\xea\xfd\xe0\xad\x7e\x7b\x11\x8f\x8c\x42\xad\xa6\x29\x9a\x04\xc6\x34\x02\x0e\x0e\xef\x21\x51\xe6\xd4\xae\xbf\xc4\xac\xbf\xe8\xad\xa1\x28\x3a\xbd\x27\xaa\x73\xbc\xbe\xb7\xd0\xd5\x4a\x87\xb5\x69\x22\xb4\x15\x5e\xaf\xf4\xce\x89\xab\xda\x76\xb8\xf7\x67\xa8\x88\x39\x90\x6e\x48\x73\xe9\x8a\x05\x41\xc9\xd5\xda\x98\x65\x95\x31\x5b\x43\x7c\x97\x16\xc7\xba\x11\x2c\x06\xf0\xa5\xbc\x28\xd2\x17\x1c\xdd\xf1\x03\x3a\xde\x34\x8e\xd7\xe8\x65\xe8\xbe\x86\x99\x18\x8d\x4e\xc5\x83\x72\x6f\x0e\x16\x0b\x7a\xa0\x84\xbb\xd1\xa2\x87\x4a\xb8\xa1\xb5\xa1\x16\xd2\x7d\x25\x5c\x6c\xef\xc3\xb6\xfb\xb1\x45\x1f\xc4\x30\xe9\xe5\xee\xa7\xea\x35\xc9\xf6\xd2\xde\x6d\x5f\x80\x63\x2f\xe2\xbc\x77\x60\xee\x3a\x47\xaa\x5d\x51\x63\x18\x29\xe3\x32\x68\xa4\x8c\xf8\x55\x48\x5c\x5b\x10\xf8\x05\x94\xe0\x42\xa3\x13\x58\x09\x32\x1c\x4f\x1d\xe3\xe5\x12\x79\x8d\x91\x09\x51\x53\xcc\xdc\xac\x5c\xe5\x58\x3e\x36\x7b\x63\xf5\x0a\x63\x67\xe9\xc8\xff\xba\x28\x65\x30\x42\xb6\x2b\xd8\xe1\x2e\x79\x8d\xd8\xae\xe0\xf0\xa7\x90\x95\x01\x32\xb2\x2b\x68\x6c\xf3\x78\x90\xca\xce\xc6\x5c\xb1\x38\xf1\xe3\xc0\xa0\x62\xdc\xdc\x6a\xde\x0f\x9b\x18\x79\x1c\x20\x9d\xff\xf6\x85\xf5\xee\x68\xc6\x5b\x9f\x63\x60\xc2\x20\x9c\xdc\xd1\x98\xc7\x9f\xa1\x46\x9d\x71\x73\x4b\xd7\xf7\xed\x0b\x7f\xed\xdd\xb9\xaf\xda\xee\x50\xd6\x4e\xd9\x40\xb1\x9d\x89\x8b\xbf\x7b\xe7\x74\x67\xe2\x66\x0b\x9a\x14\x39\xe2\xb6\x32\x39\x54\x99\x23\x5e\xd0\xee\x9d\xb1\xc7\x9b\xd0\x23\xf7\xb5\x65\x03\x0b\xf8\x27\xd8\xce\xc8\x3a\x0e\x2c\x4e\x4e\xdb\x78\x2d\x16\xdd\xaf\x4a\x3b\xc3\x24\x59\x79\x37\x36\x52\x5a\xc8\x7f\x7b\x9d\x58\x92\xf5\x25\x31\x2a\x8c\x51\x9b\x20\xeb\x77\x51\xbe\x43\x97\x0a\xef\xdf\x2a\x55\x95\x90\x19\x29\x4f\xbc\xef\xe5\xef\x25\x9b\x3e\x35\x1a\xc6\x1c\x1c\x04\x7c\x11\xd8\x94\xb3\x6a\xca\x99\x4e\x41\xcb\xd5\xec\x61\x9f\x0a\xe2\xb5\x3e\x6b\x6d\x9f\x87\x7d\x3f\x53\x80\x5e\x5b\x35\x09\x9f\x5d\xbc\xcc\x7a\x7e\xb6\x66\xba\x9f\xdf\xbf\x9c\x19\xfc\xb9\x14\x1c\x96\xa9\x7e\x0d\x11\xe3\xc9\x83\xb9\x5a\x96\xe6\x9e\x3e\x9a\xea\x42\xaf\x97\xda\x19\x37\xfd\xf0\x4d\xa7\x98\xf2\xbb\x82\x43\xd2\xeb\x61\xd7\x08\x2a\x1e\xee\x9a\x92\x98\x7c\xdd\xd5\xc9\xb7\xcf\xc6\x16\xa0\xf7\xcd\x40\xf1\x6a\xed\xd8\xea\x6a\x27\xb7\xb5\x6a\xe3\x9e\x1e\x9c\x0b\xf3\xac\x62\x7d\x78\xf9\x3f\xa6\x81\xff\x38\x0b\x1c\x01\x5f\x84\x0a\x76\x59\xb8\xf7\xba\x14\x7c\xaf\x63\x3f\x31\x85\x10\x2a\xfc\x5d\x38\x7a\xda\x6e\x98\x0c\x10\xa9\x93\xb4\x4f\xd7\xa2\x8e\xdd\xb2\x8e\x5d\x81\x29\x98\xe1\xba\x6b\x33\x5c\x77\x8b\x0c\xd7\x5d\x4c\xc1\x0c\x17\xb9\xcd\x70\x91\x17\x19\x2e\x72\x4c\xc1\x0c\x71\xaf\xd1\xb0\xf1\x71\x0f\x23\x08\x59\xbc\x3b\x12\xce\x6e\x5d\x56\xc6\xba\x01\x42\xa3\x75\x1d\xef\xf9\xd9\xd1\xf2\x3d\xd8\xf3\x1d\xfd\xe6\x0b\x7d\xe3\xdb\xb9\xed\x2b\x81\x59\x12\xd4\x44\xe8\x5e\x79\x00\x7b\x91\x67\x17\x1f\x67\xaf\xbb\x45\xc4\x75\x97\xc0\x4c\x94\x85\xce\x66\xba\xd0\x45\x5e\xe4\xb9\xc8\x21\x22\xee\x15\x11\x71\xaf\x72\x98\x21\xde\x87\x15\xd8\x2b\x67\xe2\xb0\xe7\x48\xd2\x96\xee\xc6\x96\x57\x59\x22\xd8\x89\x93\x17\x3b\x7d\x8d\xc6\x4b\x5e\x9f\xb0\x22\xa6\x32\x43\x65\x2e\x3b\x25\x65\x8c\x9d\x83\x46\xc3\x09\xe7\xf3\x97\xb2\x33\x54\xe8\x2e\x95\x59\xed\x6c\x94\x31\x76\x1e\xaa\xd2\x45\x7b\x35\x91\x37\x24\xcd\x17\xce\x47\xe2\xf5\x2f\x9c\x90\xb6\x60\xad\xe1\xd7\x56\xd5\xae\x99\x3f\x7e\x09\x9c\xea\xc3\xc5\x7e\xc7\x21\xaf\x8b\x1f\xce\x7e\x87\x4e\xae\x89\xd7\xe1\xfb\x46\xf9\x35\xba\x58\xa3\x18\x80\x4c\x09\x1c\xcf\x73\x59\x1d\x2b\xf6\xf0\xdc\xde\xef\x30\xc5\xa2\x8b\xf2\xf1\xc3\xec\x1a\x70\x8c\x66\x97\x21\xeb\xf6\x46\xe3\x7e\x32\x14\x0f\x3b\x93\x30\x55\xe3\xa3\xb1\x7a\x18\xf9\x61\x80\x46\xc4\xbb\xcf\x0b\xaf\xc3\xd4\xbf\xdf\x14\x47\xb3\xf5\xab\x7f\xaf\xa9\x5f\xf3\x44\x6f\x35\x01\xb0\x06\xac\x23\xa0\x85\xce\xed\x5a\x2a\xf7\xf0\x6c\x69\x23\x36\xd2\xb9\xad\x34\x52\xa8\x5c\xfd\x4a\x33\xf6\x0d\xa4\x03\x3b\x73\x47\xd0\x97\xd0\x15\xec\x25\xd4\x16\xca\xae\x4f\xdf\xd2\xb4\x38\x7f\xf4\x21\x5b\xc0\x26\xa1\x57\xd3\xfe\x97\xed\x5a\xef\xaf\x4f\xab\xbd\x07\x5a\x28\x81\xfa\xad\x1f\xe6\xfd\x4c\x3d\xa8\x7c\x8c\x66\x53\x15\xc0\xd7\x11\x81\x35\x2f\xd7\x61\x47\x87\x6f\x5b\x4b\x03\x9e\x1a\x9f\xaa\x81\xcd\x5c\x9e\xe6\xd7\x23\xd7\x7f\x1d\xf7\xc6\x99\x72\xcf\xfb\x82\x3e\x89\x6c\xa2\xdc\x88\xdd\xc4\xac\x9b\x6d\xe2\xef\x38\x5d\x04\x0b\x37\x7c\x73\xa4\x24\xce\x79\x05\x05\x0f\x6a\x36\xc4\x2e\x6f\x96\xc5\xc7\xa8\x22\x8b\x1f\xce\x41\x87\x5e\xde\x10\xef\x00\xb7\x2b\xf5\xc7\xea\x53\x11\x5e\x42\xed\x77\x16\xde\x3b\x9d\x27\xfa\x63\xbd\x48\xb6\x16\x7a\xd8\x46\x39\xac\x3d\xed\xc8\x7c\xbf\x4b\x43\x2e\xdb\x5b\x6e\x8b\x46\xdc\x0f\xf0\xc4\x7e\x82\x07\x79\xc1\xbe\x38\x70\x02\x41\xf7\x0c\xf8\x24\x6a\x2b\x4a\x79\xe8\xa5\x9f\xe3\xd2\x9a\x52\xa6\xcd\xa5\x24\x34\x25\xde\x63\xcf\xc9\x48\xa3\xb1\x91\x0b\x07\x1d\x29\x69\x9e\x31\x6b\x34\x36\xb0\xf5\x53\xb4\x6e\x19\xa1\x83\x85\xf9\xbc\x65\x8d\x7d\x9c\x54\x8c\xbc\x4d\x9e\x84\xf1\x49\x52\x44\x3d\x41\x54\x5a\x8b\x9a\x42\x54\x56\x8b\x7a\x7e\x42\x5b\x4e\x55\x83\x71\xb3\x27\x34\xe8\x84\xf2\x44\x5f\x85\x37\xf2\x47\x8f\x81\x13\xd1\xdc\x88\x35\x79\x09\x4f\xe6\xf3\x11\xfb\xf1\xe0\xa1\xfd\x90\x8c\x8f\xbe\x0a\x67\x44\x8c\x2f\xa3\x78\xe0\x45\xec\x30\x71\xae\xe8\xc1\x21\x31\x0f\xc5\xa1\x97\x7c\x8e\x8b\xe1\x80\x33\xff\x77\xe1\x24\xa4\x79\x9b\x0a\x6a\x32\xa7\x84\xe6\x7e\xb2\x19\x06\xc6\x04\x95\x97\x7e\x2e\xbc\x43\xea\x04\xe8\xbe\x8f\x4e\x49\xc7\xba\x3d\x5d\x37\x0c\x75\x66\x1f\xa0\x23\x76\xf9\xe8\x10\x1a\xb1\x03\xe1\x24\xf8\x08\x92\x04\xd5\x8c\xe5\x9c\x08\xfe\xce\x2c\x97\x7c\x5b\xcf\x43\x8b\xb8\x67\xb4\x3a\x4d\xbd\xd8\xc9\x78\x2d\x4b\x4a\xe8\x86\xf3\x0b\x93\x65\xc4\x7e\x27\xbc\xc5\x39\x0c\xd4\x7c\x9e\x7d\x1e\x31\xf1\xd8\x6e\xb9\xd9\x9f\x7c\xc4\x86\x3f\xda\x23\x76\xfc\xc5\xd5\xc6\x32\xb2\x4d\x48\x23\xbf\x43\x4e\xd2\x1c\xb1\x64\x44\x9f\x78\xda\xdc\xda\x0c\x3d\xec\xc8\x84\x3e\x51\x07\xcd\x3f\x4c\xe8\x13\x01\x04\x68\x6e\x11\xef\xc9\x82\x06\x63\x99\x92\xf9\xfc\xc7\xae\x97\xfb\x29\x0c\xd4\x04\xc7\x0a\xc8\x4a\x02\x34\x25\x2d\xbc\x3b\xe0\x3a\x44\xbf\xa8\x82\xee\x3e\xb8\x4f\x85\xaf\xd4\x4c\xcb\x5c\xd1\x72\xb5\x3e\x99\xb5\x0a\x08\xb7\x08\x16\x0b\x6d\x58\xf5\x09\x3d\x59\xe2\x0c\x95\xe3\xf4\xe2\xa7\x81\x35\x24\x53\x8d\x97\xfc\xe9\xde\xd1\x20\x11\x3a\x68\x34\xa4\x1f\xaa\xc0\x59\x2b\xed\x82\x64\xfd\xc8\x6f\x05\x28\xea\x17\x71\x59\x8b\x28\xb6\xa3\xcf\x51\x7b\x73\xcb\x0d\xff\x8c\x60\xed\x2d\x60\x9e\xbf\x3e\x3b\xe9\x66\x48\x5f\x9e\xa0\x36\x5a\x97\xd6\x86\xfa\x5f\x34\xa9\xd4\xf4\x8c\xcb\x05\xf1\xde\x2d\x83\x59\x54\xb2\xf3\x24\x28\xf4\x05\xce\x2a\x06\xc5\x30\xad\x45\xb7\x9f\x4a\x9d\xe1\x6b\x6d\xd4\xfe\x64\xe2\x44\xd5\x8d\x71\x6a\x55\x1d\x0c\xac\xff\xfc\x53\xcc\xe7\xb2\xf2\xea\x5a\x5a\x54\xb2\x03\x69\x68\x07\xda\x22\xd1\x2e\x3a\xb5\x39\x92\xc8\x57\x01\xaf\x19\x68\x6b\x79\x70\xd0\xc8\x96\x14\x03\x25\x8a\x7e\xa1\x6a\xa0\xf1\x93\x54\xe8\x7e\xb5\x5b\x6e\xec\x41\x3d\x30\x35\x8e\xf9\x40\xcc\x09\x01\x8f\x14\x4d\xb4\x0f\x60\xd4\x79\x5a\xe0\xd4\x2a\x2e\x10\x94\xc8\xc2\x01\x91\xba\x69\x2c\x6f\xda\x16\xd6\xf2\x0b\xc4\xc5\x41\x45\xfe\xbc\xaa\xb0\x70\xb8\x24\x89\x41\x5e\xb7\x57\xc4\x7c\xa9\xa2\x89\x19\xd3\xde\x39\x17\x7d\x47\xd0\xce\x48\xd0\x7e\x6c\xa5\x8a\x1f\x53\xa1\xdf\xb0\xfd\x9b\x91\xa0\x97\x23\x11\xd0\x41\x2c\xe8\xd4\x96\xba\x2a\xd2\x2f\xd6\xa6\xf7\x53\xc1\x7f\x60\xfa\xd5\x48\xd0\xd3\x91\x08\xac\x70\x45\x91\x70\x56\x4f\x18\xa4\x82\x7f\xc7\x84\xeb\x91\xa0\xdf\xa1\xc6\x2d\x7b\x9a\x28\x92\xce\x97\x93\xe2\x1f\x1a\x8c\xbd\x47\x41\x2f\x8e\x04\xbd\xb0\xf0\x9f\xf0\x8d\xd6\xe2\x87\x73\xd8\xa1\xdb\x1d\xe2\x1d\xbe\xa5\x56\x51\x66\x2e\xdf\x36\x77\x5f\xcc\x0b\xa6\x3c\x30\xa7\xe9\x7f\xda\x07\x87\x8a\x86\x55\xef\xc0\x1d\x9d\x8a\xaa\xf4\xc8\x62\x61\xda\xc9\x3e\xad\x35\x02\xfc\x5e\x20\x93\x6a\x6c\xb3\x3c\x9e\x54\x51\x78\xac\x1f\x5b\x4c\xc6\x9b\x9e\x23\xd6\x9b\x1a\x12\xac\x93\x2c\xaa\xb7\x3c\x5f\x4a\x39\x27\x96\x71\xc1\x32\x3c\x71\xa3\x5d\x1b\x4f\xf8\x32\xe0\xc2\x2a\x9f\x48\xfc\xf4\x24\x4b\xb9\x64\xa9\x89\x92\x2c\xf5\xa4\x1f\x06\xa8\x1b\x5b\x55\x47\x81\x70\xc5\xd4\x59\xd5\x3e\xa2\xd5\xb7\x28\x4c\x59\x17\x30\x68\xc7\x68\xf0\x07\xaa\xc2\x90\x27\xf8\xb1\xb9\x85\xa8\x25\x16\x98\xcb\xae\x2b\x0f\xe4\x5f\x3b\x56\xd0\xa0\xec\x4b\x61\x1a\x70\x49\x99\xa6\xe0\x93\x65\x05\xd0\xe3\xa2\x82\x3d\x18\x83\x3d\x51\xab\x62\x4f\xfc\x4a\x1d\xdf\x8a\x3a\x76\xa1\x8e\xdd\x7a\x1d\xbb\xc2\x0b\xd9\xd9\x98\xc3\x1f\xab\xd4\xc3\xce\xc6\x3f\xa9\xf8\x9d\xc6\x8a\xd1\x3f\xdf\x10\xa4\x7f\x3d\x91\xae\xa0\x4f\xa9\xbd\xba\xa9\x89\x96\xd0\xc3\xb1\x1b\xd2\xed\xd4\x95\xec\xba\xbb\x40\x8f\x56\xd7\xdd\x9a\xea\x8f\x6a\x34\x6e\x9f\x1d\x13\x4d\x2b\x57\x06\x8a\xf8\xfd\x97\xa0\x94\x25\x34\x2a\x6b\x57\x39\x7b\xbc\xa1\x31\x57\x9c\xbf\x74\xe7\x73\xc5\xf9\x34\xa1\x0a\x82\x5f\x13\x1b\x4c\xb8\x59\x5d\x1b\xfc\x82\xa6\xe5\x6d\x53\xeb\x73\xa4\x2f\xfe\x69\xc6\x8f\xcf\x1c\xa9\x8f\xcb\x39\xdf\x42\x36\xa0\xd1\x70\x92\xf9\x3c\x05\x9e\xa6\xe5\x0d\xac\x89\xf1\x81\x75\xd9\x97\xf9\x83\x80\x4e\xf8\x88\x85\xfd\x6c\xf2\x90\xd3\x27\xd8\x8d\xfb\xcf\xf4\x85\x0b\xe0\xab\x27\x01\x1d\xf1\x17\x60\xac\x7b\xb1\xf3\x04\x88\x72\xea\xbc\xbe\x84\xee\x84\x76\x84\xfb\xb4\x28\x1c\x94\xbc\xb0\x97\x67\xb3\x40\xd3\x91\x7b\x52\x98\x08\x7d\x82\x03\xcf\x13\xcb\x71\xa1\xc6\xc0\x24\x34\x1a\xa7\x26\x35\x2a\x53\xeb\x7a\xf6\x7b\x6e\x81\xd0\xa3\xf6\x86\x60\x99\x3f\x0a\x58\x27\x71\x37\x60\xa1\x19\xed\x7e\x80\xea\xee\xc5\x9b\x9c\x0a\xa7\x6c\x63\x64\x5a\x39\x5b\x6d\x81\x8e\xc8\x62\x11\x37\x1a\xef\xf2\x46\x63\x43\xb0\x87\x67\x7c\x5d\xbe\xec\x39\x57\x3d\xa7\x7a\xa3\x59\x59\xd4\xa6\xab\xd2\x0e\x4d\x47\xb8\x12\xc6\x66\x41\x16\x84\xde\xf7\x08\x6d\x7d\xd6\x9e\x08\x9f\x2c\xc9\x89\x68\xd2\x1e\xb8\x7e\x40\x07\xfe\xc0\x5c\xd9\x12\x2f\xe3\xdb\x66\x52\xe8\x4b\xa2\x27\x7e\x69\x2a\x26\x7a\x16\xca\x21\xcf\x0b\x37\x0e\x7a\xf0\x4d\xc4\xa8\xd1\x78\x2e\xa9\x1b\x74\x16\x6a\xd7\x52\x4b\xbc\xb3\xe7\xe5\xfc\xc8\x4e\xbf\x97\xf0\xad\xcf\x79\x65\xfa\x2b\xed\xe6\xb6\xdd\x27\x9e\x43\xbb\xe8\xe7\xe2\xd1\x7f\x0a\x68\xd6\x76\x46\xbc\x45\xcb\xe9\x1b\xd1\x14\x28\x08\x4c\x5c\x52\x9d\xb8\x91\x76\xfa\x3b\x2d\xa1\xa9\xe6\x9b\x95\xe3\x21\xe1\x68\xce\x26\xb7\xe8\xb7\x31\x69\x34\x9c\xac\x5d\xd6\xd2\xa2\xd8\x70\xee\xe7\x7a\xb0\x02\xe2\xc6\x28\xe2\x7d\xd5\x73\xf2\xf5\x73\x72\xfa\x08\x8b\x17\x86\x3e\xc6\xce\xbd\xac\x69\x2a\x26\x84\x78\xb1\xd6\xc5\x1b\x48\x6f\x80\x5f\xfe\x78\x16\x78\xef\xf4\x38\x0e\xda\x02\x39\x05\xd6\x01\x88\xce\x8b\xde\xc6\x74\x00\xbd\x50\xd5\x9e\xc6\x74\x40\xe8\xb6\xb9\x8b\x1f\xa0\xc3\x64\x5d\x49\xdc\x68\x54\x6a\xb9\xa8\x54\x12\xea\xd6\x77\x05\x00\x70\xd8\xf5\x7e\x31\xff\x25\xde\x0a\x54\x32\xef\x09\x3f\x86\xf9\xdb\x29\x47\x39\x36\xf0\xc1\xce\x14\xb1\x13\x49\x1a\x0d\x67\x79\xb4\xfd\x87\x30\xa0\x31\xa1\xc5\x2e\xba\xa5\x8d\x43\xc7\x5c\xfa\xbb\x2f\x01\xfb\xf0\x8d\xc4\xfc\xa8\xe3\x84\x34\x06\xd4\x8a\xd9\xe0\x86\xd0\x98\x69\x37\x1e\xdc\x7e\xe0\x5e\x61\x03\xec\xc3\x35\x6c\xc6\x45\x15\x78\x7b\xa3\x70\x05\x21\xca\xc6\xc0\x52\x52\xc5\x07\x58\xa1\x46\xa7\x18\x18\x4c\x34\x4c\x7b\xf7\x42\xcd\x6a\x56\x38\xf0\x0a\x17\x33\xae\xe5\xea\x52\x55\x38\xd6\x44\x0b\x08\x48\x16\xf7\x48\xc8\xe2\x1e\x97\x9a\xca\xef\x9e\x0a\xee\xb3\x8f\x9f\x28\xdb\xa2\xac\xf5\x29\xa0\x7b\x18\xf1\x8f\x22\xbc\x5f\x84\x3f\x61\x44\x45\xec\xf8\x7c\x8d\x91\x6d\xfd\x94\x47\x13\x1e\xe3\x73\x9e\xb1\x27\x81\xa6\x24\x8c\x59\x09\x67\x63\xf7\xda\x89\xe1\x78\xb1\xc1\x63\x7f\xf2\x12\xcc\xe7\x7b\xd7\x4e\x82\xe8\x65\xd8\xca\xd8\xb0\x99\xed\xfd\x53\xe1\xee\x9e\x0a\x4f\xc1\xb6\xab\x9f\x43\x3d\xc5\xbe\xe5\x1c\xb7\x22\xf8\xf2\x42\x76\xa4\x2c\x13\xab\xd5\xfb\x53\xab\xde\x6f\x8e\xbf\x35\xeb\xfe\x17\xd6\xaa\xff\xf1\x1e\xbd\x4d\x5c\x80\x91\x4e\x84\xbb\x85\x1e\x4d\x8e\xd0\x2b\x86\xbd\x50\x5f\x90\x85\x75\xa5\x54\x7a\x70\xa8\x08\x7a\x59\xb9\x2a\x81\xc6\x2e\xbe\x3f\xce\xe7\x89\x96\xa9\xc2\x0f\x4f\x5a\x9f\x80\xc2\x3f\x0c\xa8\x40\xb9\x0a\xf4\x87\xa4\x05\xe6\xd6\xc0\x2b\x38\x82\x10\x19\x55\x53\x76\x2a\xe9\x6c\xea\x98\x38\x5a\xf1\x30\xb8\x29\x50\xaa\x64\xdc\x1f\xe8\x2f\x7f\x18\x34\x05\xfa\x1a\x6c\x0a\x82\xc6\xec\x25\xd5\xf9\x88\xc9\xc6\x05\x1d\xe8\xd8\x61\xd0\xfc\xf8\x9b\x20\xf4\x52\x07\xb7\x75\xf0\x0d\x75\x7a\x2b\xc7\x55\x38\xa8\x98\x3a\x8a\xbe\xdb\x68\x69\xa9\x40\xe8\x36\x5a\xd3\xc2\xaf\x99\xf6\x41\xdc\x3b\xe7\xb0\xab\xce\xe7\xe6\xf3\x6b\x42\x22\xbe\xad\x27\x98\x46\x7c\x94\x3b\x02\xf8\xe2\xf9\x3c\xd2\x2a\x21\x5b\x74\x63\x8b\x0a\x60\x7b\x09\x3d\x38\x05\xa0\x12\xaa\xf0\xb1\xf3\x2a\x15\x30\xdb\xc7\xbd\xb6\x23\x38\xfc\x52\xe0\xea\xbe\xbd\x04\x4d\x51\x0c\xd0\xef\x1f\x89\x8b\x32\x98\x09\xca\x66\xfc\xd2\x98\x66\xe5\x98\xca\xa6\xf8\xfd\x23\xa1\xb2\xc9\x45\xcd\xec\xe3\x45\x67\xf5\x5d\x18\xf1\x3a\x36\x26\x55\x14\x01\xfe\x40\x01\xfa\x92\xd7\x98\x7f\xed\xa0\x83\x63\x2f\x36\xb8\x19\x73\xf8\xf2\x62\x83\x9b\x78\x8c\xf2\x12\xd4\xed\x43\x8f\x2d\x92\x5d\x45\xed\x43\xa8\xc6\x3d\xb8\x76\x14\xdd\xd8\x32\x1f\x12\x0e\xf5\x5e\xc2\x0f\x76\xd1\xe3\x76\x79\xa9\xa3\xd8\xb7\x50\x3b\x32\xd0\xfe\x90\xf6\x4e\xc5\x92\x47\xa4\x9f\xa1\x39\xe4\xce\x2c\xa2\xd3\x01\x3f\x84\xea\x69\xda\xcc\xf5\x10\x22\xa0\x15\xd4\xcf\xe9\x40\x8c\xbb\xee\x60\x41\xbc\xb4\xc9\x21\xd3\x62\x11\x73\x07\xff\x47\x2c\x23\x8d\x46\xec\x87\x01\xfc\xb0\xb4\x7a\xe9\x61\x7d\xce\x26\x04\x00\x4e\xfd\x24\xa0\x1b\xe9\x7c\x9e\xb2\x0b\x35\x9f\x3b\x7b\xd7\x4e\x4a\x15\x99\xcf\x63\x28\x9f\x04\xfa\xaf\xff\x03\xef\xa7\x0b\x5a\x92\xa0\xad\x1f\x54\x4a\xd2\xc3\xc5\xef\x8e\x90\xb5\xe8\x1d\x3a\x8a\x25\x40\x21\xed\xec\x6c\x6e\xd1\x88\x2c\x34\xc3\xd9\x3b\x5c\x32\x4e\x26\x7c\x79\x14\xd4\xaf\x2d\x05\x2a\x5c\xf8\xc7\x41\x55\x77\x62\xa7\x2a\x03\x50\x72\x8f\x68\xfd\xb4\x34\x93\xd3\x6c\x16\xa6\x77\x9f\xae\xe1\xf0\x8f\x07\xa4\x72\xdf\xc9\xad\x9d\x5d\xd3\x8f\x18\xfb\x51\x45\xa9\x93\xff\x2b\x62\x69\xd6\x96\x17\x56\x68\x64\xc8\x8e\x7b\x80\x87\x11\x87\x2f\xf3\xee\x2c\xd9\xd7\x6f\x9e\xe2\x5b\xc6\xdb\x44\x86\x46\x57\xae\xbb\x54\xf1\x56\x21\xec\xfa\x73\x4a\x07\x85\x8d\x92\x17\x7f\xcc\xcd\xb3\xba\xd5\xfa\xea\x46\x4e\x46\x3c\x4d\xba\xc3\x7d\x54\xd1\xff\xf2\xe0\xec\x3e\x38\xa9\x36\x8c\xcd\xfa\x11\xa1\xd2\xc4\x65\x3a\x18\x9b\x60\xc2\xce\x5f\x2a\xb9\x2a\x55\x6a\xdf\x99\x31\xf5\x05\x95\x01\x01\x0e\x24\xcc\x1d\x93\x4e\x55\xd9\x3a\xda\xdc\xf6\x92\xf5\xa4\x38\xe5\x29\x3b\x95\x9e\xe0\x51\x41\x05\xbc\xd9\xd4\x89\x2c\x4d\x4d\xfc\xc3\xa0\x99\xfe\xfe\xb1\xb9\xc5\x3e\x01\x45\xa0\x09\x8a\xb5\xd6\x62\xd0\x03\x49\xda\xfc\x47\x53\x10\x9a\xf8\xdb\x45\x80\x10\xcf\x69\xfd\xc9\x23\x68\xcd\x1f\x06\xf3\x79\xeb\x4f\xfe\x4e\x87\xb6\x01\xb1\xcd\x9b\x23\xce\xc3\x2f\x13\xd9\x10\x35\xa6\xa3\x82\xc6\x46\x3f\xa7\xb1\x2f\x5d\x4b\x04\x90\xbc\xf6\x81\xbc\xa6\x35\xf2\x3a\x00\x5a\x6a\xc9\x6b\x48\x73\x2a\xd8\x63\x2a\xc8\xc2\xce\x66\x8d\x78\x64\x74\x57\xb9\xca\x52\x10\x53\x91\xd9\x24\x33\x18\x36\x43\x6f\x71\x70\xa2\x2a\x2d\xae\x11\xd1\x83\xba\x4c\x06\x1c\x1d\x4f\xfe\x98\xcf\x1d\xf8\xe1\xaf\x0b\xbd\x87\xc8\x62\x0f\x91\xd8\xbf\xd0\x00\x14\x99\xfd\xf3\x6b\xea\x68\x21\x60\x2d\x08\x18\x55\x23\xb5\xcb\xfc\x99\x15\xcc\xa9\x08\x0d\x0a\xeb\xa3\x4e\x2c\xc5\xa2\x70\xae\x17\x32\xa0\x6f\x3c\xf4\x2f\x60\x41\xe1\xfd\xf3\x37\xf4\xbc\x6e\x86\x55\xa1\x0b\x41\x73\x31\x35\xfa\xe6\xf8\x31\x15\x01\xa1\xda\x78\x75\xcc\x1e\x22\xfd\x0a\x2f\x9a\x4d\x82\x75\xb0\xab\x7b\x07\xa3\x85\x36\x96\x56\xad\xe7\x2a\xd1\xbe\x37\xb1\x1e\x49\xa3\xa2\x1e\xb5\xbe\x1e\x65\xeb\xc1\x18\x5f\xe2\xbb\x58\x39\xa8\xcf\xeb\x44\x96\x32\x63\xeb\xcb\x51\x85\xf7\x72\x55\xf8\x36\x57\xd6\x8f\x79\x65\xc7\xd2\x03\x56\xee\x5a\x9a\x5a\xe8\x58\x08\xd1\xff\xd9\x6e\xb5\x84\x4c\x06\x81\x70\xeb\x1a\x2a\xc0\x20\xeb\xb8\xa4\xd8\xcd\xf0\xe1\x50\xcf\x86\xde\x93\x36\x9d\x22\xad\xf9\xb1\x19\x57\x91\x4b\xdf\x0c\x1b\xa2\x6c\xb7\x9a\x98\x24\xb8\xd5\xc4\x01\xdd\x48\x60\xb5\xdb\xad\x26\xc1\xad\xe6\xe4\x58\x0b\x6b\x35\x1a\x1b\x08\x6c\xa3\x51\xd0\xe1\xf8\xaf\x37\x9a\x62\xb0\xf5\x4e\x53\xde\xc1\xfe\xcf\xf7\x8c\x62\xa3\x38\x79\x6b\xa3\x38\xac\x56\x8e\x44\x5d\xb2\xc3\x31\x0d\xf1\x89\xb3\x10\xd2\x52\x85\x5e\xcc\x76\xea\x85\x6c\x24\x79\xe4\x29\x38\xdd\x8c\x14\xdb\x19\xa1\x98\xdc\x76\x4a\x21\xa1\x02\xf7\xe9\x0a\x5b\x33\xeb\x38\x82\x5d\xe5\x66\x95\x6a\x0b\x9c\x16\x80\x42\xf6\x28\x5a\x50\x55\xa9\xe5\xa9\x0e\x20\x8a\x9c\x95\x75\x08\x16\xff\x28\xeb\x88\x6a\x16\xf4\x5f\xaa\x25\x7b\xb1\x83\x12\xce\xc3\xb2\x7c\x84\x26\x2b\xa0\x7c\xc4\x8f\x4d\xbf\x23\x3f\xb2\x52\x5a\x2b\xfd\x8e\xa0\xdf\x61\xb5\xdf\xa1\xee\x77\x84\xfd\x2e\x1b\x9e\xad\x36\xac\x2b\x2b\x5a\x21\x46\x20\xdf\x8e\x68\x65\x64\xb4\x60\x87\xd1\xa6\xb7\x33\x88\x46\xa8\x15\xb6\x4f\xe3\x95\xf6\x21\x81\xd4\x66\xf5\x6c\xcd\xf6\x7f\x64\xa7\x16\x30\xf1\x79\xea\xc4\x34\xf6\x13\x63\x76\x06\x58\x48\x08\x78\xb1\xaf\x02\x0e\x7f\x8a\x8b\xb9\x18\x83\x34\x79\x0b\x5e\xdd\x86\x17\xb3\xae\xe0\xa1\x97\x34\x1a\xe1\x0a\x7c\x90\x56\x99\x97\xed\xa5\xe1\x11\x6c\xbf\x67\x47\x08\xbe\x3d\xc1\x77\x2e\x1d\xe5\x3f\xbc\x04\x54\xb1\x8b\x2f\xd4\x7f\xd5\x8f\x36\x5a\x1a\xdd\x88\xa0\xc7\xfe\x41\xb0\x80\x93\xce\x87\x10\xf6\xae\xfd\x1e\x7f\x8d\x54\xdc\xcb\xb5\x88\x0a\x30\xd8\xa5\x02\x65\xb5\x41\x01\x03\x11\x69\xbf\x37\xcf\x53\x47\x50\x51\x8e\x02\xf0\x71\x30\x0a\xc2\x0f\x03\x2e\xec\xb5\x6d\x88\x9f\xb0\x57\x00\x7b\x2f\xf5\x9d\xe5\xbd\x74\xe0\x1b\x76\xce\xca\xb8\x8f\x56\xe9\xe5\xeb\x89\x74\x25\x7d\x4a\x5d\x3f\xa0\x87\x63\x37\xa2\xdb\xa9\x11\xbc\x89\x79\xa8\x2f\x37\x50\xdf\xdd\x5c\x6e\x48\x94\x6d\x49\x2c\x96\x16\x2a\x7a\x78\x13\x21\x86\x0a\x8f\x77\x52\xab\xea\x91\xc2\x03\x02\x5e\x3c\x96\xc2\x62\xb1\x95\x2e\x4f\x4a\x82\x91\xf1\xd0\xde\x2b\xa0\xd1\x3c\xc3\x4e\xa6\x34\xe1\x97\xb5\x8b\x9a\x15\xe3\xfb\x0b\x7b\xeb\x98\xe0\x65\x4d\xe2\x0f\x02\xd8\x46\x3f\x67\x1e\x19\x34\x9b\x5e\x8b\xf3\x41\x3b\xe1\x2d\x77\xc0\xd1\x55\x7c\x3b\xe1\x5a\x6e\xcc\x75\x32\x9e\x7d\x3e\xbe\x77\x12\x7f\xb0\xb9\x85\x65\xa8\x2d\x4c\xda\x83\xcd\x2d\x77\x40\x13\x7e\x01\x8d\x27\x7e\xa6\xa5\x59\xf0\xa6\x63\x61\x64\x88\x2a\x9e\x65\xb5\x3b\xf5\x2f\x30\x73\x31\x4d\x08\x1d\x4e\x9d\x1c\xc6\x9e\xa6\x70\xe6\xc3\xab\x1e\x61\xde\x64\xa8\x1e\x42\x27\xe7\xdf\x30\x3b\xa1\x39\xdb\x4f\xf8\xeb\x77\x57\xb2\xdb\x7f\x2e\x88\xf1\xd2\x68\x1e\x9e\xf2\x66\x93\xe4\x38\x62\x8e\x29\x97\xe8\x72\x39\xa1\x09\xdb\x16\xfc\x55\x0a\xd7\x1a\x21\xd8\x59\x2c\x08\x4d\xf4\x4e\x96\x13\xfa\x2e\xc3\x51\xcc\x03\x9a\xb0\x6f\x21\xcf\xd8\xb7\xd0\xc8\xbe\x87\xb9\x03\x51\x94\xfd\xc3\xde\xda\x84\xb5\x5b\x9b\xe8\x6f\xdf\xda\x00\xb3\x6e\x2a\xb9\x14\x04\xa6\xef\xfc\xd1\x4f\xf0\xc6\x26\xe6\x39\x54\x96\x70\xc9\x4e\x21\xae\x23\x02\x9a\xf3\xbc\x72\x63\x13\xb7\x8b\xc3\x83\x2b\x8b\x1b\x1b\x33\x60\x34\xd7\xb7\x35\xd8\x7b\xf8\x0b\x28\xc2\xf9\x97\x43\x7b\xce\x08\x8b\x4b\x30\xcd\x56\x95\x57\x62\x7a\xa4\x80\x4a\x55\x47\xb8\xf2\xc2\x67\x45\xad\xe9\x88\xe6\x3c\xd6\xfc\x47\xeb\x33\xcf\xbd\x7c\x73\x13\xed\x21\x26\x3c\xf6\x73\x60\x5c\x6b\xc7\x10\x83\xf5\xd2\xb8\xf0\x95\x86\xfb\x92\xc6\xd5\xaf\x44\x16\xcd\x58\x9a\x34\x1c\x57\xa2\xd1\x0b\xb8\x3a\x38\xac\x8c\x78\xae\xf9\xdf\x45\x71\xe9\x6a\xf1\x27\xa4\xa3\x37\xf1\x07\xd2\x48\xc5\x77\x7f\x1d\x49\x42\xc4\x8e\x77\x3f\x43\x8f\x0a\x76\xfc\x12\x72\x54\x85\xfe\xbe\x58\x25\x25\x2d\x3a\x35\xb4\xb6\x5c\xaf\x9e\x0b\xb5\xde\x7b\x9e\xa4\x8e\xb0\x36\xe4\x84\x3f\x0c\x36\xb8\xc4\x73\x80\xf0\xb7\xf1\x7b\x3b\xf0\x36\x90\x02\x6f\xc3\x64\x6e\x6b\x0b\x64\x68\xa6\x13\x69\xb7\xce\x8b\xb6\x3a\x75\x78\xdb\x84\x0f\x4d\xf8\x50\x87\x61\xdc\x31\x42\x33\xb6\xa6\x75\x6d\xf7\x26\x6c\x34\x72\xe9\x54\xa2\x80\x0e\xb6\x8a\x4c\x2c\x54\x56\xb4\x0e\x03\xfc\xe6\xbe\x12\xa2\x49\x6a\x2e\x35\x4f\x7b\x02\x92\x04\x44\x16\xc4\x07\xf7\x2b\x43\x7e\x8e\x90\x08\x86\x0a\xb6\x1f\x69\x7e\xcb\x8a\x20\xb4\xd1\x42\x73\x74\xd6\xa4\x49\x09\xc2\xd7\xa8\x02\xc2\xd7\xa8\x0a\xc2\xd7\xa8\x04\xe1\xcc\x82\xf0\x35\xfa\x19\x08\x5f\x23\x0d\x82\xfe\x2d\x2b\x42\x10\xb6\x00\x8a\x65\x10\xc2\xbe\x7e\xd8\x39\x36\x76\x6a\x8e\xcd\xed\xae\x49\x7e\xfe\x83\xbf\xc3\x8f\xa7\x3f\x74\xfa\x57\x9b\x5e\xd9\x4b\x8e\xea\xa6\x13\x8c\x9d\xba\xf9\x7c\x43\xae\x38\xc1\x49\x34\x5a\xd0\xd4\xa0\x47\xca\x8e\xef\xb9\x64\xc7\xf7\x5e\xca\xae\x80\x53\xbc\x52\x5e\xca\x14\xac\x47\x15\x7b\xc6\x7c\x51\x8c\xd3\x18\x56\x26\xb0\xe2\x63\xa4\xd1\x90\xc5\x97\xf0\xd5\x0b\x30\xac\x12\x7e\xc9\xab\x60\xfb\x12\x70\x0b\xfe\x3a\x29\xdb\x97\xa8\x2d\x8d\xae\x23\xa1\x79\xf8\x25\x00\xc2\x6d\x04\x41\xf8\x25\xde\x8e\x70\x52\x0a\x21\xa0\x2d\xe8\xd5\x4a\xa7\x86\x36\x35\x84\xd4\xd0\xa4\x5a\x4d\x42\x2e\xcd\x87\x3e\x87\x1e\x21\x7d\x3a\x12\xe4\x35\x65\x47\x82\x27\xf7\x0e\xfc\xe2\x4d\x2a\x86\x42\x0c\xe9\xbd\x0e\x52\x68\xce\x21\xca\x2b\xf9\xf8\x52\xd4\x00\xa8\x21\x00\x00\xbf\xc4\xcb\x4d\x28\xc7\xd0\x93\xf1\xda\x1b\x07\x74\xc4\x05\xbb\x8d\x50\x55\x11\xbd\xf8\x8d\xb8\x84\xf0\x30\x75\x46\xc4\x1b\xb0\xdb\x02\x42\x67\x44\x16\x0b\x84\xf2\x0a\xc6\x8e\x5d\xe9\xf3\x5c\xca\xae\xba\x1a\xd0\xab\x2e\xa1\xa1\x09\x85\x18\x02\x20\xaf\xba\x08\xe4\x55\x97\xbe\x5b\x82\xb0\x06\x20\xad\x01\x48\x7f\x01\x38\xba\x04\x9c\x9e\xdb\x5e\x84\x4a\x9d\xbd\x28\xd0\x76\xac\xa6\x30\x2b\xf7\x4e\x8a\x31\x84\x86\x53\x98\x87\x7b\x6d\x09\x92\x40\x85\x98\x42\x43\x8e\x31\xf4\x7b\x07\x6a\xfe\xde\x71\x42\x62\x4e\x1e\x23\x0b\xee\x37\x83\xac\xd8\x06\x00\x27\xed\xc7\x08\xfe\xa0\xf4\x9a\x55\x2d\xab\xc1\x61\x24\x8a\x4e\x0f\x84\x8e\xd7\x05\xd7\xbb\xf6\x11\x6c\x2c\xd0\x6f\xa9\x80\xe3\xfc\xd4\x49\xe8\x65\xcf\x94\x5a\x9b\x5f\x93\xfe\x09\x3b\xfb\x17\x3e\x37\x61\x99\x14\xca\xfc\xa4\x0d\x5b\xe6\xbc\x52\x06\x07\x25\xd1\x83\xe2\x7d\xef\x98\x4f\xf8\x4a\x8b\x2f\x3d\x66\x46\xeb\xc7\x4f\x68\x5a\xf5\xb2\xf5\x6d\xd9\x0a\x8a\xbd\x4d\x53\x6c\x5b\xa0\xd7\x2a\x3d\x8f\x0a\xe7\x31\x2b\xe6\x31\xd3\x2c\xa9\x99\x45\x4c\xf5\x64\x39\xad\x99\xb6\xb7\x08\x7c\xe4\x36\xea\x8f\xb2\xe9\xa6\xa0\xa9\xfe\xe2\xb2\x19\xd3\x08\xfd\x4d\x43\x78\xc6\x23\x9b\x69\x66\x1e\xf1\x2a\xe5\x66\x45\xb9\xd9\x52\xb9\x69\x59\x6e\x5a\x73\x40\xd2\x31\x06\x68\x97\xf4\x48\x90\x75\x06\x2a\xe4\x87\x01\x41\xc1\x88\x10\x98\xda\x6d\x01\x91\xf0\x6b\x55\x4b\xe1\x1b\x95\xa9\xa1\x6e\xcb\x2c\x63\xc0\xdb\xb7\x97\x65\xdf\xbf\x3b\x8a\x4d\xa9\x02\x90\x17\x35\xd9\x8c\xe3\x9a\x06\x2d\xdb\x1d\xa2\x3c\xee\xd5\xb3\xe6\x64\xb2\x46\x23\x64\x99\x15\x02\x00\xdc\x42\xcb\xe5\x75\x27\xf0\x55\xbc\xea\x45\x80\x57\xbd\x08\xce\x00\x40\xb4\x2f\x97\x1d\x52\xad\x60\x48\x64\xb1\xca\x13\x40\xed\x2f\x7b\xce\x9b\xd5\xdb\x02\x06\xa5\x3c\xed\x0b\xea\x24\x99\xcf\xf5\xd7\xdd\x51\xdb\x81\x59\xb5\xda\xae\xb8\xd7\xb5\x02\x17\x37\x1c\x6d\xdd\xbb\x48\x0b\x4d\x5a\x68\xd2\x4a\x2a\x1d\x56\x28\xb7\xa6\xd7\x21\xfc\xb6\x4f\x34\xee\x69\x0c\xa3\x06\xb3\x88\x7b\x8a\x03\x48\x8c\x63\xaa\xce\x5e\xa3\x71\x86\x31\xd5\x53\xe4\xe9\xf2\x20\xb3\x3d\x61\xc6\x99\xed\xe1\xe4\xc9\x46\xa3\xa2\xad\x42\x8d\xa7\xf5\xd7\x85\x76\x20\xbf\x2a\xb7\x66\x4e\x14\xfe\x87\x00\xf0\xcf\x87\x8f\x80\x4b\xb2\x20\x4b\x3a\x4a\x2b\x79\x93\x7a\xde\x9f\xd6\x1b\xf9\x32\xe0\xa6\xc0\xfa\xaa\x8b\x83\x05\xe4\xa9\xb8\xc3\x87\x12\x5e\xe4\x87\xc1\x06\x47\xe7\x75\xda\x4c\x2f\xf1\x14\x0a\xa0\x2c\xfe\xb2\x69\xe5\x9b\x66\x6d\x05\x08\x0a\xd6\xb1\xa8\x3e\xaf\xb4\x68\xc6\x5b\xe8\xa6\x8e\x0e\xb8\x1f\x78\x29\xda\xd3\x9f\xcf\x33\x6d\x73\x88\xe8\xb0\x3d\xc4\x45\x7e\x1a\xb4\x9d\x01\xbe\x98\xfc\x98\xba\xaf\xa3\x9e\x9b\x52\xf5\xe2\x6e\xb4\x16\xf4\x4e\x87\x33\x0c\x6f\xc1\xf1\x44\x7b\xd4\xd3\xde\x07\xfc\x34\xf0\x3f\x04\x0b\x42\xd3\x66\x93\xb8\x8e\xae\xde\x56\xab\xfc\x6c\xb5\xda\x77\xba\x9e\x7a\xbd\xad\xa5\x7a\x43\x3f\xd3\xf5\x12\xf7\x57\xc0\x5a\x2e\x5e\x07\x8b\x66\xcd\x26\x2c\xa2\xb3\x7b\xb6\x27\x78\x6e\xac\x3d\xad\x5d\x48\x2d\xce\x65\x5b\xe0\xd2\xf8\x93\x0b\x38\x6a\x9e\xf5\x1c\x41\xdc\xcb\x8e\x23\x7c\xb9\xb9\x15\x50\xe1\xcb\x80\xb2\x4f\x64\xe1\x21\xba\xde\x47\xed\x73\x44\xff\xc1\x92\x69\xd3\x8a\x33\x4f\xc9\xd4\x4b\x5b\xf8\x92\x8d\x7a\xbf\x85\xcd\x28\x70\x47\xb8\x5c\x74\x88\x2c\x88\x7b\xd5\x59\xa9\x60\x5d\xe1\xb2\x20\x59\xd4\x9f\x62\x56\x6d\x80\xe8\x95\xa4\xaa\x2b\x29\x6a\x34\x50\x6b\xbc\xa5\x5d\x71\xcc\xe7\x2d\x98\xa1\xe3\x80\xd8\x91\xf1\x03\x8a\x90\xf8\x35\xd5\x93\xaa\x51\xf8\x8a\x41\xb4\x78\x9d\x0e\x81\x74\x10\xdd\x17\xd6\x1f\xae\x1f\x68\xfa\x7b\x0c\xc4\x02\xdb\x2a\xef\x0a\x5a\x5e\xa6\x45\x26\x61\x76\x52\x3b\xc7\x19\x4c\x6c\x06\x67\xe0\x0a\x32\x38\xc7\xf7\x0e\x54\x93\x05\x84\xc6\x8e\xc2\x93\x3c\x31\xc0\xbc\xcf\xf8\xd9\x81\x70\x34\x03\x4b\xef\x9c\x6c\x8d\x9e\xa7\x60\xe1\xbe\xb6\x02\xb1\x6f\x0c\x37\x1a\x82\xe9\xcb\xc0\x1e\x41\x95\x2f\x02\x7c\x40\x2a\x5a\x93\xa6\x35\xa1\x9f\x69\x8c\x65\x2d\xdc\xb6\x0c\xb0\x12\x80\x15\x75\x60\xb3\x05\x82\x66\xc7\x34\x59\x42\x93\xf4\x6d\x34\x11\xbe\x44\xf4\xb0\x08\x91\xbe\xb1\x95\x20\x89\xaf\x5d\xc5\x69\x22\x5a\x84\xa5\x7e\x30\xd4\x8c\xba\x60\x37\xf8\xc5\x6e\xf0\xdb\xdc\x68\x17\x5f\xe6\xcd\xab\x08\xb3\xdd\xae\xd3\xc2\x37\xa9\x22\x0a\xf8\x76\xc1\xa4\xae\x90\x49\x41\xbc\x5c\xe2\x47\xc5\x53\xa3\x58\x58\x09\xbb\x63\x74\x10\x9a\xa2\x49\x89\xb0\xaf\xbf\x15\x60\x43\x0c\x7f\x0c\x5e\x20\xe5\x8e\xd6\x93\x39\x20\x8a\x3d\x27\xf5\x61\xcb\x0c\xc8\x7c\x6e\x3f\xb9\x1f\x10\x6a\xbe\x8d\x05\xad\x05\xf1\x2e\xef\x7f\x42\x7a\x4b\x73\x27\xbd\xa8\xd1\x30\x65\x61\xb3\x83\xbd\x6c\x84\x2e\xe5\xc2\x9e\x13\x92\x76\x52\x9b\xd1\x70\x41\x5c\x65\xed\x44\x63\x13\xe9\x92\x72\xab\xa8\x85\x63\xc8\x8b\x6f\x1c\xa8\xd1\x8a\x93\x97\xfc\x6c\xf2\xcc\xe1\xfa\xaa\xe7\x28\x2a\x81\x1b\xbb\xea\x39\xb1\x36\x97\xae\x87\x6f\xba\xc3\xe3\x7b\x47\xd1\x4c\xef\xfd\x65\x54\x48\xdf\xc5\x55\xf7\x70\x9d\x55\xd1\xe8\x96\x17\x7d\xc6\x7a\xac\xd0\x48\x79\x9f\x8f\xd1\x51\x80\x0e\x53\xb0\xde\x48\xdf\xce\x99\xb5\x6a\x5e\xe2\xe5\xd2\x3b\xbc\xf4\x33\xd8\x44\x42\x47\xd1\x9c\xfd\x98\x12\x38\x4f\x38\x31\xcd\xd9\xdd\x94\x78\x83\x46\x63\x63\x80\xf7\x2a\x79\xa3\xb1\x91\xe3\x97\x83\xc3\x39\x30\x2e\xf1\x73\x42\x16\xa6\x61\x7e\xdd\x71\xcc\x27\x4d\x4c\xd7\x6c\x2c\x7e\xd2\xb4\x86\xd8\xe7\xa7\x6b\x44\xbf\x57\xfa\xf7\x4b\x7d\x43\x97\x3f\xd8\xb5\x0a\x09\xd2\x66\xad\x80\x2e\xfd\x8e\x29\x34\x37\x51\x71\x19\xa5\xef\x25\x71\x4c\x06\xd5\xd1\x1c\x71\xa9\x25\x22\x5b\xde\xe4\x73\xe6\x4d\x2c\x24\x4f\x38\x50\x23\xf6\x63\x4a\x33\x3a\x21\xde\x53\xa3\xb1\xf1\xa4\x2f\x9e\x60\x34\x9e\xf4\xa3\x8f\x2e\x96\x63\x31\xe7\x09\xc7\x73\xc4\xee\xa6\x34\xa7\x13\x42\x8a\x12\xa9\x29\xf1\xb7\x86\xaf\x18\xbd\xeb\x9a\xda\x9a\xa6\x06\x21\x4b\xb9\x5c\x63\xdb\xea\xeb\x5b\xcc\x6e\x79\x67\xc7\xe2\x04\x78\x5e\x08\x86\x36\xe8\x20\x99\xdb\x15\x86\x01\x29\x67\xee\xa6\x2a\x72\x2c\x80\x55\x81\x9d\x47\xc0\x49\x7f\x12\x06\x9c\xcb\x1c\x1d\x4d\x4b\x1b\x22\xa2\xfe\x62\x7b\xfb\x00\x7d\x92\x0e\xa1\xd2\x3c\xfb\x6e\x86\x84\xee\x2a\x17\x2a\x66\xe7\xc0\x65\x9e\x2b\x1a\x12\xfb\xa6\x8b\xf9\x87\x10\x3d\x54\x3a\xef\x44\xe8\xbc\xa7\x92\x4a\xf8\x13\x12\x7a\x9b\xe8\xa8\xc7\x1e\x95\xf0\x27\x24\x34\xbc\x70\x05\xcb\x33\xba\xdf\x75\x05\xfb\x92\xd0\x81\x18\x8f\xd5\x30\x77\x05\x7b\x8a\xec\x06\xd3\x8b\x9d\x14\x98\x80\x46\x23\xed\x01\xd5\x81\x8e\x60\xbf\xe4\x8a\x46\x82\x71\xe7\xea\x1f\x03\xdb\x7c\x1c\xd8\x33\xac\xc2\x03\x2c\xaa\x21\x01\x00\xfa\xf0\x1a\x07\x28\x97\x29\x78\xb4\xb0\x56\x62\xa4\x67\xcd\xc5\x40\x7b\xf3\x79\x8e\x0a\x93\x17\xc5\x2a\x70\xfb\x3a\xbe\x8f\xf1\xc2\x7d\xd4\x60\x3d\xea\xe0\x6f\x0e\x74\xbc\x29\x7f\xd3\x2e\x48\xd6\xd9\x98\x29\xab\xd2\x57\x3d\xa5\xdf\x20\xf4\x33\x51\x08\x85\x7b\x85\x76\xf8\xe5\x7d\x95\xd8\xe1\x25\x51\x08\xa7\xdb\x18\x5d\x2f\x44\x7e\x1c\xf0\xe5\x2e\x2d\x2a\x9a\xd5\xe5\x61\xae\xfe\x76\x2e\xf9\x86\x9a\xcf\x9d\xb0\x2d\xff\xe4\x68\x66\xaa\xd1\x90\x9f\x39\x9a\x9a\x72\x37\xb6\x6c\x05\xce\x46\x84\x99\xc4\x9f\x3c\xf4\x0f\x83\x46\x43\x40\x9e\x30\xc2\x3c\xa4\xd1\xa8\x1a\xb3\xbb\xac\x37\x80\x47\x5a\x40\x37\x7d\x90\x05\x54\xc3\x08\x59\x44\xe8\xbb\x20\xb6\x5f\xb1\x5f\x5f\xf2\x4f\xf6\xfc\x8b\xea\xf7\xb2\x12\xb2\x32\xfe\xfa\x9a\x57\xe1\x56\xaf\x2f\xbb\xa4\xfe\xb9\x33\xf7\x5d\x47\xe5\xa8\xe9\x77\x45\x36\x35\x23\x05\x89\x40\x9d\xa6\x54\x56\x03\x4a\x9b\xa1\xab\xe7\x99\x55\xf3\xcc\x4c\x7b\xd5\xdb\xb1\x10\x2d\x02\x62\x29\xfc\xa2\xda\xa4\x20\x55\xf8\xd6\x61\xef\xb3\x10\x2c\x76\x24\xaa\x30\x25\x00\x93\x29\x79\x24\xfc\x24\xc0\xc2\xf6\x0b\xa1\xf9\xce\x23\x27\x64\xb7\x34\x64\xb7\xba\x61\x7b\xf3\xa4\xeb\xbb\xea\xbe\x55\xdf\x55\xd7\xd6\x67\xbf\xd6\xd7\x77\x7c\x0f\xf5\xc1\x5f\x27\x64\xc7\xf7\x1c\xf1\x93\x1d\xdf\x53\x88\xc4\x3e\x58\xe3\x87\x57\xaa\xb0\xc5\x8a\xdf\xef\xa0\x7d\x65\x5a\x83\x75\x7f\xa5\x6a\xf9\x55\x5c\xe6\x57\xda\x65\x84\x8a\x75\x76\x15\xa3\x95\x45\x3d\x44\x95\x8b\x22\x3d\x77\xb5\x6b\x1b\xec\x55\xf9\xbc\x9a\x72\x7d\xf9\x94\x04\xfa\x52\x45\x56\x42\x39\x5e\x75\x78\x79\xa3\x91\xfb\x23\x40\x04\x27\x37\xb7\x1b\x37\x1d\x7b\xd1\x41\x33\xf3\xab\xe0\xb4\xa2\xef\x42\x8a\xd4\x99\x49\x9d\x21\x60\x50\x19\x9a\x04\x6f\x7d\x86\x4f\x34\xf8\x4e\xf5\x08\x3a\x69\xdb\x44\x01\x5b\xe0\xb6\x48\xb3\xbc\x9c\xa1\xb5\xc4\x59\x2d\x71\xe5\x86\xe3\xb2\x53\x23\x06\x6b\xef\x7d\x23\xb3\x71\xc0\x20\xf4\x90\x8b\x9c\xcf\x81\x00\xb0\x1b\x42\x22\x76\xa3\x47\xf4\x06\x9f\x93\xa4\xf9\x0d\x09\x8d\xd8\x8d\x19\xec\x9b\xd8\xa6\xc5\x26\xd1\xc3\x7a\xe4\x88\x34\x1a\x58\x11\x7e\x39\x11\x93\x23\x5d\x42\x8e\x28\x44\x22\x71\xc4\xac\x61\x91\x35\x34\x59\x43\x93\x35\x84\xac\x61\x25\xab\x14\x45\xad\xf0\x05\x11\xb0\xf7\x30\x29\x74\x13\x25\x0f\x4b\x7f\x08\x8c\xa0\xb8\x73\x48\xe1\x1f\x04\xd0\x2c\xfe\x02\x19\x25\x34\x97\x3a\xc3\x4d\xc7\x31\x75\xfb\x67\x51\x40\xda\xf6\xcb\xdd\xa2\xa6\x25\x1d\x2f\x2b\xf1\xa4\x82\x89\xd7\x61\x89\x89\xd7\xf8\x6e\x62\x2c\x02\xb5\x02\x40\x1f\xce\x31\xbe\x12\xd3\x8e\xd8\x75\xa8\x3b\x78\x1d\x52\x48\x04\xd2\x6f\xc4\xae\x20\xad\x24\xaf\xef\xbe\x9c\x0a\x14\x16\xcc\xc7\x6a\x38\xe8\x67\x62\xac\xde\xd2\x7d\x3e\xbb\xd7\x17\x57\xa1\x2a\x6e\x23\x4a\x06\xb5\xb0\x92\x62\xe8\x34\xbe\xaa\xeb\xb7\x0f\x82\x7b\x80\xac\x3d\xa1\xc8\xf2\xed\xd9\xbe\xb3\xf8\x51\xe0\xa9\x46\x03\xa8\xb0\xf2\x5b\x01\x55\xfe\x56\x80\xd4\x58\x14\xd6\xe0\xb1\xf9\xaf\x91\xa5\xb1\x7f\xdd\xfc\x16\x3e\x7d\xeb\xe6\xab\xcf\x27\xc5\x41\xd7\xba\x71\xea\xe1\x15\xe0\x9a\xe6\xa3\x7a\xf3\xe6\xc1\xc4\xd8\x5d\x09\xfb\xe4\x55\xb2\xac\xaa\x30\xa8\x75\x0a\x4d\x36\x2d\xf2\xa2\x6a\x8e\x68\x8e\x53\x2d\xa9\x60\x2a\x80\x00\xbe\x88\x24\xfa\x0d\xb6\xd1\x48\x1a\x0d\x2d\x31\x98\xa0\xe0\x21\x44\xb2\x14\x0d\x8e\x91\xd7\x94\xa5\xd5\xc6\x34\xb7\x1d\x6b\xc1\x1f\x3c\x04\xb3\xd4\xcf\x02\x7e\xd9\x81\x32\xc0\x74\x27\xfa\x47\x2f\xbf\x98\x4d\x77\xa0\xa2\xe9\x0e\x72\xb0\x19\x7f\xa7\x8b\x4f\x77\xaa\xe5\x77\x03\x07\xcb\x4f\x77\x74\x05\xfa\x17\x1d\x3b\xb3\x27\x34\x49\xfd\x14\xb3\x83\x1e\x54\x04\xc1\xc4\x06\x9d\x94\x3d\xc5\xfa\x35\xe5\x29\x26\x34\xd5\xf1\x80\x85\xa6\x04\x35\x59\xb1\x2e\x89\xd2\xf9\x3c\x5d\x2c\xa4\x0f\xb4\x0e\x65\xaf\x6f\xac\x91\x8c\xa1\x6f\xcd\x1d\x5f\x3d\xc3\x27\x7a\x73\xf6\x87\x41\xa3\x31\x58\xca\x37\x2c\xf3\x0d\x4d\x3e\x7c\x50\x94\x6c\x9b\x97\xd9\xd8\xb6\xcd\xc5\xb6\x31\x93\x9d\xca\xa7\x3f\xcc\x54\x3e\xff\xa1\x79\x54\xc3\xa9\x9e\x8d\x8d\x88\x9a\xd6\x10\xc5\x98\x42\x49\xd4\xa8\x5c\x9c\x8d\x7d\x15\x78\x66\x26\x9f\xfe\x80\x80\x51\x95\x7a\xc6\x00\x8e\x38\xd0\xe0\x18\xc9\x29\x0c\x15\x84\x12\x13\xda\x10\xf7\x8e\xfe\x06\xbe\x10\x93\x52\x1d\x2c\x8d\xbf\xeb\x92\x74\xc0\x75\x46\x3a\xe2\x3a\x0b\x9d\xf0\x81\xd6\xc2\x82\x19\xcc\x6b\xc7\xad\x27\x9e\x7d\x9e\xb4\x07\x7e\x16\xb8\x03\x7f\xb2\xb9\x15\x78\xb9\x9f\x99\x5d\xe4\x89\x4d\xe9\x08\x43\xf4\x1d\x9c\xc2\xe1\x73\xa6\x13\x66\x3a\x61\x86\x96\x7f\x59\x27\x04\xb0\x3b\xa1\x9f\xbd\x04\x00\x32\x84\x93\x22\x9c\x62\x38\x2d\xc2\x4e\x06\x75\xd8\x74\x6a\x13\xa8\x20\xb4\xf3\xec\x40\x3d\x56\xac\x34\xf3\x0f\x03\x9a\xe1\x83\x79\x06\x13\x96\xa1\x01\x57\xe2\xc5\x6c\x1f\xf0\x9e\xed\x27\xb6\xc5\xfd\x44\xff\xb5\x2d\x42\x38\x2d\xc2\x58\xed\x7e\x42\xb1\x59\x1d\x49\x6d\x2a\xe2\xd7\x1a\xd7\xfc\x9d\xd2\x67\x51\xf4\xc2\xc5\xe2\x5d\x47\xdb\x19\x7f\xe6\xab\x17\x2a\x7a\x29\xe3\x9d\x83\x64\x97\x02\xad\xd1\x5d\x0a\x3d\xa5\x03\xb9\xc1\x13\x36\x90\xf3\x79\xec\x8f\x67\xc1\x06\x4f\xe0\x87\x18\x29\x10\x36\x90\x8d\x06\x9e\xfd\x6f\x3b\x4e\x74\x44\x13\x94\x9d\x81\x1c\x58\x33\x31\x0a\x56\x71\x2d\x9f\x3a\xa2\x10\x41\xe3\x32\x9f\x17\xb3\x1c\x1b\xca\x65\xe1\xbc\xda\x04\x12\xfc\xa0\x5a\x3c\x1d\x3d\xb9\x46\x47\xda\x95\xeb\xeb\xb0\xff\xec\x26\x54\x6b\x91\x19\xdb\x38\x95\x26\x4d\xe9\x78\xa9\xb4\xfa\x69\x69\x54\x19\x32\x32\x1d\x5e\xc2\x85\xfd\xdc\x48\xb4\xd8\x3a\xeb\x08\xce\x13\xd6\x41\x44\x7f\x09\xe1\xfb\x25\x9c\xcf\xdf\x84\x8e\x75\x84\x6d\x22\x41\x8b\x1b\xc4\xdb\x88\xe7\xf3\xe4\x97\xaa\xaa\x81\x1a\x57\xaa\x8a\x4d\x55\x85\x3a\x14\x80\x6a\xbe\x62\x76\xd8\x85\xc1\x3b\xec\x16\x23\xf9\x4e\x87\x6a\xf3\x74\xd8\x35\x02\x6d\xb5\x69\xaa\x66\xc3\x69\xaa\x65\x03\xb2\x54\xb7\x3e\x53\x03\xf7\x7c\x84\xd7\xf1\x6a\xc9\xf9\xc5\xd8\xba\x5d\x14\xfe\x97\x80\x9a\x0b\x4f\xfd\x34\xbf\xf0\x26\x03\xa7\xb3\xc6\x00\xce\xf1\xc4\x31\xa8\x4b\x05\x95\xda\xf6\x41\xcd\xc6\xcc\x6d\xa7\x7e\x3c\x52\xbe\x0c\xbc\x08\x5d\x2f\xa3\xdd\xcb\xc9\x98\x46\xfa\x94\xed\x46\x18\xb4\x26\x50\xaa\xbe\x80\x71\x5c\x43\x3b\xa8\xd1\xa2\x2a\xfa\xf1\xa3\x53\xbb\x88\xda\xbe\x77\xd0\xe3\xbd\x96\xf5\x3a\x0c\x9a\x40\xa0\x09\xe7\x5c\xb0\x69\xa3\x81\xa9\x33\xad\x6a\xa3\xff\x36\x81\xd0\xeb\xf4\x59\x7b\xa3\xe5\x6e\x6c\x55\xea\xbe\xaa\x89\x95\x1c\x4f\xac\x58\xc9\xd1\x84\x57\x97\xf0\xf5\xb2\xb8\x81\x16\x2c\x10\xfa\xc1\xa9\xdd\x72\xb7\x50\xc5\x10\x9f\x9d\x30\x94\xe9\xb4\x24\xc0\xcb\xdb\xaf\x91\x9f\x06\xc6\xa9\x4e\xe6\x2b\x20\x24\xf9\xb5\x83\x5f\x84\x89\x94\x0e\xb8\x28\x62\x85\x8d\x35\x0a\xe5\x85\xd9\xfa\xe7\x19\xaf\xcf\xa6\x65\x78\xdb\xc6\x00\xd0\x23\x7a\x9b\xfb\xb2\x3d\xed\x8d\x6e\x44\x36\x51\x8e\xa0\x09\x21\xae\x30\x53\xac\x6b\x99\xbe\x51\xcb\xa0\x3d\xa8\xd6\x72\x53\xad\x25\xad\xd6\x62\x98\x32\x9d\x6d\xb7\x2b\x86\xe3\xed\xa1\x12\x3b\xfd\x49\x1e\xf5\xf2\x64\xa7\x3f\x75\x4c\x4b\x69\x6e\x36\xa5\x19\x2a\x4a\x99\xd8\xcc\xc4\x4e\x67\x4e\x65\x76\x74\xda\x71\xbf\x56\x42\x4f\xac\x4e\xfa\xda\xaf\x17\xb3\x7e\xd0\xbe\x73\xd3\x96\xd1\xf2\x37\xe1\xcc\x84\x27\x26\x7c\xdc\xdf\xac\xe5\x1b\x9b\xf8\xaf\x26\x3e\xcb\x3d\xab\x62\xb8\x45\x3c\x2d\x7e\x12\x0d\x04\x0f\x75\xf6\x97\x2d\xeb\x73\x5a\x85\x82\x2b\xe3\x55\xed\x3b\x8f\x2b\x28\x72\xd7\xa9\xe9\xf6\xdf\x0e\x6d\xe1\x53\x61\x91\xea\xf4\xde\xce\xe5\xb9\x96\x18\x5d\x74\xf8\x1d\xda\x52\x3a\xaf\xb9\xcd\xae\x1b\x36\x3a\x15\x0b\xe2\x75\xd8\xfe\xf3\x1a\x8f\xd6\x09\x47\xa3\x45\xe2\xa5\xee\x74\xad\xc3\xee\x66\xcb\x31\x1f\x56\x62\xf2\xfd\x95\x3c\x7b\xcb\x31\x62\x25\xcf\xed\x4a\x9e\xce\x6a\xa9\xb8\x1e\xf3\xae\xf3\x96\x6f\x55\x6b\x1f\xec\xb5\x0b\x08\xe7\xbe\x3e\xf5\xd4\x73\xa7\x97\x47\xfd\xe7\x93\x7e\xa4\xdc\xc9\x01\x2d\x63\xdc\xd7\xc5\x82\x3e\xfd\x5a\xbe\x85\x1d\x7b\x76\x91\xdb\xe1\xbf\x1d\xb2\xe3\x49\xa3\xe1\xc4\xc6\x28\xde\x79\xc2\xd2\x9c\xcc\xe7\x8e\x60\xd8\x3a\x2b\xab\x60\xf9\xe4\x41\x0d\x7b\xe1\x49\xcf\xa0\xab\xce\x4b\x2b\x45\x8f\xfb\x7f\x51\x54\x4c\x79\x25\x2f\x29\x60\x38\x5a\x82\x21\x33\x30\x3c\xfd\x02\x0c\x59\x1d\x86\xaf\xfd\xbf\x28\x5a\x81\xe1\x6b\xbf\xe6\x8d\xe4\x43\x81\xae\x77\xeb\xbd\x91\x5c\x18\x53\xad\x3f\x9c\x0f\x1d\x7a\xd7\x21\x5e\x87\x7f\x30\x76\xbf\xaa\xe8\x56\x3f\xaa\x9d\xde\x3b\xe4\x27\x74\xc1\x50\xf2\xc2\xb8\x9c\xe0\xaf\x53\x17\x88\xf9\xcc\x05\xa2\xbd\x17\xb9\x2d\x9a\x29\xb7\xb5\x20\xcb\x38\x5c\x31\xc5\x75\x51\xb9\xed\x9d\x22\x79\x9d\x15\x10\xbf\xee\x45\xae\xdc\x34\x21\x36\x85\xca\x44\x11\x9c\xd1\xa9\x2b\xa1\x29\x83\x1c\xbd\x7d\x87\x2c\x56\x97\x46\xad\xf7\x4b\xc8\xbc\x6c\x07\xeb\x57\xfa\x1b\x92\x46\x43\x3a\x04\x57\x41\x6f\x7f\x15\xf5\xcd\x04\x79\xfa\x72\x76\x69\x30\x3d\xa1\x77\x80\x4a\x9b\xb7\x43\xed\x6e\xef\x78\x52\xcb\x0d\xfd\x2d\xba\xba\x17\xe1\x2b\xd6\xf3\xcc\x29\xd2\xc8\x26\x86\xa5\x36\x36\x9d\xe6\x9b\x11\x3e\x37\x1c\xf7\x37\x23\x2a\x8d\x81\x17\x45\x05\xbb\xf8\x4e\x68\x62\xae\x83\x63\x0c\x37\x05\x9b\x7c\xd7\x42\x52\xec\xe6\x3b\x9c\x71\x38\xe7\x6a\x3e\x6f\xfd\x19\x69\x2f\x52\x9c\xc7\xf3\x79\xeb\x73\x44\xe6\xf3\x0d\xc8\x42\xa0\x7e\x0e\x95\x1d\xf7\x79\xbc\x08\x35\xca\x97\x70\xce\x0a\x38\x33\x85\xb7\xf5\xd3\x12\xce\x19\xc0\x39\x45\x38\xd1\xc2\x7a\xbe\x19\x22\xc0\x5f\xfb\x9b\x61\x01\x67\x44\x05\xfb\x5e\x81\x53\x61\xb8\x29\xd8\xf8\x3b\xa1\x15\x20\x23\x00\x32\xb4\x40\x02\xc8\x9f\xc3\x02\x48\x7c\x03\xc8\x72\x0e\x95\x7d\xed\x73\x63\x82\x14\x0d\x9a\xd6\x24\x4f\xc5\xed\x2f\xaf\x14\x71\x6b\x56\x8a\xb8\xfd\xcf\xaf\x94\xfd\x09\x2e\x95\x2c\xc3\xb5\xb2\xfb\xd1\x6d\xd1\xbd\x8f\x7a\xad\xbc\xfb\x85\xc5\xf2\x0b\xad\xd2\x12\xc3\xf0\x77\xfb\xa3\x53\xfa\xb9\xbe\x10\x6c\xf7\x23\x2e\xb9\x02\xc9\x3e\xe2\xda\x2b\x90\x51\x98\xd9\xb0\xe9\xfb\x13\x5a\x96\xb4\x92\x4d\x5d\x26\xe4\xa8\x92\x65\xb3\x92\xa5\x78\x4c\x40\xf7\x16\x28\xbb\xeb\x01\xf2\x00\x1f\x59\xaf\x3a\xcb\x68\x09\x05\x41\xbc\xa8\x56\x9b\x65\x9b\x95\x64\xe2\x22\x1f\x8a\x0c\x21\x2f\xd9\x0d\xff\xcb\x63\xe0\x10\x16\xf7\xf8\x6b\xa6\xe2\xb1\x2b\xe8\xb8\x3f\x70\x43\xfa\xdc\x8b\xc6\x5d\x37\xa2\x5d\xd5\x4b\xba\x63\x57\x52\x2d\xc0\xfc\x75\x8f\xf6\x07\x22\xec\x8d\x67\x2e\xfb\xb8\x78\x9b\x6e\xd8\x29\x03\xea\x42\xab\xf8\xf1\x17\x14\xe0\x76\x48\xad\xad\xbf\x84\x56\xc8\x8b\x27\x81\x02\x84\x66\xf8\x6a\x80\xa3\x55\x96\xe7\x19\xba\x09\x21\x78\x62\x34\x81\xa6\x76\x5c\x02\xbd\x9e\xce\xb4\xe3\x12\x58\x4e\x65\x48\xbb\x09\x41\xfd\xb8\x0d\xce\xe3\x46\x23\xdc\x40\x63\xfb\xd6\xc8\xd4\xe4\xfb\x6f\x92\xbd\x6c\xe9\x35\x6f\x09\x4d\x5a\xac\xb6\x98\xe8\x17\x23\x24\x19\x31\xf1\xd4\x66\xfa\x39\x41\xbf\x69\x4e\xda\x54\xe4\xf7\x8f\x34\xe5\x6a\x33\xf9\xfd\x23\x55\x4d\x9e\xfc\xfe\x11\xc5\xba\x72\x9e\x7a\x12\x28\x82\x5a\x40\x13\x63\xd3\x84\xd0\xd4\xc1\x22\x0f\x1a\x4a\x0f\x4d\xe5\x3a\xb0\x29\x6c\xe5\xa2\x19\x42\xe5\xc2\x54\x1e\x72\xd5\x4c\x50\x69\x1c\xd6\xb1\xa0\x12\xd6\x71\xb8\xb4\x8e\x3b\x6c\xfb\xe3\x12\x01\x17\xda\x7f\xc8\x9a\x53\x84\x27\xb4\x0f\x91\xb5\x47\x88\xaa\x93\xe9\x5f\xa7\x09\xd2\xd2\x04\x69\x68\x42\x95\xed\xfa\x4f\xee\x9e\xa3\x50\xc0\x76\xc7\x12\x35\x1a\x4f\x86\x5a\x43\xe8\x28\x44\x55\xd1\x65\xde\xee\x7f\x4a\x20\xd6\x93\x85\xa3\x50\x58\xd2\x0e\x8d\x5a\x4e\x9a\x5d\x08\x5a\x83\x86\x2c\x6d\xbb\x75\xde\xf2\x7f\xb9\x7c\xce\x13\xba\x66\xdb\xac\xee\xa9\x5b\x9b\x4e\x05\xe2\xcd\x0a\xc4\xda\x9d\x48\x6d\xb3\xc4\xcd\xe7\xb8\xbf\x19\x7a\xb8\x97\x85\x9b\x4e\xb8\x09\x5f\xe4\x77\xe9\xe1\xb6\x16\x36\xa3\xdf\xa5\xb7\xb2\x79\xa1\xf9\xf2\xaf\xba\x5c\x56\x94\xcb\x4c\xb9\xaf\xb6\xdc\xff\x3d\x86\x86\x6f\x63\xe8\xe2\x87\x13\x6a\xa4\x0c\x01\x25\x97\xf8\xf7\x3a\x53\x82\xe7\xde\x2d\xa2\x47\x01\x98\x01\xdd\xfb\x82\x2d\xd0\xdd\x84\xdd\x57\x77\xaf\xd8\x87\xab\x5d\x2c\xa1\x8a\x7e\x0a\x55\xa4\xa1\x8a\x10\xaa\xea\x39\x63\x99\xed\xba\x1d\xd2\xe8\x97\xf0\xb5\x17\x3b\xb8\x6a\x22\x42\x5e\xa5\x03\xb3\x53\xe1\xb6\x5a\x7f\x0a\xf6\xdc\x55\x2a\xdb\x53\xd9\x58\x2f\x89\x08\xd0\xe1\x4f\x1e\xc1\xe1\xcf\x3c\x28\x79\xe8\x62\x04\x13\x7e\x8b\xe0\xfc\xa7\xb7\xa9\x22\xf7\x67\x1e\xb1\x97\xad\xd5\xcc\xbf\x9b\xcc\x35\x5e\x4d\x71\x27\x62\xc7\xfd\x66\x84\xa8\xf4\x91\xc6\x3c\x02\x5a\xab\x0b\x7c\xf4\x22\xe4\x9b\x36\x63\x2f\x42\x3a\xd9\x2c\x78\xa7\x10\xca\x7d\x85\x72\x19\x96\x53\x3c\x02\x02\x6a\xca\xd1\x48\xe3\x9a\xa2\x91\x46\xb1\x65\x5e\x06\x9a\xbe\x39\x15\xdc\x7f\xed\x8d\xf6\x73\x21\x33\x15\xb9\x4b\x26\x1a\xd8\xa5\xf3\x7c\xb0\x64\xc1\x5e\xcc\xe7\x46\x7c\xe0\x43\xcf\x11\x74\x67\x2c\x88\xb9\x40\xa1\x61\x3f\x1f\x8d\x87\x93\x70\xdc\x1f\xba\x1f\x3a\x0b\xfa\xab\x15\x57\xeb\xdb\x7d\xa3\x3e\x71\xfb\xeb\xf5\xad\x05\xf4\x62\xb6\xbe\xe2\xf0\x6f\x54\x5c\x03\x74\x2a\x08\x5d\xae\x4c\xfe\x6f\xa1\xbc\x7a\x03\xca\xe8\x76\x11\x54\x2e\x8f\x97\xd5\x65\xd9\xa5\x73\xda\x25\x1c\x9d\xf8\x15\x4e\xbc\x77\x45\x9e\xf7\xc7\xef\x27\x23\xf5\x5e\x4d\x07\x59\x7f\xa8\x86\xef\x9f\x7b\xe3\xee\x7b\xf1\x7e\xd0\x53\xda\x77\xf7\xff\x67\xe8\xaf\x5c\xbd\x98\xb8\x1d\x6a\x4d\x9b\xe5\x5b\x0a\x7b\xeb\x61\xae\x2b\x74\x60\xd6\xe7\x7e\xe0\xdd\x16\x4a\x39\x1d\xde\xc1\xa7\xbc\xa5\x3b\x0a\x4b\x49\x8c\xe1\x59\x26\xa9\x98\x08\xfa\x4f\xe2\x6d\xfd\x29\x70\xbf\xdf\xfa\xdd\x88\xbb\xcb\x4a\x9e\x0f\x63\x41\xd9\xc7\x4f\xc4\xdb\xfa\x2c\x91\x89\xdf\xfa\x5d\x5a\xa1\xb3\x32\x97\x9c\x08\xba\xc5\x3e\x01\x95\x3e\x2a\x22\xef\xc6\xe8\xce\xb1\x84\x58\x3d\xe3\xbd\x9d\x0e\xd3\x82\x5c\x14\x2e\xe7\xbd\x3b\xc7\x74\xa8\x26\x13\x27\xd8\xfe\xb3\x3d\x61\x17\x4f\x70\x15\x2b\x25\xb7\x75\x81\xa3\xf3\xca\x1d\x60\x88\xe1\xf2\x16\x30\xb2\xe9\x52\x1b\x0c\xc6\xb4\x30\xa0\x92\x6f\x98\x84\xad\x4d\x19\x34\x1a\x51\xe9\x0f\x6c\x23\x62\x62\x40\x43\x9d\xe1\x6b\xe4\x6f\x6d\x86\x41\xa1\x15\x8f\x19\x14\x64\x80\xda\x24\xbb\x74\x9e\x0e\x88\xbf\xbd\x1d\x78\xda\xbc\x41\x3b\xe4\x1b\x5b\xae\x36\x99\x80\xa3\xb7\x81\xa4\x1b\xa6\x57\x3d\xe3\x5d\x27\x72\x28\x77\xce\xcd\x69\x5d\x0e\x50\xf8\x89\x71\x83\xcd\x80\xc1\x30\xc3\x82\x32\x70\xea\xf9\x3d\x4a\x3e\x39\x06\x67\xec\x40\x52\x83\x39\x04\x3d\x1e\x2f\x56\xce\x3a\x6b\x06\x57\x92\x57\xc9\xc4\x8b\x53\xbe\x6c\xae\x9e\xf2\xdf\x2a\x76\x37\xab\x17\xfb\xf0\x6b\xc5\x3e\x2c\x15\xeb\xec\xfd\x52\xb1\xce\x5e\xb5\xd8\xbb\xce\xea\x6e\xb4\xa6\x64\x88\x62\x24\x7b\x98\x5e\x69\x72\xe5\xfe\xe0\xad\xa2\x22\x5e\x2e\x5a\x63\x15\x7f\x56\x34\xdf\x5f\x2e\xfa\xe1\x57\x01\xfe\xb0\x0a\xf0\xaf\xb6\x2a\x96\x5a\x85\x25\xf1\xe3\x27\xdb\x4c\xa1\x51\x82\x78\xbb\x8e\xf6\x75\x4e\x45\x95\xf8\xdd\x55\x89\x9f\x21\x5e\x86\x64\xf5\x2d\x91\x3a\xbd\xb7\xf4\xac\x20\x57\x2f\x48\xa1\x74\x7e\xed\xb4\xd4\xfb\x50\x90\xab\xf2\x06\x4c\xaf\x63\xc1\x64\xa3\x71\xe7\xfc\x58\xb7\x22\x1a\x8d\x75\x0b\xe3\x65\xdd\xc2\xe8\xd7\xd7\x85\x31\xb6\x7a\x6e\x57\x07\xbf\xb3\x34\x72\x3d\xe2\xbe\xac\x47\x5c\xe2\x9d\x9f\x9b\xd6\x25\xdd\xfa\xf4\x93\x05\xb3\x52\xc1\xdd\x6a\x05\xba\xfc\xfa\x75\xba\x52\x5e\xaf\xd3\x35\xe5\xdf\x5a\x0a\x2f\x6f\x2d\x85\x95\x3a\xde\xbd\xb5\x0e\x57\x80\xd0\xeb\x70\x5d\x27\xde\x58\x54\x2b\x40\xd8\x45\xf5\xd3\xf5\xb4\x52\xca\xae\xa7\x9f\x2e\xa5\x95\x52\x1f\xde\xea\xf0\xdb\x6b\x6a\x15\xde\xfd\x35\x75\x98\x99\xaf\x6f\xaf\x6b\x6a\xb0\xbb\x17\x02\x5e\x20\xba\xba\x5d\xe3\xe2\xe7\xbc\x78\x94\x10\x76\x25\x9d\xe4\x76\x25\x75\x63\xbb\x94\xa4\x36\xfd\x73\x76\xee\x28\xe2\x3d\x8d\x35\xc3\x6e\x52\xac\x46\x71\x9f\xc7\xf6\x0b\xf2\x9b\x54\x53\xfb\xad\x03\x9c\xbd\xba\xa5\x93\x31\x1c\x82\x95\x39\x04\xef\x54\x7b\xf2\x5d\xd7\xcb\x4e\x72\xe2\xa9\x5b\xa6\xd8\x8e\x3d\x1b\x60\xb7\xcf\x1f\x45\x0d\x59\x76\x84\xdd\x8b\x8c\x6b\x8c\x0f\x01\x9b\xca\x35\x83\x7e\x51\x2d\xa8\x5f\x26\x2e\x7f\xb1\x2e\x33\x0c\xf8\x58\x1a\x1e\xd1\xd7\xb1\x18\x26\x6a\x7c\xb4\xe7\x62\x8e\x17\x45\xa7\xae\xc9\xab\xcf\xdf\xe6\x7b\xa6\x31\xe6\x6a\xa9\x95\x6a\x6d\xbd\xa9\xf8\x7b\xd5\xbd\xeb\xb0\xef\x4b\xf5\x69\xde\xe3\xd7\x6b\xa9\x75\xa7\x3b\x2d\x4f\xef\x67\x7d\x58\x20\x12\xfb\xed\xab\xc7\x00\xa1\xff\xfa\x13\xe8\x93\xd1\xdf\x1d\x8b\xdb\xa5\xda\xc4\xff\x14\xee\xf3\x23\x2a\x4a\xb0\x35\x65\xf0\x3a\xec\xdb\x4f\xa0\x15\x07\x7f\x17\xda\x1f\xff\xbb\x91\xa6\xe5\x79\x52\x47\x96\xe1\x7a\x67\xc4\x71\x75\x0e\x6e\xf7\xea\x73\xf0\xae\xc3\x4e\xff\x53\xc3\xb6\x3f\x16\xd5\x71\xd3\x64\xdd\xeb\xb0\xb3\xff\x54\x03\xe9\x41\xb5\x7e\xbd\xed\x78\x1d\x76\xf2\x9f\xaa\x7f\xaf\xde\x81\x0f\xb6\x81\x9b\x75\x13\x7f\xd6\x07\xda\xfd\xeb\xf3\x65\xae\xa7\x74\xcc\x7e\x24\x16\xf5\xa5\xd0\x79\xa3\x8d\x0f\x7b\xff\xa9\x36\xde\x75\xd8\xf5\x1b\x8d\x88\xff\x60\x47\x8e\xd6\xb5\x71\x2a\xb4\x45\x5e\x54\xd0\x64\xf1\x7d\x8d\x82\xb6\xb0\xdc\x71\x9d\x84\x2e\x91\x4b\xad\x00\x5a\xaf\x0b\xd9\xad\xd5\x8a\xbe\xac\x5d\x58\x7a\x2b\xf2\x2a\x75\xb2\xc9\x2d\xaf\x04\xfd\x87\x30\xb0\x8a\x5e\x05\x98\x37\xcb\x0a\xc8\x4b\x66\xea\xe1\x78\x79\x5e\x00\xfa\x63\x1a\x50\x69\x5c\x04\x4e\xc6\x54\xb2\xaf\x2f\x9c\xef\x74\x09\xad\x00\xd9\x22\x08\xe4\x4b\xb4\x66\x94\xce\x59\x2a\x37\x50\x09\xd8\x56\x59\x18\x79\xd1\x10\xdd\x5d\xd0\x7a\x7f\xf5\xb4\x6e\x47\x62\xe5\x7e\xf3\x67\x75\xa1\x70\x4f\xa5\xa2\x8f\x9f\x0c\x54\x72\xf8\x73\xa8\xc4\x99\x35\x9e\xac\xa1\x59\xd7\xb3\x70\xa9\x0e\x7d\x23\x51\x81\xe1\x70\xb7\x0e\xd3\xe1\x2e\x6f\x95\x53\x8b\x11\x4d\xdd\xdd\xc3\xbe\xf0\x6a\x0d\xa0\x63\x26\x21\xd6\x5e\x2f\x5b\x30\xeb\x13\xce\x76\x5f\xbc\x32\x47\xd4\xe3\x3c\xd6\x5e\x92\x7b\x07\xa4\x82\x4d\x03\x83\x99\x93\x70\x69\x80\xf1\xd2\xf4\x50\xd6\xc6\x77\x7d\x8b\xe2\xa7\x2d\x8a\x35\x2d\xae\x9b\x06\xed\x9d\xe9\xea\x5f\x3f\x9b\x86\x5a\xd5\x2b\xb3\x32\x09\xd7\xcd\x4a\xbc\x6e\x66\x5f\x22\x61\x28\x5c\x32\x5c\xc5\xa0\xed\x48\x38\x98\x18\xad\x2b\x6b\x48\x66\x3e\x13\xf4\xb5\x97\x47\xca\x50\x8b\xbb\x0b\xc3\xc9\xae\xa3\x02\x16\x66\xed\x19\x47\x09\x68\xdd\x75\xd6\x4f\x43\x25\x16\xdd\xeb\xd9\x25\xb9\xba\x00\x3a\x4c\xac\x81\xbe\xde\xd6\xa1\x14\x0e\x71\x9d\xf8\x56\xf3\x7a\x6b\x90\xff\x5d\x87\xdd\xfd\x8c\x70\xa0\x60\xb6\xae\x52\x4f\xe3\xd5\xbf\x1c\x51\x51\xf5\x0d\xb9\x5d\xee\x9e\xe0\xaf\xb9\x74\x2d\xbc\x03\xf3\x39\x09\x17\x85\xc9\x05\xe3\xbf\xcb\x8b\xb4\xd1\x74\xab\xfc\xdf\x5e\xa2\x25\x42\x9b\xfa\x77\x23\xf6\x21\x99\xcf\xd1\x90\x77\xe7\xd6\x11\xe6\xb5\xa2\xe8\xa1\x5c\xa6\x40\x2f\x28\x0c\x1f\x2e\x47\x77\x84\x4d\x23\x64\x69\x5d\x21\x96\x7f\x58\xe7\x63\x0d\x40\xff\x32\xf5\x36\xb7\x36\x50\x93\xde\xd6\xa8\x25\x24\x39\x3a\x17\x33\x1d\x7d\x09\x5d\xb9\x84\x89\x78\x64\x5f\x37\xe8\xc5\xcc\x2d\x2d\x66\x68\xc6\x34\xb9\xda\xd8\x1b\x64\xeb\x5d\x87\x1d\xfe\x64\xe6\x68\x39\x33\x34\x2a\xb0\x48\x59\x44\xb3\xc4\xfe\xcb\xd4\x93\xd6\x9c\x7a\xa3\xe1\x6c\x6e\x71\x2e\xda\x55\x00\x3e\x7c\xe3\xaf\x93\xd0\x55\x74\x70\xe3\x46\x8b\xe5\xd1\x8d\x68\xd1\x77\x45\x05\x41\x6d\x8b\x15\xd2\xd5\x1d\xae\x90\x2e\xe3\xdf\xc9\x80\x40\x5e\x8d\x45\xde\x62\x82\x8d\x59\xde\x0f\xfb\xee\x5b\x0b\xc2\x5b\xbb\x7e\xaa\x56\x67\xe3\x63\xf7\x2f\xf3\xa8\x5a\x03\xe5\x46\xbd\x58\x22\x87\xf8\x6e\xae\x97\xd4\x07\xa4\x1d\xef\x3a\xac\xf7\xbf\xe9\x96\xc5\x8e\x9f\x02\x8c\x3b\x7d\x1d\xda\x75\xfc\x01\x5d\xe5\x0f\xaa\xf0\xff\x51\xef\x80\x10\x96\xfa\xed\xbf\xc1\xb2\x58\x37\x24\xba\x1f\xb7\xcf\x6b\x98\x8d\x83\xc7\x55\xd2\x53\x2d\xb9\xcc\xa3\x7c\x34\xe5\xf6\x7e\x52\xce\xef\xbf\x04\x86\xca\x57\xa3\x1c\xb2\xae\xa2\xfa\x49\xdd\x32\x74\x78\x32\x2f\xcf\xe5\xf1\xad\x3e\xb0\xd7\x07\x54\xd4\xd0\x09\x47\xab\xbc\x7b\x06\x74\xb6\x6e\x77\xb8\x60\xe7\x86\x76\xd5\x0d\x02\x4a\x82\x92\x33\xbe\x0c\x58\x22\x18\xbe\x0c\x08\x28\xad\x55\x34\xe3\xfe\xd0\x91\xbc\xe5\xc9\xcf\x82\x4d\x8c\xa6\x88\x2e\x31\x49\x57\x8b\x58\x7d\x1d\x3f\x0c\x16\x70\x2a\xb9\x5d\xbd\xe0\xaf\x8a\x93\x02\x60\xdf\x8a\xd3\x3c\x15\xf4\xd6\x09\xad\x80\xb1\x91\x1f\x15\x4e\x67\x68\x2e\x91\xcf\x1f\x05\x84\x6f\x6d\xf8\x42\x87\xef\x6c\xf8\x52\x87\x3f\xd8\xf0\x95\x0e\xff\xb0\xe1\xef\x3a\xfc\xdd\x86\xbf\xea\xb0\x1a\x99\xf0\xad\x0e\x5f\xda\xf4\x6f\x3a\x1c\xdb\xf4\x1f\x3a\x7c\x63\xd3\x4f\x75\xf8\xca\x86\xcf\x74\xf8\xda\x86\x4f\x74\x38\xb2\xe5\x6f\x74\x58\xda\x70\x47\x87\x43\x1b\xbe\xd6\xe1\x53\x5b\xfe\x48\x87\xcf\x6c\xf8\x58\x87\x4f\x6c\xf8\x8b\x0e\x3f\x3c\x9b\xf0\x4b\x84\xe1\xdc\x86\xb7\x75\x38\xb3\x61\x39\xc4\xf0\xa3\x0d\x87\x3a\x7c\x3b\x33\x61\x25\xf4\x78\xd9\xf0\xa1\xc4\x70\xc7\x86\xaf\xfe\x05\xc1\xd4\x06\x63\x5d\x3c\xb3\xe1\x44\x87\xef\x67\x82\x1a\x89\x58\x1d\x11\x8e\x4d\x86\x0f\x66\x3c\x6c\x58\xe8\x74\x69\xc3\x77\x3a\xfd\xfc\xd1\xb6\xff\x01\x82\x17\x36\x28\x34\x78\x67\x45\xb2\xc9\xbe\x6d\xc2\x5d\x5d\xdd\x85\x0d\xf7\x74\xf8\xd9\xe6\xdf\xd7\xf9\xa7\x36\x7c\xa0\xc3\x4f\x36\xbc\xf7\x28\xaa\xcb\x4d\x9c\x89\x9a\xff\x39\xcd\x3e\x84\x7a\xa1\x74\x12\xab\xdc\x15\xda\x6d\x49\x71\x93\x36\x19\x7b\x21\xf2\x02\x83\x23\xe0\x05\x84\xdd\x5d\x14\x8d\x88\x2b\x97\x22\xaa\x92\x63\x09\x2e\xf0\xef\x93\xaa\xaf\x50\x3d\x71\xdd\xca\x7b\x5a\x26\xf9\x55\xa2\x3f\x3b\x46\x57\xeb\xc2\xbc\x73\xdb\xdd\x52\xff\x6c\x7f\xaa\x94\x7a\x38\x29\xee\xb8\xbf\x19\x55\xa0\x5b\xc3\xec\x8e\x9e\x2d\x63\x5f\xc9\x7f\xa2\xbd\x12\x5c\x8d\x75\xf0\xb0\x92\xd4\xd5\xf6\xba\x3b\x1d\x43\xf3\x35\xae\xe6\x56\x80\x25\xb9\xa5\xdf\x27\xc4\xeb\xf0\x64\xdd\xdd\x9d\x6e\xb1\xeb\x10\xef\xb9\x72\x8b\x97\xac\xb9\xc5\x33\x7d\xee\xb0\x9b\x6f\x2b\x8a\x2f\x15\xab\x82\x76\x80\x70\xb8\xbb\x28\x0a\x70\xf3\xcd\xbf\x0c\xed\x10\x0e\x93\xc9\x83\xca\xc7\x23\xe3\xdb\x15\x73\xde\x1f\xa2\x8b\xf1\x9a\x97\x50\x74\x33\x7e\x79\x53\x89\xc1\x6d\xf1\xfc\x66\x4d\xe3\xda\xea\xd8\xdb\x00\x9c\xdf\xac\x05\x00\x5a\xa8\x79\xbd\x6b\xd1\x44\xef\x23\x5b\x6b\x54\x7b\xde\xae\x7e\x6f\xeb\xcd\xea\x1f\x4a\x33\xd1\x78\x81\x7d\xb2\xde\xf8\xcf\x9a\x4a\xf3\x93\x37\x2b\xfd\x72\xad\xef\x98\xbd\x0e\x3b\x8d\xd6\x40\x6a\x6b\x13\x46\x13\xb4\x60\x31\x7b\x23\xc1\xa5\xd5\x0f\x0d\x6d\x6c\x26\x79\x61\x8b\xb9\x30\x2d\xb9\xfd\x89\x6b\x90\x1f\x92\xa5\x7b\x20\xbd\x89\xfa\x13\x34\x24\xd5\xbd\xb5\x05\xfe\xfd\xef\xc1\xb0\x3f\xee\xff\xfb\xdf\xed\xa5\x30\xc7\xfe\xd0\x7d\xc3\xc8\x75\x6f\x35\x47\x01\x15\x14\x0b\x0b\x4b\x0c\x05\x31\x48\x71\x1a\x39\x83\x23\xe4\x42\xc5\x63\x55\xb0\xbe\x2a\xa0\xff\x90\x08\x07\xad\x14\x58\x6b\x8e\x7c\x70\x44\xbc\xef\x13\xff\x6b\xe0\xcb\x61\xb0\x2c\x9d\x42\x00\x79\x1e\x1e\xd6\x8c\x56\xde\x77\xf6\x76\x88\x17\xf2\xd0\x18\x44\x3e\xe8\x3b\xbb\x7d\x07\x35\x7b\x2d\xf7\x19\x12\x2f\xaa\x7c\xf7\xa7\x4e\x48\xd1\x6e\x99\xf1\xaf\x9f\x49\xe2\x85\x6c\xdc\x55\x0f\x40\x75\xf0\xd7\xa4\x6c\x7f\xb2\x24\x63\x83\x5f\x34\x1a\xea\x4c\x38\x61\xa9\x46\x08\xb1\x83\xa3\x46\xe3\x4b\xee\x84\x6c\xa8\x9e\xd4\x70\xa4\x76\xc5\x58\x25\xfd\x61\x4f\x8d\x88\x15\x3a\x31\x26\xd2\xf8\xf7\x6e\x5b\x8c\x5d\x79\xe8\x85\xbe\x0a\x78\x68\x2d\x59\x8f\x9e\x1d\xf8\xa6\x9b\x5b\xc4\x2b\x7c\x24\xac\xd4\xb6\x88\x75\xdb\xa3\x31\x7b\x08\x1d\x3b\xe2\xc6\xfc\x82\x95\x44\x38\xd8\x25\xde\x4d\xcf\x19\xdc\x3b\x92\x7d\x71\x08\x59\x77\x49\x23\xd9\xc3\xd0\x11\x84\x73\x79\x84\x77\x35\x21\xeb\x8d\xf6\x7a\x71\xcc\x37\xec\x8d\xc3\xf0\x99\x4b\x74\xbc\xbb\xc1\xaf\xda\x5b\x6e\xcb\x08\x8e\xf5\xb8\x64\x27\x0e\xf1\x92\x33\x6b\x30\x14\x09\x78\x6f\x74\x39\x16\x61\xaa\xa2\x46\x23\xd4\xa2\xf0\xc5\x07\x93\x62\xa4\xb2\x5e\xae\x56\x44\x25\x46\x6a\xfc\x5e\xbc\xcf\xfb\xf9\xe6\x8b\x1a\xf6\xdf\x43\xbe\x4d\xc8\x08\xfc\xd1\x7b\xf1\x7e\xa4\x6b\x2c\x24\x27\xde\x69\x4d\xda\x62\x6e\xfc\xc0\x4b\x7b\xe8\x0d\xc4\x89\x39\x1a\xc6\x2c\x15\x71\xb5\x1f\x91\x96\x97\xa0\x03\x2f\xf4\xc1\xa2\xe5\x27\x01\xdc\x7e\xcf\x89\xfd\x24\x20\x24\xe5\x0f\x5f\x85\xfe\x2e\x8c\x75\xe4\x65\x22\xfc\x7a\x86\x2d\x36\x90\x5f\x41\xd3\xef\x47\xdd\xfe\x24\x8b\xde\x4b\xf5\x5e\xbc\x47\x60\xde\xe7\xe2\x41\xbd\x07\xa8\xf3\xf7\x7d\xad\x5f\xf1\xbe\x2f\xef\x55\x38\x66\xff\x1f\xf1\x50\x29\x2c\x25\x8b\x90\x87\xfe\x97\xc0\x1f\x28\xe0\x58\x6f\x8e\x84\xaf\xc5\x0a\x76\x03\x47\x07\x4c\xce\xce\x51\xb1\x47\xe1\xa6\xb0\x93\x3b\xaa\xdc\xb4\x3e\x14\xc2\x16\xa7\x5d\xba\x53\x71\x7b\x79\xc1\x7b\x7d\x8b\x12\x86\x37\xb1\x0e\x31\x05\xbf\x5f\x4d\xd2\xbe\xc8\xcf\x53\x23\x39\x67\x1c\x79\xc1\xc9\xbd\x22\xd0\x71\x76\xa0\xb1\xcb\x6c\x6e\x66\x41\xdc\x0a\x96\xa7\x64\x3c\x9c\xbd\xda\x4d\x0f\x8d\x21\x7e\x2b\xda\x08\xa9\x00\x62\x1f\x0a\x38\xdb\x64\xb0\xda\xf5\xf8\x5d\x0e\x04\xf1\x2a\x27\x8d\x5b\xe1\xef\x6c\x07\x4e\x58\xec\xca\xa7\xd6\x4d\xbd\x13\x99\x98\x31\x7f\x67\xde\xb1\x6e\x05\xbb\x7b\x74\x6e\xcd\x43\xf8\x50\xf3\xb2\xd4\x1c\xb5\x66\xc3\xb7\x64\x7a\x05\xbb\x47\x4b\x30\x45\x30\xdb\x76\x08\x0d\xed\xbe\xdd\x76\xcc\x46\xff\x2d\x61\xc7\x9f\x2c\x93\xeb\x10\xe2\x86\xf6\x86\xa3\x14\xfb\x65\x92\x1a\xad\xf1\x1b\xd3\xd9\x31\x8d\xe8\xad\x23\xd8\x45\x4c\xed\xf5\x43\x39\x94\x6c\xe7\x05\xdd\x53\x43\x97\xee\x50\x2c\xcd\x74\x92\x9a\x5e\xdc\x0f\x4c\x2f\x54\xb9\x77\x1f\x92\x82\x3d\x50\xcf\xef\xd5\xad\xa3\x8a\x52\x66\x6f\x37\xac\x59\x6c\x6b\xc9\x7a\x18\x83\xe6\xa2\x63\x52\x67\x63\xce\x6f\x8c\xa9\xca\xd5\x89\xa6\xaf\x42\xba\x8a\x65\x29\x8d\xfb\xf9\xf8\xb2\xf7\xa2\x5c\xc5\x06\x0f\x0b\xaa\xd8\xee\x0b\x55\x2c\xea\x51\x85\xe6\xa5\x0d\x67\x1d\xb7\xcd\x2f\x1b\x29\xf7\xa9\xdf\x8b\xde\xb7\x0a\xf9\x9d\x87\x93\x25\x35\x47\xb4\x35\xa3\x0b\x84\xf7\x8e\xf5\x02\x1f\xdd\x97\x32\x1d\x64\x85\x89\xb2\x2c\x57\x7e\xe2\x48\xc0\x08\x47\x72\x79\x0c\xa3\xd6\xa2\x37\x87\x84\xa0\x61\x67\xcd\x05\x2a\x96\xca\xf6\x3b\x73\x6a\xd6\xd7\x1f\x11\x7f\xea\x59\x71\x55\x98\x3f\x6a\xf9\xb2\xd7\xf0\x59\xb8\x21\x3d\xfa\xe4\x2a\x2a\xba\x42\xef\xbe\xa7\xc2\x09\xa9\x22\xf4\xf8\x93\x1b\xd2\xd1\x58\x0c\xc7\x57\xbd\x07\xe5\x46\x54\xe5\x91\xfe\x6a\x4a\xbf\xb7\x1d\xd0\xaf\x9f\xdc\x16\x1d\xf7\x1e\xd4\x10\x0b\xde\x8c\x9d\xad\x16\xa1\x1f\x12\xe1\x4a\xf6\xf2\x89\x9e\xdd\xb8\x92\x9d\xdd\xd0\x2f\x9f\x50\x8e\x02\xdb\x3c\xfb\xe4\x10\x6a\x4f\x60\xdf\x12\x86\xa5\xe9\xcd\xc8\x4e\xd7\xd9\x27\x33\x00\xb4\x96\xc3\x9f\x05\x16\xea\x73\xae\xec\xf5\xdf\x39\x57\xb4\x6b\x69\x2d\xed\xd9\x2f\x02\x67\xd4\x03\x94\xe1\x82\x0f\x87\x58\xc1\x88\x71\xa3\x71\x0b\x3c\xf6\x85\xd9\xab\xd9\x98\xd4\x5f\x52\xbf\x59\xee\xf2\xd0\x9c\x85\x3b\xec\xfa\x69\x89\xa3\x29\xb7\x36\xbd\x25\x9b\x4d\xa3\x77\x6b\x85\x8e\xeb\x74\x3c\xec\x3f\x0c\x26\x63\xf5\x3e\xea\xc5\x31\xd2\x6e\x28\xac\xc9\xf6\xfb\xf1\x6c\xa0\x80\x06\x56\xa5\xb7\x4c\x3d\xe6\x10\xa0\x9d\x97\xa3\x68\xfc\x89\x43\x50\x9e\xfe\x8b\x71\xea\x6e\xb6\x1f\x2f\x86\x79\x3f\x4c\x1c\x1d\x43\xd1\x8d\x79\x8b\x94\xf4\x3e\xe1\x31\x7a\x85\x4f\x79\xe2\xa5\x9f\x95\xd7\x6c\xa6\x04\x0b\x18\xfd\x56\xb6\xe7\xa4\xc4\x78\xe3\x16\xda\x6f\x37\x1d\xf6\x33\xe5\xc2\xee\x47\x2b\x39\x65\x35\xa7\xac\xe6\x4c\x47\xe8\xa1\x27\xdc\x01\xc2\xb4\x64\x86\xd0\x6b\x36\x33\xf2\x6a\x2c\x69\xc7\x68\x77\x45\xfa\x47\x81\x93\xd1\x16\xd4\x1e\x86\xf0\x85\xae\x29\x4b\xed\xfe\xa4\x06\xec\xab\x36\xe9\x2c\x74\xa9\x14\x5b\x82\x52\x39\x1d\x10\x2f\x6f\xf2\x2d\x6f\x60\xab\x5c\x93\xb8\x58\x14\x26\xb9\xca\x41\x0e\xed\x51\xcb\xdc\x30\xc9\xd2\x95\xd5\xe5\xa1\x2b\x80\x3f\x3b\x49\xe8\xe5\x21\xbd\x4a\x88\x17\x4a\x47\x9a\x97\xa4\xca\x65\xd2\x68\xaf\xc8\x37\xda\xfb\x49\xbe\xa3\x91\x28\x32\xee\xfc\x2c\xe3\xce\x5e\x35\xdf\xf7\xee\x5b\xf9\xee\x8e\x74\xbe\xbb\xa3\xb7\x72\x0c\x4c\x8e\xc1\x11\xa1\x65\x8e\xc2\x8c\xa0\xec\x7a\x21\x07\x5e\xad\xb0\x90\x6a\x2e\x98\xfd\x2f\xc1\x7c\x7e\xe1\x45\x3a\xd1\xe8\x44\xe3\x0e\x17\x36\x1a\x1b\x51\xc9\xa2\x5c\xe7\xa3\x81\x0a\x7b\x71\xcf\x32\x20\x05\x26\x03\xbf\xd3\x68\x44\xa8\xaf\x51\x29\x70\x94\xc3\x32\x10\xe3\x9e\xcc\x54\xa5\xc4\x08\x8a\x20\x84\xe1\x7c\x1e\x55\xed\xe7\x44\x76\x82\x7a\xb1\xa3\xb9\xdf\x93\xa4\x62\x72\x70\x24\xde\xe8\x02\x1b\x29\x60\x05\xaf\x66\x03\xb5\xbe\x2b\x7f\x09\x5d\xa4\x62\x31\xc9\x80\xff\x82\x8a\x4a\x30\xab\x55\x03\x27\x1d\x55\xad\xe9\x01\xd7\x8b\x57\x65\xa8\x6c\xc9\xcd\xaf\xf6\x38\xad\x19\x3d\x6e\x7e\x0b\xcf\x2c\xd2\xe6\x42\xa1\x4c\x4c\x33\x6a\xe8\x85\xc3\xed\x12\x29\xef\x8e\xdc\x88\xd7\x6e\x5e\x4f\x12\x57\x30\xfd\xf8\x6a\xaa\x2f\x03\x68\x0d\x28\xaa\x45\x2d\xe0\xdc\x73\x0f\xa4\xe5\xcb\x17\x1a\xd1\xa4\x4b\x28\x86\x66\x10\x52\x36\x74\x77\x48\x23\x7a\x77\x48\x88\x27\x6d\xf6\x9d\x67\x38\x47\xdc\x1d\x9a\x1c\xfb\xdb\x10\xbc\x3e\x86\xb3\x43\xa3\x81\x51\xb7\xc7\x34\x84\x18\x4f\xb0\xd1\x43\xbf\x3f\xee\x7e\xeb\xe5\xaa\xd1\xd8\xd0\x06\x86\x26\xc3\x27\x05\x43\xa6\xb5\xd9\x8a\x20\x4c\xa7\x87\xc5\x9f\x9e\x05\x15\xf4\xfa\xd0\x04\x4f\x67\x10\x3c\x39\x42\x1b\x7c\x56\x66\x9e\x57\xbe\xb5\xff\x16\xc8\xda\x1f\x0a\x5a\x49\xa0\x2f\x7b\x55\x0c\x8a\xf5\x94\xa4\x90\x73\x77\x5b\xd0\x9b\x63\xda\x39\x26\x1e\x86\x87\xcf\x82\xf6\x9f\x05\x3d\x3d\x24\x5e\x76\x6b\x75\x64\x4b\x0a\x24\xdf\xf7\xf2\xf7\x18\xab\x46\xc4\x66\x50\x23\x5f\x06\x26\xff\x53\x99\xdf\xe4\x7d\x2a\xf3\x3e\x15\x79\x61\x8e\xc7\xfd\x7e\x36\xee\x0d\x8c\x23\x3d\x2d\x33\x8c\x2e\xc0\x4d\x02\x9c\x57\x11\xa8\xcb\x6d\x41\xcf\xb6\x05\xbd\xda\x16\x66\x2c\xae\x70\xb0\xbf\x1f\x9b\xe0\x77\x3d\xf6\x23\x13\xbc\xc6\x60\xb4\x23\x00\x37\xc7\xc3\x5e\x92\xa8\x21\xe7\xbb\x4f\x02\x9f\x86\x6c\xc4\xd7\x44\x83\x91\xa9\x44\xe5\x91\x57\x5c\xb2\x4b\x62\xc0\xd0\x09\xd6\x3e\x1e\x6c\x6e\xb3\x81\xea\xc7\xef\x25\xe7\xfb\x5d\xbb\xe4\xa4\x07\xb9\xbd\x4a\xee\x1d\x2d\xaa\xbb\xd0\x93\x76\x68\xe0\x84\x96\x44\xde\x7b\xd0\x77\xb3\xa6\xa5\xb6\xed\x71\x91\xc2\x25\x71\xcb\x66\xae\x70\x19\x6f\xed\xff\xe3\x37\x49\x57\x73\x52\xc9\xa2\xc9\x50\x07\x42\xd3\xf5\xaf\x8f\xd0\xf5\xd3\xb1\xa8\x4e\x78\x76\x5b\x79\x45\x40\x0b\xa5\x38\xac\x93\x6d\x41\x9f\xb6\x05\x82\xb7\x8c\x0c\x82\x25\xc3\x5e\x04\xa7\x2a\x58\x40\xc5\x77\x6d\x8d\x16\xb1\xb8\x4e\xf3\xc9\x83\x54\xc3\xb3\xf8\x52\x61\xa3\x23\x6f\x03\x4d\xf6\xdd\xce\x02\x6d\x1d\x2b\x04\x56\x43\xf7\x2c\xd4\x3d\x93\x2c\xec\x4f\xf2\x31\x0f\x9b\x5b\x28\x22\x50\x54\xb8\xdb\xcf\xfa\x43\x53\xfe\xc0\x14\x17\xa4\xd1\xf8\x21\x90\xc1\xab\x58\x9b\x4c\x6f\x2b\x0e\x90\xfc\xff\x9f\xba\x37\x6d\x6a\x63\x77\x16\x87\xdf\xe7\x53\x00\x97\xeb\x23\x61\x59\x8c\xc9\x21\xe7\x9c\x99\x28\x14\xfb\x12\x0c\x01\x12\x30\xb8\xa6\x6e\x69\x56\x1b\xdb\x63\xe3\x0d\xdb\xe0\xef\xfe\x54\xb7\xa4\x99\xf1\x42\xce\xef\xf7\xbc\xfb\x57\x52\x58\xd3\x92\x5a\xdd\x5a\x5b\x52\xab\x3b\x70\x05\xfc\x41\x22\x03\x0c\xaa\x4a\xf1\x58\xc0\x4e\x8e\x75\x0d\xf9\x2c\x60\x57\x27\x39\x65\xd2\xe7\x1c\x0e\x28\x08\xfa\xa7\x1a\xa4\x7e\x2d\x40\x83\x83\xbe\xc2\xec\xb9\x74\xf6\xc0\xfb\xf5\xa5\x33\x34\x90\x1b\x73\x3b\x5b\x23\x91\x57\x25\x75\xb4\x7e\x5c\xfe\x30\x33\x56\xc3\x0f\xdf\xe7\x9d\xa2\xab\xb4\x53\xd8\x16\xa5\x5a\xe9\xa7\xdc\xf3\x1c\x8f\x6f\xf6\x45\x20\x1d\x8f\x47\x41\xed\xe1\xc5\x25\x74\xf6\x3a\x80\x0c\x88\x5e\xf2\xf3\x04\x71\x4b\x5e\x49\xe8\xec\xd3\x03\x0f\x9e\x97\x74\x04\xd6\xc5\xa2\xfc\x1d\x64\x12\x75\xbb\xa2\x4d\xcd\x66\x74\x3d\xcf\x1f\xb2\x82\x7c\x35\xbd\x76\xfc\xda\xcb\xc4\x25\x5e\x36\x03\xf8\xe2\xe2\x9a\xf8\x94\x05\x62\xbd\xcc\x94\xb1\x23\x3f\x35\x73\xa4\xb7\xda\xca\x5c\x55\x64\x5c\x93\x47\x22\x42\xaf\xed\x31\xea\xd1\xff\x78\x29\x14\xd4\x2f\xec\x93\x61\x0d\x8d\xb5\xa4\xb8\x5e\xd6\x8e\x9f\x62\x3e\xf4\x59\x8b\x25\xfa\x64\xaa\xb9\xd7\xc2\x9c\xad\x5a\xd3\x45\x27\x75\x76\x82\xdf\xe8\x82\x1a\x31\xb4\x0a\x85\xf5\x24\xc3\xd2\x88\x48\xcc\xa7\xaf\x42\x74\x8e\xd4\xdb\xa0\x2c\x2a\xd0\x4e\x87\xd6\x49\xeb\xfd\x3d\xa1\xfc\x97\x9f\xc6\x19\x79\x68\xdd\x9a\x7d\x3a\x7c\x9d\x3b\x7c\x42\x2c\xcf\xe9\x65\x2c\x35\xad\x65\x6e\x6f\x94\xcc\x8d\x0a\x05\xdd\xf3\x95\x35\x28\x57\xd5\xa0\xe5\x04\xaa\xf2\x72\x26\x65\xa1\xb3\x31\xb3\x0b\x83\x4a\x0a\x75\x35\x6a\xeb\x50\x86\x2d\x0f\x6f\x4f\xd1\xdd\x52\xf7\xde\x0e\xd1\xf5\xbb\x76\x0d\x34\x9b\xe9\xfd\x1d\x59\xcf\x14\x41\xd0\xe6\x8c\xa6\x64\xf1\xe2\x79\xf3\x52\x98\x4d\x3f\x64\x2a\xa3\x05\xe2\x4f\x0f\xbc\xd5\xf8\xe8\x16\xb8\xff\x9a\xed\xef\x1f\x22\xde\xda\x25\x73\x9b\xcd\xfe\x2b\x9d\x7f\x6c\x2f\xf9\x4d\xc2\x70\x92\xf5\xe9\x5b\x60\xec\x20\x78\xfc\x67\x03\x3d\x01\x50\xc7\x9f\xdb\x76\x9b\xcf\x6c\xbb\xac\xb7\xd1\x55\xe2\xc3\x9e\xd9\x5f\xbd\x67\x36\x3b\x94\x1f\x46\x1b\xf6\x3c\xe1\xc9\xae\xde\xe2\x60\x98\xf8\xd4\x09\xc4\x81\xb6\xf2\xf5\x10\xb1\x54\x31\xc2\xbc\x3e\x31\x59\x6f\x7c\xee\x55\x74\xc3\xd2\xfc\x23\xfe\x1b\xdf\x6c\xe6\x7f\x38\x3e\x1f\xa0\xc1\x52\x9f\x0f\x5e\xe1\xf7\xf8\x02\x37\x88\xca\x79\xec\x09\x57\x27\x72\x87\x9d\x64\x10\x26\x83\x3e\xb6\xc6\x09\xa6\x08\x18\x44\xbf\x0e\x54\xb2\xa8\x35\xc4\x63\xf8\xac\xaa\xd4\x01\x3e\xea\x42\xcc\x51\xab\x8a\xcd\x48\x5e\x4d\x16\x6c\x82\x9a\xe4\xad\x85\xf6\x98\xd8\x91\x54\xbf\x87\xfa\xd7\xeb\xaa\xdf\xe3\x86\xfa\x8d\xd4\xef\x8c\x3a\xde\x1d\x09\xd8\xa7\x88\x16\x0a\xde\x1d\xf1\xf9\xf5\x0b\x8b\xe8\x1e\x99\x26\x24\xe0\x87\x92\x01\x80\x1f\x4a\x8a\xbe\x47\x4f\xf8\x95\x4f\x7c\x7e\xf9\x62\xce\x29\x92\x1b\xb2\x43\x59\xe7\x86\x44\xcc\x62\x21\x3f\x44\x69\x44\x03\xca\x2c\x48\x01\x91\x88\x6a\x83\x29\xba\x8b\xe2\x17\xc7\x24\xa2\x94\x61\x01\xc7\x0d\x55\xc0\x71\x63\xae\x00\xef\xf5\x83\x02\x8e\x1b\x0b\x05\x18\x40\x56\xc0\x29\x56\x35\x94\xe0\xf3\xf6\x2e\x81\x56\x51\x65\x45\xba\xac\x08\xcb\x9a\xfe\x22\x3e\x1b\x8e\x25\xc5\xa7\x79\x51\x43\x97\xe7\x25\x2c\xe2\xd7\x21\x09\x61\x09\x62\x11\x3f\xac\x93\x10\x6d\x2e\xe2\xed\xd2\x09\xaf\x7b\x24\xac\x9d\xba\x2c\xc4\x97\x9c\x61\xad\xe7\xb2\xb0\xb6\xef\xb2\xc8\x34\x2d\xf3\x6b\xc1\xc4\x25\x21\xe2\xa6\x58\xa2\x08\xa8\xed\x73\xbf\x8b\xb4\xcc\xf4\x48\x49\x75\xe6\x50\x57\x6e\xa6\x0f\xd9\x79\x3d\xe2\x2f\xaf\xc4\x33\xe3\x89\xa5\x53\x8c\x09\xb5\xe8\xcc\x19\x8f\x3f\x36\x3e\xd3\x7f\xdd\xd3\xbf\x38\xf4\xeb\xfb\x2e\xa1\x76\xcd\x55\x23\xbb\x53\x5f\x65\x49\x7f\x71\xc1\xe8\xd4\x61\xc1\x50\x67\x36\xa8\x8a\xf6\x9f\xac\x32\xfe\xaa\x55\xe6\x81\x07\xc3\x76\xf7\xf7\x67\x6d\xa9\xed\x60\xbe\xd9\x95\x7b\x92\xf7\x64\x2d\x09\x5c\xfb\x3a\xb7\x46\xd5\xaf\x73\x0f\xb8\x0e\x1e\x88\x84\x41\x21\xf9\x0f\x26\x71\x38\x48\x18\xb5\x7e\x97\x00\x04\x0d\x9b\xf7\x5f\x85\xcc\xaa\x36\x3b\x49\xb8\x9e\x7b\x07\x66\xce\xfa\x7c\x15\x6e\xed\x93\xdc\x2a\x0b\x7f\x85\xe4\x47\x65\x5c\x6c\x95\x75\x49\x98\x11\x6e\x2a\x52\xa7\xb8\x4b\x43\x3f\x4d\x08\x96\xe4\xeb\xdd\x0f\xd8\xbd\x8c\x9d\xdc\x09\x94\x7a\xa8\x7f\xb6\x4b\x17\x8e\xa0\x7e\x08\xc9\xcf\x77\x57\x1d\xe2\xb0\xb9\x73\x99\x97\xbc\xd2\x94\xa7\x4e\xb3\x7c\x41\xbc\x92\xac\x75\xa7\x2e\xdd\x26\x92\xeb\xc3\x29\x0d\x81\x02\xcb\xdf\x94\xfd\x55\xaf\x24\xf9\xf7\xdd\xaf\xe5\xe3\xcf\xdb\xe6\x50\xe9\xfa\x5e\x2f\x88\xea\xbc\xd5\x17\x65\x06\xe4\xc1\xb2\x09\xf5\x23\xeb\x32\x6f\xf8\x93\x48\xbe\x19\x4b\xbc\x31\x91\xfc\x62\x57\xf8\x0e\x20\x34\xcf\x12\x54\x6b\xf8\xec\x6d\x36\x7f\x98\x54\x79\x91\xba\xfb\x2b\x2e\x95\xe2\xfd\x92\x5c\x75\x19\x17\x0a\xe4\x75\xe1\x44\x2c\x3b\xa1\xd3\x4f\xcb\x1f\x78\x73\x5e\x5d\x6d\x4e\x79\x70\xdf\x98\x2c\x53\x86\x22\x60\xc4\x0e\x3a\x5d\xd8\x21\x76\xba\xda\x5e\x84\x84\xb1\xab\x4d\x46\xc8\xda\xbe\xab\x54\x06\x87\xad\x55\x23\x24\xa7\x7c\x79\xe3\xef\xc1\x97\x4d\xcc\x13\x7a\x9f\x0f\x5b\x44\x52\xba\xf7\xdb\xb2\xfc\xc0\x2d\x61\x54\x5a\x62\xc5\x77\x4b\x98\x66\x66\x1b\xc3\x35\xcf\x1f\x0d\x95\x1f\x86\x9d\x0f\x1e\x4e\xdb\xfa\xb0\xb0\xa9\x4f\xec\x29\x8b\xc3\xc1\x8a\xf8\x61\x2b\x8b\xae\x5e\x76\x7c\xdc\x45\xd8\x55\xf2\xe3\x42\x2a\x53\x75\x12\xa3\x1e\x73\x51\x37\xf3\x51\x99\xb1\x32\xbb\x4a\x6e\xe7\xe3\xee\xf3\x71\x77\xf3\x71\x3f\x3a\x8d\x64\x70\x24\x07\xc3\xb6\x5d\x25\x3f\xb3\x38\x54\x99\x3b\x98\xb3\x86\x95\x9f\x95\x7e\x60\xa3\x34\x9b\x0b\x7a\xa3\x4a\x02\xf1\x72\x77\x44\x78\x84\x92\x74\x06\x6b\x41\x4f\xbe\x26\x7c\x43\x2d\x92\xf2\x83\x5b\x0b\xe6\x89\xbb\x66\x7a\x23\x56\xbb\xf3\x5c\xf2\x83\x32\x29\x7e\x5e\xe2\x56\x83\xa9\x7c\x27\xfa\x4b\xc9\x74\xd7\x97\xc4\x83\x18\x73\xe8\xec\xab\xa8\xdf\x2c\xd3\x12\x86\x81\x06\x66\xe6\xbc\xbd\xda\x93\xe7\xd6\x2c\x97\x0f\x3a\x47\x72\x20\x7f\xdd\x5e\x92\xef\xa3\x39\x91\xbc\x8d\x1b\xb7\xb8\xba\xa4\x85\x90\x3f\x5d\x9b\x3d\x92\x76\x95\xc5\xd5\x9c\x5d\xbf\xe4\xf7\xf9\x0e\x2f\x74\xbe\x64\x21\x5f\xe7\xf7\xf9\x6e\xd8\xcf\x98\x55\xa6\x12\xb2\x76\x16\xb2\x76\x7f\x9f\x55\x1d\x18\xce\x1e\x49\x77\x21\xdf\xcb\x6f\xf2\x3d\x9d\x43\x8e\x17\x95\xe3\x05\xaf\xc6\x97\xce\x9c\xe7\xcf\x98\x73\x75\xd7\xfb\x0d\xe2\x87\x23\x40\xdc\x5b\x20\xa5\xff\x7b\x16\xd4\xd1\xe3\xec\x91\xf4\x55\xbe\xfe\x7f\x46\x50\xb6\x0d\x1f\xfc\x1e\xbf\x7f\xac\xab\x68\xb0\x40\xd7\xf0\x5f\xe9\x52\xf9\x86\x2a\xdf\xf0\xbf\xac\xa8\xd1\xbf\x37\x3a\x60\x1f\x2d\x50\xf5\xfa\x9b\x6c\xcf\xa7\x19\x55\xaf\x0b\xf9\xc6\x98\xef\xe7\x20\xd5\x30\xd1\xf7\x75\x28\x47\xab\xa9\x3d\xa7\xe0\xf2\xda\x14\x6f\x9b\x03\x34\xfc\x88\xdf\x4f\x27\x6a\xd8\x6d\xea\xdf\x53\xf5\xa3\xd5\x68\xae\xe2\x39\xad\x9b\xf3\x67\xf5\x3b\xc8\x21\x4c\x4d\xca\xf9\xa7\x62\x57\xdf\x4e\xff\xdc\x15\x3a\xe4\x5f\x89\xb2\x0a\x05\x0f\x2a\x6f\xa8\x7f\xe3\x8a\x58\xd7\x51\xb7\x15\x05\xfa\xa5\x7f\xc3\x7b\xf5\x1b\xdd\xe7\x9f\xda\x47\x69\xfa\x30\xc8\xc1\x3b\xe2\xad\x27\x93\x38\x54\xb2\x77\xfb\x4a\xfd\x06\x75\x3d\xf5\x63\x9a\xef\xcf\xe2\xed\xb4\x69\xbf\xb5\x1b\x89\x6d\xb1\xb6\x1c\xdb\xd6\x8c\x29\x57\xd1\x73\x30\x9d\xbc\xf9\x90\xc3\x1f\xdf\xa7\xe5\xca\xa1\xd1\x03\x1a\x57\xd9\xcf\x81\xbe\x09\x9f\x54\xc5\x5b\xd7\x97\xf6\xd9\x19\xeb\xf8\xd2\x9e\x9c\xb1\xdb\x89\x3d\x8e\x67\x6c\x5a\x15\x6f\x2f\xbb\xf6\x06\x92\x77\x17\xb6\x42\x7f\xd0\xe9\x55\x1a\xc9\x99\x4c\x82\x56\xb8\xc1\xba\x4b\x71\x72\x6c\xe2\xfa\x2b\xf2\xdd\xf9\xbd\x30\x4c\x36\x58\x6f\x45\x3e\x1d\x37\x63\xcd\x6b\x29\xde\xae\x87\xd2\xbe\xee\xb1\x97\xa1\xb4\x0f\x7a\x6c\x34\x94\xf6\x59\x8f\xdd\x0e\xa5\xfd\xab\x37\x63\x2d\x48\x81\xee\x39\x1a\x07\xec\x30\xb4\xf9\xee\x8c\xb5\x01\x96\x1e\x6f\xda\x6f\xb0\xca\x56\x43\xb3\xa2\x9e\x1e\xcc\x58\x88\x6f\x98\xcf\x41\x50\x91\xfe\xa0\x31\x6a\x0c\x26\xf6\x7a\x99\xa9\x43\x3a\xfb\xad\xdb\xe9\x2b\x7f\xda\x37\x33\xa6\xcd\x17\x0e\xc2\xf1\xe0\x87\x01\xf7\x4f\x53\x73\x85\x73\xf0\x1b\x96\x1e\x7a\x19\xef\xb8\x37\xb3\xd9\x8c\x25\x0b\x04\xa1\x00\x50\x0d\xf5\xa2\xff\x5f\x12\xb4\xaa\x60\x20\x68\x15\xa1\x1f\x11\xb4\x5f\x15\x6f\xe8\x47\xc9\x36\x1e\x4e\xb4\xcf\x92\x9b\x7d\xf6\x09\x6b\x73\x1a\xce\x28\x93\xe7\xb6\x5e\x17\xcb\x16\x2b\x7f\xa1\xec\xb1\x25\xed\xcf\x33\xe7\x41\x8c\x51\x63\xec\x37\x4a\x38\x4f\x11\x49\xaf\xda\x8d\xe5\xd5\x67\x91\xfc\xd2\xb7\x6d\x73\xc3\x3a\x27\x35\x6d\x9e\x98\xb3\x87\xcd\x13\xf3\x3e\x55\xcb\x24\xe7\x2d\x2d\xb3\x68\x3b\xf6\x3a\xc7\x53\x9a\xe3\x69\x31\x47\xfb\x31\xbd\xc1\xa6\xd4\x49\xd5\x1e\x6a\x1e\x6c\x05\x8d\xd1\xa2\xea\x0b\x31\x87\x1b\xa1\xbe\x8e\x6f\x6e\x12\x2f\x53\xfb\x39\xd5\x66\x72\x2f\xd9\x65\x7a\xd9\x7a\xa6\x69\x41\xbd\x73\x3d\x01\x18\x32\xcc\xb8\x1f\xd4\xce\x5d\x62\x31\x4b\x4b\xa4\xb7\x79\xb0\x32\x82\x65\xa9\x98\x01\xaf\x10\x5a\x2a\x53\x48\xea\x09\x1c\xc2\x1a\x11\x0e\x64\x9d\x7b\xc6\xfc\x5a\x7d\xea\x16\x0a\x1d\x73\xce\xe4\x29\x88\xc6\x1f\x06\x3c\xe8\xb4\x65\x23\xc1\x5b\x8d\x65\x10\xde\x6d\x2c\x83\x73\xb6\x25\xd3\x43\x9e\xcb\x9a\xd7\x73\x89\x51\x35\x0d\xb4\x8a\x54\xf5\x65\x59\x69\xdb\x3f\x15\x3f\xa0\xdd\xc3\x89\x64\xbb\xe6\x30\xe9\xe7\xae\x02\x3e\xbe\x66\xfe\x91\x5b\xf7\xe2\x1c\x60\xed\x61\xce\x94\x47\x5c\x51\xc0\xcb\x83\x1c\x30\x7c\x50\xc0\xef\xd3\x1c\x30\xd0\xc0\x9b\x5e\x0e\x18\xdd\x0b\xbf\x43\x24\xdb\x9f\x4a\xa6\xbb\x71\xeb\x5a\x9a\x06\x09\xef\xc5\x4b\xa2\x1f\x98\x65\x3d\x32\x77\x2e\xa7\x2f\x8b\x36\x01\x6f\xef\x18\xa6\x1a\x76\xd6\xa3\xfa\xde\xe8\xa0\x67\xab\xfe\xd2\xd6\x2d\x9e\xcc\x5d\x14\x9e\x99\xe8\xd1\xca\xe8\x5f\x26\xfa\x65\x65\xf4\xb5\x89\xee\x2e\x46\xeb\x3b\xb4\x25\xe4\x33\xbd\xf2\x79\xe9\xea\x81\x64\x37\xce\xd9\xdd\x4f\x58\x48\x85\xb8\xad\xe3\x56\x67\x73\xe1\x65\xe6\x7e\x42\x4e\x20\xa5\xec\x4b\xdc\x83\x29\x45\x34\x8d\x64\x2f\xb9\x96\x76\xfb\x5a\x66\x5e\x79\x72\xe2\x48\x77\xfe\xbc\xf7\xfe\x16\x36\xb8\x84\xce\x3d\xe3\x4f\x1d\x88\x9d\xbb\x04\x1f\x5d\x80\xa0\x7b\xd7\x20\x3e\x7b\x6e\xa4\x72\xec\x4f\xf8\xf6\xe8\xec\x01\x46\xcd\x1c\x79\x97\x66\x64\xd1\xf9\xd5\xdc\x9a\x39\x2f\xd9\x61\x6a\x7a\x60\x1e\x9b\x6e\xa3\xf7\xc9\x7a\x63\x5e\xfe\x48\xc9\xe5\x7e\xa4\x75\x41\x22\xa5\x90\xd0\xda\xfc\xa8\xf4\x7c\x69\x07\xaa\xd2\xd9\x38\x9e\x93\xce\x5e\x4c\x75\x48\xdc\x94\x5e\xaa\x03\x45\x09\x32\x85\x84\xaa\x4c\xcd\xc3\xd8\xa9\xe1\x18\xe3\xae\x9c\x7f\x7f\x66\x81\x13\xa8\x91\xad\xbd\x31\xf1\xab\x98\xff\x0c\x19\xfe\x86\x11\xc5\x81\xae\x26\x85\xc5\xa8\x99\xe3\xf3\xd3\xa6\x08\x1c\x85\x09\xcd\x90\x5d\xc5\xe8\xfd\xa7\xd7\x34\xa9\x55\xc7\x0e\x97\xa3\xc2\x88\xce\x97\x1c\xb0\x30\x5f\x9a\xd2\x9e\x8d\x95\x41\x3e\x2c\xe2\xe7\xae\xb2\xa0\x25\x7c\x2a\x95\xc0\xa3\xcf\x19\x2d\x65\x01\xed\x99\x9f\x36\x01\xd3\x8a\x12\x03\x3c\x8c\x83\xb1\xd5\x6e\x90\x90\xee\x11\x75\x54\x76\x24\x07\x21\x8b\x6a\xd7\xbe\x4b\xc2\x5a\x08\x03\xb2\xe8\x53\x6a\x47\x22\x2c\xfa\x4e\xa0\xbd\x9b\x29\x33\x8f\x29\xb6\xe3\x90\x44\xb4\x14\x50\xa0\xc9\x50\x8a\x16\x6f\xfc\x2b\xe1\x7f\x4d\xc9\x90\xe3\x52\x8e\xa4\x3d\xdf\x2e\x2b\x6f\xd4\xe1\xc3\xfb\xbb\xe4\xc1\x03\xf5\x91\x40\x16\x08\xec\xce\x7c\xc0\x8c\x83\x25\x75\x9c\x33\x89\xf6\xca\x42\xf8\x7c\xd0\xde\x0b\x6a\xc1\x8b\x4b\xa8\x1d\xd8\x65\x21\x3e\x29\x90\xad\x81\x4c\x82\x14\xe5\x3b\xca\x39\xaa\x07\xb3\x2e\xfb\xf5\x4a\x24\xef\xb0\x1e\xf6\x8b\x04\x3d\xf6\xf9\xb5\x89\xab\x04\x36\xfd\xcd\x61\xf1\xc6\x73\x08\x8a\x67\x3e\xed\xe8\x83\x7d\x7b\x6a\xe2\xee\x07\x92\xf5\xd2\x26\x5e\xad\xe7\x32\x34\xfd\x86\x17\xd2\x07\x92\xa0\xc5\x9f\xda\x8b\x6b\x9a\xca\xe3\xfb\x8e\xe4\x75\x0f\xd6\x18\x96\x26\xd7\x93\xf6\x3d\xa4\x49\x6f\xcb\x3d\xe2\xd7\x4e\x5d\x86\x4e\xad\x98\x0f\x49\xfd\xf9\xa4\x2c\x14\xfd\xf4\xfc\x28\x54\x59\x56\x1e\x5f\xea\x89\x97\xa5\x7a\x74\x41\x6d\x5a\xe5\xfd\x5d\x57\x84\x4e\x28\x06\xe9\x25\xd7\x7f\x8f\xa3\xa7\x71\x0c\xcd\x58\x54\xf2\x30\xd4\x35\xaf\xd4\x51\xf7\x6f\x3e\xc3\x0b\x66\x90\x2b\x33\x5c\xae\xca\xd0\xdd\x75\x85\xf2\x22\x16\x89\x5f\xcd\x74\xe6\x55\x33\x06\x6f\x93\xa8\xf6\x33\x70\xd9\x8f\x33\xb3\xc8\xff\x8c\xf5\x22\xaf\x27\x27\xba\x94\xf6\x26\x4d\x3b\xda\x5d\x4c\x1a\x88\x80\x4b\x62\x4c\x8e\x43\x9e\x20\x87\xfb\xd7\x6f\x70\x07\xec\x2c\x15\x34\x4e\x4e\xe6\x92\x31\xa5\x50\xb4\x79\xce\x6e\x13\xd8\xf5\x50\xea\x10\x23\xd7\xef\xb7\xe6\xbc\x57\x66\xb3\xb3\x10\x48\xed\x8c\x52\xad\x68\xa9\x0a\xf9\x1d\xf1\x7a\xcd\x7e\x7f\x27\xa3\xec\x99\xdd\xd9\x19\x3b\x3b\xa3\x2c\x85\xa0\x12\xc4\xe4\x2c\x4f\xba\xc7\x4e\x53\xd2\x1b\x95\x05\xd2\x83\x3a\x6c\x24\xe6\x93\x9f\xff\x67\x9c\x5a\x0b\xd9\xfe\x9b\x0a\xd2\x6e\x0e\x40\x7a\x33\xd6\x26\xb3\xcd\xed\x75\xce\x0c\x91\xcc\xb3\x20\x81\x7e\xc9\xa4\xa1\x3c\x98\xe1\xfa\x99\xa3\x5a\x42\xd9\x26\x05\x96\xea\x67\xb4\xca\x3c\xa1\x1f\xa5\x04\xf2\x72\xf7\xf0\xc3\xeb\x39\x6f\x71\xaa\xa3\xee\x57\xb9\x3c\x67\x31\xfc\x3e\xb6\x24\x6b\x42\x40\x79\x40\x6d\x89\xc0\x4c\x0b\x01\x4c\x0b\xe8\x99\x33\x14\x7c\x77\x2b\xaa\xf5\x8c\x4f\x02\x9c\xe2\x60\xf0\xdb\xf5\xda\xc0\x25\x5e\x29\xa4\x45\xbe\x8b\xea\x06\x93\x68\x2f\x0f\xb3\x71\x76\x70\x02\x7e\xdc\x26\x2d\xe8\xb9\x2c\x51\x87\xe4\x93\x68\x8f\x78\xa2\x5e\x3b\x76\x49\x08\x02\x6a\xff\x92\x20\xb0\xf6\x36\xb6\x2d\x36\xb1\xbd\x19\x83\x50\x11\xe7\x15\xf8\x74\xed\x85\x28\x08\x15\x61\xc6\x99\xc1\x6c\xc6\xfb\x92\x78\xac\xc9\x5a\x30\xad\x42\x1f\x7b\x45\xbe\xf9\xee\x16\x01\x14\xa5\x08\x27\x3d\x8b\x45\x78\x5d\x02\x48\x63\x16\x60\x7a\x6a\x7f\x48\x88\xc7\x26\xb0\x0b\x86\x90\x21\xc4\xd2\x84\xe4\xa2\x20\xf4\xaf\x84\x58\x9a\x94\x7d\x43\x0a\xd2\x80\xd4\xa4\x84\x18\xd9\x06\x2b\x2a\xd7\x84\xaf\xd7\x0b\x1e\xef\x31\xf9\x5b\x20\xbc\x62\xe0\x84\xc2\x2f\x86\xba\x5d\xfa\x97\x04\x69\x2b\x46\x6c\x62\xfb\x48\x5d\x50\xca\x85\x21\x54\x8c\xd2\x70\x58\x8a\x72\x69\x42\xcd\x68\x2e\x9c\x4b\xe3\xe9\xbc\x2e\x4a\xca\x31\x70\x99\x20\x19\x4e\x54\x14\x65\xdd\xa0\x72\x81\x82\x62\x1e\x3f\xe6\xd6\x35\x9c\xa5\x59\xa0\xa1\x04\x69\xa8\xfd\x11\xa6\x2c\x4f\x1e\x53\x86\x7f\x09\x93\xa2\x54\x2a\x4a\xe3\xac\x6d\xb2\x6b\x99\xfe\xf5\x82\x79\xbe\x7d\x5c\x2c\xcd\x12\x91\xdd\x0f\x81\x64\xab\x9c\x03\x29\x13\xab\xca\x98\x2a\x2e\x7b\x25\xe5\x63\xc2\x5e\x8e\xf7\x4b\xda\x1e\xeb\xbe\x9b\x6f\xd1\xc1\xef\x0a\xbd\xfc\xb8\x50\xdf\x2c\xc9\x15\xdf\x2d\xf9\x69\x81\x7e\x4a\x8d\x1f\xb8\x25\x5f\x17\x97\x9d\x4a\x5e\x2f\x39\xcd\x4e\xa5\x1b\x65\x2c\xdd\xc8\x3d\x2c\x12\x65\x81\xc2\x0d\x1f\xb4\x51\x4d\x64\x12\xe5\x1e\xf5\x78\x22\x2f\x4a\x79\x94\x45\x7b\x81\x16\xa4\x3c\x16\x50\xdb\xb8\x05\xf5\x72\x0e\x0a\x7d\xa3\xf8\x1b\x67\xbe\x25\x59\xb4\x97\x7a\x10\x65\x21\xb5\x0d\x12\x34\xbc\x6a\x2e\x1b\x2a\x75\x3b\x60\x97\x75\x3b\x9c\xcd\x1e\x78\xfb\xe6\x03\x19\x07\xab\x2c\x35\xe5\x9b\x13\x53\x2b\xf5\xf4\xb8\x3c\x0f\xbe\xac\x83\x8c\x56\x36\xb6\x2c\x34\x9f\x7a\xeb\x62\x8a\x46\x25\x6b\xdb\xdf\xf3\x6c\xc9\x40\xd8\xf2\xf7\xa4\xed\xa9\x1b\x9a\x5f\x23\xb9\xac\x80\xbc\xae\xd7\x09\xbe\x39\x98\xd7\x2a\xf1\x73\x44\x66\xca\x5e\x3e\xaf\xd4\x95\x63\x1c\x08\x5f\xd6\xb3\x3c\xbe\xe8\x65\xeb\x20\x9e\x16\x1c\xea\x8d\x83\x8f\xe2\x0a\x88\x20\x63\xb3\x63\xe9\xf0\x40\xbf\x91\x4b\x55\x6a\xb3\x13\xcf\xc3\xea\xa2\x93\x28\x99\x91\x11\xf2\x4a\x1d\x95\xdf\x42\x7e\x59\x17\x22\xd3\x46\x71\xb4\xfc\x09\x95\xef\x41\xe5\xfb\x33\xdc\xbb\xa0\xd0\x93\x29\xaa\xa4\xa5\x1c\x54\xe7\x9f\x48\x4e\xa2\x3d\x5c\x5a\x6a\xfb\xae\xad\x02\x3d\x17\x25\xcd\x34\xa2\x67\x22\xf6\x91\x12\x6f\x5d\x4c\xce\x0c\x85\x6a\x28\xa2\x36\x75\x2a\x01\xa2\xfe\x4e\x2a\x9a\xa9\x7b\xcb\x49\x94\x1a\x18\x87\xa5\x06\x25\xc1\x22\x08\x81\x25\xbe\xbb\x15\xe0\x52\x24\x79\x0c\x4b\x4e\x8c\xba\xcc\xf8\x55\xbf\x23\x91\x12\x1a\xd5\xf7\xe3\x33\x7c\xe3\x40\xc1\x3b\x47\x83\xac\x76\xea\x16\x41\xaa\x04\x5c\x3e\xe0\x62\x29\xae\x26\x43\x85\xee\x98\xc7\x88\x0b\xad\xa8\xc3\xe7\x24\xc6\xcf\x9e\x4b\x67\xde\xba\x38\x3b\x43\xe3\xe3\x83\x45\x66\x7a\x73\xcc\x74\x77\x5d\xa6\x26\xcd\x3c\x17\x29\x03\x6c\x8e\x01\xb6\xc0\x00\x9b\x67\x80\xda\x24\x47\xfd\xff\x2f\xc2\x29\xec\xa4\xcf\x5b\xf3\xc6\x7b\xaa\x79\x09\x98\x07\xf5\x39\x21\x67\x3c\x3f\x85\xad\xdc\x3a\x31\xdf\xcc\x25\x2c\x10\x24\x9b\x54\xf3\x69\xe8\x36\x9a\xdd\xe6\xe5\x6f\x46\x61\xea\x2d\x68\xf4\x94\x3e\x9f\x5d\x2a\x6f\xf9\x6c\xb0\x69\x07\xdb\xbc\x3c\x73\x24\xe0\xc8\x17\x64\xe6\x4b\xc0\xa1\xf2\xf2\xf2\x37\xb9\x97\x43\xa0\xf3\x4b\xc8\xaf\x4e\xbb\x53\x06\x8e\xaa\xa9\x46\x5c\x5c\x31\x8c\xac\xc3\x52\x86\x03\x4b\x8c\xe3\x42\x41\x31\xa9\x4c\xa3\x5a\xa8\xc2\xb4\x2e\xb9\x1c\xee\x11\x89\x07\xdd\xea\x91\x85\xe4\xfe\x29\xd4\x27\xc8\x66\x00\x57\xcf\x27\x24\x1f\xb4\x25\x93\x14\x62\xe4\x10\x1f\x4c\x50\x7b\xdd\x2b\x14\xe0\x53\x5d\x31\x43\x48\x45\xeb\x6b\x65\xd8\xcd\x0d\xda\x2b\xcd\xd4\xc8\xa1\x99\xf6\xc6\xe9\x96\x4a\xcf\x7a\xfe\xe9\xf6\xe1\x33\x29\x1f\x7f\x66\x5f\x8e\xff\x64\x92\x0f\x36\x53\xcf\x0c\xe7\xcf\x5c\x36\xcd\x01\x22\x35\x46\xb0\x73\xd0\xdb\x0a\xec\xcc\x48\x50\xf2\x29\xaa\x7b\xfe\xf6\x28\x0f\x5d\x06\xc0\x2a\x11\xe7\xf1\x78\xd8\x8a\x46\x7b\x4c\xc1\x22\xea\x58\xdf\x64\xed\x7a\xec\x6a\x5f\x0c\x72\x4c\xe2\x12\xba\xb1\x96\x22\x2a\x91\xb8\xe4\xab\x55\x5e\xfb\x0d\x29\x86\xca\x8c\x7f\x5c\x24\xb2\x14\xc1\xb2\x9d\x62\x3b\x98\x10\x9f\x3a\x32\xff\x8d\x2a\xb6\xed\x46\x22\x62\x07\xe9\x11\x72\xe5\x71\x6a\x6b\x53\x09\xf1\x6a\xab\x9c\x3f\x84\x54\xdb\xb7\xf4\x24\x52\x1f\xe8\x3c\x92\x75\x6d\x44\xe5\x57\xbc\x38\xc9\x4b\xbe\x39\x30\xce\x4d\xd3\xf1\x60\xce\x66\xe3\xfb\xf7\xf7\x49\x7a\x7e\x4a\xd9\xe5\x2b\xf1\x6a\xb2\xe7\xd6\xc6\x2e\xbb\x3b\xd3\xd6\x4d\x7e\xfe\xa7\x38\x73\x98\x72\xf3\xf9\x64\xf1\x35\x7a\xc7\xd1\x27\xb7\x7a\x99\xd5\x43\x6b\xfe\xfb\xb2\xfe\xfe\xfe\xeb\x95\xf8\x38\xa1\xe7\x07\xe6\x65\xee\x53\x8e\x67\x46\x61\xff\xa9\x85\x0e\x5f\xd4\x68\x9d\x44\x7b\x01\x9f\xd8\x01\x1f\xd3\x92\xcf\xdb\x57\x38\x97\xa9\xf5\x36\x36\x23\x9e\x35\x53\xf5\x78\x35\x45\xa8\x83\xce\x71\x6c\x87\x22\x86\x92\x4a\x11\x08\x51\x4d\xf8\x90\xe3\x52\x04\xc2\x4d\xfe\xc4\xf3\x6c\x31\x1d\xa4\x28\x49\xee\x5f\x29\x40\x2e\xed\x04\xd2\x02\xb0\xa8\xa3\x2f\xeb\x2c\x8f\x77\x16\x8a\xfd\x67\x02\x12\x32\x3e\x3b\x69\x5f\x15\x45\xe8\xf8\x3c\xa8\xc3\x12\x83\x0a\xb5\xaa\x86\x8a\x02\x3d\x34\x03\xfc\x2c\x83\x5f\x2a\x38\x4e\x0a\xce\x8f\x1f\x44\xf2\xcd\x13\x86\x23\x5b\x7d\x3d\xe9\x2f\x18\xa2\x8d\x8a\x58\xbc\x9d\xc0\x69\x04\x9a\xf3\x70\x40\x7c\x4a\xdf\x24\x54\xa5\x4f\xf3\xcf\xf1\x3a\x4e\xc0\xdb\x57\xe9\x29\xa9\xe4\x13\x5b\xf2\xb1\x13\xc0\x64\xe3\xf1\xa0\x0e\x65\xab\x63\x0e\xbf\x16\xbe\x28\x43\xec\x9f\x1e\xf8\x68\x77\xd1\x2c\x8b\x2a\xc8\x68\x80\x74\xb4\x07\x40\x21\xa1\xfa\xb3\x09\x23\x7c\x98\xd3\x9d\x6c\x3e\xc0\x64\x6c\x8e\x31\x02\xb1\xd9\x46\x13\x82\xaa\x4a\x60\xe8\x21\xc0\xa7\x8e\x11\x38\x02\xd4\x39\x82\x49\x3f\xd5\x44\x57\x67\xe6\x66\xb5\xc6\x3b\x9c\x36\x31\x38\x98\x41\x0e\xd3\x4c\xc8\xc3\x24\x28\x85\xb5\x89\x6b\x66\x22\xd5\x5b\x22\x91\x91\x13\x8b\x2a\xb9\x6b\x2b\x4d\x0c\xdc\x79\x55\x1b\x24\x62\x31\x65\xb1\x78\x52\xa1\x4c\x62\x12\x9e\x91\x97\x44\x4c\x3d\xa0\x15\xd6\xad\x09\x7a\x31\x51\x1f\x50\x20\x64\xf5\x44\xa4\x9d\xbb\x40\x7c\xc9\xa3\x5f\xcd\x27\x92\x14\xd1\x3d\xcf\x8e\x9c\x30\x47\xa1\xe3\x89\x8b\x67\xe2\xb1\x98\x96\xc2\xed\x1d\x27\x65\xcc\x63\x5e\x31\xa4\xce\x77\x49\x42\xa6\x7d\x97\x20\x3f\x38\xdd\x51\x07\x11\x08\x00\xc1\x26\x0c\x3f\xb4\xbb\x13\x08\x43\x32\x39\xd6\xb9\x55\x59\x41\x56\xb7\x88\x48\xa5\xcb\x55\xf1\xc0\xdc\xf8\x7c\x92\xd8\x3b\x61\x01\x22\xc1\xbf\x4c\xc9\xba\x7a\xdb\x37\x84\xb2\xf4\x0e\x27\x80\x89\xf6\x77\x53\xa2\xbe\x0e\xf6\x67\xe9\xc3\xbe\x55\xf3\x62\x6e\x62\xc4\x53\x52\x23\x6e\x9a\x8e\x3a\xcb\xcb\x03\x9d\xc5\x4d\x86\x5a\x2a\x40\xee\x9c\x5b\x27\x82\x14\x80\x07\xbb\x41\x29\x74\x2c\x81\x3e\x65\x48\x58\x12\x65\x16\x14\x45\x99\x45\x42\x3b\x00\x8a\x85\x0f\x4d\xe4\x0b\x3c\xf5\xcc\x6c\xd6\xc4\xe9\x3c\x97\xfa\x2b\xd7\x58\x63\x8a\xce\x14\xd5\x07\xea\xf8\xb6\x4a\x4d\x8d\x8b\x97\xb7\x22\x96\x08\xfe\x65\x2b\x72\xfc\x6f\x80\xc4\xff\x2a\x92\xf7\x77\xd2\x14\xa4\x59\x6c\xa1\x87\x85\x6d\x41\xfc\xaf\xf1\x1e\xff\x67\x2b\xb1\xcb\xbc\xbc\x15\xd3\x6d\x5f\x6b\x67\xfe\x68\x93\x66\x29\xda\xde\x61\xcd\x62\xb4\xbd\x43\x99\xff\x35\x7e\x7f\x27\x19\x87\x52\x2f\xb2\xd9\xf7\x6d\x85\x52\x36\xbd\x96\x24\x62\x1a\x41\x88\x4e\x3b\x75\x9e\x83\x09\x89\xb0\x17\xcb\xec\x5b\x75\x64\xb5\xbe\x85\x4c\xaf\x6f\xf9\xe7\x07\xd3\xf4\xce\xa0\x36\x71\xbf\x7a\xb5\x89\x8b\x6f\x79\xc2\x24\x28\x0a\xf8\x2a\x01\x9c\x7d\xc7\x44\x80\x1c\x5a\x2e\x4c\x82\x6f\x1e\xfc\x2d\x14\x08\xc6\x40\x9a\x92\xca\x55\xc2\x08\x94\x53\xf0\x2d\x09\x7e\x39\x39\xe4\x19\x2a\x98\xfc\x4e\x4e\x96\x26\x3f\x35\x21\xad\xe7\xd6\xb0\xcb\x57\xe2\x9b\x15\xd0\xe3\xb7\xc9\x9e\x7a\x34\xb6\x79\xbe\x77\x77\x66\x9b\x19\xf0\x76\x22\xed\xe3\x63\xdb\x3b\x51\x76\x1f\x1e\x3f\x52\xfb\x06\x94\xf9\x7e\x9e\xb3\x5c\xb4\xd0\x0b\x82\xdc\xae\x2e\x3d\xa1\x3b\x3a\x67\x66\x43\x87\xc3\x0e\xf6\x73\x38\xf4\x10\x78\x58\x87\x91\x10\xd8\x9e\x10\xa4\x2c\x44\xb0\x37\xa9\xf2\xae\x2f\xed\x49\x95\x77\x7c\x49\xd1\xca\xe0\xa4\xca\x6f\x27\x90\x71\x55\xe2\x8e\x4a\xdc\x9d\x4f\xdc\x48\x7e\xf4\x3a\x71\x2f\xec\xf7\x6d\x39\x53\x42\xc5\x53\xb4\xac\x6b\x58\x28\x90\xec\xc2\x88\x99\x0b\xa7\xcd\x13\x3d\x2a\x37\x4f\xd4\x7b\x61\x13\xf1\x64\x22\x9e\x74\x44\xb6\xef\x14\xeb\x65\x96\x5d\x69\x69\x83\x3c\xf3\xb9\x4f\x35\xf8\x34\x97\xf7\x12\x2f\x30\x75\x58\xc1\xcd\xeb\x91\xbc\xf4\x71\xac\x4c\x4f\xdd\xe4\xac\x5c\xd4\x5a\xa7\xac\x7d\xea\xd2\xd9\x23\x39\xae\x32\x79\x43\x9d\x63\xd4\x01\x6a\x7d\x5f\xb5\x38\x7a\x42\xb4\x4e\xb5\xf7\x7d\x74\x42\xeb\xf3\xd3\x84\x9a\xc7\xba\xf0\x21\x24\x5b\xb7\xd2\xb5\x46\x37\x2b\x24\xca\xa7\x41\x02\xd7\x2d\x27\x7d\x3d\xa1\x0b\xbd\x6f\x7e\xa4\x37\xb9\x2e\x24\x3f\x4d\xf6\x6a\xf8\xac\xfd\x07\xa9\xf6\x99\xe4\xbd\x88\xba\x76\xcd\x55\x8f\x8a\xf6\xaf\xa5\x78\x0b\xe4\xc4\xfe\xfb\xcb\x9f\xc7\xbb\xac\xde\x19\xf6\xec\xcf\x5f\x8e\x77\x59\xbb\x91\x0c\x07\xa1\x0d\x32\x75\x3f\xf4\x3b\x49\x60\x83\x88\xdd\x6e\xb4\x5a\x0d\xf3\x9d\xab\xa1\x93\x6a\xd6\x6b\x4f\xd1\xbc\x9f\xef\x0c\xec\x37\x58\x73\x7b\xbe\x4b\xfa\x21\x76\xdb\x1d\x21\x84\x5f\xbb\x70\xe9\x9b\x2f\xea\x92\xf8\x35\x4b\xa9\xc6\xbe\xa8\xa7\x4a\xeb\x11\x6a\xb5\xa2\xd0\xb3\x36\x48\xdf\x2e\xff\x71\x9e\x8c\x64\xab\x11\xac\xa9\xe7\x4e\xf8\x6c\xb9\x91\xf8\xbd\xb0\x1d\x26\x03\x7b\x6d\xe3\x8f\xa2\x2c\xfe\xb1\xc1\xff\xa0\xce\xcc\x17\xe5\x99\x27\xf6\xaf\x65\xcd\x73\x17\x4c\x6d\xfc\x16\x4b\x1e\x89\xa9\xf0\x2d\x2f\x9b\x74\x4e\xab\x79\x6b\x82\x17\x6e\xa9\x8c\x26\xf7\x0e\x3d\x97\x78\x54\x08\x31\xae\xef\xc9\x5a\x18\xba\xc4\x62\x1e\xb5\x25\x46\x1a\xbe\x35\xbe\x1d\x34\x25\x77\xe1\xee\xc9\x5a\xd9\xb5\x65\xcd\x72\x33\xf4\x07\x79\x3b\x65\x75\x89\x12\xbe\x20\xb2\xe4\xd3\xff\x3d\xa9\x12\x2f\xd3\xd2\x4e\xaf\xfe\x88\x2c\x79\xf9\x13\xb5\xc3\x65\x0c\xbe\x90\x25\xdf\xf1\x84\xc2\xe0\xff\xaf\xf0\x32\x34\xb0\xe4\xf8\x7b\x19\x32\x75\x94\xa6\xc2\x45\xaf\xe4\xe7\x3b\xff\xd9\x6a\xe5\xb1\x28\xaf\x61\xf5\x22\x80\xe7\xfd\xe6\xfb\xfb\x71\xb3\x50\x58\x3f\x6f\x92\xe7\x04\x36\x8e\xb2\xf6\xd3\x77\x85\xa8\x46\xf3\x57\xc8\x79\x3c\xb0\x6d\x54\x38\x98\xdc\xab\x1d\x9e\xb2\xf1\x58\xb2\xa7\xbe\x64\x97\x03\xc9\x86\xa7\xae\x3d\x3c\x55\x1a\x2a\xb3\x47\x72\xa6\x74\xaa\xce\xba\xe4\xac\x3a\xef\x7a\x59\x49\x86\x38\xcb\x0e\x4f\xe9\x7e\xb3\x50\x38\x6f\x92\xb2\x45\x0b\x05\x0b\xaa\xbd\xf5\xe2\xea\x50\xf3\xc5\x7d\x7f\x27\xe7\xc6\x9c\xe3\xb4\xa9\x55\xff\x5f\xd6\xd3\xeb\xab\x17\x5a\x7b\xf1\xb4\xa9\x19\x65\x52\x19\xb7\xc1\x34\x33\x3c\x02\x05\xad\x8b\xc3\xd3\xf7\xf7\xd6\x21\x46\xa5\x5d\x03\x08\x38\x3c\x55\x7a\xf9\x2f\xb5\x4e\xa0\xae\x2e\x1d\x20\x68\x67\xe7\x9f\x94\x14\xe2\xe5\x1e\x0a\xfb\x42\x15\xe0\x18\xaa\xd2\x0a\x7e\x18\x90\xc5\x39\x73\xbe\xda\xa1\x04\x5c\x07\x52\x5a\x7d\x3a\x63\x96\xae\xb0\x19\xcd\x09\x28\xe7\xd5\xec\xf9\x80\xe4\x11\x2c\x85\x55\xd8\x83\x47\x01\x2c\x7d\x1a\x6d\xee\xd4\xf4\x48\x3f\x22\xc6\x26\xdb\x87\x94\x37\x12\x9f\x47\x43\xab\x64\x3d\x72\x86\x2d\x31\x6f\xe4\xea\x6c\xde\x9c\x95\x69\xe7\x27\x92\x63\x51\x1b\xce\x51\x6c\xe4\x7a\xdb\x45\xea\xf2\x6a\x78\x95\x37\x2a\xf4\xfe\x7e\x7e\xc5\xef\xf1\xc5\x00\xf4\x84\x8b\x2a\x1b\x5e\x51\x27\xb8\x22\xc1\x8b\x5c\xf1\x1a\x03\x88\xbe\xa8\x92\x64\xd1\xfb\xf6\x77\x7d\x62\xd7\xab\xa4\xc8\x53\xc3\xe2\x9e\x90\xef\xef\xd7\xf8\x30\xfd\xb2\xea\x3c\x92\xef\x55\xd6\xab\x50\xe7\x41\x7c\xd7\x96\xbc\x9a\x2f\xc6\x26\xd7\x6d\x5b\x8a\xb2\x95\xa1\xad\x54\x89\xa9\xdb\xcb\xea\xfb\x3b\xb9\xac\x8a\xe3\xb1\x5c\x6b\x24\x6b\xa1\x44\x05\xe7\xe1\x69\x76\xbf\x71\x59\x9d\x3d\xf0\xeb\x33\xb1\x5e\x76\x1e\xf8\xf3\xd2\xaa\xf8\xa2\x56\xf1\x86\x24\x94\x3f\x93\xe1\xa9\xbe\xdd\xfa\xd5\x57\x46\x69\x8f\xa3\xb9\xb9\xfe\x3b\xd4\xf5\x71\xb4\xa4\x11\x7a\xed\xbd\xbf\x93\x94\xaf\x5a\x35\x70\xc9\xc9\x29\x7d\x7f\xbf\xa6\xce\x41\x8b\xfc\x6a\x42\xaf\x15\x22\xf5\x1f\x07\xe4\x58\xe6\xc0\x58\x12\xca\xf6\x2b\x46\x57\x69\x74\x4e\xa9\x03\x0c\x9a\xb4\x40\x58\xb7\x25\xfd\xb0\xde\x69\x05\x61\x4f\xe8\x52\xd2\x53\x0a\x49\xa8\x53\xb9\x24\x92\x9d\x9c\x32\x13\x87\x7b\xb9\x13\x2f\xcf\x2c\x52\x7e\xe2\x65\xdd\x24\xd3\x19\x4f\x67\x08\x69\x26\x07\x20\xe9\x7b\xac\x55\xc8\xff\x5a\x88\xb8\x3c\x52\x11\xc1\x35\xae\x26\x40\x2b\xd5\xf3\x8d\x54\x8a\x16\x07\xcd\x42\x61\x2e\x4b\x6d\xda\x67\x87\xa7\xec\xe8\xd4\x58\x4c\x69\xa4\xde\x95\xcc\x34\x20\x09\x55\xe5\x78\x78\x2a\x30\x35\x66\x03\xab\x0d\x99\x6a\xc4\x48\xe7\xd8\x1c\x47\x29\x6d\xa2\xd1\xd0\x68\x46\x41\x2d\x7d\x6f\x60\x8d\xa0\x41\xef\x70\x89\xf7\xb3\x70\x71\x88\x98\x1a\xc6\xb1\x92\x97\x56\xe6\x71\x2a\xb5\xd5\x4c\x3a\x51\x23\x75\x5d\xf2\xb0\x25\x81\xcf\x53\x3c\x65\x23\x94\x47\x9d\x5e\x1b\xa5\x63\x7d\x36\xa7\x41\xac\xb7\x2f\x61\xcc\xb7\x24\x4a\xbd\x2d\x29\xd6\x2d\x3a\x5b\xb0\x54\xf7\x7d\xe5\x20\xfe\x98\x42\x60\x72\x74\x2e\x36\xd0\x20\x47\xa9\x91\x74\x87\x83\x12\x86\x37\xa0\xe9\x5f\xfe\x5a\xb6\xf0\x09\x5d\xce\xc9\xdd\x65\x40\xbf\x99\xeb\x76\xb8\x82\xab\x9e\xb7\x7e\xa5\x27\x0e\x23\x68\x57\xda\x73\x52\x32\x9b\x3b\x35\xf4\x00\x57\xa1\x10\x8f\x09\x86\xd8\x35\x9d\x39\xfb\xcd\xbd\x87\x01\x91\xac\x6c\x51\x5b\x6a\x47\x82\xc1\x75\x3e\x17\x94\x64\x06\xcd\x29\x1f\x79\x59\x6f\x89\xfb\x69\xcf\x53\x01\x3d\x13\x98\xb1\x76\x96\xea\xff\x42\xfb\xa3\x25\xfc\xc6\xbc\x56\xd6\xce\x5f\xd9\xdc\x3f\xbf\x4a\x34\x5f\x52\xee\x71\xbd\x50\xb1\xd3\xfe\x5e\x3c\xce\x08\xd0\x29\xa9\x8e\x3d\x4a\xdb\xc1\x10\xc2\xa4\x3a\x34\x51\x76\xb2\xe7\x0f\xb2\x4d\xd5\xbd\xbf\x93\x3c\xce\x6b\xca\x1e\xb4\x68\xdc\x4b\xa0\x5e\x98\x91\x7b\x1f\x00\xb0\x1a\xc3\x12\x51\xd7\xca\x30\x5e\xb5\xb1\x6c\x0a\x56\xd5\x45\xb6\x02\x5d\x55\x33\xe1\x74\x7d\x5d\xaa\x36\x92\x86\xf1\x75\x71\x3d\xf7\x25\xf9\xb5\x37\x1b\xc9\xf9\xb7\x76\xf3\xf4\x3b\xb9\xc3\xc3\xe6\x4b\xae\x4a\xae\x61\xce\x7f\x7c\x9d\xcf\x9b\xf5\x20\xfc\xad\x3d\x7a\xa9\x11\x1f\xa0\x94\xa2\xdb\xf8\x93\x65\xbb\xef\xab\x0a\x90\xd4\xc9\x93\x62\x26\x04\xc5\x71\xec\xad\x7c\x20\x38\x87\xcb\xb4\xbd\x6d\xa8\xda\x9b\xeb\x04\xd7\x48\xcc\x41\xfb\xa3\x3d\x21\x4e\xb1\x55\x42\xf7\x08\xde\x4b\xce\x4d\xc7\x32\x6d\x19\x21\xa9\x9d\x6b\x7c\x4f\x8d\x08\x68\xf8\x34\x81\xbe\xdd\x90\x38\xd9\x79\x85\x42\xe5\x92\x78\xf3\xf3\xf6\x03\xf7\x82\x8f\x1e\x08\x5d\x7b\xea\x8c\x6e\xf8\xc1\xed\x64\x4a\xe6\xaa\x75\x63\xdd\x2c\x1c\xff\xb6\xae\xd8\xe9\x1c\xbb\xb4\xac\x38\x69\xf5\x91\x0f\xd7\x2e\x6d\x9d\xa9\xd2\x36\x26\xd1\xae\xcf\xde\xdf\xf3\xc9\x27\x73\xc9\x99\x9a\x06\xcc\xd0\xe8\x48\x63\x3d\xb7\x2d\x73\x03\xe4\x72\xbe\x9f\x4c\x73\x9d\x61\x3d\x5d\x49\xd2\x3a\x38\xac\x98\x47\xa5\xa3\xf3\x62\xef\x00\x92\xcc\x9c\x9f\xaf\xab\xba\xc9\x7a\xda\x0f\x6e\x03\x17\x7b\x41\x47\xce\x0d\xad\x34\xc1\xfb\x7b\xd6\xb6\x29\x5f\xab\xc7\x67\x3a\x04\xaf\xb5\xf8\x83\x51\x97\xea\xac\x2f\x18\x12\xd3\x7f\x0f\x7b\x52\x78\x7b\x9e\x7d\xde\xd3\xda\xe5\xad\x48\xec\x1e\x7f\x46\x91\xe8\xe4\x5a\x0a\xcb\x99\x74\xc9\xf5\x82\xe8\x9d\x6a\xfa\x80\xf8\x84\xf2\x51\x20\x82\xf7\xf7\xcd\xc3\x22\x39\xb9\x96\xc5\x22\xad\x35\x7d\x97\x7c\xfe\x42\x8b\xa3\x06\x49\x3f\x1c\xaf\xc1\xff\xcf\x97\xad\x96\x27\xfd\x66\xff\xff\xa0\x7b\xce\x01\xc4\xdb\xcc\xe8\x5f\x6a\x62\xb5\xda\x31\xfa\xa8\x35\xcf\xfa\x23\x34\x77\x42\x65\x6d\xea\xbb\x85\xc2\x3a\xfe\xa2\x99\xc1\xe0\x59\x92\x90\x45\x4c\xa2\xb1\x41\x1c\x24\x73\xe8\x6b\x81\x2b\x4e\xaf\x25\x09\x98\x47\x99\x4a\x6c\x6a\x80\x3d\x76\x65\x31\x40\xdd\xf6\xc1\xa9\x24\x21\x52\x4c\xd9\xdb\xa0\xd1\x0e\x3b\xc3\x81\xad\x2b\x86\xfd\x0c\x24\xea\x25\x39\xdd\x53\x49\x3c\x76\x86\xd8\x24\x2a\xaf\xeb\x8b\xbc\x86\x6f\x07\xec\x31\xc0\xcb\x73\xea\xdc\x2e\x57\x1d\x9a\xf7\x24\x92\x3f\x06\xb8\x6e\x3f\x06\xb2\x76\xa5\x55\x23\x1b\x7e\xa1\xf0\x03\x35\xa6\x7c\xb6\x5e\xc6\xd9\x29\x9b\x49\xcf\xb2\xdd\x9e\x1e\x8e\xb9\x0e\x02\xb9\x50\x4b\xc5\x2f\x14\x7c\xe2\xe5\xcf\xce\x4e\xcd\xd9\xd9\x62\x2e\xdf\x64\xb3\xa8\xe3\xa1\x21\x54\xf5\x00\x39\x67\x0a\x35\x87\xe6\x87\xee\x45\x0b\x55\x2a\x71\x63\xb3\xa7\x25\xfb\xa5\x48\x7b\x09\x22\xa2\x06\x9d\x39\xce\x2b\x1e\xe5\xf2\xb8\xd3\x89\x5b\x61\xa1\x30\xf7\xc9\x5b\x1d\x19\x84\xbd\xd5\x50\x1e\x8e\x64\xeb\x37\x51\x7c\xd4\xe8\x0f\x65\xab\x31\xc5\xe7\x94\x85\x02\xf9\x0f\x53\xe6\x87\x1b\xc4\x92\xb4\x16\x6a\x96\x8b\x2d\xf1\xe9\x13\xbe\xeb\xe9\x3c\x4a\xb1\xe1\x75\x7a\x41\xd8\xb3\xd7\x2c\x67\xad\x2b\x83\xa0\x91\xc4\x18\x6e\xcb\x5e\xdc\x48\x20\xb8\xc1\xba\xff\x51\xba\x35\xf5\x72\x65\x6d\x83\xbd\x40\xfa\xb8\x17\x86\x09\x9a\x65\xd9\x60\xbd\x14\x70\xd2\xeb\xb4\x37\x58\x3f\xfd\xfe\xd9\xd9\x60\x03\xf8\x6a\xcb\xe7\x4e\xef\x67\xc3\x6f\xf6\x37\xd8\x10\x01\x8d\x24\x05\x8c\x00\xd0\x0b\x03\x8d\xee\x55\x7f\x2a\x64\x63\xfd\x05\xa8\x26\x10\x9e\x84\xad\x56\xe7\x55\xa7\x9d\x66\x10\x95\x7c\x3f\x03\xfc\xec\x6c\xe4\x7a\xa5\xb4\xf2\x9a\x76\x4b\x07\x06\xe9\x2b\xb0\x1b\xa3\x71\xff\x22\x8d\xe1\x07\x79\x22\xde\xa4\x67\xbf\x1e\x65\xf6\x0d\x03\xed\x48\xfe\x7e\x9f\xb5\x7c\xfb\x9a\x79\x9d\x56\x60\xaf\x97\xd9\x4f\x1f\xfe\xde\x85\xd9\xfb\xb4\xe4\x59\x7e\x98\xfb\xe2\xe8\xdf\x72\x0f\xeb\xcb\xb9\xad\xff\xb8\xec\x41\x5d\x8a\x50\xbf\xd0\x88\xe6\xed\x4a\xe7\x9d\xc0\x8e\x1e\x44\xcd\x9d\x3d\x12\x69\x65\x8f\xc2\x0e\x1e\xa5\x30\x0f\x85\xf0\x75\xd0\xf3\x01\xd3\x0f\x86\xee\xf7\xd9\x10\x3d\x91\xb3\xc3\xc5\x44\x1b\xff\x13\xfd\x05\xff\x36\x4c\xda\xd6\x01\xa4\xdd\x99\x51\x76\x94\x4b\xab\x23\x37\x53\x44\xc7\xcb\x91\xaa\x14\xc8\x79\xb2\x58\x4a\x53\x3d\xfb\xfa\xcb\x14\xb2\xf1\x3f\xfe\x97\xcf\x9f\xcb\xd6\x86\x41\x77\xba\x4c\xd7\x9f\x5f\xfe\xfe\x33\x0c\x53\xba\xd2\xa2\x9d\x07\x21\x2d\xb5\x81\x3e\x95\xa2\x21\x61\x49\xf3\xd4\xef\xc1\x5f\xea\xf7\x66\xaa\x7e\x5f\x03\x61\x81\xf0\xfc\x64\xf6\xd9\x37\x27\x26\x74\x51\x35\xa1\xce\x8d\xd8\xf9\x0b\x92\x35\xff\xc2\xd4\xed\xcd\x34\xcd\xb9\x09\x1d\xbe\x9a\x90\x7e\xb3\x0e\xf9\xa2\x8f\xc4\x98\x53\x89\xde\x8c\x06\xcb\x4f\x71\x4e\xa5\xc0\xb8\xe4\xc3\xbc\x1d\x0f\x6f\xcc\x57\x3c\xe3\xe9\x78\x90\xf7\xd3\x82\x4c\x99\x7b\xcd\xf5\x1a\x98\x11\xf1\xf0\x64\x86\x04\x9a\x35\x92\xc2\xb3\xd2\xdd\x7c\x4e\x6c\xbc\x38\x2f\x14\x7c\x6d\xef\xf9\x52\x79\xec\x8d\xaf\x49\x4d\xc7\xb9\xac\x26\x5d\xe6\xa3\x29\x4c\x9f\x4f\x77\xf3\x86\x2d\x59\x6d\xd4\x93\xec\xec\x45\xb2\xfe\x89\xde\xf1\x06\x7d\x58\x25\xf4\x8b\xf4\x5c\xca\xbe\xd2\xfd\xe5\x7e\x3e\x5e\x47\xd6\x7e\x4c\x5d\x02\xab\x91\x96\xa9\x2e\xce\x85\x64\xbe\x45\x72\x1b\x87\xee\xc2\x2d\x3f\xa6\x3b\xf8\x4b\x2b\x41\x94\x53\x51\xf9\x66\x9a\x82\x94\x94\xf9\x74\xbf\x5c\x85\x87\xaf\x50\x85\xe9\x04\x13\x58\x79\xbd\xe2\xd1\x43\xed\xd0\x25\x6f\xc7\xa1\xed\xb1\x5e\xd3\xf6\xf5\x98\x0d\x66\xb0\x95\xad\xff\x3d\xef\xca\x70\x71\x23\x91\x55\x76\xde\x72\x94\x19\xbf\xd8\x63\x52\x33\x52\x74\xc5\x93\xbc\xbc\xbd\xa1\x15\x76\x79\x73\x8d\x56\xd5\x1e\x58\x72\xf6\x73\xed\xb4\x9c\x9c\x29\xde\x04\x95\xeb\x3d\xfa\x2f\x06\x74\xe9\x7f\x68\x41\x17\xdf\x3b\x2c\x92\x25\x79\xdd\x27\x1e\x3b\x3f\x66\x93\x41\xfa\xee\x47\xe6\x55\xf5\x7e\x46\x0b\xef\x22\xf0\x52\x1c\x2f\x97\x58\xc8\x3c\x7d\xc7\xbb\x80\x97\x69\x05\x62\xfe\xe7\xee\x96\x97\xaa\xc2\xdc\x6c\xef\x18\x4d\x99\x17\xb9\xbd\xe3\x48\xde\x09\x49\x54\xe2\xbb\x2c\x86\x3f\x1e\x3b\x78\x04\x69\xc9\xf1\x4a\xe2\xe0\x51\xf2\x2b\xcf\x31\x68\xfe\xd9\x42\x1d\xe9\x85\xe4\x87\x69\xf2\x9d\xad\x43\x95\x21\x14\xfc\xaf\xdd\x2d\x2f\xb5\xf2\xd4\x14\x96\xd3\xfc\xaa\x67\xdc\xda\x85\xeb\x34\x8d\x8d\xa7\x96\x30\xd0\xa6\xcb\x12\xd1\xe2\xbd\x26\xeb\x8a\x50\x0f\xb3\x16\xbe\x5d\xe9\xa7\xdf\x09\x65\xca\xfe\x7f\xf7\x92\x0d\x45\x54\x3c\x7e\x26\x5d\x10\x14\x47\x22\x2e\x9e\xa8\xb0\x93\xd4\xce\xa6\x2e\x19\xb2\x11\x75\x12\x3e\x8e\x48\xc4\x62\xe6\x31\x8f\x75\x8b\xff\x58\xac\x0f\x7f\x40\x98\xd2\xb9\xfb\x2c\xa4\x8e\xce\x8d\xe1\x84\x07\x72\x21\x73\xc8\x42\x95\x0f\x31\x40\x03\x24\x35\x0f\x3d\xa6\x48\xa5\x6e\xfc\x69\x6e\xc2\x6d\xd5\x4e\xdc\x19\x9e\x86\x1a\xdd\x84\x9b\x13\xbd\x11\xb8\xa8\x52\x0d\x40\x55\xbc\xb8\xa4\xaa\xf5\x33\xb6\x8e\xe4\xe7\x0d\x93\x9e\x59\x2c\x34\x46\x9d\x42\xd6\x38\x86\xff\x7a\x3d\x06\x39\x96\x69\x6c\x0a\x4b\x71\x35\x96\x8b\xea\xbf\x60\x71\x72\xf5\x7f\x33\x65\x5d\xc1\xff\xde\xf2\x58\x5f\x40\x33\xb3\xa1\xd0\x13\xc4\x56\x8b\x8d\x84\xde\x72\x79\x25\x3d\xf9\xd2\xed\x21\x9b\x9a\x86\x38\x30\x81\x23\x61\x16\x6e\x76\xa5\x7b\x4c\xf9\x4f\xe8\x32\x27\x92\x1c\xb1\x2b\x65\xf4\x4b\x75\x05\x31\xcc\xba\x40\x25\x6d\xde\xe6\xd6\xa8\x68\x4a\x60\xb7\xc2\x12\xa2\xf9\xbf\x2d\x76\x27\x6e\xf7\xba\x76\x9f\x25\xe2\x76\x6f\x6a\x1f\x38\x81\x6a\xba\x0a\xbb\xa3\x4e\xa8\x9a\x0e\xc3\xaa\xe1\x41\xc6\xc9\x92\x78\xb9\x24\x9e\x6e\x5d\x4c\x71\xab\xaf\x17\x0e\x5f\x0b\x05\x92\x08\x1d\xae\xa1\xb6\x62\x73\xbb\x45\xd1\xd6\x5d\x56\x52\xe9\x6a\x7b\x87\xb2\xac\xb4\xd2\xd5\xf6\xa7\x1d\xca\xee\x44\xe3\x98\xed\xfc\x6d\x7d\xad\xbc\xbf\xff\x63\x7d\xab\xec\x91\x3b\xd1\x3f\x61\x15\x61\x51\xfb\x1f\xeb\xab\xa8\x14\x0a\x3b\x5f\x34\x7c\xff\x82\x55\x44\x60\x74\xdd\x6e\xa8\x4d\x6e\x85\x79\xa5\xa6\x40\xa5\x80\x42\x92\xd2\x2d\x0b\x8a\xe2\x96\x85\x45\x55\x89\x57\xdb\x7f\x52\xdd\xb0\x09\xab\xb0\x10\xb5\xed\xef\xa0\x31\x8f\xa0\x19\x67\xd8\x0b\x0f\x40\xca\x80\x61\x88\x5f\x53\x10\x2b\xe0\x2b\x9b\x4e\xcd\xca\xa5\x57\x38\x1d\xd5\xfc\x4b\x78\x8e\x59\x28\x52\xc9\x49\x7b\x66\xeb\xaf\x70\x5c\x04\x2b\x0b\x1f\xa7\x59\xd0\x10\x52\x7f\xf9\x88\x09\x8a\xfc\x9d\x21\x9b\xdb\x74\x5d\xcb\xd6\xb0\x87\x17\x5c\xc3\xd8\xeb\x72\x9c\x39\xc9\x4c\x57\x1c\xcf\xca\x4f\xf6\x68\xba\x07\x7a\x25\x91\xd0\x49\x31\xcc\x8c\x7e\x9f\xcf\x4a\xdc\xda\xc9\xae\x0f\x75\xa5\xfb\xac\x0c\xe0\xbc\x75\xd6\x39\x9c\xba\x84\x4c\xe5\xbd\x73\xb3\xe5\x17\x0f\x9e\x09\xf9\xfc\xc5\x2a\xc1\x27\xdd\xde\x81\x09\xe1\xf3\x17\x2b\x8f\xc5\xb7\x32\xf5\xcd\x4c\x0d\xb5\xf9\x17\xea\x9c\xc6\xa8\x85\x01\x13\x70\x08\x0b\x81\xdc\xde\x51\xca\x6b\x37\x5b\x92\x5f\x9c\x7f\x84\x9d\xc5\x66\xfe\xc5\x21\xde\xd4\x5f\x9f\xe1\xa3\x25\x8e\x9f\x8d\x7a\xd2\x89\x0e\x25\x0a\xd6\x84\xa4\x27\x3a\x14\x89\x83\x67\x12\xa5\x18\xbb\x82\x5b\x7f\xe1\x68\xc7\xa4\x5d\x80\x9c\xe8\x50\xa4\xc7\xb3\x13\xa9\x01\x55\x6c\xb1\xb0\x18\x53\x27\xe2\x07\x5d\x12\x14\xfb\x2c\x2c\x76\x59\x50\x4a\x8a\x7d\xe0\xa3\xd4\x2c\x76\xb7\x77\xe0\x1b\xc2\x26\x55\x29\x29\xe9\xd8\x92\x8a\xed\xb3\xb0\xd4\x65\x29\xae\x96\x99\x1f\x80\x23\x87\xc4\x42\xf2\xf6\x26\xdd\xf3\xf9\x95\x4f\x62\x6a\xab\x6f\xe1\xc3\x8a\x07\x5d\xfa\xe1\x09\xaf\xe6\x42\x3d\xd5\xfd\x85\xf5\xe0\xc3\x88\x80\x38\x66\x31\x8f\x49\x7e\xc3\x3c\x3d\xc9\x49\xd8\x7a\xb0\x98\x52\xc7\x87\xd1\x10\x81\x1c\xcd\x62\xf8\xea\x84\x24\x80\x55\x2b\x84\x3f\x2d\x90\x96\x11\x0e\x0b\xaa\xe4\x3f\xa1\xf6\xf2\x8e\x6f\xce\x1e\x17\xfd\xb6\xff\x6e\xaf\x34\xa9\x18\x6f\xd3\xaf\xe3\xd4\x1e\xfb\xbd\x9f\x06\x0f\x5f\xd3\xe0\xe8\x31\x0d\x4e\x9a\x69\xf0\x54\x1a\xd3\x1b\x1d\x4f\x94\x2d\x1d\x7e\xde\xd4\x56\xc5\xb4\x65\x8d\x73\xfd\xb4\xfe\x4c\xff\x56\x35\xfc\x52\x7f\x7f\xd7\xbf\xf7\x1a\x7e\xac\xbf\xa7\x95\xdc\xbe\x67\xdc\x15\xeb\x1a\xff\xf4\x51\x58\xb3\x07\x71\xf6\xa8\x1d\xbb\xdf\x4c\xc5\xce\x87\x52\xf7\x7a\x76\x33\x05\x22\x38\xcb\x90\xe1\x70\xff\x37\x51\x7e\xb5\x38\x9e\x43\xda\xf1\x96\x91\xfe\x9b\x8c\x5f\x5f\xe1\xcf\xf2\x79\x53\xcb\xf8\xfd\x70\x80\xb6\x97\xfa\xab\x45\xfd\x71\x57\xe8\x5f\xbd\x44\xdf\xfb\xb5\x0b\x77\x1d\x15\x02\x34\x64\xd2\x44\x88\x8f\x90\xf5\xce\xb3\x16\xfd\x9a\xe9\xf4\x7a\xef\x9b\x4e\x31\x7a\x4c\xdf\xac\x37\x85\xbf\x42\x78\x2e\x2b\x55\x03\xd4\x92\xac\x5d\x33\x59\xb3\x5c\x76\xed\x52\xc7\x60\x3d\x7c\x65\x32\xbd\xea\x00\x21\x7b\xbe\x2e\xd2\x8e\x19\x59\x0b\xc7\x4c\x6a\x4e\xc3\xd5\x0b\xe6\x17\x9f\x32\x1d\x7e\x91\xdb\x1e\xac\x11\x2f\xcb\x26\x3c\x35\x6a\x7a\xfe\x98\xbd\x07\x4f\x5d\xab\x41\x57\x94\x5f\xb3\x2a\x71\xa4\x59\xae\xf5\xf1\xe9\xeb\xb8\x26\x5d\xc7\x83\x9d\xa0\xa9\x26\xfc\x3e\xd1\xe6\x2c\xef\x7d\xd8\xf5\xe8\x6a\x49\x83\xcf\x9b\x8b\xb7\xdf\x8f\xa9\xd6\x18\x9e\xfb\xa7\xcf\xc8\xb1\x54\x16\x88\x32\x0b\x05\x1a\x31\x2d\x7f\xf5\xb3\xe3\x45\xf5\xac\xa0\x5e\x9b\x06\xc8\xf0\x16\x32\xea\xa3\x06\x5b\x5a\x09\x11\x65\x81\xc8\xaa\x21\xa2\xce\x3a\xf1\xbf\xe6\xe3\xb7\xf2\xb1\xd4\x51\xfc\xc5\x02\x6b\x37\x60\x61\xb1\x0c\x33\xa8\xfa\x2a\x96\x41\x6a\x88\xbf\x89\x66\xa1\x40\x22\x11\xb3\xb0\x58\xa4\x4e\x13\x95\xf5\x48\x24\x9a\x2c\x28\x16\xe9\x2c\x4a\xf3\x52\x27\x2a\x89\x3f\x9d\xa6\xb8\x6b\x12\xea\x34\x61\x5e\x93\x1c\x2d\xe8\xa9\xc9\xa1\x11\x11\x2b\xd5\x0f\x6b\x89\x26\x7f\x26\x77\x7d\xf6\xd6\x1f\x4c\x5a\xa1\xdd\x81\xc5\x3b\x6c\xb5\xcc\x71\xd4\x0e\x7e\xf5\xbb\xd2\x87\x2f\x8b\xc9\x56\x23\x4e\xec\xc6\xf1\x0c\xe6\x7a\xc8\x7a\x7d\xa1\xcd\xbb\x37\x61\x26\x6b\xb1\x24\x6f\xd7\xbf\xe6\xb2\xae\xb0\x58\x5f\x58\x4e\xff\x6b\xe0\xf4\x4d\x43\x0e\x31\x6b\xf0\x3d\x57\xea\x4c\x63\x48\xd8\x30\xc3\x30\x12\x96\x33\xfa\x1a\x3a\x23\x93\x71\x8a\x19\x7f\x5c\x98\x8c\xdd\x47\x59\x8c\x8a\x07\xe7\x33\xea\xc4\xb5\x6e\xb1\xe8\x8a\xa9\x42\x33\x64\x53\x3a\x9b\x35\xd5\xec\x9a\xb0\x4f\x2d\x8a\x2f\xe0\x71\xe2\xdf\x8a\xa0\x32\x60\xf2\x71\xa4\x9e\x8e\xa0\x40\x6d\x44\x17\x2d\xe8\x36\x05\xd4\x56\x2d\x74\x71\x41\x92\x16\x89\x6b\xa1\xcb\x22\x16\xa1\xbf\x90\x45\xb9\x62\xfa\x58\x2c\xa6\x33\x5a\xda\x47\x71\xb0\xa5\x83\xa8\x4c\x67\xf8\xf4\xa1\xc9\xa7\x68\x40\x58\x42\xf0\xd7\x0b\x8a\x0d\x10\xbc\x39\x11\x12\x7a\x72\xe8\xa2\xb2\xe6\xe1\x2b\x6c\x49\xa0\x1f\x36\x79\xaf\x4b\xca\x5f\x93\xbd\xa4\x54\xb6\xff\x84\xc5\x66\x4a\x99\xf5\x35\x29\x14\x9a\xfc\xe9\x9e\xb4\x20\xf3\x89\x24\xd8\x6d\x43\x97\x49\xe8\xf3\xa1\x71\x1c\x69\x74\x3b\xa6\x15\xa3\x17\x28\xf9\x71\xa5\x50\x08\x2c\xd2\x64\x00\x66\xf0\xcd\x24\xbf\xbf\xcf\x12\x7f\xcf\x25\xbe\xcc\x12\x7f\x87\x74\x97\xf0\xa7\x9a\x4b\x7c\x96\x4b\x7c\x9e\x25\x3e\x83\x74\xe7\xf0\xe7\xe1\x9e\xb2\x26\xea\xd2\xc2\x4a\x39\xa9\xd0\xd9\xd2\x15\x9e\x69\xee\xdc\xc8\xc7\xfa\x73\x8a\x45\x49\xb3\x21\xaf\x87\x69\xb6\xce\xe5\xb5\x38\x62\xeb\x03\x4f\x71\xbf\x70\x1c\xcc\x1e\x49\x6c\x19\x2f\x6c\xfa\xe8\xe9\x06\xcf\x8a\x5e\x24\xfe\x4c\x2a\xd0\x0f\x56\x79\xa8\x32\x8a\x94\xc6\xaa\x8d\xaf\xad\xda\xe8\xed\x71\x4f\xea\x3b\x89\x46\x07\x2d\x06\xb0\x48\x3c\xeb\x50\x2c\xce\x41\xc4\xd6\x5e\x78\x42\xbd\xfb\xbf\x79\x7f\x8f\xd6\xcd\x26\xf8\xfd\x3d\xd6\xe1\x49\x45\xb1\x5a\x39\xd3\xfb\x83\xca\x59\xfe\x3e\xb2\x72\x86\x04\x80\x5c\xe0\x6b\x77\x6b\x5a\x76\x17\xa1\xd9\x75\x0b\x6d\xf2\x6e\x52\x11\xb1\x21\xaf\x72\xe6\x84\xa2\x02\x64\x9c\x9d\x31\x0b\x04\x91\xe9\x80\x84\xd4\x00\x27\x67\xac\x6c\x21\xf8\xd7\x8b\x02\xd7\xee\x06\xbd\x46\x12\x13\x9f\x77\x22\x42\x29\xbb\xc6\x7f\x29\x30\x01\xa0\xeb\x84\x22\xe0\x77\x64\xf0\x28\x19\x3e\x1d\x78\xba\xcf\xe1\x1c\x3e\x4a\xb6\x03\xd0\x9b\xe9\xba\x08\xd1\x3d\xd5\xcd\x54\x84\xcc\xd7\xab\x89\xae\xaf\x2b\x48\xdb\x7b\xc4\x17\x61\x18\xee\x43\x38\x56\xe1\x29\x84\x9b\x2a\xbc\x0f\xe1\x96\x0a\xbf\x42\x38\x51\xe1\x31\x84\xbb\xe2\x01\xc2\x2f\x8f\x92\xfd\xdc\x87\x0d\x3b\x7e\x4e\x40\xba\x3a\xa0\x6c\xa8\x3e\x47\x40\xe7\x81\x76\x76\x35\xad\xac\x8b\xf0\xfd\xdd\xe7\xc7\x95\x75\x11\x41\xe0\xfe\x7e\x5d\x7c\xea\x42\xe8\x7b\x65\x5d\xc4\x10\xb8\xac\xac\x8b\x26\x04\xaa\xf7\xeb\xa2\x0f\x81\xb3\xca\xba\x68\x41\xe0\xbc\xb2\x2e\x12\x08\x3c\xdc\xaf\x8b\x21\x05\x84\xc8\xdc\x71\x45\x44\x0c\x90\x89\x2e\x03\x4c\x22\x66\x80\x47\x34\x19\x60\x11\x7d\x06\x38\x44\x0b\x84\xc7\x8a\x48\x18\xe4\x17\x43\x53\x29\x4e\xa0\x9d\xe5\xfc\x69\x59\x6c\x70\x0a\xb5\x57\xff\x9b\x04\x30\x6b\xd5\xa0\xb6\x6b\xae\x13\xe9\xc9\x7b\x47\x28\x1f\x2b\x85\x82\xf2\xf0\x25\xc4\x71\x5d\x85\xcb\x54\x88\x9f\xb8\x52\x29\xe7\x59\xda\xd7\x57\xb1\x48\xb5\x72\x70\xed\xdc\x25\x31\xb3\xa8\x19\xb2\x1a\x50\x86\x1d\x67\x54\x3b\x74\x49\x9a\x82\xb2\x20\xf7\x5d\x86\xe5\x0d\xbf\xf9\xb1\x54\xdf\xb9\x05\x5b\xed\xab\x91\x26\xdc\x5a\xa3\x4b\xe9\x23\xd2\xfc\xcf\xa8\x69\xe2\x76\x37\x57\x58\x73\xa1\x30\xf8\x56\xc4\x29\x8f\x2e\x4a\xb6\x36\xc2\x15\x3e\x6f\x89\x40\x90\x46\x5b\x4a\xab\xcc\x10\xac\x34\x16\xbf\x34\xcc\x66\x4e\xd0\x20\x1b\xfa\x1e\x68\xee\xee\x87\x9f\xca\x61\x1c\x6e\xb0\xd8\x62\xc6\x6f\x92\x7c\x21\x38\x8b\x30\xfc\x0b\x45\x53\x07\x83\xdc\x6f\x85\xb2\x87\xd6\x2f\xd5\x3c\xc3\x9f\x22\x1d\x13\x87\x83\xc3\x4e\x32\x90\x8d\x24\xec\xe9\xb8\xae\xff\xff\xea\x55\x57\x3a\xef\xb6\xac\xb9\xeb\x43\x89\xd6\x61\x85\x37\xc3\xfb\x8c\xfe\x93\x14\x1b\xda\x8d\x04\x1f\x84\xe3\xc1\x06\x1b\x00\xa8\xdf\x6a\xf8\x61\x9f\x6f\xb0\x61\xfa\x75\xdf\xe8\x37\xbc\x46\xab\x31\x98\xfc\xac\xf7\xc2\x7e\xbd\xd3\x0a\x36\x58\xdb\xd2\xb1\x1b\x2c\x81\x60\x63\x1a\x6e\xb0\x11\xe6\x41\x1f\x6e\x67\x8d\xb8\xde\x6a\xc4\xf5\xc1\x59\x67\x14\xf6\x36\xd8\x2b\x44\x75\x1b\xe1\xdd\x40\xf6\x06\xfb\x49\xdc\x0a\x37\xd8\xd8\xc0\x00\xcf\xcf\x70\x3c\xb8\x03\xc9\x61\x83\x75\xac\x79\xf0\x06\xeb\xe6\x20\x07\x78\x33\xa7\xef\xbb\x26\x1a\xc5\x6d\xd8\x6f\x04\x43\x95\xe0\x12\xf5\x98\xd8\x74\x45\x94\xce\xf5\xa2\xd0\x9d\x75\xa0\xb4\x7d\x48\xa7\xac\xcc\x71\x54\x81\x0a\x03\xec\xbf\xaa\xe4\x83\x5c\x6c\xc3\xef\x24\x0f\x8d\x60\x50\xbf\xf3\x65\x2b\x3c\x91\xfe\x00\x90\x1d\x42\x8a\x46\xd2\x6a\x24\x61\xc9\x6b\x75\xfc\xe6\x06\x3b\x02\x50\xd0\xe8\x77\x5b\x72\xf2\xb3\x91\x4c\xb0\xec\xfe\x79\x72\x89\x78\x36\xd8\xb1\x8a\x8f\x22\xde\x69\x05\x47\x72\x20\x79\x23\x39\x0c\x93\x01\x54\xd4\x49\x1a\xd7\x48\x92\xb0\x77\xd8\xe8\xf9\xad\x90\xf7\x64\xd0\x18\xf6\x4d\x91\xa7\x2b\xd3\xa8\x2b\x4b\x93\xa6\x67\x89\x0d\x3f\xec\x41\xa7\x1e\x4c\x36\xd8\xd9\x93\x14\x9f\x36\x32\xe7\xc7\x8a\xbb\x73\x40\xf4\x4f\x08\xff\x36\x58\xdf\x12\x1b\x5f\x3e\xc3\xbf\x0d\x76\x01\x11\xd0\xf9\x1a\x68\x93\xcf\x10\xfe\x1d\xc1\x83\xac\xa9\x2e\x11\x50\xc7\x8a\xac\x60\x78\x85\x19\xbf\x0d\x76\x85\x51\xbe\xaa\xfd\x81\x25\x36\xfe\xe7\x9f\x7f\x2c\xcb\xb2\x36\xd8\x35\xc4\xfc\xcf\x9f\x7f\xfe\xb9\x91\x33\xe7\xa9\x3b\xee\xeb\xaf\xbc\x4e\xa9\x16\x1a\xa6\x57\xe9\xd9\xb7\xb6\xdd\x38\xb4\xd8\xeb\x2f\xea\x0c\x71\xdc\xde\xfd\x2d\x56\x9d\xfc\x63\x96\x13\x65\xd8\x59\xa2\xef\xb5\xec\x19\xb9\x41\x97\x9d\x4c\x07\x42\xf2\x6e\x23\xe4\x61\x03\x8f\x64\x20\xf9\x76\x00\x12\x5f\x24\x2c\x27\xfa\x1a\x28\x01\x28\xca\xc4\xa3\x58\x04\xb5\xc8\xe5\x7e\xc0\x9a\x2a\x14\x04\xac\xa5\x42\x8f\x15\x96\x88\x68\x2b\x64\x5d\x91\x14\x43\x27\xf9\xda\x2d\x14\xca\x7f\x5b\x48\x45\xe2\xf2\x6e\xe0\xd0\x91\xb9\x3f\x42\x10\x83\x79\x95\xa1\x6f\xaa\x56\xa1\x60\xe2\x5a\x08\x46\x0a\x5b\xa2\x5b\x2a\x3b\xad\x6f\x22\x71\x4a\xa5\xd6\x5c\xee\x96\xca\x3d\x93\xdc\xeb\x1a\x11\x77\x7a\xa5\x8f\x4c\xd8\x8f\x27\xb3\xa7\xe3\x5e\x97\x32\x3c\xe0\xd0\xcc\x33\x9d\x94\xe6\x5e\xce\xe7\x8d\xc4\xe4\xee\x72\x70\x0d\xb9\xcd\x1e\xea\x9f\x28\xe4\x91\x90\xbc\xe2\xa1\x53\x8b\x6e\x23\xac\xdd\x8d\x5d\xd6\x14\x5e\x6d\x38\x51\x4f\xe7\x79\xd5\x33\xdb\x1a\x4c\xc0\x8f\xa6\x2c\x11\x00\x86\x8a\x51\x47\x4b\x5d\x3c\x5a\x6a\xf2\x71\x31\xe1\xcd\x88\x8f\x59\x93\x4f\x54\x70\x42\x9d\x2e\x0f\xe4\xea\xb8\x62\x0b\x62\xc7\x11\xc6\xc6\x3a\x2a\x06\x38\xde\x6e\x27\xfc\x17\xfc\xe9\x06\x78\xc4\x9f\x43\x73\x56\x4f\xd1\x9c\xd5\x55\x11\xcb\x48\x34\x8a\xae\xc6\xa3\xde\x96\x9d\xf0\xbe\x24\x5d\x96\x68\x33\x34\x21\x9e\xea\x7b\xfc\x70\xf0\xfe\xee\xf1\xe4\x95\xce\xf1\xa8\xcf\xc1\x93\x94\xb9\x1c\x76\xca\x12\x43\xcf\x1c\xe1\x94\x01\x9e\x42\x81\xa4\xd1\x5e\x46\x2e\x06\x31\xd1\xc7\xb1\x14\x30\x1c\x0e\xe6\x31\xa4\xf5\xe6\x99\x7a\x63\xab\x62\x3f\xa9\x68\x3c\x5e\x3e\x51\x97\x19\x1e\x7f\xb8\xc4\x8b\x10\xe1\xf1\xf8\x75\x0f\xfe\x28\xde\x6d\x4f\xfd\x3a\x1e\xdf\x7c\xd9\xb3\x40\xfe\x69\x9e\xa0\xf2\xbe\xc7\xab\xd3\x3d\x40\xd0\x6d\x12\xe0\x2d\xad\x4b\x16\x52\x9b\x98\x36\x67\xaa\xcd\x75\x82\x52\x40\x19\x36\x42\x3e\x83\xc5\xca\x7f\xe3\xf5\xcc\x72\x14\x44\x7c\xfe\xa2\x23\xe7\x10\x41\xe9\x0b\x19\x80\x32\x06\x70\xcc\x82\x38\xcb\x1f\x26\x81\x68\x9d\x40\x5d\xeb\xb0\xac\xd5\x59\x48\x97\x39\x50\x75\x78\x3d\x4d\x6b\xf8\x7a\x0a\xcd\xdb\xfd\xb0\xf6\x75\xd1\xab\xba\x9b\x07\x3d\xcd\xd3\x3d\x36\x8f\x62\x32\x48\x51\x4c\x06\x1f\xa2\xc8\xb8\x40\x1c\x9e\xee\xb7\x0b\x1c\x38\x1e\xbf\x68\x14\x0a\x11\xbf\xff\xb3\x50\xb8\x79\x92\x44\xb2\x4f\x00\x62\xea\xf1\x8f\x2f\x3c\x7e\x99\xd0\x37\x9f\x57\x3d\xe5\x05\x4d\x71\x1b\x20\xb7\x00\x55\x0c\x99\xd0\x84\xb2\x00\x08\x5d\x11\x03\xfd\x2c\x00\x42\x11\x72\x5d\x37\x71\xd7\x75\x35\x46\x21\xec\x07\xea\x37\xd0\xbf\xbf\xf4\xaf\xae\x83\x0c\xf5\x59\x9a\x1d\xbb\xf9\x87\x88\x57\xa3\xed\x66\xe8\x73\x35\xa2\x81\x66\x30\xeb\xcd\x08\x8c\x66\x1f\x46\xf3\x12\xef\x9d\x7d\x2c\xa9\xb3\x9f\xe3\x3a\xac\x20\x2c\xac\xac\x86\xa9\x3a\x40\x68\x2e\xf7\x6a\xe8\x1c\x5d\x6a\xdc\xa9\xf6\xf1\x61\xa6\xf1\xf8\xe0\xbe\x50\x80\x14\x77\x01\xf1\x6a\x8d\xc0\x65\x1e\x1f\xde\xf3\x71\xb1\xc9\xc7\x2a\x38\x29\x36\xb1\x1b\x44\x95\x5a\xcf\x65\xfb\x17\xf0\xdf\xe3\x1e\x6e\x08\x9b\xe2\xe2\x07\xa9\xb5\x2d\xe6\xd5\xba\xbe\xeb\xc2\xce\xf0\x53\xc8\xd5\x81\xfa\x51\xa8\xce\xbb\x9b\x90\xd0\xe3\x7d\x0f\xaf\x12\x21\x7d\xb5\x6f\xd2\x33\xc9\xcf\x4e\x08\x44\x42\x4d\xe5\xd4\xcc\x14\x89\xe9\x13\x3a\xbe\xf9\x42\xf5\xe8\xd7\x4d\xa3\xdb\x05\x1b\x05\x5b\xc4\xd4\xb8\x9f\x73\xcf\x60\xea\xda\x51\x75\xad\xbb\x92\xee\x61\x0e\x36\xf6\xc7\xe8\x72\xa3\xc6\x49\xab\x30\x2b\x25\xef\x74\xef\xc7\x93\x3e\x61\xcc\x5c\x0e\x55\x89\xe4\x47\x03\x26\x29\x0b\x20\x5c\x0b\x26\x2e\x93\xea\xf5\xeb\x09\xae\x6e\xd3\x2b\xed\xf9\xd8\x9b\xf7\x7c\x2c\xbc\x5a\xec\xb2\x96\x08\xd5\x42\x98\x98\xc0\xd2\xba\xb6\xd9\xe0\xe3\x22\xdf\x65\x18\x9a\x14\xf9\x6e\xba\x1c\x85\x5f\x7e\x0f\x1f\xf6\xe6\xe1\xc3\x9e\xc1\x94\xc6\x84\x6a\x6c\x37\xf9\xa5\xcf\x12\xf8\xec\x84\xab\x8a\x64\x4d\x1e\x7c\x61\x4d\xde\xaf\x4b\x48\xe6\x93\x26\x97\xfb\xac\xa5\x42\x1e\x86\x42\x90\x0b\xa2\x5c\x28\x31\xdd\xe6\xfa\x94\x35\x75\xb7\x09\xb4\x85\xb4\x26\x54\xab\x12\xbd\xda\xbb\x2b\x8c\x0d\x4d\x13\xe2\x71\xaf\xab\xd5\x5b\x5f\x40\xf0\xd0\xdb\x3c\xf4\x5f\x63\xc4\x0e\x27\x53\xd0\x40\x37\x36\x4e\xe7\x86\xf8\xcc\x42\x49\x05\xbd\xd6\x28\x40\x19\x9a\x53\x03\x7c\xe1\x2b\x37\x36\x4e\x2a\xd7\xf8\xfa\x5d\x87\x57\x49\x95\x64\xeb\x3b\xda\x9a\xbb\xa2\xd1\xab\x7c\xa4\xa4\x7d\xfd\x82\x72\x4a\x7a\x9a\xec\xaf\x35\x92\x35\x8f\xb7\x74\x77\x6e\xd5\x7c\x97\xf7\x3d\x73\xe2\xa4\x07\x45\x5d\x12\x9f\xba\xd4\x99\xfc\xd2\x6f\xd9\xe9\x2c\x93\x1d\x6b\xfe\x57\x2d\x3b\xa6\x90\x0b\x77\xcf\xb2\xcb\xae\x93\x97\xd9\x7c\x97\x05\xd0\x89\x03\x1e\x04\x74\x66\x08\xad\xef\x2c\x54\xe6\x32\x5d\xd9\x78\x49\xab\x2c\xc0\x2a\x6b\xa1\xcb\x6b\xfc\x84\x0a\x53\x9f\x46\x5c\xfb\x37\xda\x58\x24\x42\x20\x27\x14\x21\x0f\x82\x94\xd2\x40\xbb\x0c\x8a\x60\x0e\xca\x5d\x3a\xdc\x3e\xad\xb0\xd8\x97\xf3\xe1\x11\x8b\x18\x1f\xcf\x37\xd5\xaf\xf3\x28\x49\x13\xb6\x1d\x68\x1d\xb2\x36\xf1\xdd\xed\xcf\x7c\xe7\xf3\x17\xad\x76\x10\x03\xa4\x18\xb0\x44\x34\x75\xa8\x2b\xee\xb0\x84\x88\x79\x68\x4a\x0e\x8d\xb7\xf6\x45\xcd\x65\x43\x67\x47\x08\x7f\x8f\xf8\xaa\x38\x26\x05\x16\x38\x14\xfd\x13\x6a\x23\xf4\x54\x01\x21\x72\x28\xf6\x2f\x96\x0e\xaf\xd5\x30\x1e\x99\xf3\xeb\xb0\x36\x72\xd9\x81\xe8\xd6\x46\x6e\xf6\x6a\xfb\x40\xc5\x1e\x89\x9b\x1f\xc4\x63\x53\x18\x2c\x31\x8b\xd8\x01\xbf\x3e\xa7\xec\xca\x40\xbd\x7d\xd6\x44\xe8\xcd\x39\x65\x15\x51\xb9\x94\x04\xbd\x6d\x5f\x12\x9f\x1d\x80\x28\xe5\xf4\x51\xfd\x29\xf8\x62\xef\xb0\xcd\x86\x0d\x09\xa6\xfc\xea\x0b\xd9\x7f\x26\x07\x7c\xc2\xa6\x7c\x72\x55\x9b\xb8\xf8\xab\x1e\xb8\x53\x16\x7e\xb1\x25\x1b\xf6\xec\x0a\xeb\x6b\xe7\xca\xa9\x36\x49\xdf\x52\x0a\x7f\x33\xca\x2e\xfd\x45\xfb\xe5\x7d\x0b\x55\xf9\x58\x35\x56\x29\xa6\xaf\xd2\x0e\x98\xdc\x57\x76\xd1\x6d\x64\xc1\x93\x76\xcc\x64\xe2\xd7\x3b\xca\xfb\xf2\xed\x2d\x81\xb5\x0a\x17\xaf\x73\xfb\x67\x83\x1c\xf1\xf3\x05\x0d\x2a\xad\x25\x3d\xb6\x2d\xf6\x69\x62\x13\xaf\x74\xc4\xcf\x61\x1b\xb5\xd5\x62\xad\x30\x89\x07\x75\xfb\x88\xc7\x75\x86\x65\xc8\xd9\x8c\xb2\xef\xbe\x3d\x64\x17\xbe\xbd\x7f\xc1\xfa\x9e\x7d\xc4\x07\xe1\x1e\x94\x6d\x5f\xb3\x53\xcf\xb6\x66\xec\xf5\x15\x88\xf0\x32\xba\x3c\xa4\xab\xf9\x5b\xba\xae\x7e\x47\x17\x90\x55\x2c\xd3\xad\xc4\x50\x74\xb5\x9a\xa2\xfe\x09\x50\x74\xa5\x28\xf2\x32\x8a\x26\xaf\x50\xfc\xf8\x55\xda\x43\xd6\x48\x82\x70\x6c\x4f\x61\xb6\x9b\xd1\xd4\x0f\x70\x3f\xb7\x84\xdc\x3d\x2d\x18\x3a\x34\xcb\x01\x76\xeb\x62\x04\x2b\x82\x0e\x25\xe2\x67\x83\xc4\x79\xc2\xd3\xc4\x37\x3f\x88\xcf\x24\xb4\x49\xc0\x3c\x16\xe0\x71\xaa\x86\x79\xfb\x2c\x54\xb0\xd4\xd4\xdb\x77\x3b\x66\x8f\x65\x5b\xf2\xe0\x1f\x56\x9d\xa8\xdf\xeb\x73\xbb\x89\x4d\xc1\x6e\xce\xed\x96\x0a\x6d\xde\xd9\x11\x93\x3f\xed\x68\x36\xa3\x4e\xfb\x99\x24\x2b\x2b\x6d\x4d\xf2\x2a\x8a\xca\x93\x19\x88\xf6\xf1\x33\x49\x7e\x97\x3a\xae\x49\xde\xff\xee\x72\xff\x9f\x52\x5c\xf3\x74\x50\xeb\xfd\x77\x45\xcd\x75\xac\xaf\x09\x5e\xad\x74\xa1\xaf\x27\xbc\xdb\xe9\x92\x9c\x6b\xe6\xbe\x7a\x10\x3f\x14\x16\x1b\x39\x23\xf1\x6a\x29\x4b\x87\x2c\x66\x5d\x14\xc6\xd6\x89\x25\x84\x48\xf0\x46\x75\xc4\x07\xdf\x0b\x85\xf2\xee\xd7\x21\x75\x28\x7c\xec\x91\x61\xb1\xc8\xfa\x85\x42\xf8\x4c\xba\xac\x4f\xa9\x3d\xc4\xdb\x2b\x5d\x0a\xc3\x22\xfb\x94\xb5\x21\xfa\x5f\x79\x55\xe8\xfb\x20\xde\x28\x74\x6c\x99\x1e\xea\xc8\x0c\xf6\x09\x81\x28\x56\x0c\xbe\xbf\xbf\x93\x91\x48\x1b\x65\x6d\x54\xab\x8e\x73\xaf\xc3\x5f\xad\x7c\xaf\xa0\x6f\x16\xce\x33\x50\x54\xcd\x72\xf9\xe6\x9d\xb0\xd8\x75\x83\x84\x94\xcb\x9f\xc2\xca\xdf\xc8\x81\x64\x81\x53\x52\x6c\xae\xd4\x9a\x22\xd4\x92\x45\x2d\x2e\x95\x5d\x90\x2c\x6a\x71\x11\x03\xc9\x5e\x50\x4b\xb0\x09\xd4\x84\x51\xda\x55\x6e\x92\x9c\x26\xaf\x84\xd2\x18\x00\x51\x17\xc0\x4d\xfe\x58\x66\xad\xbd\xa0\xd6\xd2\x19\x6a\x13\xb7\xb8\xab\x9c\x2e\x51\x6d\x2d\x06\xd3\x24\x94\xce\xa4\xf8\x99\xf6\x6b\x3c\xbd\x0d\xc4\x7a\xd9\x89\xc4\xdb\xcc\xc9\xce\x8b\x3f\x20\x53\xc2\x4f\x22\x48\xab\xd6\xdf\x77\x4b\x2d\xb4\x11\xd7\xe4\x9b\x77\x74\x1b\x36\xf9\xa4\x85\x86\x20\x55\x64\x93\xcb\x9f\x74\xdb\x67\x89\xba\x79\x4d\x8a\x1c\xb6\x5a\xea\xa3\x8b\x1f\x7d\x91\x7c\x6d\xf2\xeb\xf3\xf7\xf7\xee\xd7\x26\xbf\x39\x57\xef\x54\xfa\x4e\x54\x6b\x02\x1b\xe2\x6d\x62\x23\x2a\xe8\xff\x09\x74\xfd\x2e\x1b\x7c\xb7\xfb\x66\xa8\xbe\xb5\xe4\xa4\x33\x1c\xd8\x11\x40\xe7\xfc\x2d\xff\x5c\xb5\x62\xdd\x3f\xaf\xb4\x1c\xfc\xa6\xe7\x22\xe8\x3c\xda\x53\x55\x75\x52\x22\x92\x5f\x9f\x6f\x79\x45\x09\xbc\x31\xaf\x33\x18\x74\xda\x18\x53\x24\x92\xdf\x9c\x6f\xf9\x45\x09\xec\xc1\x94\x13\xc3\xb8\x88\xa1\x73\xa6\xc8\xf3\x56\x67\x40\xa8\x18\x74\xba\xa6\x2b\x59\xb0\xa0\xa1\xaf\x0e\x63\x08\x1d\xaa\x30\x60\x16\x9d\xd9\x39\xb0\x57\xab\x34\x88\x4f\x4b\x65\x17\x6b\x14\xe2\xb7\x77\x66\x78\xd1\xba\xb2\xa0\x10\x0b\xc2\xee\x91\xea\x3b\x89\x00\x0d\x23\xec\xbd\x69\xf2\xb5\x81\x4b\x44\x18\xaa\x02\xe7\x62\x74\x99\xc5\x32\x12\x8c\x49\x56\x95\x09\x9b\x94\xc8\x5c\x99\x4b\x28\x15\x5a\x5b\x1a\x3e\xa5\x56\xbf\x2a\xc5\x78\xe1\x25\x82\x9a\xef\xa6\xe6\xcd\x7d\x55\xab\x3e\xdf\xbc\x2b\x69\x2b\x6c\xcc\xa2\x90\x30\x12\x44\x16\xfd\x2d\x12\xee\x95\xed\x88\xd2\xed\x1d\x67\xbe\x79\x22\x6c\x9b\x52\xb4\x8a\x9e\x4f\x5e\x9e\x20\x4f\x55\x19\x06\xfa\xfb\xee\x02\x41\x9e\x08\x6a\x9e\xeb\x78\xc6\x4c\xa8\x6a\x4c\x8f\xcb\x9f\xab\x08\xf2\x3e\x26\xa8\x14\x99\x6e\xb1\x92\xa6\xcc\x32\x9a\xa6\x83\x85\xaa\xe4\x79\x2c\xfb\xcf\xc4\x67\x21\x0c\x68\x65\x82\xa9\x12\xa2\xd5\x1b\x5a\xf2\x01\x69\x58\x28\x2c\xe1\xcd\x94\x3f\x0c\x0e\x02\x78\xf9\x63\x39\x65\x99\x6e\x61\x6e\x35\x70\x7f\x9c\x48\xd4\x66\x5d\xb9\xa4\x9a\xbe\x0f\xb9\x8a\xc4\x83\x9f\xf7\x77\x8b\x66\x1e\xdb\x8a\x04\x2d\xb9\x22\xd0\x8c\x02\xa8\x5e\x48\x5c\xf1\x31\xf1\x6c\xb6\x7a\x36\x56\xd5\xa9\x2d\xde\x63\x1f\x41\xfc\x30\x1d\x29\x23\xf8\xd0\xc9\x3c\x33\x43\xa9\x54\xd0\x70\x88\x18\xdf\x57\x65\xae\x15\x82\x95\xba\xde\x9f\x9a\xe6\xba\xd4\xa3\x8b\x15\xeb\x63\x9d\x03\x1f\xca\x1e\xbc\x26\xde\x07\xe4\xb3\x59\xce\xac\xc2\xaf\xa7\x39\x43\x76\x8f\x0d\x22\x57\xda\x17\x07\x31\x41\x08\x6f\x46\x95\xe3\x00\x63\xa3\x54\xbb\x82\x46\x0f\x2f\xd0\xd5\x05\x08\x80\x7f\x7e\x28\xb3\xed\x18\x99\x6d\x66\xb8\x0b\x72\x92\xf6\x78\xee\xc1\x8e\x52\xaa\xf5\x84\xc7\xef\xc8\xd9\x31\x7b\xf8\x69\xde\x7c\xff\x2d\x2a\x30\xf4\x5f\x9f\x32\xcf\x23\x0f\xcf\x52\x58\xdf\x10\x7c\x14\xb3\x32\x75\x1e\xe7\x0e\xd6\x35\xca\xd9\x23\x19\x5b\xec\xf1\x17\x75\x2e\x25\x19\x5b\x73\x6f\xdf\x74\x79\x57\x3c\x68\x88\xe8\x42\x7b\xb1\xe2\xcf\x81\x38\x57\xea\xe5\xb5\xe3\x17\x97\xfd\x1c\xa5\x0e\xae\xf8\x0f\xbf\x20\xd6\xd3\x64\x59\x86\xd4\xad\x2e\x3f\xaa\x8b\x34\x94\x39\x66\x81\x2f\xd8\x90\x88\xb9\xaf\xe5\x78\xde\xdc\x15\xa6\x60\x7e\x47\x8e\x9f\xf0\x35\xdc\x42\x9a\xde\x7d\x3e\xcd\xc9\x93\x64\xfc\x4b\x4e\x20\xc9\xe9\x34\xfc\x52\x37\xa0\x52\x5d\x91\x5a\xdf\x34\xb0\x76\xee\x12\xc9\xca\x34\x73\x9e\x77\x15\xc6\x72\xd0\x18\x85\x6b\xe8\x6c\xaa\xbf\x26\x7b\xe1\x5a\x43\x9b\xaa\x89\x3a\xbd\x35\xb9\xd6\x6d\x84\x6b\xe8\xe7\x88\x6f\x50\x67\x6c\xf1\xb0\xf6\xdd\x77\xd3\xc7\x55\x33\x80\xc1\xfe\x6e\xf2\xf7\x0a\xfd\xb5\xeb\xfe\xcc\xf9\xa4\xe2\xc7\xab\xe2\x95\x29\x01\x9d\xe2\xf5\xef\x0f\x9e\x15\x5c\xa5\xfe\x96\x7f\xa9\x6b\xe8\x75\x71\x5c\xcf\x58\xf8\x61\x08\x5c\x53\x37\x75\x6b\x75\x39\x0a\xd7\xe4\x5a\xd4\xe8\xf5\x07\x6b\xca\x93\xf2\x5a\x27\x5a\x1b\x4c\xba\xe1\x5a\x1f\x87\x90\x76\x11\xe8\x39\xc6\x74\xb1\xde\xae\x7b\x7c\xdf\xa8\x2e\x1f\x46\xb5\x08\x37\x88\xa1\x12\xf3\xd4\xed\x8c\x51\x52\x2d\xf3\x2f\xe5\xbf\xb7\x3c\xde\x6d\x2b\x65\xac\x63\x17\x0d\x9d\x6f\x91\x72\xa9\xbc\x8d\x91\xb4\x14\x83\xac\x21\x64\xdd\xf8\xcc\x38\x69\x11\xe3\xad\xe1\xd4\x2d\x86\x0c\x47\x27\x7e\x60\x21\xf3\x29\x60\x8f\xa7\x12\x44\x10\x2e\xc6\x94\xda\x81\x10\xd7\xfd\x15\xd8\xb2\xb4\x18\x2e\x85\x4b\xf8\xa2\xda\xa9\x5b\x8a\xf3\x25\x22\xb6\xdb\xa3\x3d\xb2\xba\x64\x9c\x0d\x35\x27\x5b\xc4\x57\x16\xaf\x71\x0e\x8b\xa9\x26\x39\x25\x23\xc4\x29\x32\x5e\x20\x04\xcb\xf8\x0d\x5b\x98\x42\x3d\x45\xf3\x85\xc5\x52\xfb\x7d\x8a\x03\xf4\x31\xa1\xd6\x6e\x35\x67\x36\x45\xac\x84\xa9\x60\x7b\x47\x69\xbc\x1d\xbb\x44\xa5\x2e\xa2\x49\x5d\xa5\xb9\x6e\xc0\x40\x91\xca\xb9\xbd\x43\x1d\x0f\x86\x6f\x81\x34\xb7\x04\xff\x9b\xf9\x22\xde\xde\x65\x61\x49\xf8\x10\x85\x67\x21\xcf\x81\xb9\xca\x79\xf3\x03\x3b\xde\xf2\xb2\x01\xc7\x82\xc0\x6e\xe6\x01\x33\x16\xab\x54\x18\x33\x73\x3c\xf1\xd6\x6d\x84\xf6\x9b\x8f\xd7\x9d\xb6\xde\x25\xe3\xae\x1e\x52\xe1\x41\x08\xfc\x06\x01\x3b\x9a\xda\x3e\x0b\x1b\xb6\x97\x8d\xf9\xbd\x5a\x8b\xc5\xae\x5d\x8b\x59\xcb\x9d\xb1\x43\x09\xcb\x2b\x2a\x3b\xfc\x0b\x5a\x2c\x3c\x45\x58\xcb\x11\x64\xd0\x38\xf7\x4f\xa9\x25\x53\x27\x9a\xef\xd3\x8e\xc7\x0f\xf5\xbb\xa0\xc3\x88\x37\xba\x04\xbe\xa9\x1d\x09\xf1\xe3\x28\x0f\x7e\xd0\x28\xd0\xb3\x8b\x38\x3b\x2d\x14\xaa\xd9\x8d\xdb\x3e\xd3\x8f\xca\x0f\x23\x7e\x26\xe7\x4c\x2d\x3c\x3e\x2d\x99\x3c\xbf\x62\xa1\x78\x9b\xb1\x48\x3c\x80\x50\x06\xb3\x6b\xd7\x62\xd7\xf8\xd8\xac\x76\xe2\x6a\x0b\x81\x1e\x7f\x85\x21\xe9\xf1\xc6\xb3\x5a\xcf\x9d\x80\xff\xf0\xf7\x48\x20\x24\x74\x00\x16\x09\x8f\xda\x4d\x11\x88\xc8\x09\x79\xd2\xe9\xb5\x65\x6b\xf1\x55\x61\xa0\xce\x0a\xf0\x54\x41\xb2\x43\xe5\x74\x6f\x5d\xf8\xe8\x47\x86\x3a\x21\x7f\xf5\x16\xb3\x34\x73\x59\xe2\x55\x59\x1a\xcf\x8b\x59\xa2\x5c\x16\x6f\x39\x8b\x9e\xdd\xc2\x6c\xdd\x85\x9a\xcc\xd9\x6b\xbe\x62\xbe\xf0\x6a\x20\x24\xf0\x7d\x14\x63\xa5\x90\xaa\x1e\x61\x83\xad\xd7\xd8\x9a\xeb\xa0\xae\x0a\x7a\xfa\xd9\x61\x0f\x9e\x5d\x0b\xa4\x9b\xbe\x4b\xc7\x4b\xdb\x2c\x81\x2c\xe6\x93\xf8\xe2\xe1\x96\x04\x39\xcf\xa3\x7e\xed\xc2\xfd\x16\xee\xe1\x35\x08\x16\x59\x44\x15\x3e\x33\x3c\x4b\x92\x01\x1c\x87\x27\x86\x70\xf8\xe2\xf4\x9c\x35\xeb\xfd\xd3\x82\x15\xdc\x2b\x54\xf4\xff\xe5\xb1\x50\x78\xe9\x25\x69\xa4\xc2\xfc\x68\xca\x62\x11\xa0\x7f\xa9\xa6\xf8\xf1\x8b\xa4\x0d\x3f\x7d\x92\xec\x9a\x52\xd6\x12\xaa\x9f\x34\x59\x99\xb2\x44\x44\x1d\x1d\x3f\x7e\x92\xec\x4d\x7a\xb6\xcf\x5b\xcd\xec\x51\xac\xcf\xbb\xed\x19\x6c\xa9\x36\x0d\x9e\x8e\xc5\x2a\xe7\x92\xf9\xfc\x39\xd8\xbb\xb1\x3b\xe7\xb0\xc5\x4a\x23\xfb\x4f\x92\x5d\x9d\x4b\x36\x8e\x29\x1b\x8a\x5b\x03\x1e\x3e\x49\x56\xde\xfe\x6b\xc7\x82\x1d\xf2\xb9\x81\x1e\x3d\x49\xca\xa6\xe2\xa7\xf9\x9e\x3c\x49\xe6\x75\x25\x65\x07\x59\xce\x17\x0b\xc4\x0f\x0c\xd7\x0e\x9e\xa4\x2b\x76\x1c\x9f\xb7\xa0\x91\x7c\xfe\x3d\x81\x5f\x3c\x56\x63\x57\xac\xe2\x20\x49\xe4\x48\x48\xbd\x52\x9f\xc2\x4a\x6d\x95\x29\x3b\x12\x7e\x36\x93\x6c\x91\x72\xf1\x68\x0e\x06\xf3\x81\xc5\x8e\x5c\xbb\x76\xc4\x2c\x97\x5d\x89\xda\x7a\x99\xad\x5b\x2e\xab\x88\x9a\xc1\x15\x9d\x30\xbe\x4b\x99\xf9\x0c\x4f\x58\x99\xba\xd4\x26\x47\xa2\xa6\xb3\xa8\xf4\x65\x97\x3a\x3e\x4a\x1e\x66\x0e\x09\x61\xbe\x88\x60\xfa\x50\x0d\xa4\x66\x26\x15\x0e\x02\x9c\x47\xdc\x99\x93\x29\x1f\x7f\xaa\xae\x10\xf1\x03\xe1\xf3\x56\x4d\xe2\x81\x62\x59\x08\x8f\x4e\x2c\x12\xb0\x3e\x0b\x72\x77\x1e\xa1\x4a\x53\x8a\x5d\xc7\xc4\xb2\x90\x42\x38\xd4\xe1\xd9\x8c\xe1\xdb\xa7\x7c\x09\x66\x74\xf8\xe6\xfc\x56\x96\xca\xa8\x6d\x10\x64\x20\x0b\x00\x4e\x19\x2d\x47\x79\x7b\x13\x8b\x78\x0c\xe6\x37\xbb\xfc\x55\x16\x0a\xc4\x2b\x14\x82\x3d\x62\xa0\x2c\xa0\x4c\x17\x0f\x61\x6a\x7b\x30\x91\xbc\x4d\xf6\xed\x6a\xc8\x82\xc8\xae\x86\x33\x96\x4b\x4b\xed\x00\x5f\x5f\x2c\x25\x48\x11\xa0\x56\x2d\xbb\x13\xf3\xd5\x62\x8e\x45\xb0\xcd\xa1\x2b\xe0\x88\x6c\x04\xb6\x54\x07\x75\x1e\x9b\x77\xca\x78\x5c\xb7\xdf\x9e\x63\x3b\x60\xb7\x91\x1d\xb0\xc7\x91\x5d\x81\x76\x7b\x82\xdf\xb2\xcb\xc6\x65\xfb\xf4\x80\x4d\xca\xf6\xc9\x01\x3b\xf3\xe0\xef\x25\xfe\x1d\x0d\xec\x75\x8b\xdd\x1e\xdb\xeb\x16\xec\xc2\xd5\x61\x5e\xc8\x6e\xed\x68\x46\xed\xff\xa0\x54\x9c\xa9\x82\xc5\x9c\xc8\xd0\x7d\x5a\xbd\xac\x2d\xf5\xd8\x0d\x1b\xec\xd3\x85\x14\x6d\x59\xbb\x70\xd9\x99\x14\x16\xbb\x07\xe1\xf2\x5e\x7e\xbd\x90\x4e\xb1\x78\x2f\xb3\xe3\xfb\xd3\x10\x92\xdd\x4b\x97\x5d\x28\xab\x72\xec\xc6\x17\xa7\xd8\xbb\x4e\x43\x08\x04\x01\x4b\x42\x71\x84\x49\xfa\xbe\xb8\xc2\x40\x18\x08\x8b\xbd\x46\xc2\x62\xbd\xa6\xb0\x58\xbb\x2e\x2c\xa7\x5d\xff\x1a\x3b\xed\x7a\xb1\x48\x7b\xcd\xa2\x08\x40\x56\x6d\xd7\xd9\xbd\x2c\x96\xe9\xfb\xbb\xd2\x9b\xce\xd2\x15\x8b\xed\xba\xea\x31\xe3\x68\x29\x2d\xfb\xf1\x22\x02\x7e\x2c\x53\x18\xdb\xcc\x12\x59\x94\xd5\x9f\xd3\x68\x8b\xb2\xeb\x67\xf1\x1a\x6d\xf7\x9a\x4c\xc6\xe2\xfa\xb9\x38\xc6\x70\x35\x16\x32\x2e\x5d\x3f\x7f\x13\x43\xa7\x1a\xef\xbd\x46\x45\x31\x8e\xec\x30\x80\x1f\xb5\x5a\xf5\xc4\xe0\x49\x16\xcf\x24\x9b\x76\xd3\x81\x1e\xf7\x8a\x57\x4f\x92\x49\x3e\xf4\x6a\xed\xfa\xff\xe2\xef\x85\xeb\x52\x48\xf3\xe3\x17\x99\x76\x29\x6b\x4c\xf4\xb4\x37\xed\xb2\x0a\xd4\x05\x65\xc1\x21\x6c\x71\xd4\x34\x13\xf7\x8a\x77\x6d\x89\x44\xf6\xb2\xc9\x27\xee\x15\x2f\x9f\x24\x3b\xa0\xc5\x24\x64\x8f\x71\x36\x57\xc6\xbd\xe2\xf7\x27\xc9\x12\xd8\xc4\x66\xf3\x59\x2d\xee\x15\x2b\x4f\x92\xf5\x4e\x5c\xdc\x45\x8c\x23\xf1\x84\x65\x9e\x49\xd6\xae\xb3\xeb\x67\x26\x63\x36\x8e\xd8\x8f\x17\x56\x7f\x66\xd5\x98\x85\xec\xc6\x67\xa7\x21\xab\xf7\xd8\xa7\xe0\x90\x75\xd9\x63\x0c\xf4\x35\x26\x6c\xd0\x81\x69\xa4\x05\xdd\x6b\x1c\x51\xa7\x1a\x67\xa5\xc4\xbd\xe2\xc5\x93\x64\x7d\x10\xad\xaa\xf1\xfb\xfb\x88\x52\xe7\x8e\x6c\x46\x80\x73\xda\xad\x9d\x40\xcf\x61\xd5\x98\x3a\xf7\x52\x88\x0b\x59\x2a\x17\x0a\x11\x39\x93\xec\x42\x52\xe7\x4c\x16\x45\x79\x66\x7d\x0d\x61\xd0\x5d\x3f\x8b\x72\x29\x0c\x74\x13\x94\x81\xdc\x30\x80\x36\xd4\xfb\xdd\x30\xc0\x26\x9b\x42\x0f\x53\x7c\x94\xca\xf0\x7f\x81\x8f\x75\x2b\xe5\xe3\x00\xea\xc9\x62\x5d\x86\x5e\x72\xf0\x34\x16\xc8\x5c\x1f\x15\x0a\x77\xe4\x1a\x12\x37\x81\xbe\x52\x19\xfd\x88\x3a\xf7\x38\x7a\xfc\xc0\xbe\xf1\x61\x4a\x3c\x0d\xd9\x63\xc5\xbe\x80\xdd\x6f\x46\xfa\x2d\xb9\x98\x37\x04\xac\x75\xba\xb4\x01\x76\x4f\xdb\x5e\xef\x9c\xdb\x99\xfb\x98\x7d\x65\x3b\xfd\xa6\x9e\xc1\x82\xc8\x31\x36\xda\x73\xb0\xe2\xd9\x7e\x11\xd2\x17\xaf\x43\x73\x32\x7f\x9d\x5b\x78\x9f\x16\x4f\xe6\x91\xab\x84\x75\x59\x9f\x0d\xd9\x88\x4d\xd9\x01\xc3\x95\x47\x8d\x88\x5b\x58\x9a\x61\x82\xbe\xe5\x3f\xfc\xf7\xf7\xf2\x57\x31\xa4\x43\xa1\x8c\x9d\xdd\x81\x14\x76\x2f\xc2\x52\xe0\xc4\x63\x72\xc7\x22\xea\xdc\xf1\x20\x12\xb1\xf3\x28\xc9\x1d\x3b\x82\xcf\x6e\x28\xae\x9c\x3b\x75\xcd\x2c\xe0\x53\xcb\x5a\x4e\xb5\x4b\xee\x58\x93\x3a\xdf\xe1\xd7\x83\xa4\x0f\xb1\xa8\x38\x77\x7c\x38\x10\xd6\x57\xe1\xef\x81\x30\xc0\x87\x6d\xe2\x2b\xd9\xc1\xb9\xe3\xb7\xa2\xe5\x78\xa2\xbb\x35\x74\x86\x5b\xa2\xef\xdc\xf1\xe6\x89\xf0\x9c\x3b\x5e\x9d\x8a\xa1\x73\xc7\x7f\x05\xe2\xf3\x17\x6b\x2b\x28\x4a\x7e\xfa\x37\x14\xad\xbe\x43\xf5\x2d\x61\xa7\x8f\xfe\xf9\x3e\x7f\xb1\x4a\x90\x9a\x99\x2c\x25\x48\xcb\x30\x83\xaf\x1c\x0a\xfe\x38\xdf\x22\x10\x5b\xfa\xc7\xa2\xdb\xe5\xbf\x2d\x27\x4a\x81\xdd\x0c\x78\xc7\x27\xfb\x7a\x0b\x77\xfc\x79\xeb\x9e\x6e\x97\xad\xe2\x51\xe8\x34\xc5\xb5\x31\xa5\x3f\xcd\x5a\xb2\x29\x20\x79\xde\x0c\xfe\xc9\x29\x00\x6b\xd1\xbe\x9b\x87\xde\xd4\xed\xa6\x88\xf3\x90\xd7\x03\x09\x20\x68\xd7\x3b\xdd\xae\xfe\x58\x55\x5e\x23\x22\xeb\x2d\x63\x57\xf7\x0e\xea\x59\x8a\x03\x14\x00\x37\x7d\x72\x87\xfa\x0f\x9f\x0e\x68\xad\xe7\x3a\x07\xe2\x00\xc5\xc1\x3b\x1e\x55\xcc\x53\x7f\x98\x04\x9c\x3b\xbe\xf9\x22\xca\x42\xdc\x03\x32\xcc\x02\xbb\x7c\x80\xd2\x3b\x3e\xbc\x17\xc7\x97\x24\x61\x7a\xcb\x20\xb7\x77\xd8\xc1\xf6\x0e\xa5\xec\x8e\x0f\xee\xc5\xba\xa5\xd6\xe9\x7b\xd1\x2d\x1d\x38\x07\xa2\x5f\x82\xb2\xa1\x04\x27\x75\x98\x2f\x6b\x3d\x77\xfb\x9e\xc9\xda\xbe\xbb\x7d\x40\x9d\xd8\xc0\x77\xb6\xef\xd9\x0e\x40\x5a\xe2\xe6\x9e\x10\xbf\x18\xd1\xed\x9d\x22\x54\x32\x2b\xb3\x32\x75\x1a\xf6\xdb\x54\xdc\x64\x57\x85\xe8\x28\x57\x52\xa7\x29\xca\xce\x91\xda\xdf\xe1\x2c\x7e\x25\x2c\xe7\xea\xeb\x54\xdd\x56\x5e\xa9\x3e\xdb\x96\x62\x5a\xbb\x72\x9d\x8a\x68\xf1\xf1\x56\x5b\xf2\x71\xb1\xc5\x27\x10\x98\x38\x6d\x29\x2a\x5b\x95\x62\xb9\x44\x00\xae\x22\x21\x02\x63\xa9\x63\x7d\x6b\xcb\x3d\xf5\xec\xcf\x26\x6d\x29\xd4\x7b\xa9\xb6\xa4\x20\x06\x55\x4a\x6d\xc9\x2a\xc5\xb6\x74\xf3\x06\xed\x2b\xef\xef\xd6\x37\x58\x70\xe9\xdb\x54\xbd\x17\x54\x56\x7f\x1b\xb3\xa6\x38\x22\x4d\x86\x51\xb3\xa9\x68\xce\x1a\x11\xe1\x7f\x7e\x9b\x52\x6d\x95\x01\xeb\xae\x25\x5a\xda\x1a\x54\xab\xd6\x9e\xba\xa4\x34\x85\x7d\xcc\xf5\x25\x0c\xd2\x18\x2d\xe7\xdb\x6f\x12\x2b\xa2\x05\xec\xc7\xf8\x28\xb5\xe4\xb3\x9d\x2d\xa8\x2b\xea\x4c\x85\xe5\x40\x7f\x81\xba\x38\x12\x96\x73\xf4\x55\xaa\xba\x38\xa2\x6f\x57\xe2\xd3\xc1\x33\xa9\xd7\xc6\x81\x4b\x64\xed\xc8\xe5\x13\x86\x3f\x63\x9a\x43\xd0\x88\xc8\xd5\x37\x11\xbf\xbf\x5b\x42\x5c\xd1\x37\x29\xd6\xcb\x39\x06\xd4\x46\xfa\x0a\xfa\x9a\xb1\x72\x71\xc5\xa6\x74\x26\xc5\xb4\xd4\xfc\x0a\x18\x66\x52\xc8\xbd\x96\x12\xef\xef\x41\x96\x32\x7d\x85\x8f\xb7\xee\x19\xd4\xec\x81\x31\x22\x21\xee\x0b\x05\xa2\x7b\x0e\xc3\xce\x75\x05\x0d\xcc\xee\x4d\xff\x2a\xdd\x29\xb5\x9c\xed\x1d\xa6\x82\xfb\x2e\xf4\x36\x6d\x55\x5f\xe5\x2c\x3b\x77\xbc\x13\x45\xfd\x70\x90\xeb\x38\x30\x7b\x51\xac\xbf\x11\x75\x46\x10\x11\x21\x08\xe6\x88\x48\x1c\x41\x17\xbe\xb9\x27\x3e\xc2\x00\x78\x56\x57\xc0\x11\x75\xfa\x2a\xb5\xc7\x86\x10\x71\x3d\xcd\xa5\x06\x18\x00\x27\x03\x05\xec\x53\xe7\x16\x77\xff\x3b\x7f\x59\xdf\x04\xcc\x0f\x85\xc2\x3f\xd6\x57\x98\xd6\x60\xe9\xe9\xc3\x74\xf8\x8f\xf5\x0d\x22\xf6\x48\x1f\x26\x97\x7f\x2c\xd6\x07\x0a\x34\x7f\x09\x1f\x17\xbb\x2c\xe1\x13\x4a\x6d\x95\x00\xe7\x21\x4c\x02\x94\x52\xb6\xf3\x97\xf5\x15\xd0\x41\xfe\x6e\x20\x76\xfe\x02\x04\x67\xf5\x1c\x82\x52\x0e\x41\x37\xc0\xb2\x55\x12\xe0\x8a\xb2\xbe\x9e\x6a\x3f\xe1\x5c\xfb\xea\xb1\x3b\x5e\xf5\x04\xd6\xc4\xe1\x40\x28\xf2\xf9\xee\xd7\xc0\xb9\xe3\xc9\x6b\xfa\xfd\x2d\xc4\xd1\x8f\x6a\x5d\x10\x41\xef\xf8\xc3\xa5\xd0\x28\xcc\xb6\xef\x2e\x5b\xb0\x26\x39\x95\x57\x5f\x4c\x2d\xf4\xe0\xeb\x40\x25\xf8\x45\xd1\x0b\x8b\x53\x0b\xcd\x91\xa1\xab\x81\x50\xbc\x1d\xb6\x6d\x09\xf3\x1c\xf3\x3b\xc9\x20\x4c\x06\xb6\x9f\xbf\x73\xaa\x3e\xc9\x65\x0f\x57\x57\xa8\x6a\xa1\xb7\x16\xb1\x0e\x06\x01\x6b\x2a\x09\x13\x77\x87\xad\x6c\x8b\xb6\xaf\xb7\x68\xb0\x73\x4b\xf4\x5c\xfd\x79\x8b\x44\xc5\x98\x96\xd4\x18\x26\x9f\xb7\xe0\x0b\x60\x9f\xb7\x62\x4a\x61\xfb\x07\x1b\x2e\x7c\xa2\x92\xde\xc2\x5a\x4e\xff\x6b\x08\x22\x30\x8e\xa1\xbe\x79\xf6\x87\xa0\x3e\x6e\x54\x86\x46\xbd\x77\x84\xc7\xd9\x5f\xc5\xb0\xd6\xf5\x5d\x3a\x12\x21\x6f\xd5\x30\xec\x66\xbb\x97\xa9\x26\x3c\x6c\x38\x23\x31\xad\x4d\xf1\x5a\x09\xf6\x1d\x68\x87\xee\x40\x8f\x28\x12\x15\x47\xbc\x79\x02\xfd\x98\xff\xb5\xbb\x15\xc1\x3e\x4e\xc7\xc4\xc5\x11\xaf\x4e\x4d\x4c\x4c\xd9\x95\x20\x23\xde\x0d\x8a\x23\xfe\x2b\x00\xf0\x14\x26\x84\x2b\xf5\x44\xbd\x22\x2e\x60\x72\x38\x60\x71\xe9\x88\x6e\x27\x5b\x9f\xbf\x58\xec\x96\xdd\x39\x3b\x5b\x95\xaf\x90\xa9\x34\xc2\x9e\x79\x2b\xe0\xb7\x58\x61\x77\x02\xa1\x15\x56\xfe\xdb\xfa\x36\xdd\xbb\xd3\xa3\xfd\x0e\xbe\xa9\x7d\xab\x69\xb8\xc5\x4f\x6a\xdf\x89\x5b\xa1\xce\x36\xef\x57\x99\x68\x3f\xba\x24\x4d\x18\x36\x12\xe4\x07\xd8\xdf\x54\x56\xa5\xba\x27\x75\x2e\xfb\x8d\x84\xec\x3f\x13\x22\x4b\x9f\x9a\x7c\x42\xb7\x8f\x40\x78\x2a\xe3\xa6\xa8\x2d\x3f\xca\xf5\xe3\xbc\x34\x97\x75\x31\xe7\x50\xbc\x05\xff\xd8\xf7\xe4\xe8\x99\x5c\xc1\x0a\x4d\xf9\x84\x4d\xae\x6c\x7d\xd9\x8b\xf0\x5b\x03\xc7\xaf\x3b\xfd\x45\x99\xdc\xb7\x87\x4a\x57\x70\xdf\x9e\x5a\x64\xc4\x5a\x94\xf9\xff\xd8\xa3\x5a\x27\x70\xf5\x26\x67\x84\xba\x0e\x8e\xaa\x28\x32\xe4\x57\x5f\x44\x45\xdd\xab\x0f\x61\x28\x22\xa0\x2d\x99\xaf\x21\xb3\x59\x24\x3c\x9c\xc8\x4a\x51\x09\x55\x1e\x9c\x50\xdc\x3e\xa9\xd5\xec\xa4\x45\x72\x4e\xfe\x94\x0b\x40\xed\xf0\x2f\xa2\x0c\x96\x6e\xb6\xc3\x02\xd6\xa5\x8e\xb7\x2a\xcf\xa9\x5b\x8c\xd2\x4c\xca\xff\xd7\xa6\xcf\xca\xe8\x2a\x44\x3d\xbb\x6a\x28\xe7\x39\x68\x79\xe6\x8a\x7b\x5d\x91\xbf\x29\xd9\x4f\x1f\x42\x37\x1f\x16\x2e\x3a\xba\xe7\x74\xf6\x48\xf6\x2d\xd6\x7c\xa0\xce\x3e\x9e\xa3\xb7\x06\xab\xda\x43\xab\xa8\xfd\x1a\x12\x59\x93\x3d\x97\xce\x74\xea\x6a\xb0\xe8\x19\x49\x1f\x85\xa3\x05\xf9\xd7\x90\x1a\xb9\x08\xcd\xe5\x2b\xd1\xa8\x6d\xd9\xda\x82\x7e\xd9\x4d\x6f\x88\x94\xf4\x33\x30\x96\xc0\xef\x27\xb2\x28\xd9\xdb\xd0\xb7\x7d\x16\x3d\xab\xb5\x66\x4e\xd1\xea\xc0\x5a\xd4\x36\xd9\x5f\x64\x0e\x62\x62\x73\xb5\x87\xce\xe2\x7b\x27\xa8\xb5\xa0\x94\xe2\x5a\x52\xdc\xdf\x92\x68\x95\xfb\x72\x4c\x0c\xfb\x33\x0f\x37\x42\x4d\x3a\xd3\x99\xfc\x96\x54\x98\x46\xea\x86\x65\xf6\x48\x0e\x2c\xb6\xff\x40\x9d\x03\xac\x8e\x83\x0f\x9e\xd0\xf7\xff\xd4\x9f\x33\x9d\xb0\xb5\xa8\x1c\x98\x5e\x9d\x55\xa6\x2e\xf1\xd8\xfc\x53\xf6\x43\xcb\x78\x9d\x6a\x09\xc9\x5b\xef\xef\xfa\x26\xcd\x87\x2f\xc7\xaf\x79\xae\x80\x3f\x08\x4f\x4f\xec\x3c\x77\xf6\x49\x15\xd6\xff\xf3\x83\x87\xa2\x6f\x15\xcf\x96\x6c\xd4\x54\x36\x9d\xfa\x21\x8f\xc3\xc1\x71\x32\xe8\x35\xc2\x3e\xa1\xec\x74\x60\xfb\x6c\xbf\x69\x7b\xfc\x57\x7d\x86\x87\x74\xbf\xea\xfc\x4e\xf2\xea\xab\x5e\xdd\xc3\x42\xa1\xfa\x4a\x34\x98\x19\x1c\x9d\x3a\x09\x69\xad\x33\x75\x69\xee\x34\x48\xbd\xab\x48\xf8\xcb\x3d\x0b\x45\x24\xc4\xb4\xfe\xfe\x1e\x09\x31\x8e\x59\x0c\x9f\xdf\x63\xf3\xd9\x14\x1a\x4f\xa1\x60\x7d\x0d\xf8\xa8\xa9\xde\x99\x9c\x5f\x13\xaf\xf6\x38\x76\x29\x6b\x8a\xf2\xd7\x08\x55\x48\x9a\xac\x25\x2c\xa7\x85\x5f\x4e\xb1\xa8\x55\x00\x13\x11\xd5\x5a\x2e\xeb\x8a\x9c\x26\x1f\x4b\x44\x52\xd4\x0a\x7e\xdd\x2d\xd2\x2d\x95\xa9\xb3\x89\x6b\x50\x82\xea\xb6\x85\xc2\x7a\xb3\x50\x90\xff\x97\xba\xe0\x49\xe8\x2c\x2c\x14\x9a\x85\x82\x97\xc1\x22\x16\xd5\x22\x35\x9d\xab\x4e\xd5\xcf\x9f\xe5\x78\xda\x9e\x89\xb9\x0c\xf0\xf5\x43\x19\xdd\x1e\x35\x8f\x11\xaf\xe8\xe7\xd5\x0b\xe9\xff\xfa\xee\xcc\xc4\xba\x33\x6d\x25\x2b\x9c\x43\xca\x42\x44\xab\x9f\x21\x66\xc7\x26\x91\xe8\x13\xb4\x72\xb2\x5e\xfe\xa0\x12\x3e\x41\x2d\x64\x7a\x7b\x89\x7e\x43\xe8\xb5\x64\x2d\x71\xe9\x5b\x53\x34\xdf\xdf\xd7\x2d\x27\xa5\xd9\xdc\x91\x0d\x5e\xf5\x51\x5a\x57\x24\xec\x56\xf8\xec\x0e\x19\xe9\xe6\x70\xdd\xd5\x86\x13\x57\x25\xba\x17\x7a\xa3\xa7\x25\xda\x7b\x5e\x0f\x48\xb5\x4d\x34\x94\xfb\x1e\xa1\x6c\x1c\x32\xfe\x17\xec\x93\xf9\x61\x3d\x8d\xf9\x11\x16\x79\x99\x3a\x87\x16\xb9\x65\x5d\xca\xe3\x57\xf1\xa6\xce\x9c\xee\x67\xb3\x59\xce\xa7\x92\xdf\x92\x85\x82\xff\x7f\x69\x5b\xe9\xa7\x3c\x3e\x4c\x72\x78\x1d\xcd\xbd\x2e\x6a\xea\x40\x83\xc5\xd8\x66\xb9\x76\xf4\xe8\x4c\x57\x2c\x90\x1f\x09\x8f\x47\x0d\xea\xf3\xa8\x21\x22\x27\x24\x1e\xf4\xe6\x2e\x0e\x36\xfc\x3a\x94\x00\x38\xad\xc3\x8e\x3f\x7f\x21\xa1\x8a\x9f\xbb\x90\xe8\x36\x42\xfd\x16\xca\xcb\xd5\x4c\xa8\x6a\xc6\x17\x87\x5a\x3e\xf2\xf9\x65\x22\xde\x66\x8e\x27\x20\xe4\x68\xe5\xeb\xc5\xfb\x80\x30\x5f\x5b\x43\x69\x7f\xe1\xbb\x78\xf5\xfd\x79\x46\x1d\x8f\x5f\xab\xf4\xdf\x9b\x24\x00\x19\x88\x8f\x8b\x58\x0c\x1f\x33\xf5\x3d\xd1\xdf\x13\x48\xfc\x2b\x10\x21\xff\x15\x38\x1e\x48\x8a\x21\xef\x06\xf8\x12\x45\x84\x7c\xf3\xc5\x21\xbe\xf0\xf9\x45\x03\xed\x56\xdf\xff\xb9\x47\xa4\xf0\xb9\x1f\x14\x7d\x5d\xfa\x95\xb7\xbd\xc3\x20\x49\x30\x0f\x43\xed\xd1\x30\x9f\x48\x8a\x00\x33\x32\x5f\x04\x98\x1a\x56\x21\x2f\x97\xc2\xf1\xb8\x1f\x08\x59\x84\xd2\x83\x40\xf8\xc5\xc0\x91\xe2\xe8\x19\xa6\x0a\xdc\x4b\x3b\xbe\xfa\x52\x3b\x6b\xc7\x03\x69\xf8\x5a\x69\xc6\x2b\x81\x22\x55\x63\xc7\x87\x19\x67\xf5\x7c\xac\x3f\x17\xab\x46\x43\xc8\xab\x9e\x13\xa1\x35\xe9\xaa\x87\xcf\xa8\xf0\x8e\xdc\x4b\xdf\x31\x88\x5e\x42\xa2\x7c\x35\xf3\xcf\x54\x45\x5f\xd7\x05\xfc\x51\x1d\x58\x81\x7e\x05\xe2\x53\xa4\xd4\xe7\xf1\x91\x84\x88\xd4\xc3\x11\x7c\x41\x21\xe0\x4f\x51\x7f\x06\xf0\x19\xc0\xa7\xe6\xaf\x6a\x58\x64\x7e\x0a\x50\x5c\xaa\x0c\x86\xd1\x6a\x9e\xd7\xaa\x66\xa8\xaa\x78\x52\x21\xc3\x74\x35\xcf\xf7\x42\x4a\xbc\x8a\x1b\x88\x90\x1f\x0e\x1c\x0f\xa4\xfb\x90\x27\xaf\xce\xfc\xe3\x2b\x0f\xe4\xfa\x5e\x42\x42\xfe\x70\x99\x67\xfd\xa4\x25\x05\x24\xdb\x93\xb6\xcf\xc2\xd5\xab\xd1\x75\x93\x48\x43\x27\x64\x60\x12\x78\xf7\xb6\xe4\x5c\x6f\x80\x0a\x98\x87\x81\x74\xe6\xf1\xce\xbe\x08\x89\xc7\x4a\x65\x28\x2e\xac\xe0\x47\x79\xee\xd9\xc1\xe6\xf2\x4d\x5f\xb7\x11\x3a\x30\xf1\x1f\x4d\xd1\xce\xb5\x1a\x61\xc6\x86\x03\xf4\x73\x3c\x66\xd7\xe3\x8b\x79\xfc\xa2\x01\x7b\x30\x68\xf3\x8b\x86\x79\xdc\x20\xfa\x09\x91\xf9\xc6\xde\xa1\x6c\xd5\x38\x92\x0b\xe3\x48\xea\x71\x84\x6f\x27\x84\x34\x0f\x28\x80\x2a\x08\x6d\xbe\x08\xc9\x37\x5f\xd0\xe1\x57\xc6\x6b\x71\x87\xef\x16\xf3\x9d\x1f\xbb\xa7\x1a\x21\x12\x7b\xa9\x1a\x24\x92\x05\xf9\x4e\xcf\x16\x3b\x7d\x6e\x78\xe4\x3b\x38\x5b\xec\xfe\x41\x3e\x96\xe6\x94\x73\xe4\xe2\x2c\x75\x68\x11\x8f\x9f\x0e\x18\x9e\x70\x4d\x1e\x88\xe4\x3f\x13\x14\x8c\xf0\x9c\x5d\xd9\x42\x09\x78\xdf\x13\xbe\xe3\xf1\x7d\x74\x32\xd1\x0f\xf9\x41\x1f\x7b\xda\x7e\x93\x41\x5c\xde\x6a\x97\xf7\x7f\x4b\xbb\x36\x53\x44\x00\x45\x74\xaf\x64\x56\x46\x80\x4f\x30\x3e\xc4\x1d\x22\xee\x4c\xc2\xa9\xa3\x79\xfd\xb8\xba\x64\x14\xe3\x2a\x20\x4a\x48\xad\x57\x59\x5c\xa5\xce\x83\xa8\x6b\x87\x26\xed\x58\xce\x9b\xc9\x7c\xe0\xf7\x97\x62\xd1\xb4\x37\xac\xa0\x39\xb7\x2a\x73\x5a\x43\x90\xe5\xc7\xfd\x8a\x2c\x4a\xa0\xcc\x65\x5b\x92\x36\x21\xeb\x51\x79\x49\xac\xca\x65\x49\xa5\x6e\x34\xcf\x54\x59\x3d\xc0\x20\xa1\x7e\xde\x8b\xa6\x9f\x46\xab\x93\x35\xaa\x3a\xc9\x87\x0f\xff\x0f\x3b\xbd\x10\xdf\xf2\x6f\xb0\xb8\x3a\xf7\xf8\x1f\xad\x76\xe3\x5f\xfd\xf8\xbf\xaa\x9f\xf8\x9f\xb7\x65\x1c\xfe\xba\x3d\x17\x0a\xd2\x6c\x3a\xe3\xf1\x5c\xf2\xfa\xbe\x4b\x9d\xc3\xd7\x39\xd8\xcb\x24\x45\x11\x0c\xdb\x5d\x91\x05\x35\x34\x6f\x55\xa0\x6a\xac\x0a\x98\x22\x11\x7e\x89\x9a\xa8\xf8\x22\x3a\x92\x7e\xa8\x93\x3d\x77\x73\xc9\x32\xe3\x03\x55\x6d\x7c\x40\x05\xfa\xe1\x60\x1f\x6b\xc7\x94\xfb\x9c\x65\x9a\x8b\xe8\xd4\x75\x44\x2f\x6c\x77\x46\xe1\x5c\x9c\xff\x0c\xd5\x78\x37\x94\xac\x3d\x57\x53\x6d\x64\xb3\x9d\xd5\x54\x7b\xa9\xa6\xda\xb9\x9a\xca\x27\x37\x35\x95\x87\x61\x4d\xb5\x17\xc8\x6e\x1b\xb2\xdb\x0b\x64\xb7\x0d\xd9\x9f\xda\xcb\x74\xb7\x73\x74\xff\x1c\x4a\xd6\xcf\xe8\xee\xab\xa8\x4e\xbb\x3b\x1c\x84\x47\x8d\x28\x12\x0a\xf2\x6b\x04\x2c\x61\x98\xf5\x33\x96\xfa\x4b\x2c\xf5\x73\x2c\xe5\x93\x1b\x96\xf2\x30\x64\xa9\xbf\xc0\x52\xdf\xb0\xd4\x5f\x60\xa9\x6f\x58\xea\x2f\x73\xd4\xcf\x71\xb4\xba\x43\x1f\x0c\x3d\xaf\x65\xba\x74\x6f\xae\xa1\x7a\x48\x52\x2f\xe3\xaa\xb7\xc4\x55\x2f\xc7\x55\x3e\xb9\xe1\x2a\x0f\x43\xae\x7a\x0b\x5c\xf5\x0c\x57\xbd\x05\xae\x7a\x86\xab\xde\x32\x57\xbd\x7f\xe5\xea\x50\x26\x41\x2b\xec\x0f\x1a\x7e\x53\xb3\x36\xc8\x58\xfb\x24\x5f\xc8\x00\x09\x1b\x64\xbc\x0d\x96\x78\x1b\xe4\x78\xcb\x27\x37\xbc\xe5\x61\xc8\xdb\x60\x81\xb7\x81\xe1\x6d\xb0\xc0\xdb\xc0\xf0\x36\x58\xe6\x6d\xf0\xaf\xbc\x9d\x35\xfa\x83\x4e\xdc\x93\xed\x0d\xf6\x3a\xd7\x5e\xaf\x48\xd0\x6b\xc6\xd3\xeb\x12\x4f\xaf\x39\x9e\xf2\xc9\x0d\x4f\x79\x18\xf2\xf4\xba\xc0\xd3\xab\xe1\xe9\x75\x81\xa7\x57\xc3\xd3\xeb\x32\x4f\xaf\x39\x9e\x7e\x0d\x25\x1b\x66\x64\x0f\x97\xc6\xd5\x30\x37\xae\x30\xcc\x86\x19\x47\xc3\x25\x8e\x86\x39\x8e\xf2\xc9\x0d\x47\x79\x18\x72\xf4\x69\xb8\xc0\xd2\xd0\xb0\x34\x5c\x60\x69\x68\x58\x1a\x2e\xb3\x34\xfc\xf7\x2e\xd8\x69\x7b\x1d\xdd\xf9\x46\x73\xed\x34\x42\x92\x46\x19\x57\xa3\x25\xae\x46\x39\xae\xf2\xc9\x0d\x57\x79\x18\x72\x35\x5a\x60\x6a\x64\x98\x1a\x2d\x30\x35\x32\x4c\x8d\x96\x99\x1a\xe5\x98\xba\x1f\x4a\xd6\x9d\x23\xbb\x8b\x65\x76\x33\xb2\xbb\x4b\x64\x77\x73\x64\xe7\x93\x1b\xb2\xf3\x30\x24\xbb\xbb\x40\x76\xd7\x90\xdd\x5d\x20\xbb\x6b\xc8\xee\x2e\x93\xdd\xcd\x91\xfd\x30\x94\xac\x9e\x1b\xea\xf5\xa5\xfe\x55\xcf\xf5\x2f\x0c\xb3\x7a\xc6\x52\x7d\x89\xa5\x7a\x8e\xa5\x7c\x72\xc3\x52\x1e\x86\x2c\xd5\x17\x58\xaa\x1b\x96\xea\x0b\x2c\xd5\x0d\x4b\xf5\x65\x96\xea\x39\x96\xaa\x43\xc9\x5e\x32\x96\x5e\x96\x38\x7a\xc9\x71\x84\x61\xf6\x92\x71\xf4\xb2\xc4\xd1\x4b\x8e\xa3\x7c\x72\xc3\x51\x1e\x86\x1c\xbd\x2c\x70\xf4\x62\x38\x7a\x59\xe0\xe8\xc5\x70\xf4\xb2\xcc\xd1\xcb\xbf\x0e\x98\xbb\xae\xec\x35\x5b\x8d\xc4\x2c\x46\x9d\xb9\xde\xd7\x41\xaa\x3a\x19\x63\x9d\x25\xc6\x3a\x86\xb1\x4f\xe3\xf1\x5c\x7a\xc3\x59\x1e\x86\x9c\x75\x16\x38\xeb\x18\xce\x3a\x0b\x9c\x75\x0c\x67\x9d\x65\xce\x3a\xff\xce\xd9\x20\xec\x76\xc3\x60\xbf\x17\x4a\xcd\x5b\x32\xc7\x5b\x82\x74\x25\x19\x6f\xc9\x12\x6f\x49\xae\xd1\xf2\xc9\x0d\x6b\x79\x18\xb2\x96\x2c\xb0\x96\x18\xd6\x92\x05\xd6\x12\xc3\x5a\xb2\xcc\x5a\xf2\xaf\xac\xdd\xca\x24\x0e\xef\xc2\x56\xa8\xac\xff\x8c\xe7\xf8\x1a\x23\x51\xe3\x8c\xaf\xb1\x29\x1b\xb3\x09\xf5\xd9\xbe\xd1\xf0\xfe\x3c\xfc\xd7\x48\xfe\x3f\x6a\x0b\x2b\x87\x83\xfc\x31\x97\xfb\x0f\xf6\x47\xf9\x0f\xf6\xd6\x95\x7e\x53\xc6\x61\xdf\x5e\xab\xfd\xe1\x77\x7a\x21\xea\xc5\xff\xc1\xd6\xfe\x88\xe5\x30\x0e\x21\x10\x84\x91\x1c\xb6\x10\x16\x75\x7a\x6d\x89\xa1\x61\x03\xfe\x0e\xa4\xd7\x0a\xff\x70\xa1\xa8\x79\x62\xf1\x27\x20\x6f\x1b\xed\x4e\x30\x6c\x85\x1b\xf6\xc6\x5c\xd9\x1b\x6c\x63\x14\xf6\xfa\x10\xb2\x37\xca\xdc\xda\x60\x1b\x30\x8b\x74\x12\x20\x7e\xc3\xae\x6d\x0c\x1b\x08\xd2\xe4\x6c\xb0\x0d\x4d\xc4\x06\xdb\x88\x95\xbd\xb3\x0d\x45\xcb\xc6\x8a\xc2\x97\x6b\x6a\x4d\xe4\x1c\x0e\xad\xad\xa8\x2c\x67\xe6\x34\xa2\x35\xb2\x02\x4f\xdf\xef\x35\xba\x83\xfe\x5a\xa1\xb0\xf6\x71\x6c\x6d\xa1\x6a\x5d\xba\xf6\x46\xf2\x25\xe2\xd9\xb1\xc6\x24\xfe\x1b\x44\x4e\xd4\xe9\xad\xe1\xf9\x6f\x63\x4d\xac\x59\xce\x5a\x63\xed\xab\xc1\xc4\xd5\x1b\x5f\x67\xad\x51\x2c\xd2\xb5\xb7\x7f\xab\x04\x62\xca\x68\x00\xbf\x33\x4a\xa8\xf3\x5f\x10\xb2\x26\xf0\xed\x85\xce\xf8\xe9\xff\x0b\x00\x00\xff\xff\xb7\x00\xe1\x6b\x79\xa1\x0a\x00") - -func pagesAssetsJsGchartsJsBytes() ([]byte, error) { - return bindataRead( - _pagesAssetsJsGchartsJs, - "pages/assets/js/gcharts.js", - ) -} - -func pagesAssetsJsGchartsJs() (*asset, error) { - bytes, err := pagesAssetsJsGchartsJsBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "pages/assets/js/gcharts.js", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _pagesAssetsJsGoogleJsapiJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x3c\x7b\x77\x9b\xb8\xf2\xff\xe7\x53\x38\x3a\xfd\x39\x68\x4d\x30\xe0\xc4\x71\x4c\xb5\x39\x7d\xa4\xdd\x6e\x1f\xd9\x6d\xd2\xde\x7b\x97\x65\x73\x84\x10\x36\x0d\x06\x2f\xe0\x3c\x36\xe6\xbb\xff\x8e\x24\x30\x60\xcb\x49\x93\xb8\xfb\xc7\x36\x20\xcd\x8c\xe6\x3d\xa3\xc1\xf7\x06\xbe\xb2\x7d\x15\x44\x5e\x7c\x65\xef\x8c\xe2\x78\x14\xd2\x0f\x67\xe7\x3b\x0e\xbc\x95\x2c\x22\x25\xa2\x57\xad\xd7\x38\xa3\x0a\x84\xda\x88\x66\x67\xc1\x84\x2a\xd0\xca\x03\xbf\xb5\x4c\x65\xc7\x81\xad\xdb\xad\xe5\xb5\x16\x6a\xdd\xe6\xd6\x56\xbe\x25\xc5\xb0\x77\xc2\x18\x7b\x34\x91\xe3\x56\xbb\x05\x15\xb1\xa1\x89\x55\xed\x94\x26\x97\x01\xa1\x2f\x71\x4a\x5b\xa8\xb5\x33\xce\xb2\x69\x3a\xec\x76\xaf\xae\xae\xb4\x02\x90\xc4\x93\xee\xcc\x4b\x77\x96\x31\xdf\xf2\xb7\x17\xd3\x20\x5d\x46\xc6\xdf\xf0\x75\x81\x8d\xa7\x41\xca\x29\xb0\xb5\x15\x12\x2f\xa6\xc1\x7b\x7a\xc3\x50\xa3\x38\x4b\x67\xd3\x69\x18\x50\x6f\x05\xea\x3d\xbd\xf9\x4a\x93\xc0\x0f\xa8\xd7\x42\xad\x2c\x99\xd1\x65\x88\x0f\x31\xf6\xde\xe0\x20\x9c\x25\x8c\x0f\x1f\x87\xe9\x0a\xc8\x29\x25\x62\x57\x86\x2f\x44\xf9\x10\x13\x1c\x72\x41\x9a\xd2\xaf\x30\xf4\x2a\x0c\x68\x94\x31\xf0\x2c\x88\xa3\x16\x6a\x45\xb3\x30\x5c\x91\xcd\xf3\x02\xb6\x8d\xc3\xdf\x70\x82\x27\x29\xa3\xbb\x63\x6d\x29\xfe\x2c\x22\x6c\x5d\x81\xad\xdb\x4b\x9c\xb4\x3c\x44\x23\x12\x7b\xf4\xcb\xe7\x77\xaf\xe2\xc9\x34\x8e\x68\x94\xa9\x23\x24\xcc\xa8\x8e\x91\x17\x93\xd9\x84\x46\x99\x55\x22\xb6\x42\x05\xab\x2e\xbc\x4d\x68\x36\x4b\xa2\x16\xe6\x07\x22\x37\x67\xc4\x26\x08\x24\x74\x1a\x62\x42\x81\x1a\x21\x40\xc6\x38\x79\x91\x01\xf5\x6f\x04\x0a\xb7\x03\x6a\x82\x40\x2a\x9e\xe3\x59\x06\xd4\x0c\x81\xe9\x2c\x1d\x03\x75\x86\x40\x10\x79\xf4\xfa\xc4\x07\xea\x25\x02\x35\xbf\x00\xea\x15\x02\x11\x66\xc8\xd7\x08\x84\x34\x1a\x65\x63\xa0\xde\x20\x30\x4d\xe2\x2c\xce\x6e\xa6\x14\xa8\xff\x20\x20\xe4\x06\xea\x0b\x04\xd2\x99\x9b\x66\x49\x10\x8d\x80\xfa\x12\x81\x6f\x71\x10\x01\xf5\x15\x02\x59\xfc\x21\xbe\xa2\xc9\x2b\x46\xb3\x12\xe7\xb5\x82\x2b\x61\x5a\x41\xd4\x3a\x3e\x3a\xb6\xb1\x33\x64\xff\xa0\x5d\x63\x1b\x45\xf8\x32\x18\xe1\x2c\x4e\xb4\x59\x4a\x93\x17\x23\x1a\x65\xf6\x2b\x47\x81\xf6\xcc\x51\x30\xe4\x72\x1f\xa3\xdb\xbc\xa2\xf8\x46\x28\x88\x6d\x10\x54\xe9\xfb\x36\xb7\x88\xb6\xe0\x19\xb9\xf6\x8d\x63\x61\xed\x4b\xf9\x50\xed\xb0\x70\x25\xf9\xd6\x82\xde\x5b\x46\x4f\x25\x82\x22\x45\x2f\x92\x04\xdf\xd8\x37\x8e\x96\x86\x01\xa1\x1a\xc1\x61\xa8\xe0\x64\xc4\xad\x94\xaa\x26\x9c\xcf\x6d\xc7\x2a\x04\xaa\x9d\xbe\xb0\x17\x9e\x4e\xc3\x1b\xc5\x55\x99\x73\x45\x04\x67\xca\x9d\x04\x21\x84\x79\xbe\x60\xe5\x17\xa6\x2c\x8c\x8e\x93\x24\x4e\x14\x0c\x2d\xac\x65\xf1\x29\x57\x35\x5a\x3d\x2a\x1b\x07\xa9\x36\xa1\x69\x8a\x47\x34\x2f\x39\xc2\x15\xb1\x77\x42\x4f\x7e\x9c\x28\x42\x57\x58\x4b\xa7\x61\x90\x29\xdd\x3f\xb5\x2e\x54\x29\x1a\xa9\x3e\xd2\x2d\xff\x39\xb1\xaf\x9d\x5d\xc3\xf2\x3b\x1d\x48\x6d\x62\xfb\x8e\x33\x9f\x2b\xc5\x13\xba\xcd\x19\x68\xf1\x66\xb1\xbf\x02\xdc\x71\x90\x5b\x9d\xf5\x6b\xa9\x43\x6c\xbb\x0e\x22\x39\x4b\xa0\xef\x21\x3b\xf6\x3d\x7a\x67\xb1\xb7\x0f\xfc\xed\x03\xfa\xd5\x12\x81\x64\xff\xe3\x68\x97\xcc\xae\xef\x15\xd0\x0c\x2d\xa6\x20\x17\x93\x8b\x14\xa8\x35\x50\x68\x31\xfc\x8f\xe8\x36\x57\x3f\x31\xb4\x6a\x8b\x5e\xe2\x50\x4a\x88\x6d\xd4\x69\xb0\x77\x68\x6d\x85\x8a\x58\x52\x17\x2a\x2d\x78\x5f\x48\x43\x99\x19\xd8\x71\xee\x42\x67\x40\x03\x90\xc9\x61\x3e\x77\xed\x6b\x07\x66\xe3\x24\xbe\x6a\xfd\xa2\x80\x8f\xb1\x37\x0b\xe9\xb0\xb5\x03\x3a\xb8\x03\x76\x5a\x51\x9c\xb5\xfc\x78\x16\x79\xdb\x00\x5a\x60\x16\x79\xd4\x0f\x22\xea\x81\x6d\xc4\x7c\x2f\xf6\x5b\xae\x6d\x38\xed\xb6\xe2\x23\xd7\xd6\x1d\x95\x68\x53\x4c\x2e\xf0\x88\xa6\xa8\x7a\x64\x1e\x56\xdb\xb1\x33\x47\x61\x58\x50\x04\x83\x8f\xb0\x45\x10\x99\xcf\x6f\x73\xc6\x10\x8b\xa9\x34\xc3\x11\x61\xc4\xb9\xab\xcd\xe7\xb8\xdd\x06\xb1\xfb\x8d\x92\x0c\xa0\xf2\x5c\xb6\x56\x0a\x58\x5b\xb5\x5f\x3a\xf2\x0d\x2d\xa1\x97\x34\x49\x29\x2c\xfd\xe7\x02\xe9\xd6\xc5\x73\x6c\x5f\x3b\xd6\x05\xf3\x14\x05\xdb\x17\x0e\xb4\x68\x98\x52\xae\x30\xce\x0c\xfa\x68\x83\x21\xe8\xf8\x0e\xbc\x25\xed\xf6\x36\xd1\x42\x1c\x8d\x66\x78\x44\xdb\x6d\xa2\x85\x3c\x03\xb7\xdb\x4a\xb5\x8c\xca\x55\x68\x91\x76\x1b\x14\x69\x65\xc1\x05\x59\x38\x43\xbb\xad\x5c\xa0\xea\x55\xbd\xd0\x26\x38\x23\x63\xa5\xfb\x97\x6d\xff\xe9\xbc\xd8\xfd\x03\xef\xfe\xa3\xef\x1e\x6a\xe7\x4e\xe7\x59\x17\x72\xe8\x11\x37\xb8\x72\x01\xd5\x0a\x0f\x6d\x5d\x40\xce\x29\xa3\xd6\x6e\xb3\xcc\xbe\x5d\x23\x0b\xdb\xed\x6d\xac\xa5\x8a\x0b\xa5\x16\xf6\x99\x85\x27\xb3\x34\x6b\xb9\xb4\xc5\x9d\xcc\x6b\xb9\xd4\x8f\x13\xda\x7a\x7d\xf2\xb1\x15\x47\xac\x52\x31\xc3\x5f\x1c\x61\x6d\xa2\x30\xa7\x3a\x1a\xd9\x89\xa3\xd4\x18\xd7\xe1\x50\xe4\x74\xbe\x3d\x2c\xe1\xe6\xf3\xda\x6a\xce\x95\xba\x96\x83\x86\x8f\xe5\x70\xc9\xf1\x4b\x8f\xe7\x2f\x70\x51\xb7\xce\x50\xdd\xdd\xe1\xad\x7b\xa4\xe8\x08\x9d\xd8\xd7\xcc\x1b\x7f\x53\x46\x2a\x10\xc8\xbf\x43\x75\xfb\xb5\x02\x26\x69\x40\x01\x53\xc7\x6b\x05\xa4\xd8\xc7\x49\x50\xbe\x5d\xc4\xd1\xdf\x33\x9a\xc4\x09\x5b\x60\x90\xf1\x3f\x41\x18\x62\x00\xe7\xf3\x91\x16\x4f\x69\x82\x8f\x46\x1a\xf6\xbc\xe3\x4b\x56\x45\x83\x34\xa3\x11\x4d\x14\xf0\xfa\xe4\xe3\xab\x38\xca\x78\x65\x65\x8a\x03\xea\xef\xea\xb6\x01\x87\x8b\xb3\x8e\xc6\xda\x55\x12\x64\x54\x01\xcf\x53\x92\x04\xd3\xac\xe5\x51\x9f\x26\xad\x38\x4a\x28\xf6\x6e\xd2\x0c\x67\x94\x8c\x71\x34\xa2\x68\xa7\x19\xe7\x5e\x3c\xf9\xcc\x40\x14\xb8\xd3\x4a\x13\x82\xba\xdd\xe1\xcf\x7f\x5e\xf7\x48\x57\xd0\xf9\x19\xc0\xa1\x52\x13\x63\x3e\x6f\x4a\x01\xdb\x6d\x6e\xa4\x53\xd5\xd0\x21\x54\x4f\x58\xbc\x61\x08\x87\x35\xa5\x60\x58\x4f\x2f\x29\xcd\x4e\xb8\xa9\x5f\x15\x46\x5d\xa8\xfc\x0c\x5a\x55\x5d\xf9\xad\xcc\x2b\x2c\x30\x56\x34\x02\x57\x97\x98\xed\x99\x4e\x44\x4c\x09\xac\x2c\xc3\x64\xcc\xa1\x60\xe3\x4d\x01\x71\x04\x3a\x8c\x3c\x87\x2e\x6a\x17\xb6\xc5\xb2\x63\x2d\x9e\x90\xf0\x71\x7a\x84\xb1\x62\x13\x95\x3a\x70\x48\x6a\x15\x07\xe3\x5a\x7d\xae\xd5\x98\x32\xea\x5d\xa4\x5b\xae\x88\x7a\xb7\xd3\x81\x2c\xbd\x2b\x30\xe7\x89\xe8\x04\xd9\x4e\x2d\x0d\xff\x56\x2f\x51\x6c\x1f\xf3\x08\xa4\x51\xa6\xa5\x09\x39\x0e\x29\x6f\x73\x00\x89\x27\xd3\x90\x66\x14\x20\xc4\x72\x0c\xf6\x6e\x4e\x99\x65\xdb\x6d\x05\x6b\x12\x53\x33\xee\x55\xac\x4d\x71\x42\xa3\xec\x53\xec\x51\x2d\xa1\x93\xf8\x92\xbe\x1a\x07\xa1\xa7\x60\xa8\xfe\xae\x40\x28\xc9\xfd\xa5\x4f\xd4\xf3\xff\x6f\xa2\x86\xb8\x18\xdd\x8a\xe0\x1d\x6e\xeb\x6a\xc9\xcf\x70\x5b\xaf\xf5\x18\xa7\x0a\xbc\x75\xb1\x3d\xae\x71\xe8\x1c\xfd\xae\xc0\xa1\xfe\x5c\x84\x4c\xe5\x31\xb5\x4e\xe2\xf7\x9a\xe2\x30\xd2\x2d\xcc\x81\x2d\xdc\xe9\xc0\x13\x1b\x3b\x0a\xb4\x4e\x34\xd1\x60\x21\x3d\xaf\xf8\xf2\xd0\x72\x25\x0a\x7c\xa5\xec\x47\x2c\x20\xbc\x98\xe9\xeb\x48\xa1\x68\xac\x91\x84\xe2\x8c\x16\x0a\x55\xca\x6d\xa8\x52\x8d\xb7\x37\x20\xa3\xd7\x59\xf7\x1b\xbe\xc4\xc5\x8e\x4a\x99\x01\x90\x0b\x87\x80\xa4\x29\xa3\xd3\x6e\xcb\x08\x85\x41\x74\xb1\x4c\x86\x21\xa8\x54\x1b\x27\xd4\x47\xac\xa5\x49\x68\x88\x40\x9a\xdd\x84\x34\x1d\x53\x9a\x01\x68\x29\x18\x8d\xd9\xad\xa7\x20\x93\xbe\xbc\x39\xc3\xa3\x4f\x78\x42\x15\x30\xa6\xd8\x03\xd0\xd6\x1d\x38\x9f\x73\x30\x37\xf6\x6e\xea\xa6\xc4\xd3\x29\x8d\x3c\x61\xca\x15\x76\x04\x36\x64\x4d\x50\x1d\x8e\x8a\xec\x58\xd7\x4a\x99\x38\x76\xca\xc4\xc1\xc4\x05\x3b\x1d\xb7\xb3\x03\x5a\x72\x9d\x34\xf2\xc3\x4e\x5d\x33\x15\x31\xa6\x8f\x16\x97\x5c\x42\x8b\xc1\xb7\x96\xb5\xf1\xf3\xf3\x2e\x43\xfa\x79\x07\xe6\xd6\xd6\x8a\x4b\x72\xba\x2c\x6d\x9c\xe1\x51\xdd\x2d\x3d\x58\x8b\xa2\xdf\x6b\xbe\x00\x6f\x3f\x21\x2c\xf1\xed\xc4\x9f\xd4\xf1\x7f\xaf\xe3\x9f\x36\xf0\x17\x51\xcc\x1a\x6f\x0c\x57\xea\xab\xdb\x6e\xbb\xed\x36\x18\x02\x84\x5c\x3b\x72\x14\x9d\xe5\xf8\x8f\xb6\xcb\x6a\x02\xfb\xc3\x7b\xe5\x33\xc5\xb5\x5f\x38\x8a\x01\x55\x16\xfd\xd2\x68\x4b\xa6\x8d\x46\xeb\xb4\xce\xd1\xe7\x06\x47\xac\xf4\x62\xde\x55\x51\x92\xc2\x76\x9b\x65\x16\x28\x49\x36\x9d\xce\xa2\xc5\x67\xa7\x5a\xab\xad\xc1\x91\x68\x35\x88\x60\xf2\x8b\x42\xe0\x50\x21\xfc\xf9\xab\x42\xec\x2b\xd6\x41\xb9\x38\xa5\xa7\x53\x4a\x58\x03\x30\x4b\xb3\x78\x72\xca\x4f\x55\x0b\x4c\xfb\xca\x71\x10\x81\xb9\x4c\xa0\x86\x86\x3f\xd7\xe5\x11\xa9\xa3\x21\x94\xa0\x87\xb5\x09\x2f\xd4\x8e\x16\xb2\x8b\x8b\xc4\x03\xc2\xa2\xf2\x2d\x13\xab\x93\x3f\x59\xed\xf4\xc1\xdf\x81\x87\x40\x47\x59\x0c\x1a\xa0\xfd\xb7\xa3\xc0\xc5\xdd\x40\x31\xfa\xb0\xf3\x11\x67\x63\xcd\x0f\xe3\x38\x51\x8c\xe3\x83\x9f\xf8\x6b\x82\x23\x2f\x9e\x28\xb0\x09\x2a\x33\xa0\x88\xbd\xb7\xb3\xc0\x7b\x91\x8c\xce\xeb\x1c\x9e\x40\xeb\x5d\x09\x7d\x4e\xaf\xa7\x71\x92\x9d\xde\x4c\xdc\x38\x04\xea\xbb\xd5\xad\xdf\x12\xd6\x01\x64\x37\x40\xfd\xb5\x2e\x14\x96\xf6\xe7\xd9\x98\x4e\x68\xa3\xcb\xc7\x0d\x24\xed\x1d\x02\x2b\xb3\x0a\x92\xd2\x2e\x0f\xb9\x6e\x18\xc7\x17\x5d\x77\xe6\xba\x21\x1d\xcd\x26\x1a\x8b\x48\xeb\x83\x52\xc3\x57\xc1\xcb\x2f\x2f\x5f\x7e\x38\x7e\xfb\xe5\x63\xe3\x10\xed\x5d\xf3\x98\xf7\xf7\x1f\x33\x4a\x28\x8d\xd2\x8b\x1b\xe9\x29\x6f\x3f\x1f\x1f\x7f\x3a\x7d\xff\xbf\xe6\x21\xef\x17\xbd\x97\x78\xff\xf5\xfe\x53\x68\x3a\x4d\x68\x9a\xc6\xd2\x53\x8e\x4f\x7f\xfb\x7c\x7c\x7a\x7a\xd2\x3c\xa5\xa9\x66\xed\xe3\xfd\x87\xa4\xe3\x20\x92\xcb\x71\xfa\xcb\xbb\x4f\x4b\x42\x7c\x6c\x92\xff\x70\x3f\xf9\x49\x10\x05\x13\x1c\x06\x69\x26\x3d\xe3\xe3\xbb\x4f\xef\x3e\xbe\xf8\xf0\xee\xf4\xac\x79\xd0\x87\xe6\x41\x9f\xee\x3f\xe8\xd2\xec\x7a\xd4\xc7\xb3\x50\x7e\xd0\x57\xf3\xfc\xf5\xf1\x9b\x17\x5f\x3e\x2c\x1d\xf4\x09\x56\x55\xfe\x0b\x0b\x5e\x7e\x8d\x76\x11\xb6\xf8\x43\xcc\x9a\x1a\xfe\x14\x31\x9f\xe5\x4f\x74\xf1\xe4\x2f\x9e\xbe\xa1\x6d\x5d\x3c\x11\xb4\x6b\xe4\x5b\x5f\xd8\x05\x7f\xb4\xd4\x63\x8b\xfc\x05\x80\x75\x19\x07\x5e\x4b\xdf\x46\x6e\xbb\xad\x2c\x9e\x6b\x77\x23\x85\x74\x10\x68\x8f\x43\x04\x3a\x9e\x52\x6d\x40\xa8\x56\xd0\x51\x4c\xd2\xb4\x04\x8d\x67\xd9\x74\x96\x71\x70\xc0\x37\x10\xe8\x14\x20\x4b\x48\x71\xe8\x45\x78\x42\x17\x98\xd5\x4a\x71\x58\xb5\xd0\xc0\x2c\x6f\x9f\x25\xde\xe2\x9e\x2a\xb0\xca\x57\x08\x55\xd1\x60\xba\xf5\xab\x1a\xc7\xc0\xe9\x4d\x44\x90\x09\xea\x54\xb9\xfd\x4a\x00\xfe\x52\xd0\xe3\xcf\x4b\xac\xd3\xeb\x69\xc5\x35\xbd\x9e\xa2\x2c\x99\xd1\x06\xb9\x38\x1b\xd3\xe4\x7c\xca\x27\x70\x25\x28\x53\x44\x7d\x5d\xdc\xf7\xb6\x85\xd5\xe0\x6d\xe1\x0b\xc2\xea\xac\x91\x6b\xbc\x6b\xbf\x9e\xfe\x82\xd3\xf1\x82\xc3\x60\xc4\xf9\x93\x02\x41\x68\x6d\x89\xb6\xdb\x76\x54\xdf\x62\x45\xcc\x67\x75\x56\x78\x0f\xe4\x55\xd5\x2f\xab\x2a\x65\xb7\x0a\x5f\xd4\x51\xb8\x04\x4b\x97\x60\xc5\xa2\xed\x3b\xcb\x68\xc2\x4b\xf0\xa5\x50\x1a\xb5\x5f\x3a\x0a\x50\x01\x84\x79\xd1\xbf\x2f\xfc\xdc\xbe\x74\x3a\xa0\x7b\xe4\x07\x5c\xbf\x82\xed\x0e\x68\x5f\x22\xd0\xc1\x9d\x2a\x1a\x96\x87\x98\x1d\x92\x5b\xdc\x91\xb3\x46\x79\x13\xa5\x99\x4f\x41\x59\xeb\xe8\x22\x5c\x99\xdf\x12\x3e\xce\x37\x03\x5f\x71\x61\xe0\x2b\xab\x6d\x06\x24\xc8\xae\x90\x9c\xc5\x05\xc7\x2d\xab\x3f\x61\x3a\x14\x2d\xb3\x5b\xb6\xcc\xab\x64\x6c\xec\xb4\xdb\x44\xcc\x43\xb0\x63\x4f\x1c\xa5\xfb\xd7\x9f\xe9\x4f\xf3\x3f\xd3\x9f\x9e\x75\x55\x00\x20\x1f\x1c\x42\x8b\xcc\xe7\x8c\x22\x28\xf2\x03\x70\xa0\xe5\xb2\xb8\x66\x27\x89\x43\x48\x79\x88\x30\x56\xd1\x0f\x60\xc7\x99\xcf\x5d\x46\x9f\x3d\xc3\x72\xa6\xe6\xe6\xd6\x56\xa8\x30\xc5\xa8\xb2\xf8\xe6\x24\x32\xc5\x85\x2a\x65\x01\xbe\x1c\x0e\x4c\x2d\x14\x8a\xc9\x0d\x2b\xe0\xff\x51\xaa\x3d\xe1\x09\x62\xba\x62\x3b\xea\x14\x15\xa3\x38\xfd\x39\x9a\x5a\xd3\xdd\x5d\x71\x44\x8a\x88\x3d\x75\x2c\xda\x6e\xfb\xda\x4b\x25\xe5\xfe\x5c\xf8\x08\xe3\x3b\x75\x20\xe1\x53\x2a\x42\x95\xa9\x6a\x40\x95\x16\x2e\xe4\x17\xdb\xdc\x87\x8a\x5b\xe5\x05\x7b\x49\x61\xce\x6e\x18\x4c\xf9\xb7\xac\x05\xac\x07\xbb\x5b\x9f\x48\xa5\x71\x92\x29\x70\xe1\x67\x9c\xdb\x29\xd2\xad\xe9\xf3\x0b\xa6\xc0\x69\xa7\x03\x53\x74\x61\x4f\x1d\xb5\x71\x20\x93\x65\x0d\x13\xcc\xe8\xf3\x39\xd3\x11\x42\x9f\xf8\x56\x11\x54\xd2\x45\xed\x92\x26\x69\x10\x47\xa9\x68\xb0\x9c\xf9\x7c\xbd\xf3\xce\xe7\x65\x8c\x73\x91\xf0\x2c\x8b\x45\x77\x55\x47\xf2\x16\xf7\x25\xc1\xf1\x88\x1b\x52\xa5\xc5\x2d\x9a\x34\x8f\x5f\x14\xf0\xe2\x1d\x35\x5f\xf9\x08\xae\x34\xe0\x67\x16\xce\x7c\x00\xcd\x1a\xa0\x80\xa6\xf0\x73\xd1\x59\x7f\x2e\xe3\x7a\x29\x8d\xd8\x9f\x45\x5c\x3b\xa8\x8e\x66\x7f\x76\xea\xa5\xb0\xc6\x70\x23\xba\x89\x36\xc5\xd9\xb8\x43\xb4\x6f\x29\xe3\x9e\x68\xbc\x38\x34\xf0\xf8\xdd\x4d\x8e\x44\x52\x86\x95\x0b\x7d\xb5\xdb\x4a\x59\xd2\x0c\xb5\x28\x69\x4b\xad\xa6\x6a\x6c\x0b\x37\x27\xff\x67\xe8\x7a\x89\xc0\x2a\xdf\xfd\x4e\x51\x3a\x29\xda\xd6\xf3\x1c\x5a\xa2\x52\x86\x8d\x04\xb3\xbb\x20\xdf\x6e\x2b\xff\x55\x00\x0e\xcf\x4b\x1b\xa8\xe0\x5b\xa8\xad\xf6\xbe\xbb\x02\x1c\xaa\xdb\x3a\x54\x2b\x66\xca\x1a\x2e\xfe\x94\x03\x78\xcc\xda\x07\xf1\xe9\x25\xad\xe9\xb6\x32\xa3\xb2\xb2\x86\x6e\x73\x09\x64\x15\x1a\xc5\x01\x7c\xa2\xaf\xe8\x55\x18\x17\x37\x98\xda\x81\xe5\xe4\xe4\xb6\x96\x69\x1a\xfb\xae\xe3\x2c\x7a\x09\xba\x66\xdb\xb0\x6a\xa9\xc6\x97\x02\x59\x62\x66\x50\x32\x42\x91\x6e\x51\x91\xe6\x68\xa7\x03\x89\x4d\x1d\xed\x95\xb2\x84\x04\x2d\x8f\x86\x34\xa3\xad\x3b\xe8\xe6\x79\x51\x13\x26\x4b\xcd\x4d\x91\x1c\x75\x54\x25\x40\xfb\xda\x29\x80\xd3\xd5\x5b\xcc\xb6\x9e\xd7\x86\x63\xff\x59\xb4\x5e\x6f\xca\xd6\xeb\xef\x45\x73\x95\x20\x3d\xff\x0f\x23\xf3\xb2\xe1\x26\x62\xaf\xd3\x29\xc0\x8b\x9c\xc0\xfc\xca\xe2\xd0\xaf\x56\xa1\x4b\xa0\xd2\x65\x2b\xa4\xc2\xd5\x93\xdd\x5d\xb5\x14\x21\x29\xc6\x3a\x82\x2d\x55\x67\x37\xa5\x05\xc3\x5f\xcb\xd9\x8c\xb0\x23\x9e\xd0\x92\xef\xd7\xc8\x15\x0f\x53\x44\xc4\xc3\x4c\xd0\x1b\x33\xc3\xf1\xa7\x8b\xe6\xa8\xec\x92\x3b\x14\xbf\x7e\xbe\x15\xa7\x85\x9c\x1b\x98\xbf\x51\xbe\xaa\x5f\xa0\x15\x2a\x5f\xd7\x55\x1b\x59\x85\x21\x47\x82\x0a\x4f\xee\xb5\xea\xa2\x56\xcf\x68\xdd\x47\x16\x4d\x44\x9a\x7d\xe5\xc0\x61\xc9\xb5\x6e\x3d\x3c\x85\x12\x98\x43\xeb\xeb\x1d\x8e\x22\x61\xfc\x48\x68\xab\x38\x37\x17\xe8\x61\xdd\x75\x0a\x75\x6e\xeb\x56\x73\xae\x56\x88\x5b\x14\xf1\xca\x6a\x17\x36\x76\x54\x1d\x56\x5a\xcf\x45\x8f\xf6\x3f\x39\x4f\x58\x13\x3d\xc6\x91\xa7\x94\x8f\xb0\x03\x44\x4b\x0a\x87\x58\x4b\xe8\x88\x5e\x1f\xb9\xbc\xd3\x50\xfe\xd2\x7e\x7a\x06\xbb\x6a\xb1\x0a\x87\x00\x14\x1c\x2f\xb7\xfd\xf5\xef\x73\x85\x7d\xaf\x14\x0c\x55\xb6\x99\x5b\x5b\x1c\xe7\xed\xca\xcc\x4f\x44\x2d\x00\x16\xd6\x2e\xe8\x4d\xbb\xad\x50\xd1\xcd\xfe\x4f\xe1\x0b\xb5\x4b\x8c\xf8\xae\xce\x27\x63\x45\x7d\x6c\x42\x17\x8b\xaa\x0b\x59\xdf\x53\x1b\xcb\xf0\x8f\xe4\xed\x36\xd6\xd2\x34\x3c\xe2\xff\x0e\xb1\x36\x4b\x02\x96\x3b\x8a\x4f\x21\x8b\x59\x0c\x6f\x4f\x09\xe4\xa3\x57\x3c\x49\x6d\xdf\x39\xaa\x1d\xb1\x58\x54\x89\xed\x3b\x70\x08\xea\x1d\x37\xeb\x65\x4b\x60\xb6\x3d\x04\x2e\x4e\xe9\xb9\x17\x4f\x70\x10\xb1\x4d\xde\x44\x82\x71\x96\x4d\x87\xdd\xae\x80\xe9\x70\x46\x58\x41\x14\x0f\x33\x47\x01\x5d\xa0\x1e\x40\xb8\xc8\xc3\x8b\x98\xb9\xcd\xad\x5d\x03\x21\x97\x03\x1d\x01\xd6\x5d\xf3\x89\x26\x38\x02\x1d\x5a\xf6\xca\xa5\xd7\x75\x68\x61\xa5\xb4\x91\x1d\xea\x36\x62\xc6\xd1\xf8\xc7\x86\x84\x7a\x05\xf4\xd5\xf2\xd4\x4a\x44\xf8\xd2\xa8\x4a\x2c\x2e\xcd\xab\x8a\x45\x97\xa7\x64\x5e\xb7\x3e\xd3\xd1\xf1\xf5\x54\xe1\xe5\x37\xa3\x49\x04\xa1\x96\xd1\x34\x53\x30\x84\x05\x1f\x24\xaf\x33\xf4\xba\x96\x77\xce\x84\x4f\x35\x6f\xa9\x41\x99\x72\x58\x8a\xc9\xdf\x28\x67\x22\x69\x9c\xad\x26\x8d\x2a\xa4\xef\x8d\xe0\x6d\x83\x85\xf0\xd9\x52\x08\x37\x55\x35\xce\x05\x40\xd8\xfc\xf0\x7e\x26\x0b\x83\xc5\xad\x2b\x58\x6e\xe3\x2a\x85\x06\x1a\x0e\x03\x9c\xd2\xb4\xa1\xbc\xc5\x6a\x01\x6f\xb1\xbe\x00\x23\xc2\xdb\xd6\x75\x34\x65\x9f\xcb\xca\x9b\xcf\x4e\xeb\x2a\xc8\xc6\xad\x02\x45\xfe\xb1\x76\xe5\x12\xb5\xf4\x13\x98\x0e\xe8\x86\x81\x9b\x76\x2b\xaa\x5d\x4e\xa6\x5c\x58\xe1\xc8\xe6\x49\x74\x16\xb1\x7a\x9a\xd0\x34\xa5\xde\x11\xa8\xbf\x81\x21\xa8\xbd\xb0\x4c\x75\xb6\xae\x74\x1a\xb9\x68\x00\x30\xab\x5b\x7f\xb0\xf6\xda\xc3\x2b\x3d\x9a\x8f\xeb\x98\x04\xcf\xe7\xe2\xbb\xde\x2c\x12\x1f\xb1\x28\x86\x2a\xa3\xa0\xc3\x5c\x1d\xe1\x25\x63\xf9\x58\x11\xf7\x64\x65\x39\x5f\xd4\x73\xff\xc9\x94\x61\xa4\xed\xf6\xb6\xb1\x8d\xd0\xca\xba\x46\xd2\x00\xd6\x7f\x71\xa0\x5b\x44\x8c\x73\x09\xff\x76\x44\x1c\xe4\x29\xec\x8f\xf8\x81\x07\xcb\xaa\xf6\x5f\xe2\xc3\xed\xb9\xe6\x74\xba\x23\x15\x9c\x97\xd7\x0c\x81\xec\x96\xc8\xae\x40\x76\xef\x47\xe6\xc5\xe0\xad\xf2\x8c\xcf\x25\x54\xd0\xed\x8e\x46\xcd\x29\x52\x70\x94\xa2\x99\x97\xb6\x2f\x91\xd9\xc6\x5c\x05\xec\x5a\x5c\x5e\x72\x3a\xa0\x1d\x64\x08\x74\xdc\xc5\xad\x47\x35\x8e\xf7\x60\x9e\xab\xff\x5d\x49\xd9\xe4\x68\x84\x15\x56\x71\x58\x2f\x35\x54\x98\x0e\xd5\x3f\x58\x0d\x06\x09\xe8\xfc\x61\x5f\x3b\x45\x2d\xc1\x1d\xc5\x3d\x02\x73\xd0\x71\x87\x00\x40\x08\x55\xce\x23\xc5\xea\xfe\x73\x06\x75\xa4\x0f\x8d\xfd\xe3\x1e\x84\xb9\x4a\x1b\x36\x0c\x7c\xe5\x0f\x7e\x49\x13\x85\x6f\xab\xde\xcc\x5b\x3a\x42\x98\x67\x40\x9e\x47\x59\x16\x54\x30\xc2\xe2\x52\x2c\x52\xab\x0a\xc4\x4f\xb6\x98\x56\x9e\x29\xcc\x55\xd3\x0c\x67\xe9\x11\xe3\x8d\x09\xd7\xe6\xd2\x46\x04\x81\xce\x92\x2f\x75\xc0\xb9\xa4\xe7\xf6\x30\x84\xd6\x1f\xd5\x17\xac\x5c\x7d\x26\x9b\x13\xd0\xab\xd6\xbb\x09\x1e\x51\x95\xa0\x67\xda\x2f\x9d\x8e\xf5\x4c\x7b\xc1\xac\xe7\x5a\xae\x16\x47\xe2\xe7\x4c\x5a\x1c\xd1\x24\x89\x93\xba\xb4\x45\x2f\x2a\xa0\x73\xcb\xe5\x5f\xad\xb0\x25\x26\x0f\x39\xa3\xc2\x32\xff\x33\xed\x17\xa4\x57\x73\xe7\xc5\xc0\x9e\x92\x38\xf1\x5e\xa5\xc1\x69\x86\xd9\x5d\x09\xc3\x75\x30\x02\xe0\xbf\x92\x7d\x31\x04\xe7\xbc\xbf\x89\x93\x0f\xf1\x68\xc4\x7f\xe3\xf4\x0c\x5a\x5b\x5b\x39\x6c\x29\x65\x25\xaa\x3e\x12\x28\xb7\x80\x7f\xc8\x00\x43\xfb\x56\xfc\x86\x6a\x08\xdc\x38\xbe\x48\x81\x0a\xca\x8f\x0f\x60\x78\x0b\x66\x49\x00\x86\x65\xc1\xe3\x00\x75\x97\xe4\x0b\x5d\x3c\x0d\xb4\x6f\x0c\x31\x4d\xc3\x02\x38\x1d\x76\xbb\x34\x22\xc9\xcd\x34\xa3\xde\x1d\x18\x17\xf4\x86\x9d\x52\xcc\x4b\x86\xfc\x3d\x57\x41\x91\x8f\x1a\x5b\x97\x6c\xa3\xac\x75\x60\x98\x25\x33\xaa\x82\xa2\x6c\x0f\x6f\x41\xd9\x99\x35\x70\x16\x8b\xb9\x0a\xca\xd1\x64\x03\x60\x1c\x82\x3c\xcf\x73\x15\xf8\x94\x7a\x29\x50\x17\xba\xf0\x93\x80\x46\x1e\x89\xa3\x88\x92\xec\x2e\x9d\x2c\x8d\x7a\x1b\x78\xc5\x67\xba\xe6\xa2\x4c\x55\x8f\x24\xf2\x78\xed\xf1\x9f\x22\xd6\xd4\xc7\x75\x90\x4e\x13\x8a\x3d\xfe\x41\x90\x51\x0f\x3c\x1a\x65\x41\x76\x93\xc5\x71\x78\x11\x30\x25\x8c\x3c\x9c\x61\xb6\x33\x61\xff\x5e\x06\xe9\x0c\x87\xc1\x3f\xfc\xc7\x86\x35\xd5\xa5\x63\x2c\x7e\x62\xf7\xdd\x4a\x4b\xcd\x6e\x81\xd4\xad\x94\x23\x92\xe0\xe6\x44\xbc\xdb\x01\x16\xdc\x4f\xf0\xf4\xce\x18\x60\xfb\x75\xde\xd9\x3b\x1f\x57\xfe\x39\xd3\xf5\x9e\xb7\xf8\x75\xe9\x8a\x8d\x19\xe0\x2e\x9e\x06\xbb\x69\x1a\x7e\x27\x81\x1f\x13\x1d\xfc\x12\x50\x0b\x0e\x71\xee\x33\x83\xfd\x35\xfb\x7c\xf6\x2d\x96\xcc\x7b\xc2\x46\x05\xb5\x6f\x93\x3c\x91\xac\xd3\xd4\xe2\xd7\xb6\x6c\x8d\x45\x7f\x57\x12\x04\xf7\xc3\xff\xbb\x69\x81\x91\xe1\x4d\x2f\x18\x82\xbf\x94\xde\xbc\xa7\x69\x3f\xc1\x67\x20\x77\x58\xa8\x50\x9c\x90\x31\x50\x01\x8e\xa2\x38\xe3\x11\x90\x9e\x5f\x9a\x80\xe1\xdc\xf0\x5f\x13\x00\x15\x5c\xe1\x4b\x0a\x54\x10\x27\x17\xb3\xac\x16\x1f\x35\x94\x07\xc4\x48\x42\x2f\x03\x7a\x95\x16\xd9\x20\xed\xd6\x0f\x76\xe3\x38\x4b\xb3\x04\x4f\xb5\xcd\x85\xcf\xe6\x14\xa9\x02\x12\xcf\xa2\x2c\x69\x72\x32\x2a\x33\xef\x02\x4f\x05\x14\x27\x19\x53\xea\x34\x20\x17\x34\x61\xda\x65\x39\x19\xd0\xe2\x07\x1a\xc0\xc9\xe1\xf2\xaf\x99\x13\x9f\x95\xb2\x61\x61\x8f\xe1\x6d\x29\x1a\xe7\x79\x68\x80\x21\x30\x80\x0a\x86\x86\xa6\xf3\x47\x61\xd4\x31\x18\x02\xee\x55\x02\xad\x6b\x68\x7a\xd7\x1c\x60\x6a\xba\xa6\xbe\x7f\x38\xa0\x83\x83\xbd\x9e\x49\xfa\x7b\xd8\xd8\xdf\xdb\x1f\xf4\x88\xe9\x93\x7e\x17\xa8\xe0\x5b\x0a\x86\xe5\x68\xbe\x43\x23\xed\x9d\xd0\x37\x49\x97\xd6\xf9\xfc\x12\x54\x93\x51\xce\x8b\xf8\xf4\x02\x86\xe0\xbe\x93\x18\xbf\x9f\xe2\x93\xd0\xfb\x84\x27\x0c\xb7\x48\x64\xc3\xaf\xa5\xd1\x00\x93\x86\xa9\x6e\x58\xd7\xf9\x83\x04\x2f\x11\xb9\xe8\x07\xae\xb1\x7f\xb8\xb7\xe7\x9b\x3a\xd1\x3d\xd3\x3b\x70\x4d\xcf\xf4\x06\x07\x7b\x7a\x1f\x0f\x0e\x8d\xbe\x7b\x87\xe8\xeb\x64\xbc\x8f\x24\x90\xcb\x23\xaa\xf0\x43\x85\xe1\x58\x5c\x92\xbd\x81\xe9\x9b\x03\xe3\x80\x78\xfe\xe0\x70\x60\x52\xcf\x37\xe9\x7e\xbf\x7f\xe8\x1f\xd2\x1e\xee\x9b\x07\x9b\x33\xe2\x7d\x27\xad\x11\xb0\x51\x62\x97\xe5\xd4\x4b\x39\x75\x6d\x4f\xea\xad\x35\xe4\xae\xae\xed\x75\x07\x07\xbe\x7f\x60\x1a\x87\xf4\xd0\x1f\xe0\x81\xd1\xdf\xd3\xf5\x3e\x71\x7d\x73\xe0\xed\xd3\x43\xc3\xc0\xcb\xe2\xde\x67\xb5\xfb\xe8\x35\x85\x62\x5c\x72\xa1\x58\x3b\xb0\x2c\x4b\xaf\x94\xa5\x27\xb7\x59\x30\xc1\xdd\x9e\x08\xbb\x43\x63\xaf\xd7\x33\xcd\x9e\x49\x0e\xf1\x00\x13\x1d\xd3\x81\x87\xfb\x03\xd7\xd0\xf5\x3e\x7d\xa8\x08\xf7\xd1\x6b\x8a\xd0\x2b\xed\xc2\x53\xf5\x43\xfd\x8e\x21\x71\xb7\xeb\xb9\x7d\xff\x60\xff\xa0\xe7\xfb\x07\xec\xa8\xbe\x6e\x7a\x1e\xde\xa7\xfa\x21\x39\xd4\xcd\x7d\xd7\x7f\xa8\x10\xf7\xd1\x5b\xe3\x5c\x22\x7d\x3e\x54\x0a\x8e\xc5\xc5\xf0\x5c\x93\x39\xf1\x61\x8f\xea\x78\xe0\x51\xc3\xef\x9b\x7e\x6f\xbf\xd7\xf7\xf7\xf1\xc0\x3b\xf0\x7a\x0f\x15\xe3\x3e\x7a\x6b\xc4\xa8\xd7\xc7\x87\x0a\x53\xc3\xe5\x22\x51\x6a\x1e\xfa\x06\xee\x99\xa4\xb7\xd7\xf3\x29\xee\xf7\x4d\xd2\xa7\x86\xbb\x3f\xa0\xa4\xef\xe9\xde\x23\x52\xdb\x7d\x24\xd7\x48\x55\xd4\xb4\x87\x0a\x24\xd0\xb8\x2c\x06\xe9\xf7\x58\x1c\xba\x87\x9e\x4e\xf4\x81\x49\xfa\x7d\x1d\xef\x99\xfa\xa1\x71\x68\xf4\x0e\xf5\x95\xe4\x26\xcd\x6c\xf7\xa4\xb5\xfb\xce\x90\x09\x27\x29\xca\xd3\x90\x17\x65\xde\xaa\x60\x32\x0b\xe3\x99\xc4\x94\xda\x40\xeb\xf1\xae\xa7\x39\x59\x6a\x60\x15\x12\xdc\xb9\x9f\x73\xed\x1d\x32\xfd\x6d\x8a\xd8\x40\x33\x37\x49\xcc\xd8\x08\xb1\x5c\x05\xc5\x70\xb1\xd4\x1f\x37\x01\xd3\xa2\x5a\x38\x12\xd7\x82\x50\xc7\xe2\x95\x7b\xdf\xcd\x2c\x58\x31\x80\xa9\xf5\xa5\x3a\x73\x67\x41\xe8\x75\x6f\x66\x81\xb0\x66\xf5\x24\xe1\x72\x2d\xec\xee\x24\x88\x4a\x15\x98\x6b\x8c\xf3\x03\x0e\x3a\xf8\xb7\x0e\x1a\x68\x7a\xb2\xf7\x6f\x1d\x65\x26\x32\x0f\xfa\x21\x47\xfd\x2b\x07\xf5\xb4\xde\xdd\x76\x62\xff\xdd\x45\x9c\xfd\xb7\x20\xb8\x14\x17\x3d\x5e\xd7\x7b\x22\x10\x4c\xd6\x12\x94\x51\x61\x6a\x07\xfc\xf5\xa0\x7c\xe5\x61\x0e\x4a\x0d\xf3\xa5\x3e\x5f\xe8\x97\x10\x87\x4d\xfc\xc1\x32\xf8\x80\x67\xed\xd2\x1d\x84\x68\x8b\xf3\x45\xc7\x77\xe5\x17\xff\x83\xa6\xd5\xf8\x93\xe6\x85\x12\xfe\x3c\x4d\x88\x2c\x2f\x94\xfb\x95\xd5\xa4\xb9\xea\x41\x64\x96\x54\x28\xb4\x62\x16\xad\x11\x75\xfd\x38\x5a\x65\xdf\xd0\x74\xcd\x1c\x48\x8e\x2e\x10\xce\x3d\xea\xce\x46\x92\xa3\x8b\xfd\x2a\x41\xea\x9a\x79\xb0\x21\x3a\x87\x9b\xa1\x63\xc8\x54\xfa\x18\x3a\xb2\x02\xf7\x18\x3a\xb2\x54\xf3\x18\x3a\xfb\x1b\xa2\x23\x8b\xde\xc7\xd0\x91\x45\xc0\x63\xec\xbe\x21\x76\x36\x43\x66\x43\xca\xe9\x6f\x48\xa8\x0d\xc5\xc4\xa6\x5c\x67\x43\x29\x63\x53\x11\xb1\xa1\xcc\x63\x6c\xc8\x5a\x1b\x4a\x18\x1b\xb2\xb9\xb9\xa9\xf8\xdc\x50\x80\x9a\x1b\x72\x42\x73\x43\xd6\x32\x37\x64\x2e\xf3\xa9\xde\xbc\x7c\x37\x10\x97\x33\x56\x0f\xab\xab\xa5\x78\x17\x93\x82\xeb\x6c\x97\xc4\xc9\xea\xc8\xa3\xa7\x19\xd2\xf4\x55\x22\xec\xae\x63\xa6\x04\xa8\x5a\x3c\x79\x1e\x7c\x18\x21\x69\x6b\x67\x88\x6e\x4c\x0c\x96\xc4\x39\xfc\xd5\x58\xec\x72\x19\x27\x71\x9c\xc5\x71\x28\xbb\x78\xf6\xa4\x99\xbe\x44\x90\x30\x55\x6e\xed\xb2\xbe\xb3\xda\xa9\x4c\x68\x6c\x9c\xa2\xbc\x43\x7e\x1a\x45\x59\x14\x3e\x4d\xea\x4d\x53\x34\xa5\x09\xf0\x69\x14\x65\xb1\xf5\x34\x8a\x9b\xb6\xb5\xbc\x85\x7f\x1a\x45\x59\xa6\x7c\x0a\xc5\xbd\x8d\xfb\xe3\xde\xc6\xf5\xb8\xb7\x49\x3d\x4a\x53\x2a\xf3\x78\xe1\xfa\xe5\x7b\x31\xbc\xe3\x03\x7b\xce\x80\x88\x35\xfe\xda\x2b\x5f\x4d\xfe\xca\x8c\x22\x90\x17\xb4\x78\xa6\xfa\xf6\xf7\x8c\x26\xb2\x09\x8d\xb1\x66\x42\x23\x10\x76\xa5\x77\xe4\x6a\xaf\x76\xe1\x36\xc4\x45\x75\x33\x84\x64\x3a\x7e\x14\x21\x99\xf9\x1f\x45\x48\xd6\xed\x3c\x8e\x23\x59\xd4\x3c\x8e\x92\x2c\xeb\x3c\x8a\x92\xac\x41\x7d\x1c\x4b\xb2\xd4\xfa\x28\x4a\xb2\x16\xfe\x71\x2c\x6d\xc8\x97\x0e\x36\xe7\x94\x9b\xf3\x80\x0d\xb9\xf7\x81\xb4\x24\x3e\x8e\xa5\x8d\xe5\x00\x59\xff\xfc\x28\xd9\x36\xc4\xd1\xc1\xe6\x92\xc9\x86\x02\x77\x7f\x53\x66\xdb\xdf\x60\xc2\xdd\x5c\x2e\x79\xba\x03\xac\xfd\x9c\x61\x1c\x88\x2a\x79\xc0\xdf\x0f\x8a\xcf\x1b\x7c\x32\x6b\x94\x93\x59\x63\x09\x76\x9f\xbf\xef\x97\xb0\x83\xa2\x00\x0f\xca\x4f\xd4\x64\x9c\xc4\x13\xba\xeb\x27\xfc\x27\x38\xb2\x49\xa6\x44\x9e\x57\x6f\xde\x45\x69\x86\xc3\x50\x22\x4f\xb5\xd7\xd0\x8c\x7c\x86\xf4\x28\x42\xb2\xc8\x78\x18\xa1\x75\x97\xc2\xa5\x3b\x61\xf1\x7d\x72\xf1\xff\x99\xb7\xaa\x9e\x83\x35\xec\x2c\x70\x24\xec\x34\xf6\x84\x4c\xfd\x35\x7a\x7e\x30\x19\xf9\x1d\xf5\x11\xdc\xc8\x42\xf4\xfb\xc9\xac\x78\x70\xe9\xb1\x7a\xf9\x15\xae\x5f\xb4\x7a\xfd\xf2\xd2\x6a\xac\x40\x2c\xed\x8b\x94\xb8\x4c\x45\x2f\x7d\x5f\xeb\x09\x6b\x79\xf1\xb7\xf8\xbb\x2f\xb6\x0c\xb8\xcb\xfe\xd1\xae\x59\x6b\xdb\xf8\x61\xbf\x44\xc8\x25\xf0\x4a\xeb\x3f\x8a\xb4\xfc\xaa\xbb\x11\xd2\xf2\x7b\xf9\x86\xb8\x96\xf9\xf2\x86\x74\xfd\xc3\x14\x22\xbf\x60\x6f\x84\xb4\xbc\x09\xab\x60\x1f\x42\xf7\x9e\x0e\xe1\xc9\x44\xef\xf6\x8a\x47\x11\xdd\xfb\x71\x9a\xdd\xff\x71\x5e\xbc\xff\x23\x5d\xed\x87\x91\x96\x0f\x23\x36\x44\xfa\x47\xe8\x7a\x6d\xa9\x30\xab\xaa\xd0\x2f\x67\x09\xfd\xe6\x6b\xd9\xdb\x2c\x4d\x1a\x7a\x77\x4e\x1a\x7a\xcd\x49\x83\x51\x9f\x34\x48\xe7\x0c\xeb\x9b\xcc\xb5\xdd\x5c\xb3\x63\x91\xd7\x9e\x07\x91\x90\xd7\x98\x07\x72\xb1\xfe\x46\xf1\xdd\x5c\xac\xbf\x02\x7c\x37\x89\xf5\xcd\xff\x77\x0b\xf2\x64\x8b\xdc\x35\x3c\xfa\x4e\x12\xf2\x72\xf1\x20\x12\x77\xdd\xf1\xbe\x9b\xc4\x93\xfd\xc2\xbc\xe3\xca\xfa\x9d\x24\xe4\x09\xfe\x81\x24\x9e\xec\x5a\xf2\x5a\xf0\x40\x12\x4f\xb6\x88\x3c\x01\x3f\x90\x8b\x27\x3b\xb8\x3c\x57\x3f\x90\xc4\x53\xb8\x58\x9b\xd6\x97\x32\xf9\x5e\xbd\xf7\x5f\x4a\xeb\x66\x33\xad\xef\xdd\x99\xd6\xfb\xc5\xef\x2d\xf3\xad\xff\x0f\x00\x00\xff\xff\xac\xf9\x00\xe7\xe9\x5f\x00\x00") - -func pagesAssetsJsGoogleJsapiJsBytes() ([]byte, error) { - return bindataRead( - _pagesAssetsJsGoogleJsapiJs, - "pages/assets/js/google-jsapi.js", - ) -} - -func pagesAssetsJsGoogleJsapiJs() (*asset, error) { - bytes, err := pagesAssetsJsGoogleJsapiJsBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "pages/assets/js/google-jsapi.js", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _pagesAssetsJsJquery300MinJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\xfd\x7b\x97\xa3\x36\xb6\x30\x0e\xff\xff\x7c\x8a\x32\xd3\x87\xa0\xb2\x4c\xd9\x9d\x64\x9e\x13\x5c\x6a\x56\x27\x9d\x9e\xc9\x4c\x6e\x93\xee\x5c\x66\x30\x9d\x25\x40\x60\x5c\x18\x5c\x80\xab\xaa\x63\x98\xcf\xfe\x2e\x6d\x49\x20\x30\xee\x64\xce\x79\x9f\xb5\x7e\xab\x57\x97\x01\xdd\xa5\xad\xad\xbd\xb7\xf6\xe5\xe6\x7a\x76\xb5\xfb\xc7\x91\x95\xef\xaf\x1e\x3e\xb6\x9f\xdb\xab\xab\xe6\xca\x0a\xd1\xd5\xdf\xde\x5c\xbd\x2e\x8e\x79\x44\xeb\xb4\xc8\xaf\x68\x1e\x5d\x15\xf5\x96\x95\x57\x61\x91\xd7\x65\x1a\x1c\xeb\xa2\xac\xae\x9a\xab\xdd\x3d\x2f\x6a\x17\x65\x72\x93\xa5\x21\xcb\x2b\x76\x75\x7d\xf3\x7f\x66\xf1\x31\x0f\x79\x41\x8b\xe2\x00\x9d\x8c\x63\xc5\xae\xaa\xba\x4c\xc3\xda\x58\x1b\x45\xb0\x63\x61\x6d\x10\x52\xbf\x3f\xb0\x22\xbe\xda\x17\xd1\x31\x63\xa6\x79\x21\xc1\x66\x4f\x87\xa2\xac\x2b\x77\xf8\x4a\xa8\x1d\x15\xe1\x71\xcf\xf2\xda\x0d\x2c\x8a\x67\x4b\xe4\xf4\xad\xa2\x53\x1a\x5b\xb3\x3e\x0b\xaa\xb7\x65\xf1\x78\x95\xb3\xc7\xab\x2f\xcb\xb2\x28\x2d\x43\x8e\xb9\x64\xf7\xc7\xb4\x64\xd5\x15\xbd\x7a\x4c\xf3\xa8\x78\xbc\x7a\x4c\xeb\xed\x15\xbd\x52\x25\x0d\xb4\x2e\x59\x7d\x2c\xf3\xab\xc0\xa2\xa8\x75\xe0\xaf\x65\x1c\xf3\x88\xc5\x69\xce\x22\x63\xa6\xba\x2b\xca\xbb\xe2\xc7\xa9\xb7\x69\x85\x3f\x30\x0d\x0f\xb4\xbc\x0a\x89\xe7\xe3\x48\x1b\x09\x66\xe4\x3b\x98\x04\x3b\x61\xf5\xf7\x65\x51\x17\xbc\xee\xef\x62\x1c\x93\xd0\xae\xf8\x04\xe3\x84\x84\x76\x58\xe4\x21\xad\xf1\x96\x84\xf6\xe1\x58\x6d\x71\x4a\x42\x3b\xcd\x23\xf6\xf4\x5d\x8c\x77\xe4\xd4\xe2\x3b\xb2\xb3\xeb\xe2\x4d\x5d\xa6\x79\x82\x33\xb2\xb3\xb7\xb4\xfa\xee\x31\xff\xbe\x2c\x0e\xac\xac\xdf\xe3\x3d\xc9\xfa\xf4\x9c\xec\xed\x90\x66\x99\x25\x9a\x46\xb8\x20\xa7\x76\xad\xba\x7e\x75\x10\x9d\x0f\x48\xd0\x34\x91\xec\x76\x60\x87\x25\xa3\x35\xfb\x32\x63\xbc\xdb\x96\x51\x85\x65\x7a\xe0\x73\x15\xda\x35\x7b\xaa\x09\xc5\x81\xbd\x65\x34\xb2\xe9\xe1\xc0\xf2\xe8\x8b\x6d\x9a\x45\x56\x88\xec\x03\x2d\x59\x5e\x7f\x5b\x44\xcc\x2e\xd9\xbe\x78\x60\x2a\xa5\xe5\x15\xdf\x13\x03\x40\xd0\xc0\x25\x19\x4e\x9d\x5c\x02\xbe\x7e\xa5\x1d\xe7\x76\x9a\xa7\x35\xa4\xb4\xb8\x22\x37\xef\xbc\x4d\xb5\x39\xbe\xfe\xf2\xf5\xeb\xcd\xd3\xcb\xa5\x3f\x6f\x46\xef\xcf\x6e\x12\x5c\x93\x9b\x77\x8b\x7d\xb5\xb8\xc1\x47\x72\xb3\xb0\x3c\xba\xf8\xcd\x47\x37\x09\x7e\x98\x6e\x29\xb0\xeb\xe2\xc7\xc3\x81\x95\x5f\xd0\x8a\x59\xa8\x5d\xf3\x66\x49\x69\x1f\xd4\xa2\x90\x93\x00\x7d\xe7\x1e\x87\x45\x5e\xd5\xe5\x31\xac\x8b\xd2\x29\x71\xc6\xf2\xa4\xde\x3a\x4b\x5c\x17\x2f\xcb\x92\xbe\xef\xa1\xb2\xab\x3c\x16\xf3\xcd\x41\x04\xb5\x38\x61\xf5\x00\x72\xd5\x58\x8f\x59\x46\x08\x75\xf5\xcc\x0e\xbd\x5d\xba\xfc\xc9\xa3\x73\xfe\x63\x8b\xc6\x7c\x47\x7c\xf3\x5b\xcc\xe1\xe1\x4d\x4d\xc3\xbb\x41\x95\x7c\x72\x03\x52\xda\x7b\x56\x26\x0c\xaa\xb2\xb5\x4e\x5b\x08\xd3\x1e\xca\xed\x43\xc9\x1e\x04\x28\x10\x00\xe2\xa0\xc5\x8c\x86\xdb\xa9\x3e\x96\x36\x4f\x81\x0a\x31\x45\x2d\xde\xd3\xc3\x54\x36\x68\xb0\xeb\x99\x55\xda\x7b\x7a\xb0\x86\x1b\x24\xc0\x61\x97\x9d\x8a\x11\x07\x38\xe4\x0b\x8c\xf8\x1a\x73\xd0\x9f\x98\xc8\x51\xc5\x31\x07\xb7\xec\xbd\xec\x4f\x99\xc0\x9e\xaa\x78\x05\x71\x5a\x56\xf5\xa5\x0a\xd8\xbd\xb5\x44\x2d\xce\xe8\x07\xb3\x2c\x56\xa8\xc5\xec\x7e\x62\x5e\xb5\x95\xc0\x21\x99\xd3\xb9\xc5\x97\x29\x70\x96\xdd\xa4\x8e\xfa\x19\xbe\x20\x4b\xd3\x0c\x6f\x03\xd7\x83\x85\x0b\x7d\xdf\xf1\x7c\x5e\x7d\x1e\x5d\x1c\x65\xb7\x2a\x4d\x73\xbe\x80\x62\xe1\x9d\x2d\xae\x8a\xb2\x76\x42\x9b\xff\xe0\xea\x00\xd3\x16\xda\xe2\xa1\xc5\xa5\xcd\x9e\x6a\x96\x47\x04\xf6\x90\x7c\xd6\xda\xe3\xc3\xa1\x98\xcf\x7b\x84\x19\x8e\x71\x42\xba\x49\xf4\x96\x7e\xd3\x9c\x5a\xbc\x25\x2b\x9c\xf6\x9f\xd5\xb0\x77\x64\xb6\x5a\xc7\x1c\xaf\x06\x45\x91\x31\x9a\xf7\x58\x3c\x31\x4d\x6b\x47\x92\x41\x65\x5b\x59\xd9\x7c\x8e\xf0\x19\xda\x4f\x9a\xa6\xb4\xd3\xea\xb5\xea\x57\x82\x9a\xc6\x4a\xc8\xa9\x45\x78\x4b\x08\x49\x4d\xd3\x4a\x04\x64\x6e\x17\x0b\xb4\xde\xde\xa6\x6b\x5e\x51\x1a\x5b\x7c\xcb\xcc\x88\x45\x07\x2d\x21\xc4\xfb\x15\x5c\xa5\xf9\x15\x45\x21\x49\xbc\x00\x70\x2e\xff\x49\x66\x84\x44\xbc\x7b\xa6\xc9\x7f\x78\xab\xdf\x67\x34\xcd\xc5\x3c\x5b\x11\x6f\x98\x11\xd8\xc5\x76\x5a\xc1\xaf\x15\x21\x84\x5c\x8b\xb9\x16\x23\xb3\x15\xc7\xcb\xa6\x39\xcc\x10\x22\x37\xe4\xab\xe9\x40\xda\xb8\x4e\x48\x3d\xb5\x98\x77\x83\xa8\xf5\xb0\x76\x38\xc6\x11\x42\xce\x43\x91\x46\x57\x4b\xd9\x2b\xc8\x12\xa1\x0e\x88\x92\x7e\x01\xad\x13\x7b\x3a\xd0\x3c\x2a\x1c\x79\x8e\x19\x73\xeb\x7e\xfe\x0d\xad\xb7\x76\xc9\x3f\xef\x2d\x84\xec\x92\x1d\x32\x1a\x32\xeb\x66\xf3\xea\x26\xc1\x86\x81\x70\x5a\xfd\xc0\x68\xf4\xde\x99\x2d\x31\xe3\xa7\xe0\x00\x96\xc7\x27\x24\xdf\xcf\x79\x51\x1c\x74\x80\x6c\x71\xbf\x2e\x13\x1b\xdd\x50\x9f\x0c\x42\x48\x69\xf3\xf5\x84\x6a\xd2\xea\x67\x71\x28\x5e\x40\x73\x33\x42\x4d\x93\x12\x42\xa8\x2d\x4e\x4f\x5e\xe4\xdb\xe3\x9e\x95\x69\x38\x89\xc7\x64\xcd\x72\x66\x2c\x23\x3f\xee\x03\x56\xf2\x56\x83\xa6\x31\x2a\x38\xd7\xe0\x0d\x99\xe6\x2c\xad\xbe\xa5\xdf\x5a\x74\x71\xa0\x65\xc5\x5e\x67\x05\xad\x2d\x8a\xa0\x57\xda\xc2\x9c\x37\x83\x43\x59\xfd\xcc\x9a\xd1\xa6\x31\x3c\x01\xa7\x57\x22\xbf\x6f\xcc\x08\xb9\x13\x88\x8a\x22\x64\x9a\xd6\xcc\x0a\x08\xef\x14\x07\x9a\x90\x64\x0a\x87\x19\xda\x3e\x35\x90\x69\x06\xfa\xc6\xc5\xfa\x8c\x49\xf0\x0f\x4d\x53\x9e\xc7\x21\x22\x84\xe4\xa2\xab\x5f\xee\x0f\xf5\xfb\x4b\x5d\x5d\x6b\x10\x2e\xfb\xbc\x52\x9d\x5f\xb6\x98\x57\xfc\xa1\x13\x86\xce\x0d\xc3\x39\xdb\x86\x7c\xcc\xe7\xbd\xa3\xee\xce\xeb\x86\xed\x37\x8d\x2a\xe6\xa8\xf4\x16\x27\x59\x11\xd0\xec\xcb\x07\x9a\x0d\x1a\x3d\x00\x28\x84\x74\xcf\x32\x7e\xa6\x4e\x75\x88\x76\x30\x5b\x63\x63\x5f\x2d\x8c\x1e\x88\x8f\xf8\x01\x9d\x9d\x43\xfc\xbc\x06\x82\x04\x47\x64\xb9\x4e\x63\xeb\x91\xcf\xff\x89\xcf\x46\x48\xa8\xc4\x4d\xeb\xe8\x36\x5c\x47\x02\x41\x04\xb2\xe7\x5e\xe4\xe3\x08\xf3\x1f\x3e\xc5\xb3\x15\x0a\x4a\x46\xef\x5a\x96\x55\xec\x8a\x97\x8e\xc4\x5c\xfe\x6e\x09\xb5\x35\x69\x8b\xeb\x32\xdd\x7f\x68\x92\x0d\xc3\xb1\xf8\x44\xf7\x43\xaa\xf8\x9e\xe4\x67\xe6\x1d\x1b\x11\x0a\xfd\xc0\x38\x3c\x7b\xfe\x7a\xbc\x57\xac\x47\x49\xac\xf1\xf1\xba\xea\x5c\x0f\x71\x0f\xfa\xdd\x72\x79\xd4\x77\x28\x72\xb6\x12\xa4\x30\x45\x08\x87\x2d\x4e\xf3\xf3\x36\xb5\x23\x58\xf4\x3a\x70\x17\x2b\x27\x55\x90\x4c\x71\xc8\xbb\xcb\x9b\x1a\x75\x95\x4f\x99\xe8\xee\x3c\x50\x27\x42\x44\x96\x98\x9d\x2f\x02\xf5\xd8\x7c\xee\x93\xc0\x8b\xba\x51\xa9\x3c\x84\x61\x0e\x3d\x25\x3b\x9c\xf5\x4a\x35\x10\x61\xc6\x49\xe6\x98\x2c\xf9\x71\xa2\x9a\xda\x92\x59\xb8\x8e\x6f\x93\x75\x3c\x9f\xa3\x88\xcc\x02\x8b\x7a\xb1\x8f\x63\x84\xa3\x19\x21\x5b\xd3\x64\x70\xf6\xc2\xd7\x0e\x9b\xb2\x31\xb5\x22\x5a\x92\xad\x40\x13\x5b\xe2\xf9\x1d\x54\x01\x58\xf4\xe3\x89\x6f\x23\x68\x8e\x11\xd5\x1a\x0e\x11\x16\x0b\xc4\x4c\x73\x2b\x5a\x64\x68\xdd\xc1\x54\x2c\x60\xea\x77\x0b\x28\x6c\x2f\x69\x19\xcf\xc7\x5b\x4e\x24\x1e\xd3\xc8\x59\xe1\x43\x59\x3c\x4d\x02\x0a\x3f\xb1\x79\x5f\xcf\x20\x20\x30\x4d\xbe\x19\xf8\x71\x17\x10\x8a\x29\x09\x11\x1e\x1c\xaf\x14\x49\x9c\x71\x15\x11\x49\x6b\x76\xc7\x27\x7e\x8e\x30\x23\xe7\x14\x09\x95\x9d\x0b\x04\x2d\x82\x23\xc9\x92\x58\xe3\x0a\x10\xc7\x5e\xcc\xe6\xbd\x27\x54\xff\xe1\x67\x3c\xff\x9d\xcf\x31\xe3\xe7\xcc\xa3\xf3\x8a\xd6\xcc\xce\x8b\x47\x5c\x1d\x0f\x9c\xc3\x73\x8a\x16\x4d\xe1\xc7\x37\xef\xf7\x41\x91\xc1\x71\x1d\xe7\x9e\x78\xb3\xd3\x9a\x95\xb4\x2e\x4a\x9f\x84\x67\x9f\xf8\x78\x81\x4c\x35\x3e\x17\xb4\xc9\xd5\xb7\x70\x5c\x5c\x09\xfe\xe7\x4a\xcd\xc4\x15\xec\x88\x2b\xde\x8f\xab\x1f\x58\xf2\xe5\xd3\x41\xe2\x7a\x71\x20\xca\x86\x0d\xa0\xa6\x6a\xcb\xb8\x32\xd0\x88\xbf\xdb\x79\xdd\x21\x61\xcc\x83\xb9\xe1\x1b\x3e\xe1\x7c\xc4\xd7\xc5\x63\xc7\x47\xa0\x9e\xb1\x7a\xec\x4f\xb4\xd9\x8c\x9a\xa6\x21\x40\xcb\xe0\x60\x62\x9a\xb4\xa7\x28\xc7\xe7\x5d\x3f\x29\x33\xc2\x69\x8c\x19\x5f\x4f\x71\xc2\x5a\x94\x1f\x45\x06\xe5\x23\xe1\x07\x60\xd8\x34\x4b\x79\x2a\x76\x67\x64\x0f\x18\xc1\x8b\xa5\x69\x06\x8b\x95\x80\x4c\x60\xc1\x9e\xc8\xc4\x41\xa8\xc8\x41\xbc\xc5\x29\xde\xe1\x3b\x9c\xe1\x3d\xce\x71\x81\x0f\xf8\x1e\x97\xb8\xc2\x35\x3e\x12\xa3\x4a\x7f\xfb\x2d\x63\xc6\x7c\x75\xcd\x89\x08\x3e\x8d\xf8\x41\xe7\x6d\x1f\xc9\x12\x3f\x91\x25\x7e\x4f\xb6\xd4\x42\xf8\x37\xf1\xf3\x52\xfc\x7c\x3e\xcd\x86\x71\xa2\x80\x43\x70\x46\x66\x4b\x84\x97\x2d\xfe\x82\x9c\xda\x31\x37\xfb\x8a\xe3\x84\x2f\xc9\x2b\xfb\x50\x1c\xf0\x6b\xfe\xcb\x99\xe2\xbf\xa8\x87\xbf\x92\x57\x92\x77\xfe\x8a\x5c\xc2\x5b\x4b\xac\xed\xed\xf0\x36\x5a\x87\xe2\xc0\xa0\x5e\xe8\x03\x1d\x21\xfb\xa3\x68\x82\xc5\xaa\xc5\x7f\x23\x46\xb8\x65\xe1\x1d\x8b\x9a\x8a\x65\x2c\xac\x59\xd4\xd0\xea\x7d\x1e\x36\xf4\x58\x17\x71\x11\x1e\x2b\x78\x3a\x64\xf4\x7d\x03\x62\x93\x22\xab\x9a\x88\xc5\xac\x6c\xa2\xb4\xa2\x41\xc6\xa2\x66\x9b\x46\x11\xcb\x9b\xb4\xda\xd3\x43\x93\x15\xc5\xa1\xd9\x1f\xb3\x3a\x3d\x64\xac\x29\x0e\x2c\x6f\x4a\x46\xa3\x22\xcf\xde\x37\x52\x50\x11\x35\x55\x58\x1c\x58\x64\xe0\xbf\x13\xc3\xdb\x6c\x9e\x9e\x2f\x37\x9b\x7a\xb3\x29\x37\x9b\x7c\xb3\x89\x7d\x03\x7f\x4d\x0c\xcb\x75\x36\x9b\xcd\xc6\x6e\xbc\xcd\xe6\x71\xe1\x37\xde\xbb\xcd\x72\xb1\xd9\x3c\xd1\xa5\x8f\xe6\x06\xfe\x86\x18\x9b\x8d\x67\xcc\xff\x3e\x37\xae\x2d\x63\xfe\xf5\xdc\x40\x96\xeb\xc8\x77\xef\xfa\xdd\xb3\x66\xf6\x6f\xdf\x25\x48\x7e\x71\x9d\x8f\xac\xbe\xc6\x77\xfc\xf7\x23\x1f\x5d\xa3\x8f\x9a\x8d\x31\x4e\xd8\x18\x3c\x65\x63\x34\xb2\x5e\xd4\xc8\x5a\x36\x1b\xdf\xc0\xdf\x12\xc3\xe9\x1b\xdc\x6c\x2c\xcb\xfa\xcf\xab\x46\xcd\x38\xc5\x42\xde\x66\xe3\xfb\x8d\x31\xff\x66\x6e\xa0\x6b\xd4\xd8\xd7\x68\xb3\xe1\x4d\xe3\xef\x08\x87\x45\xb1\x9b\xad\xbf\xcf\x8d\xb9\x81\x8d\xc4\x40\xf8\x7b\xfd\xbb\xf1\x0e\xfa\x38\x87\x8a\xdf\xc9\x4a\x7d\xa4\x5a\x41\xd7\x62\x0c\xf3\x67\xb2\xf0\x3f\x26\x0a\x5f\x63\xf1\x63\x20\xfc\xc3\x54\xb2\xe5\xbd\x98\xff\x9b\x77\xf1\xef\x73\x03\x75\x59\xdf\x0c\xb2\x12\x95\xf5\xdd\x66\xe3\x7f\xb4\x31\xfc\x6b\x57\x9f\x3d\x68\xfb\xad\x5e\xe2\x5b\x84\x7f\x1c\x37\xf6\xf5\xdc\x78\x66\x20\xfc\x13\x39\x7d\xf5\xca\x19\xa4\xfd\x49\x4e\xbd\x81\xf0\x17\x5f\xbf\x7c\xf3\x66\x98\xba\xd9\xd8\x7d\xfa\xdb\x97\x7f\x19\xa6\x8a\xa4\xc6\xbb\xf6\x79\xf2\xcb\xb7\x6f\x7f\x70\x46\xed\x7e\x83\xf0\xf7\x6f\xbe\xfc\xf1\xd5\x77\xe3\x84\x6f\x11\xfe\xe2\xaf\x5f\x7d\x3d\xea\x8c\x63\x01\x54\x03\x5f\xde\x70\xce\xbb\xc9\xeb\x2d\xff\xbf\xe0\x2f\x68\x61\x85\xdb\x34\x8b\x9a\x22\x5e\x70\x74\x25\xc1\x45\xce\x0f\x7b\x60\x79\x53\x44\x51\x63\x59\xde\x7c\xe1\x37\xc8\xda\x6c\xa2\x6b\x94\x37\x3d\xc4\xca\x04\xf9\xbe\xd9\x44\x73\xd4\xa0\x6e\x32\x01\x34\x8c\xd4\x40\x98\x73\xab\xa3\x91\xf2\x9d\xf0\xb7\xb9\x81\x9e\xc9\x2c\x39\x63\x51\xf5\x45\x91\xd7\xec\xa9\x1e\x8f\x8d\x57\x27\x16\xd6\xe9\x7b\xc5\xee\x9b\xa4\x6e\x32\x31\xa2\x7e\x80\xc3\x31\x58\xae\xb3\xd8\x6c\x22\xe4\x42\xd7\xb5\x8e\x59\x2e\xf1\xde\x2d\xfc\xe6\x99\xec\x62\x8b\x7f\x26\x37\xbc\x57\x69\x7e\x38\xd6\x12\xd3\x34\xbc\x33\xb4\x64\xb4\x09\x8e\x75\x5d\xe4\xe8\xd9\x4d\x8a\x7f\x21\x37\xef\xb6\x9b\x88\x3f\xfe\x93\xdc\xbc\xf3\xde\x9d\xfc\xf9\xe6\xb4\xa9\xae\x37\x5e\x4e\xeb\xf4\x81\x5d\x6d\x1e\x6f\xf0\xbf\x44\x6d\x7f\xb2\x3c\x8e\x1a\xe6\xa8\xb1\x36\x8f\x73\xd4\x6c\x6c\xf5\x01\x3d\xbb\xc1\xcf\xc8\x8d\x37\xff\xb7\x7f\x83\x7f\x1d\x80\x17\x6c\x36\x6f\xb3\x89\xe8\x22\xf6\x4f\x2b\xfc\xe7\x16\x3a\xee\x36\x62\x54\xa8\xb1\xa1\xd3\x1c\x4e\x29\x25\x93\xa4\x15\x31\x96\x4f\xc6\x3c\x58\xfc\xf9\xd3\x4f\x3f\xfe\xb3\xa2\x75\x38\x99\x16\x35\x4d\xe8\x06\x4e\x74\xbb\x74\xc5\xb9\x6c\xc7\x65\xb1\xff\x62\x4b\xcb\x2f\x8a\x88\x59\xd1\x1c\x4a\x20\x67\x32\xf1\xc5\x8b\xd5\xb2\xf9\xf4\xd3\xe7\x9f\xfd\x19\xaf\x96\xcf\x3f\x36\xa3\xe6\xd3\x3f\x7f\xfc\x7c\x89\x5a\x1c\x50\x72\x63\x79\x1c\xfd\x3d\xad\xe2\xcd\xd3\xff\x8d\xfd\xe6\xdd\xc2\xdd\x44\xa8\x79\xb7\x78\x26\x11\xa3\x4c\x59\x6c\x8e\xaf\x5f\xbf\x7e\xcd\x67\xe1\x26\xc1\x21\xbd\x20\x18\x74\x8d\xcd\x92\x1f\xad\xd4\x35\x36\xc7\x38\x8e\x23\xc3\xa1\xe2\x7c\xb1\x96\x78\xb1\x42\x73\x63\xb3\x31\xe6\xd4\x0e\x65\xef\x5e\xd6\x96\x3a\x59\x16\x2b\xd4\x89\x5d\xad\xd5\x9f\xd1\xdc\xb8\x32\x1c\x91\xbd\xc5\x11\xd5\x09\xad\xbd\x05\xec\x0e\xa9\xa9\x35\xc9\x28\xa9\x03\x84\x33\x23\x4b\x7e\xe4\xc7\x45\xb9\x07\xd2\xa1\x69\x8c\x8c\x06\x2c\x33\xc4\xa1\x8e\x4f\x51\x5a\x3a\x46\x2f\x78\x35\x70\xce\x21\xd9\xc8\x58\xc2\xf2\xc8\x68\xd1\xba\x2e\xdf\x9f\xfe\x22\x29\xba\x57\xe4\xaf\x82\x84\x7b\xb0\x61\x07\xf2\x12\x15\xc2\xc3\xb7\x57\x9e\xfe\xae\x84\x90\x76\x5e\x44\xec\xed\xfb\x03\x6b\x43\x5a\x87\x5b\x2b\xa6\xe8\xf4\x17\x72\x82\x7a\x9d\x57\x32\x97\x3b\x9c\xd4\xd7\xb2\x59\x8a\x65\xb3\x01\x42\xed\x24\x23\x44\x35\xc6\x62\xfd\xb8\x4d\x33\xc6\x0f\x67\xc9\x4b\xcc\xe7\x3e\x5a\x77\x7c\x44\xb8\x58\xb5\x6d\xdb\xd1\x59\x09\x05\x08\x8c\x30\x13\x75\xc5\x78\x2b\x89\x98\x82\x13\x2f\x9c\xbe\x08\xec\xe2\x31\x67\xe5\xab\x9e\x54\x09\xdc\xa0\x1b\x8f\xf3\x19\xa7\xac\x23\x0e\xa2\x9e\xdf\xf1\x58\x33\x8d\x51\x9e\xd1\xa6\x59\xcd\x08\x79\x34\xcd\xcf\xc4\xcf\x0a\x5e\x3b\xca\x9a\x57\x30\x63\xa6\x69\x59\xbc\xe2\x41\x63\x4d\x13\x38\x0f\x68\x46\x48\x6e\x9a\x7b\x2b\x40\x18\x24\xed\x39\x3e\x20\xb8\xc4\x58\xc9\x7a\xad\x8c\xfc\xcb\x66\x4f\x2c\xe4\x04\x3b\x27\x4d\x62\x92\x79\x2b\x1f\xf2\x7c\x46\x78\x5b\x70\xe5\x61\xed\x48\x60\x27\xac\x96\x92\xf9\xcf\xdf\x7f\x15\x59\x31\x42\x83\x8e\xec\xec\x94\xc3\x4d\xdc\x7d\x14\xbc\xc7\x0e\xe1\x48\xb0\xc0\x69\x6c\x55\x20\xb5\xab\x26\xaa\x32\xcd\xda\x0a\xf0\x0e\x99\xe6\xef\xd5\xc3\x3b\x94\x79\xcf\x7d\x95\xae\x60\x2c\xc2\x7a\x17\xab\xcf\xdf\xbf\xa5\xc9\xb7\x74\x0f\xc2\x13\x0c\x3d\x84\xc1\x7d\xec\x23\xd3\x0c\x87\x39\xbf\xc8\x68\x55\xf1\xbc\x7c\xcd\xa6\x53\x7e\xb7\xb5\x2e\x27\x1f\x0d\x8e\xda\x34\xb6\x42\xfb\xbe\xa2\xa6\x39\x7b\xe9\x51\xbe\x27\x7d\xd3\xb4\x66\xf7\x4d\x33\xbb\xb7\x6b\x56\x01\x93\x2d\xd6\x02\xd6\xb4\x22\x01\x2e\x09\x5d\xab\xa9\x52\x22\x90\x19\x21\x02\x66\x78\xdd\x43\xb2\x1f\x9d\xac\x3b\xb1\x2e\x2f\x6b\x71\x7b\xc6\x2c\x23\x8d\x0c\x84\xdc\x3b\x72\xd7\x49\x04\x02\x8a\x43\x8a\x9c\xc0\xae\xc6\x19\xf1\x1d\x39\x22\x5c\x90\xc4\xa2\x08\x6f\x49\xa1\x48\x55\xb1\x11\xb6\x8b\x05\x2a\xbc\xad\x4f\x8c\x3f\x19\xf3\x3b\x3e\x82\x79\x45\x2d\xfe\x05\xad\x4b\x52\xd8\xbb\x22\xcd\x2d\x03\x1b\x08\x57\xe4\x99\x1a\x92\x69\xde\x53\x2b\xd0\x6e\x64\x50\xd3\x04\x7c\x32\x4a\xc4\x11\xc2\xd9\x2c\x56\x36\xdc\x77\xbc\x81\x03\xa8\x28\x5f\x66\x99\x55\xc2\xfc\x89\xdd\xfe\x84\x4e\x6d\x9c\xe6\x34\xcb\xde\x9f\xee\x08\x21\x47\xbe\x42\xe2\x8e\x67\x34\xe6\xb6\x6d\x65\xe5\xa9\xd5\x4b\x7c\xbe\xc7\xc6\xb3\x15\x3f\x91\x61\xa3\xf6\xbb\x97\x73\x07\x42\x30\xcd\xb9\xf1\xee\x73\x60\x85\x7c\x3f\x77\xf8\x10\x20\x2f\xe4\x43\x47\x2f\x22\x3b\xa4\xe1\x96\x7d\x0d\x53\x64\x9a\x11\xcb\x58\xcd\xae\x02\x8f\xda\xd5\x36\x8d\x6b\x0b\xf9\x38\xf0\x20\xaf\x4f\x98\xea\x4b\xd0\x37\x99\x52\x1d\xd5\x7a\x47\x9f\xcc\x96\x98\xf6\xe9\x3b\xda\x73\x6e\xf9\xf8\x26\x2c\x4e\x59\x16\x55\xac\x36\x04\x5e\x95\x52\xb8\x19\xb5\x02\x24\x67\xaa\x93\xb2\xcc\x56\xdd\x8c\xe9\xeb\xc0\x27\xee\xc2\x3d\x19\x60\x87\xfc\x98\x65\x1a\x7a\xbb\xa3\x43\x34\x29\xd9\xd3\xc6\xe0\xac\x7b\x38\x04\x14\xb6\x58\xa0\xc8\xa6\x75\x5d\xfe\x95\xe6\x51\xc6\xbc\xd0\x63\xbe\x4f\xb4\xb1\x67\x83\xda\x02\xd3\xa4\x38\xe2\x3c\xe6\x0a\xa4\xb3\x0a\x23\x8a\xf7\x40\x7b\xa7\x76\x55\x1c\xcb\x90\x7d\x95\x47\xec\x69\x11\xe8\x6f\x80\x3c\x07\x08\x28\x44\xa2\x3b\x21\x09\x6d\x7e\x18\xbd\x49\x83\x2c\xcd\x13\x8e\xd5\x42\x8d\xdb\x5a\xac\x3a\x11\x91\xbb\x72\x16\xab\xbe\x97\x7b\x7d\x85\xfa\x3b\xa4\xae\xdb\x17\xb6\xa1\xe2\x9f\x81\x94\x02\xf6\x98\xcf\x35\xdc\xe6\x11\x42\xb5\x39\xcd\xff\x57\xf5\x5b\x5a\x03\x4d\x63\x08\x12\x0d\xde\xd0\x85\xf6\x8a\x4b\xed\x29\x86\x5f\x1e\xee\xfc\xf0\x18\x02\x8a\x4e\x07\xac\xdc\xfe\xe4\x0f\xf4\x67\xad\xcc\xa0\x02\xbd\x34\x75\x82\xf1\x6b\x5a\xbd\xd2\x3e\x34\x8d\xfe\x65\x46\xc8\x8c\x9a\x26\xe3\x70\x3d\x55\x5a\x6b\x7d\xd4\x4d\x7d\xdc\x07\x7d\xdc\xa9\x46\xea\x68\xf4\x16\x99\x07\x58\x4f\x0a\x71\x24\xd6\x81\xe1\x98\x50\xcb\xf3\xb1\x02\x72\x1c\x20\x9c\x90\x78\x08\xf2\xc9\x62\x81\x42\x8f\x91\xd8\x4b\x7c\x8e\xd7\x39\xc4\x93\x99\x15\xf1\x1f\xfe\x8c\x50\xcb\xff\x75\x5d\xba\x1f\x6c\x7e\xd3\x9c\xba\xe9\xa7\x93\xc7\x97\x69\xd2\x36\x24\x09\xb5\xa5\x00\x8b\x9c\x5a\x1c\xf3\xf7\xb4\xfa\xe5\x9b\xaf\xcf\xe5\x2a\x20\xc8\xa5\x63\x62\x80\xa2\x4e\x62\x22\x5b\x50\x92\xfc\x59\x60\x9a\xc6\x5f\xdf\x7e\xf3\xf5\xf0\xa4\x69\xf1\x1e\x1a\x65\xb5\xaa\x64\x42\x84\xc3\x70\x42\xa8\x7b\xde\x98\xf3\xd0\xc9\x1b\x05\x05\xc2\x49\x89\x44\xdb\xd7\xc9\xb8\x37\xae\x95\x93\x04\x17\x24\x1f\x27\xe0\x03\x99\xc5\x56\x8e\xf0\x83\xa8\xc9\x62\x3c\x0f\x8b\xe9\x31\xab\x7f\x4a\xd9\x23\x32\x4d\xbe\x5d\x0e\x33\x42\x38\x21\xc4\x6c\x1a\x45\x5f\x3e\xb0\xbc\xfe\x3a\xad\x6a\x96\xb3\xd2\x3d\xff\x64\x19\xc7\x3c\x2b\x68\x64\xe0\x88\xe2\xd9\x0a\x39\x8c\x23\x2f\x1a\x6e\x21\x17\xaf\x50\x7b\xb5\x8c\x22\xef\xb3\x23\x84\x43\xc0\x74\x70\xf2\x54\x64\x77\x81\x90\x0e\x15\x35\x40\x8c\xd4\xc0\x33\x3a\x3a\xa4\xbb\x64\x03\xb5\xbc\xc6\xa9\x85\xbf\x58\xb7\xae\xfc\xa0\x0e\x8a\x2f\x8a\xbd\x38\x28\x0c\x84\x64\x73\xe7\x84\x90\x71\x6d\x20\x09\xc6\xe7\xad\x76\xf4\x0b\xf9\xa7\x38\xcb\xf3\x4b\x94\x90\x28\xc9\x09\xb7\x0b\x5d\x2c\x06\x5d\xa4\x88\x13\x74\x47\x3c\x1b\x55\xc8\xeb\x6a\x9a\xa9\xaf\xd6\x71\xdc\x4d\xde\x98\x6b\x45\x76\x9c\x66\x35\x2b\xed\xaf\x5e\x4d\xc1\x7d\x77\xe8\xff\x8a\x69\xaf\x79\x30\x39\x85\xe7\x24\x13\x3f\x20\xda\x16\xf3\x26\xf2\x68\xd8\x00\x3f\xb8\x38\x41\x36\xb1\x65\xc7\x44\xb1\x69\x1e\x7a\x6c\x3e\x22\x72\xfb\x2e\x85\xae\x17\xfa\x8e\xe7\xb7\x2d\x72\xfe\xf7\x83\x12\xcd\x5d\x44\x28\xdd\x38\x05\x6e\x3f\xff\x26\xc6\xdf\xf5\x8d\x13\xc7\x0f\x34\x3b\xb2\xff\x7f\xcf\x88\x10\xf7\x4e\xce\x0b\xe7\x3b\xa0\xc6\x90\xc4\x17\xfa\x87\x07\x1d\x53\x17\x92\x5e\xec\xaf\x19\x09\x26\x40\x88\x22\x8d\xa5\x8b\x09\x13\xdc\xdc\xff\xac\x09\x49\xcc\xc1\x82\xa9\xf9\x78\xfb\xf2\x2f\x64\x7a\xdf\xba\x53\x0c\xfe\xef\x4d\x95\x56\xfc\x22\x17\xe3\x00\x3f\xe1\x06\xe7\x14\x33\x55\x77\xfc\x93\x4c\x2e\x8e\x88\xe7\x63\x46\x96\xa3\xd9\x1f\x54\x0e\xb7\x3c\xd7\x20\x81\x40\x27\x45\x47\xc5\x70\xad\x86\x38\x55\x16\x6a\xd8\x5b\x72\x64\x61\x07\x34\x91\x22\x77\xe3\x0e\x5e\x40\x16\x38\x9e\x21\x8d\xcf\xfa\x8f\x81\x69\x58\xfc\x80\x3a\xc5\xa2\x0b\x5c\x18\x45\x2d\x2e\xf9\xc0\xef\xf9\x1f\xc1\x8b\xf5\xa8\x6d\x3c\x85\x70\xd7\x3e\xc2\x66\xe7\x68\x2c\xcf\x59\xc9\x8f\x4a\x62\xdc\xd2\xab\x34\x22\x1f\x19\xf3\xe3\xdc\xf8\xe8\xc5\xed\x0d\x7d\x71\x2b\x64\x68\xfd\xe7\xc5\xa6\xdc\x6c\x3e\xba\xda\x57\x34\xcb\x8a\xc7\x90\x1e\xea\x63\xc9\xc8\x47\x1f\xbd\xb8\x2d\x0e\x40\x13\x28\xf1\x3e\x7c\xbb\x11\x1f\x5f\xdc\xde\x88\xcf\x2f\x0c\x4c\xcf\x17\xda\xf0\x86\xd5\xbd\x23\x1f\x7d\xe4\x77\x48\xdd\x34\xef\xc5\xca\x18\xde\xf5\xbb\x67\x3e\xe9\x25\xed\x1f\x35\x1b\x63\x03\x32\xd8\xc9\x4a\x55\x4f\xfa\xaa\x9a\x46\x55\xd5\xcb\xf4\x5d\x07\xf6\x46\x23\x04\x99\x97\xea\x4a\xa3\x7f\x13\x31\xfe\xa9\xda\xfe\x4d\x2e\x94\x73\xe4\xa5\xc7\x44\x99\x3e\x69\xb2\x24\xfd\x13\x34\x37\xbf\x9e\x28\x6a\xff\xc9\x9e\x7b\xf3\x7f\xfb\x70\xcc\x8e\x96\x97\x8e\xd6\x73\x5b\xb2\x98\x7c\xf4\xd1\x55\x47\x54\x7e\xa4\x9e\x86\x0b\x3c\x99\x2e\x56\xef\x46\x5b\xbe\xf5\x05\x4e\x4e\x10\xf1\x68\x3d\x66\xc7\x39\xc8\x1b\xd8\x10\x37\x37\x30\x54\x1d\xfa\x02\x34\xca\x9e\x73\xe2\x01\x1b\xaf\x2e\x2d\x03\x4f\x27\xd1\x14\x6c\x40\x49\x21\x63\xee\x2e\x65\x0c\x84\x9f\xcf\x38\x2b\x36\xb1\x30\x2c\x87\x41\x4e\xd4\xd4\x25\x61\xc3\x51\x73\x61\x20\x7c\xb6\x6f\xba\x19\x9b\x2d\x2f\x37\xd3\x57\xf0\x47\xdb\x99\xaa\xe6\x1a\x3b\x4f\x06\xc2\xaa\x24\xb6\xaf\x1d\xbe\xf6\x88\x23\x80\x3d\xe7\x93\x59\xa5\xf2\x2b\x64\x50\x91\x42\x25\x35\x4d\x61\x3f\xb2\xe0\x2e\xad\xbf\x19\xe6\xe5\x09\xfb\xe2\xb7\x89\xaf\xc5\x54\xce\x6a\xf4\x91\x63\x97\x11\xf4\x85\x7c\x56\xc2\x22\xcf\x61\xe3\x41\x7e\x52\xc9\x6b\x6e\x0c\xb7\x38\xfd\x9b\x57\xcd\xf8\x3e\x87\x91\x95\x72\x64\x33\x62\xe0\x6f\x39\x54\xdf\x93\xfb\x6e\xc2\x34\xa9\xfa\xbd\x14\xcf\x34\x9c\x20\x2c\x49\x39\x95\xa7\xd4\xf3\x04\x6a\x3e\x0a\x3b\x2c\xf6\x9c\x9b\x53\x04\xfd\xf7\x45\x95\xf2\x6e\x23\x5c\x93\xa0\x69\xb4\x6c\x79\x4d\xd3\xbc\x42\xee\x94\x64\xf5\xb3\x01\x6b\xef\xd2\x31\x61\xef\x50\x1c\x09\x21\x69\xcf\x39\xae\xb5\xfb\xd9\xa8\x69\x66\xd6\x2c\x12\x12\xd0\xa8\xab\x88\x7f\x0d\xbb\xa6\xdd\xfe\xd1\x8a\x90\x43\x2f\x75\xdd\x34\x57\x7f\x36\x2f\xa6\x82\xf6\xdd\xf8\xe8\x4c\x63\x2b\x90\x02\x85\x80\x0c\x04\x5a\x3c\x45\x23\x10\x66\xcb\x75\x27\x78\xc1\x9f\x93\xc0\x3d\xab\x87\xea\x77\xbd\x19\xdf\x05\xcb\xb5\xb8\xb6\x98\x5d\xec\xd3\x62\x16\x5c\x4a\xea\x4e\x5d\x37\x72\xac\x88\x4c\x31\x7b\x84\x10\xeb\x5c\x20\x8c\xdc\xcb\x53\x10\x20\x67\x85\x57\x26\x9f\x75\xa1\xe7\xf9\x8a\x71\x16\x88\x45\x42\xb7\x6c\xba\x10\x34\x14\xb9\x7c\x7c\x79\xd3\x8c\xfa\x41\x08\x79\x30\xcd\xda\x7a\xc0\x14\xb9\x8b\x95\x13\x88\x5c\xc1\xa5\x5c\x01\x72\x57\xce\x9d\xfb\x95\x75\x87\x29\x5a\xf0\x9f\x00\x39\x4b\xe7\x13\x33\xe2\xa5\x57\x53\x0b\x74\x69\x62\xc3\x4e\x4f\xa8\x5f\x36\x20\x7e\xb4\xd7\x84\x78\xd4\xc7\x5b\xe2\x05\xbe\x10\xa3\x37\xcd\xac\x93\x39\xc3\x88\xba\x4e\xbb\x2b\x87\xf1\x97\x78\xaa\x83\xbc\x30\xd3\xe5\xd5\x52\xd6\xb5\x0e\x09\x5d\xf7\x02\x29\x0d\x7e\x12\xfb\x98\x0b\x91\x61\xc8\x73\x05\xd3\xb9\xb6\x7a\x2e\x29\x74\xf0\x22\x9f\x10\xb2\xf5\x22\x1f\x45\xf3\x79\x0f\x07\x19\x85\x34\x0c\x29\x8e\xcc\xf6\xc0\xbb\xbc\x55\xcf\x2b\x67\xd9\xe2\x1c\x39\x79\x8b\x13\xaa\xf0\xdd\xf4\x5d\x14\xdc\x6c\xe4\xc7\x2c\x13\x7f\x02\xa4\x17\xe9\xb0\xe7\xd9\x62\x4c\xc1\xa1\xba\x7f\xa0\x70\xff\xd0\xf1\x32\x6f\xb0\x41\x3e\x7a\xb6\xe2\xa4\x0b\x3e\xc3\xcb\xa6\x79\x00\x99\x79\xd0\xc9\xcc\xcb\xa6\x99\x95\x02\xeb\x04\x42\x29\x52\x93\xa2\x07\x08\x81\x64\x59\x6c\xa8\x0e\x69\x06\x40\xd1\x46\x4d\x33\x81\x68\x39\xa8\x2a\x6c\x24\xef\x54\xfa\x0f\x1d\xa6\xe9\x64\x8b\x52\xc0\xca\xd0\xa9\xed\x67\x28\xc0\xb9\x98\x1e\x8f\xfa\xea\xc4\x7a\xb1\x84\x99\x52\x18\x69\x72\x76\x7f\x67\x96\x94\xf9\x41\x42\x41\xca\x30\xaa\xe2\xc3\x85\x01\xf4\x19\x19\x48\x62\x47\x8a\x42\x3e\x8e\x09\x33\xcd\x2f\xc4\x2c\xe9\x39\xf1\x28\x27\x72\x19\xdc\x6f\xcd\x0e\x8a\xb7\x50\xe0\xd6\x69\x13\xc7\x6e\xec\xe8\xc2\x90\xa6\x99\x1d\xdc\x11\x6f\x1d\x20\xc7\x8a\xc9\x04\xd3\x09\x0b\x19\xdb\xd5\x81\x85\x69\x9c\xb2\xc8\x8d\x05\xe7\xe5\x80\x1c\x9a\x8f\x9f\x55\x21\x3d\x30\x72\xce\xbf\x8f\x14\x1e\xc5\xf5\x86\x28\x52\x96\x03\xc8\x3c\x57\x3f\x36\xde\xbc\xcf\x6b\xfa\x74\x05\x39\xf1\xd5\x31\x2f\x59\x58\x24\x79\xfa\x1b\x8b\xae\xd8\xd3\xa1\x64\x55\x95\x16\xb9\x73\x65\xcc\x65\x95\xc7\x3c\xbd\x3f\xb2\x37\x45\x39\x25\xff\xd2\x18\x2b\xc0\x03\x19\x99\x85\x76\xc4\x6a\x16\xd6\xaf\x8e\x87\x2c\x0d\x69\xcd\x2a\x7c\x47\x24\x4a\x7d\x53\x73\xd2\x05\xa4\xda\xe2\x62\x97\xd3\x30\x3c\xc1\xfa\x1c\xe1\x4c\xb1\x5d\x01\xa1\x5e\xcc\xd9\x2e\x38\x64\xbc\xd8\x07\xa1\x97\xe4\xb9\x62\x84\x34\xa1\x3b\x95\x3a\xf8\x20\x77\xc4\x2b\xa4\xe0\xf3\x0e\xa4\xf9\x98\xb6\x98\x91\x04\x26\xff\x2d\x7b\x9a\x1a\x40\x48\x0c\x03\x70\x65\xac\x9d\xd5\x3d\x3b\xce\x19\xbf\xb8\x69\x3e\x13\x3f\x2b\x78\x15\xcc\xda\x99\x46\x28\x18\xe8\x80\x3e\x43\x5e\x77\x58\x54\xff\x08\xda\xc4\x94\x50\x1b\x74\x17\x80\x36\x5c\xd3\x35\xff\xa0\xcb\xea\xc3\x39\x68\x3b\x77\x17\x86\x1f\x8b\xa6\x3f\xd1\x11\xac\xe8\xe9\x4f\x1c\x5a\x44\xbe\x7e\xde\x80\xc9\x87\x3a\x82\x5e\xa2\xd1\xe2\x48\x88\x32\x05\x7e\xa9\xc8\x49\xbb\xc8\x71\x3e\x5d\x62\x41\xa1\x7f\x5f\xb1\x63\x54\x38\x29\xc5\x80\x90\x9c\x9f\x70\xbf\x3b\x9c\x53\x8b\x39\x5b\xcb\x7f\x4b\x96\x81\xde\x83\x73\x32\x5e\x18\xce\xf9\x3d\xb8\x30\x0a\x99\x2d\x5b\x6c\x5c\x4d\xa4\xb7\xd8\x98\x77\x9f\x4b\xf6\x90\x16\xc7\x4a\x8e\x7e\x50\xf6\xdf\x97\x32\xb5\x2d\x3e\x94\xec\x35\x08\x8d\x9c\x13\x28\xcd\x4c\xc9\xb8\xbc\x95\x4f\xf8\x9f\xa1\x00\x09\x53\xef\x63\x9f\x58\xfc\x6f\xd3\x50\xef\x13\xf8\xfb\xa9\xdf\x34\xfa\x8e\x12\x39\x39\xaf\x06\x10\xf8\x9c\x43\x20\x94\x33\xf8\xbe\xf0\x3e\xf6\xe1\x42\x0c\xf7\xfa\x09\x9f\xa0\x56\x6a\xe3\x7c\xb0\x27\x03\x04\x83\x8d\xbc\xde\x8a\x06\x56\x7e\x57\xd3\xc7\xc8\x95\x9d\x53\xdb\xd9\xa2\xde\xd2\xe7\xfd\xfe\xc4\x27\x73\x8b\xff\xb8\xbc\xc7\xfc\xf1\xcf\x7e\xd3\xac\x90\xf3\xfc\xda\x32\xd8\x03\xcb\x45\x65\x1f\x83\xfa\x78\x14\xa9\x37\xc4\xcb\x7e\x2a\xca\xfe\x5f\x7f\x4e\xbd\xff\x3e\xcb\xe0\xf0\x1f\xd3\x1c\xb7\xd8\x2a\xd5\xa3\xa9\x7d\x33\xe3\xcd\x9b\x26\x9f\x1d\x05\x68\x3f\xd9\x30\x07\xf2\x26\x94\xd7\xe1\xf2\x6d\xe8\xc0\x80\x5c\x9e\x93\x0c\x67\xdc\x09\x4d\xf3\xad\xc8\x1e\xf2\x63\x2d\x20\x89\x15\xe2\xd9\x12\x89\x97\xce\xfa\xce\x32\x90\xd1\x5d\x47\x2c\x02\xb4\x50\xcf\x08\x16\x66\xc9\xeb\x5d\xf6\x73\x18\xf0\x11\x3f\xf7\x95\x6d\x1f\x7c\xd1\x57\xeb\x63\x84\x5a\x0e\xce\x02\x80\xde\xbe\xfc\xcb\x84\x31\xc4\x48\xee\x38\x7d\xe1\x25\xc4\x45\xee\x99\x22\xef\x6c\x20\x87\xd2\xc4\xae\xea\x72\x81\xa3\xc0\xe9\xbb\x2e\x29\x74\x14\x9a\x64\xe7\xdd\x7a\x2f\x6f\xd2\x3b\xb3\xb2\xa6\xb1\x82\x81\x32\x91\xf5\xae\xd3\x86\xa3\x73\x43\x68\x10\x35\xcf\x90\xc1\xe7\xf4\xbd\x45\xf1\x44\xbf\x02\xb1\x04\x13\x38\x2d\xec\x05\x4e\xda\x4b\xd3\xfc\xbe\xb0\x75\x2c\x68\x95\x22\x7f\x03\xc1\x4e\x6b\x51\x8b\x47\x1b\x77\xa0\x27\xdf\x7d\x56\x77\x52\x44\xd2\x03\x56\xa4\xd9\xd4\x09\x6d\x7a\xe6\x72\x5e\x90\xcf\x9b\x33\xe3\xd3\xc1\xe6\x1c\xa7\x1b\xe2\x93\xcb\x29\xd3\xd0\x51\x39\x5c\x36\x83\xd7\x77\xf2\x35\x34\xcd\x25\x21\x84\x75\x80\x16\x22\xc7\xb8\xee\x13\xf5\x84\x17\x8b\x95\x63\x3c\xd3\xd3\x04\x3c\xf5\xc0\x28\x9a\xfa\xb7\xcc\x62\x71\x64\xc1\x3a\x30\xfa\x8e\x63\x43\x50\x4d\x42\xe3\x4a\x1b\x51\x02\x8e\x39\xb8\xdb\x64\x1d\xa8\xaa\xba\xe7\x2b\xa8\x7d\x6e\x2c\x0c\x00\xde\x31\xb2\x51\xd6\x65\x52\x15\x87\x00\x6e\x01\xb2\xae\x07\x7a\x9c\x10\x23\xa3\x55\xad\x7f\x5f\x7c\x82\xf0\x96\x18\x52\x1f\x10\xba\xa1\x66\x97\x1f\x76\x91\x9c\x1f\xf7\x1c\x6a\x66\x33\x9d\xb9\xd0\xe0\x9d\xf7\x24\x15\xfd\x18\xe8\x34\x93\x78\x46\x48\xe2\x1a\xda\x69\x67\x4c\x9c\x00\xf7\x43\x2e\xa5\x24\x5b\xce\x80\x4d\x6f\x16\x5c\x91\x59\x6a\x9a\xb3\x2d\xae\xc9\x6c\xc5\x8f\xed\x7b\x38\x9d\x63\x45\x4a\x1c\xd0\x69\xdf\xf1\x17\x7b\xb2\xf7\x0e\x20\x02\xdf\xba\xfb\xcb\xdb\xaf\x74\xf8\xc8\xf7\x63\x32\x78\xb6\x5a\x17\xe4\x40\x8c\x22\xcf\x40\x05\x9c\x9a\xe6\xac\x30\xcd\xc1\x70\xda\x6e\xfb\xa7\xb1\x55\x10\x2f\x71\xef\xb5\xd3\xde\xb9\xb7\xf9\xf4\xc3\xb3\x8f\x13\xd3\xac\x78\xef\xee\x71\x46\xf6\xde\xd1\x6f\x1a\x8b\xff\x80\x3d\xde\x1d\xc9\xbc\xbd\xa4\xbc\xbe\x7a\xc5\x93\x06\xef\x90\x67\x47\xee\x3c\xea\x83\xea\x54\x4e\x76\x1c\x07\x82\x3e\xd3\xce\x5b\xf9\xb8\xe6\x14\xf1\xce\x7b\xee\xe3\x3d\x7f\xba\xd7\xb4\xca\xbc\xdc\xef\xa6\x63\x3e\xe7\x84\xb3\x69\xf2\x69\x69\x1a\xab\x26\x39\x59\xa2\xa6\x29\xec\x43\x71\xb0\x40\x19\x6a\x38\x13\xa6\x39\x9f\xd7\xa6\xb9\x07\xa6\xf3\xc4\x9b\x27\xde\x23\xce\x71\xed\xaf\x85\xa1\xcf\x40\xcd\x69\x4f\x82\xff\x37\x43\x43\xb8\x16\xb6\x42\x7f\x7c\x1c\xff\xe1\x8a\xcb\x81\xc2\x30\xfe\x67\x43\x50\x93\x53\xfb\x08\x8b\xf9\x1a\x5a\x36\xd5\x0b\xc2\x60\x18\x51\xd3\xd4\xff\x15\x11\x42\x96\xa6\x59\xdf\x44\x2f\xc8\xb2\x6d\x27\xce\xdd\xfe\x2e\x03\x28\x61\xa0\xd4\x2a\x98\xa4\xc8\xae\x58\x2d\x88\xa1\xca\xa3\x23\x6e\x47\xa3\x22\x8c\x63\x2e\x2f\xd0\x59\x74\x25\x2a\x10\x54\x7e\x67\xb9\xe3\x1d\x7d\x17\x18\x16\xa6\xd8\xb9\x95\x6b\x85\xc4\xa3\x98\x62\xc3\xc0\x81\x8f\xf5\xb6\x46\xd6\x02\x16\x1d\xb3\x4f\xba\x72\x01\xed\x6d\x80\x62\x02\x7c\xd5\x05\x95\x82\x88\x7c\xc5\xcf\x28\x2f\x01\x8a\x27\xf2\xc9\xcc\x0a\xf9\x0f\x7c\x69\xd1\xd4\xa9\xca\xab\x5b\xe2\x90\xa7\x32\x4e\x1a\x8a\xb9\x71\x4e\x79\x51\x3b\xe9\x50\xe6\x28\xce\x50\xcf\xc7\xd2\x43\xc0\xf6\x5c\x51\xaa\xbf\xd2\xe1\xd3\x31\x1c\x03\xc7\x6c\x9d\xb2\x63\x42\x22\x25\x25\x60\xd8\xf3\x39\x1a\xa5\xe7\xea\x63\x56\x4c\x12\x6f\xeb\x0b\x3a\x65\xcb\x87\x13\xf0\x9f\x18\x0d\x07\x83\x19\x8e\xfb\xe3\x18\x08\x1a\x1c\x71\x16\x9b\x57\x0f\x16\x4d\xf0\x11\x5e\x67\xa1\x80\xeb\xb6\x45\x78\x4b\xab\xf1\x18\x2f\x6a\xbb\x48\x85\x4d\x8d\x57\x6f\x11\x56\xac\xfa\x85\x5a\xe8\x98\x0e\xc2\xe7\xf5\x5a\x81\xce\xe5\x80\x3a\x4b\x9e\xb3\x92\x33\x5c\x4d\x03\x7c\x6e\x77\xde\x51\x7e\xde\xf1\x66\x33\x9a\x27\x17\x9a\xfc\x51\x92\x8f\x40\x27\x5c\x82\x5f\x28\x0f\xd0\x8b\xcf\xba\x38\x3a\x22\xce\xd4\x8c\xd6\x51\x71\x05\xd7\xa0\x07\x37\xb0\xa1\xa2\xb1\x06\xe1\xd3\x3e\x73\x78\x02\x6f\x7f\x9c\x26\xbe\x77\x76\x2b\x24\x1c\x35\x17\x0a\x9d\x9e\x25\xdc\x18\x76\xe3\x86\x73\x5b\x82\xc5\x58\x9a\x3a\x56\xfa\x42\xbd\x34\xb5\x45\xb8\xa6\xe5\xc0\x91\x81\xae\xb8\x5b\x84\x54\xc8\x76\xfb\x67\xbe\x2b\xb7\x83\xab\x6c\x71\xce\x03\xf9\x10\xd8\x69\xd4\xe2\xb2\x28\x26\x1d\x23\x50\x42\x48\xd1\x62\x30\xb0\xb9\x94\x9e\xdb\x34\xe4\xac\x9f\x14\x61\x9b\xa6\x35\x83\x26\x5f\x83\x55\x4e\xd3\x3f\x5b\x9c\xdc\x9c\xcd\x38\x56\x00\x99\x35\xb5\xb7\x25\x8b\x9b\xe6\xdf\xd4\xae\x69\x00\xfa\x6b\x60\x97\x0f\x57\x19\x4e\x41\xad\xd9\x0a\x61\x75\xb5\x01\xef\x4b\x84\xe5\xb5\xd7\x24\x75\xfe\x07\x35\xd1\x02\xde\x0b\x6a\x2b\x83\xa2\xc6\x10\xf7\x54\x5a\x92\xba\xfa\x6b\xb1\x7a\x9a\x26\xdd\x75\xfd\x30\xfd\xad\xab\x00\x06\x85\xfb\x0a\x41\x85\xbc\xc5\x6c\x7f\xa8\xdf\x0f\xaa\xfc\x43\x72\x80\x34\xb6\x7a\x81\xc4\xed\x9f\xa7\xec\x8f\x45\x1f\x26\x7a\x3b\xeb\x4e\x08\x1b\x5a\x87\xab\xe0\x2d\xa3\x11\x2b\xa7\xc6\xf6\x8b\xdc\x71\xdd\x9c\xa2\x16\xc3\x04\x4e\x65\xfe\x79\x22\xb3\xd0\xc4\xfb\x5f\x2e\x93\xa6\xcf\xa7\x80\x46\xfb\x14\xb4\x18\x0c\x45\xce\x6d\xb4\xc7\x55\x5d\x6a\xd3\x34\x0d\x5e\x43\x5f\xbf\x69\x5a\x82\x81\xb0\x02\x32\xe6\x55\x80\x18\x46\x9c\x57\x51\x65\xc6\xd2\x41\xe5\xfb\xe2\xa0\x21\x31\x35\x49\xde\xd2\x07\x1c\x37\x4a\xd6\x84\xa0\x5e\xb0\x58\xf1\x3c\xec\x7e\x9c\xa3\x67\x82\xbc\xf0\x76\xe9\x86\xf3\xc0\x09\x21\xe7\x03\xcb\xcf\x6b\xd3\x2c\xed\xd6\xe1\x6d\xb0\x0e\xe7\xe4\x39\xa2\x63\xed\x04\xda\x22\x5c\x44\xd1\x87\x8a\xaf\x7e\xa7\x78\x76\x36\x94\x81\xfd\x30\xe9\xfa\xba\x5e\x2c\x38\x11\xb3\x56\xd5\x44\x83\x6a\x92\x3f\x5c\xcd\x7c\x1e\xdd\x06\xd3\xb5\x80\x4e\x8e\x02\xf0\xbc\xde\x12\x0d\xdc\xef\x3b\x9b\xfd\x53\x49\xa3\xb4\x70\x66\x4b\x81\x46\x82\xe2\x89\x3f\xc7\x69\xc6\xf8\xef\x81\x56\xd5\x63\x51\x46\xfc\x39\xdd\xd3\x84\x7f\x6c\x51\x4f\x59\x05\x3e\xd9\x53\x2b\x40\x7d\x75\xd5\x31\xd8\xa7\x35\xcf\x5f\xb2\x8a\xd5\xe7\xf9\x73\x91\x5f\x29\x3c\x96\xd4\x42\xa7\xb6\xa4\x9a\x6b\x1b\xa5\xe9\x54\xf5\x3d\x1e\x90\x54\xc0\xc7\x97\x14\x27\x9c\xdb\xad\x8b\x3b\x96\xa7\xbf\x31\x32\x49\x04\xea\x66\xa3\xe4\x37\x25\x14\x48\x63\xeb\xae\xd3\x0b\x71\x97\xce\x5d\x27\x67\x5d\x6f\x09\xc5\x29\xa7\x7a\x76\xbc\x71\x25\x3e\x53\x94\x0a\x3a\x85\xa6\x39\xb3\x18\xf9\x87\xb0\x85\xd8\x82\xbb\x05\xbe\x45\xb6\x64\x2b\x2b\x61\xde\xd2\x57\x9c\x6e\xd3\x6c\x11\x4e\xa5\x44\x96\x78\x3e\xe2\x07\xdf\x6c\x85\x2d\x46\x7e\xe8\x6a\x00\x0b\x69\xa6\x94\xc3\x71\x2c\xb2\x9f\x84\x94\x3b\x14\xee\x13\xa0\x52\x8d\x04\xbb\x02\x45\x85\xbe\xd1\x8e\xb7\x16\x2b\x91\x5c\xa5\xf9\x95\x9a\x46\xc4\x3b\xfc\x93\x97\xf8\x5a\x9f\x77\x5e\xe2\x8b\x91\xf0\x27\x8b\x49\xb7\x11\xbf\xd3\x8b\x04\xcb\x2b\x18\x87\x5d\x6a\x3d\x8d\xad\x59\x28\xfd\x19\x74\x33\xbc\x95\xe9\xce\xd6\xed\x65\x67\xc8\xf9\xcd\xa2\x38\x45\xdd\xdc\x6b\x4e\x9f\x2a\xaa\x0e\x00\x81\x20\x97\x78\x60\x81\x63\x18\xeb\xe0\x36\x5c\x07\xf3\x39\x8a\xe6\x60\x5c\x2e\xee\x04\x7a\x35\xa3\xae\xa6\x9a\x0e\xed\xbf\x02\x3b\x4a\x4b\xcc\x38\x1d\xc1\x9e\x6a\x4e\x65\x37\x4d\x84\x13\x12\x9a\xa6\x2e\x7c\x25\x84\xc4\x78\x4b\x9e\xfa\xcb\xb3\x40\x9c\x43\xee\x80\x7f\x67\xbd\x2c\x3e\xf0\x22\x5f\xb1\x82\x81\x76\x0b\x9d\x74\xd2\x68\x59\xa2\x27\x5b\x3e\x24\x0b\xe0\x4c\xd1\x16\x20\x35\x3d\x6f\x63\xa2\x11\xd3\xa4\xb2\x96\xee\xb6\x79\x28\xf3\xbe\xdc\x3f\xb8\x8f\x08\x04\xf3\x16\xe8\xcc\x5b\x30\x62\xde\x82\x11\xf3\xc6\x4c\x93\x91\x0f\x58\x9d\x88\x46\x9b\x26\x58\x2b\x73\x1c\x8b\xb3\xac\x31\x27\xf3\x87\xec\x2a\x21\x64\xab\xe6\x69\xef\x3d\xf7\x09\x67\xca\x61\x9b\x7a\xb1\x4f\xf6\x18\xbe\x9d\x0f\xb0\x27\x00\xbb\xf5\x3e\x0e\xf4\xa7\x7b\x06\x6d\x30\xd5\x9d\xb4\x8c\x9e\xdb\x27\x80\xe3\x36\x8f\xf9\x32\xe3\x04\x41\xe1\x50\x7e\x70\x75\x2d\x3e\xd0\x73\xfc\xbc\x04\x08\xeb\x7c\x4f\x30\xf0\x3d\x21\xf8\x0a\x2f\xf2\x71\xa8\xdd\x39\xf4\xf6\xf8\x54\x17\x4f\xa9\xba\x38\x03\xe5\xf9\x78\x4b\x96\x38\xed\xb7\xc0\x8e\x08\xcf\x0d\x41\xe7\x7e\xc8\x8a\x09\x95\x0c\x14\x47\x51\xa1\x15\x43\x3d\x4d\x63\x25\xea\x42\x08\xef\x40\x89\x82\xbf\x6c\x91\xee\xd7\xa7\xeb\xc2\x93\xd6\x05\x8d\xd1\x8a\x4c\x73\xc6\xd9\x3c\xd3\xb4\x22\xf2\x44\xad\x08\xc1\xda\xcf\x98\xf8\xc6\xf8\x37\x9e\x1f\x0d\x14\xe5\x25\xe6\x1d\x41\xb5\x8f\x73\xfe\xa7\x20\x89\x1a\xcb\x81\xc4\x4d\xf3\x40\xad\xa0\x69\x8c\x6b\x03\x6f\x7b\x55\x10\x6f\xeb\x3b\x5b\xe0\x19\xef\xc9\x8c\x36\xcd\x2c\x36\xcd\xc0\x3d\x38\x8f\xd4\x3a\xe0\x3d\xa6\x50\x3d\x2e\x49\xe8\xb2\xa6\xb1\x62\x97\x3a\x45\xd3\x44\xc8\xf5\x7c\x27\x71\xee\xc1\xd2\xc3\x34\x43\xeb\x1e\x97\x22\x67\x84\x4e\x3b\xf2\x48\xad\x12\xe7\x08\x47\xd6\x0e\xf3\x89\xe5\x09\x77\x64\x37\x04\x84\x3b\xce\x92\x66\x64\xe7\xdd\xc1\x8c\x96\x5e\xee\xdd\xf9\x9c\x2b\xbd\x97\x4f\x19\x42\x6d\x77\xfb\xc5\xe9\x76\xf1\xc0\x1b\xf0\x7c\x7c\xd7\xa9\xd1\x0c\xeb\x2b\x45\x7d\x3b\xb1\x08\xf7\xde\x1d\xaf\x68\xcd\x80\xbe\x12\x3a\x88\x3b\x9c\xa2\xf6\x77\x8a\x5b\x3b\xc2\xdc\xaf\xac\x18\x67\xc8\xd9\xf3\x4f\x2f\x16\x2b\xd3\xb4\x62\x6f\xc7\x7b\x98\xf0\x1f\xde\x3d\xb1\xfd\x4b\x18\x30\x21\x24\x71\x4b\x75\x09\x58\x60\x55\x3f\x72\x4a\x84\x99\x2b\x7b\x90\xe0\x12\xa7\xc8\x51\x36\x57\x09\x2e\x07\xa6\x09\xef\x87\x48\x19\xc3\xf1\xda\xc3\x64\x42\x22\x5b\x5d\x79\x79\x70\xcf\xc0\xcf\x0c\x0e\xba\x49\xd3\x68\x49\xfc\x04\xc6\x29\x49\xdc\x95\xb3\xc4\x77\x97\x2c\x4c\x05\x2d\xbb\xc5\x9c\xbf\xc9\x2e\x64\xfa\xca\x0a\xb0\x60\x95\x65\xc6\x3d\xf1\x74\x51\x4a\xbf\xcf\x67\x09\x87\xdd\xa6\x09\x67\x84\xec\xf8\xa6\xb0\x02\x12\xa2\x1e\xd2\xee\x64\x76\x27\x93\x0f\xbd\x3f\x3a\x21\x4c\x60\xad\xbf\x4e\x6f\xe3\x75\x2a\xfc\x32\x84\xc3\xb1\xa6\x72\xac\x68\x4f\xbc\x9a\x5a\x47\x6a\xed\x11\x0e\x91\xdf\xe1\xbd\xb0\xa3\x69\xb4\xdc\x72\x9a\xc5\x0d\x2c\xff\x2a\x0f\x57\x84\x43\xef\xe8\x8b\x99\x66\x64\x3e\x4f\xd7\xec\x36\x5e\x33\xd1\xf2\xa0\x5d\xa6\xda\x1d\xc8\xcc\x9e\xa8\x95\xbe\x58\x99\xa6\xe8\x06\x3c\xf2\xf3\xb4\x93\x70\xa7\x8b\x15\x52\x0e\x53\xe4\xf9\x6e\x5c\x89\x4b\xae\x74\xf1\x5c\x54\xe9\x1a\xd7\x86\x63\x18\xad\xe6\xc7\x4b\x59\xc8\x85\x38\xbd\x65\xa6\xf9\xbe\xaf\x32\xc5\x8c\x63\x84\xdb\x58\x7c\xed\x84\xe6\xdd\x57\x38\xce\x51\xbb\x57\x14\xb3\xa2\x0c\xa0\x87\x3d\x80\xfd\x36\x34\xfe\xea\x04\x30\x9a\x23\x9f\x17\x4b\x1c\x93\x31\x8a\xc1\x77\xa2\x4c\x86\x0b\x7c\x8f\x4b\xb2\xc4\x15\x31\x96\x06\xae\x49\x6c\x9a\x9e\x8f\x8f\x7c\x67\x3d\x90\x1d\x7e\xe2\xa8\x06\xf4\x92\x95\x6a\xb6\xc5\x51\xce\x1d\xc2\xef\xc9\xe3\x9c\x08\x36\xe7\xc1\x5d\x39\x03\x57\x66\x4d\x63\xaf\xf0\x6f\xe4\xa9\xf3\xbd\x53\x94\xd6\x9d\xf0\x2a\x27\x34\x95\x92\xa6\xb9\x43\xeb\x6a\x46\xc8\x6f\xa6\x29\x9d\xc0\x65\xe4\xc9\xab\x7c\xb4\xae\xe6\x73\x81\x1a\x4c\x33\x43\xa7\x82\x2c\x71\xd2\x34\xd9\x99\x6a\x53\xde\x34\xd6\xde\xca\x38\x51\x35\x3b\x28\x09\xc8\x3d\xa1\x5e\x21\xb5\xd1\xef\xad\x8c\x97\xcc\xf1\x16\xa1\x93\xa4\x28\x33\x24\xe5\xc9\xbc\x37\x8f\xe4\x3d\x6a\x43\xd3\xb4\xac\x8c\xcc\xee\x79\x6b\xa6\x59\x2e\x16\x38\x36\xcd\x5a\x65\x07\x9c\x55\xce\x49\x85\x43\xd3\xe4\xfd\x2d\xa1\x4b\x5d\x73\x81\x68\xee\xde\xaa\xf1\x91\x4f\xad\xa6\x70\x5f\xbe\x58\x4a\x39\x72\xb5\x58\xa0\xda\xab\xfc\xa6\x39\xc2\x5f\x8b\xff\x90\x2f\x85\xa6\x48\x8a\xd0\xfa\xc8\x51\xce\x11\xb5\x0a\x8f\xa4\xf8\x88\xf0\x9d\x69\x72\xf4\x7d\xec\xd6\xd1\x34\xcb\xce\x5b\x13\x07\xd1\x81\x0a\x85\x95\xf6\x2a\x0a\x62\x6c\x78\x47\x1e\x10\xae\xdb\xde\x34\x82\x9f\x35\xc8\x89\x55\xbe\x2d\x49\x84\xd2\x5a\x9a\x4d\xf3\x02\x52\x07\x03\xfc\x37\xbd\xd4\x38\x81\x59\x8c\x4e\xe2\x7a\x30\x01\x0b\xe0\x1e\xf2\x94\xbe\xd5\x62\x81\x62\xf2\x9e\x5a\x81\x17\xfa\x08\xc7\xde\xd1\x77\x3b\x2d\x0b\x87\xa9\xa7\x75\x4c\x5e\x5a\x14\xff\xc6\xcf\x42\x7e\x42\xc6\x9d\x22\x01\xa1\x9a\xda\x7b\xda\xab\x18\x90\x4b\x32\xd3\xce\xcb\x0d\x99\x72\x81\x66\x9a\x14\xe7\x64\xc6\x4c\x33\xb1\x28\xd9\x77\xcd\xf0\x53\x08\x0e\x3d\x12\xc2\x9d\xc0\x0a\x04\x51\x12\xd1\xf3\x35\x4c\x49\x0e\xd2\x51\xed\x0e\x98\x73\x27\x72\x0d\x9e\x9b\xa6\xf1\xd5\x2b\x8e\x07\xac\x1d\x49\xbd\xa5\x8f\x24\xfb\xff\xd9\xc8\xd6\xf2\xc0\x37\x50\x87\x85\x52\xb8\xb0\x07\x2c\x04\xaa\x90\xc4\xea\x0c\x41\xac\x9d\x42\x69\x3a\xf7\x22\xe4\xa3\x01\xe2\x7d\x44\xde\xd2\xc7\x33\xcd\xbd\xcd\x1e\x2e\xb4\x07\x72\x3f\xdc\x23\x94\x54\xb1\x27\x82\xdc\x57\x63\x6b\x63\xf2\x93\xad\xfb\xc9\x50\x36\xc6\xee\xd2\x49\x87\x6b\x19\x2f\x16\xd0\x4d\x3e\xc2\xd8\xc7\xda\x38\xc0\x67\xad\x86\x4c\x39\xb5\x9a\x11\x31\x16\x79\xee\x32\x92\x7d\x68\x48\xd2\xb4\x39\x55\x47\xdf\xb4\x89\xb3\xb4\xe5\x4e\xd5\x61\x1c\xe3\x15\x1f\x22\xeb\xf4\x6e\x2b\x6a\xa5\x08\xcf\xe8\xd8\x90\x9c\xc3\x07\x0e\xd5\x0d\x92\x84\x28\x6b\xdf\x34\x5b\x8b\xe2\x1c\x21\x8b\x81\x16\x16\x0e\xf1\x2c\x68\x9a\x0f\xdb\x59\x83\x0f\x36\x5d\xd7\x88\x1c\x95\xe1\xae\x81\x94\xa6\x91\x54\xfa\x05\x93\xa7\x23\x3e\xd7\x57\x22\xb3\x59\x86\xf7\x16\xc2\x43\x3d\xd0\x0b\xb6\x5e\xab\x0f\xa8\xd5\x7e\xc0\x8a\x79\x42\x1f\xbf\x23\xee\xa7\xd4\xf2\xff\x24\x74\xf0\x0d\x6c\xfc\x49\x88\xb0\x7a\xe9\xe1\x48\x76\xc5\xf3\x73\x2e\xba\x69\xee\xa8\x90\x64\x35\x20\x7b\xdd\xb2\x34\xd9\xd6\xcd\x63\x1a\xd5\x5b\x03\x8f\x65\x30\x82\xbf\x9d\xb6\x0f\x0b\xb0\xd1\xdd\x0e\x0f\x59\x21\x77\xe5\x3c\x17\x06\x7c\xbd\x16\xdc\x99\xa6\xf7\xe4\xb8\x40\x5e\x77\x03\x46\x1e\xda\x48\x86\x2a\xfe\xb0\x19\x0c\x70\xb1\x69\xfc\xce\xa0\x45\xd6\x6e\xd4\xb2\xe4\xe4\x20\x4d\xf3\xf7\x85\x85\xfd\x44\x28\x4b\x4b\x50\xb6\xba\xb4\x64\xd2\x19\xe1\xa8\x4f\xbd\xa6\xbe\xec\xd6\xdf\xce\x3a\x04\x5c\xd5\x7a\x38\xf7\x5e\xe0\x83\xe8\xd8\x1d\xcd\xb5\x03\x7e\xf2\xa6\xf5\x08\x23\x4d\x8f\x30\xd2\xf5\x08\x11\x4e\x68\x0b\x96\x77\xb0\xe1\xc9\x13\xf8\x3a\x3d\x94\xe4\xa9\x57\x07\x93\x9f\x3c\xc3\x31\x84\xef\xd4\x43\xd9\x89\xa7\x4a\x5d\xff\x4f\xbd\x90\x27\xed\x2b\x2e\x85\x6b\xea\x27\xa5\x65\x07\x6e\xf0\x7e\xf9\xe6\xeb\x57\x45\x48\x9e\xc4\x23\x2e\x7b\x9d\xd0\xa7\xee\x91\xb7\x0b\x2a\x8e\x9d\x4a\xed\x93\xfc\x00\x8a\x9c\xef\x2f\x78\xba\x81\xd3\xae\xd3\xc1\x0c\xd5\xad\x0a\x05\x79\x09\x12\x9e\x42\x7a\xd1\xb9\x12\x0d\x68\x5f\x24\xd9\x52\x82\x45\x53\x65\x85\xea\x6a\x56\x9e\x7d\xb4\x3b\xa2\xa3\x16\xff\x76\xd1\xb5\x99\xe7\x4f\x48\xed\xc7\xe6\xfc\x74\x06\xb2\xed\x50\xd5\xac\xa9\xe4\xbd\x54\x53\x0d\x78\x77\x80\xe6\x7b\x79\xd1\xe7\x43\xaf\x6d\x7f\x50\x7f\x68\xe4\x1b\x8f\xf7\xf7\x0b\x72\xf3\xee\x56\x78\xe7\xf6\xde\x6d\x6e\x36\xcb\x17\x0e\xf8\x38\xab\x37\xe5\x26\xdf\xc4\xfe\x35\xf2\x86\xef\x9b\x1b\xf7\x85\xe5\x3a\xb7\x9b\x9b\xcd\xea\x45\x03\x8e\x90\x5e\x91\x9b\x77\xb6\xf7\xce\xf9\xd3\xc6\xdb\xd8\xd8\xbf\x7e\x76\xd3\x77\xf4\xcb\x91\x02\xcf\xc0\x15\x62\x80\xdc\xd2\x4e\x4a\x76\x18\xa8\x1f\x71\x2e\xa6\x33\xc1\x56\x5a\xcb\x11\x06\x85\xde\xb0\x45\x4e\x7f\x34\x4f\x95\x1e\x72\x54\xb2\xc8\x99\x0f\x99\xe0\x83\x45\x7b\x17\x9c\x9c\xd9\x92\x75\xbc\x52\x5a\xd5\x6e\x29\x59\x1b\xe9\xa3\xd3\xb1\x02\xa2\x7f\x42\xf8\x3f\xab\x7b\xec\xec\xa1\x45\xa8\x55\xf5\x5d\x00\xf5\xc0\x5b\xfa\xda\x65\x9e\x45\x89\xe1\xe4\x45\x6d\x81\x6a\x17\x32\x10\x16\x42\x2f\x75\xc2\x82\xc6\x8e\x3e\x6b\x40\xaf\x8c\xb4\xcb\x41\x83\xca\xf5\x22\xdf\xf1\x7c\x67\x98\xc5\xa2\x6a\x48\xc1\xd4\x90\xce\xbb\x8f\x35\x87\xd7\xd6\x09\xf4\x43\x27\x54\x05\x71\x34\x70\xe5\xcd\xe0\x4d\x77\xaa\xd9\xab\x90\x29\x24\x38\xf6\x6c\xce\xb7\xaa\x9c\x79\xed\xb6\x05\x64\xf3\x64\xb9\x0e\x6e\x23\x90\x99\x72\x72\xbe\x37\x87\x61\x5e\xe0\x63\x70\xef\xde\x0b\xd6\xa4\x18\x39\x24\xa3\x06\x3c\x1f\x61\xbd\x26\x31\x2f\x16\xc5\x50\x89\x66\xe7\xf9\x62\xe5\xea\x28\xd1\x0a\x91\x13\x76\xaa\x84\x13\x73\x36\x6a\xe7\x4b\xe9\x43\x1d\xe8\xd8\xd9\x0a\x81\x2f\xe8\xc9\x7b\xb6\x0f\x16\x5c\x0a\xe7\xc5\x53\x57\x7f\x33\x99\xf3\x5c\x99\xcf\x34\x5f\x76\xf4\x23\x88\xa9\xbb\x5e\x28\x5b\xf3\x56\x68\xd0\xbf\xc6\x7f\x11\xce\xcc\x36\xd5\xb5\x75\xeb\x6d\x1e\x37\x3f\xfb\xf3\x17\xc8\x7b\xf7\xc2\xbf\x6e\xfe\xa4\xfb\x33\xfb\x2b\xe9\xa2\x06\x4c\x42\x30\xc3\x31\x1c\x6e\x83\x75\xed\x48\xf9\xd7\x13\x9d\x14\xc8\x99\x18\xb7\x82\x6f\x5f\xfa\xa6\x69\xbc\x10\xcf\xbd\xb7\x2f\xbf\x77\xe3\xf9\x82\x7c\xec\x7a\x42\xd2\x00\xca\x12\xbe\xf3\x17\xe5\xcd\x09\x83\x45\x0b\xf3\x78\x76\x45\x89\x73\x0a\x32\xb0\x45\x84\x01\xd7\x0a\x9a\x26\x44\x72\xa5\x91\x73\xe6\xfd\x3d\xe8\xd2\xc0\xc4\x45\x79\x85\x0a\x48\x70\x95\xe6\x55\x4d\xf3\x90\x77\xb9\x74\xf9\x2e\x75\x02\xac\x87\x01\xc0\xa5\x0d\x6e\xb1\x39\xb1\x03\x25\x71\xa0\xb4\xd8\x60\x6b\x4e\xf8\xaa\x8a\x60\x59\xf1\x17\x62\x8d\xa0\xb5\x73\x37\xe7\x81\x70\x98\xcb\xae\xd2\xfc\x2a\x40\x03\x24\x0b\x1e\xef\x99\x8f\x5c\xf9\x60\x05\xfc\x4d\x8c\x0a\x34\x27\x19\x86\x2f\xba\xef\xfc\x8e\x7d\x23\xd1\xd8\x28\x9d\x79\xcf\x39\x4f\x68\x9a\xa2\xe2\xa5\x4f\x62\xac\xed\x62\xb2\x42\x58\xaf\x41\x33\x74\xeb\x0a\xd0\x61\x01\xb1\x17\x9d\x91\x93\x5c\xb7\x3f\xc9\xed\x92\xd1\xe8\xbd\x2b\x7f\x01\x42\xad\x92\x17\xe8\x5c\x39\x5b\xa2\x4a\xd4\xae\xff\xaa\x5d\xab\x71\x18\xc4\xaf\x49\x69\x45\x02\x7e\xbf\x12\xd0\x2b\x38\x83\xaa\x39\x94\xec\xc1\x72\x9d\x1f\xf3\x3a\xcd\x1a\xb0\x74\xbe\xc1\x7f\x23\x27\x50\x89\x2b\x59\x0e\x37\x84\x42\x77\xa5\xe2\xcf\xe0\xc5\x6d\xb6\xc4\xbc\x98\x33\x5b\x8a\x08\x15\x1d\x8e\xdb\xd2\x6a\xca\x73\xba\xea\x98\xce\x64\xeb\x1b\x79\x1a\x77\x09\xf7\x4b\xcb\x35\xbd\x0d\xd7\xf4\x0c\x7f\x89\x20\x11\x1e\xf5\x75\xfc\xd5\xe2\x30\x2b\x2a\xa6\x47\x54\x18\xba\xeb\x96\xe8\x55\x21\xdb\x98\x93\x4b\x09\x39\xc7\xb4\x82\xfe\x81\xdd\xd9\xa1\x05\x80\xad\x4e\xac\xdf\x23\x4a\x2f\xf2\xd7\xa1\x69\x86\x9c\x98\x59\x8f\xac\xb4\xc0\xcb\x57\xa7\xa7\xb0\x5a\x99\xa6\x95\xb8\x89\xd0\x7c\x91\xfa\xad\x63\xeb\xf9\x0b\xe7\x12\xf8\xd0\x46\xa7\xb8\xbb\x7e\x1e\x5c\xb6\x9d\x85\xa4\xe8\x6e\x40\x06\xf8\x38\x46\x4e\x0c\xea\x0b\x11\x7b\x9a\xd4\xe3\x70\x27\x7c\x79\xcb\xb3\xba\x04\xfb\x23\x01\xbc\x48\xf9\xe7\x16\x68\x57\xa1\x0c\x8e\x91\x1c\x89\x2b\x00\x39\xc9\x07\xdd\x13\x90\x5c\xf0\xb2\xe2\xfc\x3c\x87\xa2\x97\x59\x66\x29\x1c\xeb\x2c\x56\x2d\xa6\x51\xe4\x4c\x1a\x9e\x9d\x05\xf4\xd0\x46\x36\x88\x32\x92\xb0\xda\x42\xb8\x84\xc2\xe0\x0b\x9a\x46\xd1\xe7\xe3\xe8\x24\x7a\xa5\x34\x8a\x2c\xe5\x32\x7d\x14\xf7\xc2\x19\xbd\x2b\x60\xa5\x08\xb5\xba\x5f\xe5\xbf\x8b\xae\x8e\xc9\xed\xd5\x90\xdc\xee\xef\xe9\xa5\x77\xe8\xd3\x84\x9a\x8a\xd2\x0e\x39\x37\x7c\x0d\xa4\x39\x9a\x8e\x2b\xa5\x45\x94\xdc\xcf\x53\x43\xe4\x88\x41\xbf\xe5\x44\x5d\x6e\xd8\xf5\x97\xb4\xcc\xc7\xc5\xc0\x11\x7b\x3e\x56\x33\x91\x99\xf9\xf0\x07\xca\xbe\xa8\x15\x38\xe2\x52\xde\xb1\x66\xb3\xac\xfb\x65\x96\x5d\x1c\xc2\x44\xf5\x1f\xca\x7e\xa1\x85\xdf\x1f\xb3\xde\x0e\x0c\x9a\xd7\xf4\x07\xa6\x6a\xac\xab\xcd\x8b\x56\xe2\x65\x72\x5d\x7e\xb3\x2c\x7d\x91\x9b\xe6\xd4\x22\x8d\x87\x87\xd8\x36\x1d\x1e\x9e\x2c\xaf\xb3\xfc\x3c\xb3\x42\xd4\x13\x99\x39\xaf\x64\xa4\x71\x09\x4e\x85\x5c\x61\x85\xc8\xf2\xce\x7b\x93\x63\x41\x86\x9a\xed\x0f\x19\xad\x99\x01\x2a\x99\xa4\xcb\xd6\x34\x40\xd0\x8b\x3d\xe6\xf9\x98\xea\x9e\x39\xc1\x5c\x64\xb8\x61\xed\x38\xf7\xa8\xdf\x53\x3d\xda\xa5\x8c\x16\x87\x27\xe8\x69\x47\x03\xe6\x77\xa0\x7b\xff\x29\x82\x9b\xc7\x10\xe1\xc8\x34\xcf\xf0\x52\x04\x92\xb9\x8e\xe3\x88\xe0\x32\x42\xc3\xed\x2f\x38\xae\xfd\x1b\xe8\x00\x0f\x10\x05\x43\xf8\xab\x5e\x48\xc6\xec\x92\x3d\xb0\x12\x84\x1a\x78\x84\x5f\x18\x52\x24\xdf\xd7\xe4\xc6\x7b\x37\x60\x00\xe7\x37\x49\xbf\xf5\xbf\xe9\x37\xed\xa9\x93\x54\xcb\xfd\x2d\x0d\x63\xad\xaf\x41\xf0\x89\x87\x2a\xbf\x81\x17\xfa\x84\x9f\x5b\x38\x68\x4b\xfb\x0b\x9a\x65\x01\x0d\xef\xaa\x81\x21\x1e\x25\x13\x28\x99\xb7\xe8\xf4\x61\x59\x5a\x2c\xad\x3b\xbb\x4b\x5c\x71\xae\xc1\x0d\xf2\x62\x85\x53\x32\x3a\x5a\x19\x01\xa5\xc3\x22\x0f\x19\x8e\x48\x40\x66\xcb\xb5\xba\x98\x5d\xf3\x12\xe8\x14\x92\x44\x49\x5d\xa5\x08\x61\x3e\xdf\xde\xaa\x73\x05\xc5\xde\x56\x5d\x64\x85\xde\xd2\xc7\x21\x27\xc8\x40\xed\x1c\xcc\x17\xeb\xe2\xf0\x5d\xfe\x9a\x66\x95\xd0\x91\x89\x7b\xaf\xf2\xb3\x15\x6a\xa9\xbd\x67\xfb\xa2\x7c\x0f\xba\x27\xb3\x15\xe7\x2d\x66\x2b\xcc\xb3\xc6\x24\x74\x3d\xdf\x81\x08\x15\x3b\x72\x1a\x9c\x04\xbd\xee\xae\xbc\xec\x0e\x06\x75\x2f\x56\x38\x51\x67\x63\xaf\xd6\x7a\x15\x81\x26\xae\x58\x8b\x60\x1c\xf8\x49\xa7\xb5\x42\xbe\x29\x04\x9c\x98\x26\x84\x2e\xb3\x42\xd4\x34\xdd\x79\xeb\x80\xba\xa8\xe2\x25\x7b\x8a\x41\xf9\xc9\x0f\x91\x69\x42\x48\x31\xd4\x6a\x81\x08\xb0\xec\x68\xaa\xe0\xab\xc5\xc2\xb3\xe2\xc4\xb8\x14\xc4\x74\x61\x10\x26\x68\x18\x25\xce\x09\x49\x69\xcb\x60\x1a\x7c\x58\x38\x44\x9c\x96\x40\xb1\x12\x2f\x87\x78\x85\x70\x78\x4b\xb6\xa6\xb9\x5d\x2c\x5a\xd5\xf6\x98\x3e\xeb\x8e\xfd\xbe\x36\x8a\x63\x20\x4b\x62\xcd\x68\x79\xa4\xa4\x39\x58\x09\xd0\x6f\x92\xd5\x4b\x91\xde\x44\x4e\x46\x12\x71\x05\x03\x16\xa5\x83\xdc\x13\x4b\x3c\x8b\x5b\x9c\x15\xfa\x79\x3d\xae\x28\x6c\x9a\xa0\x69\x2c\x51\x9f\x6a\x9e\x17\x99\xac\x6e\xc6\x40\x1f\x91\xfd\x9c\xd6\x83\x40\x2e\x3d\x02\x67\x00\x8b\xe2\x02\x05\x74\xfa\xa5\x66\xb0\xab\x34\x84\x91\x13\xfa\x3d\x80\xe1\xa0\x69\xb4\x25\xe5\x75\x4f\xf4\x75\x67\xab\x46\xc7\xb1\xc1\xb4\x72\x93\xfd\x8d\xda\x0e\x8f\xec\x34\xfd\xa8\x6f\xf5\x35\xeb\x2f\x50\xbf\xeb\x2d\x99\xb5\xaf\xdf\x2b\xa5\x0e\x89\x78\xc1\x31\x28\x15\x4c\x53\x07\xf5\xe0\x03\xa1\x2c\xf6\x69\xc5\x90\xcb\x54\x84\x1d\x3b\x2a\x72\x06\x0c\x1e\x4d\x33\x0e\xfb\x53\xc5\xea\x2d\xcb\xfb\x32\x80\xcb\x9d\x40\xe2\x04\xc1\xb5\x60\x8f\xaa\x1b\xa7\x08\x29\x3f\xa4\xe0\xdb\x64\x9c\x0b\xb5\x6d\x8f\xcd\x5e\xb1\x98\x95\x83\x89\xe9\x2e\x87\x3d\xcf\xc8\x8b\x3a\x8d\xdf\x1b\xfc\xb8\x2d\x92\x92\x55\x95\x81\x35\xd4\x69\x19\x02\xb5\x80\x27\x94\xa9\xaf\xcf\x7d\xec\x19\x25\xab\x8a\xec\x81\x19\xd8\xe0\x03\x1d\x55\xc0\x91\xe2\xd5\x74\x2d\xc3\xa4\x25\x56\x15\x45\x86\xa8\x15\x1c\xf2\x62\x83\xcf\xda\xff\xb4\xd2\x15\x96\xf5\xf0\x4a\x7d\x1c\x11\xe3\xc0\xf2\x08\xc8\x09\x46\x4e\x55\x4d\xeb\x29\x48\x8b\x5a\x4c\xb3\x47\xfa\xbe\x9a\x0c\xfb\x07\xab\xd9\x03\x9f\x58\xd5\x33\x60\x34\x60\x7d\x8c\x49\x1b\x12\x58\x6c\xa9\xb2\xc0\xe9\xa1\xf4\x30\xe8\x85\xe0\xd4\xba\x1a\xfb\x23\x50\x2d\xe5\xd0\xc5\xa6\xc0\x73\x21\x9e\xa6\x0e\x74\xfe\xd7\x8b\xbc\x4f\x7c\x4e\x46\xcb\xa7\x75\xec\x45\xde\xca\xf7\xad\xb3\xc6\x19\xb8\x65\x9c\x8a\xc3\xb7\x1e\x03\xaf\x06\xf1\xdd\x23\xf0\x22\x02\x9e\x2c\x4e\x5c\x73\x18\x53\xdb\xc0\x96\xab\x2c\x27\x8e\xbf\x43\xc4\x4a\x27\xf0\x22\x6f\xe9\xcf\x0d\xbe\xc3\x0d\x5f\xb4\xcb\x44\xe8\xa3\xae\xf5\x16\xb5\x08\x53\xe1\x3d\x17\xf5\xad\xb5\x98\xcf\xa8\xae\x09\xa8\x59\x27\x2e\xfb\x1d\x9f\x58\x9d\x6a\xd8\xd8\x72\x45\xe4\xde\x8a\x98\x74\x5a\x70\x3c\xbc\x3b\x0f\xae\xb7\x03\x4e\xd6\x0a\x6e\x63\x24\x1d\xa3\x44\x72\xb2\x40\x11\x8a\x02\x0b\xda\x75\x4e\x0b\x5b\xca\x59\x0c\xe9\x19\xe1\xed\x56\xd8\x23\x5c\x55\x2c\x8b\x17\x30\x27\x47\xb8\xa2\x46\xeb\x1d\x38\x15\xfd\xa3\xb1\xbc\xf8\x72\x02\x40\x0d\x23\x02\xed\x90\xcb\xdc\x9d\x42\x27\x89\x15\xe3\x10\x7f\x8b\x19\x92\x8f\xdf\x71\x02\xcf\xb1\xe2\xf9\x1c\x7f\x38\x53\xf7\x35\x94\xeb\xc8\x97\x07\xf1\xb2\xd1\x8c\x90\x6f\x81\x68\x90\x98\x27\x25\x1c\xf7\x60\x8b\x35\x4d\xa8\x56\x19\x72\xc3\xb4\x70\xb2\xf6\x8e\x30\x77\xa7\x83\x3a\x47\xa2\x3b\x4b\x43\x66\x3d\x90\xdb\xec\x29\x64\x60\x3f\xf1\xd7\xa2\xb8\xe3\x40\x37\x9d\x62\x51\x7c\x67\x57\x9c\xc4\x7c\x5b\xd2\x90\x21\x1c\xcc\x57\x2f\x08\x3f\x4b\x79\x07\xbf\x9b\xe8\x60\x28\x41\x0e\x8e\x12\xd9\xb5\x75\xe0\xde\x59\xc8\xb1\xb4\x56\x12\x56\x03\xe5\x2a\x9a\xb7\xf4\x46\xc8\x85\x6c\x96\xb0\xfc\x66\xf5\xdb\x74\xcf\x8a\x63\x6d\xdd\xf1\xba\x3f\xb0\x7f\x39\xfa\xf6\x96\xbe\xf7\xb1\x0f\x4c\x73\x62\x2d\x31\x1d\xae\x23\x3f\x48\x9c\x6f\x31\x1d\xcc\x3e\x10\x88\x1f\x28\x14\x20\x37\x70\xbe\x85\x7c\xcf\x3f\x94\x2f\x42\x6e\xe4\x7c\x87\xd0\x70\x2f\xc9\xc7\x0f\x04\xfa\x73\xbb\xe3\x85\x62\x26\x2c\xe1\xe2\x73\x62\x3d\x9c\x20\xb9\x12\x12\x78\xcf\x39\x1d\x1d\x78\x9f\xfa\x6b\xe6\x05\x1c\xff\x90\x84\x77\x10\x6f\x4d\x13\x1e\x74\x74\x14\x91\x6d\x8b\x43\xef\xe3\x05\xf5\xbd\xe7\xbe\xf2\x6d\x86\x61\xd2\x9e\xfb\x36\xa7\x51\x10\x16\xa5\x02\x3e\x50\x4e\x03\x20\x1c\x7b\x81\xb7\xf4\xfd\x89\xa0\x57\x22\x65\x80\x64\x08\x21\xb1\x14\x0c\x3a\x17\x08\x8b\x41\x21\x92\x74\x84\x48\x8b\x30\xeb\x66\x2e\x46\x42\xee\x0a\xbb\x29\xc6\x31\xc2\x71\x8b\x1f\xb7\x6c\xd2\x56\x65\x1c\x7b\x33\x24\x01\x8e\x88\x0a\x3e\x89\xd9\x59\x14\x2f\x84\x13\x0d\xea\x2c\x84\xb7\x13\xbe\x5a\x7a\x74\x16\xa2\x53\xc4\x59\x46\x81\x45\xf9\xd3\xb8\xc9\x17\x2b\xf7\xac\x0d\x27\xc4\x8b\x45\xd0\x34\x89\xbe\x7d\x81\x19\x6c\x5b\x8e\xf3\x82\x5b\xc2\xf9\x40\x4e\x0b\x25\x02\x9d\x03\x7f\xa0\x72\xe3\x44\xee\x2c\x3c\x0b\x10\xee\x8e\x5a\xf0\x46\x0c\x67\xad\x85\x46\x61\x41\x99\x17\xfa\xa6\xc9\xff\x0a\x02\xa8\xbb\x0b\x4f\xc4\x19\x89\x34\xed\xa1\xef\x21\x37\x06\x82\x51\x35\xa4\x45\x5a\xeb\x01\x58\xb2\x99\xff\x20\x37\xef\xac\x2f\x1f\x68\xd6\x7c\x95\xd7\xac\xcc\x69\xd6\xfc\x40\xf3\x84\x35\x3f\xf0\x49\x64\x79\xc8\x1a\xe1\x9e\xa6\x01\x1d\xee\x1f\x7f\xf8\x0a\x01\x6e\x7e\x76\xb3\xbe\x84\x6b\xc8\x90\xe3\x01\x7e\xbe\x2a\x84\x93\x19\xf9\x68\x3f\xd2\x32\x37\xcd\xc0\x34\xff\x21\xef\xf6\xec\x9c\xee\x19\x1a\x67\x51\xc1\xab\xbb\x96\xae\xba\x96\x9c\x2b\x63\x1e\xd8\x7b\x56\x55\x34\x61\x38\x10\x78\x07\xc4\x1f\xa5\x90\x56\x7f\xa9\x72\x12\x9d\x10\x18\x20\x1e\x1d\xc7\xc2\xf1\x13\xb4\xa8\x85\x69\xf9\x61\x00\x46\x42\xe0\x0c\xb5\x4e\xc1\xd3\x0f\x62\x19\x28\xf2\x24\x3d\xe3\x0f\x35\x12\x46\xfd\xb1\x28\xea\x98\xa3\x9e\x02\xed\x22\x96\xae\x30\x64\xff\x99\xa6\xb5\x23\x9f\x07\x7b\x03\x3c\x8c\xcd\x96\xee\x62\x21\x2b\x86\x9c\x1c\x60\xa0\x02\xd4\x34\x56\xf7\x02\xee\xfc\x67\x22\x70\xca\x20\xff\x8b\x65\xd3\xfc\x30\x82\x5f\xaf\xf4\x41\xbe\xa8\x26\x10\x46\x45\xc4\xe0\x7a\xea\xe0\x0d\xc7\x37\xd2\x55\xff\xc8\x83\xf5\xab\xef\xbe\x91\x26\xa7\x5f\x17\x34\x62\x91\x81\xdf\x20\xfc\x7f\xe8\x74\x66\xe1\xbd\xfa\x4d\xd7\x9a\x85\x5a\x23\x2c\xf6\x87\x8c\xd5\xa0\xd6\x12\x89\xcf\x6f\xf8\x8e\x68\x1a\xc8\x2e\x99\x5f\x3d\xc5\x34\x67\xd1\xd8\x8b\x9f\x1d\x15\x6f\xc2\xb2\xc8\x32\x77\xb0\xd8\xb2\x1d\x70\x6f\x7c\xee\x7d\x7b\xb2\xef\x74\x22\xa3\xea\xb7\xd8\x3e\x6f\xc7\x8a\x75\x32\x7e\x9c\x22\x94\x26\x54\xe9\x09\x09\xd7\x5a\x2c\x0d\xa2\x71\xf3\xe8\xc4\xc8\x6c\x09\xf7\xa1\xdb\xab\x34\xbf\x0a\xd1\x5b\xa8\x76\x8b\x43\x6f\xeb\xe3\xd9\x12\xaa\xee\x4c\xfa\x07\x31\x74\x79\xc9\xf1\xb9\x05\xd1\x84\x67\x4b\x50\xc7\xb7\x12\xd7\xea\xef\xf4\x55\x74\x05\xe4\x58\x3b\x12\xe0\xe0\xec\xae\xb0\x63\x27\x7b\x39\x7c\x08\x4e\x2b\xe5\x7d\x57\x67\x0d\x10\x80\x15\x35\x0e\x71\xe2\x46\x4e\xa4\x62\x88\x6e\x7d\xbc\xc5\x2a\x49\xb3\x00\x60\x2e\x75\x76\xae\xea\x07\x72\x52\x37\x00\x6f\x31\x9c\x91\x8b\x5b\xfc\xe3\xd4\xf6\x1a\x5e\x72\x0b\xd7\x4f\xfa\xfb\x6c\xae\x5d\x81\xf7\x80\xfa\x13\xec\xea\xb4\xb2\x65\x00\x61\xa1\xdc\xc1\x9f\xe6\x3f\xd9\x10\x8f\xb1\x85\x5f\xb2\xc2\x3f\xe9\xc1\xce\xc1\x11\xd3\xd4\x69\xe4\xe9\xb5\x8d\xdc\xbd\x9c\x5a\xfc\xa3\x88\x48\xa8\xfb\x97\x1c\x96\x20\x81\x23\xc5\xf9\xc2\x51\x4b\x6f\xa7\x8f\xf5\x7c\x58\x2a\x4a\x07\x38\x2c\xf2\x38\x4d\x8e\x25\xc8\x37\xe0\xaa\x1c\xe1\xa0\xc5\x15\xab\x2f\x05\xf3\x14\x17\x4d\x30\x02\xe5\x3f\xf9\x2c\x4a\x26\x62\x5e\x69\x77\xc1\x69\xad\x00\xf9\x24\x5c\x0f\xe3\xc1\x8e\xf3\x44\x68\x18\xc7\x94\x8d\x43\xb9\x6b\x17\x26\x02\x28\xc1\xdd\xca\xa0\x33\xce\x68\x36\x38\x7f\x35\xf8\x30\xee\x55\x8b\x69\x18\xb2\xaa\xba\x24\xff\xee\x1b\x6a\x9a\x60\x42\x58\x1b\x98\x66\x97\x25\x74\xbb\x3b\x1a\xde\x57\x47\x5c\xd9\x54\xe2\x15\x87\x08\xf7\x57\x9e\x6e\xe8\x04\xe8\x5c\x62\x36\xb8\xd2\x1b\x83\xc2\x60\x2f\x02\xb3\xd3\xbd\x06\xe8\x34\x0c\x9a\xcd\xa9\x4e\x12\x80\x3c\x5a\x1b\xb0\x54\x65\xd1\x27\x00\x8b\x5b\xed\xab\xc8\xf5\x02\xdf\x09\x06\x32\xdd\x0b\xaa\xc3\x32\xfe\x4b\xe4\x05\x5e\xe8\xfb\xad\xa5\x4f\x11\x47\x0d\x5a\x68\x65\x2b\x42\xbf\x03\xad\x92\xd8\x93\x75\x8e\x52\x39\x9f\xb2\xa5\xd5\x2b\x5a\xd3\x3f\xbe\x55\xfa\x49\x91\x91\x3c\xf5\xfe\x04\x9c\x7a\xe2\xc5\x7f\x06\x9b\xcb\x9f\xf0\x2f\xf2\xf7\x9f\x52\xf3\xe1\x24\xd4\x1e\xae\x37\x6d\xb3\xf1\xd4\xb3\x8f\x9e\x41\xa0\x37\xef\xe5\xe2\x5f\xbe\x2e\x1f\x7f\xa6\xc5\xea\xae\xcb\x23\x1c\x29\xc0\x1b\xd2\xac\x62\x20\xf2\xe7\xdc\x23\x47\x81\xc2\x61\x14\x78\xc5\xe2\x27\xeb\x9c\xce\x0d\xc3\x9d\x53\xe7\x9f\x9d\x6a\xc6\xdf\xde\x7c\xf7\xad\x50\x1e\x00\x38\xd6\xcc\x08\x7e\x3d\xd3\x1a\xec\x41\x6e\xac\x5c\x04\x26\x15\xc4\x88\x68\x4d\x17\x9c\x74\x51\x1a\xbd\xff\xc2\xc6\xe2\x99\x69\x8c\x9d\x24\x84\x63\xe5\xc5\x08\x9d\x2b\x67\x84\x82\x39\x0c\xc9\x33\x2b\x44\x9a\x4f\xc8\x5f\x34\xd8\x16\xc7\x45\x48\x86\x1e\x13\x43\x4d\xf8\x35\xb5\x90\x9d\x21\xba\x4c\xb4\x28\x6a\x9a\x9f\xb5\xb7\x16\x47\xc3\x32\x83\xcd\xf9\x8b\x2d\x36\xaf\xea\x83\xdc\x4f\xaf\xc6\x45\xd0\xe9\x17\x49\x1e\x48\x27\x93\xbf\x7e\xa8\xd6\x9f\xc7\xb5\xfe\x7a\xb1\xda\x9f\x07\xd5\x02\x51\xa3\xe9\x0c\x9c\x35\x32\x8c\x07\x20\xaf\x90\x71\xc2\x39\xe4\x58\x53\xa4\x1d\xac\xb0\xd0\x8c\xd1\xae\x7f\xe0\x14\xfe\x05\xb0\x4c\x2c\x14\xc1\x62\xed\x8e\x7d\xf6\xb3\x48\xc1\x86\x9c\x44\xbe\xb4\x95\x81\x90\xb8\xf8\x38\xdb\xcc\x09\x50\xfd\x56\x44\xf8\x03\x90\xc7\x78\x09\x74\x51\xe7\x81\x4d\x80\x92\xb8\xb1\x1a\xa0\x6b\x29\x00\xfd\x14\x21\xfc\xab\xb0\xce\xf3\x22\x9f\x9f\xc2\x3f\x03\x5c\x8c\xbb\x80\x67\xcb\x4e\xc1\x52\x45\x89\x3a\x17\xac\x08\x14\x0a\x3c\xab\x46\x37\x0b\x48\x13\x1c\x21\x6a\x91\xf3\x56\x3c\x9f\x89\x51\xc1\xbc\x43\xc3\xc8\x81\x8c\xad\x20\xa7\x0b\x53\x1d\x07\xf7\x4a\xfa\x90\xe7\xd7\x8b\xe9\x02\xb6\x7f\xb7\x63\x1c\x04\x50\x2b\x5d\xc7\xe2\x73\x1e\x4f\xa4\xf0\x59\x98\x86\xd3\xe1\xc5\xfd\x79\x4b\x12\xd4\xba\x59\x10\xf0\xa6\x80\xed\xfe\xc8\x8e\x6c\xfa\xc4\xe6\xe3\xeb\x34\xb1\x02\x02\x86\x89\xf1\x93\x81\xe6\x06\x14\x32\x70\x44\x7e\xee\x4e\x2d\x1c\x9a\x26\x78\x9f\x1e\x1e\x28\x21\x72\x79\x2e\x6d\x67\xe8\xea\x39\x21\x42\x4e\xd4\xdf\x51\x41\x60\xbf\x16\x47\xec\xbc\x53\xe8\x04\xe1\xf8\x78\xfb\xc2\x61\x31\x29\x6d\xc8\x25\x1a\x8f\xba\x08\x5b\x10\x6c\xab\x33\xde\x26\xa5\xfd\x2b\x64\xe3\xac\x5f\xd5\xf9\x11\xd2\x64\x0a\xb6\x6c\x4d\x6c\xc5\xb5\x91\xe6\x9d\x18\x9d\xc8\x08\x39\x5a\x85\xd1\x62\x01\x26\x9f\x16\xef\x08\x91\xba\xba\xca\xed\xb0\x5e\x16\x61\x79\x34\xc5\x70\xf7\x87\xbb\x5b\x81\x04\xec\x43\x67\x91\x69\xc2\xee\x85\x8b\x24\x10\x46\x58\x1c\x63\xf4\x7d\x9d\x8e\x42\x2f\xa7\x1e\x72\x18\xeb\x0e\xf1\x88\x45\x08\x01\x09\x76\x53\x1d\xe2\x93\xb8\xa6\xba\x2c\x5c\x1f\x8b\x6a\x34\xbc\xe4\x05\xdd\x32\x87\xbe\x88\xcd\x34\xc6\x53\x53\xab\x24\xfa\xf9\x5c\xdd\x61\x4f\xa8\x11\x59\x22\xfc\x39\x9f\x40\xcc\x31\xc9\x19\xc4\xdf\x86\xae\x5a\x5b\x85\xea\xba\x70\x1d\x1d\xe5\xe6\x4c\x02\xfb\x10\x32\xba\xed\xb5\x1e\x42\x81\xdc\x09\x58\xae\x21\x15\x0a\xfe\x6a\xe5\xf8\x16\x06\x55\x9d\x1e\x34\xfa\xad\x33\x01\x9b\x1f\xde\x7e\x93\x95\x84\x19\xa3\xe5\x3f\x3e\x58\x8f\x84\x49\x01\xf1\xd8\xf3\x27\x65\x7a\x3a\xd5\xb7\xc2\x6c\x28\x5c\x12\x07\x05\x4e\x06\xea\x5d\x5b\x1d\xf6\x17\x8b\xa8\x69\xd8\x80\xcf\x8e\xb1\x17\xfb\x7c\x1b\x5c\x5e\x38\xb1\x10\x60\x8d\x24\xf7\xa3\x16\xe0\x4b\x22\x84\xd8\x4b\x7c\x4c\x07\xc0\x2a\x83\xc5\x00\x44\xf2\x33\x61\x3e\xc7\xf2\x0d\x80\x70\xdb\x73\x61\x5b\x4b\x17\xc9\x05\x9d\x30\x88\x52\x72\xe3\xcd\x17\xbe\xcb\xe9\xad\xe8\x7a\x63\x37\x68\x13\xcd\x2d\xd7\xf1\xd8\x97\x3e\x24\x6c\xa2\x79\x83\x6e\x64\xcc\x3b\x1c\x50\x32\x8e\x28\x0c\xe1\x88\x11\x69\x90\x65\xcc\x29\x9d\x1b\x08\x34\xdc\xff\xcb\xbf\xee\xa2\x0c\x87\x94\x78\xc6\xdb\xe2\x60\x60\xe3\x87\x34\xd9\xd6\x06\x36\x3e\x2f\xea\xba\xd8\x1b\xd8\xf8\x9a\xc5\xb5\xe1\x0f\x02\xc4\x0e\x63\xa4\x07\x4d\x43\xb1\x91\x17\xb9\x20\xe8\xec\xaa\x7e\x9f\x41\x70\x37\x08\x3d\xde\x18\x13\x5f\x39\x98\x75\x1a\x7c\x23\x67\xd5\x98\xb3\x6c\x5d\x75\xa5\x1d\xc2\xb6\x36\x64\x49\x43\x04\xa6\x1d\x73\xf8\x9d\x22\x2d\x4e\xc8\xa9\x05\x6e\x3d\x16\x5c\x53\xe2\xc5\xbe\x6a\xde\x8b\x7d\xdc\x3f\x92\x40\x84\x05\x0a\xbb\x28\xb0\x80\x89\x91\x5e\x5a\xcb\xcd\x2b\xea\x99\xad\x9e\xaa\x8d\xe9\x59\x27\xc8\x0a\x27\xe4\xf9\x12\x6f\x49\x74\xee\xf5\xf4\x2a\xb2\xc3\x63\x69\xe9\x7e\xea\xb5\xab\xff\x50\x9e\x17\xa0\xfa\x90\x12\x0e\x15\x3b\x4e\xb7\x86\xe0\xb0\xd6\x82\x0c\xdf\x42\x2c\x7d\x2f\xf0\x5d\xc3\x70\x8c\xc3\x93\x81\xf0\x1d\x19\x25\x35\x0d\x4f\x98\x11\xb2\x33\xcd\x79\x8a\x4c\x33\xa0\x42\xe3\xb7\x6b\x42\x78\xeb\xb8\x33\xcd\x3b\xef\x63\x1f\x0c\xa3\x4f\x3b\xb2\x6b\x1a\xfe\x8a\xd5\x1d\xf8\x1d\x99\xa7\x4d\xb3\x5a\x47\xc5\x55\x4c\xe2\xa6\x31\xec\x4f\x0d\x7c\x77\x43\x62\x5c\x8a\x99\x81\xce\xde\xcd\x77\x4a\xde\x19\xcf\x08\xb1\x62\xde\xef\x9b\x54\xaa\xbd\xc5\xa6\xb9\x58\x24\x1d\x35\xc3\x4f\xcc\x3b\x32\xbf\x6b\x1a\x5e\xf5\x92\x9f\x5c\xde\xca\x77\xef\xe6\x16\xff\x9d\xaf\xd0\x75\xe8\x3d\xf7\x9d\x39\xff\x8b\x23\xbe\x69\xec\x63\x9e\xd6\x64\x87\x23\xbb\xaa\x69\x59\x93\x3b\x1c\xd9\x2c\x8f\x08\x18\x18\x83\xdd\x46\x42\x61\xd5\xd5\x92\x6c\xa9\xee\x82\x77\x0c\x5f\x91\x66\xcf\x04\x8e\xaf\x75\x2e\xda\x65\x0e\xb8\xd4\x0d\x8a\xe8\xfd\x20\x3e\x49\x38\x32\x52\x03\x2f\x08\x12\x3c\x03\x0d\x3c\xf1\x87\xc2\x67\x76\x60\x2d\x4e\x58\x23\xc8\x8a\xf0\xce\x40\x18\xfa\x40\xd8\x20\xf4\x68\x4a\x47\xb6\x34\x9c\x66\x14\xca\x13\x4b\x9c\xf4\xbe\x2b\xe2\xdb\x64\x1d\xcf\xe7\x28\x02\x27\xe0\x30\x49\xef\x33\x06\x5e\x65\xa2\xe1\xae\xc3\x81\x6b\x75\x3d\xe0\xcb\x00\x70\x2d\x70\x57\xa4\x0d\xa1\x69\x84\xd1\xbb\x17\x73\x90\x1b\x55\x42\x20\x74\x9c\x21\xc4\x81\xa3\x4d\x1d\x51\x2b\x42\xaa\xde\x2d\x78\x8a\x40\x8e\x68\x71\xa6\xb5\x28\xbe\x60\x41\xf8\x6a\x0d\x0b\xa9\x14\xec\x3e\xb2\xec\xc6\x25\x6e\x6e\x98\x70\x70\xce\x87\x38\xea\x0f\x4f\x19\xe8\x53\x6a\x67\x75\xb5\x2d\x1e\x27\xb6\x59\x4a\xc5\xb9\x04\xd4\xe5\x36\x8d\xa6\xae\xd2\x65\x1e\xd4\xe2\xba\x48\x92\x6c\xea\xcc\x32\x82\xa2\xc8\x18\xd5\xef\x34\x5d\x49\x92\xf3\x86\x2d\xa9\x56\xce\x1b\x50\xcf\xe3\x83\x32\x92\xad\xb8\xa5\xf8\x55\x05\xd5\xab\x28\xdb\x76\xa7\xc1\x8e\x0a\xce\x5b\x39\x6b\x6a\xc0\x7d\x13\xd8\x1d\xdd\x51\x72\x33\xb4\x5d\x1a\x6a\xaa\xa1\x9b\x14\x67\xbc\xf8\xb3\x66\x73\x63\xb9\xce\x8e\x3e\xd0\x86\x85\x7b\x8a\xaa\xb0\x4c\x0f\xf5\x4d\x8a\xf7\x94\x9c\x84\xe7\x37\xc7\x5b\x61\x43\x45\x32\xda\x1f\xb3\x3a\x3d\x64\x8c\x7c\xa4\x9e\x3e\x7a\x61\x60\xa3\x8f\x61\xe4\xe3\x7a\xcb\x68\x24\x0a\x81\x41\xa9\x48\x97\x8f\x3e\x0e\x8b\xcc\xf1\x9e\x77\x89\xb7\x61\x91\x25\x65\x71\x3c\x88\x6c\xdd\x9b\x56\xa2\x2e\x07\x05\x6a\xbe\x1f\x65\xa5\xf0\xa8\x67\x8d\x1c\xef\xe3\x71\xd6\xdb\xba\x94\xd9\xcb\x17\x13\x65\x7e\x95\x06\x8b\x8e\xb7\xc4\x86\x81\x0d\xc3\x6f\xd7\x7b\x6a\x17\x87\x1a\x7a\x42\xc4\x73\x5a\xe4\x78\x4f\x6d\x28\xcd\x3f\xd5\x71\x51\xd4\xfc\x41\xf5\x18\x9e\xa9\xb8\xd1\xd8\xc3\x65\x36\x8d\xa0\xc4\x16\x5e\xa3\x1e\x25\xe5\xba\x73\x83\x8e\xe1\xbf\x1c\x8e\xef\x3c\xde\xdb\x85\x60\x8d\xc2\x6f\x0a\x72\xa6\x6b\x1a\x47\x3e\x72\x27\x82\x21\xa9\x1a\x3c\x1f\x8f\xe4\x77\xc2\xae\xce\xed\xf4\x3d\x29\xc8\x84\xc3\x61\xe4\xd8\x91\x83\x35\x40\xaf\x12\x35\x85\xb7\xd1\x3a\x9c\xcf\x91\xd8\xe9\xd4\x0b\x7d\x6c\x24\x59\x11\xd0\xec\xcb\x07\x9a\x19\x60\xa9\x2c\xd0\x4f\x30\x4e\x43\xc2\x20\xef\xc0\x81\xba\x31\xff\xe4\x6e\x1e\xe7\x6b\xcd\x90\xee\xfe\x92\xb7\x1c\xe5\xed\x0b\x67\x24\x90\x18\x5b\x21\xfe\xd7\x25\x4d\x00\x75\x23\xe5\x89\x66\x89\x8b\xbe\xb3\xf9\x6d\xb1\xce\x85\x79\x41\x4c\xa8\x97\xfb\x38\x16\x0e\x2a\x63\x34\x79\x35\x10\x23\xa4\x26\x66\x8f\x63\xcd\x6d\x4d\xec\x3b\x31\xea\xe2\x73\x1f\xa8\x90\x59\xc5\x08\x9d\x12\x02\xde\x1f\x06\x01\xbb\xc6\xb6\xcf\x51\xfa\xc0\x11\xec\x96\x58\x77\xf2\xc4\x8e\x51\xd3\x78\x02\x48\xd1\xb9\x7b\xfc\x94\xec\xa9\xb7\xf5\x9b\x66\x4f\x6d\x05\xd5\x38\xd1\x8c\x88\x53\x7e\xaa\x96\xf6\xb6\xde\x67\xdf\x97\x4c\x99\x58\xa0\x79\xca\xcf\xd7\x3b\x30\xf5\xd7\xfc\xcc\x24\x24\xe9\xdd\x2f\xaf\xfb\x01\x26\x83\x10\xfc\x09\xc9\x74\x05\xe5\x44\x77\x6d\x4a\x0c\x43\x88\x00\xa4\xbf\x0f\x35\xc2\xb7\xec\x09\xce\x44\x88\x4d\x91\x8d\x4a\xf0\xc5\xe8\x82\x30\xee\xbd\x5c\xba\xbd\x88\x40\x65\x47\x6a\x24\xc6\x38\x02\xe5\x46\x50\xf1\x51\x5e\x17\xd4\x34\xef\x88\x46\x51\xc6\xa3\x13\x3f\xe6\x3d\xce\xa9\x35\x9c\xfa\x18\x61\x43\xa0\x3e\x03\x6e\x63\x0a\x6a\x25\x08\x87\xe8\x74\xa7\xf5\x25\xf1\xee\x78\x5f\x32\xb5\x8a\xca\xe7\xa2\x81\x3a\x7b\xd5\xb8\x23\x6d\xb2\x76\x76\xa6\x90\x14\x5d\x86\xc2\x80\x0c\x83\xb7\x45\x17\x60\x21\x24\x67\x29\x2a\x3a\x5c\x38\x1d\x1d\x0e\x4e\x05\x08\x9a\x33\x4c\x56\x11\xf2\xb0\xd1\xc7\xca\x1b\xe7\x91\x11\xe3\x6a\x20\x65\x06\x14\x10\xc2\x85\x70\x11\xfa\x45\x56\xe4\x8c\xef\x2f\xfe\x0b\x6b\x3a\x5b\xa2\xd1\x5b\x07\x44\xca\xab\x28\x0e\x06\x96\xed\x7c\xfd\x69\xc9\xe8\x8b\xa7\xdb\x9b\xee\xd9\xc0\x85\x9d\x17\x50\xfd\x17\xa2\x14\x01\xab\xd7\x0b\x35\x0f\xac\xce\x2d\x71\x42\x96\x7c\xca\xc7\xc1\x81\x2b\x7e\xee\xdd\xb1\xf7\x37\xb8\x96\x07\xe8\xbe\x38\x56\xac\x39\x14\x69\x5e\xb3\xb2\x09\x85\x45\xf1\x9e\xe5\xc7\x26\x2a\x69\xd2\x44\x65\x71\x40\x4d\x98\xa5\xe1\xdd\x0d\x3e\x42\x19\xef\x9d\xed\x5f\x23\xce\x85\xd9\x96\x3d\x47\x0d\xd2\xd0\xd1\x03\xd5\x83\x1a\x74\x9f\x1f\xb5\xcf\xab\x81\x9f\x2d\x21\x23\xee\x18\x82\x81\xbb\xd8\x5e\xa7\xa8\x1d\x7a\x5f\xd2\x7d\x73\x01\xd5\x8b\xb7\xc3\x5b\xcb\xee\x3a\xe9\x74\xc6\xc9\x86\x20\x91\x8c\x9a\x26\xc4\x4a\xec\x8c\xfa\x4b\xcd\x00\x41\xfd\x5b\xa8\x3f\xf0\xb6\x3e\x8e\x35\x92\x2a\x8d\xa5\x51\x4c\x24\xfc\xdb\x10\xc2\x5c\x8b\x11\xce\x7f\x77\x75\x39\x32\xc1\x34\xcf\xaf\xb7\x42\x9e\x3b\xc2\x51\x97\x57\xbe\x6a\x5d\xe1\xb4\x34\x38\x2b\x67\xe4\x91\x76\x9b\x7a\xd6\x05\x57\xa2\xba\xbb\xfd\xd8\x34\xad\x84\x53\xcb\x53\x37\x93\xa5\x85\xec\x22\x8e\x2d\x0a\xda\x35\x53\x8a\x80\x2d\x66\x76\x72\x4c\x23\x92\xc0\x0f\xf8\x48\x83\xf7\x12\x7e\xe6\x73\xd0\x85\x3a\x17\x69\xb0\x07\x96\xd7\xc0\xb6\x4b\xa3\x05\x86\x23\xb8\x80\x6d\x65\x1a\x39\x89\x03\xcc\x39\x9d\x1b\x2f\x0d\xe2\x0e\xe8\xc7\x94\xf2\xfb\x8f\xef\x95\x58\x11\x49\x0f\xfd\xa1\xbd\x85\xa0\x32\xa5\x50\x88\xc7\x21\x89\xd5\x17\x50\xb3\x51\x9e\x09\x40\x34\x77\xc1\x5a\xac\xa4\x58\x04\x62\x16\x03\x0d\x47\x03\xc5\x56\x4a\xee\x45\xe7\x2b\xd4\x34\xda\x1b\x78\xf8\xb3\x12\x72\x2f\x9b\x14\xf7\xd6\xea\x6d\xa0\xbe\x21\x89\xe1\x09\xfa\xa3\xe4\xfd\x12\xd3\x56\x97\x69\x92\xb0\x12\x42\xb7\x8b\x20\xf4\xae\x4a\xe2\x84\x3c\x18\xf7\x2b\x36\x5c\x53\xeb\x91\xe1\x6a\x39\xae\x04\x3a\xc5\x40\xfa\x9d\x9b\x61\xf8\x78\x37\xbe\x74\xdb\x2d\x16\x68\x4b\x8e\xf2\xf0\x0c\xbc\x9d\x8f\xa4\x8f\xfc\x03\xd9\x7a\x2b\x1f\x17\xc4\xda\x7a\xcf\x65\x2c\x1b\xe9\xf6\xc4\x56\x7e\x4f\x10\xce\xc1\x9b\xbd\xea\x1c\x38\x8c\xa0\x99\x97\xfb\x4d\x73\x6a\x71\x4e\x2c\xe6\x66\x76\xc4\x32\x96\xf0\x33\xed\xfd\x81\x39\x99\x1d\xa4\x79\x04\xd7\x49\x4d\x93\xe3\x8b\x65\xef\x48\x2f\x7f\x06\x7f\x9a\x39\x2e\xca\x34\x81\x3a\x0e\xe2\xe6\x26\xc2\x72\x81\x9d\x10\xf3\x25\x72\xc4\x82\x61\xb5\xd4\x0e\xc3\xba\x07\x04\x07\x16\xfe\x82\x7b\x04\x69\x21\x8b\x30\x47\xe8\xd5\x81\x86\xcc\x29\xa4\x4f\x17\xdb\x40\x2d\x3f\x14\xad\x3d\x49\xbd\x9c\xcf\x8f\x7c\xe2\x64\xd1\xbe\x1b\xdd\x17\xc5\x31\xaf\xc9\x12\x67\xfc\x84\x38\x1e\x4c\x53\x3e\xf4\x5e\x08\x0a\x9c\xa0\x19\xdf\xb7\x4d\x73\xae\x97\x61\x9a\x13\xba\x1a\x39\x4e\x10\xc2\x19\x4f\xe0\xf3\xcc\x7f\x55\x75\x77\x08\xdf\x29\x00\x57\x00\x3b\xfc\x40\xc4\x74\x70\x6c\xe1\xee\x95\x89\xc3\xa8\xbf\xf3\x39\x5e\xe2\x3b\xe4\x48\xea\xe3\x0e\xa4\xfe\xb0\x1c\x62\x73\xf2\x51\x72\xbe\x6f\xf2\x3a\xf9\x8f\xed\xd2\xfe\xc2\xcd\x34\x07\x7b\xd6\x34\xf5\xfd\x84\x4e\xff\x19\xd0\xa6\xb1\xf5\xbf\x82\x5b\x74\xfa\x10\xd8\x46\xbf\x03\xb6\x02\x00\xa0\xc5\x2d\xd9\x42\x30\xa7\x51\xbc\x9c\xcd\xc6\x46\xc6\x5c\xc1\xd0\x66\x63\x5b\xae\x63\x5f\x6f\x36\x76\x83\x0c\x34\x37\x2c\xfe\xf4\x0c\x19\x70\xd5\x40\xf6\xe7\x8e\x97\xee\xc8\xde\x8b\x7d\x3c\x63\xa6\x79\x98\x11\x72\x67\x2b\xe8\x6f\x1a\x10\x92\xf2\xa5\x85\xef\x62\xed\xb7\xa6\x39\xdb\x0a\x20\xbe\xb3\x3b\x18\x46\x4d\x13\x99\xa6\xc8\x57\x75\x91\x00\x2d\xe3\xfa\x1a\xd4\x90\x9a\x66\xd6\x7f\x07\xb8\x1e\x38\x5a\xd2\xcb\x8c\xe0\x66\xb1\xc0\x99\x14\xd7\x70\x40\x17\x4f\x3d\x68\xa2\x75\x62\x9a\xb3\x7d\x7f\xab\xc8\x29\x58\x5a\x46\xc5\x63\xce\xb3\xab\x67\x55\xa0\xc0\x1d\xe2\x94\xfb\xa3\xd4\x55\xae\x2c\x8a\xf3\x3e\x87\xba\x34\x81\xbd\xd8\x76\x6a\x1f\x39\x3f\x99\x53\xa4\x96\xb4\xbb\xa3\xc8\xe7\x1c\x38\x00\x54\x67\x4b\xb4\x1e\x5f\xda\xa7\x00\x95\x5d\x6e\x43\x34\x72\x25\x80\xd2\x00\xb7\xd0\x12\xe1\x4e\x99\x68\xcb\xc6\xe2\xf4\x09\xd4\x8b\x94\xee\x14\xdf\x09\x20\x57\x96\xc6\x41\xa3\xcb\x0b\x84\x77\xc4\x12\x5b\x41\xb8\x55\x50\xad\x81\x2d\xa3\x27\x10\xbe\x2f\x25\x8a\x63\x18\xed\x52\xa5\xe0\x96\x73\x24\x24\xc0\xc2\xdb\xf6\xb8\x25\xe0\x27\x53\x2f\xd4\xd4\x42\xbd\x10\xb4\x3d\x82\x1e\xbc\x21\x18\x80\xb8\x08\x98\xdd\xd9\x87\x92\xbd\x92\x23\x6e\x9a\xc1\xab\x66\xbb\x1c\x88\x75\x42\xa7\x6d\xd7\x3f\x89\x79\x2a\x3d\x17\xde\x71\x72\x5c\xb1\x07\x56\x4c\xb6\x5e\xc8\xf9\x03\xd3\x9c\x05\x76\x5a\x7d\x5f\x16\x07\x9a\x40\x88\x81\x37\x75\x71\x38\xb0\xc8\xe2\x68\xc0\x0e\x8f\x65\xc9\xf2\x5a\x76\x2c\xb6\x59\xc6\xf6\x5a\xdc\x79\x2b\xe9\x8f\xf6\x4a\x04\xa7\x93\x15\x7e\xb5\xdf\xb3\x28\xa5\x35\x9b\xac\x39\xb0\xcb\x6e\x63\x40\x81\xfe\x55\x6c\x9c\x64\xb0\x71\xac\x40\x36\xf2\x5d\xb0\x23\x09\x0e\x6c\x7e\xe6\x90\x04\x7e\x30\x23\x96\x35\x5e\x99\xa4\xdb\xa2\xbe\x30\x4a\x15\xc5\x9b\x26\x51\xbd\x45\xf2\xd0\x96\x43\x4a\xb5\x1b\x61\x4e\x0a\x82\xcd\xc4\x31\xab\x09\x53\x46\x81\x56\x00\x36\xd4\x2c\xaf\x5f\x09\xe2\x9d\xf3\x41\x70\x59\xa8\x8d\xd0\x42\xa8\x77\x00\x68\x1f\x8a\xaa\x56\x2b\x66\x9a\xc3\xf7\xc1\x0a\x62\xd5\x1c\x28\xc2\x88\xd9\xbc\xac\x51\xc0\x81\x9a\x9f\x77\x29\x09\x86\x98\x00\xef\x08\xb5\x45\x40\x09\x70\xc0\x6c\x9a\x3b\x5d\x65\xc0\x32\x80\x2d\xd0\x3d\xe4\x53\x5b\xb8\xe0\x7f\x41\x56\x52\x13\x6f\x37\x23\xc2\x7f\xcb\x8e\xec\x06\xa6\xbd\x20\xd6\x93\xce\x96\xf4\x6a\x55\xad\xb3\xde\xaf\xff\xae\x0b\x88\x0d\xda\xa2\x48\xc8\x39\xa4\x49\xe7\xa9\xc5\xc2\x9b\x7d\x0a\x3b\x22\x22\x20\x41\x61\x24\xea\x30\xdc\xdc\xb8\x32\x7a\x81\x4e\xe2\x31\x9f\x93\xcd\x1e\xf3\x49\x34\xa0\x13\xdc\xd2\x62\xc2\x2d\x83\x74\x47\xb0\x03\xbb\x3f\xe9\xdb\x45\x24\xc9\x10\xa6\xbb\x2e\x84\x29\xc2\xa2\xc2\xb8\x73\x3c\x1f\x77\xa8\x71\x2b\x7d\x87\x73\x88\x70\x76\xda\x4a\xb4\xdd\xa2\xee\xa4\xb5\xca\x6d\xf0\xbb\xa5\x02\xe5\xfc\x0f\x3c\x9e\x03\x61\xcd\x21\x65\xb4\xae\xd3\x4a\x7c\xa5\x0d\xd8\xb6\xd7\x24\xc4\x14\x9f\x58\x7e\xdc\x33\xa5\xbf\x37\xd6\xe7\x03\x1d\xba\xb1\x45\x82\xc6\x05\x28\xe5\x12\xbe\x2f\xd2\x9c\x66\x50\x7f\xa7\x2c\x30\x95\x36\xb8\xe6\xf9\x60\xf1\xf3\x14\x8f\xfa\x23\xd5\xc2\x8b\x43\x95\xb7\xbe\xbf\x33\xba\xc7\x32\xad\xd5\xb3\xd4\x68\x04\xd9\x72\x8b\xe3\x74\xda\x11\x84\xd7\x69\x68\xfa\x2e\x75\xc0\xf3\xbe\x2d\x8f\x30\xd4\x62\x89\x28\x9c\x53\x56\xd0\xc8\x39\xe5\xc5\xe7\xc7\x40\x2a\x46\xca\x08\x29\x27\x49\xf8\x4f\xcc\xc2\x8c\x10\xce\x09\x0b\xef\x10\x36\x64\x1f\x4c\x45\x2c\x22\xa4\xe0\xd9\xaa\xc5\x03\xca\xc5\x80\x94\x34\x37\x5a\x1c\x64\xc7\xf2\x43\x6d\x90\x41\x1b\x3c\xf7\xa0\x09\xfe\xe1\x72\x0b\xc5\xb1\x36\x5a\x0c\xfb\xf2\x52\x1b\x86\x12\xc4\x73\x74\x00\x55\x0a\x8c\x20\xd4\x2c\x79\x49\xd3\xfc\x5c\x9e\x89\x52\x66\x33\xe8\x00\x64\x91\x3d\xe8\x64\xd2\xd3\x56\xfb\x12\x25\x61\x83\xc2\x21\x1e\xb0\xb8\x28\xd9\x31\x17\x33\xaf\xe3\xc4\xe1\xb1\xae\xd0\x31\x95\xb8\x91\x63\xab\x01\x90\x81\xc6\xe1\xe0\x8b\x2d\x1a\x05\xb1\x4a\x57\x0e\xb5\x6d\x2b\xf4\xf8\x3b\x2a\xe6\x4c\x41\x79\x52\xad\x9c\x37\x38\xa5\x6d\x2e\x75\xd0\xec\xf3\xaa\x06\x3a\x01\x03\x27\x42\x22\xb3\x6b\x51\x30\x1d\xeb\xdc\xe8\x0c\xbb\xaf\x3c\xea\x80\xea\xb0\xc8\x26\x3e\xa4\x95\x3c\x73\xbe\x17\x27\x10\x8b\x48\xe7\xb9\xb0\xfb\xd4\x34\xbd\x32\xd9\x59\xa2\x18\x4b\x3f\x39\xfc\x4c\x73\x1f\xa8\xf3\xa8\x9a\x14\x07\xbc\x5a\x2b\xd3\xfc\x58\x9c\x12\xf0\xa6\x07\xb9\x97\x5f\xfa\x93\xc1\xe9\xd6\x57\xc0\xc5\x80\x60\xa0\xc3\x77\x91\x05\x5c\x97\xb2\xa8\xcb\x32\x78\x97\xd7\x4d\x62\x0a\x70\x20\xd8\x44\x60\x3d\xd5\x59\x29\xd2\xd3\x3d\x7b\x53\xd3\xfd\x81\x88\x19\x55\xaf\x9c\x5c\xcd\x8b\x47\x4b\x1c\xe7\x42\x21\xa5\x47\x04\x70\x18\x0d\x71\x01\xe8\x09\x9e\xa1\x5b\x72\xd2\x1c\x45\x39\x32\x19\x9f\x2f\x03\x9f\xbf\x29\xe2\x49\x7c\xff\x00\x0d\x24\x32\xbc\x49\xf7\x47\x18\xbb\x33\x5b\xe1\x21\x75\x71\x6e\x9d\x7a\x0e\x2f\xeb\x4b\xc0\xf1\x40\x31\x35\xcd\x99\x4c\xee\x5a\x81\xc0\x46\x23\x1a\xa6\xc5\x23\x12\xe6\x3f\x69\xf8\x7c\x5c\x1f\x6a\xfa\x8c\x56\x12\x6d\x4f\xcd\xd2\x7f\xd2\x89\x0f\xcc\xf2\xef\xf5\x66\xaa\xa8\x25\x21\xec\xbc\xb7\x60\x60\x03\x2e\x6f\x68\x56\xff\x9d\xbd\xe7\x67\x51\x00\xc7\x06\x38\x96\x0a\xf9\x5e\xcf\xba\x03\x6c\x4b\xf3\x84\x45\x6f\x8b\x23\xc4\x1d\xe1\x5f\xea\x32\x93\xa5\x22\x56\xd3\x34\xe3\x4f\xb0\x18\xdf\x6f\x69\x05\x85\xf6\xac\xa6\x32\xcb\x81\x26\xec\x17\xf5\xf0\x4f\xfe\x00\x4a\x6b\x32\xf5\x21\x65\x8f\xfc\xd7\x08\xb7\xb4\x34\x64\x7b\xe5\x17\x7c\x3b\xce\x96\xf8\x4e\x64\xba\x63\xef\xd5\x17\x19\xc1\xa9\x7b\x12\x1d\xca\x52\x96\xd7\xbf\xf4\x8f\xd0\x4c\x11\xc7\x15\x13\x5f\xc5\x23\x7c\x95\xf2\xe6\xaf\x22\xed\x05\x0e\x1c\xde\xb1\xb0\x64\x2c\xff\xa5\x7f\x84\x12\x02\x29\x68\xe3\xaf\x0b\x29\x26\x16\x2f\xdd\xf7\xc7\x6d\x3a\xc9\xd1\x29\xda\x74\x3d\x72\xc2\x0a\xf9\x4d\xb3\xa2\x2a\x52\x15\xf8\x2c\x76\xa5\x9d\xa4\xad\x26\xc2\xed\x1f\x1d\x6a\x77\x73\xd1\x95\xd7\xf5\xc7\xeb\x51\x5d\x2b\x33\x70\x57\xce\x73\x33\x70\x3f\x76\x3e\x31\x03\xf7\xb9\xb3\x74\x64\x41\x01\x05\x4a\xa0\xca\x01\x04\x75\x60\x01\xa2\x79\xbe\x03\x4b\xc7\x80\xe7\xe2\x81\x95\x06\x86\xc7\x8c\xd1\x07\xa6\x3e\x1f\x6b\x43\x4d\xa2\xcc\x2e\xdf\x44\x01\xf9\x22\x8b\xa8\x24\x38\xd3\x47\xa7\xcd\x88\xed\xa1\x3e\x39\x0d\xc8\x81\x00\x2b\x51\x89\x13\x48\xca\xf4\x6c\xa6\x95\xff\x46\xcc\xc6\xb8\x18\xa2\x24\x74\x8c\x57\xa7\x69\x22\xe3\xd8\x46\x1c\xd7\x76\x37\x57\xe0\xbe\xa6\x69\xe4\x14\x92\xb8\x63\xc0\x74\xe9\xef\xb4\x58\x1b\xcb\x32\xe0\xdd\xf9\x4c\x6b\x71\x10\x78\x4c\xa9\x2b\x29\xaf\x45\xb4\x53\x1a\x84\xef\x2d\x2e\xf2\x73\xb9\xd8\xa5\xec\x78\xc5\x0b\xc4\xf1\x25\xfb\x17\xd0\xa7\x3d\xc7\x99\xfc\x4b\x37\x29\x8a\x26\x8a\xf4\x99\xc2\xa5\x45\x47\x3c\xbd\x10\xed\x47\x3d\x57\xeb\x46\xdd\x0c\xcd\x0d\xdb\x98\x6b\x49\x4e\x9f\x84\x7b\xae\x08\x47\x1d\xeb\x0a\x08\x6a\xf2\x02\x45\xc6\xb9\x00\xff\x81\x14\x09\x9c\x19\xc7\xe0\x61\x9b\x5e\x72\x0e\x18\xcc\x04\x83\xdb\x5b\xba\xf7\xee\x55\xc1\xa9\x48\x80\x83\x4e\x8b\x30\x54\xdc\x70\x48\x1e\xa5\x37\xb5\x8b\x17\x0e\x03\x45\x66\x1c\x0a\xbd\x69\xa9\x0e\xf2\x1b\xe8\x7c\xb8\x33\x5a\x32\xda\x04\x65\x13\x16\x59\xc3\xf6\x01\x8b\x9a\x6d\xd9\xa4\xfb\xa4\x01\x9a\xb3\xc9\xd2\xfc\xae\xe1\x58\xb1\x39\xd0\x92\xee\x91\x75\x59\x4d\xe4\x5a\x38\xb0\x44\x9b\x9b\x17\x37\x49\x8a\x5f\xf2\x06\xc4\x25\x69\x73\x0b\x7a\x37\xcd\x2d\xaf\xed\x26\xc5\x9f\x53\x72\x23\xaf\xf6\x36\xd5\xb5\xe5\x3a\xde\x3b\xe2\x37\x64\x53\x5d\xab\x1b\x3f\x1b\xdd\xa4\xf8\x0b\x4a\x6e\xde\xd5\xe5\x91\x6d\x6e\x2c\xfb\x1a\xdd\xe0\x57\xfc\xc3\xa6\xba\xbe\x9d\x59\xae\xb3\xf1\xbe\x78\xf5\xf2\xed\xcb\x8d\xd7\x2c\x16\xa8\xe1\x1f\xfc\x8d\xcf\x9f\x5f\x6c\xaa\xeb\x67\xba\xf1\xc8\x97\x74\x40\x1a\x0a\x2f\x55\xfc\x98\x30\x10\x27\xb1\xcf\xdd\xa1\x05\xfa\x0d\xb5\x51\x97\x06\x72\x4b\xcb\x78\x01\xca\x1c\x06\xa6\xc8\x5b\xfa\x4d\x43\x1d\xcd\x53\xca\xeb\x61\xf0\x20\xd8\x4d\x96\x40\x88\x97\x42\xdf\xcd\x8d\x1b\x63\x2e\x69\x4c\xad\xa6\xbf\xf4\x0a\x68\xe4\x0b\x29\xd1\x95\x58\xb1\xb3\x51\x73\xd5\x7e\xf5\x56\xbe\xa3\x48\xe4\xb3\x16\xf4\x5a\xff\x4a\x27\x85\x18\x38\x15\x7e\x1d\x46\xf1\x31\x39\x7b\x32\x94\x55\x5b\xb1\xa6\x93\x8e\x70\x42\x84\x5e\x46\x80\x63\x84\x77\x24\xee\xe5\xd6\x52\x1e\xa9\xa4\x3c\x38\xe9\x2f\x85\xd6\xdd\xc6\xd8\x49\xd7\x87\x4b\x1c\x91\x9d\xc7\xfc\xb1\xd2\x87\x7e\x61\x16\x60\x86\x79\x1e\x2f\xf4\x51\xfb\xcb\xb0\x53\x5b\xf2\x8b\xd6\xa9\x94\xe8\xee\xac\xb6\x08\xff\x22\xfb\x08\xce\x0e\xba\xa9\xf8\x6a\x14\x2b\xe4\x42\x00\xc5\xde\x85\x79\x68\x9a\xbb\xd1\xf1\x14\x28\x38\x25\x5d\xe4\x4b\x47\x16\x10\xda\x6a\x86\xba\x97\x86\x77\x90\x9f\xe9\x37\xce\x64\xe8\xf6\x5c\x53\xdd\xfb\x9b\xa6\x12\x1a\x10\x75\x0d\xe9\xf9\x38\x10\xdb\x96\x2f\x5c\xaf\xa7\xb2\xc4\xfb\xde\x1e\x35\x27\xfb\xc5\x0a\xdf\x83\x4f\x63\x5c\x0d\xdd\xa0\xdc\xc3\x2d\x43\xd5\x34\xfb\x17\xab\x09\xe3\xba\x7b\xd3\x9c\xe9\x17\xf4\xa6\xf9\xb9\x1c\xf1\xbd\xe6\xa9\x7d\x88\x66\x3a\x5f\x23\xd4\x66\xf7\x16\x43\xeb\xca\x34\x2d\x08\xa2\x7b\xaf\x89\xd6\x18\x8e\x41\x7f\xc4\x42\x08\xe1\xbf\x51\x2b\x56\x07\x05\x74\x68\x0f\x27\xd9\x3d\xb5\x38\x76\x5c\xfa\x23\xdd\x8b\xd9\x0a\x83\x6d\x6b\x4c\x98\xbe\x21\x57\x10\x4f\xbe\xd7\x29\xd1\xcd\x75\x62\x84\xe3\xa6\x89\xa4\xc0\x6b\x2b\x3d\xc5\xe5\xd4\x62\x9a\xc2\xc6\x6b\x00\x16\x15\x5a\x6e\x9d\xdd\xee\xd7\xd9\x7c\x8e\x76\x84\x61\xbe\x5f\x73\x88\xd0\x52\x0a\xd5\x01\x6b\x87\x67\x4b\x08\x11\x94\x72\x4e\x48\xe8\xb4\x6c\x71\x4e\xad\x5d\x5f\x23\x42\x38\x54\xa6\xb2\x99\x8f\x77\x38\x43\x22\xfe\x1a\x04\x7c\x21\x5b\x6f\xdb\x7b\xd6\x1d\x8d\x51\x74\x70\x8b\xff\x42\x11\x5f\xcf\x75\x76\x9b\xca\xce\x6c\x79\x55\x4a\x79\x64\xa7\x2b\x8f\xcc\xba\xad\xb8\x1b\x2a\x3e\x0d\x74\xa3\xef\xf0\x0e\x42\x3e\xd9\x55\x19\xba\xa5\xfd\x2b\x7b\xa0\xd9\x8f\x65\xc6\xf3\xa8\x67\x91\x88\x9c\x03\xaf\xbf\x57\xaa\xe9\x6c\xd9\x5e\x51\x08\x0d\x70\xd7\x8b\x54\x35\x94\xf2\xf7\xf3\xe8\x65\x98\x91\x60\xe0\xd4\x1b\x39\x14\xc7\x64\xb9\x96\xa1\x6d\x22\xa9\x71\x19\xcf\xe7\x28\x6c\x9a\xd5\x4c\xf7\xa6\x0d\xc4\x4c\xc6\x68\x0e\xfb\x3b\x17\xc1\xc2\xa2\x41\x54\x58\x2b\x1c\x8c\x30\x1a\x6b\xe7\x22\xd0\xc4\xe1\x45\xb5\xb5\x19\xd4\x31\xd0\xaa\xd5\x82\x35\x51\xdd\x7e\x4e\x57\x77\x9a\x0e\x55\xab\x26\xe8\x37\x8a\x8d\xdb\x67\xab\x17\xb7\x37\xcf\x9e\xbf\x30\x84\xef\xd8\x33\xfa\xa7\x23\x67\xa4\xe0\x98\x0e\x95\x52\x00\x6f\x7d\x40\xa3\x5d\xf8\xdd\x19\x2b\xb7\x88\xd9\xd3\x3d\xe1\xaf\x86\x1f\x84\x89\xa8\x88\x12\x60\x51\x24\x84\xcb\xa0\xca\xb4\xe5\x3b\x2a\xe7\x28\x54\xba\xb3\x8d\xc7\xf1\xe6\xbe\xa2\x56\xec\x45\x3e\x4e\xbc\xc8\x87\xf6\x03\xf0\x42\x8b\x84\x10\x39\x6e\x1a\x51\x1a\x74\xd2\x44\x85\x17\x2a\xfa\xeb\xa0\x22\xb8\x9e\x82\x93\x68\xdb\xfb\xb0\x80\x1e\x69\x9b\x33\xd1\xe2\xfc\x14\xd4\x4a\xf0\x2c\x35\x4d\x50\x81\xd4\x96\x74\x2b\x4c\x42\xf2\x33\xc3\x2e\x3d\xc6\x58\x04\x4a\xd6\x03\xfa\x1c\x80\xb1\xe3\x3b\xac\x10\xf4\x9e\x05\x3c\xa6\xb1\xf5\x23\xd8\xec\x83\x03\xea\xd0\xfb\xb9\x37\x8e\x85\x4f\xea\x88\xeb\xad\xaa\xd5\x17\xe6\x45\xbe\x3b\x22\xb9\x20\x24\xd8\xf0\xde\x0e\xf4\x63\xd4\xbd\xdd\x5a\x6f\x40\xd2\x76\x6d\xe8\xfd\xa2\xd9\x53\x5b\xfa\xab\x22\xff\xce\xa9\xf3\x08\x82\xa7\x4c\xfa\x48\xed\x88\x6d\xcd\x14\xee\x83\x19\xd1\x44\x0c\x60\x99\x67\x6c\x08\x48\xcf\x0d\xb7\xa9\x2b\x02\x55\x08\xfd\x63\xa9\xb4\x0c\xd1\x91\xd1\x19\x85\xba\x92\x97\x1c\x63\xf8\x1d\x7d\xfb\x6c\xfc\xa9\x69\x84\xd4\x4e\x57\x01\xa4\xbd\x35\x20\x3d\xb3\x8d\x42\x2d\x16\x8a\x68\x13\x7a\xda\x7f\xa3\x23\x46\x68\x30\x3c\x49\x16\x8d\x9a\x5f\x4d\x7c\xfb\x6c\xfc\x49\xd1\x6f\x5f\x76\x13\xbb\x1e\xea\xc3\x51\x21\x39\x3f\x94\xec\xff\x13\x5d\x4b\xf3\x8a\x95\xf5\xe7\x20\x16\xe6\x38\x6b\xe0\x12\x96\x77\x54\x48\x8c\xff\xe3\x7e\x42\xcb\x3a\x02\x1f\x7d\x18\x37\x2c\xb4\xe6\xf9\x92\xc5\xf5\x50\x5e\xfe\xff\xac\xb9\x41\x70\x11\xde\xf4\x99\xa3\xca\xce\x8f\x38\xc4\x2f\x90\x27\x99\x10\x87\x79\x81\x8f\x20\x9a\xc1\x38\x2a\x89\x35\x3a\xca\x28\x84\x22\xe0\x6c\xf6\x40\x75\x75\xc8\x0d\x4e\x1c\x1e\x9a\xa9\x94\x94\xae\x98\x26\x95\xbe\x3e\x08\x09\x5c\xea\x04\x62\x14\x9c\x88\x98\xb4\x09\x02\x1a\x66\x60\x36\xcb\x8f\xb7\x3f\xb8\xc3\x05\xa8\x48\x9b\x42\xd0\x06\x11\x34\xbb\x66\x20\x37\x34\xa1\x3e\x8b\xb4\xaf\x38\x96\x5e\x7f\x73\xd2\x8b\x05\x35\xcd\xd9\x4b\xda\xfb\xd4\x9d\xed\xa9\xd7\x29\x31\xd3\x0f\x29\x31\xfb\xe8\x44\xc9\x58\x45\x99\x22\xf0\x54\x09\xd7\xa9\x8a\xa7\x90\xe3\x08\xc5\x38\x56\xa3\xc8\x64\xe3\x05\x0b\xc4\x82\xe9\x7a\xa7\x7c\xa7\x90\xa5\x66\x95\xdf\x06\x12\xc2\x14\x92\x13\x3b\x1c\x6e\xb7\x2e\x63\x23\x49\x3a\x0c\xfd\x88\x2a\x19\xab\xd7\x59\x13\x7d\x00\xd2\x3b\xde\x65\x04\xde\xeb\x5e\xdf\x59\x6e\xed\xdb\xe5\xf9\xc8\x60\x8f\x49\xdb\x42\xd9\x17\xa9\x4e\x2e\x43\x79\xb4\x98\x2a\x8b\x67\x21\x6a\x85\x51\xbd\x2d\x1c\x43\x3c\x19\x0a\x6d\xf1\x4f\xf2\xd1\xc0\xfa\xd6\x72\x0c\x81\x2f\xd4\xd7\x97\xb0\x9b\x0d\xd8\xd4\x86\x9a\x80\x97\x59\xe6\x18\xda\x64\x4c\x88\xd6\x46\x0e\xa0\xe9\xc0\xa0\x49\x44\x29\x02\x4f\x36\x71\x17\x03\x6d\xb1\xc2\x09\x59\xae\x93\x5b\x12\xaf\x13\x4e\x64\x42\xa0\xc5\x58\x33\x80\x15\x1b\x82\x93\x5d\xa5\xc5\xbc\xc4\x47\x5e\xe0\x5b\x21\xc2\x4a\x85\x30\xc2\xa1\xf0\xfd\x3e\xd8\x9b\x9a\x4b\xe7\xa8\x77\xe9\x4c\xc9\xcd\xbb\x3d\x2d\x93\x34\xbf\xc1\xdf\x8c\x6d\x27\x95\xbd\xa4\x3b\x3b\x3c\x21\x61\x34\x39\x57\x36\x93\xdf\x52\x72\xbe\x9a\xa3\x88\x15\x1d\x83\x98\xb2\x47\x2d\x42\x4d\x68\x17\x07\x96\xb3\x12\xe4\x42\x14\x89\xde\x7e\x51\xec\x0f\xc7\x9a\x45\x6f\xc0\xac\x2e\x40\xed\x5a\x57\x26\xef\x28\xf6\x40\x5c\x3c\xa6\xe8\x94\x4a\x43\xa8\xb0\xaa\xde\xb2\xa7\x9a\x18\x41\xf1\xb4\xa8\xd2\xdf\xd2\x3c\x71\x82\xa2\x8c\x58\xb9\x08\x8a\xa7\xf5\x41\x86\x59\x73\x54\xac\xbb\xb5\xb4\x9c\x72\xc0\xfa\x6c\x2d\x06\xef\xd0\x63\x5d\xac\x45\x31\x67\x75\x78\x5a\x1f\x68\x14\xf1\x9a\xf8\x73\x5d\x1c\x9c\xd5\x7f\xad\x21\x26\x9a\xf3\xe9\xf2\xbf\x0c\x9c\xea\xba\xdc\x06\x2e\x87\x8a\xec\x5b\xe9\x85\x5a\x48\x4d\x86\x03\x4b\xd1\x3a\x24\xc6\xea\xbf\x0c\xa1\x08\x5a\x1c\x70\x42\x8c\xe7\x07\x61\x57\x6e\x8b\xce\x7c\xcd\xe2\x1a\x33\x62\x7c\xa2\x3e\x43\xcb\x58\x0d\x58\x64\x02\x43\x55\x62\x40\x77\x62\x2d\xaf\x96\xca\xfb\xa5\xf3\x0a\x5b\x4e\xa7\x83\x0b\xce\x76\x10\x20\xfe\x5c\xbf\x1e\x34\xef\x71\x7a\x21\x61\x9d\x76\x46\x76\xaa\x4f\x01\x0d\xef\x92\xb2\x38\xe6\xd1\x17\x59\x7a\x20\x86\xf4\x97\xce\x57\x80\xcf\xd6\x50\x83\x7d\xba\x88\x81\x0b\xd8\xe5\x25\xb0\x08\x30\x5b\xc3\x7a\x08\x21\xd3\xcd\xe1\xed\x39\x28\xc0\x42\x2e\xe5\x9a\xfd\xf7\xe1\x69\x2d\x02\xdb\x39\x4b\x58\xcd\xe5\x3a\x63\x71\xed\x2c\x3e\xfb\xec\xb3\xcf\xb4\xc5\x5e\x4a\x68\x58\xc0\x8a\x1f\x34\xe0\xa1\x01\xf8\xf9\x64\x86\xd8\x64\xdd\x52\xa7\x9a\x57\x85\x02\x9f\x0e\xe9\x13\xcb\x54\x60\xbf\x89\xb3\x3f\xb0\x20\xf6\x60\x50\x3c\xbd\x01\x40\xfd\x81\x65\xe9\x05\x57\xd1\x3c\x2b\x6b\x31\xd4\xf8\x4d\xbf\xa6\x17\x72\xc6\x1c\x29\x8b\xba\xbe\xe9\x60\xe8\x42\xde\xa4\x6d\x11\x6a\x2d\x2d\x68\xc3\x77\xf4\x12\x97\x07\xf3\xda\xdb\x6b\x85\x4d\xf3\x2d\xb0\x4d\x21\xe8\xa0\xc3\xc6\x55\x3a\x18\x20\x05\xb2\x02\xd4\x34\xa1\x17\xf8\xd8\xe0\x10\x9e\x0c\xa4\xfb\xe7\x7c\x21\x68\x55\x6b\xa6\xb4\x08\xe1\x59\x61\x8f\xc7\x6c\x21\xd3\xfc\x46\x9e\xac\x09\x32\xcd\xaf\xa9\x8a\xbe\x05\x5a\xfd\x5b\xb9\x3f\x18\xd9\xda\xfb\x34\xff\x19\x5e\x62\xfe\x42\x9f\xc4\x4b\xff\x5d\xfb\xaa\xca\x91\x04\xf3\x91\x3c\xca\x9c\xe2\x5b\xa4\x97\x61\x58\x2b\x15\x23\x4d\xc9\x2b\x71\x93\xb9\x61\x38\x5a\x10\xf1\xef\x07\x72\xda\xd3\xc0\x27\x55\x4f\x09\x59\x32\xa2\x8d\x94\x34\xd6\xd2\x13\x94\xd3\xc5\xed\x20\x01\xba\xa0\xbd\x2f\xf6\xee\x3f\xc0\x26\x23\x2f\x72\xd6\x80\x14\xd8\x72\x67\x8b\xd0\x63\xd4\x47\xf6\x1c\xdd\xe0\x1f\x78\xf2\x62\x71\x83\xdf\x50\x72\xea\x80\xd8\xe8\xa1\xf8\x21\xad\xd2\x20\xcd\xd2\xfa\xbd\x63\x6c\xd3\x28\x62\xb9\x81\x15\x5e\x94\x66\xb9\x2d\x7e\x4b\xc9\x29\x63\x75\xcd\xca\x37\x07\x1a\xf2\x0d\x62\x2c\x0d\x1c\x17\x79\xfd\xb3\xd8\x4c\xc6\x27\xcb\xa5\xd1\xe2\x1f\x29\xf1\x8c\x9f\x59\x70\x97\xd6\x06\x36\xbe\x29\x7e\x33\xb0\xb1\xaf\x0c\x1f\xff\x44\x2f\x60\x10\x09\x57\xdd\xac\xfd\x4c\x25\x4b\x40\x39\x57\xfa\x13\xed\xed\x1e\x94\xf7\xa6\x25\xa7\x99\x7e\x3c\x1c\x14\xcd\x34\x57\xf1\x11\x56\x08\x87\xe4\x47\x7a\xee\xac\x06\xfc\xfb\xfe\x48\xbd\xd0\x9f\x07\x78\x5c\x6f\xbf\x60\xbf\x50\x5d\xfd\x33\xac\xe0\x3a\xba\xf2\xe8\xc8\x9b\xda\x20\x89\xfc\x2c\x9c\x0f\x51\x84\x83\xbe\xa6\x7f\xd2\x51\x5c\x36\xa5\xcb\xdc\x07\x06\x73\x21\xb4\xf2\x9e\x3e\x59\x4b\x1c\x79\xcf\xfd\x85\x15\x36\xcd\x12\xa1\xb9\x15\x81\x81\x3b\x58\xb3\x3b\x5a\x9d\xff\xa2\x13\x7a\xd9\x64\x29\xad\x84\x43\x42\x88\x15\xb9\x12\xdd\x19\x8e\x42\x97\x06\x72\x3f\x71\x0c\x11\xc3\x13\x9c\x67\xac\x9c\xe5\x3a\xbe\xfd\x64\x1d\xcf\xc9\x73\x64\x08\x24\xa7\xac\xa0\x93\x79\xe7\x65\x20\x9c\x87\x60\x44\x3d\x5b\x42\x18\x89\xc8\xb5\xba\x1a\x55\xe6\x45\xef\x92\x40\x62\x4d\x63\x58\x48\xd5\x3e\x3b\x2f\x20\xbb\x29\xf2\xcf\x8d\x9f\x45\x8c\x51\x51\x0e\x39\x7a\x47\x26\xeb\xee\xbf\xce\xce\x7a\xfe\xe1\xba\x27\x82\xfd\x3f\x1b\xa3\x3c\x22\x10\x5b\x4c\x24\x32\x64\x88\x9f\xcc\x3d\x21\x31\xf0\xc6\xd0\x21\x70\x03\xcf\x56\xb8\xbf\xd5\xf8\xa6\xb3\x76\x74\x63\xc7\x8a\x48\x62\x9a\x56\x61\x9f\xa1\x7b\x0b\x35\x4d\xdc\xbb\x85\xe0\x2c\x18\x36\x38\x05\x62\x48\xf3\x9e\x98\x50\xcf\x10\x17\xe7\xc6\x3c\x38\x07\xfe\xa0\x03\x7e\x9f\x77\x19\x1c\x81\xbd\xce\x0a\x5a\x83\xb5\xe4\x12\xc7\x73\x05\x38\x1c\xc3\x4e\x01\x08\x00\xd4\x1c\xe0\x4d\x13\x1b\x86\x55\x25\xfc\xd0\x9c\x0a\xbe\xe3\xeb\xf7\xce\xe9\xdc\xab\x1e\xc8\xd2\x24\xc1\x07\x93\x65\xc8\xcc\x1d\x2f\x08\xe6\xf1\xa1\x6b\xac\x0c\x27\x04\xbd\xa9\xce\x35\x83\x73\xa2\x79\xba\x07\x5d\x88\xaf\x6a\x56\xc2\x03\x68\x9d\x0a\x75\xbd\xec\xb8\xef\x5f\xe3\x34\xcb\xbe\x93\xdd\xe0\xaf\x19\x7b\xfa\x4b\x59\x3c\xaa\xe7\x37\xdb\x32\xcd\xef\xe0\xad\xc7\x48\xb3\x25\xce\xd2\x9c\xfd\xb5\x7b\x2b\xfa\x0a\x04\x4d\x00\x0f\x87\x2d\x15\xda\x0b\x8f\x69\x54\x3c\xc2\xd3\x6f\x5f\x41\x34\x28\xfe\x54\x14\x7b\x50\xe1\x53\x3b\xde\x39\x19\x31\x9f\x5c\x3e\x7f\x55\x05\xf3\x6c\xb4\x18\x96\x6e\xe2\x9a\x58\xdc\xf7\x7e\x3c\x92\x6c\xfe\xf7\xe8\x5d\x2e\xbd\xe6\xb8\x03\x6f\xc7\xde\xf6\x52\xf2\x43\x77\xd2\x81\x56\xee\xe0\x34\x4e\x01\x2f\xfd\x42\xad\x2d\x12\x3e\x86\xd5\xe2\x81\xfb\x0b\xed\x75\xab\x19\x36\x87\x6e\x62\x9a\x46\xc2\x6a\x23\xcd\xaf\x12\x4d\x7f\xc1\x62\x24\x91\x1e\x85\x66\x2b\x1c\x21\xe4\x32\x67\xe7\x05\xbe\x63\xc5\x9d\x1d\x9b\xe6\xec\x0d\xa0\x94\x75\x28\x2e\x44\xc8\x34\x45\x10\x3d\x2b\x24\x71\xb7\x83\x62\x62\xe4\xb0\xee\x06\xc2\x82\xf9\xe7\xe4\xbf\xc4\x25\x2a\x49\xd6\x16\xce\xc1\x7b\xfd\xb9\xa3\x8f\x6d\xef\xe8\x03\x9d\xd3\x88\x4d\x63\xc8\xfb\x29\x50\xc3\xe8\x5d\x91\xf5\x34\xa2\xc1\xe9\x0c\x3e\x18\x62\xa4\xf9\x96\x95\x29\xc8\x68\x4d\xd3\xa8\x46\xf3\x40\x40\x9e\x9a\x48\x4f\x75\x7c\x35\xc1\x2a\xcc\xdd\xf1\x2f\x9d\xae\x29\x84\x78\x80\xea\xc2\x8e\x16\x40\x02\xc8\x27\xc0\xe1\x0f\xae\xef\xff\x64\x55\x87\x4b\xa9\xaf\xe0\x12\xf7\x5d\xeb\xdc\x6d\x48\xc4\x16\x21\x70\xc4\x51\xee\x69\x26\x5d\x71\x80\x4f\xc7\xb7\x14\x32\xbd\xa5\x02\x1b\xc1\x0e\x6e\x9a\xd0\xb5\x06\xe8\x85\xc9\xcb\xfb\x65\xd3\xa4\xd5\xeb\x34\x4f\x6b\x06\xc8\xae\x69\x96\x8e\x70\x28\xde\x31\xdd\x9e\x21\x48\x6e\x03\xcb\x93\xc8\x3f\x63\x8e\xb5\xb1\x91\x31\xa2\x51\x7b\x49\x79\x56\x9b\xfd\x43\xce\xd5\xb9\x4b\x1c\x7e\x12\x03\xa7\x05\xfa\x47\x3f\xb0\xb0\xae\xba\x50\x6a\x7c\xa7\x25\xac\xfe\x9c\xc3\x41\x9a\x27\x7d\x16\x0b\x09\x52\xcf\x7d\xa6\xa6\xc5\x61\xfc\xe9\x8d\x16\xa8\xb5\x23\xd8\xba\x3c\x2d\x3a\x73\x76\x3a\xf0\x7c\x13\x99\xe6\xb7\xf2\x5e\x21\x32\x4d\x89\x84\x23\xfc\xc7\xce\x91\x18\x69\x76\xa7\xc9\xf9\x06\x93\x2e\x6d\x2c\xd6\xd3\x0a\xa0\xbd\xaa\x0e\x11\x30\x92\xd4\x1c\xdc\x60\xa0\x48\x42\x9c\x28\x91\xbb\x9a\x6f\x8d\xcf\x24\xdf\x53\xab\xb0\xcf\x79\x07\x3c\x81\xf3\x45\xcf\x2c\x0d\x1c\x04\xfa\xef\x6b\xeb\xd7\x62\x72\xc2\x39\xd3\xb5\x80\x59\x3e\xf5\x65\x9c\x65\x3b\x31\xe3\x1f\xae\xa4\x45\xe2\xec\xd2\x44\x3c\x92\x8f\x37\x0c\xac\xb8\x39\xc3\xc0\x92\x0f\x94\xe4\xc0\xb9\x74\xa6\x03\x40\x3a\xe7\x20\x28\x6e\x2a\xfa\xc5\xd5\xef\x05\xe1\x72\xe8\xd4\x72\x94\x76\x6e\xe0\x1b\x2a\x83\xb4\x2b\x03\x39\x5e\xe8\xaf\xa3\xdb\x4f\xe0\xf2\x88\x79\x94\x93\x24\x91\xcf\xeb\x8f\xbd\xc8\x6f\x9a\xd8\x8b\x16\xcf\xe1\x77\xa9\x39\x54\x6a\xf1\xd7\x9d\xec\x50\xe1\xbf\xbe\x6b\x1c\xff\x90\x7f\x82\x93\xee\xc1\xc5\xc9\x18\xe5\x5c\x16\x84\x8e\xd8\x3b\x3e\x12\x4e\x47\xa6\xb1\x35\xf6\x05\x2b\xc6\x1c\x49\x7a\x88\xf5\xa6\x7a\xc9\x2d\x03\x81\x54\xec\x05\x5e\xe2\xfb\x3d\xa4\x79\x89\x2f\x0e\x0d\x35\x9c\xb8\x1d\xbb\x57\x0d\x5d\xdd\x61\x52\x88\x9c\x1e\x4c\x5b\xd0\xa4\x3a\xf7\x80\x38\x8c\x2b\xf8\xeb\x80\x10\x56\xca\x7c\xec\xf1\xea\x57\xda\x2b\xdc\x42\x8c\x59\x2d\x5f\x5b\xda\x6f\x1f\x19\xcb\xc9\xaf\x14\xeb\xf9\x86\x8a\xb9\xbf\x52\xcc\xcb\x4d\x58\x42\xe2\x58\xf9\x6b\xce\xd8\x5e\xe9\x55\x1f\xca\xe2\x40\x42\xa5\xb4\x54\xa5\x79\x42\xe0\xa2\x52\x3c\xf7\x4e\x28\x84\xde\x14\x38\x47\xa9\x48\xa0\xd4\x41\x69\x59\xab\xcb\x8c\x47\xa2\x74\x9d\x95\xb6\x28\xcb\x23\x12\x89\x47\xf0\xf9\x14\x8f\x4e\xc2\xb0\x3f\x09\x5b\x1c\x1e\xcb\x73\xe1\xab\x18\xe5\x41\x40\x4e\xd7\xdd\x0e\xce\xa8\x44\x87\xc2\x9b\x8a\xbc\xe4\xd2\xcb\x74\xdd\xef\xd3\x5b\x5c\x1e\x27\x42\x21\xe0\xf0\xf7\x1a\xd3\x27\xc0\x8e\x8e\x82\xd8\x93\x71\x25\x8b\x8a\x80\xb5\x1d\xcc\x99\xa7\xcd\xa5\xaf\xee\x34\xc6\x05\xaf\x29\x5e\xe2\xd5\x74\x9a\xbc\xa8\x13\xb5\xaa\x3b\x91\xe2\x91\x58\x6a\x56\x17\xfd\xec\xa3\xeb\x60\xde\xbf\x0d\xeb\xab\x6a\x76\x90\xf2\x70\xfd\x53\xaf\x0a\x22\xcc\xbc\x54\xfd\x2a\x9a\xab\x69\x82\x13\x09\x37\xec\xfc\x7b\x5e\x9a\xd4\x2e\x5d\xf8\xda\x6f\xf1\x19\xf4\x6a\x40\xaa\xa7\x61\xbd\x3e\x72\xea\x6c\x25\x46\xa7\xa6\x5c\x9b\xce\x5b\x00\x10\x9d\xbc\xcf\xda\x75\x9a\x52\x71\xe5\x9f\x3d\x51\xab\xaf\x1c\x1b\xc8\xcc\xe2\x40\x91\x69\xee\x30\xab\xa3\x98\x61\x4b\x7c\xc7\xe2\x3b\x28\x59\x04\xa6\x29\xd8\x18\x4e\x89\xb9\x81\xb3\x3c\x3b\x2d\x41\x24\xfe\x04\xb3\xda\xd5\x7f\xf6\xc5\xa2\xc8\xb9\xd8\xf5\x51\x27\x75\xbe\x5c\x94\xf6\xc1\x93\x73\x8f\x3e\x27\x47\x01\xb4\xf8\xa3\xd3\x21\xa5\xc1\x50\x20\x6d\x0e\x61\xf0\xc0\xee\x63\x30\xf9\x76\x05\x8e\xfc\xdf\x16\x07\x32\xf1\x19\x8e\xd4\xd3\x78\xcc\xa3\x81\xf0\x4d\x08\x1f\x06\x7a\x21\x53\x1d\x54\xea\xe2\x80\x65\x4e\x9c\xb3\xa1\xd3\xda\x1c\x2d\xae\x1e\xf9\x99\x77\x9e\x66\x7f\xba\x00\xa1\x43\x58\x54\x16\xbd\x86\xc7\xef\xbf\x42\x37\xcf\x35\x83\x1b\x03\xca\x1a\x10\xa8\xfd\x89\x9c\x81\x24\xee\x16\x88\x9c\x84\x3f\x6c\x1a\xe0\x20\xc0\x61\x20\x7c\x89\x08\x07\x61\x4d\xb5\x2d\x1e\x9b\x6d\x1a\x31\xf4\xec\x06\x47\x01\xb9\xe9\xfd\x40\x3e\xd3\x7c\x85\xb0\xc0\x42\xa7\x20\x00\xc7\x76\x42\xf2\xd4\xc5\x4b\x2c\xd9\xfd\x91\x55\xf5\x4b\xc5\x21\xbe\x2e\x85\xe3\xa7\xc9\xef\x16\x0b\x90\x33\x88\xa6\xc0\x02\xd1\x53\x50\x74\x7e\xa0\x19\x12\xaf\x35\x98\x18\x69\xea\x69\x71\xa0\x93\x19\xd3\xb1\x37\xa8\x52\x56\x6d\x11\xa6\x1c\xe0\xc1\x1c\xa4\xaf\x23\x09\xce\x23\x2a\x9f\xa4\x88\x99\x0a\x2d\xc1\x40\xca\x5d\x04\x29\x40\x9e\x2f\x02\x14\x12\xa0\x05\x30\xf3\x94\x94\x64\x1e\xfa\x84\x79\x9a\xb8\xc3\x27\x54\x8b\x72\x6b\x31\x5b\x32\xb0\x84\x49\xc9\x24\x3f\x93\xfb\x7e\x6c\x83\x29\x05\x26\xeb\x2e\xb0\x6b\x7e\xf0\xb1\x52\xf0\x0d\x9e\x8f\xec\xb0\xc8\x43\x5a\x0f\x92\x8c\x6b\x03\xe4\x07\x4b\x9c\x74\xd7\x4f\x9d\xe3\x39\xf0\x0d\xce\xbc\xd8\x17\xe8\x2f\xe4\x87\x74\xa7\x48\x17\x69\x8e\xfa\x82\x49\xe1\x71\xa7\xdf\x27\xa9\xff\x14\x24\x69\x8a\x27\xe0\x6f\x78\x2f\x34\xc6\x73\x4e\x8c\x14\x8a\xbd\xc5\x87\x01\x9f\x1c\x01\x15\xd2\x39\x07\xc1\x46\xfc\xc4\x01\x0d\x7c\xff\x00\x80\x49\x11\xf2\xd0\xe1\x2f\x78\x2c\xc6\x02\x5d\x24\xf6\x31\x87\xc4\xc8\x34\xad\xfe\x85\x2c\xf1\x96\x24\x9a\x2b\x5e\xac\xbf\xe8\x1e\x53\xfb\x32\x4d\xb3\xb5\x38\x0d\xd6\x7f\x99\xcf\xf1\xde\x16\x31\xe7\x74\xf0\x99\xfa\xd6\x17\x5a\x2c\x70\xef\xc7\x18\xba\x2a\xe7\xbe\x69\x92\xa1\x6f\x60\xd4\x4a\x8f\x80\x32\x06\x02\x84\xbd\x0f\x38\x08\x85\x81\x72\x70\x01\xc4\xb9\x14\x24\x43\x92\xf0\x54\x29\x76\x25\x70\x78\xe0\x5c\xc6\x3a\xb8\x06\xdf\x9d\x86\x63\x88\x09\x14\x06\x7c\xf0\x3c\x23\x9c\x84\x99\xdd\x6b\xc6\x5f\xf7\x5e\xe4\xa3\xb0\xc8\xeb\x34\x3f\xb2\xf5\x81\xcc\x96\x6d\xee\x45\x3e\xb9\x37\xcd\x7b\x20\x63\x7b\x7a\x2e\x42\x6d\x1a\x5b\x29\x99\xf0\x9f\x8f\xd3\xa6\x39\xfb\x9c\x23\x74\xca\xc6\xae\xe8\x4d\xd3\x0a\xed\xe2\x81\x95\x71\x56\x3c\x12\xaf\xe8\x9e\x71\xff\xf8\x8b\xf6\xfc\x4f\x1f\xef\xa0\x33\x9d\x77\x47\xb1\xda\x3b\x50\x7c\xec\xa0\xa5\xe7\x11\xc1\xf2\x7e\xcc\x39\xf6\x1e\x29\xef\x78\x39\xf7\x8e\xec\x1c\x2b\xa5\xe0\xea\x0d\x82\x94\x9c\xfb\x73\xdd\x4d\x57\x24\x0a\x21\x84\xb0\x65\xa4\x39\xc7\xd4\x50\x6b\xd3\xc8\xb7\x85\x10\xaa\x8b\x96\xc4\x11\xbc\x9b\x74\xf4\x2a\x24\x4d\x9c\xb1\x4b\xc1\x7f\x03\x44\x6b\xd2\xc0\xa8\xe8\x3c\x3f\xee\x5a\xa4\x0d\xfa\x8e\x74\x29\x78\x47\xfa\x71\x71\x8a\xf1\x0e\x04\x27\x9d\x07\xcb\x41\x8f\x40\xef\x53\xcd\x2a\x88\x2b\xbb\x55\xe8\x6e\x06\xa6\xc0\x59\xcb\xd7\x97\xf7\x96\xbe\xbe\x5e\x7a\xca\x4a\x4f\xf9\xa7\x9e\xf2\xdc\x6f\x11\xc2\x29\x99\xad\x7a\x50\xcf\x11\x1f\xfd\xbd\xab\xba\x90\xe6\x57\xf7\xa6\x69\x1d\xc8\xbd\x3c\x34\x90\x73\xaf\x7b\x18\x57\x68\x01\x9f\xd4\x2d\x06\x9f\x9d\xd8\x34\x2d\x55\x80\xcc\x0e\x08\x1f\x4c\x53\x5b\xdd\xff\x1f\x71\xef\xda\xe4\xb6\xad\xac\x0b\x7f\xdf\xbf\x42\xc2\xeb\x97\x45\x58\x18\x8d\xc6\x49\x9d\xda\x9b\x0a\xc2\x72\x1c\x67\x25\x6b\xd9\x71\x56\xec\xac\xe4\x14\xcd\x9d\x22\x78\x91\xa8\x91\x44\x99\xd2\xdc\x32\xd4\x7f\x3f\x85\x6e\x5c\x49\x8e\x93\xbd\x77\x9d\x3a\x1f\xec\x11\x41\x12\x24\x71\x69\x74\x37\xba\x9f\x67\xd8\xb8\x87\xae\x53\x1d\xc9\x5c\x0c\x09\x23\x73\x9c\xf7\x73\xc6\x3f\x93\x33\x83\xe2\x47\xac\x45\x78\x88\xe5\x0c\x89\x16\xac\x60\x3b\xca\xe0\xf2\x4f\xf2\x63\xe4\xf4\xa9\x95\xda\x79\x80\xbd\x53\xa9\xef\xeb\x12\xf5\x97\x2f\xbc\x40\xef\x8d\x18\x89\x79\x87\xd7\xc8\x31\x3b\x03\xa4\xb4\xeb\x57\x02\x12\x32\x25\x07\x00\x72\xd0\xb7\xef\x2a\x8a\x31\xc6\xb2\x3f\xf0\x02\x2e\x0d\x51\xca\x72\x45\xda\x03\x50\xac\x15\x33\x1c\x1b\x79\xda\xf3\x43\x15\xe8\x78\x42\x5b\x19\x7c\x4f\xf4\xb1\x92\x92\x14\x0a\xc2\x8a\xda\x7b\x8b\xd4\xbe\x6a\x45\xf1\x8d\xbb\x2e\x54\x4f\xcd\x53\x06\xcc\xcf\xa5\x02\xfd\x10\x00\x02\x6b\xbf\xfd\x7a\xb8\xb0\xc0\x4a\x75\x0d\x18\x0a\x18\x26\xe3\x60\x5c\xbb\x38\xd8\x23\xe3\x55\x83\x8c\x80\x96\x75\xa6\x3e\x19\xb4\x94\xab\xda\xcf\x84\xa3\x50\xed\x3b\x89\xae\xab\x60\xd3\x96\x3b\x3b\x37\x1b\xec\x2a\xa9\x36\xcc\x36\xc6\x08\xb9\x40\x44\xfa\x4b\x5b\x02\x9e\x78\x7e\x75\x51\x48\x53\x9b\xd5\x7c\x83\x2b\xef\xd1\x1a\xd4\x35\x18\xd4\xba\x3c\x59\xa5\xf3\xf6\x66\x1f\x5a\x27\xd0\xda\x61\x0f\x0c\x33\x96\x6c\x58\xc5\x64\x87\x54\x5f\x5d\x05\x41\x1d\xe7\x91\x14\x12\xc3\x8b\xae\x98\xec\xd1\xb5\x07\xf2\x9d\x01\x7e\x01\x9b\x5e\x01\xa7\xf4\xda\x40\x6d\x23\xe2\x40\xc6\x0e\xe0\xe9\x76\xb3\x0f\x04\x65\xcd\xe1\xe4\x94\x4d\x17\xec\x51\x05\xa1\xbe\x06\x95\x34\x7a\x3c\x33\x54\x4e\xa3\x81\xfd\x7b\x66\x39\x65\x3a\xd5\x52\xf9\x4e\xeb\xf2\x18\x09\x53\xf8\x0e\x4d\xac\x28\x67\xa6\x39\x23\xd3\xe0\xba\x0d\xa3\xdc\x34\x27\xc3\x56\x8a\x92\x94\x29\x48\x45\x79\xec\x92\x87\x9a\xad\x37\x65\xf7\x87\x19\xdb\x48\x4b\x0e\x28\xd6\xd5\xcf\xb9\xf7\x05\xa0\x1d\xa9\x13\xf8\x01\xa6\xed\x4d\x6f\x29\x88\x07\x56\x60\xa6\xe9\x08\x1f\xef\x82\x15\x5c\xc4\xbd\xee\x8d\xc0\xbb\x52\xba\xf9\xee\x98\x3d\xc2\xa7\x0b\x13\xd1\x65\xba\x3e\xc7\xae\xbf\x72\x12\x64\xc2\xbf\xde\xb1\x4c\xa4\x94\x46\x6b\x97\x1f\x53\x17\x2b\x4b\x53\xae\x7f\x1b\x30\x2d\xf0\x2d\x36\x22\xbc\x1e\x6d\x11\xea\x2b\x80\xde\x64\x33\xca\xe0\x86\x65\x4c\xdf\x6e\x74\x42\x9f\xe9\x0b\x52\x5f\x29\xc4\x6e\xb9\xba\xd9\x06\x2d\x2d\xf5\x64\x38\x41\xe1\x52\xde\xca\xb7\xbb\x7f\x50\x77\x82\x9b\xba\xb0\xc4\x94\xbb\xec\x10\x5e\xb3\x35\x20\xd0\xf8\x7c\xa9\xea\x1b\xc0\xb6\x0f\x02\xf7\x50\xa3\x11\x6d\x28\xdb\x58\x5e\x5b\x75\x85\x3e\x56\xf4\xb6\xaa\x54\xfe\xd6\x2f\xa7\xa9\xdf\x14\xe1\xad\x2a\x95\xbf\x8d\x7c\x51\x65\x78\x64\xec\x8d\x5d\xd9\x86\x66\xd2\xd4\x4c\xcf\xb0\x6c\x5f\xef\xa2\x0d\x43\x2a\x01\xb7\x01\xe4\xca\xb1\x39\xb7\x73\x63\xe0\xd8\x24\xa0\x6b\xc1\x1e\xb5\xba\x1e\x3d\x92\xe7\x24\x4a\x46\x10\x5d\x94\x23\xc9\x4e\x8a\x10\x09\x10\x94\x37\x2e\x0b\x73\x65\xdf\x32\xbb\x27\x2d\xa7\x67\x7e\x4e\xcf\x4c\x55\xdf\xf7\x23\x7a\x54\xc1\x34\x56\x3c\x00\x68\x32\x44\x19\xb7\x84\xfe\x4b\x37\xa0\x6d\x01\xf9\x9f\xbd\x08\xfa\x9c\x83\xd5\xe3\x5a\x1e\x79\xca\xfd\x43\x04\x47\xf2\x8a\x0c\xc5\x86\xc0\x30\x63\x35\x08\xa3\xa4\x16\xa9\x3d\xee\x13\x86\xc4\xfe\xf2\xa0\xeb\xc8\x68\xe4\x9f\x80\x59\xad\xa3\x04\x8f\x87\xb2\x2c\x06\x78\x0e\x28\x4b\xb2\x20\x18\x61\x9e\x71\x05\x65\x46\xa3\x47\x3d\x58\xa2\xbc\xeb\xa6\x79\x10\x88\x1e\x61\x26\xd0\xfd\x5a\xa9\x96\x69\xb9\x89\x97\x6a\xf6\x29\x07\x76\x25\x08\x84\xc3\xcb\x5a\xdd\xcf\x9b\xaa\x8a\x0b\x23\x0c\xf9\x22\xd2\xfb\x67\x26\xd1\xd2\x9e\x05\xeb\x5a\x1f\xc8\x65\x17\x4d\x78\xf9\x95\x47\xb7\x12\xa7\x38\xb1\xc5\x69\x34\x7e\x89\x91\xed\x7a\x33\xaf\xc0\xf1\x1b\x04\xea\xc7\x14\x77\x86\x42\x75\xc8\xd1\x0c\x2b\xe6\xcd\xb6\xe0\x85\x99\x4f\xcc\xfe\xf4\x49\x59\x3c\xf1\xd1\x6c\x0b\x2a\x2b\x6e\xb6\x85\xf5\xbf\xc9\xca\xd4\x23\x7b\x1c\x1b\xaa\x9c\x9e\xa5\x98\xf6\x7c\xe4\x55\x56\x94\x1f\x9a\xa7\xf3\x79\x11\x6c\x05\x83\x6e\x8b\x8c\x82\x1e\x6e\x76\xb4\xd9\x42\x63\x92\x4b\x65\x4d\x2a\x16\x30\x47\xcb\xd0\x6c\x90\x8b\x33\xcb\x54\xda\xb0\x3a\xf7\xd4\x26\x20\xef\x1b\x42\x19\x72\xd5\x40\xe3\x22\xc1\x75\x8f\xa7\x06\x95\x90\x6b\x04\xd6\x61\xfe\x90\x63\x15\x5d\x86\xa5\x06\x90\x46\x88\x95\xaa\xde\xd7\xc7\x35\xa1\x72\xf0\x80\x14\x0d\xa7\x0b\x7a\xb6\x54\xab\x78\x9e\xaf\x58\xd9\x75\x95\xea\x23\xc0\xf0\xb0\x19\xb8\x2b\xe5\x4b\xc5\xa6\x55\x17\xb1\x15\xed\xaf\x7d\xde\x14\x19\x4b\xbb\x97\x97\x2f\xb5\x26\x88\x22\x5d\x84\xb9\x79\x9b\x51\xae\x11\xcc\x12\x76\xf9\x46\x44\x10\x64\x2a\xb3\xf8\x34\xca\x90\x32\x9e\x3c\x8c\x2f\x31\x95\xd2\xc8\xc6\x9c\x7b\xcc\x24\xd0\xf2\x20\xaa\x8f\x90\x09\x6a\xdc\xdd\xb8\x68\x23\xbc\x93\xfc\x1f\x5e\x3d\x08\x0a\xc0\x8e\xa2\x96\x95\x10\x92\x40\x57\x23\x17\x1a\xc3\xdc\xde\x84\xcb\xbe\xc9\x2c\x2a\x2f\x2e\x96\xb4\x92\xb7\x48\xa9\xac\xd2\x43\x8c\x63\x36\x08\xe0\x94\x9e\x50\x52\x61\x86\x02\x39\xba\xb0\x53\x73\xca\x04\x9f\x5e\xb1\x4a\x83\xfb\x95\xec\x8a\xd2\xe5\x54\x04\x41\x2e\xc5\xce\x08\xf9\x0c\xf6\xfc\xa8\xeb\x50\x35\x6f\x68\xa8\x5d\x3e\xd7\xa6\x2c\x77\xdb\x4a\xea\xbb\x89\x6e\x57\x92\x02\x97\x85\xdf\xcc\xa9\xdf\xce\x45\x5c\x58\xed\x08\x4c\x03\x3d\x26\x81\x29\xd4\x63\xf0\x91\x9d\x0b\x58\xd7\xd8\xae\xf8\xd7\xc9\xca\x94\x16\x9c\xb0\x8d\x2a\xb0\x51\x05\x36\xaa\x4a\x19\x91\x6d\x29\x52\x33\xd2\xe5\x18\x83\x02\xdb\x96\xb2\x16\xd3\x8e\x02\xda\x11\x9d\x77\x8b\xa5\xf8\x6a\x05\x89\x11\x45\x22\xd2\x20\x90\xff\xab\x97\xf5\x0e\x1c\xe1\xa4\x87\xbb\xfe\xa8\x33\xf5\xb6\xc3\x95\x47\x86\xa1\xcf\x85\xa1\x37\xa6\xbf\x29\xae\xc9\x8c\xaa\x7d\x22\xd2\xa5\xfa\xeb\xae\x4c\xde\xfe\x17\xfa\xc3\xbb\x6e\x8c\x8a\x21\x1f\x0f\x20\xc4\xe9\xad\xc5\xd8\x4a\x84\x02\x5a\x12\x2b\x76\x63\xe6\x8f\xdb\xba\x28\xbf\x6d\xee\xf6\xd1\x4a\x28\x3f\x11\x65\x50\xf8\xcb\x01\x8a\xe0\xfd\x55\xd1\x07\x24\x89\x90\xc5\xea\x33\x29\x93\x82\xf7\x87\xbd\x0d\x25\xc2\x3a\xce\x50\xfe\xee\xe6\xe4\x9c\x80\x9a\xf0\x84\xaa\xc8\x9e\x53\xd5\x9d\xff\x3c\xb4\x7e\x28\xd5\xf5\x57\x0a\x2d\xa2\xe1\xf3\x70\x34\xf2\x24\xb5\xfe\xe1\xbe\xd0\x85\x3c\x19\xd8\x4c\xc7\x8b\x61\x4c\x58\x3f\xf0\x52\x7c\x95\x9b\x71\x37\x9b\xd1\x8c\x43\xc8\x6b\x16\xaa\xe0\x57\x9c\xb6\xb9\x19\x56\x17\x17\xec\x8a\x2e\x73\xe3\xe5\x53\x0e\xf5\xe6\x10\x82\x77\x59\x79\x9a\x1d\xf5\xd1\x47\x76\x56\x2f\xa1\x55\x16\xed\x8f\xcf\x5a\x40\xde\xf1\x7c\xde\xfc\xea\x0b\xe7\xb4\xfb\x59\x02\xe2\x18\x51\x28\x8a\x90\xea\x1b\x41\xf5\xf6\x2e\xc3\x08\x71\xe6\xac\xfb\xfc\xf1\xb8\x6d\xee\xa2\xff\xb5\x58\xb0\x2a\x3b\x9e\xa2\x17\x8b\x85\xdd\x3c\xf8\x72\xb1\x50\x0b\x6e\x51\x6e\xb3\x87\x1e\xd3\xb6\xe1\x91\x93\xd5\xc5\xae\xba\x21\x0d\x2f\x11\x09\xa4\xda\x01\x69\xee\x08\x78\x87\x81\xde\x59\x3f\x3d\x67\x7d\x2e\x35\xdc\x62\xf0\xfe\x19\xc6\x07\x99\x3d\x01\x05\xef\xd6\xdf\x27\x7d\x0a\x51\x9e\x89\xe1\x29\xc4\xce\x20\x48\x70\xfa\x59\xc0\x7a\xdc\x34\x24\x94\x2e\x15\xb8\x81\xc5\x47\xd3\xd8\xf1\xef\xf6\x9c\x20\xca\x21\x00\xd0\xb1\x46\xda\x01\x88\x57\x5d\x16\x3c\x57\x40\x1d\x65\xc1\x3e\xf3\x8e\xea\x5e\x4e\x4e\x44\xa3\x9e\x28\xc8\x7b\xd6\xcc\xe1\xc7\xbf\xf4\x79\x6e\x9e\xa4\x01\xe2\xb7\x82\xed\x04\x57\xb0\xc9\xd9\xe9\xd4\x7e\x0f\xd9\x9c\x4b\x4f\x67\x92\xe5\x9f\x0d\x2c\xc0\x5b\x9f\xdc\xb9\x67\x16\xce\xe1\xbf\x40\x9a\x66\x6f\x7a\x8a\xb7\x70\xf0\x5e\xbe\x77\xc8\xba\x93\xe5\x2a\xfe\x05\x92\x2f\xfd\x3b\xfe\x79\x21\xff\xd0\x01\x58\x37\xf7\x68\x47\x0c\xfe\x44\x0c\xd6\xe8\x41\x47\x2b\x84\x0a\x77\xdd\x4b\x47\xee\xba\x50\xea\x74\xd0\x86\x18\xc5\xd4\x4b\xeb\x82\xdd\x7b\x07\x9e\x5a\x0a\x69\x1d\xef\x15\x6f\x45\x64\xc0\xdf\x9d\x30\x09\x14\xe9\x3c\xc7\xf8\x70\xaf\x4d\x80\x26\xb8\xb4\x61\x6b\xa5\x1b\xbe\x57\xf0\xd2\x84\xad\x09\x4a\xe3\x22\x0a\x33\x9f\xd9\x40\xb0\x7c\x46\xe4\x28\xc6\x4a\x56\xa6\x12\x05\xf1\x01\x55\x68\x62\x47\xa8\xa0\xe0\x0a\x56\x3d\xd3\x8f\x67\xff\xa6\x90\xf0\x63\x4d\xc5\x0b\xb9\x56\xba\x05\x22\x04\xf6\x7e\xec\xd3\x41\x83\x83\x6d\xea\x8e\xcd\x20\x50\x23\x16\xe9\x14\x01\xce\x44\x03\x04\xaa\x35\x50\x8d\xdb\xa5\xbb\x53\x37\xa0\x7a\x50\x14\x94\x7a\x46\x48\xcd\x08\x81\xfa\xc6\xc6\x5f\x7f\xc3\x4e\x48\x35\xd9\x98\xb1\x52\xef\x1b\x10\xe4\xaa\x70\x72\x5e\x22\x2c\xed\x10\xa7\x24\x87\x11\xba\x15\xfd\x4d\x5f\xe6\x8b\x3f\xd0\xb2\x7b\xbd\x99\xab\xfd\x4b\xa7\x32\x34\xca\x0d\x44\xd8\x70\xf4\x20\xcb\x9d\x7a\xe9\xcb\x8f\x77\xb3\xcb\x15\x1d\xd5\x20\x76\x42\x05\x0c\x9a\x0e\x5c\x42\x91\x6f\xe4\x7a\xc4\x71\xbd\xe1\x6b\x82\xd6\xa5\x02\x2a\xeb\x5b\xa5\x0c\xfe\x87\x0d\x25\x15\xcd\xa9\x6a\x89\x57\x40\x80\xa0\xce\x57\x94\x95\x3a\xc1\x6c\xaf\x36\x89\x11\x89\x07\xa5\x5b\xa7\x81\x45\x3a\xc4\xe6\x02\xfe\xa6\x46\x5d\x98\x75\xf2\x8c\x2c\xf2\x45\xd2\x61\x88\x7a\xda\x17\x49\xb8\x79\xff\x79\x91\xd4\x03\x4f\xfd\xbc\x48\x72\xd2\x33\x12\xac\xfe\xbb\xfa\x3e\xc9\xd2\xae\xcb\xd2\xbe\x68\x1a\xbc\xdf\x7f\x4f\x34\x4d\x9e\x90\x34\x82\xdb\x17\x80\xa5\x13\x80\x01\x6c\xf8\x8d\x48\x3d\x31\xf2\xd7\xc5\x44\x06\x81\x83\x7f\x51\x24\xc8\x8b\x81\x93\xf2\xa0\xe7\x7b\x26\x30\x6e\x7a\x3c\x10\xa5\x27\x40\xc8\x29\x13\x10\x9f\x4b\x1c\x37\x27\x84\x13\xfe\xb0\x3f\x49\xed\x7b\x41\xa3\xbd\xd0\x30\x35\x1a\xd4\x86\x76\x5d\x33\x2c\x04\x00\xad\xb6\xac\xe2\x45\x74\x71\x25\xa7\xbc\x6a\x9d\xe8\x91\x54\x4d\x4b\x22\xb2\x3e\xed\xb6\xdf\x35\x2d\x61\x24\xdf\x66\xc7\x23\x89\xf0\xaf\xbc\x99\xc8\xae\xf3\x56\x5e\x10\xd5\x4e\x30\x87\x5e\x90\x9f\xf8\xac\xcc\x4b\x59\x35\xdb\xf5\xc2\x8b\xe8\xf0\x98\xf0\x74\x8d\xd0\x5a\x0c\x55\xac\x7e\x98\xc8\x48\xdd\x02\x20\xa3\xfd\x9b\xff\xea\x53\x7a\xd6\x87\xea\x29\xc2\x48\x5b\x66\xc5\xbb\xfd\xf6\x81\x30\xb2\xcb\xee\xdf\xc0\x14\x91\xcd\x54\x6e\xb7\x2a\xd1\x47\x1d\xfd\xa4\xc2\x12\x18\x69\x9b\xbb\xf7\x87\x6c\x2f\xcb\x9b\xad\xfa\x75\x73\x2c\xdf\x66\x07\xc2\x48\xd5\x66\xbb\xf2\x1b\x4c\x31\x60\x3a\xc5\xe0\x75\x81\x58\xbb\xae\x85\x23\x17\x79\x3d\x88\x11\x02\xc1\x5b\x2f\xc1\x64\x73\x83\xfe\x0e\xc2\x6d\x16\x97\x6d\xde\x34\xba\x82\xe3\x9f\x10\x27\x38\xe3\x93\xf0\x80\x4e\xdc\x75\x5d\xc5\xbf\xb9\x9c\x40\x30\x38\x68\xd7\x11\xe2\x93\xe7\x65\x45\xf1\x4a\x9e\x1b\x0b\x7d\xf3\x70\xe1\xc1\xcf\xdf\x73\xf6\xd1\xa7\xc5\x8a\x14\x5c\x8a\xde\x4e\x3f\x22\xcc\x3c\x90\xf5\x4f\x42\x65\x38\x2b\x84\xa1\xb1\x54\xf3\x8c\x3e\x0e\xda\x44\x2f\x56\x20\xaf\x6a\xc5\x21\x55\xf2\x4f\x22\xcc\xa5\xa9\x2e\x25\x4b\xee\x6c\xb8\x93\x09\x99\x1d\x44\x58\xd2\x99\x6c\xbe\xc7\x95\x43\xfb\x24\x92\x95\xbc\xdd\x21\xf6\x9e\x90\x59\x05\xd7\x41\x3e\x76\x31\xe3\x78\xb4\x5c\xf3\x83\x08\x0b\xca\xca\x29\xe7\x6b\x15\x08\x37\x68\x5d\xb6\xa6\xe7\xb3\x07\x13\xa0\xd2\x52\xff\x2f\xb7\xaf\xf3\x94\x3f\x69\xe2\xe9\x20\xcb\xdd\xb3\x23\xa5\xf8\xd2\xdf\x42\xc8\xff\xdb\x4e\xc1\xc3\xb1\xae\xf9\xfa\xe2\x8a\x16\xbc\x30\xc8\x3e\xe6\x0c\xfb\x9f\x74\x15\x1a\xe0\xfd\xae\x72\xf6\x1e\xd4\xe7\x2f\x9f\x62\x85\x14\x2e\x58\x17\xcf\x63\xe4\x72\x76\x06\xbf\xf2\x49\x78\xbd\x45\xa3\xfe\x0e\xc4\x48\x57\xe7\xb6\xab\x9d\xb7\xf4\xba\x3a\x37\x5d\x0d\x08\xf9\xf4\xfc\x04\x13\x25\x0e\x3c\x18\x76\x7e\xef\xf2\x9c\x3e\xa2\xba\xa8\x1e\x05\x8b\xf9\x48\x17\x0b\x5e\xa1\x92\x58\xce\xd7\xd9\x11\xdf\x44\xd0\xb8\xf4\xbe\x4b\x6a\xf0\xf6\xcb\x85\xda\xf9\xb6\x28\xd5\x41\x60\xda\x4f\x83\xae\x71\xfb\x01\x41\xf0\xab\xa5\x90\x27\xbf\xff\x6e\x16\xb4\xdf\x7f\x27\x06\xd4\xf8\xe8\x89\xbb\x41\x91\xe9\x68\xd1\x75\x19\xea\xa5\x84\x44\xae\x17\xd9\xaf\x17\x24\x23\x45\xd4\x0d\xf5\x59\xe3\x33\x96\x2f\x96\x82\xcb\x21\x97\xc9\x21\xe7\x8f\xfb\x42\x8d\xfb\xfe\x68\x0f\xd5\x70\x87\xd9\x80\x43\xde\x8c\x6b\x01\xe3\x59\xb3\x8a\x2d\x0d\x8f\x98\x52\x2c\x5b\xc1\x2f\x3f\xb6\x97\x2b\x5f\x4b\xbc\xcd\xb6\x4f\xc9\x13\x8d\x01\xb2\x84\x0c\xad\x27\xa6\x7b\xc1\x7b\xc3\x6e\xcc\x17\xaa\x14\xbb\x72\x39\x00\xab\x81\xd8\x8a\x22\xf6\x07\xa0\x1e\xa2\xb7\xd9\x36\xa4\x34\xca\x98\x26\x11\x2b\x39\x21\x91\xcd\x82\x52\xd3\xa5\x8c\xcb\x99\x3c\xe1\xc7\x6d\x94\x18\xb7\x81\x1b\xa1\xe5\x18\x86\x91\x72\x06\xca\xde\xcc\x66\x84\x9c\x29\x65\x52\xff\xba\xcd\xb6\x4e\x80\xb6\xa2\x1a\xe9\x17\x8f\xe3\x07\xa6\x10\xd0\xab\xd4\x48\xe1\x82\xdd\xda\x51\x58\x32\x02\xa6\x17\xe4\x58\x41\x5d\x68\x89\x95\x5a\xb2\x5a\xfc\x14\xf7\x65\xca\x91\x37\x29\x3f\xfb\x1a\xab\xe1\x6b\x84\x39\x17\x30\x6e\xed\x4b\xd0\x38\x8f\xa4\xb9\xa6\xbc\x2b\xa3\xa9\x1a\x5a\x3c\xb6\x40\x33\xad\x98\xdb\x72\xd9\x6e\xb9\x4e\x94\x71\x86\x93\xc9\x87\x84\x7d\xbb\xbf\xa6\xe6\xaa\x97\x71\x31\x87\xa7\x10\x10\x7d\x10\xa1\xc2\x97\xca\x28\x3d\x9f\x15\xb1\xd5\x13\xb5\xaa\x61\xab\xa9\x58\x8f\x20\x78\x7c\x55\x70\xc5\x95\x77\xea\xc2\xd0\x8f\x43\xb4\xf8\x9a\xaf\xc0\x93\x10\x01\xc1\xc7\x2a\xae\x66\x57\x91\x0d\xf0\x84\xf4\x8e\xea\xab\x45\x5c\x47\xab\xb8\x82\x10\xd5\x1a\x36\x6a\xeb\x0a\x4d\xdd\x94\x85\xd6\x13\xd5\x75\x05\xb0\x80\x06\xc1\x34\x37\x94\x1c\x41\x10\x4e\x73\x57\xf3\xd4\x27\xba\x6e\xfa\x4d\xe8\x9e\x61\x44\xb3\xca\x12\xaa\x91\xc9\xda\x30\x57\xd3\x81\xad\xcc\xf0\x58\x2a\x0a\x0c\x61\x80\xfa\xd6\x83\x5c\x2b\x37\x12\xca\x6b\x18\x39\x2f\xae\x4b\x9d\xc2\xe2\x86\xb3\x5a\x9e\xfa\x82\x97\xd2\x86\x0d\x0b\xab\xde\x5b\xb4\x19\x3b\x0e\x55\xad\x48\x0b\x4d\x59\x05\x62\x08\x36\xa7\x80\x6e\x48\x41\x21\x00\x48\xb1\xd7\x19\xfc\xe2\x8a\xb2\xea\x7c\xf6\xb4\x6e\xe5\x96\xb3\x7e\xc0\x9e\x36\xec\x4d\xc3\x74\xe8\x44\x80\x06\x1b\x64\xe8\x18\xd5\x56\x23\x78\x3a\xdf\x11\x66\xba\x69\x41\x80\x9e\xcf\xd6\xf3\x08\x46\x8e\xff\x44\xc0\x1a\x78\x52\x98\x0c\x60\x5f\xd5\xc0\x8e\x49\xb3\x27\x91\x76\x2c\x52\x25\x91\x8f\xca\x82\x57\xf4\x14\xf0\xa7\xd3\x4c\x12\xc0\x3d\xf1\xec\x72\x69\xe6\x96\x02\x9b\x63\x43\x66\x09\x39\xf0\x5d\x92\x47\x15\x49\x0c\x14\x64\x3c\x29\xbb\xae\x48\xd9\x81\x6f\x51\xc6\x0a\xa6\x90\x62\x63\xe4\x51\x8a\x04\xfb\xe4\x9c\x33\x70\xc8\x70\x81\xa5\x07\xb2\xfc\x61\x51\x02\xf4\x49\x6b\x5e\xf3\x92\xcb\xca\x99\x34\xce\xcb\x5e\xea\xae\x7b\x3c\x3d\x2a\x6b\xf4\x30\x1b\xd0\xfb\xc9\x81\x72\xb0\xaa\xd9\x1c\x94\xb2\x20\x08\x3f\xf1\x83\xf3\x4c\x76\xe0\x9f\xe6\x18\x97\x40\xd9\x27\xc5\x60\x46\xd9\x35\x77\x6e\x8d\x50\xd5\x96\x2d\x3d\x3b\x30\xc1\x85\x4b\x45\x22\x3c\xfa\x81\x03\x1b\x72\x60\x06\x01\x10\x02\xd5\xc7\x0f\xf8\x6a\xbc\x8a\x5f\x44\x5f\x30\xa7\x0d\xf8\x27\x4b\x87\xc7\x5c\xee\x24\xee\x5c\x14\x8f\x92\xa0\x7d\xfa\x53\x12\x34\x74\x07\x19\xfe\x23\x14\xd9\x4c\x28\x92\x07\xc0\x92\x55\x64\x11\x90\x51\xaa\x65\x70\x22\xd2\xc8\x9d\xca\x39\x03\xc7\xc6\x7e\x40\x9a\x75\x40\x08\xac\xaa\xeb\xa6\x7b\xdd\xfa\x5d\x67\x7e\xaa\xad\xaf\x92\xe5\x8a\xd7\x0a\x3d\x90\x55\x10\x4c\xf7\x73\x4d\xd3\xa2\x62\x2e\x7e\xad\xf7\x45\x73\x07\x81\xd4\x10\x18\xc5\xf7\x1e\x51\x5c\xd7\x1d\x98\xee\xf0\xcd\xec\x20\x97\xb9\x35\x5f\x3b\x02\x8e\x2e\xd7\xcb\x5e\x49\x83\x92\x0c\xf0\x76\xd6\xcb\x9a\x73\x1e\x96\x3e\xf6\x49\xd7\x01\xd0\x27\x5e\x57\xbb\x38\x49\x5d\x57\xab\xaa\xf0\xc5\xba\x2e\xa3\x67\x6b\x06\x84\x6b\xde\xa0\x1d\xf0\x39\xce\x2d\x9c\x0b\x7c\xf5\xf5\x55\xbc\x89\xf6\x86\xe9\x4e\x7e\xcb\x4e\x33\x95\xad\x9f\xa0\x29\xd3\xa4\x7e\x6b\xcd\x9d\x46\x28\xdb\x05\xc1\x4e\xb5\xe9\x9a\xe5\x94\xed\xf8\x75\x10\xac\x93\xeb\xd4\x39\x13\x04\xbf\x84\x6b\xea\xb2\x5e\x79\xb7\x98\x52\xdc\x6e\x1e\xf2\x60\x59\x97\x10\xbe\xfc\x41\xf6\xae\x18\x21\xa6\x08\xa9\xec\x69\xbd\x01\x15\x04\xf6\xb7\x7a\x5e\x33\x3f\xc0\xd6\x5a\xae\xc9\xe7\xa6\xbf\x84\x25\xed\xba\x6b\x74\xab\x19\xed\xae\x4c\x0e\xd0\x8c\xde\x28\x00\x12\xc3\x52\x7e\x5a\x0d\x84\xfd\xd7\x29\x8c\x4e\xcb\xa3\x68\xe6\x3a\x3f\x30\x59\x43\x38\x76\x4a\x0d\x78\x53\x45\x4d\x3d\x7a\xae\xa3\xe2\x90\x78\x22\x9e\xc2\x08\x49\x67\x96\xb3\x9c\xa1\x77\xbd\x47\xf9\xb1\x38\xd3\x65\xef\xf9\x61\x81\xd8\x6d\x82\x0e\x90\x36\x07\xc2\xb6\xcf\x37\xf3\x24\x0e\xbb\xae\x5b\xbe\xe8\x49\x63\x1c\xaa\xc2\xef\x15\x6b\xe7\x53\xa1\x69\x52\xeb\x76\x52\xb9\x27\x63\x75\xe6\x80\xf0\x69\xd7\x4e\x22\x57\x8c\x09\x2c\x1f\x13\xb5\xa2\x4c\xf4\x62\x32\x69\xcb\x63\xfd\x47\x39\xc1\x9c\xab\x09\xb0\x08\x4d\x0a\xb1\xc5\x1f\xc0\x8e\x50\x34\x77\x7b\xfc\x75\x73\xc0\xbf\xd2\x08\x9b\x18\x42\x85\x89\xe6\x50\x98\x58\xbe\x85\x89\xe5\x58\x98\x20\xf3\xc6\x04\x57\xf8\xc9\xf1\x46\xec\xea\xd3\xe4\xba\x7c\x80\x7a\xaf\xcb\x87\x43\x5b\x1e\x8f\xf2\xc7\xcd\x61\xe2\xd0\x27\x13\x27\x11\x78\x6c\xc3\xda\x77\xc0\xdb\x1d\x82\x81\xc7\x7a\x81\xf6\x2e\x2c\x87\x0a\x88\x2f\xd7\xac\x36\xaa\xd5\x46\xba\x77\x2d\x3f\xed\x33\x9d\x6b\xbf\x55\xaa\x09\xf6\x73\x43\x01\x62\x06\xbc\xa2\xaa\xb1\x39\x69\xf6\x9a\x68\xaa\xde\x4f\x32\x7b\x06\x93\x5d\xf3\x75\xf8\x88\x1c\x57\x86\x8f\x0a\xe9\xa8\x5c\xf2\xa8\xb1\x01\xe1\x6f\x6d\x2b\xb1\xae\xc6\x73\x28\x98\x21\x02\xf2\xb9\x18\xe9\x79\x39\x20\x4e\x44\x7d\xe9\xe6\xd0\x4f\x83\x55\xe0\x8e\x3d\x81\x8b\xe6\x8a\x4d\x1a\x28\x98\xa0\x4b\xb9\xe0\x0f\x59\x5a\x33\x1c\x8d\xcc\xbd\x96\x85\x65\xd7\x2d\xe8\xec\x0a\x00\x66\x91\xee\xf2\xbf\xff\xe0\x8b\xab\x65\x19\x7b\xd5\x97\x34\x0a\x8b\x51\xa6\x28\xfb\x36\x2a\x23\x41\x56\x00\x96\x0a\xa8\x5d\x27\xc1\xb3\xf9\xb6\xc9\x31\x46\xfa\xc6\x04\x29\xb0\x5b\x69\x21\xc7\x52\xe5\x02\x17\xfb\x6f\x6f\xdf\x0c\x11\xfb\xc0\xf7\x25\xba\x6e\x10\x8e\xa5\xb3\xfd\x41\x13\x04\x24\xca\x9c\x83\x38\xca\xe6\xdf\xbe\x7b\xfb\x93\xac\xb0\xa5\x58\xf1\x77\x6d\xb3\x7b\x0f\xb7\x83\x36\x56\xde\x9f\x2e\xef\x77\x5b\x42\x15\xcc\x64\x41\x1f\x35\xcf\xf5\xd9\x62\x00\x4e\x01\x3b\x4c\x6d\x6d\x1f\xbf\x79\xf8\x90\xad\xa4\xe5\x17\x12\xa8\xb2\x2d\xdb\xb6\x69\x9d\xbc\xa8\x76\x0e\x25\x21\xf9\x61\x7f\x9b\x6d\xeb\x62\xf2\xdb\xdb\x37\xd1\x84\xcc\x80\xed\x03\x9a\xe1\x4e\x7e\x6d\xf2\x31\x7d\x76\xc9\xee\xc1\x35\x10\x7f\xdc\x5f\xae\xd8\x83\x52\x4a\x71\x06\xab\x0d\xa7\xae\xde\x65\xab\xb2\x6b\xcb\x63\x79\xea\xaa\x7a\x5b\xc2\x0e\xd4\x1f\x9f\xdd\xaa\xba\x2e\x1f\x56\xe5\x9e\x5e\xd6\xd6\x3d\xfd\x52\xf4\x22\xfc\x46\xd3\xe9\xd5\x64\x11\x0e\xf8\x25\x2b\xe9\x63\xde\x75\x77\x7a\x57\x83\xc6\x45\x98\xc9\x11\x20\x6b\x9c\x91\x84\xcc\x86\xa4\x1c\x66\x57\xa6\x8c\x45\x44\xa4\xb2\x95\x12\x56\x6a\x1c\x7a\x4d\x19\x9e\x77\x9d\xbe\x73\xca\x79\x0b\x2b\xa9\x7c\x89\x02\x23\x82\xfd\xe8\x35\x41\xcd\xf3\x4a\xa8\x4e\x24\x65\x8a\x35\xc2\x98\xc9\x76\x7c\x7c\xf3\x14\x60\x2b\xc7\xe3\x96\x7c\xea\x40\x11\xd2\x48\x2c\x8b\x44\x47\x7d\xa5\xbc\xdc\xe7\x4d\x51\xfe\xf2\xf3\x0f\xaf\x9a\xdd\xa1\xd9\x23\x93\xde\x8c\x70\x32\x1b\x39\xe3\x9b\xe6\xc3\xd6\x05\x0c\xae\xf9\xe6\xd3\x4d\xd9\x3e\xa8\x75\xfc\xa7\x6d\x56\xef\x4d\x7c\xa5\x6e\x7c\x0f\xd3\x03\x23\xcc\x40\xc7\x65\xd6\x63\x61\x5a\xd1\x49\xae\x79\x29\xc2\x9c\x41\x12\x8d\x70\x40\x9e\x0a\xa5\xfd\x06\x84\xf6\x42\x4d\x8f\x65\x5b\x67\xdb\xfa\x8f\x31\x3c\x3f\xd5\xa2\xa1\x72\xc8\xa9\x0b\xf1\x3b\x28\xe4\x49\xbb\x45\x23\x15\x9c\x46\x30\x72\x31\x98\x45\xc5\x2a\xa0\xf7\xae\x54\x53\xca\xba\x1f\xb2\xd8\x55\xa9\x95\xb7\xf5\x4c\x75\xcc\xeb\xa0\x3a\xe3\x28\xf2\x12\xf9\x65\x73\xc9\x36\x56\xce\xac\xfa\x18\x92\x48\x1b\xfd\x84\x06\xc1\x1f\x6a\x30\x7b\xfe\x24\xa9\x5d\x3d\x08\x8b\x89\x8b\x67\x73\x0d\xff\x3e\x35\x9c\x14\x94\x9e\xa9\xff\x71\xee\xa8\x72\x1d\x68\x3e\x91\x13\x06\x4c\xf4\x7c\x65\x39\x8d\xd1\x4f\x96\x8f\xf8\xc9\x1e\xe5\x87\x44\x68\xe2\x28\x12\x48\x8b\x85\x7f\x2f\x18\xf9\xd8\x7e\xdc\x13\xb9\x16\x46\x23\x97\xe6\xe3\x97\x22\xdc\xaa\x96\xc8\xdf\x08\x7e\xf9\xff\xbf\x58\x5c\xae\xd8\x2b\xc1\x2f\xff\xbf\xf9\xf3\x67\x97\xec\x5b\xc1\x2f\xc3\x24\x0e\x52\xfa\x3b\x4f\xfe\x33\x48\x9f\x5f\xb2\xd7\x20\x6f\xe6\xcf\x63\x1a\x25\x93\x8f\xa7\xf4\x79\x98\xfc\xa7\xac\x31\x7d\x4e\x9f\x5d\xae\x76\xec\x3b\xbd\x23\x2e\x9a\x9b\x53\x97\x1d\x0e\xf2\xdf\xc5\xf1\xd4\xb4\x52\x78\xcd\x67\x17\x30\xec\x8e\x75\xb3\x07\x19\x26\xc5\x59\x77\x57\x17\x40\x7f\xf7\xec\x92\xfd\x4d\xdd\xfe\xb7\xd7\x1f\xba\xef\x5f\xbf\xfc\x96\x3e\xbb\x64\xdf\xcb\xb2\x8f\x97\x1f\x2f\x2f\xd9\x0f\x82\x3f\x9e\xd9\xdf\xe1\xff\x7f\x08\x4e\x9e\x5f\x12\x9d\x22\x4c\x9e\x13\xca\xde\x8c\x44\x42\x65\x84\x2e\xdf\x08\xd8\x76\xe5\x27\xfc\x6b\xa5\xe1\x5b\x77\xd7\xcd\x8f\x02\x1b\xae\x2e\x26\xd8\x57\x3e\x6b\xa9\xf3\x96\x17\xac\xea\x47\x21\xf8\x9e\xf6\xfe\x46\x50\x4e\xf5\x76\x08\xaf\x92\x52\x5a\x45\x64\x46\x38\xe7\x45\xb2\x48\xe3\xb0\xe0\x85\xc1\x49\xeb\x3a\xf2\x9c\x30\xcc\x6e\xcb\x20\x81\x35\x49\xa9\xc9\x0e\xc8\x29\x8d\xfa\xe7\xc0\x34\xcb\xdd\x64\xbc\x1f\xfb\xf2\x1e\xf1\x60\x32\xce\xf9\xdf\x85\x6d\x88\x55\xb8\xc6\xf3\xb5\x81\x77\x49\xd6\x29\x46\xb8\xa2\x34\x4a\xd6\x98\xef\xe0\x0c\x76\x75\xcb\x86\xaf\x55\x24\xf8\x53\x71\xd2\x9b\xae\xab\xba\xae\x4c\x36\x69\x5c\xc5\xd3\xb0\xe6\x1b\xaa\x02\x89\xa2\x10\x29\x8d\xa5\xa5\x67\x13\x1f\x36\x94\xad\xe4\x7f\xd3\x2b\x7a\xa6\xac\xd6\x4b\xf0\xca\xbd\x38\x59\xa4\xb4\xeb\xa6\x25\x64\x77\x04\xc1\x0a\x46\x80\xfd\xee\x77\xfd\x24\x44\xde\xce\xb3\x4d\x76\xff\xbe\x3c\x9d\xea\xfd\xea\x38\xaf\xb6\xd9\x49\x65\x73\x19\x1a\xeb\x1c\x57\x18\xeb\x33\x4e\xf2\x34\x08\xc2\xb0\x4c\xf2\x34\xce\xa2\xa2\xeb\xc2\x82\x3f\x9e\x29\x4d\xf2\x14\x4e\x5a\xf9\xea\xd0\x35\x4e\x17\x48\x9f\xe2\x00\x36\xfe\x34\x9e\x6f\xce\xb3\xb9\xda\x79\x3e\xb2\x9a\x67\xf6\xe3\x94\xe1\x4c\x9e\x03\x80\xac\xfc\xd4\xda\xf8\x5e\x4c\xba\x73\x01\x48\xa2\xd9\x7c\x57\xef\x94\xd5\x0f\x9e\xe5\x9f\xcb\xe3\xa1\xd9\x1f\xcb\xef\xcb\xac\x28\xdb\x90\x28\xd8\xf3\x8b\x0f\x48\x7f\x24\xc7\x63\x41\xcd\x7a\xba\x06\x0e\x7b\x08\x08\x97\xff\xa3\x68\x2b\x28\x7d\xac\x4d\x6f\x94\x74\x29\xda\x32\xbb\x86\x8c\xe9\x64\x91\xd6\xfb\x49\x4e\x2b\x78\x2d\x58\x7d\x2c\xf1\x56\x8e\x2e\x8b\x1a\x79\x9a\xe4\xb7\xdd\x96\x2d\x24\x61\x95\x33\x32\x21\x33\x79\x22\xa5\x8f\x15\x2f\x55\x8d\x2b\xc8\x84\x2f\xe9\x19\xf2\xbf\x57\xf2\x09\x26\xa8\xa4\x9a\xe2\xa7\x07\x81\x7d\x95\x8a\xb2\x3c\xa9\x52\xdb\xb0\xff\xec\x0f\x6f\x9b\xc8\x2f\x07\xfa\xb5\xdb\xa8\x6a\x5e\x41\x0b\x5c\x27\x57\x29\x32\x73\xc0\xaa\xe9\xbc\x2a\xdd\x24\xab\xfe\x1e\xbf\xf7\x29\xab\x74\x59\xf1\x6b\xdd\x1d\x7a\xa7\x13\xa0\x3b\xa5\xb1\x0c\x6d\xff\x5d\x5d\x6e\x8b\x63\x52\x21\x9d\xc4\x48\x79\xca\x05\x05\x86\x0d\x60\x64\x94\xaf\xf8\x1d\xac\x6c\x41\x10\x0a\xee\x16\x80\x75\xa1\x3f\x01\xb2\x75\x2b\xe6\x3c\x5e\x3e\x16\x47\x49\x25\xbb\xc4\xe8\x54\x04\xb8\xf5\xeb\x20\xa8\x21\x4e\x47\x76\xcb\x8a\x6f\x92\x1a\xba\xa1\x4a\xbb\x6e\x93\x90\xe7\xf0\x93\x4d\x57\xd4\x21\x88\x02\xb7\x62\xe9\x5a\x84\xeb\xe4\x2a\x55\x70\x77\xb6\x8a\xb5\xec\x49\x53\x0b\x1c\x51\xfa\xb8\x02\x98\xb5\x78\x05\xe4\x52\x91\xfc\x0f\xb2\x6b\x00\x1c\x52\x5e\xc3\xae\x4d\x4f\xca\x5a\xa9\x33\xb0\x56\x48\x98\x2d\x7f\x05\x41\x96\x90\xd3\xba\x6d\xee\x8e\x24\xa5\x82\xaf\x42\xad\x05\x4a\x95\x1e\x8f\x95\x9e\xbe\x35\x2b\xe4\xf1\x94\x9d\xca\xc8\xd3\xc4\x19\xfc\x89\x56\xf1\x36\x22\x3f\x36\x13\xec\xc2\x23\xa0\x69\xb4\xcd\x4e\x0e\xc7\x19\x99\x9c\x1a\xd9\x0a\x67\xbd\x7f\xac\xeb\x39\xde\x80\x95\x43\x98\x6c\xfa\x48\x9c\x1d\xbc\xc9\x2c\x3f\xd5\xb7\x65\xb4\x60\xdb\xec\x78\x7a\xdb\x14\x75\x55\x97\x05\x64\x95\x9e\x32\xc8\x2e\x75\xc5\x4c\xf4\x78\xd3\x6e\x23\xb5\xee\x30\xf0\x85\x90\xbf\xbd\xfe\x40\x58\x7d\x7c\xd3\xe4\xd9\x36\xfa\x4e\xab\x20\x02\x11\x4c\xf2\x66\x4b\x19\x72\x0b\x01\xe1\x64\xdb\xc8\xf7\x00\xbe\x15\x29\x57\x8e\x0f\xfb\x5c\xb1\x44\xcb\x49\x8d\xcc\xc7\xd9\xe1\xb0\xad\xd1\x96\xba\xbc\xbf\xb8\xbb\xbb\xbb\xa8\x9a\x76\x77\x71\xd3\x6e\x51\x3f\x2d\x96\x93\x7c\x2d\x1b\xe6\xc4\x7f\xf9\xf0\xdd\xc5\xbf\x13\x26\x6d\xb8\xc3\x49\x65\xe7\xfd\x43\x20\xfb\x08\x9a\x41\x07\xa9\x8c\x12\x64\x2b\xc0\x12\xf9\x93\xb0\x7b\x79\xec\x3d\x69\xb7\x65\x13\x63\x39\xb1\xcd\x11\xd0\x7a\x9d\x0b\x64\x89\xba\x62\x93\xdd\x66\x8a\x45\xe6\xac\xdf\xfd\x18\x3d\xca\x3a\x2f\x3f\x8a\xfb\xdd\xf6\xa3\xb8\xc4\x47\x5e\x7e\x14\xf2\xef\x25\xd6\x77\xf9\x51\xc8\xbf\x1f\xc5\xe5\x99\xf9\x73\x08\x6f\x26\xba\xf0\xb7\xb7\x6f\x88\xfa\x0a\x5d\xf4\xa1\xbc\x3f\xe9\xd7\xd2\x65\x7f\x7f\xff\xee\x47\x7c\x03\x35\x9b\x65\x0b\xc0\x2b\x92\x08\xcd\x41\x34\x06\x27\xf0\xcd\xc0\x33\x0a\x87\xb2\x16\x12\xc9\xbb\xd1\x7c\x54\xc5\xf2\xc3\x23\x6b\xaa\x9e\x99\xb3\xa8\x60\xcf\xeb\xae\xba\x3f\x45\xd3\xc5\xd9\x8c\x8d\x9b\x27\xc2\x02\x45\xfc\x4e\x84\xb0\x74\xf9\xab\x15\x65\x82\x46\xef\x44\xe8\x97\x02\x71\x8c\x2c\xb0\xac\x49\x6f\x45\xf8\x83\xa0\x50\xf8\xa1\xcd\xf6\xc7\x43\xd3\x9e\x64\xe1\xdf\x55\x61\x2f\xf3\x78\xcc\x07\x3f\xe0\x3d\xcc\x61\x7d\xec\x49\x57\x76\xcd\xb6\x6a\x7b\xc3\xbc\xd4\xcd\x21\x7c\x84\x14\xea\x03\x6f\xe6\xea\xb3\xbb\xae\x61\x9f\xec\x21\x6c\x35\x58\x70\xa4\x83\x32\x84\x68\xdc\x86\x07\x1a\xe9\xfd\x95\xa3\x97\x18\xcf\x4e\xbc\x9d\xbf\xca\xb6\x5b\x91\xe5\xd7\xc7\x90\x34\xfb\xbc\x9c\xec\xca\x5d\xd3\x3e\x10\xca\x6e\x78\x33\x97\x93\xf6\xe6\xf8\x0a\xd8\xfa\x1f\xcf\xec\x56\x8a\xfe\x3b\xf9\xdf\x3d\x27\x48\x4e\x5b\x16\x84\x3d\xf0\xc7\xb6\xcc\x8a\x87\xf7\x30\xc5\x81\x37\xde\x5f\x2b\x47\x40\xa9\xe4\x52\x81\x8b\xda\x9a\x3e\xae\xf9\xe3\xd9\x04\x4e\xbc\x16\x98\x95\xba\xa2\x74\x9d\x88\x21\x3f\x06\x17\xc9\x8b\xf4\x2c\xf8\x3a\xc9\x7a\x67\xce\x9e\x35\x20\xd0\x1a\x10\x67\xf9\x3e\x2f\xb7\x5b\xff\x95\x8e\x23\x46\xd5\xb5\x8a\x5c\x85\x9d\xc6\x9f\x11\x67\x68\xf0\x01\xce\xa0\xc2\xe7\x5c\x43\xba\xd4\xdd\xe0\x6d\x46\x8a\xba\x2e\x63\xb7\x49\x06\x6b\x14\xc6\xd3\x34\xb7\x65\xdb\xd6\x45\xf9\x56\xa9\x1a\x63\xd1\xa8\xf6\x31\x8d\x51\x49\x78\xa6\x6b\xb0\x5d\x34\xde\xca\x80\x0a\x71\x4d\x1f\x74\x96\x72\x96\x3c\xa8\x6e\x75\x13\xd8\x04\xda\xb8\x37\x89\x48\x79\x72\x03\xf9\x2b\x89\x48\x53\x9f\xce\x25\x13\x72\xd0\x8f\x04\x29\x76\xdd\xbd\x43\xe5\x5a\xce\xe1\xc2\x50\x50\xf6\x32\x5c\xe8\x50\x94\x33\x98\xec\x47\x03\x35\xf0\x40\x59\x33\xbf\x69\xb7\x3c\x0c\x45\xd7\xc1\xcf\xae\x53\xf2\x9c\xce\x08\xa1\xc6\xb8\xfa\x5e\x30\x47\x88\xcf\xc8\xe5\x25\x91\xf7\xc2\xbe\x40\x3e\xdf\x95\xa7\x75\x53\x74\x5d\xae\x08\xe5\x1a\x53\x82\x97\xb0\xc6\x2a\x2a\x3c\xb4\x07\x60\x03\xd0\xa7\xed\x0b\x42\x52\x15\x9b\xd1\xcc\xf3\xb6\x39\x1e\xbf\x6d\x76\x59\xbd\xa7\x8f\x9b\x71\x53\x48\x2e\xa1\x1b\xb4\x86\xe0\x63\x98\x3a\xc0\x3f\xcc\xab\x84\xbf\xe9\x7d\xcf\x4c\x1a\x52\xcd\xf1\x34\xc5\xb4\x7c\xe7\xc4\x06\xca\xd5\xaa\xfc\x07\x7d\xf4\xeb\x91\xa2\xaf\xae\xd4\x57\xc1\x16\x92\x5d\xd6\x6c\xa0\x95\x31\x17\xf4\x75\xea\x06\xae\xdd\x10\x78\x28\xdb\xb4\xcd\x0a\x80\x87\xcf\xb6\x94\xb2\x1f\xa5\xcc\x63\x0d\xcb\xd9\x03\x65\xd7\x5a\x7d\x7c\x58\x6e\xf5\x0e\x9c\x7c\x22\x2e\xa9\x6c\x1b\x04\x0b\x40\xae\xc1\x55\x7c\x36\x03\xbd\xdd\x73\xec\x13\x90\x66\xa7\xac\x3d\xd9\xfe\xc3\x3f\x3e\xa0\x35\x6b\x20\x66\x4a\x91\x0a\x4d\xff\xa6\x16\x72\xbc\x94\x32\xd5\xbe\x66\x78\xbc\x82\xc8\x0d\xef\xa6\xf8\x89\x06\x01\x4c\xdf\x66\xee\xac\xf1\x10\xcf\x64\xf7\x59\xff\x74\xc1\x07\x2c\x1e\xd5\x7a\xf8\xc7\xbc\xc7\x37\x82\x91\x19\x91\xb6\xe3\x5e\xbd\x21\xaa\xc5\x3a\x29\x91\x32\xd3\xfc\xd5\x8c\x87\xb7\xc2\xa0\x83\x93\x80\x44\x24\x26\x74\xa6\xfa\x41\x45\x9a\xe3\x11\xa0\x1c\x67\xf9\xba\xd4\x34\xb9\x15\xaf\x2c\x9f\xa1\x60\xe4\xd9\x15\xa1\x6c\x3f\x5e\x21\xf9\x9d\x93\xd9\x8d\x98\xcd\x26\xb3\xbd\x9e\x6f\x15\xfe\xac\x2b\xad\x62\x01\x2c\x83\xab\x73\x81\x7a\xfd\x30\xef\x0b\xc1\x90\xfc\x50\x5d\xe8\x6b\x2e\xde\xd7\xfb\xbc\x24\x6c\x70\x27\xec\xd9\x9c\xb2\xd5\xe7\x2a\xf9\xb1\xd9\x97\x17\x6f\xe5\x90\x26\xf6\x6a\x4a\x99\x33\x90\x6d\x67\xca\x23\xa7\xc7\xd4\x2e\x5e\xee\x96\xd1\xf1\x27\x79\x06\x1a\xf3\x6a\xa1\x6c\xec\x86\x97\xa0\xbd\x11\x57\x64\x80\x9d\xd4\xcc\x95\x5e\x97\xf8\x67\xd2\xf8\xc9\x33\x33\x65\x29\xf8\xc5\x31\x61\x13\x32\xfb\x87\x98\x91\xe5\xe4\x13\x5f\xcc\x17\x57\x24\x22\x84\x46\xb6\x1a\x80\x54\x00\x9b\x79\x27\x45\x72\x33\x5f\xe3\x72\x45\x47\xde\x77\xc7\xcc\xe9\x64\x87\xbc\x86\xcd\x1c\x99\x8a\xde\x97\xfb\x02\xe1\xe6\xcd\x21\x86\x41\x1c\xd8\x03\x6b\x28\xc7\x46\xbc\x36\xd1\x23\x0f\x4a\x66\x43\x25\xf7\x9c\xc0\x11\x61\xc8\x58\xdb\x58\xf4\x0b\xf6\x80\x08\x19\xcd\x5c\x29\xf2\xb2\x04\x10\x31\x1a\x74\xca\x53\x56\xf2\x1f\xa5\x5a\xa4\xe4\x06\xac\xf1\x0f\x73\xab\x1f\xf0\x2b\x29\x2b\x3e\xf5\xa4\x02\x50\x2e\x25\x0f\xac\x49\x3d\x49\xd3\xcc\x41\x31\x97\x3d\x70\xc2\x24\xbe\xaf\x17\xb0\x27\xfb\x14\x54\x9f\xfe\x0e\xa2\x2e\x27\xf4\xcc\xcc\xbd\x14\xa5\xf4\x35\x9f\x5e\xb1\x72\x7e\x94\x46\xc7\x2d\x7b\x49\xad\x70\x85\x95\x12\x0c\xa4\xc9\x1f\xcb\x97\xe1\xc5\x15\xfb\x83\x9e\x31\x2a\x13\x8e\xa4\xb5\x63\xb4\x3f\xe2\xc4\xa6\xbf\x44\x3f\x8d\x71\xdc\x80\x02\x77\xcb\xee\xd8\x3d\xcf\x97\xd7\x5d\x17\x5e\xf3\x29\x6c\x00\xf7\x32\x12\x6b\xd9\x5c\x6a\x7b\x78\xc5\xd7\x52\x1a\x31\xaf\xb1\xc4\xd7\x8b\xf8\xcb\x68\xc1\x36\x5c\x7c\xcd\x5f\x2c\x16\x41\x20\xbe\xfa\x62\xb1\xe8\xba\x2f\x16\x5f\x72\xce\x05\x93\xbd\x7c\xcb\x7f\x12\x61\xc3\x1e\x00\x26\xe5\x96\xff\x53\x1e\xdc\xb2\x07\x80\x3a\x89\xc3\xde\x54\xbf\xe3\x0f\x63\xce\x8c\x37\xd9\xf1\x64\x26\x37\xa1\xec\x6e\x4c\x2a\xf0\x3b\xca\x9e\xb8\x5f\x4e\x62\x73\x9b\x9a\xd1\xfc\x8e\x52\xf6\x02\x5f\xb4\xeb\xc8\xf7\xaf\x5f\x7e\x2b\x0d\x6a\x14\xe4\xf1\x3d\x27\xfb\x46\x53\x10\x44\xea\x7b\xb0\xf4\xb4\xd3\x2f\x12\x85\xf7\xfc\x16\xf4\x95\x92\xed\xf8\x2d\xca\xc7\x3d\xbf\xc5\xc1\xc6\x36\x7c\xba\x47\x89\x7b\xcf\xa6\x22\x08\xee\xbb\x4e\x8e\x5e\x65\xa6\x0a\x08\x4f\x17\x7c\x41\x29\xcc\x77\xd0\x7a\xb8\x30\x3f\x81\x1e\x28\xcc\xbb\xee\x5e\x2a\x1c\x6c\x13\x1f\x3d\x2c\x9d\x03\x4b\x76\xec\x9e\x3d\xa4\x34\x3a\xba\x60\x3a\x07\x39\x50\xef\xd9\x3e\xb5\x95\x4a\xf5\x2b\xbc\x91\x3a\xb3\xea\x4c\x6f\x88\x6f\x62\x1c\xe4\xca\xf4\x8d\xe0\xe8\x35\xbe\xa3\x1c\xf3\x6c\x13\xef\x22\x59\xdd\x09\xa0\xfe\x9c\x87\xa4\x54\xd6\x14\xf6\x66\xcb\x2b\x35\x1b\xcd\x8c\xb9\xb8\xd0\xeb\x2e\x6c\x8e\x8d\xad\xba\x0d\x44\xdc\x69\x0d\xf9\x01\x94\x62\x69\x76\x3d\x95\xa5\xd6\xea\x54\x1f\x96\x33\x02\x56\x1a\x85\x7b\xde\x83\xb1\x39\xae\x0f\xeb\x7b\x74\x80\x8f\x25\x38\xf5\xc2\xe0\x56\xe5\x89\x30\x72\x68\x8e\xa7\x21\x0a\x7c\x7f\x4f\xdc\xcb\x70\xef\x79\x7b\x21\x06\x16\x82\xb4\x0a\x00\x3b\xd7\x86\x15\x9a\x4d\x16\x74\x07\xec\xc5\x8c\xa9\x80\x30\x2d\x8e\xa3\x12\x5d\x10\x39\x53\x92\x2c\x02\xac\x90\xfe\xa6\x51\x10\x40\x70\xa6\xac\x55\x93\x0c\x8f\x85\xc8\xa9\x67\xba\x8f\x42\x77\x84\x79\x9c\x6e\x0b\x06\x8b\xb9\xe3\x73\xb8\x32\x5e\x89\x2b\xa6\xbd\x33\x10\xc9\xd1\xdb\x4f\xba\x6b\xb3\xc3\xcb\xed\x48\x44\xb3\xab\xa4\xc3\x72\xd5\xcf\x8f\x40\x3c\x07\x1b\x86\x9c\x2c\x52\x8c\x07\x56\xf0\xca\x03\xa2\x6a\x3a\x2f\x3f\x85\x0b\xea\x70\xcb\xe9\xcb\xfc\x64\x23\x8f\x7e\x52\xd7\xcc\xc4\xf8\xc6\x14\x60\x5e\xa1\x91\x97\x21\x1f\xa7\xd2\x9f\x91\x96\x53\xbe\xe1\xa0\xd4\xb2\x19\x1b\x32\x42\xcc\xd4\x50\xc6\x8f\x6c\x93\x1f\xf6\xfb\x71\x56\xe3\xbf\x90\x33\xe0\xa4\x87\x98\xaa\xfc\xe4\x10\xfa\xf9\x24\x01\x93\x07\x90\x73\x61\x5c\xce\xa1\x4d\xef\x8f\xf3\xb9\xea\xb7\x30\xa3\x91\x70\x18\x15\x29\xbe\xfd\x68\xfc\xb0\xf7\xde\xcb\xa7\x03\x72\x72\xff\xf5\xe5\x53\x84\x1f\x6f\x4e\x23\x7c\xd4\xcd\x7e\xf0\x30\x8f\x0d\x10\xba\x35\xcc\xe8\x7c\xdf\x9c\x42\x22\x9a\xe2\x81\x0c\x39\x6e\x6d\x26\x8d\x21\x39\xd4\x7b\x78\x9a\xba\x9c\x9e\x2d\xc6\x98\x4a\x58\x3d\x1c\xcb\x9b\xa2\x39\x6a\xe4\xc5\xe1\x2b\x4c\x7b\x17\x02\x1d\x95\x1c\x25\x30\x03\xc6\x4e\x8d\x55\x32\x0d\xb3\x39\x92\xe4\x00\xbe\x7f\xd7\xe9\x43\xa4\x7f\xf9\x0c\x2b\x04\x3c\xc6\xdb\xc2\xb8\x5f\xb7\x2e\x8c\x80\x54\x1a\x1c\x90\xf9\x6c\xfe\xdb\xdb\x37\xdf\x9f\x4e\x07\xa5\x8d\x29\xfd\x41\xd0\xc7\x33\x7a\x73\x7e\x16\xfc\x71\x01\xc0\x08\x57\x2f\x5e\x7c\x11\xbd\x58\x7c\x79\x66\xef\x45\x7f\x9f\xe4\x7e\xdd\x86\x74\x29\x75\xab\xf6\xc8\xa7\xd3\xf7\x22\x08\xc8\x5d\x7d\x5a\xbf\x6a\xcb\xa2\xdc\x9f\xea\x6c\x7b\x24\xf5\x7e\xf2\x5e\xb0\x06\x6e\xe4\xef\x05\x5c\xa6\x5e\xd6\xe8\x21\xe1\x20\x8e\x83\x15\xa8\x0a\xca\x9a\xbb\x4e\x56\x3c\x15\x9e\x0d\xab\x5d\xb2\x1e\x55\xaf\x1b\x65\xcb\x85\x7a\xbd\xba\x0a\xd7\x40\xd0\x18\x62\x20\x1e\x13\x60\xdb\x0a\xd4\xcb\xe4\xd1\xb1\x84\x60\x51\x48\x44\x3c\x1e\xef\x9a\xb6\x90\x12\xe0\x7e\xdd\xa2\x3b\xd1\xee\x05\xb8\x85\xeb\x64\x95\x72\xa7\x20\x59\xa5\x4b\x61\x9c\x1b\x41\xb0\x9e\xf7\x1d\x23\x63\x65\xa1\xbd\x45\x3e\xd3\xf9\xc2\xae\x2b\x13\xf2\xdb\x85\xea\xa0\xb2\xb8\x00\x42\xce\xb4\xeb\xc2\xd1\x72\x4e\xfc\x1e\x55\xe0\x9e\xf0\xda\x25\x5d\x0f\x35\xef\x15\x03\xaa\xcd\x65\x3e\xb6\x16\x38\x23\x27\x07\xaf\x5f\xc1\xd7\xf3\x66\xbf\x6d\x32\xfc\x01\xda\x09\xfc\x02\x5d\x15\x7e\x81\xca\x07\x6a\x0e\xc6\x9a\x41\x98\x21\x53\x6a\x38\x50\x51\xaf\xb5\x86\x1e\x29\xf5\x06\x4a\x07\xb0\x5f\x6b\xa5\x91\xc4\x55\xb8\x60\xea\x4a\x1a\xc9\x5e\xc4\x72\xb6\x76\x94\x1f\x79\xe2\x67\x91\xe8\xa2\xb4\xeb\x46\x2f\x43\xa7\x2c\xb0\x8d\xac\xcd\x8e\x8b\xb2\x9e\xe1\x0c\x1d\x89\x19\x72\xae\x2c\xef\x4f\xf1\xa3\xa8\xf7\x59\xfb\x10\xd9\xe2\x73\xf4\x08\xee\x5b\xff\xc2\x33\x5b\xcf\x47\xfd\x75\x21\x85\x24\x09\xd3\x92\x79\x48\x99\xdb\x9e\x79\xa8\xbf\xd6\xa6\x3e\x9b\x36\x8e\x6d\x6b\x17\xd1\x68\x7b\x3b\x9d\x26\x15\xd1\xb5\xa3\x84\x03\x3f\xd3\xa8\xb5\x91\x07\x41\x01\xc0\xcc\x2c\x97\xcf\xc7\xde\x42\x23\x63\x8d\xf6\x85\xf0\x0c\x59\xdc\x65\x45\x70\x27\x6d\x76\xd4\x8a\xd8\x06\xcd\x8e\xfa\x3c\x70\xb3\xc1\x63\xf2\x50\x67\xa3\x78\x6e\xe9\xd0\x1d\x7e\x99\x3b\x03\x00\x07\x41\x2f\x48\x73\xd4\x3d\x38\x6e\xfb\x7a\x6e\x65\xb3\x61\x81\x97\xa8\x9d\x09\xbb\xad\xc0\x26\xde\xce\xc3\x13\xe5\x65\xbe\x1b\x2d\xbf\xbf\xb0\x67\xbc\x0d\x0a\xf5\xb4\xcb\x8f\x22\x8c\x23\x59\x6b\x27\x2f\xa4\x58\x0c\xbb\x12\xde\x56\x02\x6c\x0a\xa8\x6a\xc6\x97\x7a\xd4\xa1\x5e\xdf\x66\x72\xa1\x65\xd9\x68\x63\x19\x15\xcc\x5b\x73\x0d\xd7\x33\xba\x59\xb0\xe1\xc0\xe1\x32\xbd\xa2\x6c\xd8\xa8\x08\xb1\x22\x95\x3b\xdb\x98\x56\x18\x8f\x3e\x03\xb6\x30\x3d\x27\xa2\xca\xe9\x59\x3e\x2d\x89\xa5\x6a\x41\xbe\xc2\xda\xbe\x26\x14\xa3\x7a\x1e\xd5\x76\x53\x94\xa9\x2e\x7d\x85\xc7\xec\xd8\xe6\x51\x26\x45\xf3\x99\xce\x9b\x7d\x48\xe4\x14\x99\x28\x33\xc8\x17\x52\x42\x07\x0e\xea\x50\x7b\x96\x05\x41\x15\x3a\x42\x05\xcd\xb3\x2f\x17\x5f\xc2\x12\x86\x87\xf2\x53\x0b\x70\x36\x78\xa0\x37\x42\x2a\x7c\x9f\x1b\xb1\x2a\x08\xe6\x83\xe0\x49\xca\x7e\x11\xfc\x32\xe4\xf4\x63\x1c\xc6\x3c\xe8\x9e\xd1\xee\x63\x8c\x21\x89\xce\x78\x94\xa6\xc6\x21\x22\xb9\xda\x95\xc0\x7d\xa6\x83\xde\xa4\x18\x72\x9c\x7c\x10\x18\xdf\x0d\x86\x0f\x66\x44\xcc\xc8\xef\xe8\xf4\xf2\x14\xe3\x0c\x82\x2e\xb2\xd1\x71\x21\x9f\x01\x5b\x51\x07\xc2\xbc\xcc\x93\x1e\x65\x97\x98\xc3\x45\x1a\x24\xed\x17\xe5\x71\x83\x35\x91\xc6\xe4\xa6\xdd\x92\x68\x90\x65\x26\x94\x4f\x0b\x9c\x8f\xe2\x7f\xea\x7c\xb4\xcf\x04\xe7\x60\x10\x10\xf9\x17\xb3\x90\xd7\x5d\x47\xf0\x2b\x80\xfc\xd7\x8b\xe8\xd0\xee\x79\xfd\x0d\xba\x45\x7b\x51\x7a\xfe\x49\x1a\xf7\x0a\x42\xa9\xc3\x7a\x25\x6c\x1d\x8b\x64\x9d\x72\xf9\x9f\x71\x4b\xfe\x82\x6e\xc9\x59\x69\x2e\xd7\x4d\x06\x4d\xe5\x78\x3f\x75\xd3\x69\x87\xa5\xba\x1c\x63\x00\x61\x51\xb7\xf1\x01\x6a\x6a\xe1\x9e\x61\xca\x87\xfb\x37\x2b\x1b\x1a\x5a\xce\xc8\xe4\x2e\x3b\x4e\xf6\xcd\x69\x22\xc7\x12\xf8\x34\x56\xc9\x22\x3d\x33\xbf\x61\x38\x1a\xb7\x00\x7f\x5d\xa6\x4c\xfe\xe7\xc1\xfd\x73\x13\x8c\x7d\x66\xc5\x08\x92\xb4\x11\x1f\x55\x0c\x61\xd4\x16\x58\x24\x2c\x69\x84\xd5\x41\x28\x25\x7c\xbc\xdf\xf4\x79\xaf\x29\xe5\x58\xbe\x39\xae\xc3\x92\x02\x23\x9d\xd7\x33\x15\x95\xb3\x74\x05\x06\xd6\x8a\x57\x96\x90\x42\x0b\x1c\x08\xd7\xc6\x7d\x89\xef\x3f\x00\x56\x08\xbc\xf6\x00\xcc\x8c\x17\xf3\x7a\x77\x40\x1b\x0b\xc6\xda\xc8\x4d\xa1\x1c\x97\xd2\x08\xb0\x78\x3b\x0e\xc5\xf5\x57\x72\x58\x7e\xfd\xd5\x25\xfe\x71\x0f\x08\x7b\x81\x82\xd4\xd8\x03\x4a\xc5\x3e\x43\x5e\x04\x6c\xe7\x42\x1d\x7d\xa7\x83\x93\x64\x6d\x31\x20\xd5\x98\x4d\xd2\xe5\x68\x1a\xb9\xda\x4e\x9d\x5e\x51\xbb\x85\xea\xd2\xb4\x8e\xb5\x46\x1c\x8a\xbf\xfa\xfd\x40\x76\xd5\xdb\xe7\x11\xd9\xb1\x94\x67\x70\x67\xa7\x30\x81\xd6\xb8\xc5\x23\x86\xf2\xb1\xa4\x34\x12\xbc\xa0\xac\xe2\xaf\x34\xf7\x3f\x5b\xf1\x69\x1e\x04\x49\xca\xaa\x38\xe9\x3f\xa2\x4a\xae\x52\x0a\x3c\x8b\x9f\x10\x9a\x5e\xb0\x15\x0c\x86\x95\xa1\xb0\x6b\xc3\x15\xb5\x32\xbc\x9d\xef\xca\x76\x55\x86\xb2\x3a\xd7\x0e\xd3\xde\x03\xd0\x95\x9e\x44\xa2\x61\x2b\x64\xdd\x58\xf3\xcc\x85\x10\xb0\x90\xe3\x98\xb0\x56\xf0\x83\x08\x35\xc7\xee\x9a\x52\x26\x8d\x75\x3c\x5a\x30\x79\xdc\x0f\xf5\xf5\xb7\xba\x23\x31\x82\x9a\x0b\x84\x26\x9c\xfc\xf4\xee\xfd\x07\x39\x35\x4d\xaa\x83\x1c\xf7\x03\x5f\x8a\x14\x95\x3d\x77\x0a\x06\x4f\xa8\x28\x12\xda\x03\xef\xcf\xe8\x63\x65\x67\x2e\x5b\xcd\xe5\xd5\x61\x11\xcb\x25\xb5\xa8\x6f\xe5\x7a\xaa\x2c\x71\x67\x54\x86\x19\xa5\x90\xba\x1b\x16\x68\x36\xeb\xe9\x9e\x07\x81\xef\xa6\x5a\x0d\x4c\x63\x0f\x5f\xb1\xea\x3a\x27\x34\x09\x34\x68\xc1\xb2\x14\x18\x3c\x94\xe3\xc2\x38\xc3\xec\x9e\x18\xb3\x9e\x3a\xd6\x73\xf3\xb9\x0e\x43\xcf\x95\xc8\xac\xf7\x7c\x48\xa8\xd8\xcf\x30\xf1\x4d\x7e\x58\xe1\x32\x3a\x62\xa8\x2b\xa0\xc4\x62\xdc\xcf\xb5\x6a\xcb\x43\x68\x50\x3c\x3d\x4f\x8a\x92\x15\xb0\xf8\x20\xb0\xbe\x9e\xfe\xac\x55\xc6\x38\x24\x69\xbc\x83\x9f\x4f\xe3\x23\xd9\x50\x08\x87\x03\x58\xf1\x56\x13\xca\xb6\x5c\x4a\x5a\xb6\xe3\x8f\xe7\x25\x91\x3a\x7c\x9d\x6b\xd2\x0e\x4d\xd0\xa1\xaf\xe6\x44\x13\xfd\x13\xca\xd6\x7c\xab\xde\x22\x44\xac\x5d\x55\x35\xf8\x46\x59\x6d\x0b\xb6\x40\x5e\xc8\x36\x3c\xb4\x24\xd9\x8a\xbf\xa3\xaa\xef\x01\x27\x8e\x5f\x53\xd8\xc7\xab\xdd\xf5\xfb\xe6\xd4\x40\x8a\x27\xdb\xc4\x61\xc1\xb7\xe6\x2d\x42\x60\x80\x04\x7e\xff\x52\x4a\x8d\xb2\x3a\xd1\x28\x5c\x0d\x99\x7a\x4b\xb7\xa8\x96\x45\x83\xa9\x05\x0e\x6d\xa1\xc1\xcc\x73\x0f\x07\x78\x4d\xa9\x06\x63\x16\x73\xc0\x49\x0d\x77\xf2\x2f\x1e\x5d\xac\xe5\xff\xb3\x95\xbd\x44\xbe\x08\x5c\x23\x7f\xa8\xe3\x8b\x35\xfc\x91\x8b\x2f\xb9\x39\x4a\x81\x2c\x4d\xf7\x58\x1a\xfa\xf5\x7e\xa5\x9f\xbb\xa3\xd1\x16\x5a\x6b\x87\xa4\x54\x8e\x9b\xb2\xe9\x77\x2e\xfd\x1c\xc4\x82\xd5\xbe\xc1\x3d\x37\xe6\x69\x83\xb1\x8c\xb5\xce\xcd\xe0\xd1\xb8\xb0\x42\xe7\x1b\x1b\x9c\x18\x37\xc7\xcc\x86\x3c\x3e\xe5\xfb\x91\x1d\x55\x3d\xc5\x2e\x09\x88\xb2\x3e\x4b\x7d\x2e\xf5\x2a\x75\xa0\x64\x36\x2c\x14\x4e\xce\x26\x7b\x3c\x35\x87\x08\xba\x7b\x56\xce\x0f\xd9\xaa\xfc\xdf\xf8\xce\x17\xf9\x3c\x87\xda\x3f\x34\x07\x26\x1b\x39\x2a\x54\x5b\xc3\x55\xbf\xf5\xae\x7a\x03\xd4\x96\x11\xd4\xb6\xc0\xeb\x17\xe7\x33\x33\x04\xee\x8e\xf4\xa9\x2b\xe3\x7d\xd5\x88\xa5\xcc\x24\xdb\xb1\x82\xfb\x75\xe8\x60\x62\x33\x96\x71\xe0\xe7\xee\x24\x8b\x05\xf2\xf9\x8f\x35\x4b\x14\xaa\xb4\x00\xec\x94\x9f\xd0\x77\x28\x5b\xcb\x29\x0d\x29\xfb\x26\xcc\xe4\xe3\x51\x52\x53\x08\xf1\xcd\xcc\x59\xaa\x5f\x0b\x1b\x4a\xcd\x3d\xb8\x1e\x79\x3a\x3f\x34\x07\xc3\xdb\x4d\xbd\xe6\x1a\x5e\x2b\x9b\xca\x5e\x7c\xa6\xd8\x05\x38\xea\xa1\xfe\x0b\xf3\x89\x48\xb5\xf5\x41\x0a\x59\x53\xaf\x1a\xf9\x58\x7d\xff\x52\x60\x32\xc5\x74\xc4\x33\x73\xbf\xf8\xbf\x94\x95\x31\x68\x2f\xed\x09\x87\x28\x0d\x2d\xc2\x46\xa4\x1d\xf8\xc5\xbd\x1b\xb5\x98\xed\xba\x36\x3b\xfb\x20\xbd\x86\x75\x2e\x22\xce\x88\x22\xcc\xb0\xd4\x61\xb9\x1a\x8f\x4f\xa4\xe4\x79\x97\x48\x59\xbe\x1c\xa0\xeb\x16\x9f\xa1\x16\xb5\xdc\xf4\x4b\xc7\x0f\xaf\x32\x6a\x33\x1a\x57\x3c\x8b\xfe\xa3\xcf\xf6\x54\xf1\xcc\x9d\x42\x2e\x5b\x71\x5c\xc5\x55\x22\xd2\x28\x4b\x8a\x14\x62\xdb\xc3\x2a\xae\x0c\xef\x5e\x98\xc7\x95\x3b\x7b\xa2\x92\xe5\x71\x19\x55\xee\xbc\xa3\x70\x2f\x2f\x81\x5c\xb4\x18\xe0\x01\xf6\x71\x99\xe5\xf2\x0b\x2b\xc0\xe7\x29\x8a\x81\x2a\xf7\x50\xdf\x97\xdb\x9f\x54\x67\x31\x3f\x99\xd3\xcd\x71\x55\xdc\xe8\x82\x32\x4d\x0a\x9f\x53\xb4\x17\xec\x1a\x91\x88\x14\x68\x6c\xa3\xfc\x4c\x9d\x4e\x55\xec\xe5\x86\x3f\x19\xc6\xb9\xe6\xf3\x1f\xe2\x20\xe3\x4d\x86\xf5\x16\xd4\x76\x32\xcb\xb4\xeb\x25\x12\x8c\x90\x88\x34\x37\x27\x28\x3e\xf7\xa0\x75\xa1\xa7\x0b\xa7\xa7\xad\x53\x98\xf7\xdb\x4d\x6a\xe0\x0e\xd8\xb4\xd1\xdb\x4b\xb9\xd2\xe6\x80\x87\x8a\x0c\x00\x15\x06\x2f\x6b\x96\xbb\x48\x13\xd0\x1b\x2d\xb3\x3f\x88\x00\xf3\xe1\xe9\x41\x24\x68\x0c\x51\xfa\x76\xe5\xc5\xcf\xa1\xb1\x48\xcc\x07\xa7\x91\x15\xd4\x7d\x89\x9d\x10\x94\xb0\x70\xd9\x7f\x80\xba\xa2\xc7\x62\x1c\x56\x23\x12\xde\xd0\xfd\x08\xb0\x8a\xc0\x12\x6d\xb6\x5b\x79\x3f\xab\xbc\x23\x7d\x81\xa6\xeb\xc7\x0b\xfc\x23\xfb\x70\xaa\xb3\x35\x60\xa0\xe3\xec\x97\x1f\xbf\xa6\x86\x8c\x12\xf1\x2f\xd6\xf4\x2c\x2d\x81\xb8\x8c\x74\xb0\x00\x40\x19\xf7\x12\x7e\x45\xed\x7a\x91\xfc\xfd\x5c\xad\xf3\x65\x2a\x1b\x9c\xe5\xb0\x2b\x34\xb8\xa5\x77\x43\x55\x99\x3b\xe8\x99\x69\x28\x84\x3f\xe1\x4f\x40\xd5\x52\xf1\x20\xdc\xec\x9f\xb8\xcb\xdc\x03\x28\xab\xbd\xc1\x15\x3b\x8f\x27\xcf\x9f\x13\xb5\x07\x27\x0b\x04\xcb\xba\x4e\x96\xb1\x5c\x4d\xdd\x75\xb3\x2d\x7e\x2e\xb3\xe2\xc1\xd3\x58\x33\x80\x58\xcd\x8a\x87\x5f\xb3\xfa\x34\x9b\x45\xea\x08\x58\x10\x40\xab\x82\xfc\x30\xee\x65\x8b\x69\x23\xf5\xef\xef\xdf\xfd\xc8\x9d\xa8\xe4\xd6\x24\xb1\xf1\x6f\x18\xd1\x4f\xb1\xc6\x0c\x02\x08\x07\x01\xfe\x9d\x67\xbb\x42\xff\x0e\x09\x06\xe2\x12\x96\xa4\x23\xcc\xd6\xad\x52\x5f\xfe\x25\x78\x36\xdf\xfc\x53\x5e\xc9\x7e\x95\xbf\x9f\xd9\x81\xbf\x6f\x5e\x35\xfb\x6a\x5b\xe7\x27\x3e\xa6\x6e\xcf\x9f\xc9\x95\x03\x94\xdf\x67\xfc\x57\x81\x34\x09\xaa\x2e\x73\x46\x1d\xfe\x4b\x50\xd6\x9e\x99\x00\xc0\x1a\x55\x26\x6f\x6b\x65\x31\x5d\xfe\xdb\xff\x09\x00\x00\xff\xff\x29\xff\x13\x14\x83\x52\x01\x00") - -func pagesAssetsJsJquery300MinJsBytes() ([]byte, error) { - return bindataRead( - _pagesAssetsJsJquery300MinJs, - "pages/assets/js/jquery-3.0.0.min.js", - ) -} - -func pagesAssetsJsJquery300MinJs() (*asset, error) { - bytes, err := pagesAssetsJsJquery300MinJsBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "pages/assets/js/jquery-3.0.0.min.js", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _pagesAssetsJsPopperMinJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x7c\x6b\x97\xdb\xb6\xb5\xe8\xf7\xfe\x0a\xea\x9c\x96\x00\x2c\x88\x23\xa5\x37\xf7\xdc\x4b\x19\xd1\x72\x9c\x71\xe3\xd4\xf6\xb8\xf6\xb8\x4e\x4a\x73\xc5\x1c\x11\x1a\x21\xa6\x08\x16\x80\xe6\x51\x49\xff\xfd\x2c\xbc\x48\x50\xe2\x8c\xd3\x7e\xf0\x88\xc4\x63\x63\xef\x8d\xfd\x06\xe8\xb3\x27\x7f\x88\x9e\xf3\xe6\x5e\xb0\xeb\xb5\x8a\xe0\x73\x14\xbd\xa0\x25\x15\x6c\xc9\xa3\x7f\xb0\x1b\x5e\xf1\xe8\x9b\xe9\xec\x7f\xfe\x10\xfd\xc0\xa4\x12\xec\x6a\xab\x68\x19\x6d\xeb\x92\x8a\x48\xad\x69\xf4\xfa\xe5\x65\xf4\x8a\x2d\x69\x2d\x69\x04\x2b\xf7\xa0\xa8\xd8\xc8\xa8\x10\x34\x2a\x54\xb4\x56\xaa\x49\xcf\xce\x78\x43\x6b\xc9\xb7\x62\x49\x13\x2e\xae\xcf\xdc\x50\x79\xf6\xfa\xe5\x25\x4a\xfe\x10\x3d\x39\x83\xab\x6d\xbd\x54\x8c\xd7\x90\x62\x85\x76\x80\x5f\xfd\x46\x97\x0a\x10\xa2\xee\x1b\xca\x57\x11\xbd\x6b\xb8\x50\x32\x8e\x81\x5e\x7d\xc5\x6a\x5a\x82\x91\xef\xdc\xf0\x72\x5b\xd1\x85\xfd\x49\xdc\x50\xa2\x20\x4a\x81\x07\xdb\x41\xb2\xb3\xe3\xd8\xfe\x26\xc5\xa6\x5c\xd8\x47\xa8\x50\x4a\x93\xb7\xbc\x69\xa8\xd0\x93\x0f\x08\xaa\x35\x93\xb8\xc5\x0c\xed\xc0\x56\xd2\x48\x33\x62\xa9\xc0\xdc\xb7\x47\x14\x52\xb4\x13\x54\x6d\x45\x1d\xd1\x38\x06\x99\x45\x3e\x7a\xe1\x06\xe4\x80\x10\xb2\x3b\x24\x8a\xbf\x57\x82\xd5\xd7\xc9\xb2\xa8\x2a\x48\xd1\xa1\x85\xa0\x2c\xd5\x6c\x05\x67\x23\x42\x68\x52\xf3\x92\x5e\xde\x37\x14\x59\xa8\x59\x3e\xbf\x29\x44\xc4\xc9\x35\x55\xcf\xf9\xa6\xd1\xbb\xf0\x5e\xdd\x57\x14\x52\x5c\x6f\xab\x0a\xcd\xdd\xea\x6a\xc1\x33\x95\xa7\xbc\x83\xcc\x3b\xdc\xc0\x8f\x97\xaf\x5f\x69\x54\x2c\xfc\x37\xc5\x86\x2e\x68\x4a\x93\xa6\x10\xb4\x56\x6f\x78\x49\xf7\x7b\x9a\xac\xb9\x54\xdd\xf4\x5a\x4f\x67\x2b\x38\xf2\xa8\x44\x25\x5f\x6e\x37\xb4\x56\xc9\x15\x2f\xef\xe7\xf2\x96\xa9\xe5\x1a\x76\x10\xd1\x6e\x59\x48\x6a\x97\x4a\xcd\xe3\xf7\x17\x3f\xfc\x02\x52\xcf\x9e\x84\xdf\xd6\x54\xfc\xd0\x03\x62\x86\xfd\xb7\x07\x1c\x8c\x35\xbd\x07\x4d\x3a\x23\x0a\x52\x84\x05\x61\x09\xbf\xa1\x62\x55\xf1\x5b\xdc\x04\x2f\x3f\x63\x19\xbc\xfd\xe2\xf9\x71\x06\x8b\xad\xe2\x7b\xb9\x14\xbc\xaa\xd0\x59\xa2\xa8\x54\x50\x8c\xe5\xb8\x41\x0b\x9a\xd6\x50\x73\x27\xd8\x06\xa1\xa9\xb5\x9c\xa6\x71\x4c\x13\xbe\x5a\x49\xaa\xde\x1a\xfe\x60\x46\x78\x1c\xf3\x96\x50\xbf\x04\x8b\x63\x4b\xe2\x88\x10\xfd\x6c\x28\xd7\xcf\x8b\x89\xde\xcb\x0c\x5c\xfe\x00\x30\xb8\x7c\xf6\xfd\xab\x73\x90\x27\xac\x2e\xe9\xdd\xc5\x0a\x76\x70\x50\x1c\x03\xa9\x0a\xc5\x96\x7a\x6b\x14\xe4\x18\x34\x5c\x32\x23\xb3\x68\x21\x20\x47\x29\x4f\xe9\xe2\x98\x71\x9e\x5b\xe7\x15\xd5\x3f\x69\xf9\x40\x47\x47\x5c\xe3\x89\x53\x81\x00\x38\x2a\x5a\x0a\x54\x1c\xc3\x56\x4e\xd4\x7e\x2f\x20\x4d\x56\x4c\x48\x0f\xee\xf9\x9a\x55\x25\xd2\x32\x14\xb0\x4d\x06\xf2\xaf\xc5\xd1\x88\x58\x27\x55\x0b\x9a\x4a\x18\x36\x04\x53\xcb\x56\xf0\x47\x74\xbf\x1f\x75\x92\xbf\xdf\x8f\x94\xfe\x77\xac\x0a\xd1\x43\x84\x3a\x0d\xa1\xc9\x92\x6f\xf4\x52\x9e\x53\x6f\x1d\x33\xa1\x42\xb1\x5e\x3c\xf9\xe1\xe2\xf9\x87\xd7\xe7\x6f\x2e\x7f\x7d\x7b\xf1\xfe\xe5\xe5\xcb\x8b\x37\xbf\xbe\xb8\x78\xf5\xea\xe2\xe3\xcb\x37\x7f\xd1\x7b\xbc\xa0\xa9\xc2\x35\xe1\x0b\x95\x52\x5c\x90\x76\xb9\xa5\xa0\x85\xa2\xef\x8a\xfa\x9a\x42\x34\x2f\x12\x49\xd5\x7b\x55\x08\x05\x19\x9e\x22\x6c\xde\xcf\xeb\x12\xd6\x78\x8a\x0c\x2a\x15\x29\x34\x2a\x1b\x5e\x3f\xab\x97\x54\x2a\x2e\x9e\xf3\x5a\x15\xac\xa6\x62\xce\x56\x90\x8e\x08\xa9\xe2\x58\xe9\x9f\xfd\x9e\x25\x4b\xdb\x29\x61\x8d\x3c\xa5\x0d\xac\xd0\xa2\x4a\x05\xac\x2c\xc4\x15\xd1\x8c\xf6\x72\xb7\x32\x9a\xba\x28\xa1\x7d\xc0\x0a\xa5\x9a\x99\x12\x2a\x64\x1a\x02\x26\x17\xdd\xce\xcf\x9e\x16\xe2\xda\x10\x24\x93\x8a\xd6\xd7\x6a\x1d\xc7\x37\x9c\x95\xd1\x74\x44\x48\xdb\x95\xcd\xf2\x45\xf8\x92\x02\xc5\x1b\x80\x39\x31\xbf\x5a\x32\x16\xc0\xea\xd4\x25\x6f\x40\xea\x9e\x5f\xd1\x95\x02\x98\x85\xd2\xc5\x56\xd0\x8a\x16\x21\x84\xed\xf7\xad\x64\x31\x8b\x4f\x4d\xbe\x22\xd6\x58\x9c\x8c\xb0\x6b\xb1\xfa\xda\x0d\xd9\xef\x6b\xcf\x12\x91\xf1\xfc\xe0\x8d\x87\x7e\x6e\x39\x50\x59\x31\xb3\x22\xf2\xcd\xef\xe3\xc1\x37\x79\x1c\x87\x6f\x98\x91\x02\x2a\x6c\x58\x80\x70\x6d\x5f\x2a\x4d\xb3\xb6\x4b\x7c\x31\x99\xa5\xb3\x79\x6b\xba\x14\x6f\xc6\x84\x3d\x11\x58\x5b\x31\xa5\xf8\xc6\xbf\xe9\x19\x63\x52\x9b\x67\xe3\x74\xdd\x4b\x87\xec\x2a\x44\x16\xdc\x39\x7e\x1b\xee\xa6\x40\x33\x1c\x33\x62\x5f\x09\xe1\x0b\xf0\x4e\x03\x01\x29\xf8\xde\x2c\x03\x3c\x0a\x4d\x21\x24\x7d\x51\xf1\x42\x41\x9a\x81\x2b\x2e\x4a\x2a\xc0\x98\x8f\xc1\x47\x56\xaa\x35\xc8\xf1\x6c\x8a\xc6\xc3\x83\x58\x6f\x50\x87\xd8\x46\x23\x86\x39\x66\xad\xb6\xff\x04\x55\x06\xac\x95\x04\x63\x9a\x63\x95\x39\x59\x30\x6f\x3c\x03\xcb\x8a\x69\x93\xee\xde\x82\x91\xbc\x37\x92\x51\x88\x16\xbd\x01\x63\x96\x81\x4d\x21\xae\x59\x0d\xc6\x10\xfc\x48\x0d\x91\xda\xb0\x2c\x80\x95\x39\xc3\x00\xf4\xd8\x38\xc7\x90\xd4\x71\x08\xe5\x69\x48\xcc\x1a\x5a\x16\x53\xd2\xf3\x68\x58\x91\x87\x2c\x0c\xe6\x44\xe3\x19\xc7\x27\x5e\x58\x79\xad\xdc\xad\x0d\x02\xe9\xa6\x45\x05\x1b\x96\x21\x7c\xab\x19\xaa\xdb\x2d\x67\x5d\xf3\xa1\xc3\x67\x19\x18\x51\x49\xe1\xee\x80\x29\xde\x19\x01\x49\x9d\xd0\xd0\xc4\x00\xc1\x56\x9e\x52\x2b\x63\x34\xb1\x4b\x1e\x02\xd2\xae\x3b\x37\xb6\x3b\x68\x1d\xd4\x68\x23\x25\xee\x77\xda\x3e\x5e\x53\xf5\x3d\xdf\xd6\x25\xab\xaf\x9f\x9b\xdd\x79\x47\x97\x0a\x5a\x13\xa3\x45\x9c\x86\x22\x4e\xbd\x88\xcf\xb9\x13\x69\xcc\xbd\x08\x63\xde\x89\x36\xe6\xad\x30\x1f\x96\x85\x09\x09\xd0\xee\x40\x2b\x49\xa3\xaf\xad\x29\xc8\x4e\x03\x4c\x2d\x5c\xac\x78\x93\x9a\xb5\x1c\xcb\x1c\xe0\x89\xeb\x76\x0c\xf6\x4b\x4f\xcc\xd0\x03\x6e\xc8\x50\x74\xb3\x86\x28\xdd\x1d\xb0\x24\x8d\x65\x9d\x8e\x6f\xac\x44\x7e\xb4\xaf\xc2\x01\x17\x16\x78\x49\x1a\xc7\xce\x6e\xe4\x8f\xee\x5d\xf8\x15\x85\x41\xae\x22\x3e\x3c\x30\xa0\x26\x12\x6f\xda\x16\x3b\x65\x52\x6a\xd6\x57\xfb\xfd\xc6\x6e\xc6\xb5\x09\x61\xe6\xd5\x84\xac\xe0\x35\x06\x77\x00\xe1\x8d\x7b\xbe\xd7\x26\xc4\xa2\x38\x21\x15\x16\x0e\x89\x09\xd9\x78\x73\xb6\x84\x22\xd8\xe0\x2d\xa4\x98\x5b\xa8\xcc\xc8\x24\x16\x1d\xfd\x5d\x68\x81\x1b\xa2\x45\x01\x4b\x72\x0d\x39\xc2\x25\xd1\xd1\x1c\x2e\x74\x90\x81\xf0\x8a\x04\xca\x5f\x24\x56\xf7\x2f\x79\x63\xc8\xd1\x7a\x8f\x37\x43\x23\xb4\xda\x75\x43\xd6\x64\x09\x77\x7a\xc7\x1a\xcd\x94\x89\x34\x7f\x57\xd8\xec\x67\x63\x78\x3a\x91\xf6\x67\xe3\xb6\xd3\xed\x84\xdf\xc7\xa6\x15\x5f\xcd\xac\x75\x62\x55\xf9\x92\x37\x64\x8a\xfd\x9b\x5e\x92\x4c\xf1\x88\xc5\xb1\xb0\x44\x6f\xfb\x98\xb5\x93\x0c\x4e\x57\x43\x9d\x1a\x86\xee\x9d\xaf\x0d\x8a\x64\x35\xd9\xe2\xb5\xdf\x51\xf7\x66\xf0\x24\x9b\xc9\x15\x5e\x3b\xb1\x70\x2f\x1d\x52\xdb\x3e\x52\x57\x6e\x7b\x20\x5b\xf0\xce\x83\x97\x28\xe5\x84\x90\x32\x08\x0c\xcb\x30\xdc\x83\x6b\x52\xc1\x35\xe6\x08\xe1\x75\xb7\xa7\x57\x61\x78\xf6\xb8\x53\xe4\x64\x6b\x5c\x04\x66\xe4\x27\xa8\x42\x89\xc6\xb7\xac\x2e\xf9\x6d\xc2\xea\x9a\x0a\x27\xe3\x53\xad\xc9\xdd\x38\x2b\x9c\xbd\x81\x5e\xc4\xa7\x5a\x8e\x0a\xa8\x10\x6e\x7a\xde\x4d\x12\xb3\xc7\xc2\x2a\xdb\x98\x07\x0c\xb7\x3b\xed\x94\xb3\xed\x31\xdc\xb6\xfb\xcd\xfc\x4e\xd7\x87\x79\x2b\xcb\x32\x90\xe5\x5b\x4f\x37\x7b\x28\x2c\x3d\x8e\x1d\x16\xa3\x59\x0a\x56\xec\x8e\x96\x36\x62\xa6\x61\xc4\xbc\xdf\xdf\x1e\x47\xf5\xf7\xc6\x6d\x31\xec\x84\xa7\xb1\xd4\x4c\x2d\xee\x53\x6d\x1e\x6c\x14\x6a\xa2\x95\x1b\x46\x6f\x75\xfa\xa8\x41\x0b\xd4\x90\x2b\x28\xd1\x5c\xdb\x31\x33\xb7\x98\x3b\xaf\x65\x73\x02\x33\x68\x01\x0b\xa2\x33\x09\x85\x10\x6e\x11\x2e\x5a\x52\xe2\x18\x16\x5f\xdb\x51\x84\x52\x60\x37\xc4\x42\xfc\xea\x84\xb4\x20\xc2\x45\x99\x5b\x58\x60\x69\x71\xf7\x1c\x0a\x17\x1f\xdd\x42\x89\x2c\xe1\x2b\xb2\x86\x5a\xab\x57\x4e\xe7\xf0\x92\xac\xac\x36\xce\x1b\x6b\xdc\x2b\xa3\x1c\x55\xb0\xbf\x8d\xd3\x11\xb2\x19\x9b\x4e\xdc\x38\xeb\x5f\x59\x75\xa9\xc2\x1d\x6f\xac\xda\x90\xe5\xd8\xf6\x5a\xfb\xdf\x90\xca\x5b\x31\x3f\x99\xe1\xc6\x7b\x93\xc6\xab\x1a\x6b\xd7\x32\xcf\xdd\xf6\x9d\x87\x8a\x61\x8d\x87\x76\x29\x96\x86\x36\xf1\x7d\x12\xe4\xbc\x37\x3e\x4e\xc1\xb5\x9d\x29\xc8\xb7\xbf\x2f\xe6\xfb\x36\x8c\x7b\xbf\xcd\xd3\xa9\xe6\xeb\x64\x66\xbc\x8a\x4f\xdd\x80\x4e\x29\x41\x1b\xa5\xd3\xb9\x15\xaa\x7b\xa8\x17\x14\xb8\x6e\xf5\x65\x37\x68\xf1\x94\xe1\x71\x63\xdd\x96\xf5\xef\xed\x40\xcb\x0a\x65\x7f\x4f\x4c\xa4\x77\xfc\xc3\x70\x5b\xee\x29\xf7\x70\xb0\x02\xee\x46\x2b\xbb\x5f\x4d\xcf\x8b\xb6\xa0\x0f\xb8\x24\x17\xa6\x68\x91\x7c\xa1\xf7\x12\x4a\x94\x6c\x8a\x26\xa8\xc9\xf4\x42\x93\x2f\xf4\x3e\xa5\x07\x2c\x33\x9a\xe3\x5d\x21\x68\x91\x9e\x43\xfd\x82\x0e\xe8\x80\x12\xc9\x85\x3a\xaa\xe6\xf8\x4d\x4a\xf4\xe0\x09\x35\x3f\x07\xed\x89\xca\x64\xc5\x2a\x45\x45\x6f\xa5\xfe\x5e\xb3\xd3\xbd\xfe\x8e\xf0\xd0\xe8\xc5\x31\xeb\x5a\x7e\x74\xee\x04\x57\x64\xfa\xb4\x70\x7b\xbd\x28\xb2\x69\xae\x29\x4b\x4b\xf7\x80\x57\x84\x26\xb2\xa9\x98\x82\x60\x02\x50\x36\xcb\x3d\xf4\x6a\x0c\x57\x0b\x30\x01\xe3\x55\x0a\x40\x60\x45\x2e\xac\x50\x79\x5b\x55\x42\xfd\xe2\x27\x6d\xf5\xe6\x07\x83\x5f\x75\x74\x9c\x96\x6c\x10\xe6\xa1\x8b\x52\x9d\xba\xf5\x02\x72\xdf\x6e\xc3\x58\x6d\xec\x07\x3a\xb5\xde\x0d\xce\x32\x31\xaf\xb6\xfc\x6e\xff\x7b\xd1\xca\xb8\xb5\xca\xfd\x90\x65\xcc\x5b\x23\x5d\x77\xc4\xdc\x75\xc4\xd8\x48\x0d\x08\x1b\xda\x5a\xe9\xb5\x5e\xc2\x0b\xa7\xcd\x14\xb5\xf8\x03\xdb\x02\x0e\x5d\x52\x24\x68\x53\x15\x4b\x0a\xcf\xf4\x94\xbd\x99\xbe\xb7\xa3\xf6\x8a\x37\x67\xd7\x78\x40\xe0\x54\x46\xf3\x30\xb8\x7d\xef\xf7\x81\x13\x1e\xee\xe0\x34\x77\x11\xac\xe6\x7d\x47\x37\xeb\x6b\x09\x6b\x95\x49\x10\x57\x9f\x71\xc4\x58\x32\x82\x0a\x8d\xf6\x82\x62\x61\xe8\xf1\x34\x4a\xdd\x50\xd9\x44\xcc\xd0\x59\xea\x06\x0b\x11\x68\x13\x6e\x42\xfb\x42\x37\xda\xe7\xd4\x77\xb6\x6c\xcd\x9a\x9c\xa8\xac\xc9\xc7\x2a\x2b\xf3\xb3\x6f\x26\xcc\xfc\xe0\x3a\x93\x39\xd1\x51\x83\x5c\xa8\x4c\xe6\x13\x96\x15\x79\xaa\xb2\x3b\x28\x51\x8e\x83\xbd\xb8\xec\x29\xd4\x33\x21\x8a\xfb\xa4\x11\x5c\x71\x75\xdf\xd0\x64\xc5\xea\x72\x61\x7f\x6c\x31\xd3\x69\x97\xd2\xec\xe9\x80\xfc\xe0\x59\xc8\x56\x70\x08\xc4\x4b\xcd\x82\xd6\xbe\x75\x4d\x43\xf6\x80\x66\x2a\xd7\x41\xe7\xc1\x27\x10\x1a\xc3\xc7\xc7\xb5\x80\x3d\xab\x43\xcd\x79\x0e\x5d\x86\x69\xeb\x03\xd6\x46\x1b\xaf\xaf\x4d\xa7\xac\xd8\x92\xc2\x29\xfe\x41\x47\x27\x75\xb1\xa1\x00\x33\xd4\x42\xac\x93\x15\x17\xe7\xc5\x72\xdd\x21\xaa\xd0\x4e\x65\x5d\x11\x38\x8f\xe3\x25\xaf\x25\xaf\x68\x72\x5b\x88\x1a\x82\xcf\x1b\x5e\xb2\x15\xa3\x22\xf1\x63\x3e\x47\x4c\x46\x25\x6d\x04\x5d\x16\x8a\x96\x38\xda\x4a\x1a\x05\xc3\xea\xcf\x23\xe0\x69\xed\x81\xde\xef\x55\xb2\xaa\xe7\x2a\xa1\x75\x71\x55\xd1\x32\x8e\x29\x64\x3a\xdc\xe3\x4e\xc7\x64\xd2\xd8\xda\xf2\xf2\xa4\x09\xe1\xae\x45\xd0\x15\x15\xb4\x5e\xd2\xde\xb8\xb6\x55\x5b\x0f\x06\x39\x56\x08\x1d\x10\x0e\xbc\xde\x1b\x68\xeb\x68\x6a\xcd\x64\x22\x55\xa1\x68\xc2\xe4\x0f\x54\x2a\xc1\xef\x69\xe9\x93\xdd\x1d\xab\xa5\x2a\xea\x25\x4d\x4d\x6d\x5b\x6a\x93\x24\x75\x92\x54\x08\xc1\x6f\xdf\x77\xaf\xca\x95\xfb\xcd\xdb\xaa\x62\x4d\x43\xcb\x74\x34\xc3\x0e\xa1\x74\x77\x38\xcc\xe9\x00\xd2\x17\xb0\x43\x00\x9b\x47\x4b\xa2\x7d\x0e\xc8\xa0\x89\x31\x06\xda\xd7\x92\x1b\x3b\x89\x37\x9a\x12\xd9\x75\xe0\x81\x15\x1e\x01\x8a\x7b\x50\xfc\x9e\xc9\x44\xa3\x9f\x5c\xe9\x04\xb4\x10\x8c\x4a\x1f\x47\x3f\x36\xba\x29\x4a\x9d\xad\x6a\x34\xb9\x60\xd7\xac\x2e\xaa\xb7\x2d\xba\x74\x10\x43\xb7\xbb\xef\x61\x88\xe0\x10\x01\xc1\x74\x74\x32\x3f\xf1\xb1\x2c\x01\xc5\x95\xe4\xd5\x56\x51\x80\x29\x79\x6e\xa1\xb6\x58\x62\x8a\x70\x6f\xa7\x9f\x9b\xfa\x64\xb9\xe8\x11\xc5\xeb\x0f\x4d\x59\x28\xed\x74\x52\x38\x34\x9c\x8c\xa6\xf8\x68\x86\xed\x31\x21\x74\x27\x5c\x5f\x7a\x76\x87\x26\x92\x6f\xe8\x89\xd3\xd6\x61\x99\x56\x4a\xe3\xb3\x9d\x16\x04\x65\x72\x6d\xde\x7a\x75\x8a\x8f\x7a\xe2\x8a\x0b\x68\x9d\x4b\x36\x9a\x61\xb0\x91\x00\x83\x8f\xf4\xea\x0b\xd3\x36\xf9\x35\xff\x17\xc0\xe0\x02\xe4\x26\xe4\x5b\xae\x0b\xf1\x4c\xc1\x29\x4a\x14\xff\xa0\x79\xf5\xbc\x90\x14\xa2\x31\x75\x76\x61\xa6\xed\xfe\x74\x5e\x3f\x55\xce\xef\x4f\x66\xf3\x7a\x3c\xf6\x2e\x5b\x65\x75\x8e\x05\x61\x0b\x00\xc6\x6c\xcc\x53\x5b\x9e\x1c\x38\x4e\xea\x15\x84\x12\xa3\x22\x99\xc8\xbd\x41\x14\x87\xa0\xd4\xdd\x11\xf3\x16\x76\x2e\x6b\x50\x03\x35\xab\xbf\x1c\xef\x22\x28\x9a\xa6\xba\x37\x6a\x07\xb4\xad\x08\x44\x27\x11\x74\xc3\x6f\xe8\x33\xaf\x88\x10\xdc\x4d\x5a\xb9\x01\x28\x54\x03\x8b\xa3\x09\xed\x08\x00\x03\x3d\x9d\x4c\x0d\xf5\x2a\xde\x0c\x76\x64\x1f\x21\x50\xa2\xa8\xe5\x8a\x8b\x0d\x40\x39\x01\x7e\xd9\x92\x49\xbd\xbb\xe7\x37\xb4\x56\xaf\x98\x54\xb4\xa6\x42\x42\xd4\x17\x25\x8b\xff\x45\xed\x38\x10\xc7\xe1\x02\xdd\x69\x80\x1b\x67\x4e\x16\x42\xfa\x2d\xb4\x8e\xc1\xdf\x3f\x98\x20\x77\xa7\x5f\x2a\x29\xe9\xaa\xd8\x56\xea\xef\x8c\xde\xa6\x36\xa5\xea\x20\xfc\xd8\xd5\x2f\x6d\x56\xd0\xa6\x6b\x34\xac\x99\x88\xd3\xc3\x96\x00\x28\x9d\x37\x49\x51\x96\x3d\xd2\x8d\xcf\xda\x35\x85\x94\xec\x86\xa6\xa3\xe9\x01\x61\xb1\xdf\xff\x08\x6b\xd8\x84\xc7\x1e\x6e\x71\xcc\x92\x66\x2b\xd7\xb0\x09\x54\xe1\x59\x87\x1a\x4f\xb6\x46\x67\x4d\xc1\x8c\x30\xac\xe9\x3e\x5d\x11\x08\x2a\xd9\xbf\x28\xc0\xbd\xe1\x7d\x24\x5c\x79\xad\x0e\x4e\x0d\x7e\x84\x02\xfb\xc2\xeb\xd1\x54\x9e\x84\xa9\xad\x44\x6d\x83\x33\x97\x44\x60\x9e\x50\x8d\x84\x3c\xb7\xba\xad\x25\x3a\x70\x40\x2f\x21\xda\x05\xa2\xdf\x1b\xba\xdf\x07\xe6\x87\x3c\x83\x8f\xd8\x6d\x7c\xec\x3f\xe4\x72\x4d\xcb\x6d\x45\xad\x29\x0b\x33\xfb\xd7\x3d\xab\x64\x18\x65\x85\xe9\x01\x5e\xa9\x90\x60\x84\x55\x9f\xe2\xd3\xe8\x81\xa2\x1d\x1d\x86\xe8\x59\xd8\x87\x78\x40\xfd\x06\xa2\x4d\xc4\xf1\x32\x24\xcb\xdb\x26\xcf\x5a\x37\xee\x88\xbb\x33\x1c\x1c\xdf\xbd\x7b\x84\xbb\x71\x0c\x97\xda\xa7\x57\xcf\x6a\xb6\x29\xf4\xf0\x17\xa2\xd8\x50\x38\xc4\xbe\x80\xbd\xe4\xf5\xe0\x3e\x98\xbe\x90\xcd\x1f\x82\x33\x64\x30\x22\x84\xc6\xf1\x88\xc9\x37\xc5\x1b\x18\x9e\x1f\x20\x14\xc7\x4c\xbe\x60\x35\x33\xde\xa3\x9b\xfe\x8b\xdd\xa5\x30\xbf\x54\xe8\x94\xd9\x6d\x6a\x05\xc0\xdc\x85\xe6\x2e\xa0\xf6\x41\xb4\x2d\x4c\xe3\x36\x62\x77\x09\xc6\x40\xe8\x1e\xc7\x1f\xa0\xca\x78\xae\x4d\x2a\x23\xa0\xb9\x03\xda\xd1\x5a\xa3\xc6\x75\x00\xce\xf3\x31\x0b\x5d\xd1\x6f\xff\x26\x8e\x1a\xc2\x7c\x34\x33\x81\x29\x3d\xb1\xd4\x5c\xc7\xde\x92\xaa\xa0\x05\x1b\x74\xc2\x25\x5f\xf4\x13\xca\xe3\xb8\x39\x74\xa8\x5e\x7b\x9d\x07\xc5\x35\x19\x8d\x58\x1c\x0f\xb8\xe1\xd6\x41\xeb\x69\x3a\xde\xd6\xa3\xba\x80\x34\x31\x35\xdc\xa7\xcc\xfe\xda\xa2\xeb\xa8\x2d\x92\x80\xcf\x60\xac\xc6\xe0\x33\x98\x1f\x05\xc9\xe6\xdc\xe8\x33\x18\x83\xc8\x7b\x2e\x1d\x24\x0b\xfa\xcf\x2d\x13\xb4\x8c\xae\xee\x23\x30\x16\xbd\xde\x3a\x32\x2b\x44\x8a\x47\xb7\x5c\x7c\xc1\xd1\x15\x8d\xe4\x56\x50\xdd\xc0\xea\x65\xb5\x2d\x69\xc4\x54\x74\x45\x57\x5c\x50\x3b\x7b\x04\xd0\xe1\x34\xf9\xfc\x6b\x20\x7b\xb4\x2e\xdd\xd1\x8e\x54\x85\xd0\x19\x97\xfd\xb5\x6d\xba\x37\x0d\x8e\xd1\xfe\xf9\x1f\x9c\x7a\x86\x27\x7e\x33\x1d\x74\x14\x5d\x96\x42\x75\x0a\x5e\xf8\x58\x83\x8f\x67\x28\x59\xf2\x7a\x59\x28\xd8\x36\x4e\x31\x47\xc1\x5d\x0c\x96\x08\x7a\x43\x85\x8e\x51\x52\xd6\x21\xf6\xf7\xbe\x1b\xaa\x09\x4d\x36\xe6\xc8\xe4\x0c\xc2\x45\xfa\x69\xb2\xff\x34\x46\x8b\x4f\xe5\x93\x4f\x89\xfe\x8b\x60\xf2\x04\x9d\x21\x2c\xc8\xb8\xd6\x38\x35\xa4\xce\xbe\xc9\xcd\xc6\x89\xae\x06\xc5\x56\x50\x67\x49\x4d\x57\xa5\xfa\x13\x70\x65\x3f\xe9\x2f\x69\x34\xee\x6e\xc6\x9f\x1a\x90\x4a\xc2\xe7\x57\x82\x16\x5f\xec\xe5\x8b\x3f\xb9\xbb\x1a\x7f\x12\x20\x75\xce\x2e\x95\x84\xd9\xbb\x17\x25\x59\x42\xd9\x92\x55\x66\x2a\x3f\x9b\x4d\xa7\x4f\xc4\xc1\xd4\x4b\xd7\x9a\xfd\xcd\x7e\x0f\x6e\x4c\xf1\xb2\x41\xae\x50\xea\x86\x17\xc4\x0f\x59\xfc\x04\x1f\x3a\x59\xfb\x3d\xa5\xe9\xf4\xab\xd3\x1f\xab\x80\x17\x0e\xe5\x36\x86\x6b\x77\xe3\x5f\xc7\xbb\x91\x4d\xf1\x34\xff\x6a\x79\x80\x21\xdc\xb4\x25\xa4\x33\xf8\x69\xbc\xff\x34\x41\x67\x0f\x96\xcd\x68\xa2\x04\xdb\x40\xed\x21\x64\xb0\x4b\x97\xb0\x19\x48\x96\x27\xf6\x12\x90\xa4\x85\xd0\x52\x81\xf7\x9f\xe4\x19\x3a\x20\x34\x6f\x32\x99\xc7\xb1\xa9\x47\xea\xc7\x6e\xb3\xb1\x0e\x1e\xfb\x4a\x7b\x61\xb3\x8a\x48\xd2\xa6\x10\x3a\xd4\xd7\x6a\x7a\xbb\x66\x8a\x46\xb2\x29\x96\x14\x4a\x64\xee\x68\x1d\xa7\xba\x45\xb4\xe4\x9b\x4d\x11\x41\x8c\x22\x9d\x2b\xd2\xa2\x4c\x5c\xc2\x5b\x92\xb3\x4f\xf2\x09\xfe\x24\x9f\xec\x3f\xc9\xf1\x19\x2e\x88\x41\x45\x2e\xb2\x26\x4f\xb3\xa6\x55\x02\xd9\x6a\x46\x66\xd0\xb4\x4c\x2a\x51\x36\xcd\x73\x84\x8f\xda\x66\x79\xee\x47\x7b\x08\x72\x3c\x43\x28\xef\x24\xa8\x38\xe2\x6a\xb7\x57\xd0\x5a\xe0\x91\x48\x05\x3a\x2d\xc4\x34\x64\x34\x0b\x8b\x4f\xe5\x76\x49\x07\x2b\x93\xc0\x98\x90\x8c\xb6\x69\x83\xe1\xb2\xd9\xfe\x31\xc0\x60\x12\xec\xbb\x42\x0b\xd8\x1b\x49\x94\x5e\x67\x8a\x29\x4a\x9b\xa3\xae\xb1\xed\x9b\xe9\x3e\xea\x89\x54\xe8\x80\xb3\xfc\x41\x41\xd1\xc6\xa1\xb6\x67\xc3\x5a\x58\x8a\x81\xa0\x44\xe3\x4d\x07\x7c\x93\x66\xcb\x07\xe3\xfc\x60\x9d\xa9\x7c\x4c\xf8\x13\x08\x26\x96\x34\x36\x99\xe5\xe6\x86\x02\xb2\x70\x03\x0b\xfb\x97\xe0\xba\x01\x66\x44\xb9\x7c\x14\xd7\xbd\x34\x57\xb4\xa7\x9b\x52\x87\xc8\x3e\xbd\x95\x44\x04\xe1\x43\x49\xea\xa3\x92\x5c\xeb\xb8\x3e\xc0\x31\x43\x8b\x6c\xcc\xf0\x34\x4f\xff\x05\x19\x6e\xb0\xc4\x25\x72\x7a\x45\x08\x29\x17\xd0\x1d\x0a\xf0\x6c\x9a\xbb\x73\x86\x09\xe1\xd9\x2c\x47\xbe\xe2\xf8\xd0\xb0\xb1\x1f\xe6\xae\xa7\x98\x41\xbe\xc3\x8c\x32\x87\x7e\x6e\x90\x0b\x1b\xec\x11\xdd\xc0\x40\x07\x4d\xa7\xe9\x36\xa3\x6f\x30\x3d\xf8\x34\xf5\x57\xf2\xba\x50\xeb\x64\xc3\x6a\xfc\xb3\x7d\x5c\x55\x9c\x0b\xfc\x93\x6b\x2f\xee\xf0\xdf\xc8\x50\x52\x69\xed\xd2\xf0\xfd\x45\x6f\xcf\xf0\x3f\x48\x06\xce\xcb\x6b\x0a\x30\xb8\x14\xac\xd4\x89\x1e\x06\x2f\x98\xa0\x2b\x7e\x07\x72\xfc\x47\x32\xc5\x94\x92\xe9\x9c\xd2\xa7\xff\x70\x72\x36\xa7\x74\x4c\x66\x88\xad\xe0\xdf\xe2\x78\xfa\x94\xd4\xc5\x0d\xbb\x2e\x14\x17\xc9\x56\x52\xf1\xec\x5a\xdb\x47\x2f\xbc\xff\xc8\x28\xcd\x11\xda\xfd\x91\xcc\xac\xf5\xb7\x77\xeb\xb0\xa2\xe4\x6f\x71\xec\x2c\xe7\x5b\xc1\x37\x4c\x52\xcc\x29\x51\x74\x71\x5a\x98\xef\x74\x2a\xb8\x18\xa9\x74\x80\xaf\xd5\xa0\x0f\x24\x11\x54\xf2\xea\x86\x42\x94\xa8\x35\xad\x61\x38\xc3\x28\x86\xb6\x88\xe8\x70\x48\xff\xdd\x65\x24\x55\x97\x6c\x43\xf9\x56\x0d\xc2\xc4\x7f\xd4\x50\x31\xa3\x24\xe8\x75\xe0\x7c\x49\x91\x99\xd8\xd0\xa8\x79\xc7\xb3\xa2\x69\xfe\x4e\x85\x64\xbc\xee\x8c\xeb\xeb\xf7\x2f\xcf\xa3\xd9\x14\x20\x84\xd9\x01\xd7\x01\xcc\xf6\xee\x1a\xa4\x91\xaf\xab\xf1\x55\xa4\x10\x52\x6b\xc1\x6f\xa3\x9a\xde\x46\x97\xf7\x0d\x3d\x17\x82\x0b\x08\x9e\x17\x75\xcd\x55\xb4\x2c\xaa\x4a\x9b\xd9\xaa\x90\x32\x2a\x64\x54\xb4\x14\x02\x74\xc0\xa2\x87\x73\x78\xc7\x54\x2f\xe6\xc5\x90\x1f\x55\x3a\x4c\x9d\x83\xdb\x12\x07\x4f\x68\xbd\xdd\x50\xa1\x83\x3e\x12\xbe\xec\xf7\xa3\x19\x36\x07\xd5\x2b\x76\xbd\xb5\xfd\xa3\x29\x06\x37\x45\xb5\xa5\x40\xc7\x6c\xa6\x5a\x79\x2b\x98\x72\x7d\x08\xbb\x88\xd8\x8a\xec\x5b\xc1\x1b\x2a\xd4\x3d\xa4\x98\x9b\x53\x14\xde\x86\x6c\x5d\xc5\xb5\x77\x41\x48\xc7\x9f\x50\x75\xf5\x65\xcc\x11\x66\xa6\x4d\x27\xc2\xea\x70\x80\x08\x37\x7d\x8e\xea\x90\xd8\x87\x50\x3a\x90\xa4\x8b\x87\x70\x50\x78\x67\x50\x4f\x39\xee\x88\x4c\x47\x53\x1c\x52\xa8\xdf\x3d\x45\x26\x2b\x4e\x4d\x29\x9a\x63\x7a\xc0\x92\xfa\x53\x2f\x9d\x35\x5f\xd7\xfb\x7d\x28\x87\x6d\x65\x0a\x73\x32\x9b\xf3\x93\x18\x72\xce\xc7\x63\xe4\x07\x31\x8d\xaa\x0a\x82\x49\x9e\x63\x85\x1c\xf4\xae\xbc\xbe\x2e\xe4\xc5\x6d\xed\x69\xb0\x17\x81\x35\x2b\xe2\x18\xd2\x8c\xe9\xcc\x84\xe5\x5d\x85\xfc\x80\x4b\x4a\x32\x73\xe0\x38\xb1\xa1\x2e\xb6\xa7\x8f\xf6\x67\xa2\x43\x5e\x93\x14\xb5\xbd\x36\x41\xd2\x2d\xb6\xcf\x9e\x28\xfa\x5e\x1f\xcb\xd8\x56\x3b\xc2\x9d\x1a\x86\x2f\x5d\xab\x9f\x68\x6c\xb1\x1d\x62\x4f\x42\x6c\x8b\xed\xce\x71\x41\x49\xe9\x63\xe0\x3f\x23\x5c\x51\xb2\x7b\xf1\xea\xe5\xdb\x14\xac\x2a\xd6\x00\xfc\xfc\xd5\xc5\xf3\xbf\x7e\x7c\xf9\xfe\x3c\x05\xcb\x8a\x2f\xbf\xdc\x32\x49\x01\x7e\x7e\xf1\xe1\xcd\xe5\xf9\xbb\xb0\x93\x6f\x6b\x45\x45\x37\xe6\x80\x57\xc3\xda\xa0\x60\x10\xb0\x99\x42\xb6\xf8\xfd\xd7\xfa\x16\xe1\x4b\xba\x3b\xcc\x6b\x9b\x29\x63\x85\x86\x0a\x0e\x03\x26\x44\x67\x3e\x54\xaa\xa3\x6c\xbb\x76\xa9\x3f\x3a\x58\x30\xf6\x8d\x70\x97\x87\xdb\xd7\xe4\xca\x1c\xce\xac\x99\x44\xfd\x72\x19\xb1\x97\xbe\x54\xf2\x83\x8d\xbf\x25\x16\xbd\x5c\x7d\x17\x94\x12\xd3\xd1\x0c\xb7\x25\x5c\xfd\xd2\x2b\x30\xa4\x59\x7e\x38\x2a\x8c\xdb\xab\xcb\xbf\xfd\x73\x4b\xc5\xfd\x42\x7b\xba\x94\x87\xe5\x3e\x6d\x0b\x99\xef\x66\xba\x9b\x3d\x50\x1c\x27\xbb\x03\xee\x1d\x14\x1f\x21\x1d\x94\x36\x45\xf7\x8c\x06\x52\x69\x8a\x76\xf5\x29\xfc\x8c\xe6\x27\x8c\xe8\xf5\xee\xf7\xbb\x43\x08\x7a\x21\x7a\xdd\xe9\xce\x84\x37\xfd\x2a\x6b\xef\x68\x7b\x98\xae\x47\xcf\xbb\x75\x2e\x9d\xd2\x03\x1e\xc6\xf7\xf1\x33\x6f\x97\x72\x4f\x94\x4f\xb9\x8f\x70\x1b\x3e\xb2\x0a\xcf\x90\x54\xc2\xeb\x57\xbc\x28\x51\x1c\xfb\x47\x58\x07\x41\x57\xed\x63\xb1\xba\xab\xa0\xe1\xda\x55\x71\xfc\x7a\x56\xf8\xdc\x8d\xbb\x86\xf4\x98\xd0\x2b\x25\xcd\x1b\x57\xa7\xb5\x18\x0c\x57\x78\x07\x4a\x50\xa4\x69\x73\x2b\x6d\xdc\x33\x73\x49\x00\xd8\x65\x01\xb6\x66\xfa\x54\x91\xde\x38\x0b\xa8\xd5\xe1\x70\xc0\x76\x52\x69\xc5\xfc\xe1\x59\x6f\x87\x66\x0d\xe1\xfb\x30\x88\x97\x83\x0b\x0f\x55\xb5\x1f\x86\xf1\xae\x07\x23\xd7\xee\x0c\x76\xd7\xb3\x69\xf2\x41\xb1\x4a\x92\xf0\x84\x81\xf4\x83\xc1\xc5\x75\xc5\xaf\x8a\xca\xd5\xa9\x91\xfb\xf4\xc4\x4c\xc3\xab\x20\xf8\x96\xa4\xa4\xba\xc1\x2b\x04\xd9\xb5\x5d\x6d\x34\x8b\x7b\xbb\xa1\x9d\xde\x51\xf9\xdd\x9c\xdd\xb9\xc3\x9d\x90\x98\x03\xf6\x87\x44\xfd\xd6\x56\x42\xd3\x9d\x5c\xb3\x95\x4a\x77\x46\x80\xd3\xd9\x74\x8a\x69\xb7\xca\xaa\x1e\x88\xdd\xc2\xc4\x81\x13\xd5\xcf\x09\x4c\x8e\xd1\xbf\x7a\xc1\x74\x3e\xdd\xdd\x08\x77\x69\x86\x20\xa1\x98\x37\xa4\xee\x92\x0e\x97\x9c\xb5\xee\x4a\xbb\xbd\xde\xd1\x7d\x49\x64\xff\xa4\xbe\xd0\x0d\x47\x87\xf2\xb8\x22\x3b\xe3\xc2\xd2\xc6\x98\x9c\x12\x8b\xac\xd4\x81\x7f\x5d\xf6\x5a\xc6\x22\x2b\xf2\x49\x93\x15\x39\x0a\xcf\x3c\x9d\xed\xb4\xe6\xaa\xc1\x95\x76\xdd\xed\xf5\xf3\xc3\xc1\x9d\x94\x7a\xbe\x7d\x73\xc2\xb7\xbf\xf8\x11\xd3\x03\x6e\x84\xd9\xbf\x0b\xf7\x01\x8b\x9f\xf4\xe7\x47\x98\xdd\xdd\x11\x57\xa7\x67\x9b\xf6\xcb\x0d\x1f\x93\xfa\x13\x95\x79\xd0\xd4\xf9\x06\x53\x25\x84\x9c\x08\xc8\x91\x3f\xd9\xbe\x3f\x9d\x8d\x87\x26\x63\xe5\x4f\x4a\x31\x47\xf3\x10\x11\xc2\xe6\xce\x3d\x27\x8d\x60\x5c\x30\x75\x6f\x2a\x26\x7d\xee\x61\x2d\xcc\x82\x6d\x0a\x71\x7f\x22\x47\x9c\x34\x19\x6d\x53\x48\xfd\xfc\x94\x65\x34\x8f\xe3\x91\x4a\xa8\x5c\x16\x0d\xfd\xc8\xd4\xfa\x9d\x47\xc5\xd0\xf0\x13\xd4\xe3\xb0\x1e\x87\x74\x64\x69\xef\x51\x73\xa4\x63\xbd\x25\xd7\xa8\x0d\xad\xd3\xa5\x97\xb4\x2f\x35\x35\x69\x32\xde\x43\xe1\xbb\xaf\xa0\x50\x93\x5f\xa1\x9e\x63\x50\x98\xc0\x10\xb2\xbb\xb0\xd5\xde\xba\x42\x2d\x86\x1c\xd7\xe8\x70\x78\xe4\x1a\x43\xab\x59\xa6\xe0\x92\xf9\x20\xac\x2f\xf6\x14\x2d\x40\x4b\x25\x48\x81\xe3\x2b\x98\x37\xad\x8c\xca\x4c\xe5\xe6\x64\xf7\xf4\xdc\xd9\x64\xb9\xd8\x6f\x55\xda\xae\x21\x7a\xa5\x77\xa7\x71\x39\x76\xbb\x9e\x7e\x8b\x4f\x64\x2f\xed\xdf\x91\x3c\xe0\x2f\x94\x36\x97\xfc\x9a\xaa\x35\x15\x5e\xb2\xff\xcf\xef\x32\x23\xde\x14\x68\x19\x77\x02\xa3\xad\x47\xe0\xfc\x42\x5b\x73\x64\x67\x04\xf9\x19\x37\xde\x54\xf4\xd1\x6f\x79\x66\x6e\xeb\x35\x0b\x47\x65\x67\x4d\x4b\xdd\xd8\xb7\x1f\xcd\x83\x97\x7a\x78\x26\xf3\xa7\x02\x32\x6d\x3c\x74\x20\x7f\xc4\xd9\xac\xcc\x89\xeb\x9d\x70\x6d\x44\x30\xcf\xca\xfc\x3b\xdd\x24\x1f\x9d\x20\xb5\x0c\x6b\x4b\x62\xee\x66\x78\xce\x7d\xfb\x98\x4d\xf0\xc7\x09\xa6\x3e\xfc\x22\x54\xe2\xf0\xcc\x59\x83\x03\x18\x84\xfb\x72\x7c\xa1\xb1\xd6\x99\xa3\xfb\xb2\x8a\xad\x20\x90\xe6\xcb\xc5\xce\x83\xd5\x26\xf1\xad\xc9\x89\x99\x48\x4c\x14\xf9\x9e\x56\x74\xa9\xb8\xd0\x0c\x1e\xd5\x1d\x68\x7b\x25\xd4\x7c\xee\x75\x32\x71\xe0\x13\xa8\x7e\x49\xf3\xe3\xb3\x77\x6f\x5e\xbe\xf9\x4b\x1a\x7d\x36\x14\x78\xfc\x3e\x47\x9b\xad\x54\xd1\x15\x8d\x96\x6b\x56\x95\x11\x5f\x45\x4c\xc9\xc8\x42\x8d\xdc\xa0\x11\x40\x98\xba\x03\xd1\x87\x45\x26\x30\x50\xa6\x4e\xeb\x64\xae\x24\x4d\x20\x73\x85\x97\xa9\x9e\x86\x74\x32\x25\x10\xae\x48\x71\x5a\x8e\x5c\xe9\xc6\xe0\xe3\x15\x73\x15\x57\xf1\x57\xfc\xd6\xdf\x64\xc0\x6b\x3d\x24\x14\xbb\x6b\xdd\x70\xe5\x3f\x64\x71\xba\xb8\x25\xaf\x60\x8d\xb2\x2a\x9f\x97\xd9\x75\x3e\xd9\x3e\x95\xd9\x26\x1f\x92\xa3\x4d\x3e\x21\xba\x6f\x02\xed\x40\x84\x70\x99\x6d\xf2\xf1\xf6\x3b\x99\x5d\x3f\x30\x63\x4c\xec\x90\x89\x1e\x32\x60\x26\x96\x27\x93\xac\xcf\xb8\xb2\xf3\xca\xac\xca\xcf\xbe\x99\x6c\xcf\xbe\xc1\xb7\x44\x0d\xf8\x20\x7c\x1f\xde\x63\xbc\xed\xbe\xde\x59\x99\xaf\x8d\xf0\xf9\x51\xb7\xff\x28\x69\xd5\xfb\x28\x09\xdf\x90\xab\xc9\x10\xbd\xf7\x93\x73\xaf\x96\x37\xe4\x27\xf8\x2b\x94\x59\x95\x4f\xb6\xf8\x06\xe1\xa9\xa6\xc6\x48\x4e\x7b\xec\x1a\x90\x67\x3a\x08\x64\x3a\xc3\x69\x28\x64\x78\x83\x4d\x45\x4f\x68\xf3\x06\x6f\xac\xad\x66\x78\x8d\x01\x40\x98\x69\xbd\xc4\xd4\xdb\xbb\xec\x6e\x62\xa6\xe7\xc0\x5e\x95\xf2\xaa\xfa\x7f\xbf\xe2\xbe\xd9\x0a\x7e\x79\x40\x47\xcd\xf9\x45\xa8\x94\x6c\x05\x69\xe2\xee\x61\xc5\x71\x78\x79\x8a\x90\x81\x3b\x4a\x7d\x6d\xe6\xff\x89\x43\x1f\x08\x2b\x90\xb9\xda\xf3\x90\xf6\xd4\xe4\x0e\x32\x84\x1f\x54\xb0\x59\xbe\xdf\x03\x80\x1b\x92\xe5\xfe\x4c\x4a\x25\x57\x74\x5d\xdc\x30\x2e\xec\xe1\x54\x54\xd1\xc4\x94\x0e\x1a\x92\x31\x5c\xe7\xc1\x21\x95\xee\xea\x8a\x05\x0d\xf9\x27\x64\xe8\xb8\xfb\xb8\xa4\x60\x46\xe1\xd1\xd4\x0f\xf4\x67\x5b\x0d\xe9\x16\x9e\x77\xb7\xd3\x4f\xfc\xae\xc4\xa5\xd9\x25\x36\x22\x44\xee\xf7\x8d\x2b\x2c\x10\x42\xca\xf1\x2c\xd8\x9b\xaf\x32\xc5\xec\x42\x71\x1a\xfe\x54\x64\xe8\x82\xd8\x8a\xfc\x8c\x37\xa4\x2d\x8d\xb3\x38\x5e\xc1\xc2\xde\x0a\x47\xdf\xad\xa0\xbd\x5d\x8f\xf6\xfb\x2e\xba\x70\x43\x4c\xfb\x53\x3d\xc2\x0e\xde\xef\x7d\x49\xdc\x0d\xb0\xa6\xc4\x02\x51\xbc\xd1\x03\xba\x72\xb8\x1b\xa3\xdb\x0d\x0c\x37\x18\xaf\x49\x08\xdb\x7e\xeb\x81\xf0\x92\xf4\x90\x72\xdf\x69\x21\x7c\x4d\x02\x20\xe6\x8b\x11\x84\xb7\xa4\xbf\x38\x6f\x61\x5f\xf5\xc8\x5c\x1f\xd1\xb4\xec\x11\x70\x7d\x8c\xed\x16\xdf\x7e\xc5\xbf\x33\x6d\x6f\x46\x23\x65\x34\xe7\xef\x85\x60\xa6\x5e\x23\xe3\x18\xde\xda\xef\xae\xdd\x97\x1e\x66\x69\xdd\xe4\xce\x98\x85\x59\x7b\x74\x3c\xe8\xda\xb5\x75\xa3\xb6\x68\x0e\x37\xfb\xfd\xd5\x7e\x7f\x6f\x5d\xb9\x53\x51\x32\x9a\x62\xd3\x61\xaf\x20\x34\x59\x39\x9e\xe5\x08\xdf\xc7\x31\x14\xe4\xaf\x50\xa0\xfe\x05\x48\x36\x86\xc2\xdc\x3a\x17\x29\x00\x03\x56\xd7\x7d\x11\x78\x2c\x3e\xef\x07\xb5\xfa\xf1\x1b\x87\xc8\xdc\x26\x1c\xb4\x3a\x14\xdb\x8a\x9d\x0d\x10\x0f\xd8\xab\x88\x2f\xe4\x3d\x1a\xf4\xb5\x5f\xce\x1c\xb0\x31\x5e\xde\x08\xfe\x4f\x68\x04\x67\xff\x59\xc2\xd8\x79\xe5\x9a\x30\x4f\xa8\x20\xac\x97\x1f\x3e\xee\x95\x39\x32\x79\x23\xe9\x84\xe5\xe4\xd6\x48\x70\x49\xbb\xe7\x85\x73\x22\x32\x9e\x4f\xa0\x5c\x98\x9e\xa3\x28\x30\x4f\xa7\xfd\xbd\xbc\x83\x03\xd7\x3a\xc9\x52\x87\x42\x3a\x98\x5b\xb3\x92\x7a\xde\xfc\xbf\x47\xa3\xe0\xc7\x62\x38\x0d\x05\x60\x70\x94\x37\x1e\x47\x71\x6a\xd0\xbc\x70\x72\x39\x0c\xf5\xb4\xfe\x75\xb2\x80\xbd\x2c\x57\x6c\xe8\x01\x05\xee\x41\x7b\x27\xff\xdd\xc9\x53\xa3\xf3\xfb\xbd\xfd\xe2\xe4\x3b\x67\x17\xf4\xbb\xe2\xcd\x77\x5e\xf3\xf5\xbb\xe9\x78\xea\xec\x89\xa1\x76\x6a\xc0\x6b\xda\x3a\x3a\xec\xbb\x39\x62\x4d\xba\x5b\xc9\x19\xb8\x9b\xf0\xad\x9a\xf0\xd5\xa4\x43\x03\xe4\x04\x00\x13\x62\x1a\x68\xb3\x47\xa0\xcd\x7e\x17\xb4\xd1\x2c\x4c\xe8\x97\xf6\x3b\x0e\x73\x5b\xb3\xdd\xc1\x6f\x7f\x5f\x86\x7e\x67\x12\x97\x7b\x5c\x9f\xfa\x80\xe6\xdf\xd8\x8e\xe0\xba\x68\xb8\x13\xd7\xcd\xf6\xd9\x72\x49\x2b\x2a\x8c\x7d\x9b\xb7\x75\xef\xe6\xf8\x5a\x40\x17\x43\x1f\xcd\xf9\x1c\xd9\x7a\x60\xb4\xe1\x37\xb4\x8c\x14\x8f\x3e\x87\xf4\x7e\xee\x2e\xf7\x14\x75\x19\xdd\xb2\xaa\x8a\x6a\xae\xec\xbd\x9e\x46\xeb\x3d\x2d\x23\x56\x47\xab\xad\xda\x0a\x1a\xdd\xd8\x43\x34\xa9\x83\x71\x5b\xd6\x4a\x7e\x93\xfe\xe2\xbc\xc4\x25\x2e\xba\xab\xfd\xcd\x42\x1d\x13\x90\x36\xb8\x22\x43\x15\x0c\xbc\x22\xd7\xb0\x42\x78\x43\x76\xfe\x4e\x6b\x5a\xb7\xd7\x5b\x0f\x78\xed\x3e\x51\xf9\x19\xd6\xce\x4d\x29\xde\x98\x37\xe3\x87\xdc\x47\x2a\xfa\xdd\x3b\x20\xfb\x11\x8b\x6e\xb1\xfe\xeb\x80\x97\x24\xf0\x32\xdc\x7f\x01\xe2\x33\xc3\x6d\x50\x2d\x60\xad\x99\x70\x91\xf9\x15\xe9\x5f\x99\xd5\x7a\x51\x06\xe0\x96\x8b\x89\xff\xfa\x6e\xec\x3f\x3f\x4d\xcd\x27\xa9\x58\x76\x70\xb7\x7a\x94\xb1\x32\x63\xf7\x25\x6a\x6a\xbf\x4e\xc5\x45\x1c\x5f\xa1\x4d\x76\x95\x13\xbb\x4a\x55\x28\xfa\xe7\x12\x82\xb1\x1c\x83\xe6\x0e\x47\x60\x5c\xda\x87\x29\x02\x78\x93\x2d\x73\x32\xc5\x9b\x6c\x6b\x7e\x12\xbd\x67\xcf\xd7\x45\x7d\x4d\x49\x80\x63\xf7\x71\xe3\x6d\x1f\xd1\x59\x3a\xc3\xf7\x3d\xa4\x66\xe9\x6c\x6e\x80\x96\x4f\x6e\x2d\x58\xf9\xe4\xbe\x0f\x78\x39\x06\x1a\x8b\xad\x39\x58\x3e\x27\xbb\xff\x0a\xee\x2c\xff\x57\x1a\x58\xc9\xe0\xab\xa0\x4e\x0d\x9d\x9b\x3b\xef\xe9\x66\x7b\x73\xcf\x77\x6f\xda\x86\x36\xa0\x7f\x1f\xf6\x1f\xc5\xf4\xfd\x31\xc6\xaf\x1d\x4b\xdb\x68\x8a\xef\xba\x1d\xbe\xf7\xdb\x79\xc0\x9d\xba\x79\x7d\xff\xff\x8f\x5a\x6c\x47\xd3\x2f\x83\x6e\xd9\xe3\xfc\xdb\x60\x6f\x9f\xe0\x30\x4d\x89\xe3\xf0\xfc\xa2\x4f\x4d\x7b\xd2\xf5\x0b\xec\x4f\x1a\xa0\xda\x9e\x1d\xa4\xfd\xb3\xd6\xf0\x23\xc9\x0b\x58\x63\x85\x29\xc2\x0d\xb9\x81\x3c\xbc\xfc\xa1\x9b\x31\xff\xfa\x17\x15\x27\x43\xfc\x67\x14\xed\xa5\xb8\xfe\xb5\xc8\xde\x95\x76\xdc\x20\xfc\x0b\x54\xb8\xd3\xec\xee\x0b\x08\xf3\xa9\xcb\xc9\xbe\x59\x13\x72\x38\x1c\xf0\x8a\x1e\xd0\xfc\x0f\x67\x67\xff\x1d\xd9\xff\x65\xea\x75\xd1\x34\xac\xbe\xfe\xf0\xee\x15\x71\xd5\x85\x0d\xab\x93\xdf\x64\xb2\x29\x9a\x3f\xfc\x6f\x00\x00\x00\xff\xff\x10\xa0\xcc\x28\xf4\x4a\x00\x00") - -func pagesAssetsJsPopperMinJsBytes() ([]byte, error) { - return bindataRead( - _pagesAssetsJsPopperMinJs, - "pages/assets/js/popper.min.js", - ) -} - -func pagesAssetsJsPopperMinJs() (*asset, error) { - bytes, err := pagesAssetsJsPopperMinJsBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "pages/assets/js/popper.min.js", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _pagesAssetsStylesBootstrap400Beta2MinCss = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x6b\x8f\xe3\x38\x92\x28\xfa\xfd\xfc\x0a\x6d\x16\x0a\x5d\x39\x6d\xb9\x24\xf9\x99\x4e\x54\x63\x66\x1a\xb3\x38\x03\x4c\xef\x87\x9d\xb3\xc0\x05\xfa\xd4\x05\xf4\xa0\x6d\x4d\x49\x96\xae\x24\x57\x2a\xc7\xf0\xfe\xf6\x0b\xbe\x24\x3e\x82\x94\xe4\x74\x76\xcf\x01\xce\xd6\x4e\xa7\x4c\x05\x23\x82\x8c\x60\x44\x90\x22\x83\x9f\xff\xf0\x6f\xff\xc3\xf9\x83\xf3\xe7\xa2\x68\xea\xa6\x0a\x4b\xe7\xfb\x72\xee\xcd\x3d\x37\x42\x4d\x38\x0f\x9c\x4f\xc7\xa6\x29\xeb\xdd\xe7\xcf\x07\xd4\x44\x1c\x66\x1e\x17\xf9\x23\xae\xf5\x73\x51\xbe\x56\xe9\xe1\xd8\x38\x81\xe7\xfb\x6e\xe0\xf9\x1b\xe7\x7f\x1d\x91\x80\xed\x4f\xe7\xe6\x58\x54\xb5\x11\xf8\x25\x6d\x1a\x54\xcd\x9c\xbf\x9e\xe2\x39\x06\xfa\x5b\x1a\xa3\x53\x8d\x12\xe7\x7c\x4a\x50\xe5\xfc\xf2\xd7\xff\x25\xb0\x90\x36\xc7\x73\x84\x89\x7f\x6e\x5e\xa2\xfa\x73\xc7\xcf\xe7\x28\x2b\xa2\xcf\x79\x58\x37\xa8\xfa\xfc\xb7\xbf\xfe\xfc\x97\xff\xf8\xfb\x5f\x30\x7f\x9f\x77\x55\x51\x34\x17\xd7\x8d\xb2\x33\xda\x7d\xf0\xbc\x4d\xb4\xdf\x3f\xbb\x6e\x7a\x4a\xd2\x43\xb1\xfb\xb0\x5e\xfb\xde\x3e\x78\x76\xdd\xf2\x5c\x95\x19\xda\x7d\x58\xef\x97\x41\xec\xe3\x82\xf4\xf4\x6d\xf7\x01\x6d\x17\x68\x1b\x3f\xbb\x6e\x85\x92\xdd\x87\x24\x5e\xac\x96\xab\x67\xd7\x2d\xaa\xf0\x74\x40\xbb\x0f\xfb\x64\x83\xfc\xe5\xb3\xeb\xbe\xa2\x2c\x2b\x5e\x76\x1f\xf6\xfb\xd8\xf7\x36\xcf\xae\x7b\xa8\x10\x3a\xed\x3e\x04\xdb\x70\x43\x6a\x34\x28\xcc\x76\x1f\x02\x2f\x7e\x7a\xc2\xaf\xe3\xd7\xf0\xb4\xfb\xe0\x6f\xc2\x20\xda\x3e\xbb\xee\xcb\x31\x6d\x30\x3a\xc2\xdb\xa1\x0a\x5f\x77\x1f\xb6\xeb\x2d\x7a\x5a\xb3\x9f\x6e\x12\x56\xdf\x76\x1f\x16\xcb\x45\xb8\xf4\x30\x73\x55\x9a\x87\xd5\xab\xd0\xa0\x1a\xc5\xc5\x29\x21\x65\x5d\xcd\xfa\x1c\xc7\xa8\xae\x05\x2e\xd2\xd3\xbe\x10\xc9\x86\xd5\x29\x3d\x1d\x04\xb6\x13\xdc\xae\x4a\x68\x69\x86\xc5\xb5\xfb\xb0\xdf\xee\x9f\xf6\x21\x01\x90\x18\x89\x2a\x14\x7e\x2b\x8b\xf4\xd4\xb8\x6d\xbd\x53\x4a\xea\x7c\xb7\xda\xac\xcb\x56\x2e\xcd\x93\xdd\x66\xbd\x55\x4b\xb3\xc3\xee\xe9\x29\x50\x4b\xdb\x6c\xe7\x07\x9e\x47\x8a\xf7\xc5\xa9\x71\xf7\x61\x9e\x66\xaf\x6e\x1d\x9e\x6a\xb7\x46\x55\xba\xdf\xb9\x61\x59\x66\xc8\xad\x5f\xeb\x06\xe5\xb3\x3f\x67\xe9\xe9\xdb\x2f\x61\xfc\x77\xf2\xf3\xdf\x8b\x53\x33\x7b\xf8\x3b\x3a\x14\xc8\xf9\xaf\xbf\x3e\xcc\xfe\xb3\x88\x8a\xa6\x98\x3d\xfc\x4f\x94\x7d\x47\x4d\x1a\x87\xce\x7f\xa0\x33\x7a\x98\xfd\xa9\x4a\xc3\x6c\xd6\x23\x9d\x3d\xfc\x09\x23\x75\x7e\x2e\xb2\xa2\x72\xfe\x92\x17\xff\x48\x1f\x7a\x3c\x7a\xc1\xdf\x5f\xf3\xa8\xc8\x1e\x14\x26\xf3\xe2\x54\xd4\x65\x18\xa3\xdd\xc3\xdf\xff\xfd\x97\xe2\x54\xb8\xff\x89\x0e\xe7\x2c\xac\x1e\x66\xbf\xa0\x53\x56\xcc\x7e\x29\x4e\x61\x5c\xcc\x7e\x2e\x4e\x75\x91\x85\xf5\xec\xe1\x6f\x69\x84\xaa\xb0\x49\x8b\x93\x83\xe1\x1f\x66\x0f\x3f\x17\xe7\x2a\x45\x95\xf3\x1f\xe8\xe5\x61\xd6\x21\xbc\xfe\x31\x47\x49\x1a\x3a\x65\x95\x9e\x9a\xcb\x1f\x66\xbb\x5d\xb8\xc7\x63\x68\xb7\x8b\xd0\xbe\xa8\xd0\xa5\x41\x6d\xe3\xd6\xc7\x30\x29\x5e\x76\xa7\xe2\x84\xfe\x2d\xcd\xcb\xa2\x6a\xc2\x53\xf3\x1c\x15\x2d\xfc\xe6\x1a\xce\xc2\xdd\xf7\xb4\x4e\x1b\x94\x50\x04\x09\x8a\x0b\xca\xce\x8e\x8c\xc5\x2c\x3d\xa1\x6b\x18\x45\xd5\xaf\x4d\xda\x64\xe8\x2b\x23\x7b\x89\x8b\x53\x83\x4e\xcd\xee\xc1\xf9\xf4\xe0\x84\x4d\x53\x7d\x22\xef\x1f\x9d\x87\xc7\x87\x6b\x59\xa1\x0b\x51\x6f\x97\xf6\x45\x59\x21\xf7\xa5\x0a\x4b\x81\x70\x94\x15\xf1\xb7\xff\xef\x5c\x34\x68\x86\xa1\xa3\xa2\x4a\x50\xb5\xf3\xcb\xd6\xa9\x8b\x2c\x4d\x9c\x0f\x4f\x4f\x4f\xcf\x65\x78\x40\x54\x35\xdc\xf4\x54\xa7\x09\xda\x85\xdf\x8b\x34\xb9\x36\x47\x14\x26\x97\x24\xad\xcb\x2c\x7c\xdd\x35\x61\x94\x21\x17\x17\xa1\xca\x3d\x54\xc5\xb9\xbc\xa6\xf9\x61\xd6\x54\x17\x53\xfd\x63\x30\x3b\x2e\x66\xe5\xa5\xa8\xca\x63\x78\xaa\x77\x8b\xe7\x97\x34\x29\x5e\xea\xdd\x82\xbe\x12\x2b\x92\xe6\xb2\x7a\xf3\x53\xf8\x3d\x0a\xab\x8e\x32\xee\xcc\xeb\x3c\x0a\x93\x03\xd4\x02\xcf\xf3\xae\x73\xc2\x1c\x7b\xe9\xc6\x45\x96\x85\x65\x8d\x76\xfc\x41\xe8\x10\x0a\xe9\x34\xc9\x8c\x3f\x1d\x2f\x51\x18\x7f\xc3\x0d\x3a\x25\xb8\x6a\x51\x11\x6b\xa1\xd5\x71\x29\x76\x94\xf4\x95\x85\xa2\x23\xc0\x59\x92\x24\x02\x96\x2b\xa0\x4c\x44\x63\xd2\x7f\x62\x43\xc1\x78\x8f\x8a\xf6\x7a\x6c\xf2\xec\x22\xa8\xfb\xae\x1f\x3e\xcf\x58\x51\xdc\x23\x22\xa6\xc3\x9f\xfb\xab\x67\xf7\x05\x45\xdf\xd2\xc6\xa5\x7a\x99\xfe\x13\xb9\x61\xf2\x8f\x73\xdd\xec\x7c\xcf\xfb\xf8\xec\xe6\xb5\xe5\x4d\xf1\x1d\x55\xfb\xac\x78\x71\xeb\xe6\x35\x43\xbb\x3a\xae\x8a\x2c\x8b\xc2\xaa\x47\x1a\x96\xee\x31\x3d\x1c\x89\xa9\x62\x9d\xd3\x54\xe1\xa9\x2e\xc3\x0a\x9d\x9a\xeb\x1f\x31\x96\xef\x29\x7a\xc1\x8d\xbc\xbc\xa4\x49\x73\xdc\x25\xe8\x7b\x1a\x23\x97\xfc\xb8\x86\x55\x93\xc6\x19\x9a\x85\x58\x2d\x66\x49\x1a\x66\xc5\x61\xb6\x4f\x0f\x71\x58\x62\xe5\xc7\x8f\xe7\x0a\xcd\xf6\x45\x81\xfb\x85\x2a\xd7\xec\x48\xb4\x6b\x96\x87\xe9\x69\x76\x0a\xbf\xcf\x6a\x14\x63\xe0\x4e\x1f\x88\x52\x5f\xa3\x22\x79\xbd\xe4\x61\x75\x48\x4f\x3b\xef\x59\xec\xae\x7f\x25\xbb\x45\xf8\xc2\x9d\xbf\xf3\x2b\x94\xd3\x9f\x2f\x54\x7c\x4b\xcf\x53\xc4\xb9\x7a\x66\xfa\x17\xf8\xc1\x2a\x78\x7a\x26\x92\x0b\xb3\xf4\x70\xda\x65\x68\xdf\x3c\x83\x8a\x7a\xfd\xb5\x09\xa3\xf4\x94\xa0\xf6\xcb\x83\xeb\x3f\x7c\xdd\xed\x8b\xf8\x5c\x5f\x8a\x73\x83\x91\xef\x3c\x41\x05\x8f\x95\xa8\x71\xcc\xb6\x60\x95\x7b\x66\x2c\x78\xcf\x5c\x25\x88\xb9\x8a\x32\x74\x3d\xfa\x33\x3a\x8e\x8f\xcb\xd9\x71\x35\x3b\xae\x59\x9f\xbb\x4d\x51\xee\xbc\x67\xf6\x23\x2a\x9a\xa6\xc8\x77\xf3\x55\x85\xf2\x6b\x69\x03\xc1\xdd\x40\x2d\x5d\x12\x36\xa1\x5b\x54\xe9\x21\x3d\x85\x99\x4b\xed\xde\x4c\xb0\x81\x66\x4b\x29\x2b\x3d\x04\xe1\x24\x45\xd3\xa0\xe4\x79\x10\x20\x3e\x57\x75\x51\xed\x8e\x28\x2b\x9f\xbb\x21\x48\x18\xf5\xae\x61\x92\x54\xa8\xae\x2f\x7a\x03\x98\x58\xc9\xa8\x39\x15\x55\x1e\x66\x92\x24\xd3\xd3\x11\x55\x69\x73\x4d\xb2\x59\x91\xcd\xce\xd9\x60\x7f\x14\x99\x53\x60\x58\xe7\x8c\xc1\x1d\x52\xc9\xe9\xeb\x75\x1c\x25\xcd\x45\xd4\xa0\x8d\xe7\x5d\x93\xe4\x02\xc8\x80\x13\xc1\x6a\xb3\xf3\x04\x37\xd0\x8d\x18\xc7\x73\x08\xe9\x64\x7f\xba\x08\xad\x49\x9b\x30\x4b\xe3\x6b\x34\xab\x9b\xaa\x38\x1d\x24\x72\x51\x91\x25\xa8\xba\xd6\x79\x98\x31\xfb\x44\x14\x7b\xeb\x7d\xbc\xd6\xe7\x68\x56\x9f\xcb\x4b\x59\xd4\x29\xe9\xe8\x0a\x65\x61\x93\x7e\x47\xc2\x00\xd8\xac\x3e\x4a\xbd\xe4\x3d\x7f\x47\xd8\x3c\x84\x19\xd3\xf1\x28\xac\x11\x71\x84\xf5\x39\xba\xb0\xd6\xb8\xf3\x60\x85\xf2\x2b\xc6\x8d\x7b\xcf\x9d\xe3\x5f\xe1\x85\xa9\x3f\x8b\xd1\x54\x29\x63\x87\xa1\x0f\x16\xc1\x70\x99\x14\xc8\xad\xbf\xa5\xe5\xae\x88\xfe\x81\xe2\xa6\xbe\x86\xbb\x23\x1e\x0e\x3d\xb1\xd5\x3a\x5a\x98\x55\xea\x1a\xee\x4e\x45\xf3\xe9\xd7\x63\x85\xf6\x5f\x1f\xe9\x33\x1f\x9a\x5f\x1f\x19\x16\xa6\x1a\x20\xcb\x76\x04\x74\x5c\xcf\xec\x30\x22\xc3\x6f\x25\xd5\x9b\x90\x6b\x5c\x24\x68\xf6\x2d\x4a\x70\x10\x31\xab\xc3\xbc\x94\xdc\x53\x17\x3c\xf5\x61\x94\x68\xf7\xb0\x45\xa8\xd0\xd0\x18\xe8\x2d\x4f\x78\x6e\x0a\xab\x7b\xba\x52\xaf\xa1\xa9\x72\x9a\x1f\x2e\x8a\x4a\xe5\x69\x92\x64\x88\x8f\x6c\x3e\x60\xb1\x8a\x7d\x3f\x90\x56\x93\x49\xcc\xe3\xa5\x23\x7e\x4c\x93\x04\x9d\xae\xbf\x56\x45\x86\xbe\x44\xe7\xa6\x29\x4e\x5f\x67\xe1\x2c\xac\x50\x38\xa3\x3f\x67\xe9\xa9\x3c\x37\xac\xcb\x5e\x4b\xf4\x85\x4c\x58\xbe\x3e\xce\xb2\x30\x42\xd9\xac\x46\x19\x8a\x9b\x59\x7d\xce\xf1\x34\x62\x86\x3b\x1f\x57\xbe\x10\x4f\x5c\x9c\xe3\xa3\x1b\x12\x6f\xb6\xcb\xc3\x53\x5a\x9e\x33\x22\x93\x67\xe3\x9b\xab\x3d\xb2\xb9\x32\x47\x7a\x29\xc3\x24\x49\x4f\x07\xd2\xbd\xf3\x0d\x31\x01\xbc\x88\xdb\x05\x5a\xca\x94\x99\xcd\x64\x54\x0f\xc3\xd0\xb9\x24\x8a\xa3\x15\xaf\xcd\xf1\x22\x80\x71\xdb\x46\x5a\xdb\xb9\xe4\xf4\x44\x46\x36\xb1\x33\xa0\x4f\xa0\x7d\xc7\xdb\x51\x85\x49\x7a\xae\xb1\x61\x22\xc5\x8a\xbe\xe1\x10\x8a\x99\x67\x5e\xb4\x2a\x5b\x07\xeb\x85\xc3\x07\x2e\xa9\xe1\x56\xb8\x7d\xa4\x45\x57\x51\x38\xb3\xa2\x6c\x68\x0c\xc1\xa4\xd1\x49\x01\x8c\x17\xf8\x40\xe9\x75\x96\x97\x40\x46\x5d\x24\x74\xd1\xdc\x25\x7b\x4b\xe9\xd2\x7e\x23\x76\x67\x5f\x54\x39\xd5\x3c\xa6\x34\xa8\x46\xcd\xd7\x19\xfd\x51\x9f\xa3\x3c\x6d\xbe\x72\x05\xc3\xf1\x9f\x43\xdf\x30\x0d\xbc\xf0\x66\x87\x65\x89\xc2\x2a\x3c\xc5\x68\x47\x5f\x5d\x25\xb8\xdd\xce\xcd\x8b\x7f\xb2\xce\x49\x4f\x27\x54\xcd\x44\x72\xc6\xd7\x8c\x01\xe0\x3d\x13\x90\xf6\x82\x2b\xdc\xce\x03\x06\x17\xe9\x1b\x8a\x39\x3e\xa2\xf8\x5b\x54\xb4\x5f\x67\x42\x21\x16\x7f\xf1\x15\x8e\x7e\x9f\x3b\xc4\x22\x9a\x24\x6c\x90\x84\x02\x17\x34\x69\x8e\xdc\xac\x88\xc3\x4c\x7a\x95\x17\xa7\xe6\x28\x95\x60\x40\xb0\x0f\xb3\xb4\x6e\x70\xc4\xdd\xe9\x87\x6c\x84\x2a\x44\xb4\x81\xdb\x94\xeb\x3e\x45\x59\x52\xa3\xe6\x92\xa7\x27\x1a\xe0\xee\xbc\x9e\xdf\xe7\x4e\xb9\xd8\x54\xc0\xbb\x66\xe8\x80\x4e\x89\x1c\xb8\x3e\xd3\x8a\x24\x08\xcf\xc3\xd6\x15\x7e\xaa\xa8\x64\x97\x2e\x98\x54\x5a\x00\x68\xe7\xb3\x6c\xfa\xc5\xd9\x21\x8d\x53\xae\x65\x55\x1c\x48\x54\x63\x72\xbe\xb4\xcb\x4e\xe7\x3c\x42\x15\xd6\x08\xd6\x6b\x44\xea\x6e\x5d\x62\xae\xa8\x9a\x1a\x00\x8b\x73\x23\x03\x5e\x18\x8b\xb8\x4b\x19\xf6\x1a\x85\x55\x7c\xfc\xca\x47\xbc\x5b\xec\xf7\x35\x6a\x76\x2e\x59\xa5\xd0\xc5\x24\x8c\x1b\x56\xb3\x27\x47\x0b\xdc\x18\x03\x66\x32\x6b\x26\xd8\xde\x17\x42\x3a\x41\x88\xf5\x75\xf6\x69\x86\xdc\x73\x99\x15\x61\xc2\xdb\x83\x05\xd1\x75\xb1\x79\x64\x16\xe7\x06\x9b\x08\xc8\x44\x5e\x99\x7b\xe8\x5e\x62\x45\x74\xd3\x06\xe5\xd7\x06\xe5\x65\x16\x36\x48\x9e\xfd\xfe\x4a\xfd\xd2\x57\xa9\x54\x9c\xa2\x1e\xfd\xd9\xfc\x18\xcc\xe6\xc7\xc5\x6c\x7e\x5c\xce\xe6\xc7\xd5\x6c\x7e\x5c\xcf\x8c\xd1\xbb\xae\x59\x90\x31\x64\x81\xdf\x4a\x9b\xa9\x04\xb2\xa2\x11\xfa\x47\x5f\x08\x0a\x03\x6a\xf6\x31\x4f\xc7\x40\x2c\xa7\xa5\x0b\x3c\xfd\x17\x15\x7a\xc3\xc0\x97\xb3\xe3\xf2\xa2\x6a\xfa\x15\x37\xe7\xb8\x92\xca\x03\xf6\x62\x8d\x1b\x25\xcf\xb2\xae\xf3\x0c\x85\x89\x0e\x2d\xb5\x69\xe1\x79\xd7\x39\xeb\x4d\x57\xe4\x7c\x0d\x40\xaa\xad\xef\x6b\x8a\x6d\x5b\xcd\x21\x2a\xe6\xba\x62\x0f\x2c\x27\xd6\x15\x3b\x69\x31\xae\xee\xb1\x12\x63\x30\x5f\x98\x25\x88\x61\x18\xb7\x5d\xdc\xac\x13\xd8\x6e\x4d\xa3\x3a\x44\xe1\x27\x6f\x86\xff\xcd\xfd\xc7\xeb\x9c\xcc\x05\x66\xc0\x8c\x40\x9d\xe9\x5e\xe7\x79\x58\x7d\x9b\xe1\xff\x74\xae\x63\x1e\x60\x7a\xfa\x9c\x36\xde\x6f\xd1\xe2\x3a\x27\x63\xe2\x7c\x22\x7e\x25\xe9\x02\x1c\x3a\xa3\x79\x26\x2f\x05\x97\x43\xa1\xe9\x18\x9b\x02\x4b\x06\x1d\x3c\x46\x35\x30\x1a\x30\x66\x61\xdd\xb8\xf1\x31\xcd\x92\x47\xde\x9f\x15\x1d\x25\x65\x7b\x9d\xa7\xa7\xb4\x49\xc3\x2c\xad\x73\xa1\x3f\x9e\xbc\x8f\xcf\x4a\x28\x70\x2e\x4b\x54\xc5\x61\x8d\xae\x73\x6d\x72\x06\xcc\x34\x25\x9d\xef\x2b\xb8\x74\xe1\x44\x71\x30\xb2\x20\xa4\x80\x0f\xa8\xdc\x2d\x46\x75\x6b\x8d\xff\x3b\xf0\xfc\xa5\xf3\xbf\x3d\xef\x4f\xde\xc3\x75\x9e\xe6\x07\x77\x9f\x9d\x53\x3c\xcf\x94\xbc\x95\x68\xd6\x09\x54\x73\x3c\xe7\xd1\x29\x4c\x33\x41\xc2\x44\x33\xc1\x75\x8b\x67\x70\xc1\xec\x59\x8e\x10\x19\x02\xd2\x6f\x74\x62\x19\x66\x99\x33\x0f\x6a\x07\x85\x35\x72\xd3\x13\x76\x37\xaa\x1b\x95\x18\x63\x73\x05\x58\xc2\xf4\xa5\x8b\x27\x0e\x90\x5d\x94\x46\x50\x07\xcd\x43\x6e\x59\xbe\x72\x37\xdb\x27\x4c\xf2\x9a\xf5\x9b\x97\xac\x31\x31\xa1\xcb\x2b\x94\x3b\xf3\xa5\xac\x3b\x02\x87\x51\xb2\xf4\x97\x1b\x48\x26\xf4\x43\x04\x24\x80\x6b\xf8\x93\x44\xc4\x53\xe2\x0c\x0d\x19\xf7\x0b\xdf\xa2\x64\x3c\x67\x44\x29\x34\xb6\xd8\x5a\x98\xca\x16\xe6\xea\x5b\x94\x38\x22\x05\x4f\x1c\x2d\x9e\x62\x84\x36\x9e\x47\xe6\xa1\xf2\x58\x19\x9a\x95\x82\x8c\x52\x96\x30\x36\x47\xe9\x16\x7d\x0a\x31\xd0\x51\xe2\xa2\x84\x3a\x39\x9a\x97\x15\x72\xe9\xac\x97\x4c\x02\xb1\x9a\x33\x6d\x5c\x2c\xbd\xb2\xed\xa6\xcc\xee\x2b\x9b\x1c\x5f\xe7\x78\x10\x87\x29\x0e\xd0\xf5\xb8\x92\xd9\x29\x7f\x55\x76\x51\x36\x35\x91\xa4\x44\xb2\x65\x24\xfc\x15\xd7\x90\xc8\x60\x62\xdf\x46\x3e\xf5\xe1\x2f\xf9\x08\xf5\x78\x11\xc8\xf6\x63\x71\x85\x79\xbc\x02\x95\xc8\x37\x2a\x43\xa5\x4d\x60\xa8\x44\x3e\x61\x19\x2a\x3d\xad\x0d\x95\xe8\x17\x2e\x43\x2d\xdf\xa7\x0c\xf6\x2f\x99\x9d\x7b\x87\x9e\x9b\x57\xc5\x4b\xa7\x79\x6e\x5e\xbb\xfb\x0c\xb5\x78\xb6\xc3\xcb\xf0\xef\x67\xfe\x82\x7c\xc5\xd9\xe1\xff\x3c\x2b\x3f\x25\x52\xae\x48\x9d\xd0\x22\x25\xd7\xf9\xa9\x70\x0f\xe7\xa6\x41\x55\x2d\x7b\x28\x4f\x59\x16\x14\x00\x7f\x9a\xc7\x45\x36\x13\x0b\x7e\x8d\xb3\xb0\xae\xff\xf0\x25\x2e\x32\xf7\xeb\x45\xee\x08\x4f\xee\x05\xef\x4a\x6b\x63\x50\x9f\xfd\xf1\xd8\x5f\xfe\x3b\xa0\x7f\xd9\x9f\x05\xfd\xb3\xa4\x7f\x56\xf4\xcf\x9a\xfe\xd9\xd0\x3f\x5b\xfa\xe7\x89\xfe\xc1\xbd\x48\x9f\xb2\x03\xff\xcb\x69\xe1\x27\xaf\x7f\x14\x4a\x83\xee\xb1\x7f\x5a\x74\x4f\xcb\xee\x69\xd5\x3d\xad\xbb\xa7\x4d\xf7\xb4\xed\x9e\x9e\xba\xa7\x9e\x9f\x3c\xe1\x7f\x39\x3f\xf8\xc9\xeb\x1f\x85\xd2\xa0\x7b\xec\x9f\x16\xdd\xd3\xb2\x7b\x5a\x75\x4f\xeb\xee\x69\xd3\x3d\x6d\xbb\xa7\xa7\xee\xa9\xe7\xa7\xce\xf9\x5f\xce\x0f\x7e\xf2\xfa\x47\xa1\x34\xe8\x1e\xfb\xa7\x45\xf7\xb4\xec\x9e\x56\xdd\xd3\xba\x7b\xda\x74\x4f\xdb\xee\xe9\xa9\x7b\xea\xf9\x69\x33\xfe\x97\xf3\xd3\xf6\xea\xd1\xf6\x1a\xd2\xf6\x4a\xd2\x76\x7a\xd2\x76\xaa\xd2\x76\xda\xd2\x76\x0a\xd3\x76\x3a\xd3\x76\x6a\xd3\x76\x9a\xd3\x76\xca\xd3\x52\xfd\x01\x56\xa7\xc5\xb9\x78\x7a\xea\x7c\xbd\x30\xcc\x6d\x23\x9f\xa8\xfd\xa5\x1b\xb5\x65\x85\xf6\xa8\xaa\x50\x42\x3d\x80\x47\x07\x6f\x14\xd6\x29\xf9\x7e\xdf\x81\x11\x2e\xbe\xa3\x9d\x4f\x01\x0e\x55\xf1\xb2\xf3\x95\x20\xe6\xda\x69\x7d\x87\x9f\x2c\x74\x12\xf3\x22\xff\xa2\x95\x98\xdd\xe1\x38\x68\xa0\x4b\x46\x9e\x8c\x60\x3b\x5f\x90\xff\xfb\xf8\x0c\x14\xf5\xf5\xbb\x32\x8a\x24\x90\x91\xf8\xeb\xf9\x1a\xff\xdf\x46\xc0\x22\x94\x09\x4d\xe9\x0a\x29\x9e\x85\x8c\x27\x58\x09\x08\xf0\x8f\xbe\x66\xb0\x62\x55\x96\x72\x95\xc5\x42\x6f\x80\x50\xd6\x23\xe8\x0b\x29\x9e\x95\x8c\x67\xe9\xeb\x4d\x10\xca\x7a\x3c\x7d\x21\xc5\xb3\x96\xf1\xac\x3c\x01\xc1\x4a\x5a\xd3\x59\x71\x31\x6e\x94\x2a\x80\x0c\x56\x90\x10\x56\x8a\x14\xb6\x32\x9e\x35\x20\x85\x35\x24\x85\xb5\x22\x85\x27\x19\xcf\x46\x94\xc2\x46\x92\xc2\x86\x4b\xc1\xf7\x14\x35\x02\xc4\xb0\x85\xc4\xb0\x55\xc4\xe0\x2b\xfa\xf8\x04\xc8\xe1\x09\x92\xc3\x93\x22\x07\x5f\xd5\x49\x4f\x94\x04\xb0\xbc\x76\x9d\xd3\xf8\x6a\x9f\x56\x75\xd3\x8f\x5a\x3a\x0b\x71\xfd\x67\xfe\xc0\xe1\x7c\x15\x86\x83\x74\x10\x81\x0a\x11\x30\x88\x80\x43\x2c\x54\x88\x05\x83\x58\x70\x88\xa5\x0a\xb1\x64\x10\x4b\x0e\xb1\x52\x21\x56\x0c\x62\xc5\x21\xd6\x2a\xc4\x9a\x41\xac\x39\xc4\x46\x85\xd8\x30\x88\x0d\x87\xd8\xaa\x10\x5b\x06\xb1\xe5\x10\x4f\x2a\xc4\x13\x83\x78\xea\x7a\xcc\xd3\xba\xcc\xe3\x7d\xe6\x75\x40\x7a\xbf\x76\x1d\xdb\xf7\xbd\xd6\xb5\x3e\xef\x5b\x1f\x77\x2e\x59\x2f\x74\xfd\x8b\x18\xcf\x08\x83\x85\xbd\x0f\xa4\xf7\xa2\x2d\x62\x00\x0b\x09\x80\x98\x1c\xf6\x66\x29\xbd\x11\x6d\x09\x03\x58\x49\x00\xa2\x91\x60\x00\x6b\x09\x80\xd8\x02\xf6\x66\x23\xbf\xd1\xf9\xde\x4a\x00\x6b\x9d\xef\x27\x09\x60\x23\xf0\xed\x7b\x72\x9f\xe8\x8c\xfb\x72\xaf\x09\xc3\xca\x16\xde\x63\xa7\xfe\x9e\x9e\x8e\x85\x0c\x6f\x75\x76\x38\xa8\xb9\x87\xbf\xc3\x11\xd1\x9d\x5c\x1e\x0e\xa9\xa6\x7b\x3d\x1c\x7e\xdd\xc9\xf1\xe1\xf8\xed\x4e\xbe\x0f\x07\x80\xd3\xdd\x1f\x0e\x16\xef\xe4\x01\x71\xb4\x79\x27\x27\x88\xc3\xd5\xe9\x7e\x90\xc4\xd2\x77\x72\x85\x24\x18\xbf\x93\x37\x24\xd1\xfc\x8d\x0e\xb1\xce\x47\xfb\x44\x69\x7c\x99\xdc\xa2\x34\x78\x4c\x9e\x51\x1a\x16\x26\xe7\x28\x8d\x02\x93\x7f\x94\xf4\xdb\xe4\x22\x25\xcd\x35\x79\x49\x49\x51\x4d\x8e\x52\x52\x41\x93\xaf\x94\x94\xcb\xe4\x2e\x65\x5d\x32\x7b\x4c\x59\x4f\xcc\x4e\x53\xd6\x01\x8b\xdf\xac\x73\x57\x76\x13\x9e\xf8\x6a\xc8\xab\x12\xf1\x0e\x38\x56\x22\x5d\x93\x6f\x25\x52\x1d\x70\xaf\x44\xa8\x03\x1e\x96\xc8\xd4\xe4\x64\x89\x2c\x07\xfc\x2c\x11\xe5\x80\xab\x25\x92\x34\x79\x5b\x2a\xc1\x01\x87\x4b\xc5\x67\xf0\xb9\xd6\xe5\x31\x3c\xb3\x7f\x4f\xa7\xcb\xd6\x0d\xde\xea\x74\xf3\xe4\x3e\x4e\x37\x4f\xee\xe6\x74\xf3\xe4\x16\xa7\x9b\x27\x77\x73\xba\x79\x72\x37\xa7\x9b\x27\xb7\x38\xdd\x3c\xb9\x9b\xd3\xcd\x93\xbb\x39\xdd\x3c\xb9\xc5\xe9\x92\x05\xb5\x3b\x39\x5d\xb2\x22\x77\x27\xa7\x4b\x96\xf4\x6e\x74\xba\x79\x32\xda\xe9\x4a\xe3\xcb\xe4\x74\xa5\xc1\x63\x72\xba\xd2\xb0\x30\x39\x5d\x69\x14\x98\x9c\xae\xa4\xdf\x26\xa7\x2b\x69\xae\xc9\xe9\x4a\x8a\x6a\x72\xba\x92\x0a\x9a\x9c\xae\xa4\x5c\x26\xa7\x2b\xeb\x92\xd9\xe9\xca\x7a\x62\x76\xba\xb2\x0e\x58\x9c\x6e\x9e\x18\x9d\x2e\x11\xb0\xdd\xe9\x12\xf1\x0e\x38\x5d\x22\x5d\x93\xd3\x25\x52\x1d\x70\xba\x44\xa8\x03\x4e\x97\xc8\xd4\xe4\x74\x89\x2c\x07\x9c\x2e\x11\xe5\x80\xd3\x25\x92\x34\x39\x5d\x2a\xc1\x01\xa7\x4b\xc5\x37\xde\xe9\xf6\x9f\x97\x32\x37\x3b\xbc\xa7\xd3\x65\x1f\x0f\xde\xea\x74\xb3\xc3\x7d\x9c\x6e\x76\xb8\x9b\xd3\xcd\x0e\xb7\x38\xdd\xec\x70\x37\xa7\x9b\x1d\xee\xe6\x74\xb3\xc3\x2d\x4e\x37\x3b\xdc\xcd\xe9\x66\x87\xbb\x39\xdd\xec\x70\x8b\xd3\x25\x5f\xd5\xee\xe4\x74\xc9\x67\xb9\x3b\x39\x5d\xf2\x5d\xef\x46\xa7\x9b\x1d\x46\x3b\x5d\x69\x7c\x99\x9c\xae\x34\x78\x4c\x4e\x57\x1a\x16\x26\xa7\x2b\x8d\x02\x93\xd3\x95\xf4\xdb\xe4\x74\x25\xcd\x35\x39\x5d\x49\x51\x4d\x4e\x57\x52\x41\x93\xd3\x95\x94\xcb\xe4\x74\x65\x5d\x32\x3b\x5d\x59\x4f\xcc\x4e\x57\xd6\x01\x8b\xd3\xcd\x0e\x46\xa7\x4b\x04\x6c\x77\xba\x44\xbc\x03\x4e\x97\x48\xd7\xe4\x74\x89\x54\x07\x9c\x2e\x11\xea\x80\xd3\x25\x32\x35\x39\x5d\x22\xcb\x01\xa7\x4b\x44\x39\xe0\x74\x89\x24\x4d\x4e\x97\x4a\x70\xc0\xe9\x52\xf1\x8d\x77\xba\xc2\xf6\x8c\xcc\x6d\xdf\xf5\x4b\x6a\x7b\x9f\x8f\xa9\xed\x9d\xbe\xa7\xb6\xf7\xfb\xa4\xda\xde\xf4\x55\xb5\xbd\xdf\x87\xd5\xf6\x7e\xdf\x56\xdb\x9b\x3e\xaf\xb6\xf7\xfb\xc2\xda\xde\xef\x23\x6b\x7b\xd3\x77\xd6\xf6\x8e\x9f\x5a\xdb\x3b\x7e\x6d\x6d\xdf\xf0\xc1\xb5\xcd\x46\x7b\x5d\x69\x7c\x99\xbc\xae\x34\x78\x4c\x5e\x57\x1a\x16\x26\xaf\x2b\x8d\x02\x93\xd7\x95\xf4\xdb\xe4\x75\x25\xcd\x35\x79\x5d\x49\x51\x4d\x5e\x57\x52\x41\x93\xd7\x95\x94\xcb\xe4\x75\x65\x5d\x32\x7b\x5d\x59\x4f\xcc\x5e\x57\xd6\x01\x8b\xd7\x6d\x33\xa3\xd7\x25\x02\xb6\x7b\x5d\x22\xde\x01\xaf\x4b\xa4\x6b\xf2\xba\x44\xaa\x03\x5e\x97\x08\x75\xc0\xeb\x12\x99\x9a\xbc\x2e\x91\xe5\x80\xd7\x25\xa2\x1c\xf0\xba\x44\x92\x26\xaf\x4b\x25\x38\xe0\x75\xa9\xf8\x4c\x5e\x97\xa5\x46\x30\x1f\x3a\x82\xce\x00\x58\x76\xa9\x82\x19\x14\xba\x2d\xbe\xf4\x8c\xa1\x72\xb4\xa8\x29\x4a\xf8\x34\xc1\x07\xf4\x84\x62\xb4\xef\x50\x1e\x51\x48\x52\x29\xa8\x47\x93\x08\x6b\xca\xf1\xec\xc0\x88\x25\x2a\x92\xd7\x1f\xc9\x7f\x2f\x02\x55\x23\x3c\xcf\x1d\x01\x9e\xad\x67\x79\x1e\xea\x5c\x48\xfa\x80\x7f\x08\x4d\x5e\x90\x3d\xf9\x72\x3e\x08\x20\x19\x84\x44\x74\x7a\x2e\x09\x53\x75\xda\x65\x10\x12\xd6\x97\x52\xaf\xf1\x28\xa0\x6c\xbb\x96\x35\x55\x5a\x62\x78\xdc\x5f\x4e\x53\xed\x4e\xcd\xd1\x2d\xf6\x6e\xf3\x5a\xa2\x4f\x45\x92\x3c\xea\x1d\x23\x9e\x01\xf1\x56\x8f\x1c\x13\x39\x7a\xdc\xe3\xa1\x27\x91\xed\x95\x37\x7d\x6d\x96\x76\x67\x26\xff\xfc\xa9\x6f\x59\x57\x02\xe5\xeb\x88\xb6\x49\xd8\x4b\x8b\x72\x22\xd7\x33\xf1\xf3\xe1\x69\x1f\x27\x63\xaa\x0a\xac\xd8\x80\x20\xee\x64\x12\x5d\x3a\xa1\x99\x5a\x20\x90\x10\xca\x20\x8c\x49\x92\xec\x51\x00\x32\xdd\x67\x2b\x32\xb5\x38\xde\x27\x41\xb2\x1e\x53\xd9\xd4\x66\x0d\x0c\xe2\x51\x26\xc3\x12\x26\xcd\xe4\x9f\x62\x8b\x79\x09\x88\x6b\x81\xd6\x71\x04\xb3\xcc\x32\x31\x99\x5a\x1b\xf9\xc9\x3e\x1a\x51\xd5\xd8\x56\x19\x08\xd4\x3e\x89\x44\x7a\xda\x17\x33\xe1\x59\x40\x4c\x7f\x82\x28\x10\x5a\x21\x98\x4b\x92\x58\xca\xd4\xba\x30\x4a\x12\xb4\x1a\xa8\x67\x6a\x9a\x08\x01\x31\x25\x23\x67\x19\xad\x66\xf2\x4f\x01\x77\x57\x02\x67\xd4\x41\x28\x0a\x41\x46\x79\xaa\x2c\x53\x1b\xf7\x7b\xb4\x0d\xfd\xe1\xaa\xa6\x66\x2a\x40\x06\xee\x04\x12\x34\x53\xd7\x4c\xfa\x25\x20\xe7\x05\x20\xa2\x55\x6c\x52\x54\x96\xff\xcb\xd8\x4a\x3f\xf2\xa2\xcd\x60\x4d\x53\x23\x65\x18\x90\x35\x89\x00\xc9\xe8\x33\x13\x7f\x08\x98\xd9\x6f\x10\x4b\xb2\x4f\xf6\x08\x64\x93\xe6\x33\x33\xb5\x0f\xc5\x28\xde\xc3\x56\x47\xa8\x68\x6a\x9e\x04\x02\xf1\x25\xa3\x4f\xc2\xea\xdb\x4c\x78\x96\xa4\x87\x7f\x82\x46\x66\x1d\x6f\x63\x58\x45\x49\x6a\x36\xa3\x85\x79\x8a\xa2\x08\xee\x92\xbe\x9e\x59\x6e\x3d\x04\x68\x18\x24\xe4\x61\xdc\xa4\xdf\xd1\x4c\xfa\x25\x60\xe6\x05\x00\x22\x93\xdf\x95\x98\xa1\xf5\xa7\xba\x6e\x23\x0a\x53\x9b\x65\x98\xf1\xcc\x3a\x73\x12\xd5\x90\x3e\xc3\xa1\xcd\x84\x63\x63\xac\x70\x11\x2c\xb6\x0b\xa4\xa0\x23\xba\x25\xe0\x5b\x3e\xad\xbc\x15\x74\x40\x8e\xc6\x60\x0a\x4a\x39\x30\xc3\xac\x8d\xe1\x4b\x84\x77\x64\xe5\x74\x9a\xa3\xf2\x53\x8e\xe4\xa0\xa6\x10\x48\x43\x0c\xea\x01\x30\xb7\x46\x7d\xc1\x6a\x35\xe3\xff\x13\x63\x3f\x01\xf5\x84\x30\x50\xc6\x86\xe5\xdc\x2d\x11\xf6\x0b\x34\x9b\x15\x59\x21\xa4\xc8\x2b\x54\x97\xc5\xa9\x4e\xbf\xe3\x28\xdc\x9c\x56\xa1\x3b\x17\xd7\xb2\x64\x32\x3c\x35\x41\x97\x50\x86\x9c\x96\xc3\x4e\x81\x24\x5e\x81\xb2\xcd\xe0\x22\x5c\xf9\x98\x92\x33\x1f\x7d\xf2\x19\x88\x15\x63\xd7\x03\x2d\xda\xac\x37\x70\x8b\x72\x4b\xa2\x88\xdf\xb8\x45\x79\x32\xa5\x45\x4f\x4f\x3e\xdc\xa2\xec\xf0\x2f\xd3\xa2\xec\x30\xa5\x45\xbe\xff\xf4\x04\x37\xa9\xcd\xfe\x65\x9a\xd4\x66\xe6\x26\x69\xd0\xff\x2a\x5c\x9b\x8d\xd4\xbe\xa8\x72\x37\x2e\x4e\x4d\x55\x58\xfa\xb8\x9f\x76\x93\xa5\x06\x87\xad\x38\x28\x69\xf6\x0c\x69\xf5\x8c\x96\x5d\x31\xd5\x69\x1e\x1e\x90\x9e\x45\x2c\x4b\xcb\x5d\x9f\x54\xa9\x05\x0e\xb0\xc7\x28\x59\x26\xf0\x11\x6a\xf1\x0c\xbb\x68\xc9\xc5\x83\xec\xce\xdc\x5f\xd5\xb3\x3e\x8d\xa8\xf6\x4e\xee\xa5\x1d\xe9\x77\xd4\x96\xe1\x29\xd1\x4d\xac\x7e\xb2\x58\xed\x65\x96\x76\x69\x54\xe7\x48\xbe\x67\xeb\x45\xc9\x7e\xdf\x25\x67\xf2\xc4\xcc\xa7\x9e\x83\xff\xd1\xb3\xde\xcc\x8f\xfb\xc1\x82\xda\xf8\x00\x7b\x0c\xa5\x05\x5d\x7a\x99\xf2\xdc\xb8\x65\x16\xc6\xe8\x48\xd2\xcc\x5d\xe4\x44\x55\x45\x19\xc6\x69\xf3\x4a\x8e\xe1\x8b\x08\x70\x0f\xdc\x5a\xf7\x6d\x95\xa7\x57\x49\xd2\x1a\x2b\x7f\x32\x93\x8a\x7f\xad\x50\x98\x14\xa7\xec\xf5\x2b\x14\xd6\xd2\x90\xa3\xc7\x48\x13\x4b\xc9\x78\x49\x2a\x32\xac\xfc\x3c\x93\x5b\x7e\xce\x9a\xb4\xcc\xd0\xd7\x47\x9e\x7b\x27\x0e\xb3\xf8\x53\x40\x35\xd1\xf9\xd1\x09\xca\xf6\x11\x44\x45\x34\x82\x76\xcc\xf7\x30\x3b\xa3\x31\xca\x21\xb7\x92\x24\xcc\x91\x5b\xe8\x92\x0c\x69\x4a\xfa\x4e\xf2\x55\x81\x40\xd1\x4c\x62\x62\x02\x33\xc2\x2d\x1f\xe1\x3f\x3a\xd8\xbb\xa8\xd9\xcc\x20\x10\x25\x5b\xa2\x6a\x05\x54\x92\xd8\x3d\xe9\x54\x07\x69\x8a\x00\x7a\x8a\x99\x21\x9a\x75\x0e\xd0\x0c\x06\x89\x06\x30\xd5\xf9\x76\x33\x44\x95\x66\xa0\x92\xd2\xc3\x2d\xe0\xfc\x70\xac\x58\xed\x45\x35\xb7\x8e\x24\xd9\x32\x0b\xd3\x53\x83\xda\xe6\x2d\x14\x54\x6b\x3d\xc6\x94\x51\x83\x0b\x64\x4f\x60\xbe\xa2\x6c\x1d\xcf\xc4\xab\x5c\x9c\x1d\x66\xa3\xe0\xea\x7c\x36\xa7\xc6\x82\xa4\x96\x73\xb3\xc3\x4f\x63\xea\x8d\xae\x24\x82\x85\x49\x52\x9c\xf4\x9a\xe2\xef\xa8\x39\x19\x51\x45\x8d\x52\xb9\xce\x6f\xe0\xd5\x52\x69\x80\x57\x5c\x73\x02\xaf\x83\xc9\x05\xac\x72\x50\xd9\xb4\xb3\x32\x96\x5b\x81\x2d\xe6\xc0\x1d\x35\x0b\x9b\x61\xf0\x81\x99\x4a\x06\x09\x32\x63\x1c\x35\x27\x9b\x39\xd7\x18\x9f\xe8\x0e\x4c\xf5\xb5\x1e\xb2\x22\x01\x88\xba\x75\x3e\xda\x0d\xf9\xf3\xad\x2f\x39\x22\x7d\x3c\xda\x86\x8c\x7d\x58\x8c\x1d\x39\x92\x7c\x09\x33\x70\xb6\xa5\x21\xe9\x2e\x34\xe9\x42\xe4\x6e\x91\x6e\x76\x78\x9b\x74\xfb\xfa\x6f\x97\x6e\x76\x98\x10\x64\x6c\x37\xba\x70\x09\x71\x20\xbd\x15\x7b\x4d\x3c\x88\x31\x31\x0f\xcf\x7b\x45\x40\xdf\x25\x91\x8a\x96\x47\x85\x24\x77\xe0\xf4\x58\x6e\x94\xee\xa7\x2d\x33\x8a\x96\x27\xa2\xc7\x44\x52\x61\x02\x39\x28\xc0\x76\x4b\xc9\x53\x85\xfa\x73\x1e\x44\x3a\x42\x21\x0b\xa1\x94\x4c\x5f\xda\x7b\x39\x7f\x05\xd3\x6f\x35\xc5\xb4\x58\x8d\xe6\x38\xed\x38\x0e\xa3\xba\xc8\xce\x0d\xd2\x65\xa3\x24\xa1\x91\x04\xc6\x51\x91\xcc\x6c\xb6\x7c\xb1\xb4\x03\x79\x26\x40\xad\x2e\xd0\x60\x30\xd9\xef\x75\xfe\x3d\xcc\xd2\xc4\xdd\x23\x94\xe0\x48\x42\x4a\x99\x08\xb0\xae\x1b\x74\xbe\x52\x47\xae\xf6\xe0\xe8\x9a\xa2\xc0\xfa\x0e\xf4\x06\xf9\xa6\x8d\xe7\xa6\xff\x74\x49\xfe\xe4\xdd\xea\x59\x22\xc9\x77\x5e\x79\xbd\x6a\xc8\x49\xba\x09\x33\xfe\x08\xe7\x62\x4d\x94\x45\x26\x5b\x4b\x6f\xe6\xaf\x37\xb3\xf5\xd3\x6c\xbe\x7d\x84\x3d\x51\x7c\xae\x9b\x22\x77\xb9\x6d\x20\x81\x7e\xaa\xcc\x49\x84\xe2\x97\x90\x3d\x86\x0d\x56\x3a\xa9\xf6\x0e\x86\x91\xec\x15\x29\x57\xd6\x2e\x79\xcf\xc2\xac\xb0\x44\xd7\x30\x43\xfc\xe5\x30\x5b\x06\x48\x9d\x39\x36\x0d\xb6\xcd\x61\x85\x6e\x25\x73\x58\x98\xf1\xff\x56\x34\x6f\x36\x00\xc7\x54\xca\xd0\x52\x1d\x9b\x15\xac\x43\x36\xdc\x33\x3a\xe6\xf1\x75\x4c\x64\xf4\x6e\x1d\xa4\x62\xae\xc2\xc7\x9a\x32\x63\x54\x2d\x53\xd7\x07\x3f\x6a\xa6\xc1\x40\xac\xaf\xbb\x33\x54\xbc\xc0\x2a\xca\x1d\xa1\x4c\xf7\xbf\xf5\xd7\x49\x1a\x87\x4d\x51\x99\xba\x54\xc2\xb3\x1b\x40\x62\x58\x36\x37\x28\xe3\x48\x16\x13\x54\xc7\x55\x4a\x6f\xdf\x78\x03\x93\x02\x1a\x43\x97\x91\xc4\xb9\x06\x66\xc8\xbb\x2e\x9e\x83\xb9\xe8\xeb\xef\xcc\x95\xed\x86\x65\x2c\x0b\x3c\x05\xe6\x9b\x58\x11\x2e\x75\x11\x58\xea\x12\xe4\x9a\x59\xb2\x9b\x34\x95\xf6\x0d\xd6\x2a\x3d\xdd\xc9\x23\xd2\xab\xab\x7a\x84\xff\x67\xf8\xc4\x20\xf0\x66\xab\xc5\x34\x9f\xc8\x5a\xa8\xdb\xdc\xee\x85\xd5\x64\x9a\xa0\x24\x93\xc7\x80\x14\x15\xe6\x7d\x6c\x62\xc9\xe4\x1d\x95\xd7\x63\xd8\x1b\xe3\x21\x25\x50\xab\xd6\x09\xdd\x0c\xfb\x48\x86\xea\xbf\x35\x7d\x04\xfc\xa4\x06\x6b\xf4\x95\x16\xac\x83\xa0\xe3\x7c\xa6\x85\xc2\xb4\x7a\xa3\x7c\xe7\x78\x6a\xf6\x6a\x13\x7c\x28\xab\x72\x8b\x17\x35\x56\xbd\xc0\xea\xac\x39\xa9\x8e\xef\xb7\x79\xd2\x41\x34\xa6\x4f\xd0\xb0\xd2\x8e\x66\x73\xb2\x37\x1d\x81\xc8\xd0\x75\xb2\xe7\x50\xf1\x4c\xf4\xa8\xb6\xea\x76\x83\x34\x9e\x8d\x09\x5e\x75\x0c\x9a\x29\x7e\x75\x94\x31\xd4\xe9\xdf\x60\xe5\x88\xde\x2b\x93\xdb\xe1\x65\x09\x72\xc5\x44\x55\xbc\x38\xfd\xd2\x84\x5c\xd4\x41\xd2\x99\x6d\x8c\x4e\x0d\xaa\x9e\xc9\x0f\x92\x8a\xbc\x66\x45\x12\x03\xe2\xf8\x14\x36\x7c\x5b\xf2\x7a\x89\x95\xe5\x0b\x5d\x86\xdb\x30\xc0\x99\x70\x4a\x2b\x8c\xbf\xf1\xc2\x7f\x9c\xeb\x26\xdd\xbf\xba\x3c\xd7\x38\x2b\x86\x17\x21\xa4\x56\xd1\x15\xa4\xd1\xec\x99\xce\x77\xdd\x5f\x04\x63\x98\x57\x3f\x6b\x4b\xcb\x1f\xc2\x91\x33\xc3\x82\x86\x11\xa1\xf0\xfd\xc5\x90\xe0\x5c\xac\x29\xac\x03\x5e\x7a\xa2\x66\x15\xfa\x7d\x74\x41\x3a\x81\x67\x4c\xce\x0d\x77\xb3\x69\xb1\xcb\x02\xad\xac\x71\x75\xab\x72\x10\x6d\xb6\x42\xa5\x2f\x79\xa9\xf8\x65\xe3\xfe\x3b\x75\xa4\xb5\x07\x8c\x7e\xb2\xeb\x89\xba\x09\x9b\x34\x7e\x1e\xb1\x62\x17\x80\x87\x3e\x50\xdb\x30\x61\x29\xa4\x8f\x61\xdd\x05\x35\x8a\x3a\x77\x33\x14\xd2\xed\xd7\x2b\x59\xa6\x07\x39\x50\x2f\x52\x14\x6e\xa8\xe2\x7a\x24\xdd\x7d\x43\x86\x34\x7c\x39\x18\xdf\x82\x70\xae\x51\xc5\x63\x37\x32\x49\x21\x77\x1e\x01\xa5\xb5\x5e\xa8\x15\x68\x7b\x43\xc4\x4f\x95\xb7\x6d\x62\x19\xdc\x55\xa2\x44\x38\x64\xc7\x88\xb8\x85\x64\x26\xed\x3b\x01\xde\x76\xfb\x4e\xd4\x77\x44\x10\xdc\x9b\xe2\x47\xba\xad\x0f\xbc\x59\x0e\xbf\x9f\x0b\xa0\xca\x5d\x72\x93\xf6\x8a\x60\x54\xfd\xae\x09\x8c\x8d\xff\xba\xf0\x2d\x11\xf3\xf5\xea\xda\x7f\x58\xe1\xaf\xd9\x47\x8a\xae\xf2\xe3\x9c\x6f\x9d\x1d\x06\xdd\x51\xd0\x0b\xb8\x21\xe8\x1a\xca\x4c\xf1\x2b\xa1\x7a\x74\x4e\x48\x3f\x2e\x15\xd8\x30\x57\x2e\xfa\x8e\x4e\x4d\xdd\x77\x0d\x3f\x30\x62\xdf\x25\xca\x2e\x36\x94\x23\x31\x5a\x28\x61\x91\x6f\x28\x34\xe1\x5a\x3f\x25\xea\x4e\x58\xcf\x5b\x07\x71\x2c\xe1\x12\x84\xd6\xa1\x1f\x0e\x88\x04\x91\x31\x89\x75\xf8\x24\xc9\x75\x28\x3b\x09\xbe\xa1\xd5\xe3\x65\x3d\xb2\xca\x8e\x57\xa9\x8f\xc5\xcb\x4f\x72\x2b\xaa\xa2\x4c\x8a\x17\xec\x0a\x0e\x87\x0c\x0d\xf6\x75\x10\xc7\x5a\x0b\x56\x71\xb4\x1f\xab\xf8\xbc\x17\xbb\x43\x36\x76\x8a\x6c\xcf\x91\xb2\x41\x8b\x5f\xf6\x22\xe2\x19\xa3\x2b\x9b\x60\x13\x6d\x97\x0a\xb6\x75\xbc\x59\x6d\x12\x05\x9b\xa8\x2d\x3d\x89\x61\x7d\xf1\x17\xcb\x99\xbf\x0c\x66\xfe\xca\x03\xda\xaa\xe8\x4c\x8f\xd8\xa2\x35\x13\x7a\x60\x82\xde\x8c\xad\x04\x68\x8e\xd0\x9a\x29\xba\x43\xbb\x59\xed\xfb\xf5\x1a\x6d\xd6\x56\xdd\x81\x7b\x94\x1e\x5b\x1a\xd8\x8b\x4e\x2f\xaf\x87\xd7\x50\x05\x2c\x63\x34\x27\xf0\xb7\xdb\xc5\x56\xc1\xe5\xa3\x0d\x5a\x2c\x25\x5c\x92\xde\x30\xf4\x93\x96\x34\x95\x16\xaa\x1a\xc3\x50\x5a\xf4\x65\x74\xab\xa7\x68\xcb\xa8\x2a\x90\xae\xf0\x56\x4c\xd1\x14\xda\xad\x6a\x5f\xc7\x9b\xe5\xc2\xee\x5e\x81\x5e\x4c\x4f\xfb\x62\x80\xd8\x26\x0c\x22\x4d\xb0\xa4\xb0\x47\x31\x46\x43\xfc\xc5\x76\xa9\x8d\x53\xdf\xdf\x84\xdb\xa8\x47\x24\xaa\x07\x41\x3c\x62\x4a\xbe\x98\xf9\xeb\x60\xe6\x6f\x97\x72\xb3\x14\xcd\x20\xd8\x2c\x6a\x31\xae\x9d\x13\x74\x62\x04\x3c\xa0\x10\x94\xf3\x49\xda\x40\xba\x50\x65\xdc\xdb\x78\x1b\xbb\xcf\x81\xfa\x8d\x9d\x95\xbb\x74\xa8\x7d\x70\xcf\x67\xec\x7b\x1b\x85\x20\x2d\x94\xb0\xc8\x4a\x01\xe3\x42\x5e\xb8\xf5\x3c\x05\x57\xb2\x78\x42\x9e\x27\xe1\x12\xf5\x82\xa3\x1f\xa1\x1a\xab\xd5\xcc\x7f\x5a\xcc\x36\x5a\x0b\x15\xe5\xe0\x28\x2d\xfa\x31\xba\xd5\x13\x54\x64\x5c\x15\x40\x4b\xba\x56\xc0\x8a\x02\xf7\x35\xed\x56\xa5\x05\xf1\xfa\x69\xe5\xd9\xcd\x06\xd0\x8b\xf4\xb8\xa1\x5d\x2f\xe9\xc2\xa1\x2a\x5a\xb6\x9a\xd8\x23\x19\x63\x3a\xe2\x6d\xb0\x58\x2c\x14\x54\x51\x12\xf8\x0b\x4f\x44\x25\x2a\x09\x43\x3e\x69\x45\x4f\x6e\x9d\xa2\x22\x0c\xa1\x45\x43\xc6\x36\x78\x82\x82\x8c\xaa\x01\xe8\x07\x6f\xc1\x14\x3b\x42\xfb\x53\xed\xe4\xc0\xdf\x07\x89\x5d\x3d\xf4\x0e\x24\x47\xea\x06\x8c\x88\x74\xdb\x9c\x54\x28\xe0\x18\x65\x42\x02\xb4\x46\x2a\xa6\x24\x44\x1e\x5a\x09\x98\x44\xdd\xa0\xa8\x47\xa8\xc6\x72\x3b\x0b\x96\x4f\xb3\x40\x8c\xac\x28\x36\x59\x37\x28\x42\x9b\xf1\x18\xd7\xda\x09\x9a\x31\xa6\x02\xa0\x18\x8c\xfb\x49\x66\x83\x74\xa5\x66\xa2\x93\xa7\x64\xc0\xbf\x40\xbd\x37\x7c\x40\x72\xb1\x5c\x84\x4b\x55\x0d\x69\x61\x8f\x62\x54\x44\xba\x08\x36\x81\xe6\x17\x93\xc0\x0f\x96\x3d\x22\xd9\x64\x54\xdf\x46\x68\xc5\x2a\x98\xad\xb6\xb3\xf5\x52\x6e\x94\x66\x2d\xaa\x6f\x36\x85\x18\xd7\xca\x49\x96\x62\x10\x1e\xb4\x13\x98\xf3\x49\xd1\x06\xe9\x40\x2d\x4c\xf2\x43\xdf\x6e\x25\xf4\x5e\xe3\x97\x3f\x2b\x0b\x22\x7c\x11\xc0\x7a\x08\x00\x3e\xab\x65\x5c\x37\x50\x48\x8d\x5b\x35\x19\x58\x8b\x50\x70\x8a\x8a\xa4\x92\xbb\x69\x15\x45\xc5\x2f\xeb\x97\x4a\xa2\x53\xb5\xf1\xbd\x08\x77\xcd\x04\x95\x9b\x56\x15\xd0\x3e\xad\x89\xd3\x96\x5a\x8c\x02\x9a\xba\xd4\xc2\xf9\xd0\x96\x5c\xf8\xd2\xc2\x5b\x75\x51\x5c\x8d\xd0\x88\x8d\xd1\xc6\xc1\x35\x0e\x0d\x2b\xa4\x8f\x6f\x5e\xa7\xd1\xa9\xc0\x5a\x09\xac\xdb\x8c\xef\x51\x53\x37\xdd\xa0\x99\x6f\x58\xc4\x01\x9a\x3a\x45\x3b\x2d\x02\x9b\xbe\x98\xd3\xf1\x22\x2f\xea\xf0\x85\x8c\xb7\x6a\xa7\xb8\xf6\xa1\x90\x1a\xe5\x67\x87\xd6\x53\x14\x9c\xa0\x66\xbe\x65\x25\x48\xc5\x6f\xd0\x49\x75\x65\x68\x7c\x2f\xc2\x5d\x73\x8b\x3e\xde\xba\x4c\xa4\x35\x71\x8a\x2e\x5a\x04\x34\x75\xb9\x88\xf3\x21\x2e\x1b\xf1\x85\x93\xb7\xaa\xa1\xb8\xd6\x22\xd2\x19\xb5\xb6\x34\xb4\x78\x23\x22\x84\x14\xf0\x0d\x6b\x4d\x12\x6a\x58\xf7\xe4\xb5\xa7\xf1\xfd\x06\x74\xc6\x0d\x5a\x77\xdb\x42\x94\xdc\xac\x49\x21\xa2\x59\x18\x93\x17\xa4\x38\x17\xca\xc2\x14\x5f\x8c\x79\xab\xce\x89\xeb\x37\x0a\xa9\x31\x6a\x37\xb8\x26\xa4\xe0\x84\x34\xef\x4d\xab\x59\x2a\x7e\x58\xfd\xb4\xd5\xad\xf1\xbd\x08\x77\xcd\x0d\x4a\x78\xf3\x52\x97\xd6\xc4\x29\xaa\x68\x11\xd0\xd4\x25\x2f\xce\x87\xbc\xf4\xc5\xd7\x7c\xde\xaa\x88\xe2\x32\x91\x4c\x69\x8c\x1e\x0e\xae\x3c\xc9\x28\x21\x35\x7c\xcb\x7a\x99\x82\x1d\x56\x42\x75\xfd\x6c\x7c\x07\x82\xbd\x72\x83\x0a\xde\xba\x98\xa6\x36\x6f\x8a\x02\x5a\x24\x33\x75\x51\x8d\xb3\x21\x2d\xae\xf1\x85\xa5\x37\x1b\x42\x61\x2d\x4a\x22\x24\xab\x1f\xcf\xaa\x35\x7d\x81\x4b\x42\x0a\x29\xe0\x9b\x16\xe5\x64\xec\xb0\x02\x2a\x8b\x74\xe3\x3b\x10\xea\x95\x1b\xd4\xef\xc6\x15\x3b\xa5\x69\xb0\xf2\xdd\x22\x97\xe9\x8b\x77\xfd\x40\xe8\x17\xf1\xf8\x42\xd6\x5b\x15\x50\x5c\xfb\x12\xe9\x8c\x31\x7f\x83\x8b\x69\x22\x42\xd8\xf8\xdd\xb8\xf2\x27\x21\x36\xd9\x3d\x71\x25\x70\x7c\xaf\x01\x5d\x71\x93\xcd\xbb\x65\x59\x50\x6e\xd6\x14\x7b\x67\x11\xc5\xc4\xe5\xc1\x2c\x3d\x7d\xbb\xa8\xdb\xfc\xa6\xae\x6e\x61\x24\xb2\x06\x79\xde\x6a\x1d\x2d\x9e\xd5\xad\x6b\xe7\x53\x82\x2a\xdc\xe6\x31\xd9\x47\x6c\xd4\xe4\xef\x0c\xa7\x5e\xad\xe0\x8a\x62\xa7\xf4\x7b\xc4\x08\x22\xf5\x13\xc3\x49\x57\x23\x71\x05\xa8\xcf\x3e\x40\xd2\x7f\x90\x3a\x87\x3b\xe6\x38\xe8\x69\xd4\xb9\x40\xa3\x4f\x68\x73\x97\x3c\x19\x18\x25\xd9\xe1\x69\x4c\x01\x26\xc0\xfc\x28\x80\x8b\xe7\xc6\xc8\x09\x72\xb2\xb1\xf7\xd7\xe6\xb5\x44\x5f\xa2\x73\xd3\x14\xa7\xaf\x3d\xf4\x4c\x78\x59\xa1\x1a\x35\x86\x77\xf5\x39\xca\x53\xf1\xa5\xb8\xad\x7e\xbe\x0f\x13\xd4\xed\x43\xf4\xc4\xad\x98\xac\x90\xee\xa3\xc4\xed\x0e\x2b\x0a\x4e\xc6\xd8\x45\x48\x10\x15\x17\x59\x16\x96\x35\x92\xce\xe4\xf5\xc5\x14\x5e\x3e\xc3\xd3\x54\x86\xd7\x2c\xd7\x5a\xf1\x72\x25\xe9\x17\x87\xa0\xa8\x34\x3b\x5a\x78\x76\xa5\x6f\x83\x66\xf2\xf2\xba\x34\x71\xbb\x63\x9a\x24\xe8\x24\xb6\x96\xc2\x38\xf3\x05\xdb\x34\x7a\xed\x4c\xc6\x8c\x3c\x9d\x4b\x1d\xf1\x55\x35\x2b\xbb\x5d\xb8\x6f\x50\x65\xdb\x22\xef\xf5\xdc\x88\x9b\xaf\xe7\xc1\x6a\xa5\xef\x3f\x66\xa5\x7c\x4f\xf4\xc3\x83\x98\x82\x7e\xbe\x40\x39\xdd\x97\xdb\x69\x21\xdd\xca\xdc\x95\x43\xa9\x85\xba\x84\x45\xec\x37\xa5\x0e\x56\xd1\x9b\x87\xf2\xb2\x79\xe5\x8d\x54\xf6\x8e\x77\xb0\x39\x3a\x9d\x6d\xa7\x29\x69\x85\xee\x50\xa5\xef\x79\x9e\x7c\xae\x72\x9f\x15\x61\xb3\xc3\x60\xcf\xc2\x35\x3b\x9e\x90\x8c\x89\x59\x02\xde\x85\xbb\x39\xcb\xc5\xe2\x39\x6a\xaa\xa7\x67\x39\xb6\x10\x76\x58\x13\xfc\x59\x5a\x37\x2c\xfd\x9f\x96\x29\x0f\xf6\x10\x83\xf9\xf3\xc4\xbc\xaf\xfe\x4a\x3f\xab\x49\x33\x43\x50\x95\x72\x94\x5e\xb3\x9c\x15\x60\x4d\x04\x6a\xfe\x0e\xaa\xe7\xdd\xa0\x71\xba\xba\x0e\xaa\x1e\xd4\xcc\x51\x2a\x98\xa4\xdf\xd3\x04\x55\x17\xa5\xbd\x9d\xda\xa8\x76\xc0\x7e\xb1\x43\x87\x36\x6d\x90\x25\x61\xab\xe2\x41\x7c\xea\x42\xe2\x0c\x85\xd5\x2e\x2a\x9a\xa3\xb6\xdd\xdf\xa8\x9a\xec\x5c\x18\xb4\xfb\xbf\x57\x45\x1c\x7e\x08\x39\x11\x25\x26\xf9\x2e\x77\xb9\x50\xde\x86\xb0\xf6\xb7\x7e\xa4\x85\x10\xa6\x51\xc0\x26\x41\x12\xc2\x2e\x56\x93\xc9\xb0\x9d\xe7\xc2\xf8\x19\x49\x84\x7f\x98\x94\x89\xf4\x11\x84\x4c\xe6\xa6\x8f\x32\xd2\x70\x83\xfc\x52\x0f\x71\x44\x61\x22\x8c\x27\x2a\x6e\x25\x12\x99\x0f\x24\x9b\x53\x8e\x9e\x33\x16\x75\xb1\x0a\x81\xc9\x4c\x88\x51\xf8\x90\xb4\xe4\xdb\xa1\xd9\x1f\xc9\x50\x57\x0f\xe5\x08\xc5\xa6\x33\x59\x3a\x29\x21\x28\x22\x2f\x58\x92\x29\x8d\xbe\x70\x44\xcd\x97\x8e\xa8\xd1\x5f\x46\xd4\x54\x09\x55\x02\x4c\x35\xb9\x4b\x08\x8c\xd5\xa5\xe9\x01\x84\x7e\xe8\xbd\x10\xd8\xf6\xe4\x75\xac\x06\x64\x02\x0e\x90\x59\x07\x3f\xfe\xa8\x74\x61\x5f\xa8\x49\xd8\xe9\x1f\xc1\x5a\xc2\x2b\xb3\x76\x80\x44\x81\xb7\x03\x18\x60\x36\x8c\x30\x72\x36\x2c\x96\x33\xa9\x6c\x69\x67\x34\x45\x91\x45\x61\x75\x8f\x1c\x57\xf2\x61\xb1\xba\x09\xab\x46\x3b\x2b\x46\xde\x93\x57\x12\x79\xf3\x61\x41\x45\xa0\x78\x2a\xb9\x23\xb7\x7b\xb9\xf1\x31\xcd\x12\x3a\xb9\xdc\x65\xa1\x5c\xa0\xfa\xa2\xc7\x8b\xec\xdb\x3d\x0d\xb1\x80\x53\xf5\x55\x66\xc8\x89\xc4\x9b\xa2\xa4\x6e\xb8\x63\x43\x76\xbc\xca\x4b\x8d\x72\x4f\x48\xef\x07\x49\xf5\x55\x4f\xac\x41\x8b\x1c\xe1\x66\x9a\x18\x92\xde\xa9\xfc\x30\x69\xf5\x31\x20\x0c\x30\x42\x66\xd4\x74\x0d\x88\x88\x61\xb3\x75\xbf\xda\x4d\xaa\x3d\x18\x85\x42\x5d\x7f\xb8\x8f\xf0\x18\x69\x9b\x08\x75\x45\xbc\x59\x4a\x3f\xaa\xad\x70\xeb\x32\x4b\x1b\x25\x79\xdc\x7c\xb5\x0e\xa4\xc4\xa9\x34\xcc\x63\xa5\x36\x44\x86\xa8\x4e\x9b\xb3\x1b\xaa\xf3\xa9\xfc\x48\x36\x95\xf4\xae\x2c\x18\xdd\xac\x94\x75\x02\xb6\x16\x61\xa5\x99\x1d\x46\xd2\x84\x48\x6a\x14\x3b\xaf\xdf\x99\xbe\x24\xad\x50\x4c\xfc\x6f\x5c\x64\xe7\xfc\xf4\x0c\x97\x2a\x07\x70\xa9\xad\x14\xcf\xdf\xf6\x76\x72\xca\x19\x5c\x88\x37\x67\x84\x9b\xb8\xa8\xcb\x1d\x80\x3f\x36\xba\x9b\x9f\x46\xb8\xad\x9f\x46\xb8\x2d\x15\x46\x76\x5b\x38\xe0\xc7\x5e\x4b\x3d\x07\x6d\x8a\x1e\x86\x8d\x8e\xc5\xde\xa8\x91\x88\xc5\x5e\x5c\x6c\x46\x60\xa4\x35\x55\xc8\xd9\x6c\xc4\xa0\x49\xd0\xcd\x94\x91\xd0\xdd\xcc\x33\x88\xf6\x46\x3b\x7d\x03\x2e\x83\xc1\xbe\x9f\x44\xde\xc5\x76\x03\x82\xfa\x35\x09\x9b\x90\xb5\x82\x2d\x22\xd6\x5f\x09\x66\x47\x58\x24\x24\x79\x04\xa2\xa2\xfd\x3a\x1b\x07\x8f\xd1\x17\x36\x60\xc1\x4b\x4d\xa5\x63\xa8\x4a\x49\x02\x2b\x4b\x64\x4d\x06\xdb\x42\xb6\xec\xe2\x3d\x3e\x83\x07\x97\xc5\x68\xd0\x3e\xa3\x1a\x93\xdf\xa0\x6e\x2a\xd4\xc4\x47\xc9\xc0\xf2\x32\xd1\xf2\x09\x54\x95\x44\x1a\x3a\x0f\xdd\x9c\xa2\x9f\x5f\xf9\xd2\xfc\xaa\xfb\xc5\x28\xa8\x37\x5f\x7a\x16\x7a\xdd\x74\xc6\x0c\xc1\x66\x47\x66\x00\x79\x9e\xb6\xb0\x50\x9b\x0d\x65\x34\x16\xb3\x22\xbc\x39\xa7\x84\xad\xd9\xc3\xa6\x08\xe0\x75\x72\xad\x5b\xdd\xc3\x88\x5e\x82\xd6\x0b\xb4\x6a\x17\x43\x3e\x06\x7b\x26\x7c\x6d\x4d\xca\x7e\xe9\x88\x9e\xa0\x62\xe0\x82\xa9\x91\xf7\x8a\x00\xed\x19\xce\x97\x7e\x4b\x46\x74\x9d\xcc\x84\x1c\xe9\x83\x39\xd1\x01\xc6\xa1\x44\xe0\xb7\xa4\xfa\x1e\x60\xdc\xf6\x61\x6c\x30\xd9\x37\xc1\x07\x1b\x69\x3b\x1c\xb3\xc8\xe2\xaa\xf5\xe0\x40\x1c\x33\xec\xa6\x0d\x32\x2d\xec\x50\x63\x82\xb1\x38\x46\x4e\xbc\x0d\xe8\x46\x52\x55\xc1\x04\x67\x37\xa6\xc6\xbd\xe6\x91\xc3\x3d\x7f\x91\x96\xf8\x87\x05\x2b\xaf\x1b\x8c\x30\xa8\x63\xc5\x32\x4d\x05\xc6\x57\x51\xba\x72\x92\xbc\xa6\xb1\xaa\x05\xa9\xf7\x5a\x3a\x11\xa5\xf0\xe3\x98\x3e\xbf\x88\x9f\x5e\x14\x35\xb0\x2f\xf4\x8e\x88\x7a\x7a\xd3\xe3\x81\x6b\xdc\xf0\xfd\x05\xfa\x47\x55\x08\x8e\x4c\xde\x80\xd5\x46\x08\x16\x0a\x74\xfa\x97\x7a\x8c\xd3\xbf\xb3\x85\x37\xae\x12\x8b\x1b\xd8\xd2\x3b\xf5\x0e\xe6\xe1\x22\x67\xfa\x87\x5a\x7e\x97\xc1\xd3\x2f\x6a\xab\x33\xe2\x49\x56\x58\x28\x1f\x6d\x7b\x4d\x4b\xa5\x53\x1a\xcb\xc8\x1b\xc4\x3f\xc0\x33\xa8\x16\xf6\x3a\xec\x5b\xc6\xc8\x16\x4e\x63\x6b\x1a\x43\xba\xe6\x2a\xd9\xdb\xde\xfc\x05\x29\x4f\x4f\x42\x5c\xa8\x2d\x63\xc9\x9f\xc2\xa8\x9e\xfa\x62\x5a\x62\x29\x83\x28\x30\x89\xe3\xac\xbb\x7e\x77\x51\x98\x07\x57\xde\x91\xf0\x04\xd9\xf2\xa4\x8e\x38\x73\x67\xc0\x4d\x7a\xdd\x96\x81\x55\xdd\xfe\x85\x03\x5c\x4c\x68\x36\x98\x07\x0c\xa4\x47\x95\xe2\xd6\xa6\x44\x8b\x64\x63\x6c\x0a\xff\x40\x3a\x25\x9f\x6c\xf7\xcd\x7b\x1a\x46\x20\xf1\x2b\xdf\xd5\x35\x9c\xa3\x4f\xda\x21\xc2\x37\x73\xd1\x3d\x22\xe0\xb7\x76\xfc\x9e\x6b\x22\xd1\x43\x7d\xae\xff\x4e\xe9\xf0\xa0\x2b\xec\xc5\xd2\x0a\x95\x28\xc4\xc0\xec\x49\x7c\xd7\x35\x97\x4e\x9c\x1c\x7d\xfe\x44\x3c\xe7\xca\xfb\xe8\xac\xbc\x8f\x7d\xbf\xb1\x50\xdc\x92\xec\x10\x9e\x50\x0d\xd7\x1f\x37\x94\xb4\x6d\xaf\xe7\x2a\xfb\xf4\x90\x84\x4d\xb8\x23\xbf\x3f\xd7\xdf\x0f\x3f\xb6\x79\xf6\x1c\x1f\xc3\xaa\x46\xcd\x97\x73\xb3\xdf\xce\x3e\x2e\x7e\xae\xbf\x1f\x9c\x36\xcf\x4e\xf5\x97\x1f\x8e\x4d\x53\xee\x3e\x7f\x7e\x79\x79\x99\xbf\x2c\xe6\x45\x75\xf8\x1c\x78\x9e\x87\x6b\xfe\xe0\x7c\x4f\xd1\xcb\x9f\x8b\xf6\xcb\x0f\x78\xf4\x6c\x9d\xed\x0f\x1f\x17\x7f\xf9\xb8\xf8\xb9\x0c\x9b\xa3\xb3\x4f\xb3\xec\xcb\x0f\x1f\x83\xc5\x7e\xbf\xff\xc1\x49\xbe\xfc\xf0\xcb\x7a\xbe\x5a\x2f\xe7\x9b\x55\xe6\x2e\xe6\xab\x27\x67\x31\x5f\xfb\x81\xeb\xcf\x57\x8b\x2d\xfe\xef\xea\x6f\x9e\xb3\x9c\x07\x6b\x27\x98\x3f\x6d\x96\xce\x66\x1e\xac\x9c\xad\x13\xcc\xfd\xa7\xc5\x3f\x7f\xf8\x4c\x11\x63\xaa\x1f\x17\x7f\x79\x78\x1c\xdb\x45\xd8\x2c\x35\xa8\xca\xd3\x53\xd8\xd8\x06\xaa\xf9\x70\xef\x6f\xd9\x83\x4b\x67\x29\xf6\x60\xdd\x54\xc5\x37\x24\xf7\xa1\xe7\x04\xc7\xa5\xb9\x3b\xc8\xa4\x6e\xb4\xba\x89\xba\x6a\xaa\xf9\x2f\xa6\x68\xee\xd2\x71\x97\x82\xaa\xc5\x69\x15\x67\xc8\xa9\xbe\xfc\xb0\xf8\x41\x56\x39\xb3\xca\x50\xee\x6b\xb7\x6e\x42\xdc\xac\x09\x0b\x59\xe3\xbe\xe5\x18\x29\x69\x69\x59\x95\x5d\x62\xca\xe8\x1f\xa8\xfd\xa3\x01\x1b\x8f\xfa\xa4\x5c\xf0\xa6\x7b\x8f\xba\xfb\x86\x3d\xef\xe3\xb3\xf9\xaa\x4e\x2d\x61\xa8\x3f\x67\x0b\x55\xf2\x82\x95\x7d\x05\x0a\xce\x7e\x2a\xec\x8a\xc2\x9e\xd2\x79\xdf\x11\xb6\x02\x6d\xd4\x62\xb1\xa0\xe3\x2b\x70\xbc\xbf\x91\x31\xf6\xcf\xdc\x73\xb0\x49\x5a\x1c\x97\xba\xf9\x71\x3a\x2f\xe1\x54\x74\xe7\x29\xed\x05\x83\x5f\xd8\x96\xad\xe3\x7b\xe5\xd4\xfb\x7a\xb9\x1f\x0c\xcb\x12\x85\x55\x78\x8a\x91\xe0\x06\xd5\x42\xe5\xb7\x22\x7e\x68\x0f\xb8\x76\x89\x2e\x58\x67\xf2\x55\xac\x12\x8e\xfe\x8e\x36\xbe\x9d\x8f\x2c\x80\xc3\x89\x4d\x15\xf2\x63\xf7\x88\xa9\x61\x0f\xab\x2e\x5e\x4d\xac\x07\xa5\x14\xc8\xad\x73\xeb\xc5\x80\xcf\x13\xee\x14\xed\x27\xd0\x9b\xd5\x47\x29\x2b\xbc\x25\x7e\xbf\x71\x34\x6a\xdf\x0d\xb4\x84\xf2\x17\x61\xf3\xed\x92\x06\xf7\xd3\x90\xef\x3c\x20\x94\x17\x12\xd6\xcb\xb1\xb6\x92\xbd\x5f\x3d\x65\xe1\xd1\xe1\xa1\x85\xda\x6a\x38\x2f\xa1\x81\x63\x4c\xef\x99\xdf\xd1\xa9\x6c\x45\x5e\x4d\x31\x5f\xa3\xcc\xd5\xef\x18\x9b\xf6\x37\x5e\x8f\x5e\x84\x87\x2e\x2e\xc8\xc2\xd3\xe1\x13\x3a\x3d\xca\x1b\x6f\xbb\x6d\xc1\x3f\x1f\x8b\xa2\x46\xd8\x0a\xa2\xf9\x7c\xfe\x00\xe3\xe0\x97\x1f\xc0\xe2\x20\x1f\xe0\xfb\x95\x8d\x67\xa6\x92\xe4\x99\x4b\x66\xad\x4c\x05\xee\x2d\xa7\xb7\x7e\xc6\xc0\xda\x48\xa9\xb1\x8d\xe8\x03\x9d\xc9\x7b\xa4\xeb\xc7\x3f\x57\xc5\x4b\x8d\x1e\xae\xf3\x53\xf8\xfd\x1e\xdb\xe6\xe4\xbc\xe9\xc0\x6d\xc5\xd2\xbe\x77\x42\x96\x1e\x56\xb2\xee\x77\x25\x5a\xc2\x41\xf9\x0a\x45\xf7\xdb\x96\x4f\x9b\x03\xcd\x4d\xa7\x7f\x30\x40\x13\x46\xb5\xfc\xa1\x5d\xec\xf8\x24\x49\x7a\x30\x87\x3c\x91\x0d\xd9\x72\xdb\xe8\x7a\x91\x0c\x46\x1a\x66\x4d\x66\x6e\x58\x7e\x95\xbf\xa0\x68\x8b\xec\x7c\xdc\xe8\xd4\xc4\xbe\x51\xde\xd0\x5e\x92\xdd\x28\x55\x36\xa7\xfb\x0b\x34\xd5\xd2\x79\xb7\x9e\xf6\xd2\xfb\x92\xec\x88\xee\xe9\x41\xfc\xcf\xe5\xed\xdd\x13\x2e\xdc\x4f\x12\x2a\x44\x87\x3a\xf9\x1e\xb5\xf1\x0c\x04\x33\x07\xd3\xf7\xa6\x60\xdc\x65\x9a\x65\xba\xfc\x21\xd1\x29\x90\xdd\x6e\x60\xe1\x1d\x3d\x55\xd8\xe1\x1a\xb5\xbe\x84\xa1\x71\x74\x28\xa8\xea\xd0\x57\x7d\xed\xfb\x2a\xc5\x42\xf7\x65\xa5\x38\x7e\xd7\x50\xb9\x65\x85\xf6\xa8\xaa\x50\xc2\x97\xde\x49\x69\x14\xd6\x29\xee\xa4\x1e\x8c\xd8\xde\xef\x68\xe7\x53\x80\x43\x55\xbc\xec\x7c\x88\x62\x13\x46\x7c\x07\xd8\x4f\xe4\x47\x19\x9e\xd4\xa3\x5d\x12\x0c\xd3\x08\x65\x23\xfd\x29\xfc\x1e\x85\xd5\x9b\x36\x5a\x0c\x6f\x0a\x9e\x76\xd5\x04\xdb\xdf\xa6\xed\x73\x23\x9f\x29\xdc\x08\x35\x2f\x08\x9d\x4c\x36\x2f\x0a\xab\x9f\xe6\xb8\x46\x98\x9e\x50\x35\xd3\x8b\xdc\x7d\x76\x4e\xa7\x4c\x05\x7f\x97\xe6\xf1\xb6\xb8\x51\x85\xc3\x5a\x30\x8a\x94\x43\x56\x3f\x80\x63\x56\x3f\x80\x97\x7c\x07\xce\x66\x9a\x0f\xb7\xc8\xac\x09\x26\xb4\x2f\x1b\x70\x31\x18\x70\x9a\x03\x1d\xb9\xb5\xf2\x06\x77\xca\x78\x11\x2c\xd0\xd0\x0d\xf1\x62\x25\xc3\x69\x3a\x76\x9f\x09\xdd\x1d\x2d\x91\x32\xde\x9f\x23\x4b\x13\x14\xe5\x4a\xd0\x71\xb7\x3b\xcc\x69\xb2\x30\x24\xf8\x17\x8c\x0c\xf9\x3d\x64\x67\xc6\x6f\xe4\xe1\xed\x21\x1f\x65\x2b\x6d\x6f\x86\x76\xcb\x08\x74\xfc\xd7\x70\x4c\xca\xea\xfb\x75\xc7\x20\xb0\xa1\x28\x23\x2f\x1d\xa1\x8e\x0c\xd4\x4d\xe3\xc2\x70\x0b\x0c\x9b\x52\xcd\x57\xc2\xba\xf6\x1c\x38\x91\xc7\xd6\x3a\xc4\x13\x79\x7d\x2b\xfb\xd5\x04\xfb\xfa\x32\x16\x96\x23\x5f\xa8\xd5\xcd\xea\x56\x9b\x15\xb9\x50\x8b\x71\x4e\x27\xbe\x64\x1f\x8d\x66\xf6\xc0\x97\xcc\x00\x0e\xa8\xb9\xe5\x26\x2f\x15\xf7\x45\xbf\xe8\x8a\x1d\x83\x03\x0b\xa7\x1e\x15\x51\xc9\x39\xa2\x09\x01\x2c\x44\x55\xbc\xa8\xe6\xa1\x2a\x5e\xec\x78\x8c\x23\x99\x4f\x81\x26\x55\xa7\x7d\x7a\x91\xa6\xaf\xf4\x44\x8b\x1d\x89\xc1\x04\x01\xdf\xf1\x64\x5b\x70\xab\x0a\xc8\x2e\x4e\x94\x99\x50\x60\x61\x5a\x3b\x50\x2e\x18\xf2\x7f\x4b\xf3\xb2\xa8\x9a\xf0\xd4\x48\x26\x5d\x28\x36\x19\xae\x2e\xe0\x62\x86\x6b\xa0\xe7\xb8\x05\x92\x23\x1f\x1d\x1c\x3e\xca\x8b\xad\x2d\x5d\xa8\x62\x13\x19\x3c\xe6\x80\x41\xb7\x59\x6f\x00\xdd\xcf\x13\x4b\x8f\x4b\x2f\x6f\x1e\x74\x9b\xf5\x16\x24\xfc\x9b\x0e\xba\x3c\xb9\xcf\xa0\x93\xf1\x4c\x1e\x74\xd6\xea\x63\x07\x9d\x8a\xe4\x8d\x83\x6e\xb2\x0a\xdc\x34\xe8\x04\xa6\x7f\xbf\x41\x27\x30\x31\x66\xd0\x61\xf0\xb7\x0d\xba\xa7\x27\x1f\xd0\xfd\xec\x60\xe9\x71\xe9\xe5\xcd\x83\xee\xe9\x29\x00\x09\xff\xa6\x83\x2e\x3b\xdc\x67\xd0\xc9\x78\x26\x0f\x3a\x6b\xf5\xb1\x83\x4e\x45\xf2\xc6\x41\x37\x59\x05\x6e\x1a\x74\x02\xd3\xbf\xdf\xa0\x13\x98\x18\x33\xe8\x30\xf8\xdb\x06\x9d\xef\x3f\x3d\x01\xca\xdf\x66\x96\x2e\x97\x5e\xde\x3c\xea\xfc\xc0\xf3\x40\xca\xbf\xe9\xb0\x6b\xb3\xfb\x0c\x3b\x19\xcf\xe4\x61\x67\xad\x3e\x76\xd8\xa9\x48\xde\x38\xec\x26\xeb\xc0\x4d\xc3\x4e\x60\xfa\xf7\x1b\x76\x02\x13\x63\x86\x1d\x06\x9f\x32\xec\xe4\xea\xbf\xa5\x7e\x9b\x25\x38\x79\x08\xcb\xd5\xef\x32\x6a\xde\x32\x64\xde\x3e\x5e\xee\x39\x58\xa6\xf4\xf3\x2d\xc3\xe4\xf7\x1f\x23\x53\x06\xc8\xa4\xd1\xc1\xab\x66\x74\xc3\x85\xb4\x10\x4a\x17\xef\xc5\xe4\x4d\x4f\x8f\xb6\x0a\xca\x8a\x10\x04\x21\xe6\xdb\x19\x85\x58\xd6\x0e\xbd\xe2\x6a\x54\x45\x2b\x67\x32\xa4\x89\xc3\xcd\x28\x42\xea\xe7\x28\x11\xc3\xc2\x8a\x81\x7e\x31\xe8\x3f\xa8\x8c\x61\x56\xfc\x2c\x33\x04\x5a\x1f\x8b\x17\x1b\x20\xf8\x39\x67\x94\x88\xb8\x4a\x42\xc2\x91\xbf\x77\x49\x79\xc0\x06\xd0\xd1\xd5\xc1\x37\xed\x80\x93\xf6\x28\x2d\xf0\xff\xff\x30\x62\x6b\x13\xb0\x55\x90\xf1\xed\xb0\xff\x9f\xaf\x1e\x7f\x60\xef\x68\x34\xf5\xe5\x87\xa0\x2b\xc8\xd2\x13\x8a\xc3\xf2\xcb\x0f\x84\xeb\xae\x38\x4f\x1b\x54\x65\x69\x9e\x36\x5f\x7e\xf0\x3d\xba\x2b\x6a\xe9\x6c\x8e\x41\xf0\xcb\xd2\xf1\x57\xf4\x6f\xb0\x38\x06\x01\xb0\xc5\x0e\xee\x27\xd4\x36\x53\x06\x04\x86\x77\xc2\x49\x82\x25\x35\xac\x63\x87\x81\x8c\x18\xd6\x49\x58\x7d\x03\xed\x4b\xf7\xe9\x13\x86\x52\xc8\x03\x00\x6a\x22\x59\x18\x99\xd1\x90\x04\xab\xd5\x8c\xff\x4f\xec\x3d\x73\x6d\x1b\x4b\x03\xc6\x44\x22\xb6\x19\x45\x0d\x34\x29\x12\x9e\xc0\x8a\xc7\x68\x58\x2c\x24\x15\xbb\x62\x81\x94\xcc\x8a\x0e\x67\xfc\x48\x0c\x33\x0c\x98\x12\x45\x3c\x80\x41\x91\x20\x7c\x43\x57\xfc\xab\x5a\x15\xcc\xb4\xd3\xff\xe7\x77\xb3\x2d\x72\x67\x29\xa6\x65\xd4\x10\x91\xec\x8b\x45\xc4\x90\x51\x81\x20\xf4\x61\x1d\x87\x55\xf2\xa6\x8f\xe7\x23\xbf\x6c\xf6\xb3\x64\xef\xf9\xa5\xa8\x12\x1a\x19\x46\x15\x0a\xbf\xb9\xf8\xf7\xc8\x94\x98\xdd\xae\x9d\xa1\x8c\x98\x81\x31\x25\x26\x6e\xf1\x4f\xc7\x4a\x3e\xeb\xe6\xa9\x07\xd1\x08\xd4\x9c\x7c\x70\xd5\x0e\x9b\x39\x42\x39\xcb\x83\x38\x9c\x3b\x63\xe4\x1e\x1f\x8d\x6e\x7f\x52\x4f\x27\xdb\xbf\xb3\xe5\x0d\x91\x29\x03\x27\x3c\x45\xda\x6e\x54\x24\xaf\x83\x1b\x48\xf8\xd7\x52\x5f\xaa\xda\xa4\x4d\x86\xd4\x9d\xe2\x1b\x01\xa0\x3e\x47\x12\x0c\xd9\x7c\xc3\x77\xa5\xea\x3b\x45\x09\x4e\xd4\x36\x62\x3b\x61\xa8\xc1\x7d\x61\x1d\xd4\x8f\xfd\xa3\xb4\x0b\x5d\x6e\x09\x4b\xca\xd8\x7d\x14\xe6\x3b\xc9\x03\x30\xd7\x81\xa6\xba\xa2\x26\x7a\x8b\xc7\x67\xd3\x5e\x33\x55\x63\x25\xea\x90\x52\x31\x81\x91\xfd\x88\xec\x4b\xb5\xeb\xf8\x65\xfb\xe8\x00\x45\x9e\xe3\x49\x08\x7f\x14\xf4\x67\xac\x0a\x77\x3d\xbc\x2f\x8a\xc6\xdc\x23\x63\x7b\x40\xce\x7c\x6a\x68\x3e\x25\x05\x28\x77\xb7\x09\xd2\x83\x9a\xab\x17\x49\xad\xa7\xbb\xfe\xe4\x03\xae\xf3\x35\x24\x50\x57\x4e\x69\x41\x8f\x87\x72\x50\x25\xbd\xb1\x4c\x82\xec\xe2\xb2\xd3\x90\xb0\xb1\xda\x69\x7e\x70\xb1\xee\x66\xe1\xeb\xe0\x56\xe2\x7e\x2f\x08\xdd\x22\x02\x8f\xc4\x34\x3f\x08\x69\xb1\x9e\x87\xb4\x47\xe0\xa3\x29\x4a\xa0\xa6\x6a\xcc\x74\x14\x46\xc3\x66\xa5\x46\x5b\x03\x10\x84\xec\x98\x99\x28\x60\xd3\x8c\x64\x13\x24\xe4\x4b\xbf\xe3\x39\x1a\x8e\xdb\xa1\x2e\x55\x56\x29\x7f\x55\xb6\x96\x0d\x09\x3d\x63\xfa\x42\x1a\xb0\x8c\x46\x8a\x94\xa3\xda\x2b\x25\xbb\x18\x29\xd1\xd9\x1a\xdd\xf0\x9d\x8f\xed\xc7\xc7\x67\xf1\x79\xb2\xcf\x97\xb6\x6c\x09\x1c\x76\x4a\x2c\x59\x60\xcc\x30\xe3\x98\x9e\x12\x7f\x27\x29\x31\x03\x78\xa3\x98\x28\x6b\xa3\xe5\x04\xd0\xb4\x75\x31\xec\xde\x84\xda\x3f\x4a\x7c\x33\x23\xa0\x64\x5b\x50\xeb\x98\xc2\x93\x49\x99\x3c\x6c\x48\x1d\xd9\x7e\x58\x76\xcc\x8e\xc4\xc2\xec\xc2\x44\x8e\x74\x8f\x31\x31\xcf\x85\x05\xa3\xb9\x89\x37\xe1\x00\x1b\x38\x84\xa9\x38\x65\xaf\xa0\x47\x94\x6c\x3f\x5c\x63\x1c\xff\x13\x82\xd4\x61\x3a\xc3\x42\x9c\x16\x99\x8a\x04\x47\xa6\xd2\x15\x18\x03\x72\x62\xdd\x03\xab\xd6\xde\xd9\xbd\xd1\x0a\xe2\xea\x58\x67\xbc\x53\xb3\x56\x83\xb6\x8c\x05\xde\x03\xd6\x8c\x61\xb8\xf0\xc3\x42\xf4\xb7\x1b\x17\xe7\x53\xb3\x5b\x3c\x2b\x3f\x15\xa8\x43\x58\x76\xfb\x22\xf5\x22\x90\x47\xdb\xce\x44\xfa\x61\x09\x4f\x09\x93\xb8\x3a\xe7\xd1\x1d\xcf\xa7\x74\xf1\xaa\x1e\xed\xf9\x74\x57\xe7\xd0\xfd\x0c\xd2\x39\x1d\x55\x3d\x7b\x9e\x49\x2c\xfd\xa3\x5a\xd0\x9d\xc3\xb1\x6e\x9c\xb5\x7f\x9e\x51\x92\xbb\x77\xdb\x33\x3f\x3f\x8c\xa0\x4f\xa6\x46\x1d\x17\xc6\xfb\x7c\xde\x8c\x89\xdd\xca\x23\xd7\x51\x8e\x72\xf0\x93\x38\x65\x78\x48\x4f\xa4\xda\xb0\xa0\x95\x7d\xd1\x9a\xb8\x40\xa9\x94\xe1\x01\x69\x73\x1b\x87\x16\x6b\xf3\x3f\x6f\xdc\xd9\x1c\x8b\x8d\xea\xc9\x89\x16\xbf\xa7\x66\x37\xaa\x36\xef\xab\x51\x60\x3d\x2a\x62\xef\x33\xea\x8c\x38\x34\x62\xb8\xa9\xbd\xc7\xcf\x97\x47\x45\x0a\xb2\xfe\x41\x27\x0e\x47\x9e\xce\xb9\x0a\x48\xcd\x2b\x4f\xd0\xc1\x30\x68\x62\xe6\x97\xad\x72\xe8\x2e\x58\x0d\x5d\x7d\x65\x38\xb4\x28\xf3\xc6\x97\xd3\xfa\x82\x31\x77\x63\x8d\x32\x1f\x4a\x5f\xb0\x61\x40\xf6\xbe\x08\x5d\xa3\x4e\xb5\xc7\xec\x48\x9f\xaf\x60\x8c\xb6\x61\x60\x52\xfc\xc5\x80\xde\x2f\xb8\x52\xc2\xd4\x26\x8e\x02\x80\x9a\x0e\x20\x91\xab\x73\xb0\xbb\x26\x5d\xac\x05\x23\xbc\xa5\xb7\x82\x21\x2b\x61\x64\xff\x26\x9b\x31\x68\x32\xa8\x63\x0a\x93\x83\xdd\xeb\xe0\xfe\xc2\xdd\xb5\x54\xcf\x85\x4b\x29\x3b\x37\x6a\xca\x4e\x20\x45\x27\x70\x8b\x8c\x72\xb2\x20\x0a\x6b\x44\xaf\x8d\x83\xbd\x28\x66\x96\x9e\xff\x55\x3e\xc5\x47\xcd\xc9\x61\x6d\xd1\x0d\x06\x3f\xc1\xc7\x10\x90\x45\x18\x75\xcb\xc3\x5a\x73\xa9\x6b\x2d\x63\x25\xb9\xf9\xa9\x43\x52\xa5\x79\x58\xbd\x8e\x3b\x81\x27\x55\xf9\xf5\x58\xa1\xfd\xd7\xee\x02\x10\xe0\x95\x76\x49\xe3\xe8\x7b\x6b\xd6\x41\x1c\x73\x72\xdd\x5d\xfb\x63\xee\xd6\xd7\x2a\x41\x5c\xaa\x2f\x6f\xe5\x73\x1d\x6f\x56\x9b\xa4\x23\x29\xdf\xc3\x6f\xbb\x75\x5d\xa9\x02\xf2\x28\xbd\xba\x95\x43\x1f\x6d\xd0\x62\xc9\xc9\x89\xf7\xb3\xdb\x2e\xe9\x16\xe1\x21\xde\x84\xf2\x9b\x19\xf3\x37\xe1\x36\xe2\x84\x94\x7b\xbc\x7d\xdf\x37\xde\xda\xac\x54\x81\xd8\x93\x5f\xc9\x97\x34\xf9\xfe\x58\x0e\x93\xc5\x13\xf2\x3c\x4e\x4e\xbe\xdf\xd9\x76\xab\xaf\x5c\x03\xe2\x4f\x7a\x73\x6b\x07\x46\x49\xe0\x2f\x3a\xf6\xa4\xdb\x7f\x0d\xdd\xc7\xaf\xdd\xed\x2b\x40\xcc\x89\x2f\x6e\xee\xba\x10\x79\x48\xe8\x88\x6a\xe0\x80\x6f\x77\x29\x6b\x07\x0f\x77\x5b\x57\x7e\xb3\xd6\x25\x81\x1f\x2c\xaf\xf3\x7f\x9c\xf3\xa8\x68\x2a\x21\xc9\x73\x60\x98\x34\x05\xe0\xa2\xbf\x61\x92\xb4\xb0\xcf\x43\x75\xaa\x4b\x4c\x95\x38\x30\x81\xa7\x51\x5b\xfa\xd4\x74\x09\xd7\x79\x98\xa1\xaa\x01\xbc\xc6\xa8\x4f\x3b\x7e\xef\x65\x27\x1d\xea\x23\x44\xc9\x47\x81\x7e\xf8\xb2\xf3\xa8\xfc\xa5\x76\x63\xeb\xc6\xe3\xdc\xba\x49\x5a\xe7\x69\x5d\xa7\x51\x86\x9c\x79\x9c\x15\xb5\x29\xa5\x45\xff\x59\xc0\xd0\x1c\x90\xb4\xe2\xdb\x3c\x6f\xe9\x6d\x81\x4b\xc5\x3f\xc4\x31\x5a\x69\xf1\x7b\xb4\x4d\x42\xec\xf3\x24\x54\xce\xb1\x12\x43\x15\x06\xfa\xb4\x8f\x13\x1d\x54\x6c\x7f\xc7\x41\xb0\x59\x05\x1c\x50\x73\x6c\xcb\xf5\x32\x5c\x82\x41\xf5\x06\x6d\x91\x7a\x5f\x73\x92\x24\x7b\xa4\x23\x83\x59\x8c\xf7\x49\x90\xac\x75\x60\x80\xc9\x00\x2d\xfc\xc5\xa2\x03\x95\xbd\x9a\xbf\x5a\x6d\x82\x25\x34\xe6\x97\x28\x49\x54\x16\xe3\x05\x5a\xc7\x91\x82\x0a\x66\x30\xf2\x93\x7d\xa4\x81\x42\x7d\x18\x05\xc8\xef\xd8\x13\x5d\x9a\x17\xaf\x96\x6b\xe0\x23\xe5\x87\xc4\x47\xf1\xde\x57\xe5\x8b\xd0\x0a\x45\x22\x1e\x98\xb1\x30\x4a\x12\x6c\xcc\x04\x38\x88\xab\x75\x10\xf7\x9d\xa6\xf8\xb3\xed\x6a\xbd\xf4\xa0\x4e\xdb\xef\xf7\x8b\x38\x51\xef\xe1\xde\x23\x14\x85\x0a\x2a\x98\xb7\xfd\x1e\x6d\x43\x5f\x05\x05\xd8\x5b\x2d\x16\x7b\xaf\x63\x4f\x76\x66\x9b\xc0\x8f\x41\x91\xee\xb7\xc9\x46\x13\xe9\x7e\x15\x0b\x22\xa5\x98\x0c\xcc\xf9\x91\x17\x6d\x14\x48\x80\xb7\xe5\x93\x1f\xf8\x9b\xde\x5c\x08\x9e\x6c\xeb\x6f\xfd\x6d\x00\xb1\x86\xf0\x3f\x95\xb5\x64\x9f\xec\x91\x84\x08\xe6\x0c\xc5\x28\xde\xaf\x65\x40\x80\xb1\xf5\x16\xff\xeb\x1b\xd0\xbb\x31\x3f\xf2\x51\x00\x39\xd9\x64\x9d\x6c\x93\x27\x75\x14\xac\xe3\x6d\x1c\x8a\x78\x0c\x43\xe0\x29\x8a\x22\x24\xc1\x41\x9a\xb6\xf4\x56\xde\xea\xfa\x47\xbe\x44\xf9\x0d\xbd\xee\xab\x30\x47\xb5\x53\x56\xc5\xa1\x42\x75\xed\x46\x61\xe5\xd6\x4d\x95\x96\xa8\xbe\xec\xab\x22\xbf\x40\x69\x33\x7d\x9a\x56\xa7\x29\xc0\xb7\x9e\xe3\x5d\xaf\x7f\x7c\x47\xdc\x73\x8e\x71\x78\x4d\x4c\xcc\x4d\xaa\x5e\x34\x2a\xcc\x7b\x37\xf0\x07\x7a\xfb\x82\xa6\xd8\xae\xfb\xdd\x9e\x31\xe5\x36\xa8\x31\xcb\x58\x32\x9f\xac\xff\x13\x7d\x27\x1a\xbd\x54\xda\x3d\xe0\x46\xa2\x53\xf3\x69\xb9\x4a\xd0\x61\x06\xec\x73\x5b\x3d\x3a\xc1\xea\xe3\x4c\x70\xf0\xda\xef\x95\xf7\xd1\x50\xd3\xfc\x66\xa3\xe0\x50\x7e\x3f\xea\xa7\xe7\xfb\x8c\x20\x52\x0b\xc3\x53\x9a\x87\x0d\x4a\xba\xe5\x7a\x5a\x80\xb5\x07\xd2\x44\xc7\xe7\x17\x6a\x3b\xe9\x69\x9f\x9e\xd2\x06\x3d\x4f\xae\x71\x9d\x93\xc8\x6d\xb2\x16\xd8\xae\x05\x63\x38\xd5\xbd\x46\xec\x4b\xe8\x55\xd8\x9b\xf2\x5b\xa7\xd8\xb8\xaa\xfb\x62\xdc\x90\xd4\x16\xb7\x28\xc8\x29\x89\xf4\xfb\x74\x4d\x38\x78\xdc\x6e\x78\x2b\x45\xef\x22\xf2\xf1\xd7\xe6\x1a\x30\xcb\xeb\xef\xec\x1e\x60\x73\x72\x42\x05\xcb\xf8\x35\x5a\x5b\x28\x4d\x73\x2c\x8d\x5b\x88\xd5\xf7\x05\xbd\xdf\x7e\x3b\xcb\x96\x3a\x6d\x9b\xd7\x1d\x3e\x64\x6a\x0d\x01\x55\xc2\xba\x95\x4d\x81\x15\x2e\x2e\x56\xb1\x8c\x4e\x4b\x49\x76\x82\xaa\x78\x99\xd6\xdc\xe3\xc3\x82\x80\x7a\x9f\x9d\xeb\xa3\xb6\xfb\x4c\xb9\x04\x44\xde\xd0\xa0\x4f\xea\x54\x7c\xb7\x6c\xce\x04\xf1\xdc\xb2\xd9\x12\x32\x1a\x63\xa7\x58\x6c\x36\x15\x9a\x10\xcc\xe8\x85\x65\xe3\xf0\x9b\xd1\x30\x35\x33\xbf\xa7\x37\x0c\xd8\x89\x31\x24\x03\x40\xca\x37\x12\x43\xbb\xd9\xd4\xd0\xc8\x10\xdf\x2c\x6f\x27\x36\xd7\xaf\x00\x87\x14\x93\xf2\xa0\x28\x26\xe9\x30\x0d\xf1\xf8\xb9\x27\x9b\x66\xea\x2d\xe8\x50\x98\x98\x37\xd0\xb0\xa1\x32\xca\xaf\x87\xb0\x4a\x50\x45\x34\x08\x26\xfb\x22\x53\x1f\xb0\xd9\xb3\x85\xad\x01\x39\xaa\x70\x76\x49\x72\x3e\x24\x49\xb2\xce\xd3\x51\x8f\x9c\xa0\xb3\xb9\x38\xd0\x06\x8a\xc0\xc8\x3a\x84\xdf\x8c\xc6\x2c\x41\xf6\xde\x2e\x3f\x09\xc9\x00\x90\xbc\x3c\x69\x6a\x37\x5b\x58\x30\x32\x34\x24\x39\x09\x6a\x60\xf5\x9c\xf1\x20\xc9\x8d\x75\x98\x86\x78\xd4\xca\x05\x5b\xa4\xd0\x99\xc7\xb5\x4d\x2c\xeb\x98\x0d\x08\x8c\xb2\x22\x2f\xad\x82\x12\xaa\xdb\x20\x64\x23\x69\x6a\x25\x5b\x62\x81\xf9\x18\x90\x8f\x00\x32\x60\x1e\x19\x75\xd9\x3c\xd2\xee\xd1\xb0\x8e\x5f\xc0\x21\x6b\x35\x3a\xe7\x0c\x81\x89\x6b\x10\xbf\x19\x8d\x51\x50\xfc\xbd\x55\x56\x32\x92\x01\x20\x49\x62\xb6\x76\x6f\x43\xdf\xcc\xf0\x80\xd0\x64\xa8\x81\xef\x7a\x8c\x07\x39\x4d\x3a\xed\x30\x0d\xf1\xd8\x95\x2d\xba\x88\xa5\xb3\x4f\xeb\x9b\xd8\x86\xb0\x1b\x91\x18\x65\xc6\x5e\x5b\x45\x26\xa1\xb0\xc3\x48\x02\x33\xb7\x98\x2e\xc6\x99\xb8\x19\x90\x97\x04\x64\x17\x17\xe7\x40\x12\x17\xeb\x2a\x0d\xef\xc8\xc5\x3e\xba\xae\xa7\xf3\x4e\xaa\x9b\x78\x06\x70\x9b\x50\x18\x45\x45\xdf\x5a\x25\x25\x22\xb0\x82\xc8\x03\xcb\xd4\x56\xb6\x34\x69\x60\x65\x40\x4c\x22\xcc\xc0\xa0\x62\xf4\xe5\x41\x45\x3b\x09\x90\xfe\x88\x95\x4f\xb6\xc8\x09\x29\x58\xf5\xcd\xac\x57\x2a\x66\x03\x02\xcb\x60\xaa\xbe\x0d\x0d\xa5\xae\xba\x0d\x42\x0e\x26\x4c\xad\x64\x4b\xb4\x30\x1f\x83\x83\xa8\x52\x93\x3d\x1b\xc2\x08\x46\x5d\x0e\x23\x68\xf7\xb0\xaf\x64\x34\x5f\x29\x99\x44\x4a\x1b\xa5\x56\xea\x15\xb4\xfa\x7e\x96\x6e\x62\xe0\xd1\x45\x97\xee\x56\x00\xbf\x6c\x1d\x8f\xe4\x92\xee\x6e\x19\x98\xaf\x18\x41\x3e\x7d\xa7\x3f\x94\xa9\x8f\x07\xaf\xde\x74\x48\x36\xab\x2b\xeb\x12\xf6\x89\x8f\x2d\xa3\x78\x86\xac\xa2\x9e\xe9\x96\x8d\xeb\x3c\x2f\x92\x30\x73\x8b\x12\x9d\x2e\xca\x4a\x30\x7b\xd7\xaf\xe1\xec\xd3\x16\x25\x03\x67\x8a\xf8\x94\xdf\xf7\x56\xfd\xdd\x58\x94\x79\x65\x9d\x59\xb8\x90\x83\xd0\x99\xef\xc3\x04\x39\x8c\x9f\x24\x0d\xb3\xe2\x70\x21\x2b\x9d\x94\x38\x6f\x00\x29\xda\x17\x55\xee\xcc\x17\xb5\x83\xc2\x1a\xb9\xc5\xb9\x79\x16\x20\x6f\x85\x98\x0d\x90\xd0\x5e\x53\x3c\x59\xd8\xa0\x4f\xde\xcc\x0d\x56\x1f\x1f\x9f\x2d\xef\x78\x33\x69\xfe\x72\xa9\x99\x76\xcc\x9e\x09\xad\xf7\x28\x8a\x8f\xe1\xec\xa4\xe8\xb6\x5d\x4f\xf3\x92\x57\x96\xca\x44\x22\xae\x2f\xd1\xd1\xf5\x4a\x72\x58\x93\xdd\x92\x41\xae\x75\x01\x2f\x2c\xa7\xa8\xd8\xfa\xfb\x6f\x71\x18\x58\xe1\x42\xbd\x68\xc5\x60\x06\xb2\xb4\xdc\xf5\x29\x85\x07\x0e\x00\x07\xda\xf1\x5f\xb2\xc1\x50\x55\x58\x17\x13\x48\xaa\xa2\xbc\x75\x84\x2c\xa1\xc8\xdd\xf3\x34\xfc\x64\x64\x88\xb7\xbb\x28\xaf\xb1\x46\x5d\x44\x03\x43\xdf\xb3\x83\xa8\xf7\x5c\x7c\x7f\x53\xb2\x72\x72\x8a\xcb\x78\x75\x82\xfc\x4d\xc9\xba\xa1\x14\xde\x00\x2a\x37\xdb\x51\x2c\xa3\x70\x84\x8c\x9e\x6f\x73\xc4\xff\x8a\xc3\x02\x3a\x89\xac\x5d\x3a\xde\xc9\xa0\x48\x5e\x2d\x37\xd2\x0e\x9e\x81\x26\x07\xed\x28\x2a\x76\x4a\xf6\xbd\xbe\x98\xa1\x53\x02\x27\xca\xc2\x2f\x20\x11\xc9\xe7\x6d\xbb\x15\x7e\x91\xd9\x9f\x80\xdb\x7b\xc5\x0d\xd6\x7c\xe5\x1a\xa8\x23\xde\xe2\x2c\x9d\xf5\x93\xeb\xd4\x71\x55\x64\x59\x14\x56\x6e\x8e\xc2\xfa\x6c\xbe\xa0\xe5\xe9\xe9\xe9\xa9\x6c\x99\xe9\x5a\x61\x73\xc5\x84\x45\x9e\x3b\xdf\x43\xf1\x59\x76\x14\x49\xa6\x51\xc8\x3b\xed\x79\xbd\xfe\x2c\x3c\x45\x65\xea\x5c\x00\x5d\x60\x50\x5b\x62\x4d\x5a\x27\x13\xd1\x6f\x69\x9d\x79\x53\x14\x59\x93\x96\x96\xbb\x47\x7d\x6f\xa3\xde\x39\xd9\xdd\x64\x44\xa2\x94\x7d\x98\xa7\xd9\xeb\x0e\x3b\xfa\x0c\xb9\xf5\x6b\xdd\xa0\x7c\xf6\xe7\x2c\x3d\x7d\xfb\x25\x8c\xff\x4e\x7e\xfe\x7b\x71\x6a\x66\x0f\x7f\x47\x87\x02\x39\xff\xf5\xd7\x87\xd9\x7f\x16\x51\xd1\x14\xb3\x87\xff\x89\xb2\xef\xa8\x49\xe3\xd0\xf9\x0f\x74\x46\x0f\xb3\x3f\x55\x69\x98\xcd\xea\xf0\x54\xbb\x35\xaa\xd2\xfd\xec\xe1\x4f\x18\xa9\xf3\x33\xb6\x54\xce\x5f\xf2\xe2\x1f\xe9\x43\x8f\x47\x2f\xf8\xfb\x6b\x1e\x15\xd9\x03\x0b\xa7\xd8\x91\x8b\x2a\x0f\xb3\xc1\x2b\xfd\x85\x0f\x63\x58\x91\xc4\xdf\xd4\x0e\x81\xe1\x91\x18\x7c\xf5\x05\xbd\xef\x24\x65\x19\x6a\xb0\xfb\xc0\x26\x0a\x6b\x3c\x63\x88\xa4\x95\x20\x19\x25\xa4\x12\x15\x4a\xda\xa6\x4c\x8a\xe8\xae\x68\x52\x91\x8e\x73\x6d\xd7\x38\x98\xb1\x42\x30\xe6\x4c\xe6\x8a\x15\x7f\xea\x5e\x38\xf3\xb0\xaa\x8a\x17\x40\x27\xa0\xab\x47\x57\x82\xe6\x63\xdb\x22\x23\xb1\x5c\x73\x64\xba\x83\x85\xbf\xa0\xf2\x23\xc6\xa0\xe7\x39\xaa\x5d\xf6\xe8\xe2\xd6\xff\xda\xba\x65\x16\xc6\x28\x47\xa7\xe6\xff\xfd\xd2\x14\xe5\xd7\x19\x04\xda\x60\x97\xc9\x2c\x0e\xb6\xbe\xde\x04\x84\xac\x21\x26\xbc\xbc\xb3\xfa\xcf\x2b\x53\x31\xf3\x2e\x1a\xa0\xd0\xf5\xa4\x74\xa0\x64\x51\xb6\x52\xf2\x7b\xda\x75\x9d\x64\x1c\xd2\xda\x67\x7d\x9f\x0a\x71\xfa\xa3\x38\x25\x46\x12\xee\x56\x9a\xe7\xaf\x9b\x0a\x38\xa2\xfc\xc7\x20\xb5\x75\x2d\xbb\xff\x8f\x76\x2e\x3f\x2b\x3c\x1d\xb7\xb5\x73\x45\x1a\x6a\xf7\x12\x1b\x3f\xa6\x77\xa5\x1e\xa6\x41\xc2\xe4\x3e\xa6\xca\x03\x77\x32\x3b\x98\x7a\x8b\xfa\x32\xb4\xb6\x6e\xa6\x20\xbc\x9f\xd9\x97\xc6\x1b\x90\x5b\xfb\x59\x22\x32\x5d\x8f\x3d\xde\xcf\xca\x27\xeb\xc9\xdd\x8c\x49\xc1\x9d\x8c\xdf\xdc\xa4\xc8\x04\xa5\xad\x83\x31\x00\xef\x5e\x16\xa0\xdf\x80\xda\xda\xbd\x02\x89\xae\x73\x95\x44\x41\xa3\xb4\x59\xeb\x67\x12\x0f\x03\xbd\xec\xa6\xa7\x13\xaa\x84\x68\x82\xa4\x12\xee\x62\xba\x45\xd9\x3a\x5b\x42\xab\x9b\x19\xe9\x07\x70\xc0\x79\x88\x69\x83\x57\x51\x92\xd5\x0a\xd3\xbe\x62\x6d\x9e\xb3\xd6\x23\x96\x8e\x55\x1c\x76\xfd\xdf\xc0\xe5\xff\x9c\xc0\xe5\x37\x99\x6a\x77\x3a\x36\x2d\xf6\x99\x6f\x85\x7b\xd7\xe7\x4b\x00\x11\xbb\x1b\x72\xa6\x15\x1b\xc3\x22\x99\xce\xa4\x20\xc9\x40\xc3\x34\xe6\x09\xf7\x06\x86\x47\x56\xc2\x66\x88\x3d\x1a\xe3\x31\x00\x14\xc7\x63\x4a\x02\x80\x89\x68\x3b\x93\x0b\x63\xd7\xa3\xb2\xa9\x98\x55\xc1\x4d\xa8\xc8\x4d\xb5\x95\x35\x1b\x7e\x20\xe8\x93\x3d\x1f\xf3\x8b\xb7\xb4\x6a\x24\x73\x1d\x59\x96\x64\x6a\xab\x67\x85\xda\x2a\x0b\x24\x54\x47\xa5\xb1\xb6\x7a\xbc\x6f\xc7\x6b\xdd\xc7\x19\x24\x09\x94\x3e\x11\x96\x78\x86\xad\x3f\x38\xae\xff\x38\x8a\x65\xba\xa3\x6c\x14\x9f\x3c\x18\x06\x80\x69\x30\x2c\x2d\x46\x4c\xd0\x69\x25\x20\x36\xe1\x57\x03\xe2\xe9\xb8\xa7\xe9\xb5\x21\x96\x1e\x60\xcf\x46\x63\x30\xe6\x96\x84\x44\x22\x90\x69\xda\x7e\x2b\xcb\x8c\x15\x40\x53\xc4\xa0\xfe\x36\xf5\x1e\x2d\x01\xa0\x17\x29\x47\x46\x05\x87\x26\x1e\xe3\xf5\xb9\x9b\x78\x00\xd0\x6c\xe2\x21\xc8\x66\x8a\x42\xab\x73\x0f\x23\x01\x65\xee\x71\x03\xf2\x69\x2a\x6d\x9a\xb7\x0c\x31\x68\xa3\x32\x62\x82\xa3\xd9\x9e\x69\x5a\x7d\x3b\xd7\x3c\xf9\x89\x36\xb6\xa4\x59\xd4\x6d\x7a\x3d\x5e\x0e\x50\x57\x12\x9e\x86\x14\x5b\x9e\xeb\x4d\xd6\x6c\x87\x43\xf3\x3c\x95\x63\x7a\x0e\xae\x62\x9f\x7e\xac\xbc\x8f\x60\x88\x18\x78\x5a\xae\x3b\x0f\x9c\x87\xe9\x1f\x28\xf6\x1b\xfc\x6f\x64\x7b\xd9\xdc\x16\x80\x25\x73\x5b\x79\xc5\x7b\xc2\x38\x96\x27\xb8\x06\xf4\xda\x04\x77\x32\xea\x69\x63\x18\x9e\x1a\xdb\x99\xb3\x51\x80\x66\xd0\x46\x9f\x44\x4d\xed\xb4\xe1\x7b\x1b\xc3\xd2\x5c\x1e\x70\x8c\x6f\x19\xba\x63\x3b\x5f\xef\x41\xc6\xcf\xd0\xc0\x15\x17\x0f\xc4\x61\xab\xa5\xab\x05\x92\xe5\x74\x1f\xc1\x84\x7d\x11\xda\x09\x61\x68\x66\x48\x46\x8c\xe5\x93\x5f\x84\xff\xd9\xf3\x84\x2e\x46\xa7\x09\x5d\x88\xe9\x3a\x15\x9b\x01\x25\x06\xe9\xcd\x4c\xf2\x0a\x37\x5f\x3a\xf4\x42\x52\x92\x15\xe7\x1a\x65\xfa\xf7\xbe\xfe\x1d\x5b\x8b\x31\x7d\x53\x27\x67\x80\xb4\x6d\x16\x7d\x65\xfb\x91\x19\xb2\x0c\x30\xfa\xf3\x9f\x40\xd1\xbe\x8d\x62\x4d\xf7\x38\x18\x36\x48\x8c\x7a\x0b\x6d\x9d\xe0\x15\xf9\x2b\xac\x1f\xfb\x30\x46\xee\xf7\xb4\x4e\xa3\x34\x4b\x9b\x57\xbe\x41\xc1\xf2\x8a\xd7\x2e\x51\x55\x97\x28\xa6\xd7\xf6\x7a\x74\x81\x4b\x2b\x52\xba\xd2\x3d\xa1\xb6\x99\x29\x65\x65\x85\xbe\x2b\x65\x86\xdb\xc1\xc7\xe1\x32\xf9\x21\xa8\xbe\x52\x84\xb5\x1d\x42\xa9\x14\xd1\xa9\x8c\x65\x8f\xc8\xff\xf3\x09\xde\x22\x82\xcb\xaf\x7f\xac\xcf\x65\x59\x54\x4d\xed\x7c\xfa\xa4\xe1\x60\x0b\x16\x65\x85\x6a\x54\x7d\x47\xee\x22\x79\x74\x8a\xca\xf9\x64\x03\xa0\xe9\xff\x7e\x9b\x96\x2d\x12\x6a\x4a\xc1\xe6\x75\x2f\xaf\x57\x26\x41\x08\xbd\xca\x06\xe6\xd6\xde\x99\x78\xc8\x18\xfa\x93\xbc\x7a\x97\x2e\xbd\x5f\x03\x16\x09\x61\xd3\xd6\x6d\xdd\x7b\x53\xcf\x99\xe4\x67\xef\x38\xd7\xd2\x73\xee\x6f\xdc\x75\xb7\xb4\x60\x91\x50\x36\x6d\x5d\xe7\x8a\x7d\xd7\xa1\xc7\xf1\x63\x55\x64\xaa\x91\xe0\xc5\x36\x3b\xd1\xef\x0f\xfa\x7d\xce\x4a\x33\x37\xb1\xfa\x68\xff\x40\x20\xed\x5f\x84\x9a\xdd\xed\x67\x04\x5f\xd2\xfd\xa4\x70\xcf\x18\x6b\x92\x97\xe3\x12\xd3\x74\x7b\xb3\x9e\xc5\x2f\xe8\xb0\x20\x84\x54\xc7\x3a\xa7\x7d\xd0\x0c\xbe\x26\xf7\x95\x18\x58\x1d\xbc\x3f\x3d\x10\xb6\xa5\x90\x67\x61\xb3\xa6\x78\xc6\x7b\xfa\x45\xe9\x36\x86\xde\x74\xb9\xca\xf0\x45\x2a\xce\x3e\xcd\xb2\x2f\x3f\x7c\x0c\x16\xfb\xfd\xfe\x07\xf9\x36\x96\xad\xb3\x15\x2f\x5a\x49\xbe\xfc\xf0\xcb\x6a\x1e\xac\x1c\x2f\x73\x97\x0e\xfd\xe7\xcf\x57\x2e\xfe\x5f\x40\xff\xe7\xb0\xbf\x2e\x2b\xff\x27\x70\x43\x8a\x59\x30\xff\x62\x6d\x0d\xe6\x1b\xd2\x56\x7f\xbe\xc2\xed\x74\x84\xf6\x91\x67\x5e\xbe\x74\xc9\x3f\x6b\x5b\xd3\x53\x92\xc6\x61\x53\x54\x35\x60\x48\x94\xad\x86\x64\x4a\xab\x7e\x85\x5b\x4d\xb0\x2f\x23\xcc\x06\x7c\x14\x9e\xa7\x6b\xff\xa8\x64\x67\xff\xa8\xa6\x5d\x05\x5b\xe6\x64\xa9\x6d\x2f\x9d\x27\xed\xa5\xeb\x7e\xf1\x5d\x57\xfd\xd8\x5a\xf4\x73\xfc\x4a\x2d\x20\x0c\xe1\xdf\xc4\x8c\xe0\xbe\x39\x35\x64\xf7\x18\x74\xc4\x1c\xbe\x6c\x07\xe6\x7c\x60\x5d\xc2\x15\x85\x32\x90\xc9\xb8\x4b\xcf\x21\x2f\x4d\x98\x29\xd3\x89\x20\xb4\xa7\x87\x9d\x9f\x7f\x27\xda\x3c\x70\x36\x9c\x0a\xef\x07\x6a\x58\x92\x44\x08\x26\xcd\xc5\x0a\xc2\xb3\x83\x75\xac\xe2\xc2\xfe\x1b\x72\xa7\x70\xb8\x33\x03\xe1\xfb\xb6\x2b\x56\xb4\xb9\xb0\xeb\x9c\x7a\x4a\x9e\x49\xf2\x62\xc8\x30\xd9\x5f\x10\xc9\x6b\x34\x45\xa9\x02\x37\x45\xa9\xc3\xe5\x69\x92\x64\x1a\x5e\x5a\xaa\x43\xb3\x05\x5d\x95\x0b\x52\x0a\xf0\x80\x9b\x03\x57\x11\x5e\x19\xea\x41\x0d\x60\xe5\x62\x8d\xe8\xd0\x1d\x0e\x37\x1d\xd2\x17\xc0\x43\x01\xbe\x3b\x4c\x22\x14\x51\xc7\x6d\x4a\x45\xa9\xd0\xed\x0f\x36\x9b\xd2\x50\xaa\x94\xf5\x03\xce\x52\xa1\x89\x3a\x4d\x30\xa9\x52\x67\x07\x72\x4d\xc9\x25\x35\xda\xca\xc1\x5c\xa1\xc8\x44\x97\xa6\x8d\x54\xe8\x92\x63\xa5\xa6\x94\x91\x2a\x51\xe9\x78\x29\xff\x6d\x24\x47\x92\x41\x2a\xe4\xf8\x11\x49\x53\x22\x48\x95\xa2\x7a\x54\x52\x28\x32\xd1\xa5\x29\x1e\x15\xba\xec\x90\x9f\x29\xbd\xa3\x4a\x56\x39\xec\xd7\x97\x98\x88\xd2\xc4\x8d\x0a\x51\x7a\x58\xcd\x94\xef\x44\xa5\x29\x1f\x5a\xeb\x0a\x8c\xcd\x24\xe9\x18\xb5\x66\x56\xdf\x00\x58\x9a\x8a\x51\x6f\xa4\x70\x04\x8b\xff\x36\x4a\x93\x24\x59\x54\xa5\x79\x4c\x1b\x83\xe9\x55\x20\x85\xd8\x52\x87\x17\x5e\x4a\xd5\xc8\x5a\xdb\x45\x4f\x74\x4d\xf7\x81\xeb\xa0\xae\xc7\x81\x3d\xe0\x65\x53\x94\x1d\x00\xcd\xa0\x01\x00\xd1\x45\x3d\x4f\x49\xe8\x01\x00\xb2\xaf\x10\x9e\x9a\x4c\x03\x00\x25\x2b\x8a\x1d\x20\xf5\x81\x00\x58\x67\xf7\x80\x1c\x24\x00\xb8\x60\xae\xe4\xf3\x7e\xaa\xa9\xea\x2a\x70\x0b\x23\x81\x6b\xd6\x85\x83\x53\xc3\x20\x9f\x56\x53\x8d\x02\x87\xed\x46\xb5\x92\xf2\x4e\x19\xd1\x1c\x9c\x0f\x46\x39\xf1\xa1\x3a\x10\xbb\xee\xa3\xa3\x48\x46\xad\x8e\xa0\x1e\x75\xf5\x4d\x81\xd5\x94\xbf\xe3\x9a\x6a\xaf\xc2\xb3\xd4\xd7\x44\x4b\x11\x7c\x5f\x09\x00\x37\x7c\x37\x89\x70\xf5\xb3\x3d\xb5\x0f\x84\xbd\x12\x7b\x62\xb0\xde\x70\xc2\x1f\x88\xc6\xd8\x5b\x4f\x8c\x74\x6c\x6d\xee\xc9\x90\x4f\x50\x13\x7b\x6a\x12\x81\x38\xad\xe2\x0c\x29\x82\x5b\x79\x1f\x21\x58\x4f\xbd\xa0\x44\x04\x8a\x33\x14\x56\xfb\xb4\xe5\x21\xae\xfc\x49\x8f\xbc\xc5\x11\xd3\x51\x8a\x54\x13\x17\xcf\x30\xa4\xd5\x7e\x11\x67\xe2\xd2\xd0\x57\x99\xa9\x43\x20\x34\x3a\x06\xa7\xf4\x32\xb8\x0c\x07\x00\x34\x61\x94\xf5\x14\xc9\x2f\x00\xc0\xad\x8a\x17\x19\x08\x97\x40\x80\x31\xca\x32\x05\x12\x17\xc9\xa0\x78\x9e\x74\xd3\xcd\xe8\x42\x0f\x68\x38\x84\x72\x18\x95\x00\x20\x60\x34\x9f\xb8\x49\xdc\x3a\x1f\x92\x58\x9d\x8f\x11\x5a\x07\x35\x5a\x6e\x75\x3e\x2c\xba\x3a\x1f\x96\x1e\x87\x19\x23\xc0\x0e\x76\x94\x0c\xeb\xfc\x6d\x62\xec\xfb\xe4\x5e\x92\x04\x44\xb9\x59\x6f\x99\x28\xf3\xc1\xc1\x97\x8f\x1a\x7f\xf9\xe4\x21\x98\x8f\x18\x85\xf9\x88\x81\x98\x4f\x18\x8b\xf9\xa4\xe1\x98\xbf\x71\x44\xe6\x77\x1f\x94\x96\x43\x6a\x89\x9b\x1d\x86\x44\x99\x1d\xc6\x88\xb2\x83\x1a\x2d\xca\xec\x30\x2c\xca\xec\x30\x2c\x4a\x0e\x33\x46\x94\x1d\xec\x28\x51\x66\x87\xb7\x89\xb2\xef\x93\x77\x14\xa5\x4f\xce\x01\x10\x59\xb6\xd9\x90\x2c\xdb\x6c\x8c\x2c\x3b\xa8\xd1\xb2\x6c\xb3\x61\x59\xb6\xd9\xb0\x2c\x39\xcc\x18\x59\x76\xb0\xa3\x64\xd9\x66\x6f\x93\x65\xdf\x27\x77\x93\xe5\x3c\xc1\x13\x92\x53\xa3\x74\x9d\x22\x35\x26\x71\x02\x79\x31\x54\x51\x7b\xbb\x47\xad\x48\x7b\x14\xee\x21\x0d\x51\xb1\xdf\xc2\xff\x14\xfd\x32\xa0\xb0\xa9\xfa\x75\x8e\xf2\x08\x87\xf3\xa8\x2e\x8b\x53\x9d\x7e\x87\xae\x85\x81\x76\x8e\x91\xc5\xd1\x3e\xcf\x86\xb6\x89\x43\x45\xab\xdd\xdb\xc6\x62\x56\x21\x50\x55\xab\x38\x5a\x09\xf9\xac\x37\xd3\x01\x49\x01\x50\x9e\x92\xdc\xd2\xc0\x8b\x22\xfa\x07\x8a\x1b\xe0\xc5\xf7\x34\x41\xc5\xf0\xb7\x49\xb6\x78\x0c\xad\x13\x77\x17\xef\xee\x3c\xbd\x49\x6e\xe0\x47\xaf\x4f\xfd\xda\xb8\xb0\x88\xbb\x0c\xe6\xdb\xd5\xc6\x5f\x2e\x3e\x02\xd5\xfc\xb5\xa9\xda\x6a\x3d\x0f\x56\x50\x95\x65\xf4\xba\x00\x6b\x6c\x40\x70\x3f\x7a\xf5\x41\x70\xfa\x41\x8d\x7c\x07\xc1\xb6\x06\xc8\x4f\x21\x19\x1c\x35\x4d\x85\x62\x8d\xc8\x5b\x9a\xba\x02\x42\x45\xdf\x98\xb1\xa9\xef\x7b\xc6\xdc\x0a\x7d\x47\x55\x8d\x0c\x0c\xf2\xd7\x56\x46\x75\x20\x89\x61\x1b\x09\x19\x62\xa8\x01\x46\x42\x2f\x55\x28\x5c\x88\xdb\xdd\xbd\xa8\xe2\x03\x5e\x30\x04\xf4\xb6\x28\x05\x05\x2d\x04\x91\xa8\xaf\x04\x3e\xf4\xe6\x76\x64\x4d\xed\xb4\x00\x5c\xe7\xca\x97\x33\x9a\x41\xe3\x22\x7f\x64\x23\x65\x02\x56\x30\x43\x83\x02\xa4\x63\x46\xa7\xe4\xa2\x65\x7b\x18\xc2\x2a\x81\xe8\x38\xe9\x47\x93\x0b\xf4\x4d\xd0\x82\x59\x05\xd0\xf1\xb2\xac\x20\x17\x30\x93\x88\x05\xb3\x94\x53\xc4\x46\x20\x24\x2b\x0b\x0a\xfe\x24\xad\x9b\x2a\x8d\xce\x0d\x1a\x24\x41\xeb\x8b\x14\x84\x1d\x16\xaa\x10\x85\xa3\x7d\x02\x62\x38\x79\x8a\x09\xa5\x24\x3d\x8a\x50\x16\x9f\x86\x0e\x99\xf9\x53\xc5\x26\x7e\x01\x33\xa0\xd4\x65\x26\x22\xec\x3e\x97\x29\x28\xf5\xcf\x65\x12\x52\xf3\xd7\x34\xde\x8f\x15\x6a\xe2\xa3\xde\x93\xa4\xd8\x80\x54\x7b\xcb\x71\x1a\x86\x18\x09\x1a\xc0\x71\x26\x55\xb3\xca\x08\x1c\x63\x3d\x62\x48\x52\xb6\x61\x26\x23\x55\xa5\xd5\xe3\x35\x48\xcc\x3c\xce\x64\xc4\xda\x28\xeb\x31\xeb\x43\x4d\x46\x6d\x1c\x68\x32\x05\x75\x98\xf5\x04\xc0\xb1\x06\xd1\x30\x8d\xb4\x5e\x9a\x8a\x8e\x88\xf2\x84\xf5\xa4\x23\x60\xd2\x94\x1a\x65\x7b\xb2\xff\xba\xc7\x4a\xd3\xdd\x13\xf5\xc3\x2f\x34\x9c\xb8\x8a\xf2\x46\xc2\xa6\x28\x9d\x80\x0e\xd6\x3a\x82\xcf\xa6\x72\x04\xab\xa4\x6f\x02\x4e\x48\xe1\x7a\x8c\xa0\xb6\x11\x7c\xaa\xaa\x09\x28\x0d\xba\x46\xb0\x9a\x14\x8d\xe0\xd4\x6d\x83\x80\xd5\x68\x20\x08\x5e\xb3\x7d\x60\x7d\xaa\x88\x5e\xea\x55\x58\xf6\x04\xaf\x2e\x78\xf3\xca\x23\x95\x41\x7e\xb7\x30\xaf\xce\xef\x1f\xe9\x51\xf6\xde\x35\xd8\xeb\xd8\xfe\x0d\xe2\xbd\x3a\x7f\x7b\xc8\x47\x96\x8b\xef\x12\xf5\x31\x6e\xde\x3d\xf0\xcb\xdf\x31\xf6\xab\xf3\x77\x09\xff\xb0\x52\xbc\x53\x04\x58\xe7\xef\x1f\x04\xd6\xf9\x7b\xc7\x81\x9a\x4c\xef\x11\x0a\xaa\xc2\x7c\x6b\x34\x08\x48\xf1\xcd\x01\x21\x16\xdf\x3b\xc5\x84\xf9\x7b\x85\x85\x9a\xb0\xee\x19\x19\xaa\x42\xbb\x57\x70\x08\x08\xef\x6e\xf1\x21\x34\x06\xef\x1e\x22\x02\x83\xf0\x3d\xa2\x44\x40\x6b\xee\x15\x28\xe2\x16\xdc\x37\x56\xd4\x34\xf1\x4e\xe1\xa2\xaa\x84\x77\x88\x18\x01\xfd\xbb\x47\xd0\x08\xda\x8f\xbb\xc5\x8d\x80\x32\xdc\x1e\x3a\x5a\x3e\x75\x12\xcc\x79\x72\xb7\xd8\x31\x4f\xee\x1f\x3b\x52\xf6\xde\x35\x76\xec\xd8\xfe\x0d\x62\xc7\x3c\x79\x7b\xec\x48\xbe\x4f\xdf\x25\x76\x64\xdc\xbc\x77\xec\x98\x27\xef\x18\x3b\xe6\xc9\xbb\xc4\x8e\x58\x29\xde\x29\x76\xcc\x93\xf7\x8f\x1d\xf3\xe4\x9d\x63\x47\x5d\xa6\xf7\x88\x1d\x55\x61\xbe\x35\x76\x04\xa4\xf8\xe6\xd8\x11\x8b\xef\x7d\x62\x47\xd2\xa7\xef\x11\x3b\xea\xc2\xba\x67\xec\xa8\x0a\xed\x5e\xb1\x23\x20\xbc\xbb\xc5\x8e\xd0\x18\xbc\x7b\xec\x08\x0c\xc2\x77\x88\x1d\x21\xad\xb9\x57\xec\x88\x5b\x70\xd7\xd8\x51\xd7\xc4\x3b\xc5\x8e\xaa\x12\xde\x21\x76\x04\xf4\xef\x1e\xb1\x23\x68\x3f\xee\x15\x3b\x42\xca\x70\xd7\xd8\x91\xef\xad\xa2\x6a\x76\xb8\x5b\xec\x98\x1d\xee\x1f\x3b\x52\xf6\xde\x35\x76\xec\xd8\xfe\x0d\x62\xc7\xec\xf0\xf6\xd8\x91\x6c\x88\xbb\x4b\xec\xc8\xb8\x79\xef\xd8\x31\x3b\xbc\x63\xec\x98\x1d\xde\x25\x76\xc4\x4a\xf1\x4e\xb1\x63\x76\x78\xff\xd8\x31\x3b\xbc\x73\xec\xa8\xcb\xf4\x1e\xb1\xa3\x2a\xcc\xb7\xc6\x8e\x80\x14\xdf\x1c\x3b\x62\xf1\xbd\x4f\xec\x48\xfa\xf4\x3d\x62\x47\x5d\x58\xf7\x8c\x1d\x55\xa1\xdd\x2b\x76\x04\x84\x77\xb7\xd8\x11\x1a\x83\x77\x8f\x1d\x81\x41\xf8\x0e\xb1\x23\xa4\x35\xf7\x8a\x1d\x71\x0b\xee\x1a\x3b\xea\x9a\x78\xa7\xd8\x51\x55\xc2\x3b\xc4\x8e\x80\xfe\xdd\x23\x76\x04\xed\xc7\xbd\x62\x47\x48\x19\xee\x1a\x3b\x76\x9b\xb9\x09\xea\x36\xbb\x5b\xf0\xd8\x66\xf7\x0f\x1e\x29\x7b\xef\x1a\x3c\x76\x6c\xff\x06\xc1\x63\x9b\xbd\x3d\x78\x24\x3b\xf0\xef\x12\x3c\x32\x6e\xde\x3b\x78\x6c\xb3\x77\x0c\x1e\xdb\xec\x5d\x82\x47\xac\x14\xef\x14\x3c\xb6\xd9\xfb\x07\x8f\x6d\xf6\xce\xc1\xa3\x2e\xd3\x7b\x04\x8f\xaa\x30\xdf\x1a\x3c\x02\x52\x7c\x73\xf0\x88\xc5\xf7\x3e\xc1\x23\xe9\xd3\xf7\x08\x1e\x75\x61\xdd\x33\x78\x54\x85\x76\xaf\xe0\x11\x10\xde\xdd\x82\x47\x68\x0c\xde\x3d\x78\x04\x06\xe1\x3b\x04\x8f\x90\xd6\xdc\x2b\x78\xc4\x2d\xb8\x6b\xf0\xa8\x6b\xe2\x9d\x82\x47\x55\x09\xef\x10\x3c\x02\xfa\x77\x8f\xe0\x11\xb4\x1f\xf7\x0a\x1e\x21\x65\x78\x43\xf0\x38\x27\x57\x19\xd3\x53\xfe\xf4\x56\x63\xfc\x28\xc7\x11\x18\x80\x66\x34\x10\xee\x3d\xd6\x41\xc8\x49\x2a\x0a\x01\x1f\xde\x02\x77\x55\xe2\x9a\x75\x3e\xcc\x40\x9d\x8f\xe1\x81\x9f\x0e\x07\xd9\xb0\x7e\xa1\xc7\xb5\xf3\x64\x98\x8f\x3c\x19\xc3\x07\x3f\xda\x3c\x96\x8f\x7e\xb5\x97\x48\xe3\x30\xcc\x47\x76\x18\xc3\x07\x3f\x97\x3b\x96\x0f\x61\xe6\x80\xab\xb7\xd9\x30\x23\x38\x7e\x1f\x66\x84\x1f\x2a\x85\x19\x99\xf3\x33\x65\xd8\x02\x34\x69\xdc\x9f\x31\xa3\xbf\x45\x7c\x1d\x28\x3f\x81\xa7\x9f\xc9\x03\xc1\xf9\x69\x35\xfd\xfc\x1a\x08\x4e\x6e\xe7\x55\x2e\xeb\x05\x01\xeb\x26\x8d\xbf\x09\xf7\xba\xf2\x9c\xa1\xb4\x5c\x18\x88\x42\x9b\xe4\x37\xd7\x39\xc1\x4e\xaf\x3a\xb4\xdd\x0e\xac\x5d\x96\xb5\xf0\x78\x5d\x7e\xd5\x9c\x5c\x7d\xf8\x5a\xe1\x85\x27\xa5\x59\x35\xb4\x82\xa6\x56\x55\x1a\xf0\xf8\x78\x99\xd3\x27\x99\x73\xb9\xaa\xda\x6c\xd6\xa4\x9e\x83\xc0\xbb\x5e\xe7\x75\xe5\x16\xa7\xec\x15\x38\x5b\xc8\xf4\xb2\x4f\xd8\xe7\x0b\xd7\x95\x69\x47\x2b\x9f\xc9\x8d\x52\x78\xaa\xc6\xd2\xaa\x7b\x8f\xca\x7d\x56\x78\x4a\xd3\x25\x8a\xc6\xd0\x6e\x19\x36\xc7\x5d\x7a\xaa\x51\xf3\x69\xe5\x7d\x7c\x7c\x06\x0b\xfb\x53\x8b\x8c\x55\x97\xe4\x63\x0a\xa3\x0c\xed\xd8\xbd\xf3\xc0\x1b\xf2\xa4\x2a\xb3\x78\x65\x36\x6b\x13\x79\xee\x9a\x42\x12\x5b\x67\x88\xb6\x85\xa6\x2d\xd4\xaf\xe4\xd2\x9b\x40\x72\x9b\xca\x3f\xaf\xf3\x17\x37\x58\x5d\x58\x46\xd1\x95\x94\x53\xe5\xc5\x5d\x79\x17\x7e\x61\xad\xf2\x66\xc3\xeb\x6c\xd4\x3a\xbe\xc7\x2b\xf9\x9e\x5c\xeb\x88\x29\xf1\x84\xa5\x2b\xe5\xd5\xca\xbb\x74\x57\xec\x2a\xaf\x36\x5d\xad\x8d\x5a\x0b\x13\x13\x8e\x8e\x8a\x2f\x73\xca\x4a\x7f\x39\x9c\x06\x70\xec\x00\x4c\x28\x5c\xef\xc2\xaf\xc3\x95\xca\x1b\xd7\x9b\xcd\xf3\xd7\xee\xb5\x9e\x83\x2a\xaf\x08\x48\xdb\x83\x00\xf9\xa7\xf2\x48\xc5\x03\xa5\x9e\xca\x33\x15\x95\x9e\x77\x2a\x77\x7d\xce\xa9\x9e\x47\x27\x6f\x5c\x9f\x90\xf1\xa5\xfb\x5e\x74\xb8\x8a\xc0\xb5\x3d\x9c\x78\x87\xb2\xc2\xb8\x82\x91\xdf\xf4\xa5\x83\x66\x2a\x52\xe1\x2e\x67\xb9\x09\x41\xd7\x04\xa0\x05\x01\xa1\x17\x48\x2d\x00\x1a\x10\x10\x5a\x81\xd2\x00\x80\x7f\x05\x1f\xe7\x1f\x60\x5f\x41\x49\xd9\xd7\xb9\x5f\x70\xee\x7d\x9d\xf9\x05\x21\xb6\x10\x99\xd7\xa0\x2a\x02\xd5\xf6\x50\x2c\x99\xa5\xce\xba\x82\x8d\xa7\x69\xd5\x39\x57\x10\xd2\x3c\x98\x1a\xe3\xcb\x8e\x71\xa8\xdf\x97\x84\xd8\x52\x62\x1d\xea\xf8\x25\xa1\xb5\x54\x98\x87\x7a\x5e\xc1\xc8\xd9\x87\xba\x5e\x41\x4a\x1b\x00\xf4\xfd\x8a\x37\x61\xa1\x37\x60\x45\xc8\xad\xc4\x06\x68\x50\x15\x81\x6a\x7b\x28\x96\xe8\x55\x67\x5e\xc1\xc6\x98\xd7\x00\x33\x15\x21\x4d\x14\xab\x80\x95\xae\xd7\xdf\x4b\x2a\xbd\x20\x06\xa6\x7c\xed\xdf\xeb\x16\xa6\x24\x16\xa6\x6c\x05\x18\xc0\xc4\x94\x91\x86\x09\xb2\x31\x65\xa6\x21\xd3\x8d\x4c\xe9\xfa\xfd\xcd\x16\xda\xf8\x2d\x89\x95\x29\x5f\x7b\x20\x83\x99\x29\x89\x99\x29\x5b\x01\xd0\x64\x67\xca\x48\xc3\x69\x34\x34\x65\xa6\xa1\x35\x58\x9a\xd2\x0d\xe4\x1b\x3a\x94\x66\x04\x84\x64\x20\x37\x03\x68\x45\x40\xc8\x05\x6a\x2b\x80\x46\xa8\x18\x4d\xd6\xa6\xcc\x34\xa4\xb0\xb9\x29\xdd\x45\xd7\x04\x75\x44\x97\xc4\xde\x94\xaf\x3d\x08\x68\x70\x4a\x62\x70\xca\x56\x00\x83\x2d\x4e\x19\x69\xf8\x0c\x26\xa7\xcc\x34\x94\xa0\xcd\x29\xdd\x65\xcf\x3d\x24\x81\x25\xa1\xb7\x94\xf9\x87\x44\xb0\x24\xe4\x96\x6a\x0b\x20\x19\xa8\x38\x8d\x76\xa7\xcc\x34\xb4\x06\xc3\x53\xba\xab\xae\x1d\xda\xd8\x26\x96\xa7\x7c\xed\x41\x40\xd3\x53\x12\xd3\x53\xb6\x02\x18\x6c\x7b\xca\x48\xc3\x67\x30\x3e\x65\xa6\xa1\x04\xad\x0f\x3b\x8c\xc0\x2c\xa7\xba\x60\x93\x37\xe4\x35\x31\x77\x02\x1c\x69\x84\x06\x5b\x71\xd8\x56\x82\xad\xba\xd0\x55\xb1\xa2\x20\x66\xd6\x1c\x0d\x3c\x83\x91\x93\x36\x29\xc0\xe6\x65\x84\x1c\x4f\xfc\x8d\xd1\x1c\x7e\x47\xf8\x11\x80\xc0\x98\x8e\x01\xb6\x12\x20\x1c\xd9\x81\x38\x0d\xf1\x1d\x88\x16\x8a\xf2\xea\xa1\x40\x0f\x03\x70\xaa\xc3\xe1\x1e\x83\x6e\x25\x68\x4b\xd0\x07\x62\xb7\x85\x7e\x20\x01\x63\x00\x58\x0f\xc4\x80\xf8\x3d\x27\x3f\x18\x09\x32\xe0\x56\x02\x36\xc7\x83\x20\x6e\x4b\x54\x08\xa2\x37\xc5\x86\xb5\x3d\x3c\xc4\xaf\x39\xed\xa1\x20\x91\xc1\xb6\x12\xac\x31\x54\x04\x31\x9b\x03\x46\x10\xb9\x21\x6c\xac\x87\x22\x47\x0c\xc0\x69\x0f\xc7\x8f\x0c\xba\x95\xa0\x2d\x51\x24\x88\xdd\x16\x4b\x82\x04\x8c\x11\x65\x6d\x0f\x2a\xf1\x6b\x4e\x7d\x28\xb4\x64\xb0\xad\x04\x6b\x0c\x30\x41\xcc\xe6\x30\x13\x44\x6e\x08\x36\x89\x71\x31\xc5\x9b\xd4\x04\x95\xaf\x12\x14\x18\x75\x32\xc8\x56\x86\x84\x63\x4f\x18\xab\x21\x02\x85\x11\x43\x71\x28\xb1\x26\xd6\x50\x94\x1a\x9e\xf2\x55\x02\x35\x07\xa4\x0c\xbc\x95\xc1\x2d\x61\x29\x8c\xdf\x16\x9c\xc2\x24\x8c\x21\x2a\x31\x2b\xb6\x28\x95\x1a\xa0\xf2\x55\x82\x34\xc6\xaa\x0c\xba\x95\xa1\xcd\x11\x2b\x8c\xdd\x12\xb7\xc2\x04\x4c\xd1\x2b\xb1\x2f\x96\x00\x96\x1a\xa2\xf2\x55\x02\x34\x85\xb1\x0c\xb8\x95\x81\x8d\xc1\x2c\x8c\xdb\x1c\xd2\xc2\xe8\x0d\x81\x2d\x31\x2e\xd6\xd8\x96\xda\xa1\xf2\x55\x02\x35\x47\xb8\x0c\xbc\x95\xc1\x2d\x71\x2e\x8c\xdf\x16\xed\xc2\x24\x8c\x31\x2f\xb1\x34\x96\xb0\x97\x9a\xa4\xf2\x55\x02\x34\x05\xbf\x0c\xb8\x95\x81\x8d\x21\x30\x8c\xdb\x1c\x08\xc3\xe8\x0d\xe1\x70\x3d\x18\x11\x33\x08\x6e\x9f\x47\xc4\xc5\x7d\x8d\x56\xad\x61\x8c\x8e\x2d\x54\xcc\x31\xb2\x85\x10\x14\x29\x5b\xbe\x74\xe5\x6e\x9e\x98\x43\x65\xfc\x8e\x70\x26\x00\x81\xa1\x32\x03\x6c\x25\x40\x38\x54\x06\x71\x1a\x42\x65\x10\x2d\x14\x2a\xe7\xc9\x40\xa8\x8c\x01\x38\xd5\xe1\x50\x99\x41\xb7\x12\xb4\x25\x54\x06\xb1\xdb\x42\x65\x90\x80\x31\x54\xce\x13\x7b\xa8\x8c\xdf\x73\xf2\x83\xa1\x32\x03\x6e\x25\x60\x73\xa8\x0c\xe2\xb6\x84\xca\x20\x7a\x53\xa8\x9c\x27\xd6\x50\x19\xbf\xe6\xb4\x87\x42\x65\x06\xdb\x4a\xb0\xc6\x50\x19\xc4\x6c\x0e\x95\x41\xe4\x86\x50\x39\x4f\x06\x42\x65\x0c\xc0\x69\x0f\x87\xca\x0c\xba\x95\xa0\x2d\xa1\x32\x88\xdd\x16\x2a\x83\x04\x8c\xa1\x72\x9e\x58\x43\x65\xfc\x9a\x53\x1f\x0a\x95\x19\x6c\x2b\xc1\x1a\x43\x65\x10\xb3\x39\x54\x06\x91\x1b\x42\x65\x62\x5c\x4c\xa1\x32\x35\x41\xe5\xab\x04\x05\x86\xca\x0c\xb2\x95\x21\xe1\x50\x19\xc6\x6a\x08\x95\x61\xc4\x50\xa8\x4c\xac\x89\x35\x54\xa6\x86\xa7\x7c\x95\x40\xcd\xa1\x32\x03\x6f\x65\x70\x4b\xa8\x0c\xe3\xb7\x85\xca\x30\x09\x63\xa8\x4c\xcc\x8a\x2d\x54\xa6\x06\xa8\x7c\x95\x20\x8d\xa1\x32\x83\x6e\x65\x68\x73\xa8\x0c\x63\xb7\x84\xca\x30\x01\x53\xa8\x4c\xec\x8b\x25\x54\xa6\x86\xa8\x7c\x95\x00\x4d\xa1\x32\x03\x6e\x65\x60\x63\xa8\x0c\xe3\x36\x87\xca\x30\x7a\x43\xa8\x4c\x8c\x8b\x35\x54\xa6\x76\xa8\x7c\x95\x40\xcd\xa1\x32\x03\x6f\x65\x70\x4b\xa8\x0c\xe3\xb7\x85\xca\x30\x09\x63\xa8\x4c\x2c\x8d\x25\x54\xa6\x26\xa9\x7c\x95\x00\x4d\xa1\x32\x03\x6e\x65\x60\x63\xa8\x0c\xe3\x36\x87\xca\x30\x7a\x43\xa8\xcc\x4f\x23\x9b\x43\x65\x06\xc1\xed\xf3\x88\x50\xb9\xaf\xd1\xaa\x35\x8c\xa1\xb2\x85\x8a\x39\x54\xb6\x10\x1a\x19\x2a\xf3\xcd\x58\xb9\x9b\x1d\xcc\xa1\x32\x7e\x47\x38\x13\x80\xc0\x50\x99\x01\xb6\x12\x20\x1c\x2a\x83\x38\x0d\xa1\x32\x88\x16\x0a\x95\xb3\xc3\x40\xa8\x8c\x01\x38\xd5\xe1\x50\x99\x41\xb7\x12\xb4\x25\x54\x06\xb1\xdb\x42\x65\x90\x80\x31\x54\xce\x0e\xf6\x50\x19\xbf\xe7\xe4\x07\x43\x65\x06\xdc\x4a\xc0\xe6\x50\x19\xc4\x6d\x09\x95\x41\xf4\xa6\x50\x39\x3b\x58\x43\x65\xfc\x9a\xd3\x1e\x0a\x95\x19\x6c\x2b\xc1\x1a\x43\x65\x10\xb3\x39\x54\x06\x91\x1b\x42\xe5\xec\x30\x10\x2a\x63\x00\x4e\x7b\x38\x54\x66\xd0\xad\x04\x6d\x09\x95\x41\xec\xb6\x50\x19\x24\x60\x0c\x95\xb3\x83\x35\x54\xc6\xaf\x39\xf5\xa1\x50\x99\xc1\xb6\x12\xac\x31\x54\x06\x31\x9b\x43\x65\x10\xb9\x21\x54\x26\xc6\xc5\x14\x2a\x53\x13\x54\xbe\x4a\x50\x60\xa8\xcc\x20\x5b\x19\x12\x0e\x95\x61\xac\x86\x50\x19\x46\x0c\x85\xca\xc4\x9a\x58\x43\x65\x6a\x78\xca\x57\x09\xd4\x1c\x2a\x33\xf0\x56\x06\xb7\x84\xca\x30\x7e\x5b\xa8\x0c\x93\x30\x86\xca\xc4\xac\xd8\x42\x65\x6a\x80\xca\x57\x09\xd2\x18\x2a\x33\xe8\x56\x86\x36\x87\xca\x30\x76\x4b\xa8\x0c\x13\x30\x85\xca\xc4\xbe\x58\x42\x65\x6a\x88\xca\x57\x09\xd0\x14\x2a\x33\xe0\x56\x06\x36\x86\xca\x30\x6e\x73\xa8\x0c\xa3\x37\x84\xca\xc4\xb8\x58\x43\x65\x6a\x87\xca\x57\x09\xd4\x1c\x2a\x33\xf0\x56\x06\xb7\x84\xca\x30\x7e\x5b\xa8\x0c\x93\x30\x86\xca\xc4\xd2\x58\x42\x65\x6a\x92\xca\x57\x09\xd0\x14\x2a\x33\xe0\x56\x06\x36\x86\xca\x30\x6e\x73\xa8\x0c\xa3\x37\x84\xca\xfc\xf0\xb5\x39\x54\x66\x10\xdc\x3e\x8f\x08\x95\xfb\x1a\xad\x5a\xc3\x18\x2a\x5b\xa8\x98\x43\x65\x0b\xa1\x91\xa1\x72\x77\x5e\x20\x77\xdb\xcc\x1c\x2b\xb7\x19\x8b\x6b\x05\x20\x30\x56\x6e\xf9\x6e\x58\x11\x10\x8e\x95\x41\x9c\x86\x58\x19\x44\x0b\xc5\xca\x6d\x36\x10\x2b\xb7\x19\x8b\x66\x05\x48\x73\xac\xdc\xf2\xed\xb1\x22\xb4\x25\x56\x06\xb1\xdb\x62\x65\x90\x80\x31\x56\x6e\x33\x7b\xac\xdc\x66\x2c\x9e\x15\x00\x8d\xb1\x72\xcb\xf7\xce\x8a\xc0\xe6\x58\x19\xc4\x6d\x89\x95\x41\xf4\xa6\x58\xb9\xcd\xac\xb1\x72\x9b\xb1\x88\x56\x80\x33\xc5\xca\x2d\xdf\x58\x2b\xc2\x1a\x63\x65\x10\xb3\x39\x56\x06\x91\x1b\x62\xe5\x36\x1b\x88\x95\xdb\x8c\x45\xb3\x02\xa4\x39\x56\x6e\xf9\x7e\x5b\x11\xda\x12\x2b\x83\xd8\x6d\xb1\x32\x48\xc0\x18\x2b\xb7\x99\x35\x56\x6e\x33\x16\xd1\x0a\x70\xa6\x58\xb9\xe5\xdb\x71\x45\x58\x63\xac\x0c\x62\x36\xc7\xca\x20\x72\x43\xac\x4c\x8c\x8b\x29\x56\xa6\x26\xa8\x7c\x95\xa0\xc0\x58\xb9\xe5\xbb\x75\x25\x48\x38\x56\x86\xb1\x1a\x62\x65\x18\x31\x14\x2b\x13\x6b\x62\x8d\x95\xa9\xe1\x29\x5f\x25\x50\x73\xac\xdc\xf2\xed\xbb\x12\xb8\x25\x56\x86\xf1\xdb\x62\x65\x98\x84\x31\x56\x26\x66\xc5\x16\x2b\x53\x03\x54\xbe\x4a\x90\xc6\x58\xb9\xe5\x7b\x7b\x25\x68\x73\xac\x0c\x63\xb7\xc4\xca\x30\x01\x53\xac\x4c\xec\x8b\x25\x56\xa6\x86\xa8\x7c\x95\x00\x4d\xb1\x72\xcb\x37\xfe\x4a\xc0\xc6\x58\x19\xc6\x6d\x8e\x95\x61\xf4\x86\x58\x99\x18\x17\x6b\xac\x4c\xed\x50\xf9\x2a\x81\x9a\x63\xe5\x96\xef\x07\x96\xc0\x2d\xb1\x32\x8c\xdf\x16\x2b\xc3\x24\x8c\xb1\x32\xb1\x34\x96\x58\x99\x9a\xa4\xf2\x55\x02\x34\xc5\xca\x2d\xdf\x2e\x2c\x01\x1b\x63\x65\x18\xb7\x39\x56\x86\xd1\x1b\x62\x65\x7e\xd6\xdc\x1c\x2b\xb7\x59\x1f\xc5\xca\xd0\xa6\x58\xb9\x15\xf6\x0f\x2b\x35\x8c\xb1\xb2\x85\x8a\x39\x56\xb6\x10\x02\x63\xe5\x79\x83\xda\xc6\x65\x79\x06\x2e\xe4\x07\x3d\xa1\xad\xa5\x1e\x60\xa0\x2c\xe3\x8b\x7e\x5a\x51\x83\x6c\xaa\xf3\x29\x0e\x1b\x74\x51\x0f\x3f\x92\xb7\x5d\x21\xca\xb2\xb4\xac\xd3\x1a\x38\x00\xc9\x10\x91\xb3\xbd\x02\x6b\xea\x01\x5f\xf2\x8a\x1e\xee\x15\xa0\xb4\x13\xbe\xe4\x1d\x3b\x48\x2f\xc0\x69\x67\xe4\xcd\xfb\xb7\x49\x2d\x7e\x0a\x7c\x88\xa1\xee\x24\xf8\x20\x4f\x7d\x52\x7a\x1b\x5b\x96\xcd\x32\xa4\x1a\x3f\x15\x3e\xc4\x57\x77\x32\x7c\x90\xaf\x3e\xe1\xe9\x44\xbe\xf8\x97\x09\x2a\xbd\xc3\x38\xbe\xba\x93\xe2\x83\x7c\xf5\xc9\xb4\x26\xf2\xd5\x4d\x03\x49\x3d\x7e\x6a\x7c\x88\xb1\xee\xe4\xf8\x20\x63\x7d\xa2\x06\x2b\x63\xac\x15\xc5\x0b\xaa\xe2\xb0\x46\x17\x36\x5a\xc2\x53\xbd\x2f\xaa\x7c\xd7\xbd\xd0\xf0\x9f\xcb\x12\xae\xd2\xbd\xd0\xf5\x3d\x2c\xd3\x26\xcc\xd2\x7f\x6a\x75\xfa\x37\x62\xa5\x7d\x71\x6a\xdc\x17\x72\x12\xd5\xcd\xe8\x79\xf9\xbe\x64\xb7\xf0\x3c\x13\x30\x3d\xef\x2b\x41\x2f\xcd\xd0\x51\x91\x25\x12\xec\x06\x80\x25\xec\xc5\x14\xac\x6e\x5e\x33\xb4\xa3\x25\x5a\x23\x89\xe5\xb8\xc4\x45\x56\x54\xbb\x0f\xfb\xfd\x5e\x03\x28\xab\x34\x0f\xab\x57\x0e\xe2\x79\x9b\x48\x82\x0a\x25\x30\x7a\x1e\x7a\xa6\x14\x1e\xb1\xc5\xea\x31\xac\x83\x58\x67\xa4\x46\x71\x71\x4a\x04\x4a\xdb\xf5\x16\x3d\xad\x75\x4a\x1d\xa0\x4c\xab\x2f\x96\xa8\xad\xe3\xcd\x6a\x93\xe8\xd4\xce\x71\x8c\xea\x9a\x43\x05\xdb\x70\xb3\x5c\x01\xb4\x28\x98\x42\x89\x15\x4a\x74\x7c\xb4\x41\x8b\xa5\x46\x27\x3d\xed\x8b\x0e\x64\x13\x06\xd1\x56\x27\x82\x61\x64\x0a\xa4\x44\x46\xef\x6f\xc2\x6d\xa4\x4b\x2f\xac\x4e\xe9\xe9\xd0\xcb\x2f\xf6\xbd\x8d\x4e\x81\x81\xc9\x44\x78\xa1\x44\x27\x59\x3c\x21\x59\x9d\x08\x6c\x12\x9e\x0e\x02\x50\xbc\x58\x41\xbd\x45\xa1\x64\x2a\xac\x4c\x22\x12\x25\x81\xbf\xd0\x89\xd0\x31\xc3\x9b\xb2\xdd\x3f\xed\x43\x9d\x06\x01\x92\x49\xd0\x22\xb9\x19\x21\xf2\xd0\x0a\x68\x46\xf5\x8d\x83\x2c\x96\x8b\x70\xe9\x41\x8d\xa8\xbe\xa9\x4d\xa8\xbe\x29\xd2\x48\x02\x3f\xd0\x85\x9d\x9f\x1b\x94\x18\xd5\x97\xc2\x1c\xd3\x04\x91\x61\xb9\xf3\x3e\x7b\x4e\xf8\x4c\xa1\x89\x69\x29\xc3\x0a\x9d\x1a\xea\xe2\xeb\x63\x98\x14\x2f\xf4\xc0\x7f\x14\xc6\xdf\x0e\x24\x81\x90\xab\x43\xf7\x59\x0b\x58\x4e\x81\x0b\xf9\x9b\x66\x69\xf3\xca\xd3\x0c\x88\x4c\xa4\x27\x00\x8e\x06\x17\x02\xd8\xff\xf8\xfc\x87\x0f\x4e\x5d\x9c\xab\x18\xfd\x12\x96\x65\x7a\x3a\xfc\xd7\x7f\xfe\xed\x4b\x54\x14\x4d\xdd\x54\x61\x39\xcf\xd3\xd3\x3c\xae\xeb\x79\x1e\x96\xce\x1f\x3e\xff\xff\x01\x00\x00\xff\xff\xc4\xaa\x95\x3d\x6f\xf1\x01\x00") - -func pagesAssetsStylesBootstrap400Beta2MinCssBytes() ([]byte, error) { - return bindataRead( - _pagesAssetsStylesBootstrap400Beta2MinCss, - "pages/assets/styles/bootstrap-4.0.0-beta.2.min.css", - ) -} - -func pagesAssetsStylesBootstrap400Beta2MinCss() (*asset, error) { - bytes, err := pagesAssetsStylesBootstrap400Beta2MinCssBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "pages/assets/styles/bootstrap-4.0.0-beta.2.min.css", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _pagesAssetsStylesBootstrapTheme311MinCss = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe4\x5a\x4d\x6f\xdb\x38\x13\xbe\xe7\x57\xe8\x45\xf1\xa2\x4d\x61\xc9\xfa\xb0\x63\xcb\x41\x73\xd8\x6e\xb1\x08\xd0\xee\x65\x73\xd8\x2b\xbf\xe4\x08\xb5\x25\x81\xa2\x13\x17\x81\xff\xfb\x82\xa4\x64\x4b\x36\x69\xda\x94\xe5\x1c\x1a\x21\x68\x45\x51\xcf\x8c\x1e\x3e\x24\x67\x86\x19\x7e\xfe\xdf\x8d\xf3\xd9\xf9\x23\xcf\x59\xc9\x28\x28\x9c\x97\xc8\x0b\xbc\xc0\xf9\xf4\xcc\x58\x31\x1b\x0e\xe7\x84\xc1\xfa\x99\x87\xf2\xe5\x2d\xef\xfd\x35\x2f\x7e\xd1\x74\xfe\xcc\x9c\xd0\x0f\x02\x37\xf4\x83\x91\xf3\xf4\x9a\x32\x46\xe8\xc0\x79\xcc\x90\xc7\x3b\x7d\x4f\x11\xc9\x4a\x82\x9d\x55\x86\x09\x75\x7e\x3c\x3e\x49\xd0\x92\xa3\xa6\xec\x79\x05\x39\xde\x90\xbd\xc2\x72\xb8\x35\x31\x84\x8b\x1c\x0e\x97\xa0\x64\x84\x0e\xbf\x3f\x7e\xfd\xf6\xf7\x3f\xdf\xb8\xc9\xe1\xcd\x8d\x07\x59\xe6\x62\x92\x80\xd5\x82\x0d\xc4\x4d\x41\xd3\x25\xa0\xbf\xe4\x4d\xb9\x42\x88\x94\xa5\xbc\x49\xb3\x24\x97\xff\x7b\x05\x34\x4b\xb3\xb9\xbc\xc1\x20\x9b\x13\xfa\xc6\xc8\x9a\xb9\xe5\x33\xc0\xf9\xeb\xcc\x77\xdc\xa0\x58\x3b\xbe\x43\xe7\x10\x7c\xf2\x07\xfc\xf2\xc2\xdb\x7b\xf7\x95\xc0\x9f\x29\x73\x61\xbe\xae\xbb\xa6\x59\x49\x98\xe3\x3b\x8d\xfe\xe1\x78\x3c\xa8\x7f\xbd\x60\x7c\x3b\x90\x4f\xf9\x6f\x13\xcf\x9f\x8c\x6f\xef\x2f\x86\xb4\x69\x32\x31\x03\x88\xa5\x2f\xa4\x45\x48\xab\xad\xe2\xa5\xd5\xc6\xe9\x69\x35\x54\x2c\xb5\xda\x24\x59\xed\x26\x69\xd3\x53\xd8\xf4\x14\x36\xbd\x7d\x9b\x9e\xc2\xa6\x77\x68\xb3\x6a\x7a\x3b\x32\x06\x51\xb1\x76\xc6\x7b\xdc\x04\xa1\x9a\x65\x5d\x5f\xc1\x63\xf3\xfb\x6a\xbb\x10\xa0\x9f\x73\x9a\xaf\x32\xec\xa6\x4b\x30\x27\xb3\x2c\xcf\x48\x8b\xf5\xc3\x2e\xb5\xaf\x8b\x34\x23\x80\xba\x73\x0a\x70\x4a\x32\xf6\x89\xe5\xc5\xe0\x43\x92\x24\x8e\x3f\xf8\x40\x7c\x7e\x39\x81\xef\xff\xff\xf6\xfe\x00\xe1\xf0\x4d\x07\xe6\x8c\xe5\x4b\xf5\xfb\x49\xba\x60\x84\xce\x0a\x9a\xcf\x53\x3c\xfb\xf3\xdf\x47\x0e\xf2\x44\x41\x56\x26\x39\x5d\x7a\x3f\x52\x44\xf3\x32\x4f\x98\xb7\x05\x2c\x19\xa0\xec\x6b\xbe\xc8\x69\xc9\xe8\x97\x8f\x1c\x55\xfc\x7c\x1c\x38\x24\xc3\xad\x07\xd2\xd2\xc7\x81\xf3\x57\xf5\xf2\xd3\xaf\x82\x7c\xf1\x6d\xac\x92\x0c\xc0\x05\xc1\x5f\x12\xb0\x28\x49\xeb\xb3\x29\x29\x08\x60\x33\xf9\x8f\xbb\xbe\x87\x39\xc5\x84\xba\x88\x3b\x32\xfb\x80\x21\xbf\xee\xdb\x73\x55\x4e\x18\xee\xf9\x5e\x6f\x84\x50\x7b\x5a\x3c\xe7\x2f\x84\xb6\x54\x3b\x4b\x72\xb4\x2a\x9b\x23\x57\xbd\x2b\x3f\xb6\xe9\x59\x91\x97\x29\x4b\xf3\x4c\xac\x0e\xe3\x62\xad\x9f\x71\xed\x19\x71\x04\x5c\xf1\x6d\x9b\xe6\xfc\x39\x53\x51\xa3\x70\x0a\x11\xe0\xa2\x08\xf1\x1d\x02\xa1\x85\xa8\x34\x10\x97\xd0\x95\x84\x56\xe8\x4a\x5a\x7a\x57\x5d\x85\xf0\xee\x2e\x06\x2d\xee\x9b\x62\xa9\x9b\x74\x62\x91\x5f\x60\x16\x8b\x6a\x29\x6e\x2f\x95\x47\xc0\xb5\x0e\x57\x0b\xeb\x99\x62\x19\x23\x38\x1d\x23\x3e\xd2\xa3\x20\xbe\x1b\x05\x16\x62\xd1\x40\x5c\x42\x2c\x12\x5a\x21\x16\x69\xe9\x5d\xc5\x12\x91\x69\x12\x91\x16\xf7\x4d\xb1\xd4\x4d\x3a\xb1\xc8\x2f\x30\x8b\x45\xb5\x47\xb7\xf7\xd0\x23\xe0\x5a\x87\xf9\x8e\x7b\xae\x52\x20\xf2\x31\x11\x6b\x02\x00\x10\xdb\x2c\x2b\x1a\x88\x8b\x28\x45\x40\xab\x96\x15\x61\xe9\x7d\x97\x95\x29\x18\xa1\x78\x47\x7c\x53\x26\xe2\x5e\xbb\xa0\x08\xdf\xcd\x1a\x39\x88\xd9\x1a\x01\xd5\x11\x58\xad\x93\x55\xf8\x75\x6e\x24\xe3\x03\x3c\x12\xa3\x4b\x60\x1c\x05\x77\x36\xc1\x8c\x1a\xe2\x22\xf1\x8c\x80\x56\xc5\x33\xc2\xd2\xbb\x0a\x84\x44\x53\x1c\x44\x2d\xee\x9b\x1a\xa9\x9b\xb4\x41\x8a\xf8\x02\xb3\x4c\x54\x91\x7c\x3b\xd2\x3e\x02\xae\x75\xb8\x4a\x9c\xce\xd3\x0a\x8e\xc7\xd1\x48\x04\xae\x28\x08\x49\x08\x2c\xb4\xa2\x81\xb8\x84\x56\x24\xb4\x42\x2b\xd2\xd2\xbb\x6a\x05\xc6\x21\x0a\xa7\x4d\xea\x5b\xf1\xac\x6c\xd1\x29\x45\xfa\x7f\x42\x38\xab\xc8\xef\x5a\xe9\x97\x1e\x5a\xe9\x2c\x7b\x5e\x2d\x61\x06\xd2\xc5\xc0\x4b\x97\x73\x77\x7b\xab\x4a\xe3\x64\x24\x1f\x1a\xd2\x64\x7d\xaf\x8d\x87\x69\x5e\xe0\xfc\x35\x73\x97\x24\x5b\x3d\x2c\xd2\x07\x50\x53\xa4\x78\x72\x40\xd5\x29\x2b\xdd\x98\x5f\x62\x99\x9a\xf2\xcb\x66\xa5\x33\x42\xec\xcb\xe0\x22\x8b\xa0\xb0\xaa\x5a\x04\x85\x13\x0a\x61\x2b\x16\x04\xd1\x75\x9f\xe5\x4a\x18\x0f\x60\x9f\xe4\xed\x03\xf5\x18\xec\x1e\xdb\x0c\xc4\x2e\x4f\x89\xc6\x13\x02\x71\xa7\x54\x47\x07\xd1\xc7\x40\x68\xb3\x20\xe9\xc4\x49\x03\x21\xbb\x6e\xbc\x0c\xbc\x40\x40\xbb\x95\x1f\x92\x29\xbf\xec\xcb\x0f\xba\xf7\x7b\x11\xb1\xae\x32\x21\x9d\xe8\x65\x75\x96\xab\x1a\x7f\xba\x2a\x67\xa3\x62\xdd\xad\x06\xb8\x5f\x71\xb2\xaf\x01\xaa\x90\xf6\x15\xe1\xd4\xf7\x19\x78\xd9\xcd\xb7\x33\x75\x42\x20\xbf\xc4\x50\x47\xfc\xb2\x90\x8a\x19\xa2\x0f\xb5\x48\xab\x2a\xb5\x08\x27\x14\x6a\x31\x94\x16\xe3\x13\x07\x4f\xd7\x77\x3b\x3c\x90\x82\x0c\x0f\x9a\x83\xc3\x37\xa4\x37\x55\x55\xeb\x50\x02\x61\x03\x28\xcd\x5e\x08\x2d\x15\xb5\xc9\xa3\x23\x1a\x21\x7e\x89\x64\x2c\xb4\x49\xe6\x0c\xef\xf7\x31\x96\xd2\xa4\x2a\xc9\x13\x3f\x3d\xcc\xfc\x7d\x8e\x2f\x32\x97\x38\x5f\x9c\xb6\x29\xbf\x2c\x98\x37\xbc\xdf\x07\xf3\x5b\x82\x0f\x98\x17\x4e\x74\x9f\x45\x47\xea\xf3\x8a\xae\xda\x61\x69\xcf\x29\xd5\xa0\x29\xe6\x98\xea\x94\xa7\x61\xa3\x64\x80\xa5\xc8\xe5\x43\x57\x37\x25\xe9\x9a\x60\x45\x8b\x1c\xa1\xb7\xf6\x76\xe1\x6f\x3c\xb0\x20\x94\x9d\x3a\xb3\xad\x0e\x98\xc2\xed\x96\x70\x10\x13\x9f\xb7\xb7\x1c\x05\xaa\xbe\xc4\xb2\xd6\x88\x93\xc4\xc7\x53\x91\xb1\x4d\xc9\x18\x22\x9b\xa4\xcf\x08\xd1\x87\xfa\xa5\x55\x55\x3e\x28\x9c\x50\x45\x6b\xed\x34\x28\xc4\x10\x04\x35\x79\x16\xb5\x37\x1c\x13\x9c\x4c\xf8\x67\xc3\x18\x93\xc4\xe6\x9c\xc8\x0c\xd1\x0b\x73\xc2\xaa\x82\x39\xe9\x84\x91\xb9\x18\xa0\x84\x80\x9a\x39\xcb\xba\x14\x4a\xa6\x24\x92\x51\x2a\x49\x90\xd5\x21\x9b\x11\xa2\x97\x40\x57\x58\x55\x06\xba\xdc\x09\x23\x79\xc9\x98\x4c\x62\x52\x93\x67\x55\xa7\x49\x42\x4c\x64\xc5\x96\x4c\xf8\xe6\x6b\xc3\x9d\x11\xa2\x17\xee\x84\x55\x55\xa6\x2b\x9c\x30\x72\x87\x11\x98\x80\xc9\xc6\xe3\x4e\xd0\xf3\x97\xba\x46\xac\x2b\x13\xfd\x4e\xe1\xb2\x06\xe2\xba\xe1\x72\x5d\x3a\xd8\xe3\x6d\x47\x91\x0b\xc1\xb9\xf2\x6a\x24\xdf\xfe\x24\x00\x71\xb7\xfc\x5d\x03\x71\xdd\xfc\x5d\x38\x61\xa2\xa9\xfb\x61\xdd\x28\xc6\xa3\x51\xb7\xc3\x3a\x0d\x44\x1f\x74\xe9\xcf\xf1\x84\x13\x46\xba\x3a\x1d\x57\x45\x01\xf4\xb1\xcd\x0c\x34\x43\xf4\xc2\x95\xee\x24\x4b\x3a\x61\xe4\xaa\xf3\xe1\x0d\x8a\x27\x41\xd2\xed\xf0\x46\x03\xd1\xcb\x42\xaf\x3d\xd7\x11\x4e\x18\xe9\xea\x7a\x7c\x11\x47\x7e\x68\x15\xc9\x1a\x21\xfa\x89\xc7\x74\x27\x1b\xc2\x09\x15\x5b\x8b\xb4\x64\x2e\x77\xa9\x78\x3b\xa9\x0c\xd6\xbd\x7e\xbf\xb3\xe8\xa6\x8c\x2c\xb7\x7f\x05\xa6\x6e\xaf\xeb\xca\x9a\xa7\xb2\xac\xac\x4c\xf8\xaa\x1d\xe3\x70\xd8\x4e\xdd\xb3\xc2\xc9\x14\xda\x84\x44\x66\x88\xeb\xee\x59\xc2\x09\x63\x48\x24\xbb\x6d\xbc\x02\x64\xe4\x9c\x93\x9b\x93\x06\x9e\x8f\xbb\x00\xae\xab\x96\x0f\xd5\xed\x33\x01\xd8\x62\x39\xfb\x6d\x4e\x68\x6a\xda\xaa\x3f\x20\xea\x46\xdb\xef\x73\x9e\x52\xd3\x56\x05\x62\xdd\x68\xdb\x55\x25\xb0\x4f\x62\x64\xf3\x97\x0f\x66\x88\xab\x16\x36\xa4\x13\x7a\xda\x78\x40\xd6\x91\xb3\x6d\x3d\x02\x8d\x88\xdd\x81\x82\x19\xe2\xaa\x25\x0d\xe9\x84\x9e\xb3\x2a\x30\xeb\xb8\xb0\xed\x2a\x11\x20\x09\x91\x4d\xe4\x61\x86\xb8\x6e\x31\x43\x38\xa1\xa7\x4d\x06\x68\x1d\x59\xdb\xd5\x20\x20\x42\x76\xac\x19\x21\xae\x5b\xc6\x10\x4e\xa8\x58\x7b\x25\x8b\xc5\xb9\xd5\x0a\xb9\xc1\x75\xaa\x56\x18\x21\x7a\xa9\x56\xd4\x9b\xe2\xa9\xd5\x8a\x83\x2a\x0f\xbf\x4c\xf5\xf6\xe8\x30\x58\x19\x1c\x39\x9c\xd5\x96\xdb\xcf\xc5\xd9\xdc\xfc\x17\x00\x00\xff\xff\x3b\xfc\x2f\xb1\x82\x33\x00\x00") - -func pagesAssetsStylesBootstrapTheme311MinCssBytes() ([]byte, error) { - return bindataRead( - _pagesAssetsStylesBootstrapTheme311MinCss, - "pages/assets/styles/bootstrap-theme-3.1.1.min.css", - ) -} - -func pagesAssetsStylesBootstrapTheme311MinCss() (*asset, error) { - bytes, err := pagesAssetsStylesBootstrapTheme311MinCssBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "pages/assets/styles/bootstrap-theme-3.1.1.min.css", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _pagesAssetsStylesContainersCss = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\xb9\xd7\x8e\xe3\x68\x9a\x28\x78\xdf\x4f\x91\x3b\x83\x05\xce\x39\xec\x6c\x7a\x57\x85\xbd\xa0\x11\x45\x27\x7a\x7f\xb3\xa0\x27\x25\x7a\x27\x92\x85\x79\xf7\x85\x22\x22\x23\xb3\x4c\x57\x75\xcf\x6c\x20\x95\x11\xfc\xf9\x7f\xde\x7f\xfa\xdb\x3f\xca\xbe\x2f\x9b\xfc\xeb\x56\xcf\x6b\xdc\xd4\x67\xbc\xd4\x7d\xf7\x75\xe9\xfb\x26\x89\xa7\x5f\x8a\xbe\x5b\xbe\xce\xf5\x99\xff\x04\x43\xd0\xff\xfd\x5f\x7f\x7a\xf9\xcb\x9f\xbe\xfd\x9a\xef\x43\x3f\x2d\x5f\xeb\xf7\x4b\x7f\xff\xff\x01\x55\x16\x2f\xf1\xff\x08\x4f\xb5\xb4\xcd\xd7\xb4\xcf\xf2\x5f\xda\x78\x2a\xeb\xee\xeb\x54\x97\xd5\xf2\xd3\x3f\xe0\xbc\xfd\x73\x51\xbf\x43\xbe\x78\x69\xe2\xee\xed\xed\xbb\xb6\x9e\xf9\x1b\x92\xa4\x6f\xb2\xbf\x40\xd2\x3f\xbe\x26\xeb\xb2\xf4\xdd\x2f\x43\x9c\x65\x75\x57\xfe\x84\x0c\xfb\x5f\xc0\x2c\x53\x1d\x77\x65\x93\xff\x32\xf4\x73\xfd\x7a\xf3\x53\x9c\xcc\x7d\xb3\x2e\xf9\xcf\xef\xcc\x43\x3f\x2f\xfd\xf0\x13\xf4\x17\x68\xd2\x78\x78\x7f\x8e\x93\x26\xff\xe5\x59\x67\x4b\xf5\x66\xe1\x9f\xbf\x71\x02\xfd\xfc\xae\x92\x9f\xa0\x9f\x93\x7e\xca\xf2\xe9\xf3\x8f\xaf\x69\xdf\x34\xf1\x30\xe7\x3f\x7d\xfb\xe3\x2f\x68\xcd\x6d\xdc\x34\x5f\xb3\x3a\x6e\xfa\xf2\x83\x14\x0e\x41\x7f\x29\x69\x52\x97\xbf\x06\xa2\xfe\x05\xa0\x1f\x69\xfd\xb9\x6b\xfc\x88\xff\xf7\xba\x4c\xe2\xf4\x51\x4e\xfd\xda\x65\x2f\x71\xfb\xe9\xa7\xff\x4c\xe1\x8c\x2e\x8a\x6f\xca\x80\x87\xfd\xcb\xdc\x37\x75\xf6\xe5\x3f\xd1\x18\x27\x49\xec\x53\x71\xd4\xbf\xc5\xe3\xd7\xe4\x5f\x67\xf3\x6b\x52\xfe\xf2\x7b\xbe\xb2\x2c\xfb\xf9\xf7\xfc\xbf\xf9\xc0\xcf\x4d\x5e\x2c\x7f\xe9\x0a\xbf\x62\x67\xa9\x97\xbf\x8a\xcd\x1f\x39\x7a\xbb\xfe\x07\x4c\xe5\x50\x9e\x15\xf9\xcf\x1f\x4f\x10\x04\xfd\x9c\xae\xd3\xdc\x4f\x3f\x0d\x7d\xdd\x2d\xf9\xf4\xa3\xb6\xbe\x73\x3f\xe5\x4d\xbc\xd4\x5b\xfe\xf3\x0f\x59\x07\x19\x96\x9f\x7f\x1b\x56\x3f\x6f\xf9\xb4\xd4\x69\xdc\x7c\x8d\x9b\xba\xec\x7e\x6a\xeb\x2c\x6b\xfe\x1d\x2f\xfc\x9a\xf6\xdd\x92\x77\xcb\xbf\x2e\xe8\x07\xc0\x1f\x88\x5a\x14\xc5\xa7\x34\xd8\xb0\xff\x8a\xd9\xae\x9f\xda\xb8\xf9\xb9\xdf\xf2\xa9\x68\xfa\xe7\x4f\xf1\xba\xf4\xff\xb6\x35\xbe\xa6\x4d\x3f\xff\xbb\x36\x79\x07\xfa\x81\xdd\x9f\x96\x29\xee\xe6\x21\x9e\xf2\x6e\xf9\xb2\x4e\xcd\xff\x7a\xbb\xf0\xff\x26\xfd\xfe\x8f\xb2\x2e\xfe\xf7\x97\xae\xff\x3a\xe5\x43\x1e\x2f\x5f\xe6\x74\xea\x9b\xe6\x4b\x9a\xbf\x19\xaa\x7a\x97\x04\xc6\x7f\x34\xd4\x6f\x52\x0e\x0c\x0d\xfb\x9b\xc7\xbd\xac\xf9\x91\x4b\xf0\x7f\x2f\x0c\x3e\xf4\xfb\xa5\x2e\xa6\xb8\xfd\x37\x84\xfd\x35\xdc\x8f\xd9\xe5\x1b\xe7\xe4\xdb\xc3\xef\xc2\x36\x69\xe2\xf4\xf1\x5f\xff\x48\xab\x78\x5a\xe6\xaf\x75\xd7\xd4\x5d\xfe\x35\x69\xfa\xf4\xf1\xcb\xef\xfd\x31\xab\xe7\xa1\x89\x8f\x9f\xbe\xb6\xfd\xf9\x79\xb7\xdf\x3f\xcf\x7f\x04\xff\xaf\xff\xf3\xe5\x55\x1c\xbe\xfc\x11\xea\xbf\xff\x9f\x9f\x8a\x7a\x9a\x97\xaf\x69\x55\x37\x19\xf0\x4f\xef\xfd\xf2\x6b\xc4\x9f\x6c\xb6\x79\xb7\xfe\x68\xd3\x37\xe7\xfb\x9e\x95\xdf\xd2\x54\x9a\x7e\xf9\x4f\x82\x20\x3e\xfe\x4b\xd3\xf4\xdb\x85\x79\x39\x9a\xfc\xa7\x37\xe9\xbf\x1d\x7d\xd8\x6a\xd8\xbf\x85\x67\x96\x17\xf1\xda\xbc\x47\xdc\x87\xf7\x7e\x81\xd1\x61\xff\xc2\x4c\x75\xdc\xfc\x7d\x8e\xbb\xf9\xeb\x9c\x4f\x75\xf1\xbd\x3a\xf4\xeb\xf2\xe2\xf1\xa7\xae\xef\xf2\x1f\x03\xe1\x0b\xf4\x07\xfe\xf2\xd2\x5e\x96\xef\x3f\x21\x10\x04\x41\xbf\x12\xeb\x5b\x25\xfc\x51\xba\x2c\xcb\xde\x5c\x15\x04\xe7\xb9\xf9\x47\x39\x2f\xf1\x52\xa7\xff\x48\xfb\x16\xcc\xb3\x7a\xe9\x27\xf0\x1d\xe6\x6b\x52\xfe\x63\xe8\xca\xff\xfd\xe5\xdd\x81\xbf\xee\x5f\x96\x7e\xf8\xf2\xca\x7d\xdf\x4b\xd7\x3f\xcf\x44\x4d\x3d\x2f\x1f\xba\x79\x13\xe1\x43\x30\x64\xd8\xff\x58\x34\xe8\xe7\x25\xdf\x97\xaf\x59\x9e\xf6\xd3\x9b\x5b\xbe\xbf\xfe\x27\x29\xe9\xf7\x12\x7e\xed\xd7\x25\x9f\x5e\xee\xf3\xf7\x3f\x7a\x5b\x77\xdd\xfb\xdb\x5f\xfe\xb9\xd9\x3e\x84\x89\xe3\xf8\xb7\x64\x97\x7e\xf8\x73\x9a\xbf\xfc\xa6\xaa\x7f\x77\x81\x97\xbd\xbe\x89\xf8\x87\x38\xbe\x73\xf6\x0d\xc7\x97\xaf\xf0\x67\x68\x7d\x20\x82\xbe\xbc\x8e\xbe\x21\x7a\x79\x0e\x36\xec\xbf\x0d\x89\x3f\xc6\xfa\x56\xac\x5e\x18\xff\xec\xfa\xb4\xfc\xf1\xf9\x77\x01\x3f\xd1\x7c\x24\xa7\xb7\x9c\xfb\xdf\xc0\xf8\x9d\xb1\x1f\xf1\xfc\xf3\xf8\xfd\x4b\xa1\xfe\x35\xd0\xbf\x66\xe7\x0d\xe5\x6f\xe4\xfb\xe9\xa7\xa9\xef\x97\x3f\x02\xfc\xe5\x2d\xab\x7c\xe4\x42\xe8\x4f\x2e\xfe\xa8\xc2\x7f\x15\xe4\x07\xa6\xfe\x55\x90\x8f\xc6\xf3\x57\x00\xef\x89\xe6\xcf\xa0\xb2\xa9\x1f\xb2\xfe\xf9\x87\x60\x7f\x78\xbf\x9e\x5f\x8d\x6d\xf6\x63\xbd\xae\xdb\xb8\x7c\x8f\xe5\xff\xab\x6e\x5f\xf3\x43\xdc\x2d\x3f\xf7\x43\x9c\xd6\xcb\xf1\xd3\x3f\xd0\x9f\xdf\x92\xfb\x0f\xcf\x45\xdd\x2c\xf9\xf4\x53\xdc\x0c\x55\xfc\xbf\x3e\xce\xff\x1f\x14\xfa\xdf\x7f\x4a\xf0\xcf\x35\xfb\x87\x11\xff\xa7\xa0\x9f\x1a\xfe\xf7\x41\x3f\x34\xfd\xef\x03\x7e\x2a\xfb\x23\xcf\xa0\x28\xfa\x83\xc6\x7e\x9d\x83\x68\x9a\xfe\xfe\xee\xcf\xc2\xec\x1b\xc5\x3f\x2b\x81\x7f\x68\xc1\xef\xf9\xf8\x95\x5a\x7e\x60\xe4\x33\x5b\xfd\xfa\xfc\x0f\xcd\x53\xbd\x5a\xb0\xff\x86\x6d\xfe\x39\xdc\xef\xf2\xf4\x37\x85\xa4\xc5\x97\xff\x24\xe8\xfc\xe3\x3f\x32\x2e\xfe\x82\xb5\x38\x7d\xb5\x18\x7f\x48\xbd\x1f\xf2\xee\x0f\x3a\xce\x24\x49\x7e\x9c\x4f\x3e\xab\x6c\xd2\x2f\x4b\xdf\xbe\x15\xbe\x3f\xa4\x54\xf4\xe9\x3a\xff\xb7\x5c\xf4\xcf\x20\xff\x89\x22\xfa\x29\xee\xca\x3f\x2e\x80\xdf\x52\xc0\x77\x03\xbe\xb5\x0b\x5f\xa0\x7f\xb5\x9a\x7d\x3a\xe8\x8f\xcd\xe9\x7b\xfd\x21\x5f\x05\xe9\x7b\x0b\xf1\xa7\xdd\xc3\xfb\xaf\x8f\xa6\xf2\xbd\x83\xf8\xde\x05\x7f\x45\x29\xea\xad\x28\xfe\x8b\x3c\x7d\x9b\x85\xdf\x57\x08\x7f\xa8\xc5\x5f\x5f\xf9\x6f\x98\xe1\x5f\x40\xf0\xdb\x22\xfd\xb1\xd1\xf8\xe3\x8a\xfe\x89\xef\xe5\x32\x7f\x4e\xf1\x75\xe3\x2f\xaa\xc6\x07\xc1\x6f\x33\xe7\x7f\x0b\xdb\xef\xd8\x7f\xc7\xf6\x2d\xe9\x7c\x2b\x7d\xdf\x46\xef\xa2\x28\xfe\x9a\xd0\x1f\x5e\xa8\xf2\xf4\xf1\xaf\x3a\xf4\x6f\xa9\x66\x59\xf6\x2b\xaa\xf5\x92\xb7\xbf\xfc\xd0\x60\xfe\x75\xf3\xfc\x4f\x7a\x4e\xe8\x57\xfd\x33\x99\xb7\x6f\x81\x81\xbc\x4d\x55\x55\xbd\xe4\x5f\xe7\x21\x4e\x5f\x20\xcf\x29\x1e\x7e\xc7\xc2\x6f\x9f\x5f\xad\xc4\xb7\x18\x7b\x97\x81\xcc\xdb\x6f\x14\x3e\xfc\x02\x79\xdb\x56\xfc\xa8\x84\xae\x7f\xd3\x4d\xd2\xef\x5f\x7e\x8b\xf0\xef\xbf\xb9\x58\xa7\x7d\xf7\xbb\x4b\xbf\xa6\x08\x23\xbf\xc7\x1f\xa7\x69\xde\xfc\x73\xb8\x0f\xc6\xa0\xdf\x00\xbe\x49\xf4\x6d\x0a\xff\x77\x94\xfd\x7b\x2c\x7f\x58\xfc\xde\xde\xbc\xb1\xf6\xf7\x7f\x03\xe0\x37\x0c\xa5\x69\xfa\x4f\xb2\xfd\x5f\xe0\x79\xa9\xf2\x97\xff\x69\x2f\xf2\x86\xa9\xaa\xcb\xaa\xf9\x5d\x0a\x7a\x7f\xf5\x2a\x66\x7f\xb4\x41\x22\x72\xba\xa0\x7e\x53\xd8\x7f\x7d\xf8\xee\xab\x59\xbf\x2c\xf9\xef\x87\xc7\xef\x93\xc3\xd7\xf7\x12\xf4\xea\xfb\x3f\x8f\x96\x7e\x78\x3d\xff\x81\x31\x3f\xfc\xec\xf7\x8c\xbe\x69\xe3\x07\x3e\xdf\x53\xf2\x4f\x9f\xc9\xf9\x73\x29\x41\x0c\xfb\xfb\x8e\x8b\xf8\x93\xed\xc4\xab\x41\xfe\xe3\xf1\xec\xdb\xae\x82\xf8\x23\xf6\x7e\xdb\x88\xff\x05\xcf\x7f\x78\xfd\x4d\x90\x37\x06\xdf\x98\x78\xe7\xe7\x47\x6a\xfd\xfb\x16\x76\xce\x9b\x3c\x5d\xfe\xd0\xc1\x7e\x4b\xf0\x2f\x21\x7e\xa3\xbc\xff\x49\x09\xc4\x5f\xe1\xfb\x05\xfa\xbd\x6e\xde\xe2\xe4\x97\xef\x2d\xe0\xcf\x59\x3d\xe5\xe9\x9b\xf2\x9b\x65\xfa\xf9\xbb\xc4\xdf\x4b\xfc\x9f\x59\xe8\x63\xa4\x7e\x37\xcd\xdb\xd1\xbf\x68\x8e\x77\x3e\x3e\x6a\xc4\x0f\xd6\xfe\x01\xdd\xef\xba\xa1\x37\xc0\xb6\xcb\xdb\xbe\xab\xd3\xaf\x55\xdd\x2d\xbf\xfc\x76\xa0\x5f\xbb\x2c\x9f\x7e\xb7\x78\xf9\x35\xe0\x9c\x0f\xf1\x14\x2f\xfd\xf4\xa3\x1a\x7e\xb5\xb7\xfc\x1e\x02\x6f\x0c\xbe\xe6\xe0\xbf\xfd\xed\x1f\x2f\x1b\x7c\x6d\xe2\x24\x6f\xbe\xfc\xf2\xb7\x2f\x5f\xbe\x7c\xf9\xdd\x72\xf3\x6f\xff\xf5\xb7\x7f\xac\x5d\xfd\xeb\x5b\x1f\x44\xa8\xb7\x9f\x9f\xbf\x03\xbe\x07\x66\xbd\xc4\x4d\x9d\xbe\x41\xbe\xb7\x93\x5f\xd3\x61\xfd\xa7\xf8\x7f\xc0\x07\xbd\xfd\xbc\x01\xd6\xdd\xef\x40\x7f\x43\xf4\xbf\xfe\xf6\x8f\x29\x7e\x7e\x7d\x49\x30\xff\x88\xbc\x88\xdb\xba\x39\x7e\xfa\xf2\x1f\x5c\xbf\x4e\x75\x3e\x7d\xd1\xf2\xe7\x7f\xbc\x93\xf9\xb1\x6c\x7d\x19\xa6\xfc\xeb\xab\x72\xbd\x93\x9b\xfb\xe6\x63\xab\x57\x2f\x4d\xfe\x6b\x8a\xc2\xdb\xcf\xdb\xbd\x21\x2e\x5f\x03\x5f\x9c\xe5\xd3\x97\x0a\xfe\xb8\xf6\xec\xa7\xec\x0d\xd5\x4f\x5f\x92\x29\x8f\x1f\x5f\x5f\x07\x6f\xd7\xdf\xbe\xcf\xf8\x3a\xf5\xcf\x3f\x64\x30\x7d\x67\xf0\x3f\xfe\xfe\xe5\x3f\xda\xbe\xeb\xdf\xf8\xfa\x8f\x1f\xb5\xf9\x32\xdd\x97\xb7\x76\xf2\xed\xf0\x07\x3f\xfa\xf2\xe6\x5e\xef\xc7\xbf\x49\x26\x5f\x96\x7e\x78\x7f\xf1\xb1\x6e\xfa\xf2\x89\xe0\xc7\x2e\xe6\x0b\xfa\x9b\xd3\x77\x87\xfd\xdd\xf1\x2b\x61\xfe\xee\xf0\x23\xb1\xbe\x9f\xff\xd7\xdf\xfe\x31\xaf\xc9\xab\xf6\xc4\xf5\xab\x57\xf9\xd8\x16\x7e\xad\xbb\x61\x5d\x3e\x04\xff\x15\x65\xec\x1b\xb6\xf7\x84\xf7\x05\x83\xde\xd1\xfc\x67\xd3\x97\xfd\x37\x4d\x35\x7d\xbc\xbc\x85\xcb\xfb\xd5\x8f\x1c\xfb\x05\x79\xdb\x9f\xfe\x8e\x41\xe4\xf3\xf4\xf7\x89\xfa\x7b\x0e\xf9\xdd\x8d\x77\x0d\x7f\xb0\xfe\xbb\xb7\x9f\x09\xe2\xdb\xf6\xf9\xb7\x17\xde\x67\xf8\x57\x4a\xfb\x8f\x2c\x5e\xe2\x9f\xde\x9e\xc1\xa1\x2b\x7f\x4e\xe2\x39\x27\xb0\xbf\xd7\x1e\xab\x5b\x4f\x48\xb9\x96\x3d\xc3\x30\x8c\x66\xbb\xd5\xc5\x2d\x19\x86\x25\xdd\xd7\x63\xcd\x31\x12\xc3\x30\x1c\x8b\x98\x03\xca\x30\x8c\x62\xfb\x0d\x6f\xc2\xec\xe9\x3e\x32\x4e\xba\x34\x82\x79\x86\xbb\xee\x84\x88\xea\x48\xeb\xcd\x64\x98\x5c\x1b\x33\x17\xcd\xc2\x07\x98\xfa\xc6\x02\xa2\x91\x49\xfb\xe6\x72\x7f\xce\x51\x36\x97\x26\x53\x4b\xc4\x53\x3a\x58\x36\xea\x2b\xce\x66\xae\xd7\xcb\x85\x95\x99\x3d\xf4\x25\xae\x09\x5d\xc1\xba\xa6\xb6\x10\x5c\xca\xc5\x55\x6c\x19\x91\xb0\x91\xe9\xd7\x6b\xc6\xd6\x7d\x15\xd7\xb0\x97\xea\x3a\x56\xa0\x4a\x0e\x17\xc1\xb4\x91\x39\x4a\xc2\xe0\x4a\xe1\xf8\xd9\x81\x37\x1c\x3f\x9f\x00\x73\xb1\xa4\xf6\x91\xc7\x75\x5c\x32\xb8\xdb\xbb\x94\xbe\x94\xc5\x1d\xa2\xa5\xfd\xd6\xd2\x25\x23\x79\xb6\xce\x5c\x24\x96\x6f\x0f\x4a\xee\xd8\xd4\x65\x18\x83\xe1\xf3\xa0\x02\x32\x95\x01\x41\xe6\xba\x25\x4f\x86\x63\x44\xde\x53\x6b\xd3\xde\x01\x11\x2c\xc9\xc1\x94\x9b\x94\x91\xe4\x0b\x83\x71\x92\x8d\x3f\x67\xf6\x21\x48\xcc\xc1\xe1\xee\xc1\x9a\xcc\xc1\x96\xcc\x2c\xe8\x67\xc4\xf4\x4c\xc3\x30\x4c\x22\x36\x94\x59\x4b\xcc\x58\x42\x0c\x69\x58\xb2\x51\xba\x0c\xa2\xb4\x0e\xca\xa6\x0c\xa2\x48\xe9\x68\x96\xcc\xdd\xbc\x30\xad\x5d\x89\x32\x23\x33\xeb\x93\x2d\xbd\x50\xb0\x55\x46\x65\x9e\x25\x57\x4e\x17\xa6\x56\x4b\x87\x99\xca\x2b\xe3\x27\xe1\x61\x3d\x15\x66\x33\x5d\x26\xeb\xf1\xf0\xc1\xd0\x4c\xc8\x70\x4c\xeb\x4a\xf3\xc9\x30\xa5\xce\x48\x8c\xb9\x63\xce\x69\xde\x4a\x87\xd1\xcb\x9b\xa6\x80\x98\xd2\x14\xa9\xe4\x63\x36\x73\x61\x9e\xb7\xd5\x3b\xa3\x4c\x85\xee\x37\x77\x95\x03\xf3\xda\x15\x07\xa5\xf3\xb5\x94\xab\x5c\xa2\x0a\x5c\x68\xa5\xc3\xe5\x1a\xca\x38\xa7\xa4\x0d\x3e\xdf\x2f\xd0\xbd\x63\xa0\x53\xe7\x19\x86\xb9\x6e\x9d\xf5\x2c\x30\xcc\xc0\xf9\x0e\x5f\x9d\x0a\x6f\x93\x2e\xd1\x41\x68\x8f\x55\x20\x06\xd9\x4d\xba\x63\x15\x95\x81\xc0\x26\x3d\x39\x96\x61\x4c\x67\x06\x37\xa4\x01\x1b\x3c\x0b\xf9\xf4\x96\xb2\xb3\xe8\x83\x31\xd1\x24\x8c\x36\xf8\xcc\xf5\x5e\x00\x1e\x74\x22\xcf\xb6\xf4\xcb\xc9\xcc\xb7\x56\xcd\x9d\x3b\x65\xb2\x44\xde\x7b\xbc\x64\xb0\x50\xca\x95\xb3\x4a\xda\x5e\xdd\x27\xd0\x13\xc3\x66\x00\x3c\x8d\x2a\x01\x38\xb5\xd8\x12\xca\x64\x49\x00\x41\xa7\x27\x23\x5e\x63\x53\x6e\x97\xa7\xa2\xf3\x60\x20\x54\x49\x17\xaf\x6e\x4f\x76\xc7\xd3\xe2\x6e\x3e\x89\xe2\x87\x01\xec\x98\x07\x82\x21\x36\x40\xb9\x04\xcd\xde\x73\x16\xc2\x69\xf7\xa5\x16\x73\x39\x59\xdb\xd1\x16\x77\x07\xe1\x22\xa5\xad\x87\x55\xea\x50\x9c\xea\x2e\xe2\x09\xcd\x45\x1a\xca\x9b\xdc\x5c\x3d\x40\xc6\x99\x42\x71\x49\x97\xf9\x29\x92\x2b\x63\x2a\x2a\xdf\xdc\xed\xac\x64\x99\x62\xbb\x2d\x77\xb6\x57\x1f\x26\x63\x46\xa7\x79\xe4\x45\xca\x30\xb2\x0e\x02\x21\xcd\x28\xcf\x0b\x73\x46\xf9\x03\x7b\x32\xcc\xa6\x97\x61\xa0\xd4\xae\x00\x9d\x57\x8e\x61\x18\x4b\xe1\x58\x65\x62\x59\xf6\x79\xb2\x82\x72\x32\xfc\x70\xb2\x62\x72\x32\xc2\x53\xae\xd8\x87\xc5\xf0\x9c\xc3\x18\x2c\xcb\xb1\xab\xcd\x88\xcc\x58\x5d\xe5\x88\xbd\x7a\x0e\xa3\x2f\xe5\x65\x49\x18\xfe\x3a\x32\x56\xbb\x5e\xcc\xe5\x76\xd9\x75\x06\xed\x30\x56\x4e\xcb\x7c\x79\x0a\xcf\xa8\xbc\xca\x24\x77\x55\x8f\x2b\x67\x5a\xec\xc1\x94\x4e\x68\x5f\x88\x9a\x15\xea\xfb\x52\xd6\x67\x59\x06\x6d\x88\x5d\xa4\x56\x90\x34\x59\x61\x06\x8e\x1f\x6a\xd6\xb2\xa4\x39\x78\x39\x21\x37\xba\xf2\xf8\xf0\x60\x49\x02\xa5\x25\xad\x4c\xfc\xee\xed\x0c\x30\xf0\xc9\xc1\x31\x47\xbd\x1d\xca\x76\x49\xf7\x46\xba\x1e\xae\x69\xb8\x4c\xe7\x31\x6b\x5c\x16\xd7\x7e\xba\xf6\xa2\x61\x65\xbc\x69\x04\x21\xe7\xf7\xed\x66\x5d\x27\x33\x37\x42\x0e\xe9\xc7\xc2\xb2\x81\x0a\xce\x18\x96\xae\x7b\xfc\x5e\x6a\x97\x9d\x6f\xe3\x1b\xe2\x0b\xe9\x5d\xca\x84\x50\x6a\xc2\x6b\x9d\x88\x42\x6b\x34\x3e\xef\xf9\xf7\xd3\xbb\x8b\x5e\x89\x66\x95\x9b\x3c\x65\xbc\x22\x9f\xe5\x83\xe9\x57\xe6\x02\x3c\xa5\xa0\x37\xcd\x67\x7b\x70\x0f\x99\x15\xfd\xcb\x1e\x9a\x44\xd9\x90\x9c\x0e\x5d\xa6\x5e\xf2\x9e\x2d\x5f\xf1\x22\x27\x1f\x8a\x33\x5e\x00\x48\x0e\x7a\x1b\x48\x2d\x2c\xbc\x8f\xfb\x43\xa8\xae\x13\x97\xac\x92\x85\x55\x5d\xed\xe5\xf2\x13\x73\x02\x5c\x93\x64\x86\x94\x1f\xab\xa5\x73\xf5\xa5\x79\xf0\xb2\xcc\x41\xcd\x64\x6b\x8b\xa4\xc6\x96\x33\xf0\xa4\x7d\xb9\xb6\xa9\xc3\x25\xd3\xe3\x8a\xca\xe8\x6a\x4a\x73\xcf\xcd\x92\x9c\x5b\x0b\xce\x18\x8f\x0b\x60\x03\x54\xc7\xe3\x6a\xea\xea\xb3\x2f\x61\x8f\xa7\xdc\xd7\x96\x3d\xc8\xa6\x6d\xdf\xbd\xc6\x00\xdc\xcb\x10\x51\x87\x39\xb4\xe5\xd8\x88\xda\x18\x91\x2e\xa7\x8c\x92\x3e\xd0\xb1\xed\x23\x65\xd6\x30\x9b\x8b\xe5\xc3\xe5\xb4\xe0\xb6\x0e\xb4\x76\x8f\xf8\x83\x30\x97\x9e\x0e\xcc\xb6\x6d\xba\xb8\xc8\x7a\x15\x68\xa0\xb5\xec\xb2\x72\xc7\x85\x86\xe6\x02\xa8\xdd\x7a\x16\xe8\x3a\x22\x34\xa0\xec\xf9\xd4\xaa\x12\xe1\x77\xa8\xaa\x15\xb6\x99\xae\xc1\x1c\x0d\x7b\x8d\x5e\x6d\x20\x72\x94\x50\x80\xf0\x3c\x3a\x04\xf3\x09\x9f\x52\xd2\xfa\x79\xc8\xe3\xd5\xe6\x79\xe5\x48\xd7\x03\x25\x44\xa2\x72\x19\x5c\xa2\xf1\x62\xaf\x18\x82\x6e\x6c\x2c\x2f\x85\x5d\x10\x0e\xda\x91\x83\xed\xc9\x33\x81\x29\x68\x22\x7a\x78\x44\xde\x0c\xf3\xf7\xd1\xec\x5c\x61\xdc\xbc\xd1\x82\xbd\x95\x78\x20\xd3\x8c\xdb\x19\xac\x18\xee\x8d\xb6\x02\x42\x07\x02\x10\xe1\x80\xf6\xa6\xcd\x7d\x2c\x58\x23\x77\xb5\x15\xcd\x0d\xc9\xe2\x7a\x0d\xa1\x4a\x98\xc3\x23\x2a\x84\xd0\x5c\xa2\xc3\x2b\x8d\x49\xbd\xae\xa1\xe3\xcb\xc9\xbc\x75\xb3\x23\x86\x02\xb0\x2f\x88\x8a\x2e\x37\x17\xd2\xce\xb1\x8d\xe7\x68\x10\xda\x2e\x8f\xf6\xd3\xbc\xe8\xfb\x24\x96\x14\xdf\x45\xdd\x65\xd2\xa5\x14\xd3\xce\x6e\x5e\x98\x03\x02\xd5\x44\xf4\xe3\x11\x6e\xa7\x80\x58\x34\x7a\x20\x90\x89\x8c\xc3\x15\x3e\x48\x2b\x59\x08\x7a\xda\xb2\x80\xcb\x4c\x19\x9a\xbb\xc2\x25\x12\x67\x42\x33\xb3\x25\xb4\x69\xb0\xd6\xde\x27\x10\x34\x30\x88\x3b\xe9\x84\xc0\x82\x13\x66\x07\x1f\x9b\xab\x13\x19\x6a\x59\xa0\xb7\xd0\x8a\x01\x0b\xc0\xb4\xc1\x2b\x68\x89\x67\xfa\xd4\x98\x12\x79\xb0\xcd\x7c\x73\xaa\x3b\x75\x3b\xcc\x10\xa8\xa6\xf6\xda\x62\x50\xc1\x5d\xb0\xb8\xb4\x0e\xa4\x26\x1e\xa9\xd5\xf7\xb4\x20\xf7\x47\x8e\xc9\x2b\x21\x46\xc0\x0d\xce\xd9\x14\x88\xc6\x7d\x13\xaf\xca\xac\x69\x78\x83\x5e\x67\x2a\xf4\xe5\xe1\xb6\xac\x8f\x5d\x71\x04\x5c\xc5\x86\x33\xb2\xa6\xb6\x8d\x09\x28\x71\x9c\xec\x76\xde\x0e\xee\x4c\x27\xad\x9e\x8f\xfc\xd0\xf5\xcc\x4f\x63\x1c\xaf\xb6\xa5\xa5\x10\xf0\xd0\xaa\xd8\x13\xba\x9b\xa7\xd4\x67\xac\xee\x78\x12\x37\xdd\xa9\xb2\x51\xa4\x35\x5b\x3e\xb7\x42\x08\x78\x5d\xe3\xd3\x5e\x12\x4c\x97\xce\x0f\xf4\x79\x26\x10\xd4\xf7\x90\xdd\xbc\xc2\x79\xc2\xcb\x33\xd1\x52\x2b\x32\x2a\x48\x32\xa5\x16\xd2\x22\x68\x21\xe8\x92\x7b\x3f\x3a\x5b\x29\x3c\x27\x59\xfa\x9d\x34\xce\x99\x5b\x8f\x98\x64\x92\x45\x2f\xa2\x8a\xae\x03\x24\x29\x12\x43\x4c\x9f\xe9\xa5\x42\x7d\x1d\x35\xc9\x42\x94\xa1\x2c\xdd\x91\x44\xe4\x28\x82\x70\x2a\xed\xa6\x0f\xbb\xd2\xf1\x84\x97\x75\x57\x24\xaf\x52\x1c\x3d\x35\x2b\x6f\x6d\x9c\x57\x2f\x43\x86\x34\x7b\xe6\x24\x71\xae\x0c\x08\x51\xe4\xf3\xea\xe1\xd6\xb4\xae\x8b\x02\x43\xa0\x7f\x6f\xc9\x35\x41\x15\x34\x4a\x32\x27\x3b\x79\x54\x28\xe2\x8d\x74\x6c\x22\xb9\x52\x4d\xf6\x3c\xd1\xcd\x2c\x9c\x27\x0d\xdf\xeb\x34\x3d\xef\x5d\x9c\x27\x03\xa5\x9e\x0f\x3d\xdd\x82\x2e\xca\x7d\x8f\x24\x37\x0b\x37\x66\xfc\xd9\x76\x4b\xf8\x4c\xd2\x7b\xb2\x0b\x5b\xb9\xa5\x0b\x19\xf2\x3d\x60\xf8\x01\x71\xae\x0f\xde\x98\x43\x80\x19\x68\xa2\xc3\x72\x60\x98\xb0\x1a\x3d\x11\x40\x42\x49\xbf\x18\x1a\x80\x05\x8f\x1c\x38\x37\xe2\x00\x11\x03\x50\xc1\x2a\x2f\x24\x9f\x72\x31\x21\x64\x44\x96\xc9\x5d\x76\x0b\x2f\x71\x99\xdc\xf8\xf8\x79\x2b\x58\xf9\x71\x19\xcc\x14\x66\x43\x48\x58\x9f\xe1\xc6\xf3\x98\x67\x96\x4f\x99\xf7\x1e\x45\x3a\x68\xdb\x93\x2d\x8e\x2b\xd8\xdc\x6f\xf4\xde\xa9\xf2\x64\x09\x69\x2f\x75\x96\x17\x5f\xc1\xfe\x79\x72\xd1\x4d\x5c\x42\xeb\xde\x27\x06\xa7\x51\x66\xd1\x02\x2d\xe0\x9e\xc3\xa9\x86\x52\xad\xb3\x62\x22\xd5\x98\x88\x3c\xa2\xd6\x2a\xf0\xc2\x32\x07\xe5\xae\x8c\xea\x3a\x58\x8b\xa0\x41\x69\xe0\xa0\xaa\x16\xcf\xb8\xd0\x91\x11\x89\xe8\x54\x08\x0c\x77\xf5\x41\x22\xc8\x88\xa4\x5d\xd4\x4d\xd7\x61\x76\xdb\xfd\x4e\xca\x2b\x56\xaa\xf5\xb8\x4a\x02\x56\x81\x95\x40\x45\xa9\x9d\xb1\xb7\x07\x97\x23\x32\x7e\x73\xc2\x9d\x47\x64\x0c\xbd\x71\x38\x72\xc4\x37\xfc\x7c\xb4\x8d\xed\x67\x57\x7d\xc5\xb3\xa3\x5e\xad\xa2\x25\x52\x52\xed\xba\x94\xf2\x1d\x2f\x7a\x88\x4f\xac\x8a\x4a\xbb\x21\x25\x10\x0f\x6f\xa5\xd9\x30\xdb\xf5\x02\x36\x03\x82\x6b\xa2\x65\x1c\x95\xbc\x0a\x0e\xe4\x03\x7d\x8f\xd4\x6e\x72\x45\xd7\x4b\x4f\x3d\xd6\x38\xf3\x86\x00\xd1\x35\x88\x2c\x5c\x83\x88\xa5\xc8\xb0\xba\xe0\x7a\x7b\x36\x86\x5b\x2f\xf8\xc3\x6a\xed\xd5\x36\x4e\xc7\x8b\x2e\xf0\x42\xcc\x27\xdd\xec\x88\x0d\xe1\x8d\x7c\xb8\x9d\xa2\xd9\xbc\xdf\xfa\x0b\xb7\x05\x37\x35\xed\x17\x88\x6e\x95\x63\x75\xf8\xdc\xc2\xf1\x16\x55\xae\xb8\x2e\x1e\x5b\xf1\x90\xc0\xe6\xa4\xe8\xd9\x4b\x24\xef\x06\xc5\x3a\xe4\x8e\xb8\xc9\x57\xd1\x4d\x25\xca\x29\x17\xe6\xd0\x47\x6b\xcc\x56\x61\xc9\x5f\xcc\x13\x45\x12\x80\xd8\x1e\x77\x0e\x93\xfc\x42\x45\xcc\x59\xe0\xb0\x59\x35\xc2\x55\xac\x22\x2a\x67\xea\x0d\xf2\x49\xa1\xd6\x55\x77\xcf\x50\xf5\x2e\x64\xee\x34\x3c\xf2\x6b\xf7\x84\x3a\x54\x8d\x6f\xeb\xd1\x6c\xb0\x89\x35\x95\xed\x15\xf2\x98\x67\xe7\x71\x6f\x14\x1e\x1a\xfd\xc6\x3c\x56\xce\x3b\x6d\x6f\x8c\x1c\xf9\x40\x88\x95\x16\x46\x3c\xdc\xbd\xaa\xf1\x2d\x8f\x44\xc6\x00\xf6\x16\xbf\x38\xfa\xa0\xf1\x80\x39\x55\x8e\x7e\xda\xea\xa7\x35\xdd\x5b\xac\xc9\xf4\x80\xf6\x28\x3a\x68\x16\x64\x99\x72\x7b\x2a\x14\x32\x5f\x24\x82\x70\xa6\x64\x3c\x51\x3f\x01\x36\x7b\x82\x47\x33\x0b\xcc\x6a\x63\xb4\xc9\xda\xf6\x7b\xee\x26\x01\x02\x2b\x68\x67\x57\x79\x3b\xc1\xf7\x19\x81\x5e\xd9\x81\x39\xbd\x4a\xcb\xe1\xe4\x54\xe3\x19\x01\x95\x4a\x1b\x0d\x24\x1f\x60\x30\x48\x17\x1f\x8c\x91\x69\x21\xc9\x48\x5e\x26\x7f\xa3\x61\x34\x07\x6f\x7a\xb9\x43\x9e\x4e\x93\x5b\xa3\x1f\xd4\x62\x2f\x98\x87\xac\xb4\x15\xa0\x70\xb2\xa8\x6b\xb9\x20\xc6\xb5\x95\x92\x75\x02\xdb\x62\x41\x30\x0b\xcd\x8c\x3d\x22\x8c\x9c\xf0\x48\x16\x8c\x04\x12\x58\xc6\xec\x4a\xcf\xa8\x02\x80\x1b\x29\xc9\x89\x27\x21\x77\x0b\x97\xf4\x8e\x6f\x5a\x8c\xdd\x90\x61\x5b\xda\x2e\x87\x53\xa1\x1f\xf9\x59\x66\xf1\xf4\xd2\xa1\x44\x44\xe5\x80\x66\x12\x8a\xa8\x3f\xe9\x93\x3f\x33\x20\x2a\xc8\x02\xe6\xf4\x45\xca\xed\xcd\xd6\x27\x1a\x9e\x38\xe4\x9e\xc4\x0c\xdd\x27\xe8\x46\x48\xc7\xbd\xb3\xe0\x5c\x74\x73\x60\x01\x69\x80\x3c\xc5\x7b\x88\x06\xa2\x16\xd2\x41\x37\x72\x99\xc2\xa3\x3b\x90\xdb\xdc\x03\xd0\xbb\x48\xc9\xf3\xce\xc5\x40\x23\xb3\x23\x54\xec\x50\xc7\x38\xa2\x18\x86\xad\x20\x81\x3b\x93\x02\x72\x63\xcf\x20\xf2\x71\xa0\x01\x58\xc8\x14\x4d\x76\x77\x18\x7d\x6e\x22\x0f\x49\x5b\x56\x23\x87\x8f\xda\x04\x44\x4f\x77\x58\x2c\x3a\x9e\xc6\xdc\x7a\xf3\x11\x70\x8a\x8a\x42\x25\xbd\x94\x9a\x3a\x07\x72\xf2\x99\x84\x72\xd0\x29\xc0\x61\x7c\x6a\xde\x09\x83\xf7\x40\x6d\x90\x22\x4f\xd0\x6d\x5f\x9f\xc9\x82\x60\x2d\x6a\x1d\x98\x9c\x4c\x30\x20\x26\x08\x69\x65\x28\xb7\xe2\x37\x54\x80\x89\x3b\x5a\x6f\xa0\x4a\xc6\x60\xde\x8b\x40\x09\x8e\x05\xe9\x00\xb3\x1f\x30\x49\xce\x63\xe1\x8d\x2d\x4f\x4a\x8b\x78\x80\xd2\xb9\x30\xcf\xc1\xc1\x01\x21\xac\xa8\xa0\x47\x71\xb3\x68\xf7\x6e\xd5\xba\x76\xc7\xa1\x42\xdc\x67\xed\x3a\xa1\x47\x74\x23\x1c\x2c\xce\x8f\x61\x37\x8c\xa3\xc3\x7d\x10\xed\xa6\x94\xd8\x3a\x14\x44\x6b\x00\xda\x0c\xdf\x38\x43\x8a\xd9\xf0\x9a\x02\xc0\xa9\x6b\x07\x0a\x55\xb7\x91\x68\x37\x7d\x4e\xef\xfb\x0e\x50\x67\xf7\xa0\xa9\x38\xa1\xa6\x94\x4c\x8a\x1c\xc0\x48\x72\x2a\x76\x12\x2a\x5a\xfb\x4e\x99\x06\x6e\x52\xb4\x48\x84\x54\xde\x41\x17\x10\x35\xd6\x8c\x02\xb7\xe7\x46\x63\xce\x09\x40\xa0\x2c\x45\xd4\x6b\xce\xbb\x86\x8f\x45\xb4\x18\x1e\x64\x0c\x8a\x01\x09\x8e\x1e\xf0\xdb\xeb\x5c\x4e\x2f\x55\x94\x3e\x19\x46\xad\x6f\x0c\xc3\x61\x77\x26\xa8\x1b\x03\x0d\x5f\xef\xc4\xec\xd2\x68\x96\x59\xe4\x6c\x69\xda\xd2\xdd\xb8\x33\xeb\x6b\x52\x64\x4a\xe6\xd2\x5c\x4c\xcf\xc2\x90\xf5\xcc\x32\x84\x4d\x60\xb4\x43\x53\x5f\xb2\xa4\xcb\xc5\x96\xd5\x3b\x3a\xd4\x96\x9e\x84\x4d\xbc\xd4\x41\xd4\xac\xe6\x92\xa7\xfd\x7d\x8e\x90\x87\x9f\x22\x3a\x74\x44\x0b\x46\x5a\x1b\x84\x5a\x0f\x7d\x6e\x93\xa1\x6d\xae\x18\x09\x37\x3e\xa5\xc5\xf0\xc4\xb4\x15\x64\x29\x22\x27\x35\xe4\x1d\x62\x1f\x25\xcb\xde\xa5\x0d\xe5\x09\x0f\x10\x4d\x5a\x90\x7a\x81\xe4\x31\x7e\xc3\x9f\x00\xfa\xb0\xdb\x14\x3f\xc9\x8e\xba\xa9\x14\x56\xb0\x69\x93\x15\x13\x6f\xbe\xc9\xc4\x48\x5c\x89\x89\x0c\xc1\x3f\x5d\xa6\x60\x24\x73\x5e\x69\x28\xbf\x5a\x8d\x2c\x62\xdc\x34\x28\xa1\xf0\xed\x92\xeb\xc1\x0e\x40\xc5\x49\x02\x3f\x3a\xb9\x2d\x85\x52\xe0\x1d\x88\x36\xc8\x0a\xa4\xf1\x75\xd2\xa7\x16\x0e\x19\x0f\x02\x05\xb0\xbb\xbc\x81\x98\x1a\x17\xb6\x51\x87\xdf\x77\x90\xde\x75\xef\x50\x3d\xe4\xc8\x35\x84\x58\x1c\xd1\x82\x0a\xf3\x62\x6a\xfc\x44\xe4\x10\x9d\x1b\xac\x69\x23\xcb\x64\x3f\xa6\x43\x38\x41\x50\xb7\x7a\x2e\xe0\xd1\x23\x35\x5f\x58\x58\xc6\xd5\x1a\x10\xd3\xb9\xea\x09\x15\xdc\x73\x56\x20\x7f\x45\x8f\xc8\xdd\x82\xc9\x83\x1c\xc1\xf2\x04\xff\xc9\x5c\x86\x82\x04\xc0\xf2\x26\xf2\x30\xdc\xc7\xc9\x23\xa5\x32\x18\x25\x4f\xb8\x19\x6c\x1f\x62\x93\x8a\xc0\xf5\x77\x59\x4b\x85\xad\x17\x7a\x03\xc1\x30\x05\xb3\xa9\x49\x1b\x10\xe8\x9c\x31\x27\x3b\x59\x4a\xee\x6e\x1c\x33\x07\xdb\xf3\xcc\xf3\x26\x76\x67\xe7\x0a\xda\x49\xa1\x5b\xd5\xdd\x1f\x2b\x39\x2e\x05\x10\xc9\xca\x10\x4b\xf8\x53\x73\xef\xe2\x33\x7d\xc3\xc7\xca\x33\x8a\xd2\x03\x4e\x74\x8e\x07\x80\xe0\x23\x7d\x8c\x40\x36\xc3\x23\x3d\x48\x3c\x27\x9a\x6f\xa8\xd0\xb3\xa3\xc0\xd6\xa1\xe6\x65\x59\x37\x3f\x10\xa8\x36\x80\x58\xb2\x6c\x3f\x79\xba\x32\xa7\x76\x27\x81\x07\x4e\x01\xb2\xdb\xd9\x2c\x48\xa4\x0d\xbb\x33\xa6\xb1\x62\x11\xff\x9c\x55\xee\x79\xdc\x36\x45\x4e\xd0\x5d\x1b\xe9\xc0\x96\x73\x2e\x7e\x48\x14\xff\x6e\x17\xd5\xbc\x51\x14\x00\xd3\x16\x85\xd9\x06\x28\xd8\x0f\xbc\x94\xd8\xb3\xf2\x1d\x6a\x5e\x37\x7f\x4a\xe0\x1d\x7b\x86\x31\xeb\x3d\x27\xea\x9b\x5d\x58\x76\x8c\x91\x0d\x24\x73\x10\x4c\x25\x77\x83\xf4\x06\x3a\xf0\x70\xf5\x93\xa5\xcd\x02\x0b\xd2\x74\x88\x93\x94\x13\x00\x7b\x01\xe5\x1b\x68\xb8\x9a\x94\xca\xd1\x5a\xaf\x09\x20\x48\x0c\xd9\x3d\x6c\xe5\x5e\x40\xb9\x05\x90\x21\xf5\x0d\xe1\x85\x31\x8f\x79\x53\x1d\x17\xd7\xaf\xd5\x33\x05\xa6\x72\x4b\xd5\x26\xdd\x21\x20\x9d\x94\x71\xf5\x13\x19\x83\xb2\x11\x8e\xa1\xf3\x61\x97\xcc\x05\xa2\xb7\x84\xa6\x88\xea\xb9\x67\xb1\xbf\x91\x35\xbd\x24\x35\x56\xfa\x17\x8c\xe2\xe7\x59\xa4\x3e\x14\xcb\xa5\xce\x80\xac\xf9\xa6\x2f\x9d\x57\x9c\x8d\x37\x2e\xd9\x76\xad\x2b\x7f\x0b\xa6\xbe\x55\xef\xb1\xb7\x31\xac\x13\xc0\x59\x40\x9f\xa3\xc8\x4f\x56\xba\x05\x6b\x10\x14\xc0\xb8\x5b\xa8\x76\xcc\xeb\x23\xb9\x31\xdb\xdb\xdc\xc9\x30\x1c\x83\xe9\x16\xa4\x6f\x20\x8c\xa2\x14\x76\x3b\xb5\xb3\xf1\x80\x0d\xf2\xcb\x51\x99\xc7\x2d\x20\x0b\x3f\xe1\x13\xc7\x30\x39\x25\xbe\x82\x9b\x2e\x3a\xd8\xa1\xf8\xc8\x32\x6e\xa0\x02\x35\xb2\xed\x81\x04\xb6\x66\x83\xe8\x30\x64\xa7\x50\xdc\x1b\x7f\x4c\xa5\x63\xb9\x58\x09\xb9\xd7\x0c\xc4\x3a\x4e\xa0\x3a\x19\x16\x6e\x24\x39\x12\xcd\x48\x31\xbd\xf4\x31\x4d\xf4\x1a\xb8\x32\x65\xf0\xd0\x45\x92\x17\xb5\xa1\xa7\x5c\x0f\x0e\xac\x27\x8c\xd3\xdf\xc0\x9a\x6a\x3d\x95\xb0\xb0\x67\x0c\x38\xf7\x6f\x31\xb6\xf8\xce\x8e\x8d\x9b\xb1\x1f\x80\x23\xeb\xdd\x8c\x24\x13\x01\x74\x86\xc0\xed\x51\xba\x20\xf8\x12\xb7\xbd\x92\x98\x4e\xe9\x41\xa8\x26\x60\x58\xaa\x67\x53\x06\x9d\xba\xba\x11\x9b\x17\x57\x99\xdf\x68\x1a\x1f\x6a\x89\xb4\x3f\x3f\x6c\x6d\xcf\xb4\x61\x43\xb8\x1e\x34\xcf\xd4\x60\x63\x90\x90\x1e\x76\x9e\x26\xd7\xaa\x8f\xaf\xd8\xac\x70\x04\x40\x26\x2d\xec\x47\x75\xa2\xb1\x3a\x9b\x04\x23\x88\xa2\x46\x7b\x7d\x42\xb9\x7e\xae\x52\x4e\x47\x64\xcd\x16\x37\x8d\x2d\x0d\x8d\xbd\xc6\x5a\xc1\x3e\xdf\x4d\x7e\x7b\xfa\x2a\x3c\x62\x39\x05\x26\x33\xb8\x92\x2f\x38\xf3\xb1\xa9\x55\x14\xfb\xa8\x7c\xa4\x04\x1d\x2f\xaa\x7d\x97\x06\x9c\x62\xf0\x07\x61\x0f\xbc\xd6\x11\x18\x96\x17\x41\xf6\xc8\x44\x47\x5f\xc8\x4a\xa0\x59\x3d\xe4\x40\x79\xff\xf0\xa1\xa7\x0f\x57\xd6\xd6\x15\x45\xd1\x83\xe2\x0d\x4f\x83\x38\x07\xfb\x58\x07\x7b\xfb\x42\x1b\x2b\x42\x66\xeb\x2a\x09\x14\xf0\x18\x4b\xad\xd9\x57\x1a\xf5\xb4\x24\xd8\xb6\x6e\xbb\x85\x53\xa0\x83\x99\x77\x93\x1b\x0d\x28\x2a\x3c\x63\xf3\x98\xfb\xce\xe7\x71\xb3\x5a\xcd\x0a\x7d\xc1\x49\x41\x23\x0d\x88\x11\x5d\x00\x30\xc2\x71\xdc\xb0\x1f\x43\xbc\x22\x11\x6c\x05\x6d\xe4\x8f\x48\xbb\x99\xdc\xfa\x98\x8d\x4a\x17\x7d\x82\x98\x1d\xd9\x85\x35\xc7\x25\x71\xe2\x74\x5d\x55\x81\xcd\x51\x48\x20\x01\x7f\xa8\x0d\x1d\x4c\x03\x53\xbe\x87\x6e\xcd\xbb\x70\x80\xde\x5b\x24\xcf\x28\x00\x1f\x77\x79\x31\x46\x38\x5e\x7d\xb5\x69\x67\x08\xe8\xfa\x9b\xc4\x4c\xad\x7c\xa4\x86\x48\xd6\xb8\xde\x8e\xc4\xd0\x46\x57\x0b\x00\xa6\xcb\xd8\x00\xeb\x18\x80\xf4\x30\x6b\x8b\x56\x85\x1c\x19\x1a\x4f\xec\x0d\x29\x27\xaa\x67\x5d\x8e\x9a\x35\x1a\x5a\xb4\x19\x55\x0c\x8f\x33\x3c\x20\x64\x36\xd1\x27\x61\x70\x0a\x9e\xce\xa3\x47\x10\xd2\x5d\x3a\x1e\xe7\x93\x01\xc2\xab\xf5\xc0\x6f\x35\xb9\x03\xd3\x74\x92\x5d\x96\x0c\x00\x98\x0b\x51\x2b\xaf\x17\xec\x26\x16\xf3\x67\xae\x52\x29\x14\xed\xce\x29\x13\x7c\xb8\x83\x31\xca\xe0\x77\xea\xc8\x65\x61\x84\xf3\xad\xbe\xfb\x51\xcc\xfb\xcc\x2b\xd9\x90\x03\x91\xf7\x50\x6e\x68\x1e\x80\x49\x97\xd6\xee\xb0\x18\xa3\xa3\x70\x51\xe0\x74\x1e\xe8\x80\x11\x55\x01\x14\xdf\x83\xc0\x04\x6f\x83\x62\x83\x48\x70\x3f\xd7\xec\xac\x6e\x9d\x83\x23\xeb\x58\x63\x8b\xea\xb5\x67\xdc\x78\x63\x5c\xf6\x1a\x0b\xc9\x3e\x85\xf9\x7e\x48\xe5\xfa\x82\x66\x10\x20\xba\xee\xe2\x0d\x99\xdf\xc8\xb7\x05\xbb\xe2\xd2\x4e\x7d\xa0\xb3\xc1\x4e\x3e\x67\x42\xbf\xf7\x47\xda\xc8\xe0\x13\xad\xa8\xe0\x3e\x12\xeb\x34\x11\xeb\x74\x52\xa0\xea\x4f\x02\xee\xf9\x42\xc5\x20\x98\x68\x62\x41\x4c\x9e\x74\xe2\x89\xe7\x82\x14\x62\xf5\xb0\x64\x9c\xf4\x1b\xcb\x15\xae\x90\x88\xf7\x38\xf5\xc9\xa3\x60\x8e\x9e\xdf\xc8\x54\xd8\x3a\x03\x62\x86\x04\x2c\x27\x08\xf1\x8a\x6f\xfb\x31\xf0\xfe\xe4\xc1\xbe\xdb\x20\x0f\xe8\xba\xf5\x06\xcb\x5f\x49\x34\x20\x0f\x58\x6f\x9c\x81\x58\x28\x00\xe7\x78\xe5\x98\x27\x35\x0e\xce\xf2\x0a\x02\x1c\x26\x9e\xdf\x62\xab\x8f\xb9\x69\x05\xb7\x00\x04\x83\xe2\x56\x52\xb1\x60\xf9\x70\x3a\x07\x87\x90\xae\x81\xe5\x5a\x97\x1b\xe3\x31\x0f\xf6\x11\x89\x0e\x0c\x80\x37\x3b\x9a\x51\x77\x6d\xa0\x4d\x4f\x1d\x37\x3e\x33\x8a\xa2\x4c\x74\x55\x7a\xd6\xf8\x9e\xf3\x18\x7b\xbe\x4b\x67\x08\x41\x6d\x4d\xbb\x23\x4e\xb0\x8e\x0b\x1b\x24\xbf\x3f\xa9\x74\x73\x32\xcb\x9c\x27\xa5\xc9\x57\xfb\x52\x49\x21\xa7\x30\x92\xc6\xfb\x70\x47\x52\xfb\xad\xf5\xe1\x26\x01\x8d\x80\x3c\xb9\x4d\x3d\xd2\xb2\x13\x19\x8f\xaa\xbe\xd9\xbd\x92\x46\xfb\xb1\xca\xf7\x1d\x02\x25\x83\x20\x1d\xc2\xd9\xe1\x75\x1d\x20\x2f\xf0\x2a\x33\xbd\x8e\xc7\xe0\x0a\x6c\xd1\xdd\x58\x8b\x93\xd0\x2b\x8e\x06\x05\x82\x63\x47\xa6\xf3\x25\xa6\x2b\x4d\x75\x8d\xdd\x87\x9c\x3e\x45\x8c\xdb\x1e\x1f\x0e\xca\xba\xa7\x4c\x81\x0e\x2e\x50\x20\xaf\x6c\x30\xbd\xbd\x95\x6f\x64\x18\xc3\x87\xca\x1e\x78\x38\x09\xf5\x9e\x8c\x19\xdf\xb7\xac\x59\x4a\x17\x5c\x77\x06\x88\xc8\xa6\x71\x5c\xe7\x6c\x5b\x8e\x26\xae\xbd\x71\xeb\xce\x63\xa9\xad\x92\x2d\x24\xeb\xc3\x54\x92\xad\x90\xca\x31\xd7\x52\x2d\x11\x79\x33\x44\xe9\x1c\x8a\x55\x83\x53\x04\x92\x01\x4f\x2a\x0d\xd4\xe1\x41\x85\xbd\x77\x20\x9a\x26\x8f\xe1\xf5\x22\x44\x86\x03\x80\xfb\xe3\x78\xcb\x67\xb4\xd8\x53\x12\xed\xdb\x8f\x61\x5f\x35\x6b\x0d\x05\x8a\x0d\x3e\x7b\x88\x51\xe0\x26\xd8\xf5\x84\x2a\xf0\x60\xda\x96\xdc\xdb\x09\xd1\x45\xe1\x64\x2f\x9f\xec\xf0\x12\x9c\x90\xbb\x40\xad\x01\x0e\x04\xcd\xed\xc2\x31\xfa\x42\x2f\x34\xd9\x9d\x3c\x91\x69\x1e\xea\x40\xb4\x59\xb9\x48\x01\x62\x54\x54\x16\x4f\xa9\xf8\xcc\x59\x52\xeb\xd0\x5b\x57\xf3\x38\x70\xf5\x6d\x99\x77\x11\xcd\x49\x11\xcd\x2e\x2e\xfb\x41\x27\x4b\xe7\xec\x7d\xef\x52\x59\x49\x9b\xf0\x72\xc7\x72\xc1\xf3\x32\x17\x5d\xae\xa9\x6f\xb8\x5b\x8b\xb5\x7b\x75\xb2\x46\x69\x02\xce\x7b\x32\x91\x24\xd3\x15\xac\xa8\xd7\xd8\x81\x3d\x1f\x0d\xb6\xe1\xa2\x05\x65\x30\x89\x2e\x38\x88\x5d\xd9\xc8\xcf\x5b\x25\x4a\x37\x1b\xa2\xf5\x50\xbd\xb0\x7a\x30\x02\x28\xe0\xca\xaa\xe7\x05\xf0\xee\xae\x81\x7c\x79\xd8\x33\x54\x9d\x81\xb0\xdb\x6e\xad\x38\x6c\xf1\x23\x6e\xa7\xa7\x8b\x31\xed\xf4\xfd\x55\x87\x2e\xea\x0d\x6c\xd2\x25\xf0\xbb\xb1\x5d\x8c\x48\xcf\xbb\x29\xa2\x90\x44\x3d\xe6\x46\xc9\x31\xb3\xc3\x5a\x0a\x6e\x47\x82\x18\xa6\x78\x5c\x67\xaf\x9c\xcb\xa1\x50\x30\x7b\x64\x4e\xa2\xa5\x82\x9a\xce\xde\x43\x8b\xbb\xdc\x5f\x31\x0f\xa0\xe9\xe2\xcc\xa5\x7d\x77\x43\x5e\xf7\x9a\xc1\x9d\x7d\x15\x09\x49\x3d\x67\xcf\xf7\xba\xb0\x4c\x8e\x0b\x2f\x36\xb2\x4e\xa5\x4a\x3b\xd4\x70\xc9\xc1\xdc\xbc\x03\xc1\x83\x1a\x9f\xfc\x53\x2e\x62\x83\x79\xbe\x17\x7d\x1b\x12\x4b\x83\xe9\x1c\x2c\xe0\xd2\x69\xec\x81\xc0\xf3\xb3\x76\x18\x8f\xc8\x10\xeb\xca\x0a\x1a\xb6\xd7\xd9\xab\xe9\xb4\xb1\xb8\x53\x9b\x92\x20\x8e\x8e\x44\xf3\x7e\x73\x2e\x4f\xc1\x5d\x1e\x44\x77\x50\xa4\x12\x6e\x3d\x83\x1e\xd2\x47\x09\xe0\x2e\xcd\xec\x5c\x76\xfd\xde\x13\xb7\x4e\x3e\x4c\x6e\x5c\x13\x1a\xc4\x14\x24\x5b\x69\x32\x5f\x09\x00\xcb\x6f\xa2\xbd\x87\xcb\x99\xa2\x7a\x68\x01\x6c\x9c\x3b\x47\x5e\xcd\x71\xdb\x0e\x53\xbc\x6c\x09\x62\xf2\xbb\x29\x39\xf3\x64\x13\x73\x73\x94\x1a\x75\xbf\x52\xe3\xbb\xfd\x79\x49\x49\xef\x86\x8e\xea\x88\xba\xf2\xca\xab\x9f\xcc\x82\x57\x4b\x12\xc0\x54\x21\xee\xf5\x1e\xf9\x9e\x6c\x07\x7b\x1a\x08\xb7\x68\x3b\x28\x74\xa4\xbb\x0d\x6c\xe8\x60\x7c\xfd\x13\x1f\xd3\x09\xda\xa0\x0b\x10\xf3\x06\x7a\xca\x0c\x5f\x67\xb4\x29\x88\xc1\x55\xaa\xbe\xdf\x00\x72\xed\x26\x0d\xce\x8a\xa0\x3b\x1f\xb4\xe1\x3c\x8b\xe7\x3d\x9e\xcb\x8e\x78\x5c\x0a\x89\xfc\xcc\x41\x52\x9e\xcd\x41\x81\xaa\x13\xf9\x8c\x29\x1e\xb4\x47\xd8\x8a\xda\xe8\xe1\xbd\xf5\x25\xb6\x6b\x5d\x2c\xe1\x46\xd0\xc1\x99\x4f\x2f\x2f\x36\x10\xc2\xef\xc4\xe5\x66\x54\xab\xf1\x34\x2a\xca\xa8\x5a\xb9\x8d\x52\x67\xcc\x6e\x10\xd1\x41\x40\x03\x9d\xf7\xaa\xeb\x78\x6d\x6d\xe8\x6d\x48\xa7\x26\x55\xa7\x22\x21\x83\x98\x0c\x6c\x32\xc0\xdd\x9d\x82\x1f\x5a\xe1\xcc\x2d\xec\x8f\xb0\x3f\xd2\x5e\x36\x2c\xc1\x98\xa9\xd3\x93\x32\xd8\x27\x18\x81\x40\xff\x9a\x2b\x0a\x6a\xc2\x1e\x20\xe8\xed\x54\x74\x4d\xbb\x41\x5f\xb2\x31\xb9\x9e\x73\x22\xa0\xf4\xab\x9f\x99\x93\xeb\x2e\xa9\x75\xaa\xa2\xe7\x3a\x13\xed\xa0\xb8\xcf\x09\x13\xb6\xcf\x3a\x55\xc9\x07\x07\xf2\x87\xa7\xac\x2c\x7a\x17\x5b\x1a\x9d\x89\x75\x7a\x7d\x5e\x35\xb0\x4a\x3d\xa1\x89\xdc\xe6\x06\x14\x1e\xe5\xec\x1c\x22\x54\xa1\x4d\x04\x31\x22\x1f\x69\x3b\x1c\xf1\x3c\xb4\x2d\x3e\xc6\xed\xf0\xfa\x1c\xf1\xfc\x80\x35\x24\x47\x1d\x6d\xda\xb2\x64\x4a\x49\x91\xc1\xe5\x47\x65\x0f\x4e\x24\x3d\xec\x48\x4e\xd5\x25\x9d\xc1\x11\x8f\xa7\x90\xa0\x54\x4e\xaa\x6f\x77\xa9\x7e\xb9\x8a\x52\x4f\x4a\xcc\x9b\xf1\x3d\x4d\xfa\x51\xb9\xf7\xad\x5e\x87\xc4\xb5\xd6\xac\xf9\xc6\xb5\x32\x91\x1b\x5d\x0e\x60\xf9\x19\xad\x23\xb9\x92\x23\x87\x2b\x8a\x61\xd9\x7c\xa9\x03\x8c\xb1\xb5\xe5\x7b\xcf\xf9\x60\x6f\x9e\x10\xf9\x6e\xf3\x4a\xa4\xac\x99\x36\x80\xb1\xe7\xf2\x18\xb7\xf8\x1a\xb7\x4f\xe8\x6a\xa2\xe2\x5e\x4e\x8a\xfd\xd8\x4e\xca\x50\xbd\x58\xcc\x0e\x87\x10\x63\x52\xf5\xe2\x29\xca\xf6\x7a\xf6\xc6\xc5\x1b\x37\x21\x1c\xda\xb4\x93\xc7\xb0\x93\x8f\xb0\x15\x19\x4c\xbc\x08\xf8\x11\x49\x8f\x20\x24\xc9\x09\x64\xe0\x47\x74\xb5\x6e\xce\x65\x1f\x86\x3a\x6c\xe5\x7b\x8f\x68\x55\xf8\xa0\x1e\x6e\x7c\xaa\xc2\x3e\xfb\x71\xd8\x2a\x1c\xd8\xd6\x41\x1b\xb5\xd1\x3e\x26\x2d\x05\xa4\x89\x3a\xf9\xf0\x9a\xa1\xab\xa4\xae\xc4\xa6\xee\x69\xb2\x20\x8c\x81\x73\x9f\x71\xe8\x06\x78\x1e\x2c\xfc\x03\x03\xe8\x5d\x67\x0f\x78\xf1\xb3\x31\xa6\xe8\x8b\xf5\x08\x57\x9f\xe7\xc0\x45\x31\x31\xf5\x4c\x51\x8e\x0f\x5d\x07\x82\xb5\x7b\x78\xe8\x2f\xca\x77\x0c\x30\xee\x18\x62\xdc\x31\x40\x7b\xfd\x46\x90\x27\x72\xf6\x27\x7d\x53\x5f\xfa\x2f\x12\xf6\x19\x5e\x8d\x8d\xef\xe2\xc9\x25\xe4\x3a\xb9\x8a\x6c\x1a\x44\x18\x76\xee\x54\x20\xec\xa9\x1f\x9d\x81\xb8\x47\xdd\xcd\xec\x6e\xcf\xd3\x70\xd0\x0c\x15\xcf\xaa\xb8\x68\x77\xf7\x96\xd4\xe4\xd1\x49\x07\xa2\xe1\x0c\x48\x32\x40\xfe\x31\x3b\x09\x6f\x49\x17\x22\xc5\xdb\xc6\x1a\x70\x73\x2d\x8f\x6b\x3f\xaa\x1c\xb6\x75\x27\xf7\x9c\x55\x5a\x1c\x69\x80\xf1\x49\x34\x27\x2b\x2c\xba\x56\x58\xfe\xca\xa9\xd7\xb7\xcf\x23\x7b\xfb\x3b\x6a\xad\xc6\x9f\xe4\x37\xd9\xda\xfd\x56\x88\x32\x65\x76\xfb\x2d\xed\x64\xce\x7c\xc8\x76\x70\x6d\x29\x88\xa5\xd2\x59\xf4\xc6\x15\x1e\x8b\x86\x0b\x11\xcd\x89\xe0\x3c\xd8\x81\x9b\x0c\x0c\x1d\x41\x0c\x05\xa8\xdf\x31\xa0\xab\x5c\x15\x60\x4f\xf2\xb3\x3f\xb0\xcb\x4e\x3f\x67\xe9\x5e\xf3\x60\xbd\x3f\x75\x0b\x45\xe9\xb5\x98\x88\x74\x1f\x35\xb9\x4e\xc9\x9c\x26\xa8\xbe\x6b\x84\x2a\x57\x1e\x09\x4b\x18\x11\x52\xf5\xb9\xc8\xf6\xb1\xc8\x3e\x29\x51\x9a\x93\x49\x08\x1b\xbe\x8f\x0c\xde\x89\xc8\x22\x5c\x57\x10\xa5\x71\xd4\x9a\x34\x79\xc2\x00\xa3\x7e\xbc\xd2\xde\x2e\x39\x0f\x5c\xb7\xdd\x46\xb7\xb0\x19\x6e\xcd\x19\x6e\xa9\xa0\xa5\x0d\x07\x00\x84\x66\x48\x5a\xee\x80\x0a\xb4\xbe\x15\xbb\xa2\xd4\x7d\x79\x17\x19\x87\xae\xc0\xf3\xa3\x26\x5c\x1c\x9a\x56\x9a\x82\x67\x28\xa3\x02\x38\xe1\x65\x03\xc1\x4a\x1e\x38\x50\x74\x38\x50\x34\xd7\xf2\x79\xd5\xc3\x1c\x41\xfc\x93\x06\x4d\x8d\x06\x0b\x94\x66\x9e\x3a\x5f\x42\xaf\x08\xd1\xab\xd9\xb8\xa1\xaf\xd9\x71\x5d\xed\xc7\xa0\xdb\x2e\x2e\x3b\x0f\x5c\x75\xde\xda\xe6\xc6\xe0\x9f\x29\xff\x50\x67\xa1\x9c\x85\x03\x80\x83\x64\xc7\x08\x4f\x4e\x10\xd0\x81\x32\xa6\xd2\xcd\x57\x3f\x56\xa0\x28\x9a\x2e\x36\x6b\x1c\xec\x67\xbf\xae\xc8\x39\x0a\x0a\xd7\xcc\x85\x17\x45\xcc\x98\xc9\x7b\xb9\x7d\xd1\xe1\xad\xd5\x45\x48\xd1\x45\xd7\x34\xba\xbb\x71\xc1\x9f\x17\x58\xcb\x02\x07\xa1\x8b\x04\x41\x67\x5c\x18\x80\xb0\xbd\xf2\x15\x9b\x5e\x8f\x5b\xb4\x69\xb1\xdf\x0e\x71\xdc\x0e\x84\xdf\x0c\xaf\xbf\xc1\x7b\x4d\x44\xc8\x3e\x4f\x8a\x7e\x8e\x84\x7e\xce\x24\x42\x87\xe8\x4e\x19\x37\x8b\xdc\xda\xe0\x1c\x1a\xdf\x53\xe0\x86\x2c\x79\xc0\xbc\x3f\xdf\x7d\xcb\x6c\x2c\x8d\x8c\xba\x20\x58\x68\x56\xa4\x31\x47\xd8\xf3\x57\x0c\x59\x8f\xe8\xd5\x9d\x8c\xf1\x63\x90\xa8\x95\x40\x1b\x75\xc8\xa7\x85\xcc\xb7\x81\xcc\xd1\x81\xc8\xd1\x81\x2c\x82\x70\x12\x4d\x44\xe7\x5a\x77\xec\x6a\x0c\xb8\x9d\xb7\x45\x3a\xa1\xe5\x76\x42\x8b\xe1\x40\x8d\xdc\x65\xe8\x81\xef\xfe\xb4\x90\x3b\x15\x5e\xd9\x1a\xdb\x44\x79\xd6\xaa\x95\x2e\x52\xba\x33\x40\x63\xb8\x4b\x3b\x04\x94\x3c\xc6\x00\xf9\x67\x4c\x7a\x42\xd4\xb2\x0f\x18\xdb\x40\x71\x7f\xd5\x17\xea\xe5\x4b\x78\x01\x0e\x54\xf3\xb0\x1f\xc3\xed\x2e\x51\xe8\xab\x6e\xbf\x62\x5f\xb4\x5c\x4f\xb4\xb4\xe5\x2e\x9d\x2e\x11\x38\x5b\xe7\x26\x0b\x1d\x4c\x4b\xb6\x6d\x0f\x5c\x77\x4a\x48\x64\xd1\x0c\xcd\x3a\x0f\x2c\x4c\x88\x65\xc5\xa1\x37\xdd\x89\x4e\xc9\xdb\x5d\x3a\x6e\x77\xf9\xa0\xdb\x3d\xf3\x85\x3a\x74\xc6\x4c\x75\xa0\x4d\x3d\x6f\xa7\x74\xde\xf6\x9b\xfd\x18\x6f\xb7\x6a\x2a\x40\xe8\xaa\xca\x97\xc7\x79\x3b\x6f\xc8\x8a\xc2\xe3\x2b\xf7\xa6\x9d\x9a\x86\xd5\x23\xfa\x88\xb0\x58\x2c\x49\xad\x84\xf5\xb5\x6a\xe2\x57\xfd\xd7\x7a\x13\x60\x36\x92\x14\x62\xe6\xa3\x76\xf1\x66\x23\xd7\x61\xcc\x33\xb1\xf8\x84\x2e\x93\x31\xbc\x32\x9f\x17\x4f\x31\x14\x18\x80\x5c\x04\x21\x29\xc9\x6e\x77\xe4\xfc\x49\x85\xf7\x29\x3f\x01\xef\xc8\x02\x0b\xc9\x3a\x0b\xd9\xb6\xb4\x23\x36\xaa\xb1\x23\x35\x21\xe3\x48\x80\x8f\x7e\x51\x3d\xff\x0e\x65\x8c\xf8\xbc\x80\xee\xf2\xde\xa0\x30\x17\x55\xb5\x21\x5a\xee\x9f\xf5\x81\x05\xdc\x5b\x8d\x43\xd6\x67\x27\x52\x56\x96\xdd\x67\x77\x53\xf7\x9a\x78\xfa\x90\x72\x61\x50\x5c\x7f\x07\x29\x33\xc5\x6f\x86\x4c\xba\x30\x9c\x74\x17\x9f\x05\x55\x77\xdf\x06\x28\x8e\xe0\x64\x8c\xe1\x38\x42\x43\x76\xa7\x74\x3e\xe7\x76\xde\x6c\xd2\x09\x48\x4d\x86\x7b\xd5\xd0\x3a\x7c\xc8\x34\x23\x3e\xc5\xcf\xd9\x96\xef\xeb\x7b\x9e\x3c\x29\x83\x27\xcc\x1b\x73\xb3\xdd\x4e\x8e\x1b\x57\xd9\x7a\x06\x60\xc0\x4f\xba\x03\xe7\x76\x32\x7d\xb9\x30\x92\x9a\xf7\x82\x62\xc7\xa6\x5a\x7a\xdf\x77\x03\x66\x33\xec\x37\x90\xb1\x18\x97\xeb\xd2\x9e\x61\xc0\xcf\xb9\x49\xb2\x21\x9c\x73\x90\xfb\xf3\x66\x7a\x82\x6c\x4b\x0f\x88\x01\xa5\xe1\x73\xfe\x81\x2a\xc9\xc9\x8d\x30\x63\xae\xb8\x69\x4a\x65\xfd\x59\x67\x55\xfb\x62\xe9\x52\xc7\x70\xaa\x4d\x80\xee\x7e\x73\x44\x88\x29\x98\xef\x7b\xa2\x4b\xad\x6a\x51\x03\xe9\x15\x4c\x33\x1c\x17\x57\x92\x85\xb5\x25\x8f\x5d\xc1\x6f\x73\x00\xef\xbe\x7a\x1b\xc8\x34\x99\xfe\x2e\x9c\xf1\x53\xa5\xee\xe8\x37\x5d\xf1\x23\xa7\xbc\x54\x58\x1b\x64\xc9\x44\x9f\xfb\xaa\x8b\x92\x21\xee\x53\x62\x5d\x9e\xf1\x71\x3d\x92\x4b\x1e\xb0\xee\xd8\x87\x0a\x2a\x58\x1e\x74\x59\x2e\x19\xd3\xb1\x0f\x54\x9e\x79\xf0\xb8\xa5\xec\xdb\x2b\x45\xd4\x05\x56\xe3\x2f\x4f\x4e\x92\xfb\x28\xb9\x00\x2c\xf8\xb9\x3f\x13\x98\x20\x3c\x94\x0b\x53\x33\xe9\x85\x4c\xdb\xa7\x01\x4a\xdf\x73\x30\x46\xe8\x43\xdf\x32\x2c\xa7\x38\x63\xe1\x10\x60\xf0\x92\x11\xfd\x94\x51\x29\x4f\xeb\x91\xd8\x2c\xc3\xd6\x68\x94\xdf\xac\xa1\x67\x0e\x89\xfd\xd4\x1d\x31\xab\xfc\x13\x75\x09\x31\x80\x18\x89\x21\xee\x8f\x14\x5c\x18\xbe\xfd\xcc\x11\x17\x36\x8c\x2e\xee\xc5\x61\x98\x0a\x72\x01\x15\xf5\x4b\xf6\xbb\xac\x2c\x7f\xd5\x13\x8a\xd9\xd5\x7e\xa8\x02\xcd\x61\x56\x8b\x31\xca\x77\xd5\x31\xc6\x03\x63\x6e\xc2\x6a\x97\xd1\x6a\xf7\x4c\xfa\x29\x27\x53\xaa\x30\x56\x38\x2c\xc3\xd7\x90\x94\x9d\xee\x53\x7d\x98\xfc\x87\x7e\x2e\x5c\x68\x8d\x7a\xc5\x99\x1c\xa6\x98\xd7\xaa\xfa\xe6\x97\x12\xf3\xbc\x47\x7d\xcf\xf5\xac\xa4\x1d\xc1\x91\xba\x2f\xd5\xbe\xf3\xc7\x48\xd6\xa0\x19\x07\xc3\x5f\x98\x32\xbe\xbb\xa8\xec\x72\x3e\x79\x7a\xf1\x47\xff\xce\xc8\x62\x33\x30\x25\xbb\xe7\x2a\x9a\x36\x0c\x83\x7f\xe7\x9d\x69\x6d\x4b\xd6\x18\x8e\xd1\xef\x54\xc6\x5f\x9e\xcc\x8f\x72\xb5\x8f\xb0\xae\x19\xa6\xbe\xf0\x00\xc4\xe4\xd1\xb7\xbe\x81\x31\xf1\x61\xdf\xa1\xd2\x64\xb0\xa1\x8e\xda\xf8\x22\x97\xcc\xf9\x69\x0b\x4e\x34\x6e\xfa\xb5\xe4\x18\x59\x58\xed\xd5\xb9\x97\xec\x0f\xef\xe4\x35\x97\x2b\x4a\x94\x58\x46\xd4\x0e\x8f\x11\xd6\x6f\x7e\xcf\x9a\x38\xe8\x11\x89\x13\x26\x85\xc9\x94\xf7\xbe\x93\xed\xe8\x37\x36\x7a\xb5\x7a\xf7\x67\xde\xcd\x94\x6c\x72\x8c\x73\xd9\x6f\x10\x13\x31\xec\xe7\xec\xa3\x59\x91\x2a\xc4\xaf\xb4\xd3\x43\xb4\xe1\x18\x8a\xe4\x3c\x18\xf1\x33\xee\x60\x06\x32\x78\xfa\x76\x61\x74\x35\x6b\x1f\x51\xcf\xac\xec\xf6\x83\x6f\xa1\x16\x8f\xe9\xa5\x30\x3b\x17\x59\xfd\xee\x57\x31\xd1\x2d\x78\xda\x32\x2c\xab\xa9\xbf\xf1\x39\xc9\x45\xec\x41\x23\x73\x63\xeb\x19\x93\xb7\xb3\x20\x83\x7e\xed\x73\x97\xfb\x44\xae\xf8\xbe\x7a\x27\xc4\x84\x6c\x5f\xf5\xf1\x95\x14\x43\xb2\x30\xf9\x1f\x72\x0d\x6f\xb7\x35\x9d\xf6\xcc\x83\x61\x39\x4b\x76\x1f\x8b\xaa\xa0\xbf\x8d\xeb\x31\x69\xdb\x07\xc7\xf0\x17\x58\xe3\x13\x8b\xbd\x71\xdb\xf7\x78\xb9\x4e\x5b\x02\xdf\x33\xd1\x76\x8d\x92\x31\x5d\x68\x99\x08\xc0\x79\xc8\xe2\x0b\x47\xf6\x89\x63\x7d\x10\xb9\xfe\x70\x1d\x86\xb9\xab\x18\x78\x4d\xa7\x71\x6c\x79\x8c\x07\xbf\xc7\xab\xec\x16\x20\xc5\x54\xc4\xcc\x5c\xb4\x43\x7e\x10\x79\x3b\x10\xc5\xc0\x00\x4c\xf7\xa9\x23\x96\x83\x23\x80\xce\x27\x3a\x53\xc5\x27\x27\x9d\xba\xf0\xdc\x44\xa3\xbf\xbd\xd1\xb2\x3e\x69\xd5\xe3\x30\xc5\x35\x9d\xc5\xe3\xcd\x60\x6e\x16\x4a\x2d\xce\x70\xce\xd8\xfa\x56\xe7\xbe\xe7\x94\xd7\xb4\x03\x91\xcb\x01\xb7\x27\xc6\x70\x4c\x6d\xcb\x3c\x0a\x62\x8f\xcd\xaf\xcd\x26\x66\x8a\x3a\xad\x1b\xaa\x61\xbe\xcd\x76\x6a\x8c\xd0\x6b\x96\xe7\xb2\x78\x16\xcc\xe5\xd2\x6c\x77\x0c\x90\xd2\xbc\xe0\x98\x5d\x0a\x05\x9f\xe1\xf1\xcb\xb7\x98\xe3\xb8\xab\x78\xdf\x9f\x74\x6a\x30\x99\x1d\xc9\x3d\x1b\x72\xcc\x65\xc7\xf2\x62\xc9\xb3\x0c\xb7\xbd\x66\x61\x94\xa7\x50\x7c\xb7\x63\x2a\x0e\x99\x4a\x42\xd4\xb8\x68\x67\x8a\x40\xcc\x83\x65\x7c\x12\x19\xd3\xc5\xd0\x34\xa2\x71\x95\xa6\x67\x4f\xf6\x7b\xdd\x00\x24\xe4\x76\xbf\x93\x27\x69\x18\xfc\x93\xd2\x21\xe6\xc1\x98\xc7\x6d\x53\xb7\x02\xcc\xf3\x43\xba\x4b\xc8\x43\xb8\x5d\x8a\xcf\x9d\xb4\xa4\x65\x54\x9f\x07\x8d\x07\xe3\xb0\xce\x1e\x10\xf3\xe0\xcd\x5a\x5a\x35\xb4\x20\x19\x30\x6e\x07\x25\x31\xb9\x96\xd9\x3e\x77\x18\x37\x7e\x23\xc8\x49\xa0\x81\x27\xfd\xc4\xf8\x9a\xc1\xd8\x5b\x2e\x4e\xf8\x42\xe0\x50\xb3\xa7\x3e\xc4\x0c\x25\xfc\xe9\x63\x22\x7f\xe4\xfc\xb1\x6d\xa0\xd8\xb6\x8e\xd6\xc5\xa6\xcf\x84\x8a\x67\x8f\x4e\x3c\x6f\x80\x48\x10\x74\x62\x71\x2d\xe7\xa3\x90\xf3\x7d\x47\x7e\xd5\x51\x04\xa7\x71\x72\xeb\xf4\xb3\xc6\x63\xc6\xe6\x7b\x2f\xb2\x83\x24\x41\x27\xa7\x87\xaf\xe6\xb1\x32\x31\xe4\x02\xfc\xb7\xb0\x6a\xb5\x7b\x88\x82\x18\x76\xbe\xf5\x83\x10\xf3\xe0\xa4\xe3\xd6\xe9\x45\xc7\x93\xa0\x75\xb1\x2e\x89\xc9\xad\x5c\xf2\x89\xbf\xd7\x54\x0f\x2d\x50\xe8\x46\x81\x11\x19\x44\x31\x63\x73\x0f\x99\x0b\x1f\x86\xa1\x4a\x26\x7a\xdd\xe7\xd7\x7d\x71\xfa\xce\x8f\x26\x86\xb0\xe1\xd8\x07\x01\x10\x01\xf7\xe2\x87\xb9\x58\xae\x27\x18\xc5\x69\xd2\x9b\x0d\x69\x42\xcf\x06\xdc\xf7\x1d\xcf\x43\xa9\xc7\xa9\xeb\xce\x29\x42\x6c\x59\xbb\x28\x0c\x27\xa8\x13\x9d\x6d\x05\xc0\x01\xa0\xfa\xa4\xfc\x52\x48\xf9\xef\xbb\x9b\xe7\xdb\x9e\xdf\xc0\x78\x16\x32\x96\x71\x36\xf8\xcc\x8d\xef\x37\x5b\xaa\xa5\x59\x2e\x39\x86\x32\x60\xa0\x81\xf4\x01\xd6\x07\x4f\x19\xe0\x7c\x7c\xce\x3c\xb7\xc1\xc0\x06\xe7\x0d\xf4\x9a\x8f\x97\xec\x3e\x66\xd0\x93\x10\x43\x7a\xa8\x3a\x32\x49\xc8\xec\x36\x5f\x19\xb3\x6e\xdc\xde\xbb\x5a\x8f\xe8\x1a\x34\xf8\x61\xcd\xeb\x84\xd6\x9a\x35\x6a\xf6\xe8\x99\xa3\xe7\x55\x61\xcb\x59\xb2\xf8\x68\x8e\x15\x7e\xae\x0b\xbd\x55\x29\x5f\xa6\xf7\xb5\x1b\xe2\x68\xd3\xc8\x2e\x26\x4d\x62\xb0\xfc\x11\x46\x10\x3a\x26\x8f\xc7\xa0\xfa\xbc\xc1\x04\x24\xb1\x7f\xc6\x24\xa3\x66\xd3\x02\x93\xf7\x81\xc2\xae\xa9\x19\x8c\x5a\x2e\xbe\x46\x43\x79\x76\xc4\x57\x0f\xdf\xe6\x46\xed\x70\x91\x93\x28\xcf\x41\xa9\x07\x65\xa0\x0d\x0d\x5b\xdc\x87\x9d\xa8\x51\xa2\xc5\x32\x17\x6f\x82\xde\x62\x91\xb8\xcf\xc9\xeb\x73\xdd\xfb\xbc\x1b\x8e\x34\xac\x61\xf6\x22\x0a\xfb\x1c\x3e\x64\xce\x8f\x4f\xc4\x3f\xf4\xfa\x0c\x84\xb6\x95\xb5\xd7\x6c\x79\xbc\x9a\xc3\xb3\xc3\x96\x68\x8c\xda\xa8\x4d\xdb\x49\x8e\x27\x36\x9e\xf0\x42\xe1\xc4\x1d\xca\xae\x3b\x16\x71\xb9\x9a\x06\x0a\xec\xa3\xe8\xa4\x36\x6b\xa0\x36\x93\xe2\x97\xdc\xfc\xfd\xfb\xb2\x97\x0e\xc1\x8d\xb8\x22\xa0\x0f\x6b\xe6\x15\x09\x3c\xc1\x7a\x44\x8f\xa8\x8d\xdf\x1b\xf6\xd7\x67\x4c\x2e\xfb\xcd\xb9\xa9\x55\x4c\xc9\xaf\x7e\xf9\x35\x73\x80\x28\xcd\x80\x28\x0d\x66\x10\x6d\xc4\xfa\x3d\x3c\x9e\xcf\x83\x0b\x71\xdd\x7e\x4c\xb7\xf3\xd6\xc8\xb6\xbb\x68\xb6\x3b\x28\xf6\x83\x32\xb4\xb3\x90\xa0\xd1\xd6\xf8\x10\x30\x16\x06\x84\xb4\xa2\x40\xe9\x22\x80\x69\xd4\x21\x50\x93\x28\x89\xb6\x51\x86\x60\xc4\x87\x65\x0d\x54\x8d\x10\xe2\x59\x5d\x35\x19\xfd\x61\xbf\xc9\xd8\x91\x0a\x51\xe3\xba\xc1\x59\x5e\x70\x18\xa9\xd6\x21\xa2\x9d\xe9\xa6\x1d\xe9\xa4\x1c\xf3\xa4\x38\x52\x6d\x34\xc7\xc5\xdc\x48\x65\x18\xe3\x76\x9d\x56\x62\x25\x57\xf2\x35\x5c\xe4\x68\x43\xfa\x57\x74\x57\x7b\x5a\x78\x44\x7e\xd4\x46\x48\xd6\x44\x88\xd7\x44\x6d\xd2\xd3\xc1\x24\x90\x47\xca\x97\x98\x9e\x75\x1e\x9c\xa1\x19\xba\x90\x39\x84\xb4\x27\x84\x01\xd3\x09\x54\xeb\x16\xa0\x28\x43\x13\x4f\x14\xd3\xf5\xcf\xde\x8f\x91\x2f\x9d\x4d\x1d\x00\x05\x6b\x77\x57\xd0\xd8\xa0\xcf\x84\x3e\x9d\x94\x93\x2b\x67\xb5\xc6\x7a\xe5\xb2\xdf\xec\x4a\x41\x9d\x68\xd2\xb2\x4d\xac\x87\x21\xf1\x61\x3a\x57\x1a\xc2\x6f\x75\x95\x2a\xe6\xd6\x3d\xda\x7e\x56\xb8\x67\xaf\x70\xaf\x79\x7f\x77\x8c\xfd\x0e\x18\x70\xbe\x6d\x04\x00\x2f\xb1\xdf\x2c\xb1\x8f\x2e\x24\xf0\x94\x68\xc3\x5b\xc9\x68\x0b\x34\x8d\x46\x25\xa4\xbc\x01\x97\x4f\xbd\xf0\x4f\x56\xec\xb1\x69\xf1\x46\x7c\x77\xbd\x66\x88\x5d\x81\x75\xbd\xa3\xe3\xf4\xea\x4a\x91\x28\x8d\x66\x45\x42\x54\x73\x7c\xdd\x1f\x85\xa1\xa4\x45\x50\x9f\x79\x62\x43\x83\x6a\x43\x83\xe2\xe2\xba\xc3\x8c\xcb\xbe\x2e\x67\x8a\x68\x11\x05\x16\x24\x41\xf7\x90\x6e\x33\x77\xef\x2a\x1d\x92\x68\x94\xe4\x67\x2e\x7d\x32\xd6\xaa\x2b\xb8\x3f\x02\xa9\x27\x44\xb1\xd7\xcc\x44\xe2\xed\x56\x38\x17\xb5\x98\x27\x68\x7e\xef\x49\x9d\x7a\x42\x1a\x4e\x11\x45\x87\xe3\xc8\xcc\x9d\xfb\xc3\x7d\xb6\x2e\xe4\xe1\xbe\xdf\x0c\xb6\x3f\x28\xf6\xc8\x16\x35\x05\xb7\x31\x52\xcd\x7a\x57\x00\xc5\x25\x13\xa3\x83\xf7\x37\x84\x5c\xda\x61\x59\xd1\x5b\x1d\xb3\x3c\xc1\x7c\xce\x9e\x97\x9a\x0a\x56\xf0\x54\xc9\x33\x84\xd8\xaa\xc4\x92\x12\x57\x5b\x52\x7e\xcc\xbe\x2a\x1c\xc8\xad\xee\x7b\x65\xae\x9a\x7d\xa5\x11\xed\xee\x42\xf0\x92\x78\x0b\x69\x21\xb3\x03\x1f\xed\xc7\x3e\x3b\x9e\xbb\x6a\x37\xdd\x2b\xe0\x8f\x90\x3e\x8f\x73\x72\xb5\x90\x65\x8c\x1f\x74\x4a\x26\x7a\x34\xdd\x04\x6f\x0d\x82\xc9\x5b\x48\x8c\x0a\xb5\xe9\x02\x96\x60\x7a\x17\x19\xf3\xdd\xe9\x70\xc5\x0b\x82\x11\x99\xc6\x27\x10\x76\xe4\xe0\x8d\x65\x70\xe2\x04\x1c\x6e\xf7\x27\xaa\x41\xc5\x8e\x23\x28\x81\x50\xf7\x3e\x16\x3d\xd8\x09\x3c\x8d\x4c\xcf\x1b\xcf\xcc\x70\x74\xf1\x44\x8b\xa0\xd3\xd9\x79\xf6\xc6\x73\x22\x18\x09\x14\x21\xf4\xac\x9e\x7d\xeb\x0c\x67\x4f\xae\x4f\xa5\x27\x25\x28\x81\x1b\x1a\x44\x9d\xde\x57\x36\x1e\x44\x89\x4e\xfe\x56\xe7\xca\x5c\x85\x35\x9a\x98\xa7\x11\x93\x6b\x41\x86\xf5\x05\xad\xdf\xbe\x6b\x80\x8b\x6b\x4b\x41\x95\xe6\xa6\xe7\xed\x34\x3c\x2d\x71\x3b\x67\x20\x0e\x7f\x44\x66\x44\xe6\xec\xc7\x70\x50\x79\xe3\x35\xbe\xd7\x0e\xd6\x78\x93\x47\xf3\xe5\x4c\x33\x99\x6d\xe7\x05\x08\xe3\xab\xc9\xb7\x59\x71\xdb\x5a\x27\x9e\x47\x8f\x94\xeb\x32\xdd\x3e\x6b\x6b\xe9\x8b\x01\x79\x47\x45\x07\x7f\xba\x1b\x45\x48\xdc\xcd\x18\xbd\x28\x50\x9b\x03\x51\x6b\xa9\x94\x90\xb4\xb5\x65\xbd\xa1\x4c\x4a\xb7\x24\x80\xd2\xf9\x12\xd9\x33\x49\xcb\x93\x07\xa9\xaf\x93\x37\x51\x9b\x71\x96\x1b\x11\xc8\x0a\xc9\x84\xd3\x25\x35\xd0\xeb\x31\x4e\xd3\x95\x0c\x42\x35\x18\x07\x65\x48\xa6\x3b\xbd\xac\xbe\xda\x74\x37\xa8\x0c\xb8\xef\xfd\xb5\x58\x1d\x9a\x80\xd2\x00\x99\xa8\x68\x6d\xe5\x13\x0c\xd0\xf1\xa4\x78\x91\x3b\xd1\x41\x4f\xbb\x7b\xe8\x0b\x6b\x02\xe7\x33\x90\xe9\x20\xa8\xf7\xe9\xed\xde\x13\x1a\x24\x1d\x55\x13\xb5\xd1\x1c\xa8\x14\xa0\x1e\x40\xe0\x35\x4f\xe4\xe6\x08\x3b\x70\xbb\x5b\xed\x32\xc4\x77\x28\xb5\x57\x97\x80\xfd\x0e\x05\x8b\x22\xf5\x55\xfc\x6e\x34\x8c\xf8\x51\xcb\x18\x06\xca\x02\xbf\xeb\x9a\x65\xdf\xe7\x1a\x7c\x72\x13\x04\x3c\x46\x8f\xc0\xc3\x19\x1d\x3c\x45\xa7\x22\xf0\xac\x6d\x59\x0b\x82\xee\xdc\x9e\x67\x7d\x55\x77\x57\x42\xcb\x47\x14\xc7\xeb\x78\xa5\x9d\xd4\x15\xac\xc0\xae\x4b\x2a\x59\xe0\x52\x17\x9d\x81\xc2\xdb\x23\xc3\xc4\x7c\x71\xce\xf3\x70\x2f\x38\xa2\x6d\xba\x70\xb9\xa4\xdf\x6a\xb3\xe9\x6f\xba\xd0\xb4\x79\x91\xc3\x84\xbd\x6b\xc8\xcd\xf7\x84\x3c\x5b\x74\xed\x8a\x68\x75\x38\xd4\xb3\x82\x72\x24\x9a\xe6\x7a\x77\x56\x07\x2d\x20\x1d\x04\x3d\x50\xa6\x19\xa0\x4c\x73\xae\xbc\x35\xfb\x6a\xfc\x94\xf0\x4c\x73\xa7\x39\x61\x30\x9d\x5f\x0d\x1f\x40\x97\xc4\x55\x7d\x42\x64\x43\xe3\x0e\x61\x18\xd5\xca\x47\x7a\xfa\x66\xd5\x7c\xce\x1a\xa2\x08\xd3\x45\x00\xe2\x53\x0e\x5e\xce\xc8\x3a\xdd\xca\x40\x49\xb9\x71\x91\xe8\xca\xde\x35\xb8\x79\xe5\xf6\x2d\x59\x0c\x98\x25\xf1\xfa\x58\xb8\x8b\x15\x4f\x7e\xe4\x45\xb9\x07\x13\x74\x7c\xad\xb0\xc2\xb9\xc7\x9b\x0b\x6b\x36\x15\x01\x60\x3e\x27\xc2\x7e\x4b\xe7\xb3\x75\x8f\x02\x4c\x8f\xae\x1f\xf5\x7b\x6b\xb7\x17\xd5\xf8\xa8\xe1\x12\x57\x4e\x42\x32\x4d\x28\x49\xb7\x54\x27\xdb\xa6\x30\xd5\x58\xf9\x44\xc5\xd3\x71\xc2\x39\x50\x7d\x53\x25\xed\x13\xa2\xb7\x18\xd8\x56\x43\x2b\x53\x81\xf5\x2b\x81\xe1\xca\xe9\x48\x48\x10\x6e\xa6\x1a\xd3\x85\x61\x9f\xb2\x7d\xa5\xc9\x4d\xbc\x57\x10\x51\x68\xce\x9d\x32\xab\x30\x68\x87\x91\x18\xd3\xa2\xc0\x1d\xc3\x60\xb9\xe3\xd3\x7f\x38\x25\x6e\xa3\x0e\xa7\x7d\x10\xc8\x51\xf6\x69\xdf\xf8\xd8\x7e\xac\x4a\x42\xb7\x87\x6e\xf7\x63\xdd\xb6\xb1\x16\x82\x22\x05\x10\x3b\x86\xa5\xba\x88\xc6\xa4\x11\x58\x7c\x2a\x5f\xad\x4b\xb4\x6c\x5b\xd7\x55\xcf\x72\x88\x6f\x56\xf1\xea\x11\xb7\x0d\x14\x5a\x0f\xce\xd1\x52\x0d\x34\xe5\x18\x08\xe2\x76\x11\x01\xd5\x34\xfa\xb0\xf9\xd6\x37\x97\xa2\x02\x06\x00\x95\x77\x1d\x02\x0f\x89\xe5\x2f\xf3\xab\xdd\xd2\x96\x6d\xf3\x03\x00\x14\xbb\xdb\xc3\x05\x6e\x77\x89\x5c\x11\x43\x68\x2d\x24\xed\x26\x8b\xf5\x73\xaf\x1b\x9a\x19\x49\xee\x97\xf0\x3e\x15\xbc\xdc\xe5\x30\xe4\x15\x41\x5e\x14\xb3\x60\xf0\xda\xf8\xf2\xf9\x33\x5a\xd6\xa8\xc7\xcc\x72\xfe\x96\x83\x78\x0e\x29\x0c\x04\xed\x72\x43\xb4\xf2\x65\x1c\xd4\x9a\x0d\x8a\xb4\x68\x96\x8b\xc5\x98\x0e\x7e\xd1\xf2\x09\x2c\xb2\x90\x4a\x0d\x91\x3f\x7b\xca\xad\x20\xf3\x28\xaf\x25\x48\x22\x3e\x42\x2d\xca\xb1\x36\x42\x82\xc1\xda\x9d\x04\xa0\x79\xdd\x5e\x7d\x7c\xdd\x24\x21\x3c\x6d\x6b\xa0\xee\xbd\x64\xe9\x17\xf7\x72\xfb\xf4\xd1\x03\x6f\xcf\x2c\x06\x28\x60\x18\x4c\xf9\xd5\x54\xd5\x48\xa2\x1d\x70\x36\x0f\xf7\x88\x8a\x74\x60\x9b\x88\x20\xe8\x70\x38\x12\x6d\xd7\x2b\xcb\x5a\x3f\xb7\xa9\x6b\xe1\xc4\xb1\x43\x67\x2a\x18\xd1\x8e\x24\x7d\xeb\x8c\xfe\x15\xcf\x55\x3a\x35\x8b\x30\x2d\x21\x46\x03\x52\x3d\x9f\x8f\x67\xc3\xd9\xdc\xe5\x5b\x6a\x97\x06\x15\x00\x41\x3a\x07\x81\x18\x55\x71\x4b\xe9\x06\xcd\x71\x1b\x71\xdb\xd0\x21\x36\x1f\x37\x7e\x06\xe4\xc0\x21\xb2\x03\x8f\xd1\x62\x69\x13\x1d\x32\x9b\xc7\xd8\xf8\x13\xcd\x67\xf9\xe6\x93\xcb\x75\xf2\x12\x87\x4f\xc0\x91\xd4\x07\x82\x8a\xbd\x40\xae\xc3\x76\xe7\x1e\x83\x7e\x9f\x08\x0e\x07\x49\x65\x27\xd6\x52\xe3\x08\x22\xba\x7e\x9b\x85\x2f\x37\x07\xa2\xc1\x74\x03\x01\x1c\xbc\x0b\xfd\x8c\xc9\x36\x1c\xfb\xa2\x98\x4c\x49\xd1\x67\xfc\xd0\x5a\x3b\xf6\xaa\x21\x1b\x99\x9d\x82\x79\xae\xde\xa5\x7a\x44\x79\x4e\xd1\x08\xa8\x9e\x54\x5b\x0b\xc6\xf5\x89\x20\xd8\xbc\x6d\xb4\xea\xc3\x35\xae\xdb\xce\x03\x47\x42\x9a\xa6\x2a\x8d\xd2\x7b\xd5\x34\x9d\x8f\xbd\x00\xcb\x0b\x22\x48\x62\xd9\x75\x9b\x2c\xf7\xaa\x40\x7e\x09\xf9\x67\xb4\xf9\x13\x3e\x2b\xc5\xad\x9e\x49\x02\xd8\xda\xbc\x28\x68\x61\x5c\x32\x49\x69\x63\xbf\x1b\x4e\xf8\x89\x92\x48\x3a\xda\xd2\x69\x47\x2a\x22\x9e\x15\x46\x6b\xf0\x1d\x1b\x6c\x68\xec\xd4\xe6\xe5\x3b\x2d\x3b\x5e\xb8\xcf\x58\x63\x4c\xbe\x82\x80\x79\x03\x19\xd3\xbd\x2a\x75\x48\xe8\xe8\x46\x32\x85\xd5\x0d\x44\x7a\xa8\xd2\xba\x23\xc0\x8b\xd7\x60\x97\x87\x0b\x02\x9b\x3e\x28\x63\x8f\x57\x1b\x28\x0b\x23\x1d\xd8\xdc\xc3\x85\xb4\x7b\x4c\x53\xcb\x30\x39\x63\xda\x5b\xd0\xb2\xbc\xfa\x72\xac\x74\xd5\x96\xcd\x2f\xcc\xf6\x8d\x0e\x7f\xbc\xdc\xbb\x00\x37\xd2\x80\x6a\x5b\xbe\x48\xbb\x92\x76\x32\x7f\x02\x90\x61\x87\x6d\xd5\x35\xd6\x83\xb3\xe4\x84\x3c\x71\xef\x81\x2e\x57\xaf\xaf\x4a\x7c\x59\x51\xb5\x42\x4e\x7f\x22\x7a\xe5\x00\xc0\x8d\xe8\x3a\xb4\x41\xd2\x4e\x56\xaa\xab\x54\x4b\xb5\x02\x50\x6a\x0b\xd6\x3d\xa2\x45\x1e\x66\xd2\xb7\x6f\xfe\xce\x28\x33\xbd\x2d\x06\x08\x36\xd3\xd3\xc2\x6d\x01\xae\xcc\x02\xa7\x69\x9a\xb8\xc3\xc0\x1a\x09\xfb\x25\x35\x3a\xd9\xed\x34\x6a\xe4\x2e\x43\x3c\xf9\x49\x12\x04\xb9\xd7\x0c\x89\xc9\x55\x42\x38\x65\x09\x98\x17\x63\xd4\xc7\x42\x75\x09\x27\xf9\xbc\xdd\x31\x5a\x49\x73\xec\x60\x0f\x96\x47\xb5\x07\x44\x01\xb6\xf5\xde\xf7\x32\xcc\x40\x80\xbd\x1f\xbc\x9c\xda\x52\xaa\x07\x11\xa9\x02\x4d\x1f\xf4\x3d\xce\xf6\xba\xbe\x75\xfa\x39\x57\x52\x41\x72\x95\x15\x23\x34\xd8\xf0\xd1\xd5\xb9\x48\x4f\x0a\xf4\x84\x2a\x34\xb9\xf9\x12\x3a\x4c\x28\x34\xb1\x4b\x83\x09\x7c\x0f\x01\x43\x81\xc9\xdb\x7e\xb3\x2f\x08\x00\xad\xc7\x8d\xee\x82\x8a\x4f\x01\xa6\x94\xde\xa5\xe2\x1e\x10\x1c\x78\x02\x3c\xc4\x2f\x5a\x67\x3e\x78\x19\xbd\x03\x57\x7c\x6e\x2c\x4f\xcb\xbd\x2d\x29\xe9\x6d\x81\xf5\x99\x14\xe8\xe9\xda\x8f\xca\x5d\x14\xd1\x19\x52\x4e\xdd\xf1\xca\x4a\x98\xe8\x14\x04\x75\x1e\xc1\xca\xe0\xb4\xec\x7b\x8b\x18\x17\x47\xb4\x90\xcc\x61\x46\xee\x0a\x80\xc4\xbb\x3c\xbc\x70\x97\x08\x9d\xec\x1a\x72\x7a\xd6\xde\xa4\x82\x15\x30\x2c\xdb\x3a\x5c\xa2\x8b\xa7\x55\x66\x2a\xf2\xfc\x09\x85\x62\x85\xeb\x0a\x7a\x0a\x11\x2f\xd3\xc4\x26\x88\x8f\x5d\x72\xe2\xd0\x67\x34\x76\xd2\x8a\xa2\xc8\x5d\x58\xc8\x87\xae\x6c\x1e\xb5\x4d\x83\xfa\xf0\xea\xe5\xcf\x37\x3a\xc6\x47\xcf\x79\x61\xa2\x60\x04\xd1\xc1\xcb\xf2\xcc\x19\xb3\xba\xc9\x8f\x3c\xd3\x34\x0d\xde\x41\xd1\xb9\xd5\xf3\x72\xa4\xdd\x25\x05\x01\xb7\xba\x54\x92\xe0\x9f\x02\x4c\x6d\x46\xe7\xdc\x4f\x2a\x4e\xce\xc4\xe1\xda\xeb\x00\xe7\xc3\xe2\x03\x74\xbc\xb6\xf6\x8e\x0d\x5e\xa8\xca\x31\x9a\xad\x78\x6d\x55\xfc\x0d\x45\x08\xe8\x5d\x1e\xae\xac\x15\x63\x13\xd7\x6d\x20\x3c\x9f\xba\x73\x48\xa2\x11\xc8\x38\x5d\x4d\x62\x97\x73\xab\xdb\xc8\x5e\xde\xb1\xfd\x2a\x56\x10\x31\x1c\xe1\x19\x5c\x0d\x03\x1c\xe4\x07\xd5\x5c\x94\xa7\xdd\xb9\x63\xb3\x6e\x00\xea\x47\xee\x1a\x28\x02\x29\xb7\x89\x06\x9f\x56\x16\xb7\xec\xe5\xa2\x80\x9f\x31\xc4\x55\x7d\x2e\xf2\x24\x7e\xda\xc6\xe5\x48\x96\x03\xdb\x3a\xb5\xe1\xc6\xf0\xee\x2a\x76\x3b\xdc\xc9\x03\x92\x8c\x0a\x73\x76\x26\x8b\xa2\xdb\x30\x54\xa2\x01\x0a\x52\x26\x9a\xd0\x64\x96\xd2\x6b\x66\x59\x9a\x65\x1b\xe3\xb2\xf7\xc8\xc3\x16\x7d\x80\x22\x02\x06\x7b\xd1\x90\x8b\xcf\xf8\x49\x37\x81\xdc\x14\x02\xa0\x5f\xb3\x64\x63\xc3\x77\x34\xeb\x5f\xf5\x75\x8d\x9c\x9e\xb3\x91\xa8\xc5\xfb\x9b\x61\x28\xbc\x17\xb7\x77\x61\x71\xa4\xf8\x1e\x81\xd4\xce\xe9\xaf\x49\x10\x92\x7a\xae\xf7\x24\x29\x3d\xce\xf2\x35\x82\x33\xb6\x6b\xb1\x9e\x32\x2e\x19\x8d\x5b\x81\xba\x33\x88\x23\xb5\xf2\x91\xa1\xe4\x32\x69\x19\xc7\xf4\x8f\xf0\x63\x26\xd5\x2d\x84\x5a\xac\x61\x77\x69\xdf\x4f\x04\x0a\x09\xa1\x44\x3b\x99\xa0\xb4\xcb\x4d\x05\x0b\x20\x07\x68\x6f\x84\x7d\x08\x5b\xfb\x88\x97\xa2\x97\x5c\x4f\xb3\x7b\x52\x93\x59\x62\xf1\x14\x10\xaf\xbc\xce\x81\xea\xd9\x70\xe8\xfd\xd4\x5a\xc2\x46\xe0\xc5\x61\x72\x8e\x12\xd6\x9b\xf0\x5e\x2f\x18\x9c\x37\x77\x3d\xe9\xc0\xe7\x45\x68\x62\xb8\x7e\x86\x06\xb6\xf8\x67\x78\x0a\x98\x30\xa1\xd3\x51\x23\x08\x41\x57\x0e\x9e\xca\x21\x7c\xdd\x0a\x14\x00\x70\xc5\x79\x20\x8d\x50\x6a\xf2\xb8\x14\x45\x91\x21\xb4\x52\xcf\xd2\x09\xdc\xe2\x44\x3f\xa1\x9c\xa7\x75\x56\xfa\xac\x47\x9c\x09\xa7\x44\xb6\x22\x51\x1b\x55\xe6\x2c\x71\x37\x1a\x8c\xf0\xc5\x87\xdd\x31\xab\x28\x71\x19\x3d\xb5\x19\xf7\x64\xc5\x42\x20\x90\x10\x92\x9c\x9e\x77\xed\xcc\x45\xa3\x34\xa1\xcd\x23\x41\x4a\x32\x92\x10\x51\x5c\x83\x5f\x80\x4c\x74\x20\x48\xbf\xdc\x4f\xc6\xe7\xf8\xef\x7e\x0c\x4c\x31\x14\x5c\xf7\x31\x11\xb8\x67\xa9\xdd\x13\xe4\x99\xa3\x28\x81\x9a\x14\xc6\x5f\xc2\x44\x3b\x9e\xdb\x78\x40\x15\x8f\xa7\x48\x98\xc0\x30\x9c\xbb\x0d\xad\x8b\x12\xcb\x38\x17\xd0\x78\x9a\x4f\x70\xa4\xf3\x8b\x02\x77\x3c\x84\xfa\xda\x3d\x44\x8c\x1b\x1b\x4a\xf2\xb7\x1d\xa7\xc9\xc5\xb6\xcc\x75\x64\xc5\xe7\xb4\xb1\x1d\x56\x45\x46\xa2\xe5\xba\xbb\x40\x09\xec\xe0\xc9\xcb\x96\x6f\xfa\x5d\xda\x21\x7f\x13\x76\x65\x9e\xd4\x69\x02\x57\x7d\xeb\x4d\x4d\x50\xec\x07\x00\xd0\x38\x82\x09\xdc\xab\x27\x74\x16\x94\x44\x2e\xf5\xe5\xf2\x7d\x37\x7b\xbb\x37\x00\xb6\x3a\x12\xa1\xd4\x1c\xeb\x1f\x34\x45\x91\x97\xfd\x62\xb6\xd2\x50\xf5\x4b\xd6\x8b\xe4\xb4\x05\xb1\x74\x3c\x04\x0b\xf0\x1f\x83\x4c\xed\x00\x82\x42\x61\x5a\xba\xb0\x15\xae\x57\x91\xe6\xcd\xde\x4f\x75\x81\xb3\xa1\x65\x52\x76\x9d\xed\x2f\x97\x4f\x9d\x97\x14\xdc\xe6\x40\x61\x86\xa6\xab\xfa\xea\xd2\x66\x81\xb8\x33\x75\x58\x03\x37\xe7\xb2\x6b\x3b\x7a\x9e\xf0\xa8\x99\x85\x02\xe2\xad\xc4\xdd\x6e\x3c\x4d\x83\xa2\xeb\xca\x2c\x91\x0c\x70\x0c\x14\x9a\x02\x2b\xcf\x52\x40\x48\x14\x0f\x1f\x75\xd8\x30\x29\xf7\x6d\x9c\xe3\x25\x2c\xe5\xd9\x6c\xb7\x28\xf5\x9a\x01\xc1\x4a\x5e\xf9\x7c\x8d\x2a\x9f\xf3\x5a\x7c\x39\x21\x0c\x42\xa1\xbe\x40\x57\x74\x4b\xbc\x4e\x4b\x45\x11\x92\xec\x7a\xf4\x88\x95\x58\x32\xca\x4f\x4e\xb7\xf7\x6e\xbc\x74\xbc\x2d\x44\xfb\x5f\xe1\xc5\xd0\xf4\x2e\xd9\x17\x74\xb9\xc6\xde\xf5\x8e\xf5\x07\xda\x19\xa8\x36\xf9\xb1\x88\x5d\x79\x24\x1f\xbc\xa6\x30\xba\x93\xb8\x19\x0d\x01\x27\x2b\x11\xf7\xb3\xcc\x00\x2c\x7f\xe5\x9f\x01\x0f\x16\x45\xd6\x6b\xec\xd8\x70\xdd\xbd\x83\xae\xd7\x0e\xa2\x9a\x8b\xc4\xdc\x9f\xdf\xf6\x23\x8c\x4a\x93\x39\x40\x03\x77\x2a\xbf\xc3\x7a\x95\x90\xe4\xe9\xc4\xbc\x79\x70\x90\xb8\x4d\xf7\x65\xc5\x81\xeb\x14\xfa\x42\x45\xf8\xcd\x40\x20\x00\xd6\xdd\xb1\xcb\x16\xd9\x6e\xc3\xce\xa8\xb2\x45\xd3\xcd\x89\x13\xb2\xe0\xac\x9e\x7a\x72\x65\xc9\x7f\xcc\xd3\x3c\xb3\x91\x03\x99\x0f\x63\xdc\xe2\x6e\x5c\xe4\xbe\x82\x87\xbe\xc0\xa6\x3b\xa7\x48\xf5\xed\xae\xed\x04\xbc\x43\x15\xda\x3b\xcf\x54\x83\xe8\x0c\xa1\xbd\x54\x98\x77\x5c\xb5\xc7\xf9\x2e\x6d\x2a\x9c\x0f\x90\x0b\xa4\xc6\xd5\x3f\x91\xa8\x14\x58\xbe\x5f\xd4\xf7\xfa\xc9\x00\x9a\xcf\x96\x00\xd5\x6b\x81\x65\xbb\xab\xaa\x69\xcf\x60\x99\x33\x4b\x1f\xc8\xb7\x9d\x20\x3a\x90\xf9\xb6\xa0\xd9\x33\x15\xd9\x3a\x9c\xe5\x7a\xce\xea\x76\x18\x9e\xeb\x80\x1a\x57\x25\x68\x69\x7d\x84\x90\x40\x01\x8c\x9a\xe7\xc2\xb7\x9d\xd5\x75\xe7\x8a\x8b\x4c\x58\xdd\x10\xe7\xdd\x80\x64\x53\x22\x47\xcc\xa4\x74\x95\xe9\x0b\x82\xbd\x06\xa2\x58\xe3\x4a\x6b\x82\x41\x92\x6c\xd7\xc6\x29\xc4\x9d\x72\x05\x22\xde\x01\x6d\x48\x10\x70\x8b\x75\xb0\x27\x01\x2a\x11\xd9\x32\xbd\xee\x2b\xec\x2b\x4f\xc7\x1b\x37\x87\x88\xf6\x5d\x5f\xa0\xb5\x81\xe2\x3b\x94\x37\x10\x96\x8b\xd5\x2d\x8e\xc3\x96\xad\xde\xf6\x64\xb2\xfd\x1a\x3b\x20\xd8\x70\x20\x5a\x3d\x29\xf0\xc5\x3d\x20\x8e\xb5\x3b\xb6\x08\xfa\x1a\xcb\x50\x10\x1f\x81\x6e\x88\x5d\x6f\x35\xdd\x5c\xdf\xa6\x05\x87\x28\x84\x3a\xed\x6b\xf9\x99\x03\x8d\xa3\x9f\x89\x6d\xc2\x66\x4f\xad\xcb\x63\xf1\xc6\x15\x49\x12\x58\x1d\x9f\x48\xde\xa1\xcf\xc6\x4e\x26\xb3\xd0\x85\xb4\x28\x10\x3c\x05\xb2\xf8\x65\xc2\x1c\x1d\xda\xc2\x1f\xb4\xb0\x95\xeb\xe2\x21\xb0\xb6\xdf\xc8\xb9\xeb\x09\xaf\x97\xd1\xd5\x7a\x40\xa2\x33\x0c\xd5\x8c\x2e\x53\x94\x8b\xec\x23\xe3\x53\x61\x5b\x08\x95\x2b\x47\x4f\x15\xca\xc2\x11\x8a\x00\xa2\x35\x3b\xd3\x83\x6d\x45\xd5\xee\x5a\xf5\xb1\x7e\x2f\x89\xe0\x38\x83\xa9\x81\x06\xc5\x19\x30\xb0\x80\x71\x3c\x77\xbd\xc8\x0a\x9a\x3d\x0d\x44\x13\x65\x9b\x3a\x6c\xe5\x75\xf3\x83\xd3\x3e\x00\x70\x9c\xef\xfd\x40\xac\x23\x4c\xe0\xd1\x99\x34\x57\xee\x5a\x8e\x13\x9d\xa9\xc2\xc7\xec\x5a\x6c\x0a\x89\x82\xa0\x31\x24\x21\x62\x85\x51\xfe\x9a\x59\xd3\xeb\x33\x6f\x0e\x6b\xc8\xaf\x75\xbf\x6d\x64\xea\x23\x00\xe5\x7a\x9a\x83\x81\xba\x83\xaa\x5e\x9c\x78\x0d\x9e\xe7\xfe\x78\x4c\xde\x04\x03\xc9\x03\x2f\x23\x76\xa7\x7b\x52\xef\x48\x72\x3d\x81\x0b\xb2\x65\x71\xae\xde\x57\x1b\x06\x29\xb3\xe3\xa9\x68\xe6\x1f\xf8\xd5\xea\x2c\xaa\xa8\x4c\xac\x40\xc9\x6c\x26\x75\x9e\xef\x29\x3a\x37\x6a\xa9\x0a\xe7\xce\x19\x8e\x79\x52\x5e\x3e\x6f\xdc\x6b\x04\x01\xc1\x9d\xf0\xb3\xd8\xaf\xa9\xf1\xd6\x39\xcd\x51\xf9\x68\xa2\x75\xb7\x76\x87\x38\xe1\xdb\x77\x09\x37\xb6\xc8\xbb\x81\x2c\x40\xbf\x00\x89\x40\x82\xae\xd1\x89\xb2\x29\x08\x9e\x6d\xe6\x54\xd9\x43\x4d\xbc\x78\x2a\x36\x94\xec\xb6\x69\x4a\xf2\xb8\xc5\x27\x8a\x2a\x46\x3c\x0f\x1e\x89\xd6\x9e\xe1\x76\xf5\x54\xbf\x1b\x62\x93\xcf\xc6\x7d\x5f\x36\x6f\x29\xdc\x6a\xb1\x51\xe4\x80\x13\x6d\x84\xd3\xd9\x56\xb1\x69\x5c\x87\xd9\xef\xd0\xa9\x81\xc9\x6c\x05\xf2\x4e\x3e\x21\x20\x5c\xff\x3f\xaa\xae\x63\xcd\x55\xa4\x59\x3e\x10\x8b\xc2\x43\x2d\x25\x21\xe1\x8d\xf0\xb0\xc3\x7b\xef\x79\xfa\xfb\xf5\xf9\xe7\xf4\xcc\x5d\xb7\x3e\x75\x43\x55\x66\x46\x64\x46\x46\xcf\x58\x36\x7e\xaa\x33\x5c\x77\xbd\xe7\x3b\x9c\xa6\x65\x5b\xfe\xf6\x88\x34\xaf\xee\x08\xe0\xae\xe5\xfa\x88\xe9\x48\x90\xe8\xdc\x01\xc0\xb9\x66\xc8\xbb\xb9\x40\x41\x4a\xdf\x81\xe8\xaf\xcb\xca\xff\xd1\x17\x73\x0f\x01\x32\xd1\xe6\xad\x64\xf8\xb6\xcc\x21\x43\x00\x03\xe9\x77\xc0\x5d\x1f\xdc\x7b\x1c\x1f\x29\x71\x08\xa2\xf7\xfb\xef\xe2\x2b\xe5\x91\x08\x7a\xbd\x33\x20\x5f\x69\x6c\xe7\x4f\x7c\x9d\x23\x0c\xd2\x6c\xe2\xd3\x48\x3d\x71\xa2\x25\xf6\x12\x9a\xb5\x4e\xe1\x56\x03\x21\x5f\x0b\x0b\x3c\xcc\x6a\xac\xcf\x35\x54\xe2\x65\xc0\x7a\x5d\xb7\x17\xe4\xa4\x6d\x56\xde\xa7\x6a\xcb\x6e\xb4\xe1\x44\x8c\xae\x72\x3d\x4d\x63\xe4\x62\xe7\x26\x1c\x64\xb0\x32\x7b\xca\x20\x60\xa7\x6a\x86\x61\x18\x74\x58\x76\xb8\xc7\xb8\x54\x39\xbd\x74\x7d\x9b\xa7\x5e\xa5\xdf\x08\xf8\xeb\x35\x9d\x65\x7a\xd7\xac\x57\xa0\x7c\xe1\xe4\xef\x63\xfe\x33\xf6\xf8\xdf\x99\x3c\xf6\x1f\x0c\x94\x22\x4c\x34\xb0\xf5\xf7\x63\xfa\xed\x84\xa5\xee\xb3\x4f\x19\x14\x2a\x76\xcc\xf4\x18\xb6\xdf\x6c\xd1\x1b\xfd\xbd\xb6\x8b\x36\x22\x20\xef\xe0\xce\x90\x02\x44\x88\x7c\x27\x26\xcc\x9b\x8e\x41\x7e\x15\xca\xb6\xf0\xd1\xea\x76\x9b\xac\xda\x0e\xaa\x0d\xf1\x0b\x52\xa3\x3c\xfa\x33\x39\x64\x84\xf9\xf5\x51\x7e\x7d\x91\xec\x2e\xcb\x15\xb9\xc7\x71\x4c\x21\x49\xaf\xdc\x5f\x42\xbf\x6f\x8c\xc8\x18\xc2\x42\x7d\x65\xbe\x11\xbc\x5b\xb1\x10\xd9\xd5\xb0\xd7\xf8\xb0\x89\x1f\xab\x55\x40\x23\xc3\x5e\x16\xbb\x37\x94\x64\xb3\xdf\x83\xd5\xb9\x08\x4b\x16\xf7\xaa\xd1\x9c\xe3\x4b\xf4\xf9\x3b\x4f\x62\xc5\x15\x22\x07\x40\x61\xee\x2b\x06\x4e\x91\x9b\x4e\x97\xcc\x17\x0c\x30\x1f\xbf\x91\x20\x6d\xf1\x46\xa6\x29\xbc\x33\x0c\xe6\x3e\x35\x42\x8e\xa8\x92\x5e\x42\xd9\xc4\x00\x42\xd7\xe1\x60\x48\x95\xa9\x1a\x26\xe5\x71\xcd\x88\xd5\x8c\x4a\x84\xaf\xdb\xea\x76\xfb\x57\x21\x8d\xf6\x7f\xfb\x18\xc7\xf0\x79\x46\x2c\xd1\x3d\x83\x85\x88\xd7\x63\x70\x14\x9b\x42\x59\xdd\x46\x21\x13\xb0\xe5\x0f\x97\x20\x56\xfa\xa6\xa0\x25\x35\x57\x37\x4e\x59\x3f\xd2\x5f\xc1\x11\x24\x57\x6e\xc3\xcb\xf1\x84\xbd\x9b\x8d\x93\xdb\x20\xb6\x0d\x90\x0f\xf8\xe0\x91\xcb\xc5\xb3\xfc\xb7\x5f\x83\x1c\x38\x82\xef\xfb\x4c\x71\x4d\x65\x53\x25\xc3\x94\xc8\xb6\xc9\xd5\x30\xbe\x46\xe8\xd1\xac\xc1\x61\x3c\x8c\x62\x5b\x8e\x6c\x09\x65\xe8\x28\x28\x47\x04\x58\x12\x79\xa5\x38\x93\x0e\xa1\x70\x22\x79\x4f\xb1\xf9\x57\xc5\x24\xdb\xe9\xc6\x69\x22\x25\xa6\x70\x0b\x55\xaf\x08\x83\x78\x02\xf6\x89\x63\xf9\xe1\x8e\x74\xd6\xc5\x5a\x87\x6c\x7f\x94\x7f\xe5\x7c\xa1\xe7\x93\xfb\xa2\x1a\x93\x6e\xf8\x36\xd3\x5b\xae\x11\x10\xf1\x3f\x67\x32\x08\x36\x1f\x72\xb2\x56\x8b\x0c\x3d\x5f\x98\xaf\x72\x03\xbd\xf5\x4a\x5b\x4d\x0f\x96\xfc\xa6\xcf\x5f\x6d\x81\xfe\x64\x4e\x92\xce\x37\xa1\x3e\x9b\xfd\xae\x7f\x80\xeb\xff\x6a\xb0\x1b\x09\xde\xa0\x29\x57\x33\x5e\xc9\x6e\xe8\xc4\x3d\x2c\x06\x8b\x34\xcc\x53\xc3\x53\x92\x42\xde\x8c\x4b\xa7\xc6\x47\xb2\xdc\x6e\xb9\x9b\x02\x2f\xc5\x1f\xa8\x76\xaa\xa9\x90\x1b\x27\xf7\x76\x08\x50\x9f\x03\x5a\x66\x86\x79\x87\xbc\xdd\xd8\x76\x9e\x13\xda\x6c\xe1\x2b\x91\x32\x31\x34\x91\x7e\x64\x52\xe6\xc6\x91\xb9\x6c\x73\x5d\x78\x95\x81\x70\xbd\x1c\x93\xcf\xfa\xd1\x4d\x63\x9f\xed\x51\x4c\xd7\xcf\x73\x8c\xa2\x4e\x2a\xfc\x96\xd6\x51\x31\xf9\x8b\xcf\x0e\x35\x69\x2c\x7f\x1e\x5b\x37\xed\xc3\x2e\x6e\x04\x30\xe3\x38\x4e\x49\xb6\xd3\x48\x77\x1c\xf7\xd4\x16\x77\x14\x92\xe4\xb8\x00\x1e\x33\xad\xaa\x5c\x41\x23\x8b\xa7\x0b\x17\xe2\x4d\x93\x5c\x88\x95\xae\x79\x6a\xad\x58\x13\x3d\xcd\x86\x49\x8e\xf2\x2b\x81\x44\x77\x67\xd9\x9a\xa5\x62\x5e\x3d\x9d\x4f\x19\x74\x9f\x68\x26\xe2\xe7\xf9\x45\x0c\xaa\x5c\x99\xcc\xdf\x11\x8d\xdc\x5d\x9a\x3f\x97\x08\x22\x77\xd6\x50\x9e\xdb\x85\x9e\x2b\xf9\x54\xcc\x3d\x22\x0e\x47\x88\x91\xd6\x2f\x27\xc7\xeb\xb8\xe5\x09\x73\x18\x3c\xf6\x71\x29\xc5\xef\x9c\x49\xb8\x96\x29\x6f\x5f\x69\x80\xbe\x4a\x6c\x68\xa4\x2b\x4f\xb7\xce\x55\x64\x03\x79\xe5\x28\xa5\xd7\x75\x9f\xe5\xfa\x9d\x06\x04\x99\x9a\xa1\xdc\x2c\x78\xae\x0b\x35\x76\x85\x3a\x5f\x99\x99\x98\x1b\xe6\x3b\x13\x36\x0a\xd5\xeb\x8d\xd9\x06\xe9\x3a\x3b\x10\x2e\x55\x83\x69\xb6\xdb\x7c\x98\x33\x9a\x5d\x8a\x00\xbe\xd7\xdb\x14\x19\xf1\x66\x7f\xd2\xe8\x03\xef\x70\x62\xc7\x89\x55\x28\x9b\xcc\x53\x5c\x76\x03\xb3\x36\xa1\x98\x64\x4f\xf4\x38\x13\x3c\x4d\xdc\xba\x16\xcd\x5a\x24\xb3\xb3\x22\x5e\xef\x3a\x7b\x3e\x3f\x45\x7a\x4a\xff\xe8\x19\xb8\x63\x8e\xe6\x29\x6a\x7c\x9e\xf0\x39\x8e\x0b\x4f\x24\x83\xb9\x37\xc7\x79\x92\x4d\x8b\xfa\xc0\x70\x36\x33\xf8\xd3\x26\xee\x6b\x34\xd3\xfc\xa3\xb0\x7d\x84\x45\x3b\xba\xed\x5c\x81\x23\xdb\x4f\xe2\xbb\x9a\x51\xf9\x12\xf7\xd3\x44\x43\x3e\xdf\x59\x01\x9c\xa2\xfb\xb1\x7c\xce\xe3\xd6\x2c\x07\xa8\xcd\xdd\x90\x5d\x62\xd7\x65\x25\x32\xe0\xc4\x00\x9b\xae\xbd\x15\x60\x3e\xc3\x6f\x0c\x93\x9c\x15\xad\xbf\xba\x85\xc7\x33\x5f\xda\x62\x69\x2f\x1a\xbb\x6c\xb8\x79\xed\x3c\x81\x1f\x58\x28\xc0\xc0\xd3\x0a\xa2\xdf\xcb\x6e\xac\x0e\xe1\xfb\xa7\xb5\x7e\x0f\x06\xc1\x90\x1c\x01\x08\x48\x4e\xc9\xe8\x1b\x98\x58\x89\x95\xdb\xba\xde\x73\x85\xef\x99\x01\x25\xb2\x3e\x58\x2f\x73\x38\x67\x35\x2c\xb0\x07\x0c\x41\x85\xfd\xac\xd2\xfa\xdd\xb0\x00\x4c\x1d\x01\x91\xc3\xdc\x5f\xc9\xec\xd2\x97\x58\x8b\xd7\x37\x87\xc7\x1d\x22\x0b\x2b\x14\x70\x7e\x0f\xfc\x07\xbf\xfe\xb9\x87\x52\xae\xf7\x32\x6e\x03\xf8\x39\x02\xef\xc8\xf2\x13\xe1\x8e\x9c\x7b\xaf\x14\xfd\x8d\xe3\x12\x66\x20\x45\x90\x59\x10\xca\x23\x12\x4c\x9d\x91\xa6\x65\x72\x9f\x83\x5a\x76\x7c\x40\xe9\x76\x37\x8e\x4a\x15\x60\x3e\x13\x22\x05\x1a\xbb\x13\x96\x49\x09\x0c\xb8\x21\xaf\x2f\x1f\x90\xcc\x02\x11\xb6\xd5\x4d\x9e\x56\x7c\x1a\x66\x8b\x5f\x11\x60\xe3\xa2\x78\xce\xdb\xd7\xeb\x58\xac\x22\x70\xff\xe9\x69\x72\x85\x85\xe7\x33\xbd\x39\xb9\xc6\x35\xd4\x14\xbf\x8e\x42\x8f\x40\x88\x74\x57\x68\x2e\x78\x3c\x9a\xeb\xa6\xc5\x1e\xd6\xb0\x10\xb6\xa5\x52\x31\x15\xd5\xa9\x9f\xc2\x53\xa8\x25\xb2\x9f\x1a\x1b\x0f\x58\x04\xca\x07\x6d\xe0\x08\x1c\xb0\xfd\x12\x9a\x0b\x11\x0c\xc3\xd8\x17\xc2\x26\x4e\x85\xd2\x90\xe4\xe7\xb3\x93\x4b\xef\x2e\xf2\x58\x49\xfe\x48\xa7\x93\x7f\x96\xfe\xdf\xfc\xf1\xb8\x89\x14\x85\x03\xad\xd7\xec\x80\x30\xe1\xea\x4c\xcb\x22\x1a\x99\x71\xda\x35\xbb\x50\xc4\x9f\xf1\x7d\x0e\xe8\x59\xeb\xa3\x85\x15\x71\xea\xe5\xca\x54\x38\x6b\xd2\x5c\x74\x9f\xcb\x96\xa3\xa8\x29\x55\xa2\xce\xaf\x00\x1a\x3e\x61\xb7\x0b\x76\xd5\x7d\x4d\xa2\xf2\x7b\xcf\x73\x5e\xd1\xc6\x55\xbb\xc5\xf8\xa7\x0e\xb4\x16\x95\x8b\x06\x4e\x29\x11\xb2\xa3\x90\xfb\x2a\xef\x82\xff\x6d\x4a\x92\x9c\xd6\xd3\xa7\x1d\xe8\x66\x91\x0a\x2e\xe6\xb9\xcd\x7c\x1b\xd7\x83\x50\x70\x90\xa6\xd9\xde\x08\xda\xa7\x5b\x08\x62\x95\x31\x96\x4a\x73\xb9\xe9\x1e\xb8\x54\x0f\xe4\xa6\x5c\xac\x52\x2f\xdd\xea\x2b\xcd\x15\x29\x12\x22\x10\x73\xd3\x38\x69\x23\xcc\x3c\x32\xef\xb4\xd2\x83\x9d\x2d\x35\x67\xa2\xeb\x31\x1c\x52\x41\x14\x72\x8c\x32\x24\xea\xa6\xce\x35\xa8\xbf\x45\xf1\x9b\xff\x35\x70\x64\x33\xaa\xd5\x0e\x71\xd5\xd8\x46\x25\x85\x1b\x92\x4e\x46\x33\x79\xc0\x84\x4f\xc6\x24\xfd\x07\xcb\x06\xd8\xee\x8e\xf8\xf6\x9e\xd5\x72\xc2\x92\xcf\x81\xa9\x34\xf4\x67\x88\x56\x9e\xe2\xa5\x64\xde\x8e\x9d\xbb\x7a\xd5\x49\x48\xd8\x18\x77\x0c\xc2\xb6\x10\x58\xc9\x99\x52\xdc\xfb\x54\x23\xaf\x7d\xf5\x27\x9e\x49\x14\x2b\x3c\xf8\xcf\xef\x73\x3f\xb7\xb4\x77\x31\xdb\xc1\xd4\x8b\xa3\x67\x3b\x4a\x1a\xd9\x60\x19\xf9\x1a\xbd\x73\x89\xdf\x17\x87\x8c\xa8\x3e\x03\xec\xf6\x80\x87\xc1\x44\xc1\x25\xae\x19\x65\x9b\x05\xca\xf9\xe8\x61\xfc\xa9\xce\x60\x4a\x26\x0a\xfd\x6a\xc5\xc2\x9c\xef\xb9\xbd\x1d\x42\x23\x00\x76\x61\xf0\xd4\x9f\xc7\x4b\xeb\x6c\xf7\x2a\xfd\x8b\x83\xb3\x89\x5b\xfd\xb2\xd8\xc6\xa3\xa4\xfe\xf6\x65\x9f\x2c\x49\x5c\xdc\xa3\x5f\x78\x8b\x9c\x14\xf1\x12\xab\xc8\xa0\x04\xb4\x9b\x30\xf9\x5a\x5c\x9c\x7b\x43\xc3\x26\xe0\x1d\x41\xb8\xc7\xfa\xed\xb0\xaf\xec\xa9\xf2\xbd\xec\x1f\x45\xfa\xf0\x66\x97\x86\x66\xa8\x9d\x37\xcc\xfd\x1c\x49\xd7\xdd\xa2\xc4\xc6\x6b\x0c\x0b\x5d\xff\x30\x88\x46\x68\x2d\x6b\x54\xa3\x2e\x6c\x83\xfa\x51\xf8\xbf\xfc\x4b\xa3\xa6\x48\x61\x0b\x20\x7f\xfa\xd2\x47\x6a\x03\x9d\x3c\xb9\xe6\x96\x53\xcd\x79\x6c\x26\x4e\x2c\x17\xce\x64\x15\x83\xa5\xe3\x40\x1e\x89\x87\x4a\x3c\x7a\xed\x5a\x4e\xd5\x6a\x06\x6b\xb6\x26\x86\xb0\x28\x51\xca\x42\x32\xc1\xe9\x4c\x9d\xd9\x2a\x31\xee\x60\x31\x01\x82\x10\x88\x98\x3d\xb5\x60\x58\x9e\xb6\x5e\x6e\xae\xce\x2f\x4a\xf7\xfc\xbb\x3b\xfb\x7a\x70\xc7\xa1\x72\x9f\xb1\xcd\xd1\x32\x0d\x1a\xe9\x95\xf6\x11\x1e\xc9\x28\xe9\x12\x50\xef\x79\x49\x6e\x85\xf5\x8a\x5c\xb8\x33\x90\x65\xd9\xc0\x16\xc8\xf3\x33\xa5\xf5\x37\xba\x13\x59\xae\x16\x0e\x9a\xed\x52\x11\x45\xfa\x2a\x48\x9d\x7b\x0e\xda\xb3\x17\x06\x47\xf7\x05\x66\x69\xd3\x3c\xcb\x7c\xd7\xc5\x48\x33\x0e\xc4\xe9\x5a\x56\x54\x1f\x09\xb5\x60\x42\x22\x55\xca\x44\xf9\x81\xac\x26\xf7\xdb\x43\x30\xfa\x57\x39\x3a\x3e\xf2\xfd\xfa\xea\xab\x61\x13\x03\xe7\x4f\x4f\xb5\x46\xe9\x52\xeb\x2f\xcb\x0b\x2d\x8c\x7d\x2c\x07\xcd\x79\xb3\x5e\x1c\x90\x2f\x48\x24\x3a\x14\x46\xe8\x79\x9d\xe4\xbc\x1c\xaa\x4f\xe8\x3e\xdf\x87\x7b\x75\xa7\x22\x7f\x35\xbd\x84\xe6\x4f\xd4\x07\xd7\x70\xb2\x44\xcf\xb1\x3b\x3e\x8b\x63\xeb\x13\xe1\xa6\x11\x5b\x45\xe5\x51\xc6\xa7\xef\xef\x7f\x38\x7b\xf1\x52\xa8\x4c\x69\xaf\x8e\x56\x01\xba\x73\x5f\xd4\xc8\x10\x04\x12\xea\xfd\x38\x4f\x6b\x95\xa6\xd5\xea\xae\xfe\x66\xd8\xbc\x42\x00\xa2\xc9\x4f\x90\x6f\x9f\x6e\x8a\xde\xa5\x68\xa1\xab\x66\x3e\xc0\x8b\x9c\xfd\xfa\x99\x83\x81\x78\xb8\x20\xae\x05\x40\x88\x8c\x1f\x28\xae\x2b\xf3\xc3\x8a\x3c\x94\x31\x9f\x71\x02\x30\x4c\xd2\x4b\x56\xf4\xa1\x9d\xf6\x93\x49\x3b\x52\x28\xce\xc4\xca\xdf\xd7\xfd\xab\xe1\x93\xaa\xb9\x0b\xbb\x90\x58\x49\xa4\xfb\xe6\xda\x95\xd0\x7a\x3d\x90\xde\x54\x80\x3c\x03\x12\xe3\x4e\x0b\xa6\x57\x21\x3f\xc9\x53\x35\x9c\xde\x46\x61\x00\x50\xdf\x94\x2b\x50\xed\x05\x1d\x0b\xf5\xd3\xd2\x9f\x5c\xeb\x58\x06\x36\xd3\x73\x85\x9e\x68\xf8\x39\x51\xeb\x26\x35\xb8\x47\x02\x77\x3c\x21\x00\x7b\xfb\x80\x57\x42\x48\x4d\x0e\x02\xe0\xec\x8b\x80\x66\x8f\x5f\xb9\x9c\x7a\xba\x26\x9e\xf5\x40\x4d\xd5\x8a\x0a\x5c\x63\xdf\x55\xf5\xf6\x5d\xcc\xfb\x94\x81\xf9\x36\xdf\x8e\xe8\x86\xc3\xe9\x20\x02\xef\x34\x94\x6e\x03\x50\x37\x0d\xaa\x60\xa3\xfc\x6d\x58\x43\x39\xab\x47\xc9\xed\x8d\x64\xf4\xfb\x29\x92\x88\x51\x13\x80\x05\xe0\x3c\xbc\x4f\x17\xa9\xda\x63\x76\xa7\x77\xf1\xec\x67\x48\xb3\x2a\xf7\x24\xe2\x15\xaf\x52\xd5\x5e\xdd\x31\x75\xda\x63\x61\xe9\x67\x4d\x22\xda\x4b\xb0\x83\x4f\xae\x1f\xc4\xeb\xf5\x4f\xeb\x55\x3d\x4d\x0f\xdb\x98\xfb\xa5\x4f\xae\x3c\x59\x64\xe1\x57\xa9\xfc\x22\x56\x90\x01\xb0\x1b\x3e\x03\x9d\x0e\xdb\xbf\xa2\xf3\x86\x9a\x9d\xe0\x3a\x46\x64\x22\x4a\xc9\x24\xae\x55\x2a\x34\xec\x07\x52\x91\xb3\x3f\x3f\x1f\x47\x64\x34\x06\x72\x0b\x06\xb8\xcb\x1e\x4a\x06\x99\x46\xcc\xfb\xe1\x43\xa8\x26\x80\x37\xd9\xfc\x43\x27\xeb\xe8\x8c\xac\x54\xd9\xc0\x3b\xd4\xe3\xf5\xaf\xb6\x96\x8a\xba\x7d\x6f\x84\xfe\xcd\xe8\xd7\x32\xc9\xc5\x90\xd8\xf3\x51\x20\x00\x54\xac\x51\x6e\xc6\x0d\x70\x04\xc3\x07\x2f\x14\x1a\x61\x44\xd8\xd4\xb4\x7f\x6a\x07\x39\x5b\xed\xaa\x7c\xc9\x45\x61\x14\x4a\x03\x20\x3b\x7c\xa1\x3e\x89\x78\x25\xf2\xbc\x3f\xa3\xc0\x8e\x1f\x9f\x98\xd1\x25\x47\x8c\xdd\x68\x27\xcc\x1c\x9c\xdf\x5e\x89\x1b\x8a\xff\xc6\xb5\xaf\xec\x90\x07\x33\xfd\x28\xb8\xf2\x77\x6e\xfb\x0a\xde\x74\x6e\xeb\x76\x41\xca\x86\x5e\xb0\xe4\x20\x9f\x59\xff\x28\x72\x82\x99\xe8\x6d\x22\xf6\x2d\x1f\x6a\x3c\x8a\xd1\x49\xcd\xaa\xa0\x97\x08\x70\x62\x1f\xa3\x5a\x65\x6f\x58\xb8\xd7\x63\xff\x89\xc1\x0e\xdb\xe2\x81\x2c\xce\xb8\x4e\x99\x12\x00\xf6\x9d\x83\x9c\xfc\x68\x55\xec\x17\xd2\x95\xf5\x4f\xb9\x6d\x00\x43\xc1\x35\xf6\xb0\xa2\xb4\x6a\x67\x6a\xe4\xd7\xb1\x36\xc2\x6c\xcd\x13\xb5\x11\x96\x58\x19\x7f\xf3\xb4\xfa\x4a\x7e\xe8\x9d\x25\xa9\x0d\x1b\xc9\xef\x83\xcc\x62\xf5\x07\xad\xe4\x20\xec\x17\x0f\x1a\x29\xc9\x92\x0b\x62\x9c\x99\x31\x33\xc8\xe1\x8c\xe1\x02\x36\xe3\x8b\x6a\x5c\x20\x3a\x0d\x55\x05\xfc\x73\x9d\x5f\xa3\xbd\x2f\xeb\xfd\x47\x13\x24\xa3\xc5\x79\xdf\x80\xf0\xdf\xd0\xa8\xa9\x42\x31\xaa\x63\x99\xe5\x54\x18\xde\x37\x2e\xdd\x80\x5e\xd2\x7c\xfe\x44\x56\x20\xae\xfd\xcd\xc6\xfc\xa9\x86\x4b\x80\x83\xee\x29\x5f\xbf\x71\xac\x5a\x71\xbe\xd0\x6e\xa9\xda\xef\xf3\x72\x46\xb1\x68\x01\x78\xb1\x17\xab\x72\x8f\x8b\x05\x28\x42\xeb\xf5\xfe\xe9\x42\x1c\x21\x5a\xfa\x87\xa7\x8b\xaa\x4b\xef\x90\xee\x72\xf0\xb1\x12\xaa\xfc\x7a\x9f\x87\x2d\xa7\x54\xcf\x5e\x59\x2c\x74\x61\x15\x20\x06\xb1\xe7\x3b\xe8\x53\xf2\xb9\x25\x96\x54\xa0\x31\xf9\xf4\xb0\x35\x4a\x37\xd4\xa1\x1c\x3e\x7d\xfe\x30\x9c\x12\xe8\xc4\xea\x6b\x9f\x5e\x16\xeb\xbf\xfa\x4c\xee\xd1\x1b\x36\x0e\xd5\x81\x1d\xec\x36\x1c\x56\xb8\xe5\x79\x3e\x8f\x1c\x38\xcb\x2f\xab\x51\x89\x17\x0a\xbd\x41\x44\x2d\xf4\x5d\x2c\x44\xe9\xcc\x95\xbf\x41\xa1\x0c\xd5\xd3\x3d\x87\xfd\xec\x7b\x82\x89\xb4\xdd\xed\x9f\x54\x41\x0a\x22\xa5\xb4\x17\x2d\xad\x7a\x10\x97\xe1\xc4\x10\x80\x21\x72\x62\x61\x85\xf2\x3d\x55\x41\x25\x5e\x6a\xf5\x45\x18\x1e\x65\x67\xf8\x7c\x68\x99\xfc\xef\xf9\xe4\x30\x67\x28\xc6\x2b\x62\x0a\xf1\xbb\x97\x6f\x2c\xca\x7d\xc3\x7d\x75\x07\xc0\x8a\x19\xa6\xc5\x7e\x15\xcb\xd9\x3a\x45\xa4\x17\x27\x02\x8b\x11\x00\xf1\xc6\xa7\x9c\xf4\xda\x8d\xf1\x93\x8b\x68\xb0\x4a\x7c\xfe\x0c\x67\x2d\x2c\xdf\xd3\xe2\x6e\xab\xa2\x30\x0c\xfa\x4e\xb6\xc5\x1a\xcd\x36\x9c\xdd\xe8\xe7\x5d\x94\xd2\x84\xec\x2b\x93\xf5\x1e\x02\x25\xa7\x38\x7f\xde\xc9\x37\x67\xf9\xc7\x7f\x3c\x05\x0e\xfd\xd4\x6c\x14\xc6\xca\x33\x0a\x9f\x2c\xa1\x5f\xa5\x52\xe2\x5d\xda\x85\x2d\xc5\x82\xc1\x31\x00\xd3\x7f\x82\xae\x5d\x3e\xbc\x28\x4c\x6c\x5e\xeb\x7e\x5f\x8d\x7c\x39\x8f\x13\x5f\x7e\xc3\x97\xf0\xd9\x66\x0c\xd9\xec\x26\x34\x78\x70\x1d\x66\xc8\xf2\x9f\x32\x88\x10\x16\x2a\x4a\x1a\xef\xe0\xe8\x4f\x16\xe4\xcd\xf5\xfd\x53\x3b\x2e\xa1\xe0\x38\xe6\x86\x9c\xfe\x72\x25\xd9\x6d\xad\xfe\xae\x0c\x02\x52\xba\xfa\x15\xfe\xf6\x19\x78\x0e\xa7\x34\x36\xe6\x9f\x4b\xcc\x9f\x68\xaa\x24\x32\xc6\xc0\x89\x62\x11\x15\xe1\x61\x75\x5b\x64\x61\x97\xf8\x36\x4d\x68\xca\x9b\x85\x99\x68\x0b\x60\x59\xaf\x7d\xca\xe5\xbb\xcf\x66\xfa\xa5\x70\xbc\x9c\x72\x53\xaa\x30\x00\x45\x9b\x1c\x99\xe8\xd9\x76\x13\x83\x3b\x2e\xd1\x91\x93\x8a\x20\x8a\x14\x4d\xfd\x20\x33\x7c\xe9\x5d\xbe\x87\x4b\xbd\xa5\xc6\x18\x24\x36\xe9\x65\xcb\x24\xcc\x57\xf2\xab\xdd\xe2\x42\xfe\x9c\x2c\xfd\xb4\x95\xb6\x27\x00\xc9\xe6\xd4\xa5\x12\x75\x8b\x60\x30\xa3\x01\x47\xba\x2f\xf6\xa8\x53\x7c\x7f\x09\xdd\x52\xb7\x27\x10\x2a\x83\x7f\x83\xf5\x3a\xa5\x4e\x0f\xda\x9c\x52\x68\x02\x92\xf4\x4f\xa2\x6d\x76\x20\xd1\x7b\xbc\x67\xf8\xd4\x92\xe5\x57\xe5\x1e\x74\x6a\xf4\x67\x78\xbf\x5b\x40\x22\xda\xf6\xe9\x0d\x93\xce\x83\x79\xd9\x6f\xf5\x94\xd4\xb0\x97\x58\x4e\xf8\x95\xdf\xaa\x57\x06\xb4\xcd\x7e\xa6\xad\xe2\x61\xa9\x8f\x41\xc1\x64\x7d\x01\xa4\x9d\x54\x05\x4b\x3a\xcf\xd7\x1a\x07\x0e\x24\x20\xfb\xe6\x9e\xac\x99\x68\x2d\xbd\xbb\x14\xb7\xf8\xfb\x0d\xc9\x23\xe2\x44\xab\x39\x9d\xc0\x94\xd3\xed\x0e\x92\xc0\x05\x08\xab\xdc\x37\x0b\xd4\xfb\x55\xc6\xa4\xad\x01\x20\xab\xa4\x09\x20\xf8\xf2\x98\x66\x3b\xd0\xa8\x8f\xca\xbd\x0c\x78\x5e\x6c\x2d\xca\x3a\xe2\xbe\x9f\xfd\x3f\x58\xe8\x59\xc0\xed\x6b\x18\xb5\x78\xa3\x8d\x47\xb2\x5c\x9a\x11\x84\xd0\x2a\x44\xdd\xd1\x51\xe6\x12\x8e\x82\x6c\x10\x20\xf6\x5a\x2d\xea\xeb\x58\x62\x2d\xd7\x7b\x93\x36\x4c\xf0\xbe\x82\x4e\xaa\x9e\x5c\xb7\x51\x88\xd6\x84\xb2\xad\xe4\x2f\x8e\x37\xf1\x71\x8f\xee\xd5\xf7\x09\xe4\xa3\x9c\x45\x2e\x10\x60\xc5\xdc\xc4\x9d\x85\x27\x19\xbd\xeb\xc0\xa7\x0a\xf1\x75\xec\x77\x36\x63\x7b\xd5\x7e\xb2\xb0\x89\x78\xe2\x63\x70\xa0\xe7\xc5\xfa\x2f\x1f\xe0\x9e\x8c\x48\xeb\x17\xb5\xa9\x51\x6d\x0f\xa3\xec\xf4\xe7\x44\x04\x74\x1f\xe4\x59\x96\xe5\xb2\x7f\xab\xac\x61\xdc\x0c\x01\x30\x7d\xfa\xce\x46\x7f\x6f\x44\x84\xa4\x7a\xe3\xe6\x3a\xad\x97\x03\x96\x35\xd3\xdb\x1a\x25\x0b\x45\xcd\xcd\xe5\x47\xd9\x91\x1d\x08\xe2\x38\x06\xe0\x33\x83\x5e\xcb\x01\xd6\xc5\x82\xa9\x4e\xdf\x11\xb0\x9b\x9e\xeb\x12\xa6\x37\x51\x7a\x31\x98\x8f\x3a\x22\xe9\x4a\xf9\xf6\x6a\x41\xbb\x3e\xe6\xd2\xfb\x57\x77\xde\x59\x12\xdf\x56\x41\xa3\xe8\xef\x50\xb5\x9a\xfb\x1b\xd5\x99\xe8\xe7\xfb\x1d\x24\xf1\x9e\x82\x32\x03\x8c\xd4\x00\x63\x25\x32\xac\x0a\x41\x66\xd1\x3e\x0d\x01\x02\x53\xf0\xf6\x6f\x56\x80\x1b\x6b\x0f\xc1\xed\x60\x1f\xcb\xdc\xa8\xef\x64\xf6\x17\xc8\x21\xcc\xfb\xea\x8e\x31\xcd\x32\x72\xf0\xad\xcd\x64\x60\x92\xfc\x22\x17\x39\x91\x76\x2f\x2d\x02\x9d\x63\x37\x5f\x97\x5b\x8a\xff\x36\x32\xe7\x46\x9b\x93\xa0\xb6\xb4\x91\x19\x6a\x89\x95\xfa\x9b\x83\xd1\xc5\x7e\x97\x2f\x53\x4a\x06\x3a\x68\xa5\xa3\x39\x06\x37\x0f\x4d\xa5\x4f\xe7\x1d\x30\xf5\x0a\x24\x80\x94\xb7\x02\x49\x7a\xcb\x56\xc5\x22\xaa\x99\x02\x5c\x79\xd0\x4a\xa2\x9a\x72\xd2\xca\xd6\xf5\x41\xad\x21\x3e\x94\xcf\xc5\xa0\x70\x37\xb3\xdb\xcd\x37\x82\xc9\xf7\xdb\xce\x1b\xa3\x71\x9b\x4c\xa8\x49\x81\x02\xac\xdf\x70\x89\x7a\xb0\xe2\x5b\x97\x67\x2c\x9b\xdf\xe5\xe3\x4b\x99\x8c\x19\xcc\xf1\x99\x7e\xbb\x7f\x75\xcb\x5e\x28\x02\x68\x72\xe5\x37\xf0\x2c\x49\x42\xe9\x2c\x17\xa7\x9d\xa9\x57\x74\x72\x01\x92\xe5\xfb\x45\x34\x3a\x62\x50\x10\xc1\x28\x12\xec\xdd\xc3\xe3\x10\xbb\xa1\xd4\x2a\x96\x53\xcd\x7e\x0f\xce\xda\xb8\xd3\x6a\x0f\x88\xd1\x32\xa7\xda\x90\x89\x41\x30\x98\x0f\x6e\x2e\x07\x88\x41\x4d\x41\x87\x7b\xe3\xad\x8f\x18\x00\x08\xb1\x7b\xaf\xeb\xb9\x38\x06\xd5\xd5\xf3\x78\x9e\xdb\xb8\xf3\x7b\x46\xfb\xa6\x6e\xa3\xe0\xae\x8b\xf6\x64\x18\xeb\x1f\x50\xf3\x93\x12\x0d\xef\x15\xb6\x42\x2b\xf4\x31\x89\xa6\x93\xae\xc1\xc3\x8e\x72\x79\x57\xb0\xfe\x66\x21\x80\xe3\x97\x5d\x43\x14\xc9\xf3\x91\x21\x08\xf4\x2a\xa4\xe8\xfb\x12\x3e\xe5\xae\x35\xcb\x51\xa8\x87\x41\x89\x94\xd2\xd0\xef\x07\xe9\xea\x42\x0d\x4f\xe8\xb2\xac\x7a\x1b\x37\x66\x41\x30\xc6\xdb\x6c\x91\xf1\xcb\x78\x32\x46\x0a\x00\x22\x20\xf3\x44\x17\x52\x7b\xf8\x29\x9e\x1a\x31\x01\xad\x36\x33\x07\x65\xd1\x30\x79\x66\x78\xd6\xfb\xaf\x67\xcd\xad\xc9\xce\x6d\xc5\x77\xa5\x87\xe4\x82\x48\xbe\xef\xfb\x34\x54\x7c\xa4\xf5\xb2\x3c\xcb\x02\xdf\x00\x08\xb5\x13\x99\xd9\xdf\x23\xc5\xb6\x7b\x8e\xc8\x71\xcc\x7c\xe9\x42\xf2\xcd\xa8\x78\xa7\x68\x34\xbb\x51\x73\xb5\xfc\x6d\xd0\xe2\xa2\xbf\xfa\x91\x4e\x62\xbe\x9c\x36\x3a\x82\x81\x22\x05\x7b\xbe\xf1\x8a\x60\xa2\x69\x5e\x11\x2a\xe5\x4b\x90\x61\xf6\x1c\x04\xab\x71\x95\xae\xe6\x86\xfe\x15\xdd\x4c\xa6\x18\x19\xbd\x2c\x3d\x12\x16\x9f\xc4\xf8\x3b\xbb\x56\x1f\x8b\xed\x60\xda\x65\x5f\x95\x6e\x51\x3a\x1b\x6d\x5b\x0f\xdd\x0e\x8b\x72\x40\x91\x00\x80\x37\x00\x27\xe2\x5e\x48\xd4\x4d\xc6\x0f\xca\x42\xb4\xd9\x27\x12\x52\x10\x79\xac\xfc\x8c\xb1\xb7\x7d\x41\x0f\xd0\x1a\x1b\xfd\x50\xe1\x43\x60\x7e\xea\x83\xcb\x72\xe3\x46\x24\xae\xa5\x85\xe7\x91\x40\x04\xa9\x0d\x0c\xe6\x3e\xb2\x81\x96\x65\xf1\x35\x27\x98\x94\xf0\xb1\xaa\x98\x22\x64\x76\x09\x2a\xbd\x72\x9a\xba\x4e\x9b\xd2\x1f\x26\xff\xb7\xcf\xdb\xbd\xbc\x98\xb0\x98\x3e\x79\x87\xf5\xf8\xa6\x7b\x07\x44\xd6\xee\x32\x3b\x92\x1b\x7d\x08\x52\x22\x65\x18\x0c\xeb\x92\x0c\x60\xe6\x1e\xd3\x70\xb7\xa8\x29\xec\xf2\xde\x17\xc0\x5d\x64\x10\x42\x75\x7e\xe2\x75\x0b\xba\x74\xde\xf6\xd4\x43\x2e\x83\xb5\x22\x9b\x57\x70\xe9\x0e\x70\x77\x7f\x47\xe1\x48\xf4\xde\x44\x78\x37\x00\x6e\x48\x01\x8a\x84\x2a\x02\x58\x5c\xa2\xa6\xa8\xb3\xef\x9b\xbd\xe4\xd6\x1e\x0f\xe5\x5c\xdb\x66\x3f\xf8\xe6\x60\x2b\x48\xc2\x01\x72\xe1\x6f\x8d\x79\x86\xdd\x1c\x2b\xc8\x52\x60\x0e\x79\x5f\xa2\x17\xfa\x2e\x4c\x93\x62\x64\x3a\x6a\x8b\x84\xf5\x06\x24\xc3\x19\x46\xc6\x1d\x59\x0f\x4d\x3b\x8d\xe7\xa9\x09\x92\x2c\xdf\x09\x17\x3b\x24\xe2\x63\x3b\x84\x56\xb5\x59\x81\xf6\x4e\xfe\xb9\xde\x05\x86\x44\x1d\x9e\x80\xaf\x49\x1b\x14\x92\x1a\x46\xee\xfb\x3d\x80\x2f\x93\xd8\x18\x9b\x1c\x4f\xfd\x79\x01\x64\x73\x76\x03\x10\xe4\x08\x46\x16\xd8\x9d\x1d\x0b\x23\x9d\x95\x5f\xa3\xba\xd4\x5a\x64\xdc\xc8\x4b\x10\x6c\x65\x77\x26\xb0\xc6\xc3\xfe\x57\xe3\x7a\x6b\xba\xee\x40\xcf\x52\x3b\xa9\x1c\x4e\x0b\x50\x41\xb7\xcf\xc2\x07\x96\x59\x3f\xd3\x53\x08\x10\x46\x17\x56\x0e\x61\xf2\x15\x43\xac\xf1\xd3\x81\x7b\xf0\x3b\xaa\x83\x90\x25\x9b\x3f\xbd\x15\x3f\xc4\xd3\x47\x8c\xcb\x4a\x4b\x2d\x6e\x7c\xf0\xef\x30\xf6\xce\xf3\xeb\x89\xec\x2b\xda\xef\x5a\x70\xe9\x6a\x9c\xfc\x76\x40\x48\x03\x80\x09\x00\x6c\x05\xb9\x81\x2c\x7e\x62\x4f\xe9\xcc\x00\x1c\xef\x09\x82\x30\x36\x81\x00\x6c\xf9\x16\xa0\x4b\xd6\x58\x36\x83\xbc\x3a\x83\x5d\xc6\xa6\xa7\x35\x79\x72\x15\xba\x58\x64\x4f\x99\x9d\xa2\x87\x68\xa1\x8b\xf2\x8f\x3e\xe4\x26\xa9\xcb\xd4\x72\x59\xac\x86\xd1\x02\x92\xb8\xfb\xf1\xdd\x34\x30\x1d\x63\x1c\x00\x04\x81\x2c\x05\x33\x70\xcd\xf7\x5a\xaf\x0b\x11\xa7\x93\xd3\x49\x26\xda\xfa\xc0\x24\xfd\x47\x62\xf4\xe6\x40\x61\x0b\x13\x02\x3e\x70\xb8\x4f\x0a\x3f\x1f\x85\x62\x2c\xb4\xfe\x7c\x2a\xad\xca\xe5\xe8\x63\xe1\x0f\x65\xd7\xb4\xfa\x71\xa8\x46\xee\xb3\x7e\xc1\xce\x0c\x73\x5d\x03\xe3\xfb\x10\x39\x92\x4c\xf7\x3c\x26\x58\xfc\x38\x54\x07\xa6\x8f\x40\xb2\xa7\xbe\x8b\x31\xe9\x06\xa9\x80\xcd\xf4\x26\xe4\x4d\xf2\x53\xdf\xed\x45\x65\xb3\x5c\x0d\x8e\x12\xf0\x03\x7c\x93\x5a\x4d\x6e\x38\xf1\xa8\x0c\x3e\x78\x20\x5c\xfd\xdf\x9c\x49\xb1\xf5\x63\xea\x4d\x8f\x2f\x03\x17\x4b\x89\x9c\x81\xab\x8b\x20\xb9\x96\x03\x0d\xe6\x40\x50\x90\xa2\x70\x95\xf6\x22\x57\xf9\x02\xc6\x9d\x60\x92\xed\xec\xcc\x57\xf8\x92\x7a\x3d\x47\x78\x2a\x98\x84\x66\x26\xbe\x8b\x61\xe3\x1e\xaa\x07\x87\xbf\x59\x76\xa4\x73\x6d\xb6\x3c\x8b\x5e\x65\x59\x0f\x6e\xf7\xc3\xde\x7e\x4e\xfc\xa0\x01\x28\xbc\x8c\x93\x31\x08\x26\xce\x89\x7d\xc7\x70\xff\x73\x27\x68\xe7\x2b\x6d\x75\xa6\x5e\x6b\x3a\xad\x84\xa7\x9f\xbc\xef\x5b\xa4\xff\x1f\x9f\x58\xe7\x08\x5f\xe8\x44\x77\x35\xb8\x35\xf3\x49\xa4\xd1\x8b\x40\xc3\x4e\x42\xe7\x4c\xb3\xd9\xfb\x00\xd4\x59\x89\xeb\x5f\x8d\xe4\x61\xe1\x64\x2e\x44\x12\x6c\x2d\xb1\x12\x4b\x0b\x50\x06\x8d\x18\x23\x02\xc6\x35\x9f\x63\x6f\x5c\x62\x7e\x5c\x80\xa6\x1a\x74\x3b\xae\xee\xc7\x72\xd4\x64\x1a\xdc\x6e\x5f\xd2\x71\x5d\xaf\x32\x6c\x8a\xbc\x10\xec\x37\x34\xbc\xeb\xf0\x42\x13\xbe\xe5\x44\xb1\x90\xfa\xa5\x99\x13\xe1\xd3\x94\x9b\xb1\x06\x81\x64\x5a\x7f\xb2\xf9\x07\x66\x20\xdf\x70\x66\x27\xd8\x9d\x45\x3b\xe7\xe4\x07\xec\xb3\xab\x4a\x99\x2a\xe3\xcf\xf9\xbd\xcf\x77\xfa\xe8\xa7\x57\xed\xba\xa1\xe0\xef\x6a\x62\xdf\x4f\x5d\xfe\xfe\x87\xe3\x49\x4e\x9f\xe5\xda\x59\xa8\xaf\x12\xb9\x7c\x95\xfa\x1a\xcd\xb4\xa5\xd8\x56\xb1\x6e\xb5\xb8\xe5\x2b\xbc\x04\x0c\x02\x67\xee\x45\x56\x59\x14\xf3\xed\xe7\x4f\xa8\x0e\x67\xb5\xba\xd3\xea\x76\x8b\xa8\xf8\x65\xb8\x55\xb3\x43\xef\x8a\x4a\xba\x8d\x52\x28\xe0\xcc\xdf\xff\xcb\x55\xc7\xeb\x96\x04\xa1\x09\x38\x61\xfe\x28\x77\xd7\x04\xdd\x1e\xd6\x22\x62\xc8\xee\xf6\x20\xd7\x0d\x2d\x23\x6c\xca\xf9\x2b\x81\x66\xe7\xf8\xa1\x43\x09\x54\xc2\xfe\xe0\xe6\xdf\x99\x29\xff\xf2\x24\xa1\xbf\x93\x10\xd3\x47\xe4\xc6\xec\xe6\x54\x2d\xfd\x7a\xc1\x87\xf1\x81\x07\x35\xaf\xee\xe4\x5a\x95\x1b\x79\xa7\x99\xb3\x2f\x49\xe5\xbe\x0b\xa2\x7f\x22\x9f\xd2\x7d\xfd\xe5\xf3\xe6\xdf\xbd\xc8\x70\x5f\xea\xd1\x9d\x3d\xe1\x9a\xdc\x9b\xcd\xa5\xd7\x8e\xd6\x4f\xdd\x78\x7d\x5f\xed\x18\x74\xf2\x0b\x66\xed\x6d\x4f\xa9\xcd\x06\x89\x4c\x0b\xd6\x25\xcc\xdd\xe2\x8e\x9f\xc7\x77\xe3\x40\x27\xbf\x3f\x7f\xb1\x33\xea\x15\x68\x52\xd0\x7d\xeb\x67\x24\x47\xad\xa7\x3e\xb6\x68\x4e\x70\xba\xfe\xd6\x56\xf5\x9b\xca\x96\xad\xde\xdc\x1a\xf5\x39\x8c\x59\xfb\x5d\xad\xca\xec\xf1\xcf\xa7\x52\x05\xbd\xf3\x3f\x9f\x2e\x3e\x94\x44\x04\x20\x49\xe8\x46\x64\x08\x4b\x3f\xb3\x6b\xb0\x7d\x50\x39\x85\xc1\xea\x4e\x24\x8b\xb9\x6f\x5c\x50\xe6\x64\x6e\xc3\x1e\x50\x21\x7b\xd1\xed\x87\xb9\x96\x09\xdd\x6a\xac\xe6\xc6\xf7\x33\xfe\xc5\xad\x6b\x0d\xad\x6b\x3e\x38\x27\x6b\xec\x61\xc5\xb6\x65\x91\x8b\x38\xba\x1e\x14\x89\x28\x6f\xad\xbb\xa9\x41\xc7\x16\x5b\xdc\xb3\x07\xc1\x9c\x97\x70\xe5\xec\xfd\xfd\x3b\xc7\x65\xd4\x1a\x29\xb9\x6c\x5f\xd6\x6c\xc6\xbc\x29\x84\x3f\xe4\xf8\x93\x8f\x58\xee\x98\x2f\x8c\xb2\xf6\xea\xfb\xac\x29\xac\xbc\xbf\x79\x55\x94\xf9\x91\x0b\xa0\x30\xb2\x7f\xf3\xbb\x5a\xd6\x68\x52\x30\x7d\x6b\x99\xed\x8c\xa5\xca\xa9\xab\xb9\x3e\x11\x57\x6d\x3a\x65\x6d\x50\x85\xe5\x52\x12\x6b\xce\xaf\x03\xeb\x6f\xd0\xf6\xb7\xb5\x42\x35\xfc\x30\xc7\x73\xd0\x9f\x56\x90\x1d\xbf\xfa\x65\x45\x6b\x50\x75\x89\xb2\xb8\x80\xc2\xe4\xed\x2e\x8b\x34\x08\x69\x64\x83\x70\xd6\x86\x33\xed\x73\x81\xd8\xc6\x4b\x69\x48\xfa\xa4\x8c\xdb\xc1\x0d\xf9\xeb\xed\x12\x1d\x4b\xc7\xff\xab\x87\x21\x24\x11\xa6\xf5\x29\x27\x10\x4c\x95\x93\x8c\x8d\xbb\xdf\x2f\x4d\x8b\xd7\x74\xe8\xbd\xcf\x98\x2b\x67\xfa\x7d\x4b\x21\xa6\x7f\xce\xb7\xf9\x76\xe5\xb9\x02\x44\xfd\x5f\x0e\xd0\x76\x96\x9e\x3d\x2d\xe3\x85\x6b\x55\xb0\x9a\x53\x3e\x30\xb8\x11\x1a\xd2\xc8\x1f\x4f\x61\x80\xc2\x61\x68\xae\xa9\xd6\x82\x1d\xbf\x3b\xac\xcb\x0f\xc5\xaf\x29\x97\xca\xff\xac\x47\xba\x2c\xc7\xe8\xc5\x3f\xdf\x33\xc9\xd5\xb0\x7d\x93\xbb\x16\x6a\xc7\x08\x69\xd7\x9a\xdc\x97\xfa\xf1\x58\xb1\xb9\x3b\xca\x59\x0f\xfd\x73\xbc\xb4\xc2\x3b\xd9\x4b\x65\x5b\xd5\xfe\xb0\x39\xcd\xa9\xd3\x76\x2f\x15\xb3\x4d\x72\x3d\x50\x25\xf1\xfa\x6f\x1e\xb9\x05\x13\xf5\x45\x5d\x42\x65\xb1\x0b\xe5\xe8\x9a\x6f\x66\x9f\x96\x51\x4e\x06\x4f\xe4\x0b\x84\x19\x4b\x6f\x17\x43\xe7\x33\x1f\x60\x1b\x27\x4f\x5e\xb8\xa9\xe9\x7d\xcd\x44\xd3\x8f\x8a\xb0\xdf\xcf\xfe\x6f\x1c\x0d\x9b\xaf\x9d\x08\x86\x93\x8b\x58\x84\xdc\x23\xb8\xdf\xf3\x2e\x50\x48\xd6\x97\xd1\xa1\x9e\xb4\x41\x09\x5f\xda\xcb\xb9\xa7\x74\x3b\x98\x9d\xbf\x23\xc6\x90\xb7\x2c\x8f\x8c\x2f\xfe\x1f\x6c\x1b\x4c\x7a\x63\x3b\xf9\x0a\xdb\xa5\x6a\xe1\x15\x76\x01\xcf\x22\x54\xcc\x9b\xbd\xbc\x12\xa6\x5c\xc8\x4e\x1b\x76\xef\xb0\x0b\x9b\xc5\xb1\x21\xea\xe6\x0d\x16\x53\x9b\x15\xe3\xed\xa8\x3d\xa7\x1a\x4d\x2a\xf6\x8b\xd5\xff\xfd\x3e\xa5\x76\xbd\xd1\x55\x44\xed\xcf\x33\xba\xf0\x7b\x28\x87\xe0\xa3\x5b\x3f\x16\xb6\x76\xe2\x98\xed\xb0\x83\xf7\x7e\x3a\x6e\x1b\x5a\xc9\xfd\x9a\x31\x36\x9c\x8d\x0f\xce\x69\x38\x62\xc6\x5e\x15\xd9\x56\x42\x11\xaf\xed\x19\xfd\xea\x5e\xf8\x50\x9a\xa0\x2f\x67\x89\x2d\x9f\xaa\xf5\x26\xc7\x34\xf9\x72\xcc\x16\x81\xe6\x83\x04\xb3\x2f\xaa\x8a\x85\x6c\xf5\x4b\xaa\xd2\x90\xa5\x4f\xaa\x07\x1a\xbd\x87\xea\xa5\x54\xf8\xdd\x45\x19\xfb\xed\xfe\xfd\xfb\xf0\x50\xbd\x11\xe5\x19\xb5\x5f\xf6\x5c\x08\xed\x12\x2b\xb1\xea\x84\x24\xef\x6a\x08\x8a\x4c\xc4\x5e\xd2\x66\x54\x0c\xd7\x51\x17\x12\xdc\xd7\x8c\x0d\xb1\x85\xae\x52\x15\xf0\xbc\x3b\x77\x12\x9d\xa5\x73\x9f\x2c\x05\xea\xcf\xe0\xcb\x3d\x87\xc7\xfc\xbb\x23\xaf\x5e\x59\xff\x86\xde\xaa\xb5\x4b\x3c\xa7\x31\x9e\xad\xee\x04\x9d\x76\x8c\x7c\x75\xa3\xe1\xa0\x49\xb3\xa5\x6e\x3e\x13\xc5\x9f\xe8\xcc\x2e\xe3\xf4\x24\x73\x17\xe3\x8b\xed\x45\x6f\xaa\x00\xe3\xb9\x6f\x33\x2a\xf6\xcc\xe6\x48\x7d\xf9\xd5\x78\x3f\x3b\xe5\x6a\x4e\x27\x61\xca\x73\x89\x85\x4f\x0c\x1b\xb2\x11\x73\xb9\x2a\x86\x37\xff\x06\x60\xad\x83\x4e\xaa\xe1\xdb\x13\x9e\x2d\xe5\xb9\x53\xea\xbf\x4d\x86\x66\x0a\xf7\x3b\xe4\x87\x1a\xf2\x94\x8b\x1d\x56\xd2\x49\x35\xb7\xbf\x9f\x0d\xf1\x77\x56\xc0\xbc\x9c\x5e\x62\x1b\xaa\x57\xaf\xf3\x6e\xd2\x68\xed\x8f\x90\x45\xc8\xd9\x3a\xdc\x61\x5c\xf2\x7a\x09\x26\x3a\xc7\xae\xf7\xd3\x84\xa3\xf6\xa2\x82\x45\x7c\x61\xf4\xac\xc6\x17\xa7\xb4\x18\xb8\x83\x4d\xbe\x67\x79\x6c\x85\xfd\x2d\x2d\xbf\x7c\x52\xeb\x6c\x3d\x2f\x02\xde\xc4\x4c\x20\x29\xca\xb5\x6c\x9a\xe3\x7e\xd4\xdd\x81\x8e\xdb\x06\x93\xbf\x18\x03\x2e\x15\x4d\x96\xf8\xcb\x0d\x6b\xb2\x7b\x99\xd2\xd5\x00\x7b\x6a\xbd\xc5\x0d\x81\xf8\x67\xf7\x4f\x3d\x9d\x5d\xbc\xcb\x20\x6f\xb7\xf1\xf9\x36\xdf\x56\xd4\xde\xd8\x22\xcc\xc3\xaf\x81\xdb\x91\xfd\xc4\x4f\xc8\x9b\x4d\x2c\x6a\xda\x5d\xa0\xb3\x51\xb4\xd1\x6d\x45\x1f\x6b\xf3\x54\xe0\xde\xe1\xfd\x8d\x3e\x17\x15\x8d\x42\x11\x1e\x87\xb8\x4c\x03\xa8\x59\xa7\xaa\x07\x5a\x97\x5b\xe6\x33\x41\x6f\xf2\x26\x94\x15\xd9\xa6\xe7\x50\xe5\xc9\x46\x18\xd3\x11\xf7\xfb\x15\x0e\x9f\xdf\xdf\x21\xd1\xcd\x28\xc7\xb2\xa6\xd9\x5f\x52\x52\xc5\x96\x60\x9e\xc8\x03\xa8\x48\x8a\xef\xfe\x69\x12\xb9\x5a\x3c\x1e\xe2\xe3\x29\x99\xef\x8f\x33\xa7\xda\xa0\x89\x93\xaf\xda\x05\x2a\x09\xb2\x5f\x16\x96\xc8\x9c\x89\xa3\xa0\xa5\x66\x7b\xfe\xe7\x5e\x09\x9a\xcb\x16\x77\x46\x79\x4b\xe2\x7a\xa2\x66\x77\xea\x59\x08\x2a\xf7\x1b\xc7\x4f\x5d\xad\x15\x2b\x34\xd7\x39\x12\x6a\x91\x04\xef\x21\x5f\xda\x19\x9b\xc8\x93\x7f\x9c\x2a\x30\xcf\x15\x57\x4a\xb3\xe4\x14\xfa\x79\x84\x6f\x66\x14\x0b\x2a\x22\xf2\x8b\x4f\x5f\x09\xe5\x7d\x9b\x17\xf7\x52\xd0\x4b\xad\x07\x9c\xf2\x5f\x4c\x58\x2e\xbb\x7a\xf1\xdc\x24\xda\xf5\x3f\x33\x1a\xee\xd1\xf3\x66\x77\x95\x29\xd8\x34\x3c\x6b\x4c\xa1\xad\xaf\x07\xc1\x3f\xce\x19\xa3\xb1\x9a\xde\xf2\xd7\xe7\xb9\x31\x4b\x2f\xb7\x2f\xc9\x47\x21\xc8\x14\xe2\x55\x3e\xaf\x79\x1f\xa9\x71\x0d\x57\x41\x43\x49\x14\x25\xca\xec\x25\x37\xbb\xaa\x3d\xc6\x22\xfd\xed\xc9\x49\xb7\xb8\x73\xf8\xb1\xd1\xa9\x50\xca\x1b\x42\xb2\x24\xd3\x19\x13\x85\x2b\x67\xbb\x60\xd1\xec\xc6\x97\x7a\x25\xad\x34\x11\xee\x8b\x7a\xc7\x18\x34\x42\x7a\x4f\x06\x60\xcc\xd6\x30\xf1\x35\x02\x8c\x6e\xc1\x99\x8e\xf4\x83\x2b\x36\x1b\x68\xcc\xf8\x59\xf3\x01\xc1\x6f\x4a\x41\x8e\x25\xfd\xfa\x4f\x6c\x49\x3f\x75\xba\x63\xf1\x8b\x4b\x73\x17\xb3\x88\x97\x6b\xc1\x70\xab\xbf\xb7\x4a\x19\x61\x7f\xe2\xae\xd5\xfb\x42\xef\x67\xb2\x23\x36\xc5\x85\x34\x32\x63\xc4\xe3\xfb\xfb\xce\x50\xb3\xf1\x3e\x7d\x2c\xf8\x7e\x76\xa5\x7c\xb6\x0e\x93\x58\x49\x57\x2a\x94\xef\x81\xde\x98\xb1\xe1\xaf\x4d\xb9\x33\x55\x7c\xfe\xbb\x0b\x49\x5d\x0b\xa1\x35\x1e\xba\x24\x5f\x45\xdb\x10\x04\x96\x74\x97\xf7\x9e\xaf\xb4\xa4\x5b\xb8\x75\x25\x68\x16\x7c\x37\xe1\x82\xc7\x24\x2d\x55\x9e\x80\xdd\x0b\x09\x21\x44\xe7\x6f\xd9\xea\x23\xa1\x3d\xce\xd2\x58\x13\x42\xbb\x3b\x7f\x12\x7f\x35\x25\xdc\xd3\x47\x6c\x99\x17\x65\xad\x0e\x30\xcd\x76\x2e\x29\x81\x19\x46\x10\xcf\x77\x2a\x24\xc4\x72\xb3\x0a\xfe\x3c\x59\x67\x7c\x2a\x27\x24\x11\xe1\x07\x33\x57\x2d\xdf\x1c\xde\x8b\x8c\xe0\xea\xb9\x1b\xbb\x8c\xb2\xd7\x12\xf1\x13\xd9\xbf\x95\x0b\x0d\x1b\xb5\x46\x89\x3d\x81\xdf\x34\x01\x5b\xbf\xa5\xbf\x1e\x09\x5c\x27\x57\xd0\xc0\xca\x57\x63\x51\x15\x99\x68\x0b\x4c\x6f\x83\xc1\xe8\xe9\x98\xf8\xfa\x63\x55\x7c\x76\xeb\x2d\xaa\xef\x6b\x4b\xbc\x17\x06\x39\xfc\x5c\x4e\x86\x0e\x12\xfb\xbe\x3b\xc8\x8e\x31\x3a\x3f\x43\x87\xe3\x70\xca\x9f\x48\x4f\x24\x95\x89\xa6\xdc\x55\xf9\xc1\xff\xb2\xd5\x4b\x37\xc7\xbc\xcd\xfb\xdf\x59\xd3\x4f\x79\x3c\x55\xf3\x8d\x07\x11\x83\x69\x41\x77\x89\xee\x9e\x03\xee\x39\xc9\xc5\xf0\x59\x1e\x18\x92\x9b\xbd\x51\x69\xa2\x94\xa1\xa9\x10\x8a\x4d\x95\x22\x27\x1a\xf3\x67\x12\xac\x9f\xf2\x3d\xab\x6c\x16\xad\x38\x13\x9d\xe5\x04\x25\xa7\x97\x2f\x51\xce\xd7\x92\xf4\x3e\x7e\x7c\x0c\x04\x8b\xdb\x3f\x67\xf3\xf9\x7b\x36\x8f\x47\xde\x7d\x52\x47\xd6\xd6\x40\x89\x50\xff\x19\xf7\x13\xad\xd7\xc3\x93\x09\xf7\x10\x44\x3b\x31\x28\x7f\x26\x35\x58\x31\x5a\xb6\xbc\x1c\x2f\xa4\xd9\xb7\xbe\x34\xdb\x8f\x98\x23\xd9\xb7\xff\xc9\xf5\x9e\xda\xfa\x0c\x23\x08\xc2\x6a\x8c\xe9\x4b\x72\xc8\xfe\x41\x6e\xfd\xde\x20\x88\x17\x8b\x65\x9f\x7f\xc4\x17\xf5\x3b\xcb\x32\xea\xc7\x2e\xb4\x9f\x65\xc0\xda\xc5\xad\x78\x13\x0d\xde\x5b\xce\xad\xdc\x8d\x0e\x14\x64\xa8\xaf\x91\xb5\x0a\x01\xa5\x9e\x97\x22\xe5\x08\x55\xa3\x62\xf4\x10\x95\xcf\x25\x7e\x1b\x06\x10\x45\x19\x34\x13\x95\xc5\x1d\xd1\xcf\x4c\x1c\x88\x4e\x42\x77\xab\x1d\xc7\xdc\x09\xdd\x09\xda\xf7\x95\x7c\xbf\xe2\xdf\x58\x2a\x1e\xb0\x09\x71\x5f\xda\xa2\xd5\xe9\x25\x1c\x3c\x07\xa3\x4c\x30\x40\x1a\x8f\xbd\x88\xa6\x3b\x5f\x78\xa1\x1c\x1a\xef\xf5\xe1\x54\x5a\xab\x03\x5c\x2b\xc9\x61\xf6\xd6\x39\x02\x29\x69\x88\xa2\xc3\x22\x1c\xc7\xd1\x5e\x33\x2a\xaf\x6c\x66\x43\x7f\xdf\x43\xb7\x76\x82\xda\xe2\x3e\x17\x51\xc7\x36\x0a\x65\xd5\xac\x54\xe5\x27\xe1\xfc\xce\xc9\xc5\x25\x57\xa0\x3f\x1d\x83\xc4\xe2\x41\x38\x47\x1e\xea\x52\x70\x20\x62\xd8\x5a\x6e\xfb\x73\x11\xaa\xab\x12\x2b\x71\x3f\xc3\x91\x25\x4a\xc5\xc2\x97\x47\x9a\x80\x31\x15\x42\x34\xfd\x79\xc7\x42\x49\x22\x52\x86\xb0\xa5\xe7\xc1\x0f\x82\x32\xf3\x3c\xb7\x13\x0c\x44\xa7\x38\xfd\x09\xfa\xf7\x0a\x5f\x1d\x07\x81\x50\x2c\x8f\x47\xae\xe6\xea\x5f\x51\xaf\xfe\xb0\x25\xcb\xff\x2c\x03\xe1\x12\x2b\x55\xae\x70\xff\x6c\x79\xb8\xe7\x48\x1e\x17\xe5\x71\x2a\xf2\x0f\xff\x3f\xfb\x32\x1d\x51\x42\xe3\xbe\xfc\xa7\xd0\x3e\xf2\x5c\xf0\x30\xce\x17\x9d\xa6\xd3\xe8\x9e\xe4\xfb\xc9\x9b\x3e\x51\x57\x1e\x22\x3b\x28\x24\x52\x90\x37\x94\x6c\x2e\xc7\xe9\xf8\x0a\xfe\xd0\xc4\xcf\xeb\xd7\x43\x25\xe7\xb5\xcc\x71\x3f\x64\xa6\x14\x6c\x80\x76\x16\xa6\x71\x81\xa4\xd2\x18\x85\xd8\x5d\xbe\x2b\xa6\x89\x35\x9c\x40\x67\xe8\x6a\xd8\x19\x82\xb0\xf6\x48\xd1\x52\x15\xf4\xfa\x3c\x31\x0f\xba\xfb\x70\x01\xa5\x36\x56\xa6\x38\x2c\x89\xf6\xfd\x50\xc9\x55\x27\xad\x39\x75\x1b\x39\x22\xdc\xdf\x1a\x0f\x49\xed\xa6\x9e\x6b\xcf\x5b\x4d\x2b\xd9\xcd\x29\x06\x0f\xb4\x70\x7e\xe3\xf1\xc9\x7e\xe9\xdd\xbd\xf6\x86\x81\x59\x12\xf3\x83\x45\x83\x37\x8b\xc0\xae\x1c\x23\xab\x57\x48\x55\xad\xc4\x4b\x07\x08\x09\x72\x87\x6e\x1d\x72\x34\x51\x63\x7d\xe0\x35\x99\x7d\xca\xb4\x5f\xe1\x1c\xe3\x69\x2f\x4c\x96\x73\xaa\x40\x8f\x88\xbe\x7b\x52\x39\x6d\xcb\x6e\xe8\xc6\x2b\x8e\xda\xe3\x49\xef\x18\xdc\xbf\xb2\x86\x44\x0a\xa2\xe9\x95\xf8\x7c\xfd\xea\x07\xa5\xee\x42\x4b\x25\x3c\xbb\x71\x67\x18\x2e\x8c\x1f\x0a\x2c\x64\xcc\xcb\x11\x24\x07\x43\x2b\xa0\x3d\x11\x60\x0c\x83\xc0\xe0\x52\x39\xf9\x23\xeb\x3d\x82\x88\xe6\x83\x91\xdd\x39\xd4\x20\xc6\xb2\x74\xac\x75\x58\x5f\x0a\xf8\x03\xef\x00\xd8\x04\x40\x3d\x27\x49\xa4\xf5\x7a\xe9\x25\x3a\x6d\x78\x9a\x72\xce\x3a\x79\x1d\x8f\x74\x27\x98\xdf\xb3\x9d\xcd\xc0\xfb\xfc\xe4\x0b\x76\xb8\x5b\xe8\xcf\xf3\x4d\xa1\x3e\xbd\x2b\x40\x20\x76\x42\x30\x81\xef\x67\x39\xc8\x17\x3a\x51\x67\x6c\xc0\x78\x6f\xbe\x28\x25\xf9\x52\xf7\x5b\xb6\xbe\xa5\xdd\xb0\xc3\x23\xbc\xde\xcb\x7e\x6c\x8b\x90\xf9\xcb\xe8\xa7\x17\x15\x0b\x4c\x4d\x6e\x3b\x82\x2d\x45\x0a\xb3\x76\x9e\xbe\xef\xb7\xf4\xd2\xc7\xc7\x1b\x1d\x0f\x12\xb3\xbc\x6d\xb1\x30\xc2\x63\x14\x77\xbb\x2d\xd8\x83\x4d\x38\x9e\xb5\x90\xd8\x56\x84\x86\xfd\xde\xf9\x0d\x84\xe0\x53\xc4\x96\xa1\x21\xd9\x7c\x1b\xbe\x8e\xd0\x02\x8e\xb0\x77\xa3\x59\xe7\x8c\x50\x1b\x40\xdc\xa9\xd2\xd0\xc6\x25\x70\x04\x27\x08\x40\x3f\xe1\xb1\x60\xa3\xdc\x8d\x53\x4e\x3f\x1f\xb6\xea\xb1\xc8\xab\xfc\x22\x2d\xea\x4d\x45\x09\x12\x37\x07\x9e\x3b\x47\xd7\xde\x23\x66\x77\x29\x06\x80\x06\xa0\x38\xf1\xf9\xf8\x46\xad\xcd\xc0\x0d\x25\x98\x4f\xa5\x59\x54\xea\xbd\xf6\xb8\x7e\x9c\xe9\x2f\xb7\x91\x9f\x65\xd8\xae\xd9\xa2\x6d\xb4\x0d\xe3\x15\x67\xcc\x68\x7d\xac\xe9\x8a\x1b\x2f\x89\x00\x4d\x13\xb2\x72\x32\x4f\xf4\xb6\x83\x7b\xde\x4f\x69\x75\x95\x15\x67\xee\xcf\x68\x78\xfa\x89\xbc\x79\x13\xdf\xa8\x58\x79\x46\xc2\x01\xf8\x1d\x80\x70\x57\xca\xc9\x04\x70\xee\x77\x50\x7d\xd2\x30\x4d\xc4\xd5\xfa\x36\x4b\xd7\x34\x71\x62\x29\x0c\x43\x1a\xe1\xc1\xab\xcf\xfc\xd7\xc3\x42\x8c\xd0\x5b\x7d\x1e\xa1\x60\x2e\xf1\x9b\x67\x6b\xf6\x99\x03\xf2\x81\x6c\xbb\x3e\x4c\xf7\x60\x4f\xf4\x36\xfe\xdc\x45\xa0\xea\x97\x39\xe7\xba\x73\x7b\x21\xc1\xc0\x76\x26\xa6\x79\xc3\x15\x57\x59\x5f\x6f\x4c\xb3\x73\x08\x6c\xc0\xee\xd6\xad\xf4\x86\x4e\x10\xc2\x3c\x33\xc4\x3d\x39\xb4\xac\x45\x3b\xf2\xec\xbb\xef\x15\x25\xd7\xe9\x7e\x1c\x8c\x2d\x83\xd1\x79\x72\xbf\xf8\xfb\x3b\x4d\xfb\x4c\x23\xf3\x74\xfb\x4b\xc2\xed\x1f\x1c\x95\xb6\xd5\x9d\x01\xed\x02\x64\x8b\x37\x66\xa3\x4e\xe3\x41\xe7\x36\x62\xc2\x1c\x60\xa3\x16\x07\xd8\xf0\xb8\xd7\x8b\xe2\x0b\x52\xe0\xc2\x3d\xc8\x77\xda\x6e\x30\xdd\x1e\x06\x7c\xaa\xb6\x7d\xdb\x46\x25\x07\x4c\x1f\xfa\xcc\xb8\x11\x75\x7a\xfa\xe0\x4e\x09\x76\x26\xd5\x27\xce\xf7\xa5\x11\x26\xfe\x15\x8f\xbb\x76\xd6\x83\x98\x5c\xbf\xd2\x28\x07\x97\x1d\x7e\x2d\xf3\x20\x47\x9e\x0f\x71\x7c\x7f\xe7\xaf\x84\x6f\x00\x05\x3b\x60\xb0\x73\x89\x79\xb6\x3e\x9e\xda\x9b\x60\x5a\x1a\x20\x11\x9e\xf6\x23\xf9\xac\x71\xa6\x65\x56\xd8\x2b\x32\xf2\x80\x62\xb0\x7f\xd8\x95\xd7\x04\x40\xa8\xe1\x0d\xe3\xb5\xcc\xe0\x3d\x31\xfa\x0c\x18\x66\xbf\x36\x59\x5c\xe7\x87\xb9\xe4\xfc\xb3\x08\x78\xce\xde\x13\x29\xcc\x96\xe0\xf0\xde\xf4\xbf\x5e\x46\x32\xc3\xa1\xfe\x6c\xbb\xcb\x0b\x7f\x5f\x5d\x3a\x41\x93\x35\x71\x74\x10\xe4\x83\xcb\x10\x98\xe0\xf4\x36\x8f\x57\x47\x60\x1f\x27\x67\xca\x1e\x30\xe7\xb2\xfb\xf3\xd3\xbc\xe3\x53\xb7\x1b\x34\x32\x84\xfb\xc3\x94\x7e\xbc\x13\xe3\x47\x1c\x1f\xdf\x1c\x47\x28\x00\x08\x0d\xcd\x01\x56\x84\xfe\xfe\x89\xbc\x76\x46\xe8\x73\xcf\x93\xc7\x1e\x96\x02\x31\x63\x1d\xce\x0b\xd1\x86\xaf\x53\x84\x8d\x81\xe3\xbe\xe5\x90\xfb\xbd\x97\xdc\x53\x43\x21\x75\xa3\xee\xcc\x71\x73\xda\xd2\x4c\xb8\x68\xd5\x5a\x08\xde\x38\x47\x0c\xa0\x18\x8f\x25\x34\xce\x72\x6e\x68\xcd\xd3\x3e\x13\x00\x14\x06\x86\x9d\xcc\x1c\xd6\x1c\xce\x48\x6d\x74\x34\x8e\x6e\x46\x4a\xe5\xb7\xc6\xc5\xcb\x27\xd0\x3b\x7f\xef\x6d\x9f\xf0\x33\x1f\xcb\xbc\x6d\x8d\x88\x75\x67\x00\x54\x62\x90\x2b\x08\x17\x1c\x9b\x70\x78\x60\xc7\x79\x3f\x22\x61\x98\xa6\xe7\x2e\x0a\xea\xaf\xa7\xea\xc3\x21\xf6\x19\x6b\xd1\xce\x0a\xd5\xeb\x0c\xbb\xb0\xcb\x0e\x32\xfb\x28\xaa\xce\x39\x4b\xb4\xef\x3a\x64\xee\x00\xd3\xa8\x9c\x1b\xb5\x7d\x85\x13\x40\x10\x06\xa6\x2b\xce\x73\x9d\xaa\x2b\xe6\xa4\x31\x70\xa6\x5c\x7e\xf2\xb3\xa5\xf1\xbf\x19\x2a\x7a\x15\xe2\x2a\x39\xa0\xfa\x1e\x30\x4b\xc8\xce\xcd\x77\xcd\x53\x22\x27\x56\x86\xa0\xfb\x65\x96\xac\x5b\xff\xac\x39\xa1\x09\xfa\x88\x9e\x8c\x8e\xed\x14\x8f\x99\x83\xf8\xaf\xbe\xa8\x74\xd3\xd4\x4d\x7d\x93\xe8\x98\x80\x4c\x29\xf2\x0b\x4f\x78\xa4\x0e\xa6\xa5\x80\x01\x3b\xb2\xf8\xb3\xde\xad\x7c\x9e\x50\x20\x07\x18\x01\x01\x49\x0e\xf3\x7c\x9a\x78\xa9\xed\x39\x21\x7d\xf4\x11\xdd\x6a\xbc\x35\x6c\x94\x4c\x74\xe1\x0c\xf1\x4c\x02\x0c\xd0\x33\x00\xf9\x14\x84\xb3\xe7\x65\x7a\x85\xe6\x3b\x41\xc7\x04\xd3\xe3\x37\x9d\xdb\xec\x5d\x8e\xae\x3c\x32\x1e\xd8\x54\xfd\x3c\x5a\xfa\x62\xbc\x8f\xeb\x62\x35\x1d\xfc\x6a\xdd\xf9\xa7\xe9\x0b\x04\xe6\x06\x41\x1a\x11\xcf\x81\xd6\x6d\xc9\xef\x3e\x0a\x99\x1b\x14\xd8\xd7\x98\x80\xe7\x01\x82\xd0\xea\xb3\x9d\x1f\xa7\x78\x27\x80\xce\x69\x5f\x25\x7f\xa0\x45\xd7\xc0\x0d\xdf\xb1\x56\xd6\x7c\xb0\xae\x76\x8a\xfa\x66\x8a\x67\x42\x0a\x19\x9d\x02\x20\xce\x76\x7c\x23\x70\xa7\x26\x7a\x02\x80\x27\x07\xee\x1e\x80\x8e\x46\x91\xc6\x49\x87\x2f\x93\x22\xb8\x7e\x7a\x0a\x2f\xbc\x37\x8f\xb2\xb6\x7d\x93\x4e\x97\xbb\xc2\xcf\xdf\xbb\xe4\x3d\x7f\xc8\x0c\xa6\xb4\xd7\x71\x32\xc2\x63\xdf\x67\x33\xa4\xf8\x71\xe8\xf6\xd0\x00\x40\xdc\x7b\xb0\xbf\x28\xdc\x0d\x95\x99\x97\xf6\x5d\x9e\x26\x84\xa1\xc8\xf8\xe7\xf3\xa4\x9b\x85\x5c\xbc\x76\x88\x61\x4e\x7a\xeb\x1a\xf1\x73\x88\xde\xb5\x49\x22\xb2\xa1\xca\xf3\xcc\xf4\x1d\x02\xf2\x4c\x04\x95\xb4\x7c\x5f\xf2\xb0\x1f\xc0\x07\xcc\x45\x80\x7b\x25\xc8\x99\xf5\x1b\xba\x75\x26\x04\x81\xf3\x58\x96\xd8\xc6\x84\xb3\xef\xd3\xb8\xef\x16\x68\xf7\xdb\x37\xfc\x0c\x9b\xe9\xb1\xa5\x01\x41\x92\xeb\x44\x98\xb0\xa2\xc4\x22\xb5\x9e\x23\xe9\x08\x80\x09\xcb\xed\xf4\x7b\xab\xe5\x1d\x02\x80\x84\x02\xcc\x4d\x63\xf0\xde\x20\x5a\xd5\xb7\x9a\xd5\x0c\x40\xce\x31\xb6\x32\x02\x81\x88\x26\x75\x4d\x9c\x7d\xbd\xeb\xf2\xe0\x1e\xe3\x19\x01\x51\xe2\xf6\x7d\xbf\x55\x2f\x2d\x42\xd6\x09\x10\x5e\xca\x30\x37\x6a\x2f\xc4\xab\x66\xf4\x9f\x73\x7c\x89\x39\x77\x96\xa7\xd2\x4c\xd6\x4c\x10\x9b\xfb\xb4\x1f\xeb\x2f\x97\xe2\xa5\x70\xf1\x4f\x2a\xf5\x3d\x2c\x08\xf2\x18\x6a\x92\x52\x2c\xd9\xe7\x33\xec\xed\xb2\x2c\xdb\x06\xc0\xf3\x49\xd3\xec\xb5\x9b\x27\x3a\xca\xad\xc5\x30\xf7\x9e\x41\x84\xea\x13\x20\x03\xea\xbb\xe2\x77\xfa\x19\xf6\x8f\x85\x00\xa8\xd9\xe2\x95\xed\x5c\x21\x26\x6f\x81\xf6\x23\x66\x07\xf3\x0e\x00\xd3\xee\xe0\x52\xde\x5b\x85\x2d\x9b\x40\xd3\x08\x04\xa4\x28\xb8\x11\x16\x28\xc6\x42\xbd\xc5\x5d\x88\x68\x9c\x0d\x32\x89\xd8\xb5\x5d\xa4\xb9\xf3\xfb\xab\x2d\x0f\x94\x8f\xd8\xcc\x76\x99\xa7\x49\x94\xce\xd5\x9f\x15\xd3\x92\x44\x44\x9f\x8a\xe4\x6a\x98\x01\x30\x66\x1f\xec\xf1\x0e\x16\xba\x11\xbe\xdd\xe2\x6e\x3b\xaf\xdf\x79\x06\xd8\x07\x27\x63\xd9\xfa\xee\x11\x14\xf5\x4a\xf4\x82\xe1\x3a\xe6\x83\x97\x11\xc2\x4d\x75\x07\x2e\x03\x92\x34\x80\x62\xd6\x90\x22\x00\x40\x7d\xdf\xb7\x4c\x2b\xdb\x17\x08\x76\x40\x00\x00\x77\x00\x46\x1f\x30\x21\x09\x78\xd1\x80\xd3\x8a\x93\xf7\x2c\x55\xa6\x84\x0e\xf1\x4c\x2c\x69\xf5\xc4\xd4\xdf\x99\xa3\x22\x2b\xee\x84\xe5\x2e\xa6\x7d\x83\x74\xae\x7b\xbf\x2f\xca\x86\xed\x82\xa1\x96\x89\x1c\xe1\xa0\x41\xf4\x24\x69\xae\xdb\xae\x7d\x92\x37\x9c\x33\x62\xa7\x53\x86\x20\xf6\x9b\x01\x6c\x18\xe4\x5c\x10\x0c\xcf\x9d\xb1\x29\xca\xf9\x56\x4e\x34\xef\x33\x10\xce\x2a\xc4\x99\x74\x5c\xab\xe9\x4d\x68\x76\x0a\x10\xa2\xcf\x01\x3b\x01\x70\xb5\x17\x51\x5a\xa6\xb4\xed\x04\x64\x08\x40\xa2\x4e\xba\x6d\xb9\xe3\x39\xc7\x41\x7e\x1e\x43\xb8\xf9\x2d\x4b\x05\x73\xbb\xc6\x1e\x36\x0b\xdf\x43\xcb\x9b\xd9\x07\x8d\xec\xfe\x03\x91\x94\x27\xed\xa3\x44\x57\x50\xf4\xe3\x3c\xc9\xf9\x13\xf4\x11\x33\x47\xdd\x89\x9a\x96\x9b\xd8\x45\xca\xd3\x4c\x9e\xe8\x5d\xdb\x9e\x24\x93\x75\xe7\x95\xb4\xca\x81\xe6\x33\x04\x35\xa0\x9b\x1b\x20\x34\x03\xa8\x8e\x99\x68\x7d\xd6\x93\x0c\xd7\xea\xe0\x86\x0c\xdb\xf4\x65\x87\x30\x4d\xe8\x3d\x0b\x56\x93\x14\xac\xea\xe4\x60\x98\xcd\xb4\x82\x39\x98\xde\x0c\x33\xd4\x42\xd0\x64\xba\xf0\xe4\x01\x0f\x15\xb9\xb5\x76\x80\x44\x3b\xd8\x76\x41\xaf\xed\xf8\xd6\xc4\x9c\x3a\x6d\xc3\xe0\x0a\x52\xe7\x7b\x75\x99\xa0\x4b\x63\x14\x1a\x13\x1e\xe9\x5f\xe7\xa9\xfe\x6a\x19\x94\x17\x19\x75\xe3\xc4\x95\x28\x12\xac\x35\x47\xee\x83\xf0\x5c\xd3\x14\x3c\x29\x0d\x65\x4f\xab\x67\x26\x7a\xab\x17\x84\xdd\x78\xaf\x5d\x23\x84\x58\xe9\xb0\x33\x9b\xa7\x89\x94\xf8\x76\x03\xd8\x25\x80\x05\x36\x80\x24\x35\x61\xd1\xe5\x4a\xea\xca\x53\x10\xa9\x6b\x1b\x3d\x35\x3b\xcc\x71\xe4\xda\x5c\xab\x73\xae\xce\x73\x52\xc1\x0b\xc2\x45\xc5\xba\x0d\xc8\xd3\x44\xd3\x80\x0d\xa2\x9f\x52\x80\xec\x35\x79\x3a\x40\xf1\xb0\x35\xd8\x01\xe2\xe6\x40\xed\xfc\xbd\xb3\x9b\x13\x03\x97\x76\x17\x28\x34\x6c\x7b\xbf\xed\x25\xe1\x77\x6f\x56\x98\x05\x6d\xd6\x80\xc4\x9f\x78\xd3\x32\x51\x8a\xbd\xff\xf1\x69\x11\xc9\x24\x53\x9a\x3d\xcf\xe1\xa5\x70\x9c\x1f\x2b\x1b\x59\x40\xc8\x3e\xf4\x6e\xa2\xe4\x8d\xbe\x7e\x12\xa4\xfd\x00\x36\x8b\xe4\x46\x75\x88\x6f\x55\x7e\x3e\xc4\x98\x61\xee\xfb\x9e\xf7\x3d\x99\xf7\x74\x9c\xf6\x9e\xb4\x34\x41\xe8\xeb\x63\xf0\x25\x32\xc7\xba\x15\xab\x01\x5d\x5c\xd0\x71\x5d\x2f\x8c\xb7\x6f\x6f\x53\x0c\x8b\x7e\xc1\x9e\x11\x82\x3d\xf6\x5f\x5a\x49\xaa\xef\x36\x6f\x8c\x01\xba\x91\x60\x7a\xa4\x2c\x77\x35\xb5\xd6\x81\x29\x94\x0b\xf8\xfb\x66\xf8\x38\x4d\x50\x35\x27\x07\xf3\x35\x12\x80\x2d\x09\x1a\xf4\x87\xa3\x87\xcd\xaf\xf7\xca\x71\xf4\x28\x40\x76\xfe\x24\xd9\x44\xd3\xe1\xbd\x03\x88\xe4\xb1\x6d\x4a\x2d\xe5\x11\x38\xe3\xde\x14\xa2\x1b\x46\x1e\x47\x13\xcd\xba\xaa\x6d\x26\x9b\xaf\xb4\xe5\x4d\xb1\xe7\x85\x13\xc4\x34\x4d\x53\xd9\xce\xdd\xfb\xe8\x76\x20\x68\x31\x4b\xa8\xb7\x14\x4b\x08\xbd\x61\x63\xe6\xdc\x3d\xa0\xf2\x71\x58\x51\x8a\xbc\xb4\xba\x26\x70\x5a\xd6\x41\x66\xcc\x7f\xdc\xae\x83\x01\x7b\x3a\xa1\x35\xcf\x4c\x4b\x93\x14\x46\xf8\xf3\xb9\xf5\x6e\xb7\xf3\xcc\x4f\x69\xb9\x7b\xfb\x1c\xf1\xcd\x48\xb3\x34\x73\x56\x0d\x82\x37\x3a\x04\xd6\xaf\x2e\x95\xe3\x5e\x97\x5a\x0f\x2b\xc3\xdc\x84\x77\xe0\x11\x7b\x97\xd1\x34\xcd\x3f\xb8\xf5\x66\xbb\x2b\xd6\x68\xf9\x4e\x6e\xd5\x30\x76\x55\xa5\xb6\x2c\x47\x84\xe2\x08\x74\x1e\xe4\x52\xe6\x62\x29\x01\xbe\xe8\x0f\xce\x64\xe2\x8c\x58\x99\x28\x40\x08\x8a\xa2\xe0\xdc\xac\x1e\x93\xb9\x98\xbb\x2f\x75\x01\x61\xa0\x11\x9f\x0f\xb5\x12\x40\x6a\x55\x6a\x75\x7d\xbf\xef\xf1\xce\xcb\xf0\x18\xae\x1b\xf5\xd2\x5c\x9d\x59\xe8\x98\xb9\xc7\x71\x5d\xb7\xed\xc6\xbe\xbc\xfd\xdc\x61\xa2\x94\xac\x00\x21\x49\xed\x67\xa6\x5d\xc1\x71\x37\x49\x5d\x03\x80\x8e\x20\xb8\x53\xdd\x13\xe2\xe2\xf1\xcb\xd1\xdf\x1f\x04\x6e\xa6\xad\x13\xf9\xa6\x6e\xe7\x81\x31\xc4\x8e\x17\x84\xbf\x47\xec\x9b\xae\x03\xd6\x30\x6e\xf9\xba\xe0\x4e\xc4\x52\xcb\x50\x34\xbc\x3c\xeb\x62\x35\xfe\x21\x09\x2e\x9a\x7e\x4e\x0a\x0b\x5d\x7f\xcf\xf3\x09\xf3\x56\xaf\x45\xb9\xcf\xb3\x08\x84\x1d\x24\xc0\xb8\x2a\xe2\x54\xb5\x6d\x05\x40\x12\x00\xfe\xe4\xed\xbd\xec\x5f\x6a\x54\xc7\xcc\x89\x6c\xeb\xbe\x1b\x0c\xbf\x76\x44\x1c\x96\x59\x2f\x32\x48\x25\xf3\xbb\x3f\xcf\x04\x7b\x55\x7b\x96\x42\x0c\xb3\xa8\x64\x53\x02\x21\xcc\x91\xca\x34\x89\x4d\xcd\x8a\xeb\x3a\x3d\x99\x02\x71\x18\xcf\x4c\xc9\x1a\xc1\x12\x59\x85\xf1\xab\x15\x17\xb5\xcf\x00\xf5\x1d\xc0\x00\x0b\x14\x3e\x56\x49\xcf\x0c\xc1\x26\xfa\x46\x9b\xda\xbe\x8b\x5e\xcf\xe0\x16\x48\xb0\xe3\x4c\xba\x03\x6c\x66\x20\xf2\xa7\x56\x0e\x68\x8f\x07\x0e\x37\x64\xf5\x1e\x63\x90\x8a\x46\x37\x82\xd1\xe6\xf9\xbb\x69\x86\x9e\xdb\x5a\xae\x3d\x3a\x47\xc7\x22\xc4\x9e\x77\x10\x4d\xe5\x43\x25\x70\x71\x76\xaf\x1b\xe0\x1a\x46\xb4\xc9\x65\x0c\xc8\x4e\x37\x89\x2e\x40\x84\x49\x37\x02\xe4\x60\x50\xff\x78\xad\x0d\xa0\x6b\xbc\x17\x4d\x6c\xf4\x36\x27\x2c\x11\xad\xd1\xea\xcf\x0c\x33\x0c\xc3\x96\x28\x6d\x2e\x7d\xf4\xf9\x4b\x26\xaa\x01\x36\xb3\x3c\x0e\xca\xf7\xb0\x9d\x29\x31\xc0\xee\xef\x2e\x46\xbe\xcf\xfd\xb7\x1f\xc5\x71\x3a\xac\x53\xc2\x30\x7c\x54\x39\x0e\xc6\x7f\x6b\x10\x64\x00\x10\x1b\x12\x6d\xcb\x2e\x3f\x93\x5b\xbd\xa5\x83\x4d\x3c\xe9\x48\x84\x67\x93\xf1\xe6\x12\x73\xdf\x80\x53\x19\xf5\x16\x6d\xae\x71\xbf\x57\xe7\x14\x1d\xf4\x4e\xcf\x75\x5d\x0d\x45\x0e\xbd\x64\x41\xcf\x82\x1d\xba\xae\xeb\xfe\xb1\x78\xfb\x12\xd8\x6d\xa1\xab\x45\x05\x8b\x9c\xba\x37\x23\xba\x9a\xc2\x30\x34\xbe\xad\x2d\x72\x46\x4c\x82\x68\x02\x36\x9d\x99\x1f\x8a\xc0\xab\xbf\x96\xee\x0b\x55\xf8\x81\x39\xc3\xd6\xc7\xa5\x71\x5f\x54\xb5\xdf\xa7\x7e\xab\x37\x7f\x1c\xdd\xfb\x68\x9a\xa5\x6d\xe4\xd1\xb3\x42\xb7\x75\xdd\x04\xef\xb2\x18\x45\x7a\x98\xcf\x2c\xd8\x67\x1e\x99\x67\x1a\x99\x7c\xad\xa2\xd6\x08\x47\xf6\x89\x5e\xe6\x2b\x96\xde\xe2\x28\x00\xb0\x46\xc4\x81\xf0\x62\xe0\xe4\x2c\x91\x40\x64\x9b\xbd\xb6\xcc\x1c\x55\x0a\xb4\x7f\x9a\x57\xcf\x42\xf8\x10\xfe\x0e\xfa\x95\x21\x69\xb5\x7e\x96\xf8\x29\xef\x79\x06\x5d\x4d\x83\xd4\x83\x4a\xd6\x37\x41\xb7\x36\x84\x27\xe3\xdf\x6d\x2f\xd8\x51\xcc\x7c\x11\x04\x31\x1a\x79\xa7\x10\x7b\x70\xae\x6d\x7a\x00\x96\x92\x7f\xf0\x17\x19\xa5\x8b\xfd\x53\x5f\xd3\x3c\x4b\x79\x79\x80\x56\x30\x39\xff\x0b\x8a\x07\xc7\x59\x92\x84\x9e\x47\x02\x02\xc5\x89\x20\xdc\x87\x88\x46\x00\x9a\xee\xb1\x89\xf8\xca\xd7\x3e\xb2\x1c\xb9\x4f\x89\x1d\x59\x11\x7f\x54\x8d\x5f\x2f\xac\x95\xa8\xd9\xf9\xd8\xaa\x6e\x17\xee\x11\xe3\xcb\x4d\xc3\x37\x40\xe0\x1e\x8e\x94\xcc\xab\x38\x7f\xf7\x47\xde\xea\xea\xc7\x63\x03\x3c\xcf\xe7\xfb\xfe\x7d\x52\x0c\x39\x79\x1f\xed\xc6\x3e\x6f\xfb\x66\x30\xa8\x9f\x4b\xc3\x4d\x89\xb1\x62\xf9\x5d\x62\xdd\xb5\xe4\x24\x62\x54\xf7\x7d\x63\x3b\xf5\xfc\xec\xfb\xd6\xf3\xef\xbe\x78\x28\xc2\x43\xff\x8d\x61\xed\xb3\xed\xfa\x87\xee\x59\xd8\xe3\x3a\xff\x3a\x32\xae\xb6\xc1\xe5\x80\x49\x6e\x99\x04\x4d\x75\x10\xe4\xb4\xfc\xd6\x93\x3b\x02\xc0\x50\xa4\x86\x21\x9c\x21\xf8\xb6\x0d\xdb\x09\x42\x4f\xa2\xad\x33\xc4\xe9\x62\x79\xd4\x16\x2a\x0a\xd6\x0a\x94\xfb\xa1\x7f\x67\x9f\xef\xd8\xd6\x74\x94\x63\x18\x90\x5e\x2f\x35\xd3\xfd\x79\xa1\xdc\x34\x1b\x73\xb9\x9d\x7a\x58\x90\x52\x6e\x18\xef\x25\xbd\x97\xb2\x83\x4e\x92\x65\xd7\x11\x84\x5c\x0a\xa3\x54\xc2\x40\x94\x00\x04\xf4\x01\xa2\x94\xa5\x89\x7d\x1d\x2a\x20\x8d\x3c\xe0\xe4\xe1\xb2\x7e\xb1\x6b\x35\xbd\x98\x09\xa8\xf0\x43\xa3\x18\x3b\x14\x7b\xec\x33\x14\xad\x7d\x6a\x57\x61\xd0\x52\x35\xca\xfe\xbe\x51\xeb\x15\x72\x27\x42\xe4\xef\xa1\x7d\x0b\xc4\x3d\x90\xfe\x97\xb6\xad\x56\xbe\xa9\x68\xf5\x0e\x80\x0a\x9c\x7d\x55\x5a\xba\x6f\x32\x3d\x4d\xc3\xfc\xff\xbf\x7f\x33\x70\x1c\x67\xb0\x2c\xc6\x78\x61\xe7\x4f\x89\xa2\x83\x6e\x9c\x2a\x76\x72\x9a\x86\x6d\x58\xa0\x96\xf5\xe0\xbe\x44\x67\xbe\x53\x52\xe7\xbe\x0a\xc1\x50\x9c\xe0\x0c\xaa\x95\x32\x19\x05\x41\x10\xea\xa6\x89\x9f\x53\xd4\xdf\xbb\xeb\xa6\x56\x16\x7e\xa7\x7f\xfd\x42\x85\x80\xc9\x03\x86\xd9\xab\x42\x7a\x77\xbc\x60\xbf\xbd\x0a\x02\x40\x1e\x29\xe5\x76\xc9\x98\x65\xf3\xe8\x03\x2b\xd5\x1b\x27\x25\x96\x5e\xf7\xe3\x8d\x88\x35\x4c\x16\x9c\x99\x3f\x55\xfb\xfd\x3d\x58\xd0\x2c\x68\x04\xef\xef\xc7\x4e\x55\x04\xd9\xde\x4c\xad\x9c\xdf\xc7\x11\xfc\x62\xc0\x8f\x8a\x5f\x75\x41\x73\x02\x28\x70\xd5\xee\x29\xf2\xad\x1a\xe1\x2d\x86\x55\xcb\xbe\xfc\xbe\xc7\x56\x17\x67\x20\xf6\x12\x5e\xc4\xde\xe1\x59\x62\x08\xf5\xf8\x16\x9c\xf1\x21\x3d\x65\x0a\xb0\x89\x71\x76\xd2\x29\x1e\x90\x46\x49\x94\xf8\xf3\x8f\x15\xfa\xcb\x51\x8d\x5f\x3f\xcf\x93\xf0\xe3\xf9\x8f\xfd\xbc\x13\x64\x4b\x04\x76\xec\x0d\x01\x98\xac\x8d\x3e\xed\x1c\x33\xe2\xdd\x60\xb8\xf1\x0c\xb3\xe1\x20\x0e\x16\xee\x85\xfd\x20\x75\x0e\x53\x05\xc7\x99\x7a\xe7\x71\xb0\x88\xc6\x39\x30\xce\xcc\xe7\xc6\x6c\xb4\xd2\x42\xc0\x27\xae\x10\x59\xea\x2f\xe7\x6d\x68\x71\x48\x21\x42\x39\xae\xeb\x8a\x07\xa0\xb1\x76\x67\xaa\x4f\xa8\xcd\x71\x46\x30\x64\x97\x83\xe0\xa0\xef\x8f\x3a\xb5\x39\x73\x3e\x6e\x24\x1c\x8d\x0e\x89\x3c\xef\xc6\x93\x24\xcb\x69\x09\x04\x2a\x27\x16\xc4\x04\x89\x01\xb2\xc8\x5b\x75\x84\xcb\xfb\xd5\xda\x3b\xbc\x85\xad\xb6\x43\x10\x84\x55\x1f\xdf\x14\xc2\xd8\xf7\x7d\x62\x87\x69\x30\xee\xe6\x8e\x72\x8f\x1b\x22\xec\x2b\x1f\xb5\x37\x76\x25\xe5\x4b\x32\x75\x06\x92\x3e\x7e\x2f\x8c\xee\x1c\xbd\x89\xfa\x39\x18\x6f\x82\x42\x58\xed\x59\x8a\x07\x9c\x56\x77\x20\xf2\xcd\xe6\xec\x29\xb3\x91\xc9\x68\x7e\x67\xb5\xe2\xbc\xb3\xbb\xe7\xcf\xee\x75\x12\xfa\x8b\x33\x76\xf0\xaa\x7e\xa0\x14\xda\x9f\xb7\xe7\x92\xa1\x6e\x0a\xf0\x46\xbe\xf6\x2b\x18\xcd\x88\xea\x42\xd2\x20\x80\xf1\x42\x9c\x57\xf9\x96\x9d\xf3\x8d\x01\xaf\xef\x77\xe6\x43\xcc\x39\xce\xfb\x77\x12\xd1\x08\xb5\x4d\xf8\xda\xe6\x53\x2d\xfc\xf6\x54\x5f\x6f\x56\x7a\x1b\x04\xf6\x69\x91\x8f\x51\xe4\xbb\xa0\x84\x44\xbc\x93\x5f\xde\x18\xeb\x37\x62\xec\x0c\x87\x20\xb4\x71\x22\xba\x13\x74\x7c\x37\x4e\x21\xc8\x34\x00\x51\xaf\x72\x9c\xb1\xfe\x24\x2c\x02\x16\xde\xe8\x95\x41\x35\xf0\x55\xc8\xf6\x8d\xa7\x21\xf6\x61\xdb\x47\xff\xbb\xd7\xf4\xe6\x0f\x1c\xbf\x12\x24\x9f\xb3\x2e\xfa\x06\x39\xa4\x13\x90\x41\x85\x44\x1e\x8d\xa2\x72\xe2\xc5\x0e\x1a\x93\xa3\x15\xde\xd1\xd9\xc9\xe6\xef\x9c\x30\x76\x2e\xe1\x4a\x55\xfe\x5a\x3d\x0d\x86\xfb\xbe\x19\xe2\x1c\xa3\xf5\x59\x02\x9f\x01\x46\x9a\xa7\x29\x6f\x85\x72\xf0\x18\xbf\xd2\x6f\x2e\x7a\x95\x53\xd4\x0d\x08\x54\xdf\x06\x2f\x80\x44\xa2\x20\x9d\x2d\xbb\x37\xa7\x66\x1e\x3e\x74\xae\x00\x39\xcb\x2a\x94\x58\x0a\x2f\xf6\xa1\xc6\xfc\x39\x43\x70\x33\x04\x2a\x96\x59\x38\x6f\xab\x61\xec\x3e\xda\x4e\x44\xcc\x71\xf4\x36\x54\x45\x8e\xc0\x32\xe5\x86\x8c\x93\x1d\x8e\x6a\x14\x70\xb5\x11\xfc\x3e\xff\x79\x1e\x51\x1f\xa7\xe8\xd4\x25\x53\x00\xa0\x50\x05\xc1\xf0\x19\xb6\x7c\x99\xd2\x6c\xa1\xab\x2d\xf2\x0f\xa4\xa1\xd3\x6d\x83\x82\x81\x92\xcd\x7b\xb4\x2a\x87\x97\x4f\x4f\x05\xcf\x2f\x86\xa5\xbd\x43\x5b\x8e\xf1\x69\x16\xd8\xf4\xf9\x3e\xdd\x86\xbf\xe7\xea\xce\x7c\x53\xe2\x3e\x1e\x7f\x7e\x7e\x3c\xaf\x62\xfe\xab\xbd\x78\x28\x4f\x62\x65\x72\x94\x7b\x60\x9a\x8d\x1e\x41\xbe\x32\xd9\xae\x50\x1f\x31\x55\x2c\x02\xc5\xca\x87\x2c\x26\xba\x00\x18\xe9\x7b\x20\xbd\x53\xb5\xb2\xe3\x56\x92\xa9\x4b\x8f\x9b\x15\xf0\xb5\x8d\x8c\x13\x55\xb1\x53\xfa\xc8\xa3\x49\x21\x94\xc6\x67\x05\x99\xa9\x06\xb0\x5c\x17\x3b\x91\xdb\x76\x7d\xf5\x70\x06\xed\x07\xa3\x63\xdf\x7f\x3c\xf3\x5e\x4e\xc6\xdd\x48\x9f\x01\xe4\x66\xed\x66\x34\x78\xc1\x9f\x79\x36\x43\x34\xc1\xa0\xe5\x49\x9e\xd5\xa2\xe8\x88\x78\x05\xe0\xea\xb2\x5c\x54\xca\xc8\x18\xa7\x96\x88\xd3\x5b\x6c\xbb\xcf\xf3\x27\x77\x22\x27\x24\x13\xbe\x1c\x70\xa3\xe4\x56\x26\x23\xf2\x7c\x04\x79\x30\x31\xc5\x55\x72\xbf\xf5\xe8\xf9\xd1\xec\xf7\xc9\x42\x02\x22\x6f\x71\xff\xd4\x1c\x40\xd1\xca\x55\xf2\x2d\xb3\x05\x22\xa3\x7c\xf5\x7c\xbd\x13\x14\xf6\x02\x37\xaf\x1b\xee\x04\xf3\x47\x6a\x76\x1b\xc1\x71\x04\x32\x9a\xa4\xc8\x8e\x7b\xd6\x01\x6e\x10\x00\xd4\x4f\x3c\xec\xaa\xf5\xe1\xef\xd3\x74\xb1\xbb\x9e\x23\x37\xce\x10\x09\xb9\x0c\xcf\x6b\x2f\xb2\xdf\x79\xd7\x09\xf3\x18\x23\xf2\xac\x16\xe8\xdc\x8e\x32\xd5\xf0\x5d\xa1\x04\x88\x2d\x18\x58\x18\x7b\xec\xb2\x7c\xde\xce\xdf\x9a\xaa\x0b\x77\x2b\xcb\xdf\xf3\x3e\x33\x7f\x8e\x99\x9e\x92\xa6\xdd\xb5\xaa\x4e\x26\xd7\xfa\x24\x49\x96\x45\xda\x82\xf5\x87\x6f\x87\x5c\xb4\x4f\x13\x3a\x80\xcc\xf6\xfc\x8a\xcf\xf0\x2b\x34\xbf\x9e\xfd\x15\xbf\xef\x1e\x58\xb2\x1c\x91\x7b\x33\xef\x5d\xd7\xf5\x5d\x8e\x00\x43\x41\xaf\xfe\x8c\x8b\x1e\xc7\x05\x3f\xf1\x55\x7c\x0f\x68\xd8\xef\xd3\x7a\x0d\x3a\xb6\x72\x76\xfe\x83\x0b\x56\xb8\x6a\x72\x70\x35\x34\x18\xe6\x99\x61\x70\x74\x8b\xfc\x8a\xf0\x4a\x04\xb9\x7a\x40\x03\xfe\x9c\x5c\xf5\xa9\x0e\xde\xaf\xa7\x10\x5f\xec\x3b\x50\xa6\xb1\x4c\x73\x79\x8d\xcd\x1f\xac\x0a\x12\xf4\x27\x45\x29\x6a\xa9\x95\xb5\x44\x67\x05\x0a\x58\x46\xcf\xa5\x50\x11\x8b\x19\x89\x2e\xc9\xa3\x92\x7d\x46\x1c\xba\x56\xdd\x24\x86\xf4\x2c\xec\xa7\xbf\x82\x9a\xf5\x6f\x36\x20\x12\x4c\xa9\x9c\x55\x73\x8a\x9f\x77\xc2\x56\x21\x9b\xe9\xfd\xd5\xc8\xef\x8c\xf0\x26\x8c\x20\x18\xf7\xa4\x82\xc1\xb5\x1f\xb6\xcc\xff\xed\xa1\xbd\x9f\xa8\x41\x80\x6b\x32\x51\x26\x3d\xfd\x99\x56\x31\xcd\xf6\xd3\x0d\x88\xb5\x41\xe1\x6a\xf5\x69\x9d\xae\x21\x7a\xa4\x74\xb0\x78\xed\xc8\x99\x51\x57\x84\xde\x15\x7f\xeb\x26\xc1\xa2\x43\xd9\x80\xed\x19\x26\xe0\x4b\x0e\xb1\xbf\x54\x77\x9e\xec\x9a\x46\x5f\x08\xd3\xbe\x13\x4c\x99\xe3\xb2\x09\x79\x41\x20\x5a\x34\xe9\xe5\xc9\x7b\xe8\xe4\x2f\x26\x37\xf5\xa7\xfa\x2f\xa7\xfb\xf6\x11\x33\x73\x37\xb8\x68\x91\xcf\x0a\xd6\x89\x0a\x0d\xdb\x00\x7c\x08\x04\x03\x27\xca\x99\xbb\x60\xe4\xd5\x3a\x60\x01\xb2\xd6\xb5\x78\xe9\xf5\xd3\x07\x2d\xdf\x80\x83\xa3\x21\x73\x57\x93\xfb\xdd\xc7\x33\x9b\xe6\x29\xa3\xe1\xaa\xea\x61\xd0\x27\x0b\x6d\xf4\xb7\x50\x22\x15\xb6\xf4\xb5\xbf\x72\x19\x1e\x6b\x04\x4a\x0e\x5b\x68\x2b\x61\x10\x10\x75\xbe\xa6\x79\x92\x18\x28\x4f\x15\xf2\x77\x07\xb2\x3b\x63\x8f\xbf\xba\x38\x51\x7a\xb7\xd1\x3e\x5f\xcc\x4e\xc0\x22\xeb\x27\x5a\x7e\x68\xe2\x08\x55\x68\x7c\xff\xf8\x0b\x44\x78\x3b\xb8\xa6\xf7\xe1\x5f\x4d\xed\x43\x3b\x25\x18\xe1\x26\x1b\x27\x7b\x1d\xe9\xb3\xda\x05\xb2\x89\x72\x95\x0e\x9a\x9d\x45\xe9\x60\x6f\x55\xff\xba\x54\x72\x0e\x3b\x4d\x0f\x0e\x92\xd0\x6d\x0f\x83\x34\x06\xb5\xd4\x77\xdb\xd0\x73\x7b\xd9\xfb\x7c\xbe\x07\x9f\x03\xe5\x10\xef\x95\x60\xaa\xb9\x1a\x57\x5f\x51\x66\xa2\xc1\xda\x75\x0b\x2b\xf2\xf1\x02\xfb\x3f\x1a\xdf\x67\xd7\x38\x47\xc7\x30\x3d\xb1\x0f\xc2\xf3\xb0\x64\x7d\x88\x94\x57\xce\x26\x82\x01\x6b\x0f\x5b\x46\xf4\xa3\xda\x0b\xa3\xdf\x46\x4f\xcc\x34\xae\x08\x75\x45\x0c\xce\x7a\x11\x48\x78\xe7\xac\xd3\x1a\xd6\x38\x51\xee\x0d\x39\xab\x47\x2e\x12\xdd\xeb\xda\x9f\x95\x8d\x1c\xd7\xff\xa3\xea\xba\x76\xdd\xe6\x99\xed\x03\xe9\x42\xbd\x5d\xaa\xf7\xde\x75\xa7\x2e\x59\xbd\x59\xe5\xe9\x0f\x92\x2f\xd9\xf9\x8f\x01\x23\x31\xe0\x4d\x8a\xe6\x70\xca\x9a\xe1\x9a\xef\x79\x88\xe7\x81\x5a\x84\xb8\xfb\xd5\x37\x02\x69\xea\x18\xa6\x84\x14\x31\xa1\xa8\xae\xec\x8c\xb5\x13\x00\x33\xcf\xa6\x8a\x84\x21\xff\xdd\xbb\x95\xb4\x1b\x61\xc0\xf3\x1b\xd1\x7d\xaa\x79\xd8\x45\x7e\x30\xdb\xad\xcb\x5f\x72\xf0\x4b\x17\x4b\x61\x7f\xc5\x65\x85\xe6\x31\xfd\x42\xd8\xfe\x15\xab\xc5\x9d\xd8\x0a\x99\xb3\x63\x72\xd0\xca\xae\x8a\x33\x7c\xc2\x0d\xfc\xe2\xe5\x39\x26\x57\xb0\xd0\xa7\x7a\x03\x26\x00\x02\x08\xba\x85\x1d\x30\xd9\x06\x22\xd3\xb6\x0f\x41\x14\x40\xd7\xfe\x2d\x3c\x95\x6e\x61\xef\xb9\xad\xb8\x5d\xdb\xf7\xb9\xd2\xb1\xf6\x61\xd8\xf7\xc7\x07\x95\x12\xef\x13\x64\xbf\x2c\x87\x7d\x53\xb9\xd4\x7d\x76\xe3\xa0\x0f\x18\x20\x10\x74\x1b\x16\xd1\x05\x35\x51\x62\xa1\x1c\x00\x27\x7b\x02\xe6\x5a\xe2\xf9\xbd\x53\xd7\x02\x3c\x14\xf3\x0b\xfa\x09\xf6\x64\x07\x62\x66\xfe\x83\x12\x37\xf8\xa2\xa2\x5c\x58\x1a\x5e\xa2\xdf\x2f\x08\x21\x1f\xaa\xe6\xb9\xf4\xd9\x72\x3e\x23\xf3\xfa\x8b\xf8\x1e\x7d\xfa\x6b\xe8\xdd\x2e\xac\xe2\xa4\x3a\x4c\xe0\x2b\xdc\x88\x9b\xa6\x83\xc6\x18\xd4\x0f\x07\xe2\x28\x5c\x84\xfc\x05\x01\xbe\x7a\x8a\x51\xc5\x76\xa0\xdf\xf2\x68\x38\x8e\xf3\x9b\x45\xc8\xb1\xa4\xea\x98\x95\x89\x6e\xe7\x1e\xbe\xd4\x35\xaa\x0b\x9f\xf1\x0d\x88\xcf\xd6\xf5\x40\xe5\x94\x22\x00\x41\x09\x2d\x77\x5a\x1d\x6e\x23\x42\xd8\xea\x16\x75\x1f\xc8\xf7\x0f\xe9\xfc\x9e\xf5\xa6\x69\x0f\x31\x71\x20\x48\x4d\xfe\x9b\x02\xd4\x31\x4d\x2d\x74\xd0\x1d\x44\x77\x54\xec\xa1\x47\x8e\xac\x25\x88\xb3\xb2\x21\x4f\xca\xbf\xb8\xc8\x5e\x45\x87\x50\x71\x92\xbc\xcf\x7a\xe4\x3e\x00\x49\x47\xbf\x1c\xcf\x81\x20\xc8\xba\x50\x51\x9f\x88\xdc\x4a\xef\xb8\xfc\xad\xc8\xe4\xac\xce\xe1\x4d\xcf\x0f\x14\x76\x6e\xda\x6f\xe0\x0c\x9c\xd5\x06\xca\xc6\xb8\xe2\xd0\x7b\xd3\x05\x05\xac\x77\x3e\xc9\x52\x00\xcb\xed\x17\x88\xc6\x11\xce\xf6\xd9\x44\xb5\x13\xef\xb2\x69\x22\xcf\xf3\xb7\x9f\x39\xef\xd7\xc8\xff\x3a\x33\x20\x5d\x0c\xf6\xaa\x6d\xda\x97\xe1\xa7\xad\x21\x7f\xf8\x7b\x8d\x6b\x95\x2f\x10\x7c\x1b\x74\x9f\xd8\xb2\x15\xf3\x4d\x4c\x48\x39\x27\xcd\xb0\x02\x69\x50\x87\x87\x5b\x00\xbf\x29\x72\x12\x50\x65\xc9\xbf\xce\x71\x7f\x88\x28\xa4\xe7\xa1\xff\xa5\xd6\xe2\xa8\x0d\xb8\x86\xd3\xd1\xb6\x36\x04\x20\xcc\x14\x0a\xb7\x4e\x94\x32\xe8\xab\xf3\x7e\xb9\x67\xd2\xb2\xe3\xcc\x0d\x9e\x50\xd3\x53\xe7\xb2\x6d\x24\x80\x27\x50\x41\x4c\xae\xd8\xda\xc6\x4e\x58\x1f\x12\xef\x12\xe0\x2e\xee\x0b\xd3\xff\x71\x09\x2e\x4b\x69\x2f\xf1\x4b\x92\xa0\x8e\xd3\x00\xa0\xde\x41\xba\x68\x27\x8d\x9c\x19\x41\x00\xc0\xa1\xea\xf0\x22\xf2\x53\x2c\x43\x84\x2e\xc4\x26\x42\x55\x52\x3b\x47\x29\xff\xd4\xdf\x5a\x1f\x8e\x73\xbe\x85\x3b\xbe\xf6\x12\xdd\x68\x30\x41\xb9\xf7\xa4\xde\x31\x28\x61\x04\xc0\xb6\x55\x6a\x9b\xd0\xa4\xfd\xee\x8a\x2a\x10\x31\xf5\xf2\x44\x72\x88\x1a\x03\x4c\x31\x9e\xca\xbe\xe3\xa9\x2e\x81\x87\x20\x71\x49\x1d\xd9\xb7\xf9\xfe\xf3\x97\x86\x03\xcd\x89\xcf\x17\xa5\x9a\x9e\x1a\x0b\x5b\xee\x3b\x71\x3e\x55\xe3\xe5\xec\x1b\xb5\x0f\xb3\x02\x68\x80\x47\xbf\x5a\x55\xd1\xb8\xbe\x9e\xf2\x7b\x00\xa0\x1a\xc6\xf1\xe7\x5b\xa2\x0f\x18\x5c\xec\x46\x41\x30\x80\xa5\x8b\xd1\x8f\x9e\x61\x48\x29\x71\x00\x66\xae\x9b\xd8\x0c\xc2\x67\xac\x9f\x04\x40\x03\x1b\xac\x0f\xdd\xb5\xe0\xcf\xe1\x99\xec\x56\x1e\x5f\xd4\xd4\xc3\x13\x55\x5d\x45\x2d\x82\x7c\xa0\xeb\x35\x1b\xf1\x7d\xf0\xf2\x85\x02\xb3\xd0\xfc\x04\x47\x6a\x29\x1c\xfa\x53\xab\xa4\x7e\xec\xa7\x24\x80\x29\xff\x22\xaf\x0d\xe1\x23\x85\x22\xf4\x37\x95\x94\x51\x6a\xdd\xb3\x85\xac\x8e\xa0\x71\x55\xd7\x61\x18\x1c\xcb\xed\xab\x67\xe3\xe6\x11\xb5\x9b\x03\x60\xfa\x45\xf2\x05\xce\xa5\xbb\x78\x59\xb9\x3a\x23\x92\x44\xd6\x68\xf2\x45\xd9\xa8\xc8\xb2\xa8\x10\xbd\x30\x05\x1a\xcc\x23\xfc\xac\x4e\x20\x0c\xd1\x14\x2e\x83\xd5\x0b\xc5\x7c\x02\x2d\xbf\xc7\xd5\xec\x40\xc0\x7c\x47\xd3\x43\x5b\x92\x20\x8b\x84\x50\x9c\x6d\x39\xe6\x63\x36\x08\x73\x74\x69\x1b\xe8\x14\x31\x5a\x65\x0c\xfc\x27\x4f\x63\xa8\xc3\x65\xd9\x2f\xb5\xec\xe8\x42\x4b\x40\xa7\x89\x68\xec\xe3\xe8\xca\x5d\x19\x3f\x37\x70\x38\x9c\x11\x9c\xc1\xd9\x37\x46\xe9\xd4\x41\x61\xfa\x29\x68\x5d\x63\xfd\xec\x88\xbf\x36\xfd\x29\xd1\xd6\x30\xdb\xbe\xa8\x97\x12\xf2\x41\x5a\x49\x27\x51\x3a\x24\x4a\x9e\x2b\x39\x43\x41\x28\xcf\x36\x3f\x2e\xb2\x50\x0c\xc3\x78\x92\x71\x3c\xfa\xc6\x9b\x9e\xa7\xb9\x16\xd2\xd7\x79\x12\xf5\xa6\xa1\x25\x7d\x22\x64\x52\xd9\x32\x1b\x3e\xca\xba\xd9\x44\x7c\xf8\x61\x38\xe0\x68\x1c\xc7\x83\x59\xd1\x1c\xc2\x54\xff\xf4\x5a\xd6\x11\xe0\xaa\x8f\x30\x90\x8e\xcb\x02\x00\x24\x65\xf3\xb6\x6b\xfb\x10\xa0\x5b\xd5\x4b\x00\xdb\xa2\xc3\x2b\xb4\x3d\x25\x73\x8d\x14\x54\xd9\x28\xde\xc1\x00\x59\xb6\x18\x55\xbc\x51\xf6\x2e\xed\xe7\x7d\xbd\x2f\x1a\x97\xf0\x1d\x59\xdd\x4a\x1c\x2a\x98\x93\xf8\xa2\x5b\xce\x4b\x84\x63\xbb\x9e\xdb\x1a\x7a\xdf\x78\xcb\x4f\x4c\x65\xc1\x46\x72\x56\xb1\x3c\xc1\xf4\x44\xbf\xe8\xd4\x0d\xae\xfe\xb6\x70\x19\x07\xb0\x59\xd5\x38\x6e\x48\xeb\x50\x1c\xb1\x6e\xd1\xa3\xec\xc8\xd6\x4f\x7f\x21\x9e\xf3\x99\x17\x91\xf9\x16\x27\x6e\xc4\x7d\x2b\xb9\xc5\x6a\xf1\x2d\x96\x07\x58\xd7\x6d\x79\xf0\x64\x86\x57\x38\x83\x8f\x3c\xd6\xf6\xf1\x45\x4e\xb7\xa9\x24\x7f\xb8\x66\xa9\xfe\xe5\x73\x09\xa8\x3e\x80\x49\x9c\xc0\x74\x54\xa0\xa0\xa1\x2d\x6a\x12\x94\x58\x86\xfb\xb9\x0f\x96\x15\xd4\xab\x5f\x49\xdc\xb2\x75\xfe\x46\xdb\x81\xc0\xc5\x1c\x8a\x6e\x10\xa6\x5f\x3a\xed\xf7\xa9\xef\x3d\x53\xa6\x6f\x0a\x2b\x2c\x7f\x36\x22\xf1\xcb\x06\xa3\x77\x48\xbe\xda\xf7\x5c\x43\x6d\x2f\xb8\x95\xe1\x8a\xc6\x7c\x69\x3a\xf2\xfb\x5e\xa1\xf3\xc8\x85\xf9\xc3\x1d\xc4\x5d\xe3\x42\x24\x48\x8e\x62\x70\x45\xc9\x75\xca\x15\xa3\x3a\x67\x72\x7b\xf9\x60\x5e\xd6\xed\xae\xd1\xc9\x77\x7a\xc3\x67\x89\x8e\xcd\x43\x46\x8e\x5a\x64\x17\x2a\x6c\x9a\xbd\x28\xc8\x34\x5e\xc3\x17\x17\x74\xb2\x97\x6e\x4b\x3f\x07\x01\x56\x0a\x90\x27\x7d\x3b\x0d\x04\x7e\x9c\x1c\x15\x1f\x4b\xed\x8f\x71\xae\xf5\x49\x19\x6b\x43\x76\x44\xdb\x97\x27\xc1\x2a\xc9\x2a\x6f\x0d\xad\x69\x83\x10\x1b\xe3\x59\x0c\xab\xac\x27\xcd\x5a\x50\x7c\x23\x0d\x8d\xf0\x33\x1d\x3f\x54\x49\x36\x19\x78\x9f\x26\x84\xa2\x79\xd7\xb2\x16\x69\x33\x49\xf8\x53\xdf\x62\x28\xe5\x6e\x7e\xbf\x14\xf7\x50\xa2\x43\x88\x28\x58\x6c\x29\x26\xbd\x20\x51\x5a\x23\x61\x87\xed\x41\x7f\x33\xe4\x37\x0b\xcb\x4c\x0c\x68\x88\x7d\x43\xbc\xbd\xf1\xc1\x50\x7b\xa0\x22\x79\x98\x20\xcd\xee\xc6\xa8\x5f\xfe\x4c\xaa\x63\xb2\xe7\x6d\x65\x0f\x22\x35\xbb\x5f\x5c\xd8\xad\xa0\x6f\xba\x70\x06\x54\x72\x3b\xac\x39\xe1\x66\xc8\xba\x0e\x68\x08\x95\x1c\x9e\xc3\xc7\x5b\xa8\xb2\xaa\x59\x2f\x76\x17\xd5\x9b\x50\x95\x2d\x7f\xc0\x1a\x99\xfc\x8d\xcc\x9c\x9a\x0b\x5a\x6f\x38\xf2\xd8\xc4\x62\x8e\x22\xe0\x12\xd1\xcf\x13\xcb\x2c\x78\x85\x5b\xb7\xf9\xa9\xfb\x34\x98\x02\x3d\x16\x10\x33\x3a\x37\x01\x6d\x0a\x1b\x1b\x08\x39\xea\x38\xc3\x96\x80\xc0\xde\x6c\x5c\xb6\x08\x5e\xf2\xff\xda\x4c\xf6\x89\xbb\x7f\x55\x41\x39\xe4\xda\x46\x39\xe2\x0b\x82\x01\x51\x5a\x93\xbf\xa0\x56\xca\x2b\x43\xd9\x67\x47\xd6\x7e\x30\x44\x0b\x73\x97\x3d\x42\x4b\x92\x41\xa4\x39\x51\xd5\x37\xb5\x27\x07\x3e\x66\x80\xe4\x16\x20\x6b\x79\xcd\xa2\xbf\x4b\xcd\x84\x41\x70\x42\x2f\x1f\xf1\x3d\x23\xce\x3d\x5c\x8a\x06\xdc\x57\x72\xeb\x61\xf3\x77\x1f\x5d\xf2\x04\xbf\x36\x2a\x3f\x8b\x3e\x9d\x0c\x3d\x1d\xf4\x92\x45\x61\x8f\xfa\xf8\xd7\x16\xfb\xce\x2d\x4b\x00\x0d\xc3\x30\x0a\x75\xee\x64\x7e\x38\x6f\x24\x46\xa3\x80\x71\x2f\x66\x3c\xd0\x8e\x38\x87\xef\xd3\xbe\x8b\x17\xa3\xc0\x85\x42\x7f\xad\xa1\x0b\x4c\x3e\x38\x23\xd3\xf4\x43\xf8\xd8\x0e\x77\xf3\x33\x4f\xab\x7d\xe1\x36\xfc\x06\xb2\x79\x07\x32\x79\xd0\xf9\x15\x59\x5b\x1f\xd5\xa5\xb2\xda\x22\x32\xf1\xde\xb7\xdb\x9a\x3d\x0a\xb4\x50\xf8\x44\xe7\xec\x01\x50\x93\x6c\xf6\xe7\x82\x4c\x3a\x40\xcc\xcf\x2f\xa5\xe4\x40\x26\x9d\x88\xcc\x25\xad\xb0\x34\xf1\x45\xc1\x37\x94\xcd\x5f\x8f\xc9\x5f\x94\xc5\xb7\xd8\xb9\x51\xa0\x30\x8f\xd9\x1e\xcf\xd5\x87\xac\xf0\xd3\x1f\xa7\x6e\x9a\x0a\x72\x39\xce\x73\xc0\x90\xc5\xe8\x18\xec\x87\xaf\x99\xeb\x46\x94\x9e\x86\xbc\x04\x31\x60\xf2\x17\xcc\x64\x21\xb0\xe0\xa9\x78\xa6\xe1\x30\xfc\xed\xab\x36\x01\xd7\x18\x2d\x7f\x01\xdb\x05\x6c\x74\xbd\x94\xc2\xea\x1d\x3a\x13\xfb\x9c\xe3\xed\x94\xd8\x14\x7c\x82\x19\xef\xfe\x5a\xbf\x8b\x54\x7a\xdc\xfe\x08\xb7\xe9\x47\xe1\x9b\xa6\xb1\x77\x30\xc5\x68\x77\xf4\x0a\x53\x5e\xfa\xbe\x1f\xa5\xa2\x50\xf3\x00\x0a\x38\x0b\x9e\x9a\xfa\xea\xfb\x70\xff\x9a\xa5\x0c\xdd\x40\x61\xb9\x79\xd3\x40\x08\x40\xe9\x0b\xdf\x88\x6d\x6d\x56\xaa\xed\x83\xb6\x37\xdb\xae\x98\x52\xa4\xfc\xcd\xc6\xa6\xfe\x72\xa8\x9a\x42\xba\x01\x7b\xac\x6d\x00\x29\xc7\x75\x5d\xe7\xfc\x97\x1d\xa6\x14\x18\x8a\x1c\x79\xfc\xd7\x67\xc9\x45\x31\x8b\x6b\x9b\xab\xb0\x75\xf0\x93\xbb\x50\x26\xfd\xf2\x0f\xbd\x95\xda\xc3\xf5\x1b\x92\x71\x86\x4f\x1c\x91\xa3\x55\x76\x21\x08\x84\x8c\x44\xba\x74\xab\x9a\x6c\x65\x86\x4f\x99\x47\x6c\xe7\x49\x4c\xfd\x3a\x04\xeb\x10\x28\x8b\xa8\xa8\xac\x7e\x57\x9c\x92\x75\x58\xca\x61\xa1\xb3\xde\x71\x0f\xe3\xb7\x15\x7f\x73\xa9\xab\x07\xce\xb9\xca\x07\x04\x73\x58\x76\xdb\x35\x19\xe4\xb2\x3b\xe8\x6f\xa1\x6f\x75\x99\xc4\x75\x42\xfa\x19\x19\x87\x76\x78\xc6\x66\xd5\xaf\x1e\x5e\x41\x71\x9a\xf3\x59\xfe\x7a\x99\xff\x44\xce\x3a\x04\xf3\x98\x80\x22\xa6\xb3\x99\xee\x72\x9a\xeb\xe9\x3e\x24\x7c\x58\xb5\x5f\x92\x3d\x72\x67\x85\x65\x73\x8a\xf4\xcb\xbd\x12\x69\xb1\x4d\xc1\x97\x1b\x23\xeb\x87\x88\x5d\x77\x1d\xcd\xf6\x29\xee\xa1\x07\x6a\xfa\x26\xf8\xf9\xee\xbe\x4c\x83\xdf\x67\xac\x10\x66\xe4\xc3\x7c\xe1\x6a\xf2\x6d\xad\x72\xc8\x40\xd9\xfa\x94\x84\x3e\xb2\x08\x40\x7d\xee\x89\xad\xb5\x6e\x45\x8e\xb7\xc0\x26\x87\xa0\xd0\xd1\xe5\x36\x10\x6c\xdb\xf3\xec\x89\x66\x7c\xda\xe3\x68\xff\xf0\x04\x3b\xc7\x89\x57\x08\x35\x92\xf0\x9b\xe3\xa0\x89\x96\xdc\xf3\x22\xd1\x1b\x08\x40\x95\x7c\xe4\x56\x20\xec\xea\x88\x9e\xd7\xa6\xb5\x7b\xb0\x3e\x4c\xed\xaf\xe5\x86\xe4\xba\x65\x1b\xe6\xdd\x51\xc1\x63\xfb\xe6\x4b\x9a\xed\x4d\xcc\xfd\xf3\x93\xbb\x60\xd9\x38\xa7\x81\x85\xaa\x25\xb5\xd9\x9e\x00\x8d\xc8\x2f\x21\x7e\x46\x2a\xee\x16\x6d\x27\x6f\x68\x11\xc2\x2e\x77\x33\x94\x97\x77\x09\x69\xb2\x71\x1d\x1a\xfd\xcb\x9d\x5a\xb7\x6f\x08\xfd\xcd\xc5\x20\x58\x1e\x6d\x2f\x09\xbe\x0f\xcc\x98\xf2\xcb\x8e\xa9\xff\xe1\xe8\xc2\x10\x10\x03\x0d\xa0\xbb\x06\x28\xda\xa3\xeb\x15\x72\x1c\x79\x08\x7b\x28\xb6\xa7\xc9\xec\x95\x52\x4f\xa6\xd1\x07\x0d\x82\xc2\xe1\x97\xad\xae\x64\x47\xea\x12\x4e\x44\x32\x38\x5a\xce\x6c\x5c\x8a\x3d\x0a\x37\x46\x83\x1b\x62\x2a\x89\xb7\xbc\x01\xd8\x0d\x47\x70\x7f\x9a\x3f\xb8\x37\x6b\x00\x17\x08\xa9\xac\xa6\x36\x1b\xbd\xfb\x01\x7c\x64\xc8\x91\xcf\x71\x5a\xcf\x1f\x77\xb7\x4a\x01\x97\x50\x23\x22\x80\x4f\xee\x77\x44\xde\xf9\x6b\xca\x86\x0f\x83\x46\x78\x7d\xac\xaf\x4f\x3e\x20\x85\xbd\x8e\xcc\x62\xa5\xe4\x52\xd5\x6c\xfc\x2f\x46\x20\x38\xaf\x41\x5a\xb4\x0a\xee\x11\x51\xc4\x65\x3e\x95\x53\x8a\xd7\x39\x99\xe5\xd6\xa8\xda\xd6\xb3\xec\xd6\xe6\x6d\xda\x1c\x99\x2a\x59\x45\x1f\x0d\x6f\xb8\x58\x60\x45\x37\x62\xdd\x89\xe0\xae\x14\xa0\x80\xb8\xac\x16\x83\x9a\xfd\x7f\x63\x7a\x24\x4d\x12\x61\x5c\x3c\x94\x3b\x48\xc1\xb1\xa5\x48\xb5\xa2\xcd\x47\x47\x69\xbd\xb0\xde\xfa\xb4\xec\x13\x9c\xe6\x6e\x6a\xb5\xa5\xc6\x30\x1d\x1e\x23\xe9\x3e\x73\xa9\xdd\xf3\xad\x4c\x45\xde\x96\xb8\xb9\x64\x5d\xf9\xf0\xd4\xa2\xff\xe9\x57\xe5\xbc\xeb\xe4\x83\xae\xe1\xf7\x57\x52\xac\x5a\x36\x1e\x1b\x42\xc7\xa5\x01\x65\x0d\x59\x26\xd3\x88\xa4\x04\xca\xb2\x38\xa2\x9d\x7a\x8d\x96\x03\x4b\x4d\x6a\xed\x13\xe1\x83\x6c\xba\xd5\x5d\x73\x23\x1f\xbf\xac\x11\xe7\x54\x3e\xcc\xbe\x03\x27\xff\x60\x91\x11\xaf\xa7\xa4\x8d\xf1\x76\x92\x94\xef\x39\x40\x7a\xa8\xc6\x31\xfe\xb1\xba\x5a\xce\x12\xc4\x84\xdd\x96\xbc\xdb\xc0\xda\x0c\x78\xe2\xa4\xf4\x77\x7d\xc9\x2f\xfb\x81\xd0\x0d\xc9\x93\x07\x31\x04\x6b\xcf\xdb\x4e\xb5\xd8\xc6\xec\x0c\xc8\x7f\x22\xd1\x88\x9d\x25\x7f\xa0\xe8\x53\x64\x86\xad\x29\xfb\x03\xc1\xe6\x1b\xc0\xa6\x9f\x2b\x7b\x00\x52\x0f\x8d\xbc\x36\xb2\xde\x67\x60\x9c\x65\x53\x4d\x0c\xb8\x8b\x52\x36\xe3\x6f\xa6\x6e\x11\x7c\xa4\x55\x08\x97\xdf\xc2\xae\xa6\xef\x86\xfb\x3b\x69\xb2\xc4\x4c\x3f\xce\x3f\x59\x56\x94\x45\xc0\x6a\xcb\x4d\x02\x87\x3c\x68\xb8\x84\xca\x29\xc3\x51\x17\x1f\xe7\xf4\x31\xd9\x09\x26\x81\xe1\x34\xac\x32\x79\x6d\xb7\x74\x0b\xf5\xfa\x08\x4c\xfb\xfb\x3b\x31\x47\x7e\x78\x1c\x0d\xe9\xbc\x46\xe4\x88\xd1\x02\x89\xfc\xa9\xc1\x62\x3e\x93\x53\x3c\x5d\xe8\xb5\xf1\x46\x68\xeb\x7a\x6c\x11\x6c\xfa\xce\x1e\x95\xae\x8c\x05\xe2\x35\x5e\xc4\xe1\x8d\x41\x04\xa6\x86\xc0\x62\x55\x3c\xa9\xeb\x3e\x1f\x33\xe6\xc0\x52\x30\x2c\x79\xb4\x04\x7b\xde\xa1\x1f\xfa\xbf\xce\xbc\x7d\x99\x3c\xb8\x13\x0e\x9f\xef\x5f\xdd\xcf\x29\x31\xf7\xcd\x61\xda\x75\x69\x29\x0c\xc3\x70\xaf\xd3\xaf\x33\x7f\x5e\xc3\xc2\x31\x0c\xfd\xc4\x73\x8b\x75\x2b\xf4\xb5\x65\xf8\xe6\xd7\x58\x92\x50\x00\xfc\x12\xe7\xf6\x54\x1b\x2c\xca\xd7\x90\x3f\xa2\x78\xfe\xeb\x8f\xa7\x60\x90\x6c\x5c\x2b\xb0\x77\x1f\xc1\xf7\x0f\x3b\x47\xf8\x4f\xe6\x0d\x04\x1c\x7f\xd0\x52\x16\xb6\x5c\xac\x40\xa8\xac\x2b\xc8\x4f\xfc\x0d\xbf\x24\xed\x8e\x58\x57\xcc\x22\x7c\xc9\xa2\x65\x1d\xc6\x50\x6c\x6d\xd9\x78\x77\xa2\xb2\x0f\xd4\xfe\x6a\x2c\xb5\x1b\xd7\x1f\x8c\xdd\xb9\x8c\xd7\x20\x0d\xbe\xe9\x61\x95\x1f\xcd\x45\x23\xd1\x08\x1f\x17\xfa\xea\x21\x6a\xd5\x5b\xb8\x38\xa0\x79\x9f\xa0\x73\xd1\x5d\x38\xf5\x52\xb1\xd9\x87\x79\xd5\xba\x95\x38\xf3\x05\x8c\x55\xda\x9b\xf9\xf6\xa2\x36\xe5\xb8\xd7\x5b\xb9\x98\x7f\x1c\xe2\xca\xaf\x73\xcc\xa9\x1f\xe5\xbf\x7d\xce\x2b\xc4\xec\x7a\x8d\x59\xde\x50\x4c\x91\x69\x9c\x73\xfe\xa1\xb5\x1d\x3b\xe2\xcf\x83\x9e\xf8\xe4\x25\xcd\x0e\x8f\x23\x79\x22\x8f\xae\xec\xc8\xf1\xe1\xb0\x98\xfd\x92\xcf\x34\x72\x52\xc4\xfd\xe4\x1e\xe4\xcb\x17\x70\x9b\x57\x08\x9b\xe3\x47\xfa\xfc\x20\x45\x23\x48\xdc\xf8\xf4\x65\x34\xe0\xe4\x57\x8b\x1f\x9d\x32\xc7\x24\xa1\x4e\xd5\xdf\x97\xfc\xed\x5c\x75\x5d\xc7\x45\xac\x9f\x57\xf3\x11\x99\x1f\xab\x37\xf2\x12\x1d\x4f\xfe\x16\xe6\xb3\x4e\xcd\x94\x04\xdf\xf4\x80\x33\x8c\xd1\xf0\xe0\x47\x2e\x1d\xdb\x41\x4f\xfb\x2b\x56\xa9\xc5\xfb\x1e\xc4\x97\x69\x5c\x7e\xe2\xda\x96\xaf\x75\x70\xa5\x65\x4b\x87\x07\x08\x1f\x3d\xfc\x46\x51\x58\xc6\x2a\x34\x7a\x8f\x65\x19\x77\xa4\x4c\xfe\x37\x79\xe2\xa7\x91\x7f\xee\x32\x71\x5a\xfe\x9f\x5d\xa5\xd0\x3b\xe4\xff\xd3\x39\x48\x49\xd7\x3e\x6a\x93\xde\xe5\xbf\x37\x9e\x44\x14\x37\xda\x8f\xc9\x82\x38\xe9\x6f\xa1\x07\xdb\xda\xb8\x22\x87\x1f\xc0\x26\x59\x25\x79\x95\x63\x37\x99\x63\x9e\x2d\x23\x82\x66\x15\x3b\xfb\xfc\xd1\x11\xf3\xbe\xe0\x7c\x0b\x41\x50\xd4\x8f\xde\x2f\x09\x3e\xb7\x95\x00\x63\x0c\x2c\xe0\xfa\x61\xc7\x84\x03\xae\x2a\xe7\xbe\xe1\xda\x06\x68\x9e\x64\x9a\xee\x0e\x61\x58\x86\x65\x7c\xd0\x74\x9d\x64\x6a\x7b\x23\xda\xdd\x93\x30\xed\xb3\xb4\x26\xff\xf5\x25\x35\x2e\x51\xbb\x6a\x72\xfb\x5a\xf6\xf9\x72\x0f\xc3\x28\x1f\x97\x2d\x47\xe8\xef\xc1\x37\x95\x1f\x99\x4b\x65\xe9\x0d\x31\x79\x30\x53\x4f\x2a\xb5\x59\x24\x56\x71\x28\xac\xf3\x45\xf5\x21\xaa\x77\x27\xad\x76\x2e\x24\x43\x7e\x67\xbc\xb6\xdc\x39\x3c\xab\x8a\xef\xe7\x9f\xfa\xaf\x59\xfd\x18\x47\x3c\x51\x32\x47\xc4\x27\x6a\xa6\x38\xad\x0d\xde\x1d\x8a\x89\xb7\xe8\x70\xec\x07\x47\x0e\xa3\x51\x8a\x7d\xe7\xf3\xeb\xed\xd8\xf7\x3a\x04\x40\x79\xa5\xec\x3d\xf2\x0c\x39\xb6\x0c\x19\xeb\xaa\x65\x4b\xf1\x97\x43\x83\x8a\xa2\xa5\x42\x7d\xf2\x57\x67\xce\xe3\x32\xa6\x48\x2a\xb9\x41\x6e\x83\xa2\x22\x32\x69\x5c\xa3\xd4\xb2\x66\xd2\x2e\xd4\xa7\x52\x88\x15\x38\x29\xd4\xd0\x7a\x0f\x50\x84\xf4\xd7\x43\x3f\x8c\xbb\x3c\xa2\x71\xa6\xe2\x70\x66\xd2\x67\x26\xad\xf7\xa9\xf4\x7b\x04\xe1\xde\x92\xdf\x49\x63\x27\x2d\x30\xbf\x3f\x7d\x71\x5d\x99\xc7\x9f\x43\x70\x81\x93\x4c\x33\x02\xd8\x56\xbf\x2c\x6b\xc9\x36\x02\x0f\xe9\xbf\x32\x8c\xdc\x98\x44\xdb\x69\xe5\x9a\x2d\x9c\xba\xf7\xa4\x34\x5e\xa8\xc2\x65\x1c\xa2\x34\xa8\xad\xeb\xb9\x79\xa7\x24\x44\x9f\xde\x91\x80\xa6\x4a\xa2\xd4\xb9\xfe\xe5\x33\x45\x41\x59\x24\xb6\x29\x44\x0f\x98\x7b\xc8\x8f\x8e\x35\x1b\x56\x64\x33\xed\xa3\xfc\x58\xa0\x1a\xa5\x79\x4e\x95\x10\xac\x47\x17\x89\xa2\x1f\x57\x2c\x2e\x7f\x01\x09\xe8\xac\xd1\x10\x75\xe1\xb2\xac\x63\x93\xea\x9e\x58\x98\x41\x18\x10\x3e\x37\xde\x16\x03\xcf\xff\xd4\x69\x17\xee\x85\x57\xdb\xd5\x4f\xe0\x3b\x16\xfc\x27\x43\x8e\x25\x8f\xe8\xbd\xb0\xf5\xf5\x6d\x25\xef\x81\xcf\x5f\xff\xf5\xd8\x8a\x73\xdb\x0a\x80\x13\xf3\x0a\xf6\x3c\x22\xd0\x94\x1e\x9f\x77\xcd\x46\xb5\x47\x7d\xef\x04\xa6\x11\x27\x52\xa3\x32\xfd\x41\x11\x71\xa5\xfd\x7b\x7c\x5c\x56\x59\xe4\x99\xf4\xbe\xc3\x4d\xe2\xb8\xad\xe2\xc3\xf3\xae\xf9\x88\x7f\x4d\x00\x69\x80\x49\xb2\xc1\xc4\xb2\x99\x92\xe3\x63\x12\xdd\x96\xc7\x58\x84\x71\xaf\xd0\xa1\x7b\xe2\x87\x8e\x2b\xf4\x20\xa3\xf0\xd4\xd1\x8b\x6e\xb9\x4f\xab\xfe\xab\x6d\x57\x14\x5f\x45\xf7\x77\x0c\x5e\x15\xc4\x1b\x60\x22\x81\x6d\x25\xce\x7b\xcf\x85\xbe\xc4\xa3\x68\x8e\x4a\x12\x3e\x73\x88\x76\xcd\xf6\xc5\x08\xa0\x3c\x97\xa8\x6f\x2f\xcb\x45\x8e\x2d\x42\x0f\xb2\xa5\x8e\x10\xf8\x22\x81\xbb\xd7\x52\x3a\x56\xbc\xcf\x2f\xda\x4f\x6f\x38\x83\x9d\xa3\x10\x02\x8b\x4c\x43\x6b\x99\xac\xba\x79\x61\x42\xb8\x46\xa1\x35\xd4\xbd\x62\x32\xb7\x11\x78\x80\x83\x55\x2e\xf0\x01\xc1\x6d\xe4\x33\x52\x23\x5c\x13\xd6\x3e\x86\xdd\x66\xd2\xb0\x44\x79\xb6\x43\x80\x7d\x0f\x06\x6d\xd7\xb5\x8f\x15\x59\x52\xa9\x3f\x3d\x90\xd8\xe6\xb0\x49\x9f\x21\x45\xec\xab\xdd\x40\x2a\x8c\x1e\x33\xcb\xda\xb6\x92\xe7\xbd\xa7\xd2\x48\xa1\x92\x15\xb1\xd5\x0b\x46\xfb\x14\xd5\x3d\xea\x97\x69\x1d\xb5\x18\xe7\x06\x9b\x1a\x10\xd3\x4e\x44\x43\x59\x8e\x8f\xbf\x82\x71\x88\x60\x20\x00\x4c\x3e\x83\x0d\x7d\x3f\x19\xcc\x92\x94\xff\xe6\xd0\xf5\xb2\x7d\x5a\x15\x3a\xee\x8a\xda\x73\x49\xdd\xce\xf2\x7b\x7a\xa3\x69\x00\x91\x16\x6f\xe7\x1b\x36\x8d\xb1\xd4\x3a\x5c\x6e\x19\x7c\x48\xf7\x6b\x7d\xe1\x61\x2c\x44\x63\x19\x8c\x28\x46\x4f\x16\x88\xf8\xbf\x3a\x35\xd1\x3a\xb5\x2b\xa6\x85\x48\xfb\x47\x87\x54\xd1\x0d\xc2\x29\x85\x4b\xdd\x23\xbe\x3e\x51\x79\x81\xa1\xa2\xb8\x2d\xeb\xef\xa5\x28\x15\xde\xf4\x6c\x95\xa3\x15\xfd\xcd\xac\x5f\xef\xfd\x5c\xc7\x62\xc0\x26\x7f\x79\x83\x32\x85\x7d\xa6\x8b\xa4\x7f\xe3\x7e\x3e\x2a\x84\x7b\x2d\x3f\x54\x1b\x59\x7d\x12\x78\x20\x2b\xac\x96\x31\x22\xc8\xd4\x56\x55\x11\x11\x23\xe1\x09\x61\x75\xaa\xed\xb7\x82\xaa\x63\xc1\x6a\x7d\x01\xf1\x16\xde\x46\xf7\xf0\x3a\xc5\x2b\xba\x23\xee\xb9\x2b\xf9\x6e\x0a\xa5\x21\x66\xc3\xfb\xb9\x87\xf3\x51\x4d\x45\x65\x32\x35\x44\x89\xfc\x01\xc2\x35\xff\xb5\xe9\xd6\xb3\xaf\x4c\xab\x08\x3b\xfd\x98\x4a\x81\xfa\x93\x23\x62\x18\x8e\x02\x23\x80\xd2\x71\x6a\xb8\xd0\x10\xbc\xc1\x1a\xe1\xd5\x2f\x51\x22\x4f\xbc\x76\xd9\xea\x73\x64\x9b\xc6\x43\x3f\xb1\x8d\xf2\xfa\x08\xba\xaf\x3d\x05\x7b\x2d\x59\xbd\xc8\x8d\x98\x9f\x04\xd5\x07\x02\x98\xd7\x6c\x0c\xd3\x24\xe2\x38\x8e\x08\x7b\xbf\x28\xa3\x29\xae\xc0\x67\x8d\xa0\x01\x03\xce\x59\xf1\xc6\x54\x1a\xb3\x3a\x86\xf9\xe2\x8c\x37\xa2\xfb\xe6\x30\x1b\x0e\x89\x46\xa1\xe5\x07\xab\x78\x26\x98\x1b\x6c\x56\x7f\xf2\x71\xfc\x67\xb2\xda\x81\x04\x24\x51\x53\x16\x2f\x84\x2b\xb4\xb6\xa7\x47\x0d\xce\x68\x9f\xc4\xb0\x90\xbf\x44\x04\x65\xfc\x77\xab\x41\xe0\x39\xe4\x81\xaa\x3c\xe9\x1b\xdc\x22\xfe\x6b\x4f\xfd\x00\x35\x11\xfa\xab\xaf\x04\x32\xce\x83\xbe\x7d\x9b\xb4\xbe\xfa\x01\x95\x02\xd1\x24\xff\xa0\xc0\x1c\xcf\x2b\x80\xe1\x76\xaa\x4b\x7c\xf9\xf3\x4b\x1c\xf9\x96\x46\xe1\x90\x22\x65\x1c\xc1\x07\xe9\x13\xf5\x87\x48\xb6\xe4\x50\x61\xa2\x1c\xab\xa3\xaa\x29\x0c\xf5\x83\xa3\x8e\x7b\x63\x5e\x3e\xf3\xb7\xcc\x14\x96\x4d\x8e\xf5\x79\xbf\x39\xca\x93\x60\xe9\xf7\x76\x8f\xc1\x71\x41\xf4\xd4\xe0\xb0\xb8\x63\xd8\xdb\x1f\xee\x03\x9e\x55\x72\x84\xaa\xdd\xa2\x53\x11\x00\x46\x4e\x1a\x59\x42\x59\x7d\x8a\x49\x5d\xb3\x6e\x2d\xfd\xc1\xf0\x67\xf7\xca\xd7\x77\xbf\xe3\xe3\xa8\xec\x78\x1b\x63\x18\xc3\x0e\x7e\xf5\x53\xdf\xea\xb8\xa8\xcb\xc2\x61\x48\x45\xa7\x11\x52\x71\x1c\xa5\xcf\xa0\x2e\x83\xc2\x33\x90\x6d\xbe\x09\x12\x30\x6b\xc4\x7a\x6f\xf2\x1f\xbe\xc4\x74\xaa\x2b\xa9\x73\xa5\x38\x84\xae\x70\x6b\x36\x85\x30\xfd\xeb\xf7\x46\xda\x35\x9b\x32\x12\x75\x5d\x41\x33\x40\x68\x33\x63\x38\x46\xd0\x4b\xc6\x2f\x95\x64\x8f\x79\xee\x92\xae\x7f\x7c\x15\x07\x2d\xf8\xd8\x72\xf3\x08\x95\x56\x16\x81\xa4\x47\x61\x5a\x64\x84\xa1\x01\xd1\xbf\x79\xd2\x0f\xad\xa2\xeb\x0b\xaa\xfd\xfb\xb9\x95\xfe\xf4\x51\x00\x84\x81\xfa\xd1\xdc\x51\x5d\xb3\x49\x25\xaa\xf4\x73\xe2\x9c\x90\x8e\x60\xfc\x25\x47\x1a\xf4\x61\xa9\xba\x23\x93\xac\xf2\x26\xee\x20\xde\x39\x04\xa6\x11\x98\x25\xd2\x9c\x76\x8d\x36\x6c\x54\x9f\x98\xc1\xb0\x29\x23\x35\x26\xd4\x18\xb1\xf8\xd3\xb0\x97\x71\xab\x63\xf8\x46\x1c\x83\x8c\x04\x02\x7c\x57\xe9\xdc\x3e\x58\xc2\x0b\xb8\xed\x63\x21\xa7\x84\x68\xac\x05\xbb\x9b\xfb\x2b\x55\x1d\x91\x07\xb6\xf6\xe7\xc8\x21\x1f\x0e\x5d\xde\x14\xb3\x0d\xae\xea\x37\x0c\x1d\x01\xb0\x6e\x91\xa9\x46\x02\x3d\xbe\xf1\x81\x6e\xa1\xd7\xaf\xac\xd0\x33\x7f\x6c\x22\x9b\x94\xaa\xe5\x07\x94\xd8\x74\xfc\x1c\x40\xe2\x93\x73\x2a\x68\x0f\x10\x31\x2d\x44\xf5\xfb\x8d\x7d\x05\x2c\xf5\x46\x0d\x49\x3f\x1f\xba\x32\xcb\x52\x4c\xdc\x4f\x69\x2f\x5c\xe3\xac\xa0\x8d\x69\x2b\x1e\x23\xd7\x1c\xc7\x25\xb0\x41\xeb\x10\x6c\x55\x9c\x5c\xde\x28\xd0\xb8\x97\xbc\xff\x61\x35\xdc\x4d\x96\x2b\x4d\x53\xbe\x1a\x9f\xeb\xb5\x4a\xda\x8d\x18\xaf\x41\x1b\xaf\xe1\x73\x6b\x38\xb7\xb3\xd4\x3f\x57\x84\xb5\x21\x8b\x48\x17\xf2\xa5\xe9\x3a\x70\x65\xc7\x54\xe0\x55\xd7\x96\x6d\xdb\x88\x75\xdb\x32\xc9\xda\xf9\x1d\xe1\xa9\xff\x7c\x7e\xb1\x2d\xa2\x10\xfd\xca\x77\xd7\xf3\xf3\xd7\xc4\x62\x06\x93\x15\x92\x00\xe6\xf4\xb2\x78\x87\xb6\x7d\x83\xb4\x20\x9b\x2f\x29\xc3\xf9\xb4\x55\x39\x77\xbf\xed\x43\x37\xef\xfa\x52\x8a\x8a\x99\xe0\x17\x81\x06\x14\xf0\x19\x34\xac\x1a\x98\xff\xb8\x35\x0c\xae\x93\x5a\xac\xf2\xbc\xcc\x87\x0d\xe1\xca\xb7\x5a\x26\xeb\x64\x8f\xf3\x19\x92\x98\xd7\x7a\x8d\x47\x70\x7a\x89\x2b\x16\x67\x8d\xc2\x94\xb2\x17\xb0\x26\x51\x8b\xb4\x43\x9f\x4f\x14\x8b\x77\xf0\x51\xd7\x71\x75\x18\x43\x9d\x81\xff\x61\x3c\x3a\x41\xfb\x4b\x3d\x2f\xcd\x97\x37\xcc\x67\xb3\xd3\x9c\x67\x30\xeb\x35\x5e\xe1\x22\x64\xae\x58\x5c\x69\x74\x53\x7a\x5a\xe9\x7a\x03\x6b\xb2\x4e\x15\xa1\x47\xae\xee\xb1\x4a\xbf\xa1\x0c\xfe\x13\xa0\x66\xa8\x68\x23\xfb\x53\xef\xd0\x08\x59\xe8\xad\x95\xdc\x0a\xd5\xe2\xb8\xbf\xf7\x19\xf8\x52\xf6\xbe\xed\xc7\xb0\x6b\xac\x57\x4c\x29\x64\xb6\x81\x96\xfa\x4a\xae\x5d\xb2\x13\xb8\xb5\x8c\xd7\x22\xf1\x7d\x01\x18\x11\xb0\x53\xc7\x4c\x7f\xa9\xbf\xea\x3d\xda\x24\xe7\x34\xfd\x7f\x12\xad\x1c\x53\x21\x73\x89\x26\x26\x4e\xb8\x7e\x43\x1c\xb4\xc9\x5a\xc6\x4b\x98\xb2\x5b\xc8\xba\x77\x83\xed\x0a\x3f\xab\xfd\x90\xc9\x38\xe8\xf5\x4d\x02\x8c\xf1\x9a\x27\xe2\x07\x0a\xe0\x96\x57\x10\x73\xc1\x0d\x75\xea\x03\xad\x7f\xcc\xbf\xba\x7d\x57\x3e\x04\x7b\x25\x73\x33\x36\xbd\x57\xab\xd8\x97\x25\x6c\x18\x51\x53\x69\x86\xa5\x86\x12\x1b\x83\xf5\x8c\x1b\x51\x03\xb6\xd7\xca\x25\x20\x26\x08\xf8\xc2\xd5\x06\x01\x23\x05\x4b\x4e\xe1\x05\x6f\x94\xc8\xec\xfc\x3b\xf7\x3b\xb3\xc5\xa3\xff\x8c\x2b\x76\xde\x5a\xfa\x33\xc2\xb7\xb0\xa0\x4e\x3e\x11\x3b\xc4\x14\x87\x70\x59\x0c\xbd\xd1\x3a\x5a\x1b\xa8\x2c\xb2\x78\x9f\x8e\x75\xc5\x22\xff\x96\xf2\x0c\xc6\x04\x18\x2b\xc6\x26\x85\x5c\xed\xd8\xbc\xca\xd9\x17\xfd\xc4\x72\x30\xff\xb7\x76\xb1\xe9\x9b\xcb\xe4\x55\x0d\x1e\xe7\x68\xc8\x7e\xab\xc0\x28\x1a\xb6\xf3\x74\x3d\xc9\x39\x35\x0c\x94\x31\xd8\x91\x3a\x08\xf1\x54\xa5\xe6\x89\x5a\xc4\x6c\x96\xb0\x21\x60\xec\x15\x2b\x79\xec\x0f\xe1\x7a\x9c\x9f\x60\x17\xf8\xfe\xf8\x3c\xdc\x15\x8d\xeb\x99\xf4\x9e\xab\xe6\x5b\x9d\x93\x71\x1e\xc3\x74\x35\x05\xeb\x74\x6d\x98\xeb\xad\xae\x2f\x3a\x8e\x9c\xe6\x7c\x86\x22\x80\x8d\x9c\x26\x74\x1e\xcf\xab\x8b\x86\xd7\xef\xdb\x0c\xfc\xde\xf8\x23\xd5\xb4\x88\xf5\x7e\xe2\x04\x21\x72\x7d\x2e\x97\xef\xae\x9a\x1b\x62\x5c\xd6\x61\x71\x83\x50\x74\x83\x48\xba\x23\x56\x53\x6f\xf1\xf6\xe4\x79\x14\xaa\x6c\x9e\xc4\x3e\xf7\x4d\xb5\xdc\xc8\x2f\xa1\x47\x70\x18\x72\x83\x92\xb1\x4d\x22\x3d\x45\xd9\xc6\xff\x7a\xd1\x8b\x86\xef\x50\xce\x64\x85\xc1\xa8\xbd\x48\x74\x21\x11\x12\x0e\x4b\x11\x76\x9e\xe7\x78\x7d\xf0\x9b\xcb\x53\x50\x46\x19\x19\x2a\xb3\x7c\xef\x27\x7e\x7e\xe9\x6e\xf8\x3a\x8d\xaf\xec\x99\x3c\x76\x8f\xc1\x33\x98\x5c\x12\xe3\xbd\xf3\xa3\x4f\x44\xc5\xe4\xaf\xdb\x6b\x43\x03\x1e\xf0\x44\x64\xfe\x1b\x2f\xf3\xa1\xa8\xe9\x85\x79\x90\x66\x5c\xc4\x6c\x8d\xdc\xac\x6f\xb0\x14\xb8\xd2\x5b\x29\x6c\x2d\xb4\x01\xd3\x28\xa0\x39\xdf\x25\xc0\x36\x3d\x25\x4d\xde\x29\x84\xe3\x15\x88\x88\x91\x62\x49\xfc\x8f\x77\x86\x09\xe2\x2e\xf3\x25\x17\x4a\x17\x87\x1c\x1c\xd3\x80\xfc\xd2\xa6\xc0\x66\xd5\xef\x54\x37\xd3\xd5\x76\x3d\xdb\x8f\x33\xc3\xf4\xc2\xb5\x62\x21\x60\x80\x2c\xf5\x7e\x55\x61\xec\xd4\x31\x1c\x7a\xf9\x2a\x96\x7f\xf8\xc9\xfc\x55\x65\x77\x8f\x9d\xd1\xb9\x51\xed\x53\x86\x6b\x99\xef\x74\xbe\x95\x13\xb9\x02\x4b\xc8\xcd\xd9\xa7\x48\x3b\x28\x6a\x20\x69\xfe\x8a\xc6\x72\x79\x6a\xe0\x86\x61\x52\xf3\x86\x5b\x29\xd6\x7d\x59\xe6\x3c\xc6\x67\x29\xbb\x7b\x70\x8d\x17\x6a\x46\x49\x90\x16\xdf\x3f\x06\xa2\xf5\x4b\xa1\xb8\xc3\x44\xd7\xd6\x15\x98\x2e\x60\xa2\x28\x94\xa6\xcb\x40\x6b\x47\xf3\xae\xb4\x3b\x26\xc4\xfb\xcc\x87\x79\x3c\xd3\xcb\x62\x21\xeb\xa4\x4c\x56\x51\xf0\x77\x29\xed\x05\x2a\xa5\xbb\x9d\x53\xc2\x6b\x64\x1f\x0b\x67\xe9\x3f\x79\xea\xa8\x24\x5d\x37\x4c\x82\x83\xb0\xb6\x96\x71\x07\xc9\x95\x6c\xa8\x1e\x9a\xe4\xe4\x2b\x62\xb6\x8a\x2b\x37\x6b\xa9\x2e\x7f\x55\xcb\x0d\xe8\x9e\x6a\x0d\xc8\x09\x23\x23\x05\x9f\x07\xfd\xdd\xcb\xb9\x2e\xf3\xad\xcc\xb6\xd4\x11\xc5\x97\x81\x8c\x5e\x01\xf8\x8f\xf1\x53\x87\x23\x9a\x9f\x80\x96\x1d\x4a\x5e\x0b\xeb\xe4\xd9\x34\x3c\xee\x5f\x7f\x77\xd8\x5f\xe3\xbb\x86\xce\x3a\x06\xcf\x08\x21\x83\xd8\x07\x56\x1b\x70\x4d\xf2\x91\x85\x4e\xcf\x09\xfc\x46\x06\xe2\x1b\x12\x24\x9a\x92\x66\xda\x86\xe2\x51\x0e\x7b\xce\xd0\xf2\x36\x67\xf2\xe9\x41\x5a\x00\xa8\xdd\x9f\x63\x3b\x1b\xa2\xe2\xe9\xca\xb3\xfe\x7a\x45\xdd\x13\x91\x2b\x69\x9d\x4e\x41\x2d\x87\xbd\x14\x7c\x53\x70\x73\xcd\xcf\x21\x83\x09\xcd\x28\x5f\x80\x78\x59\x6c\xa6\x13\xf9\x62\x9d\x6e\xce\x64\x5b\x40\x4c\x01\x81\x22\x00\x7c\x83\x78\x86\x7f\x2b\x99\x4d\xa4\xf6\xca\x94\x66\x4d\x22\xb1\xdb\xcb\x8f\x41\x6a\x2f\x08\x83\x48\xc0\xe8\x46\xf3\x3f\xeb\xba\x28\xa6\x15\x2f\x45\x57\xf7\xcf\x15\x7f\x86\x7d\x17\xfb\xd0\x05\x65\x02\x44\x01\x0a\x04\xae\x03\x8a\x13\x5a\x50\x16\x71\x36\x59\x4d\x75\xad\x52\x50\x0e\x31\xd1\xd9\x4c\x87\x32\x71\xf8\xac\xeb\x5a\x60\xa0\x59\xf2\x63\xe9\x2f\xb5\x8e\xc7\xba\x09\x16\x62\x7b\xe0\xc0\x42\x96\xe7\x9d\xde\x37\x1e\x83\xb7\xfc\xeb\x5c\x59\xc3\x8b\xfd\xf1\xab\xc4\x41\x68\xfa\x65\x2c\xc7\x95\x31\x22\x52\x84\xfd\x5f\xf1\xf7\x3b\x4e\x46\xd1\x27\xeb\x90\x2c\xd2\x4c\xff\x9e\xc3\xbc\x5b\x4b\xad\xf8\xa7\x1a\xa5\xe3\x92\x67\x50\xc6\x40\x31\xd0\x86\x20\x93\x28\x6a\xf8\xdd\xdf\x9c\xcf\xf2\x37\x92\x50\x04\xb8\x91\x93\x82\xc7\x9d\x1e\x00\xba\xbc\x8d\x96\xb2\x97\x92\xc3\x76\x22\x4c\xc3\xa4\xd3\xfb\x34\x6e\xb1\x54\x1e\x50\x15\x8d\x98\xc7\x4d\x4a\xef\x0f\x76\xac\x69\x9c\x0b\xf9\x22\x11\x3f\x4c\x0d\x64\x1e\xb4\xae\x1b\x51\xf3\x64\x6d\x01\x77\x03\xc7\x01\x3d\x06\xd7\x28\xcc\x93\x80\xda\xb4\x0e\xf6\x33\xf1\x1b\x70\xdf\x87\x40\x5b\x60\x6d\x29\xd5\x17\xc4\x45\x6b\xa1\xad\xd4\x37\xb2\xa4\x87\x47\x4f\x15\x42\x57\x14\x87\x28\x14\x7f\xfd\x1b\x86\x66\xf8\xfb\xe5\xc2\x79\x0f\x66\xf8\x32\x02\x6f\x68\x42\xaf\x6b\x46\xd8\xdd\xee\x32\x55\x54\xe9\x9a\x8d\xfd\x3a\x04\x93\x59\xf6\x0d\xf7\x62\x86\xf2\x47\x3f\x76\x3d\x54\x0a\x77\x37\xb3\x94\x66\x2c\x5d\x1b\x1d\xd3\x31\xa0\x36\x08\xef\xcf\xaf\x67\xea\xa1\x61\x32\x96\x01\xb2\xa6\x1d\x00\x86\x87\xdb\xce\xe3\xad\xf1\x0f\x39\x3e\xae\xda\xef\x41\xe7\xa5\xaa\xd8\xaf\x0f\x08\xf6\xe0\x86\x50\x9d\x36\x77\xab\xa6\x1b\xc7\x4b\xe6\x80\xee\x2f\x4a\x1f\xa5\xc9\x3b\x3a\xd7\xa4\xb8\xc9\xb8\x02\xc7\x27\x01\x4c\x7d\xf8\xb8\x0e\xb7\xb4\x0b\x94\x09\x7f\xfd\x2b\x4e\x69\x69\x79\x1a\x3c\xb7\xfc\xc8\xfa\xde\xbd\xfa\x3e\x24\xc0\x1d\x16\x21\x35\xc9\x7d\x82\xb8\xbf\x1b\xbd\xe3\xa3\x36\xfc\x29\xfc\x63\x9c\xa5\x37\xd9\xd1\xbe\x2d\x39\x64\xec\xd6\x23\x12\xb6\xba\x01\x66\x2d\x8d\x94\x8b\xa1\x52\xbc\xbb\x86\x7d\x7f\x38\x6a\x59\xc7\x18\xa9\xca\xb5\xf1\x48\x39\xe6\x8f\x88\x03\x89\x40\xb5\x86\xd5\x3e\xb6\xab\xc9\x11\xd3\xfd\xcf\xdd\xdc\x74\xf2\x8c\x29\xb1\x15\xf1\x16\x8f\x20\xf9\xda\xaf\x33\xf5\x5f\x97\xbd\xe6\xdb\x1b\x9d\xbf\xf9\x5e\xae\x31\xd0\x48\x4b\x47\xb5\xeb\xf9\xbd\xf1\x85\x08\xba\x3b\x0a\x1c\xeb\xca\x3d\x6a\xf9\xe1\x94\x9d\x15\x7e\xf0\x40\x25\xb8\x8d\x17\xf1\xbd\x35\x9a\x19\x50\x6b\x1f\x5d\xe9\xbd\xd2\x6b\x23\xb3\xa3\x3e\xe0\x63\xf6\x09\xc8\x87\xff\x7c\x14\xd1\xf1\x32\x0e\xe4\x86\x5d\xee\xa8\xd5\x3c\xa9\x4f\x4d\xfe\x92\xcf\x47\x0d\x98\x2a\x61\xff\xd6\xae\x69\xcc\x75\xef\xe5\x62\xcf\x38\xd5\x17\x54\x34\x10\xca\x4c\x9a\xb4\xcc\xa4\x19\x6f\x44\x44\x7c\x7d\xfc\x7f\xf7\x57\x7d\xd1\xa2\x50\xb9\xff\xd4\x58\xe5\x66\xc5\xec\x33\xf2\x63\xfa\x29\x6b\x37\xa4\xff\xc3\x77\xc1\xfa\xcc\x6b\x5d\xfb\x5b\x54\xae\x8d\xa1\x34\x06\x5d\xec\x2b\x01\x5c\xcd\xbe\xe3\x4f\x2f\x58\xae\x63\x9e\xa4\x5f\xba\x99\xa7\xd6\x6c\x91\x84\x64\xa6\x58\x77\xc3\x2d\x5b\x09\xbb\xc0\xff\x50\x7e\x0b\x37\xdc\xf8\x13\xf3\x71\x23\xdb\xf5\x67\xb2\x6a\x0c\x4f\x7c\x5e\x43\xd4\xd4\x50\x6c\xd2\x73\x34\x98\x7f\x77\xd2\x99\x94\xb3\xe7\x87\x9f\xed\x87\x64\x44\x95\xb3\xe7\x9b\xd3\x99\x1e\xe8\x1b\xe1\xdf\x38\x54\x1b\xd9\xf7\x63\xb9\x9a\x1c\x32\x53\xeb\xa6\xc7\xb0\xa8\xda\xbc\x1a\xe0\x69\xcc\x9c\x44\x64\x57\x77\x27\xe5\xdf\x9e\x71\x95\xfa\xd2\x5c\xa3\x58\x03\xa5\x1b\xce\xb7\xc7\x9e\x4e\x18\xd3\x29\xcd\xf9\x54\x97\x3d\x06\xf8\xc1\x70\xf4\x5f\x46\x3b\x59\x98\xaf\x2e\x5f\xef\x20\xce\x5c\xa3\x9d\x60\xe7\x7e\x91\x0b\xb1\x5e\xe8\x75\x6e\xa8\xb1\x57\x1c\xfd\x63\x9b\x29\x3f\x40\xfc\x0f\x61\x30\xa6\x9d\xd9\x1d\x26\x1c\x38\xf7\x31\xa0\x9d\x3b\x02\xbc\x61\xff\x62\x65\x8a\x08\xfa\x10\x72\x79\x2e\x23\xce\x24\x4b\xc5\x29\xa7\x61\x41\x22\x72\xa3\xa4\x2e\x0d\xfb\xbf\xeb\x51\xb4\x36\xd4\x16\x51\x0e\x19\x70\x6e\x07\x37\xed\x95\x7c\xf0\x1a\xc1\x6c\x40\x7e\xf8\xa7\x2f\x71\x29\xf2\x58\xc6\x11\xe7\x71\x13\xf6\x59\x35\x58\xbe\x58\x03\x86\x6f\x0b\xb5\x23\x97\x9b\xa9\x7f\xe6\xe5\x28\xaa\x71\x20\x31\xc9\xc3\x4c\x0c\xc7\x91\xef\xd4\x06\x7c\x1b\xcd\x39\x6a\x98\x48\x87\x94\x68\x78\x37\xbc\x69\xed\x4f\x1c\xab\xdc\xd7\x7b\xb3\xd7\xca\xe2\xdd\x66\xb0\xc1\x72\x37\x15\x23\x69\xbd\x2b\xff\xc5\x72\x1e\xe6\x8b\x5b\xcc\xc2\xcd\xe4\xa8\x19\xa2\x1b\x0e\x9e\xa7\x5a\x33\x23\x32\x67\xf4\xd3\xcf\x7e\x97\x39\xd7\x53\x7d\x64\xef\x1a\x85\x9a\xa4\x91\x21\x22\xb9\x66\xdf\xee\xa7\x16\x86\xbb\x8a\x09\x87\xe5\xd9\xe5\x15\xa3\x85\x66\xbb\x10\x1d\x4d\xfd\x9a\x41\x53\x29\xff\x2e\x6e\xb2\x17\x44\xda\x3b\x1f\xb8\xad\x60\x34\x9a\xd9\x22\x90\x22\x14\x6c\xaa\xdb\x69\xc2\xb3\x82\xec\x31\xcf\xcf\x1d\x59\x43\x11\x53\xcc\x08\x18\x27\x6c\x95\x9b\x9e\xac\x81\xd3\xd2\xa1\x1f\x15\x3e\xff\xe1\x3a\xba\x76\x48\xe2\x7c\xdc\x61\x94\x79\x8f\x08\xb8\x17\x19\xb5\xb5\x5e\x3a\x51\x07\x66\x8c\xe4\xfd\x8f\x37\x70\xfe\xf2\x65\x3f\x98\xd3\xc2\x8e\x8d\x41\x12\x32\xee\x09\x6f\x72\xf6\x8c\x71\x5c\xaa\xd9\x0e\xf2\xfe\xf0\x15\xb0\xce\x2a\x39\xc3\x50\x2e\x17\xa9\x4c\x10\xf2\x06\x8e\xd7\x3e\xba\xb6\x6b\xcc\x02\x3b\x36\x99\xd8\x17\xc9\xfe\xd4\xbe\xb3\x99\xb2\x6d\xca\x2c\xfe\x92\x8f\xb7\x59\x72\x4e\x94\x95\xc0\xfb\xfc\xe7\xd3\x40\xcd\x4f\x5f\x71\x83\xe1\xd8\xc4\x68\xbb\x99\xe3\x30\x69\x74\x94\x1e\xd3\xcc\x07\x76\x38\x7d\x3d\x21\x44\x11\xff\x71\x21\x33\x7b\xc0\x35\xc5\xd2\x34\x33\x67\xc0\x52\x7d\xc7\x6d\x61\x1a\x1c\x1b\xee\xbb\xd3\x5d\x91\xc0\xd6\x3f\x31\x48\x93\x34\x54\xc0\xb2\xd1\x0a\x47\x03\x9c\x87\x98\xa9\x6e\xdc\x0c\x73\x3a\xeb\x97\xbe\x52\x2b\x99\xcb\xfc\x89\x2b\x98\xdd\x57\xbf\x2a\xa3\x94\xbc\xdc\xa0\x03\xdb\x79\x54\x84\x0a\x8f\x78\xfd\xeb\x59\xac\x0b\x09\x2c\x19\xef\xfd\xf0\x49\xd8\x24\x38\xf0\xf4\xac\x2b\xf6\x51\x94\x5a\x1d\x0b\x5e\x2e\x63\xaf\x18\x87\xfd\xeb\x77\x7f\xb0\xc5\x1d\x04\xdd\x8c\x8e\x18\xa0\x5a\x7c\xf8\x55\x02\x87\x6f\x0b\xc5\xe9\x1c\xf1\x1f\xef\x5a\xeb\xf1\x5f\x47\x13\x9c\xab\x99\x29\xb3\x7c\x08\x87\x91\x7a\x08\x18\x30\x5b\xc0\x4a\x85\xfb\xb7\x7f\xce\xec\x7c\x70\xcb\x98\x79\x41\x4d\x8a\xac\x92\xe0\x4f\x31\xf7\x42\xd3\x7b\xad\xd0\xa8\x7f\x71\x5d\x83\xe5\x5c\xe3\x23\x07\x4e\xf7\xe8\xdc\xa9\x39\x2d\x2a\xdc\x1a\xa4\x8b\xcc\x8a\x86\x9c\xb0\xff\xc8\x8b\xa0\x38\xe5\xca\x34\x9e\xc4\x8b\x53\x0b\x67\x28\xc1\x5c\xa7\x16\x68\xc9\xbf\x1e\xda\x51\xd3\x80\xfa\xfc\xf0\xca\x0d\xc5\x12\x39\x61\x01\xb7\x95\x81\xe2\xbd\x3f\xba\xe9\x5d\xb4\x25\xfc\x15\x13\x37\xa4\x32\xe1\x30\x15\xdb\x8c\xba\x7f\x4c\x56\x63\xd8\x73\x0d\xd4\xe4\x27\x16\x50\x6f\xd1\xf3\x17\x47\xe1\xf3\x2e\x24\xe5\x34\x8f\x33\x8d\x11\x13\xf3\x7f\x31\xdd\x77\xd5\x6e\x49\x08\x19\xb0\x73\xd5\xe4\x0b\x60\x98\xd4\x31\x0d\xa6\x29\x77\x65\x04\x4c\xa4\xfc\xf8\x7e\x38\x77\x45\xaa\x4b\xcb\x4c\xd6\xad\x5a\xdf\x7b\xa5\xcb\xa4\x60\x18\x3a\x82\x39\xec\x66\x8f\x0b\x7c\xf7\x8f\x07\xb3\x68\x33\x93\x0a\x06\x5c\x64\xf8\x74\x05\x1b\xc8\xcf\xcd\xac\x4b\x68\xa7\x53\x22\x5e\x22\x76\x47\x68\x8b\x3f\xb9\x1d\xde\xea\xf8\xc1\x11\x6c\x0f\x31\x9b\x28\xf7\x33\x43\xd1\x0c\x9e\x73\x22\xe3\xe4\x94\xbf\x38\x28\xe7\x18\x88\x62\x89\x8c\x4f\xde\x10\xf4\xf8\xe5\x2b\x39\x8c\xec\x8c\xcc\xd1\xfd\xc4\x51\x96\x67\x98\x9b\x32\x73\x8a\x1a\x17\xd0\xe5\x23\xe0\xed\x72\xfc\xd3\x09\xc8\xff\x7b\xfe\xca\x87\x19\x01\x17\x86\x30\x0c\xc7\x68\x4d\x6c\xec\x54\x10\x96\xe9\xa0\x02\xb7\x0c\xe7\x87\xbf\x80\x63\xd0\x5f\xbe\xc5\x10\x2c\x2e\x0b\x78\x2a\xde\x2d\x63\x92\x9b\x4b\xdf\xb9\xbf\x3f\xff\x7e\x7e\xf0\xdf\x77\x53\xf6\x9a\x39\x7d\x41\x46\x25\xe8\x3d\x3f\xc9\xcd\xd7\x72\x40\x7a\x63\xc1\x49\xfa\x37\xb9\xca\xe4\x46\x83\x05\xac\x08\x91\x3e\x1f\xa6\xb8\x65\x36\x64\xc0\x2e\xff\x9e\xdf\x19\xa7\x91\x07\x2d\x66\x63\x30\x8f\xa9\x4d\x8a\xee\x11\x17\x0a\x98\x78\xd0\x54\xd5\x20\xc2\x84\xfd\x27\xdb\xfa\xa0\xf6\x0a\xf5\xc9\xdf\xa7\x80\xe0\x37\x21\x15\x90\x22\xf2\xb5\xf2\xb9\x6c\x61\x20\x97\xff\xa7\x2b\x21\x96\x05\xf5\x49\x91\x28\x58\xcc\xbf\x65\xba\x05\x9e\xd2\xc9\x5f\xdc\xb3\x59\xaa\x91\xdb\x42\xea\xf9\xbf\x73\x3b\x05\xc7\x7e\xcd\x61\xd9\x46\x05\xb1\x35\xc5\x07\x2a\x1b\xd1\x1a\x57\xf8\xff\x63\x69\xf1\x0b\x92\x77\xc9\x2f\x25\x6d\x8b\xd3\x0e\x0f\x25\x0c\x1d\xe4\xcb\x44\x85\x31\x32\x16\x99\xf7\x8d\xf2\x73\x2f\x89\x3d\x85\xd3\xff\x3c\x0a\xd5\x7b\xf5\x04\xed\x14\x3e\xee\x50\x68\x23\x85\xe6\x76\x9c\xab\x2e\x3e\x3a\x16\x24\x3f\xc8\xcf\x55\x6b\xc2\xf4\x73\x1e\x51\x9d\x05\x65\x79\xf2\x4c\x0e\xa9\xd3\x23\xcb\x96\x26\xe2\xe7\xe0\x1a\x23\xe2\xbd\x7d\xe8\xb6\xac\x16\xb2\x20\x0c\x4d\xfb\xca\x4a\x5e\x5c\x9e\x8e\xcb\xf8\x15\x22\xa4\xbe\x28\x08\x9d\x92\xfe\xc8\xcb\x08\x7b\x5a\xc3\x98\x78\x51\x79\xb4\x40\x4f\x5f\xfa\x82\x4c\xfe\x2e\x07\x4a\x13\x9d\xc8\x00\xd7\x6e\xd5\x92\xac\x78\xdb\x5d\x25\x43\xb8\x7c\xe5\x9a\x4f\xcd\x30\x0a\x53\xfc\xbc\xc4\xe7\x2a\xb5\x9f\xfe\xc5\x1c\x83\xb2\xec\xab\x04\x20\x46\xf6\x61\x18\x1e\xd1\x94\x21\x66\x87\x5d\x9e\x69\xab\xaa\xf5\x49\x10\x2b\x1c\x1c\xc9\xff\xc4\x03\xd4\x44\xc6\x09\x18\x1e\x8b\x27\x46\xe7\xf0\xff\xb8\x2c\x51\xcd\xf5\xb2\x64\x65\x6a\xfe\xb3\xb3\x49\x9b\xae\xc4\xbc\xa6\x48\x3a\x35\x94\xe4\x24\x85\x6d\xa5\x9b\xc1\x33\x98\x15\x36\xc9\x2c\x9a\x58\x71\x63\x78\x0b\x66\x80\x3a\x3b\x09\x46\x0d\x18\x05\x01\x7e\x27\xfc\xe4\xb0\x8d\xd6\xb4\x7a\x08\xf8\xcc\x91\x9f\x66\x5f\x73\x39\x63\xd0\x1a\xb2\xed\xc8\xd6\xa7\x98\xda\x5e\x95\xc8\xa0\x78\x28\xb9\xc5\x92\x5d\xec\x8f\xdf\xa5\x78\x9f\x7a\xd8\x49\x96\x96\xa7\xad\xa3\xb9\xe6\x7f\xce\xe8\xc2\x6a\x0b\x1a\x96\xcb\x85\x27\x86\x7e\xd2\x09\x3b\x6c\x6e\x12\xd6\xc3\x19\xb1\x4d\x21\x1a\xea\x66\x27\xd7\x8d\xd5\xd3\xd5\xc9\xca\x1b\x87\xb0\x97\x14\x05\x1c\xb5\xf1\xc1\xb6\x07\x74\x7a\x37\x3f\x1a\x6c\xf0\xf5\xe3\x2b\xee\x7e\x7c\x59\xcb\x69\xde\x0a\x03\x71\xa3\x4c\x4f\x1e\x55\xfa\xce\x0f\x43\xb1\x9a\x82\x75\xc4\xe3\x52\xd3\xd5\xbb\xd1\xfc\xe0\xbf\x7d\xfc\x50\xe5\xb1\x7d\x04\x52\x66\x08\xfb\x86\xad\x19\x26\xdd\x6c\xf3\xb3\xfc\x13\x1b\x09\x87\xe7\x1d\x06\x15\x0e\xff\xef\x9c\xc9\xa3\xf3\x2e\xec\x57\xef\x4a\x36\x7b\x5c\xac\x8e\x09\x54\xc0\x48\x55\x54\x7e\x85\xd6\xb9\x2a\x48\x93\xd0\xf4\xed\x5c\xca\x3a\x9b\xea\x7e\x80\xc0\x44\x91\x16\x11\xc1\xdc\x20\x92\x13\x99\x2e\x71\xb6\xe6\xfb\x52\x32\x33\xd0\x8f\x3f\xcd\x3e\xbd\x41\x38\xf9\xc8\xb7\xaa\xd0\xaf\x15\x03\x6e\xe3\x39\x67\x1d\x15\x3c\xa6\x1f\xd0\xd6\xbd\xef\x80\xc2\xbd\x48\xf5\x32\x98\xc8\x20\x23\x18\x12\x36\x13\x14\xa7\x3b\xc9\xb6\x52\x44\xb8\xd1\xc8\x25\xdc\xb4\xff\x64\x9e\xb1\x8c\xf3\x05\x9c\x9b\xdc\xcd\xe1\xcb\x4a\x70\x43\x4e\x0e\x61\x23\x08\x72\x47\x42\x2a\xb9\x80\x7d\x57\x92\x58\xd7\x12\x7b\x69\xea\x60\x78\x8b\x1a\xc4\x25\x67\x22\x52\x52\x50\xf8\xe8\x16\xf7\xca\x8b\x8e\x37\xb4\xff\x74\x06\x4f\xcf\xd4\x47\xc6\x48\xd1\x0b\xcb\x2d\x5b\xe7\xc1\x4b\xb7\xdc\x84\x51\x06\x87\x09\xeb\x93\xc0\xb2\xd2\x4a\xfa\x1d\xea\x2d\x8d\x9c\xeb\xb3\x34\x87\x38\x9f\x9d\x66\xcd\xdd\x97\xbb\x13\x27\x61\xff\xdf\xbe\x38\xe4\xca\xda\x7c\x53\xbe\x7b\x88\x45\x01\xea\x83\x32\x51\xdf\x91\xaa\x2e\xa1\xc2\x37\x58\x88\x93\x63\x70\x49\xea\x5a\x8c\x9b\x9a\xe8\xba\xb2\x87\x70\x18\x1a\x67\x5e\xfb\x9c\x9a\x3f\x86\xa0\x35\xad\xca\xfd\xd3\x07\xf2\xc2\x7e\xb5\xbb\x32\xc5\xb5\x0c\xa3\x10\xfe\x65\xe1\xb9\xd7\xcd\x64\xb7\x37\x4d\x70\x8a\xbb\xc4\xeb\x2a\xc9\xed\xf3\x1e\x0c\xe1\x44\x4a\xc5\x1e\x41\xd2\x86\xef\xde\x70\x7c\x08\xbd\xc4\x05\x06\x87\xe4\x80\x5e\x81\x6f\xc0\x04\xca\xcf\x92\x71\x81\xb7\xd3\xae\xe7\xc4\x3d\x1d\xf7\x07\xae\x32\xee\xab\x17\x63\x38\x24\x16\x69\x43\xb4\xfd\xfb\x02\x05\x87\x12\x8b\xcf\xe5\xbe\xfd\x72\xc9\x1b\x25\xbf\xd6\xbc\xae\xb3\xa4\x71\x5f\xcb\xb4\x42\xee\xae\x6c\x7b\x2e\x55\xcd\x6e\xa0\x40\x58\x7e\xee\x1d\x73\x4e\x83\x3c\xd1\x16\xd3\xc9\x6c\xc4\xe7\x03\x0b\x29\xa7\x75\x9a\xf1\xad\x27\x2c\x95\x44\x1b\x2c\x9f\x42\x6a\xe6\x21\xd8\x4c\x30\x1f\x89\x73\xdd\x1a\xfe\xf6\xe8\x4b\x6d\x3f\x69\xdb\xbd\xcb\x3a\x69\x1b\x55\x18\xb8\x4e\x28\xbd\x42\xf3\xfa\x0f\x2f\x23\x53\xa4\x72\xd4\xf1\xde\xeb\x24\xdf\x7a\xe8\x39\x6f\x39\xb7\x65\x25\x77\x80\xd8\x1a\xca\xe0\x39\xb2\x49\x12\xee\x97\x9e\x70\x3d\xd9\x3f\x5f\x34\x23\xd1\xaa\x86\xa5\xcf\x34\x5e\x4e\x64\x55\xe5\xab\x18\xe1\x37\x71\x66\x9c\x12\x5b\xf9\x29\x9c\xee\x27\xe7\xd5\x33\x56\xc7\x7b\x4f\xc2\x14\x34\x4c\xdb\x03\x55\x2e\xc7\x41\xee\xc0\x52\xca\xcb\x95\xf0\xdc\x94\xe3\x94\xc9\xae\xd5\xb8\xec\x20\x75\xe4\xd9\x88\xcc\xdc\x23\x4a\xba\x11\x5c\x99\x3d\x06\x25\x94\x9c\x92\xce\xd9\xa8\xac\xb8\x9f\x1f\x5b\xcf\xef\x1f\x79\xff\x65\x28\xda\xc9\x1f\x34\x7b\xdc\x14\x06\x93\xe6\xd3\xfc\x28\xaf\x45\xdd\xdf\x0f\x55\xf8\x69\x0c\xdc\xc8\x79\xa1\xb9\x1a\x22\x98\x91\x9f\x86\x94\x5b\x3a\x58\x99\x8d\x10\x48\xcb\x4f\x4c\x66\x79\xdc\x14\xd3\x89\xa0\xd6\x7a\x56\x7a\x6c\xcc\x11\x31\x41\xdd\xf5\x82\x94\x63\x3a\xe6\x15\x98\x8f\xf1\x18\xdc\x63\x22\xf3\x97\x2f\x2b\x93\x17\xaa\x66\x99\x47\xec\xed\x4d\xc1\x28\xfd\x1a\x93\x6d\xcb\xf7\x70\xba\x79\x57\xd6\xeb\x23\xfc\xc4\xae\x46\xc3\x5e\x4e\x12\xdd\x7b\x53\xde\x64\x00\xc3\x51\x01\xce\xb2\xda\x97\xbc\x13\x55\x78\x3d\xc5\x0d\x66\x80\x67\x8e\x0f\x6d\xa6\xdf\x55\xfd\x22\xd1\x93\xf5\x75\x80\xa3\x78\xfb\x51\x66\x20\xd5\x2b\xb7\x11\x02\xf1\x7f\x9f\x53\x28\x18\x43\x4f\x2a\xc7\x97\x23\x08\x19\xc1\x6a\x4f\x61\x7f\x3d\x3f\xd8\x65\xa9\xad\xb5\xd0\xe0\x42\x40\xa5\x7c\x13\xba\x4b\xa8\x23\x18\xad\x68\x44\xac\x8b\xd6\x00\xc7\xfb\xfd\x08\x76\xe7\xdf\xe3\x82\x1d\x94\xac\x5d\xad\xc6\xc4\x3f\x3a\x3d\x66\xd9\x43\x91\x13\x02\x47\xa8\x5f\x1f\x19\x2f\x70\xd9\x50\x2e\x91\x13\x42\xa2\xd4\xb3\xec\x48\x34\xcb\x34\x8f\x01\xf5\xeb\x2a\x0b\x6d\xf0\x0d\x64\x13\x80\x3b\x93\xaf\x81\x49\x0b\x91\x4d\x2f\x48\xc4\x4f\xcf\x35\x9a\x01\xf3\x2f\x1f\x8e\xf4\x0c\xf0\xa1\xe3\x0d\x4d\xfc\xef\xec\x37\x0d\xb4\x37\xa6\xbd\x18\xdf\x4e\xe9\x56\x45\xd0\xba\xcd\x02\x97\x32\xd1\xf9\xe4\xb1\xa6\xdc\x1a\xa8\xf8\x43\xfd\x3a\x63\xb1\x05\x1a\x21\xeb\x0e\xdc\x9a\x66\xd4\x7f\xb8\xd9\xb3\xf5\xa6\xd8\x4a\xc9\x4f\x5f\x20\x86\x4d\x62\x0b\xef\x68\x4b\x9b\x37\xfe\x46\x3d\x30\x36\x5e\xe3\x85\x5e\xe3\x49\xbf\x14\x46\xa3\xa0\x56\xf0\xe5\x16\x86\x39\x00\x77\xe9\x7e\xc7\x28\x9b\xc5\xe9\x9b\x33\xc6\xf3\x53\xc3\xd8\x2b\xd6\x3b\x75\x8c\xf2\xda\x56\xd1\xa7\xaf\x48\x18\x61\x7b\x84\xeb\xa6\xed\xf4\xf1\xf8\x10\x61\xb5\x39\x4d\xc7\xc6\x97\xbd\x32\x39\x58\xa7\x3a\xfb\xb2\xc7\x4e\x4f\x54\x3d\x50\x6e\x86\x44\xa7\x91\x1f\xbf\x6c\x9a\x18\xb3\xcc\xbe\x71\x8a\xc3\xfd\x8f\x6e\x17\x1a\x01\x2f\x4e\x17\xb2\x94\x05\x46\x06\x37\x00\xf8\xd0\xb4\xc0\xa3\x2e\x45\xa8\x96\xd9\x5b\x5b\x68\xe3\x33\x13\xe6\x64\xd3\xf4\xe3\xf7\x30\x5c\x96\xb2\x9e\x66\xca\x6d\xe1\xd0\xa9\x37\x1f\xa5\x72\xa5\xbb\xd8\x71\xe6\xdf\xb9\x64\x8b\x7a\x46\x02\x40\x08\xbc\x33\x16\xc2\xc3\xf9\xca\x08\x60\x7f\x4a\x7e\x2b\x61\xb4\x5c\xab\x69\x1b\x51\x59\x20\xa6\x88\x40\x05\x06\xe6\xb3\x71\x1b\x2d\x24\x9d\x82\xa2\xd8\x1f\x38\x23\xd1\x22\x49\x3f\xed\x15\x0b\xb5\x7a\x73\x72\x6a\x05\x8d\xf2\x9f\xef\x6e\x3f\x77\xec\x7a\xb8\x36\x62\x00\xf9\x95\xb0\xc9\x21\x65\xab\x06\x12\x6f\xad\x6b\x70\x09\x60\xd3\x8f\xb8\xd0\x78\x3f\xd3\x09\x24\x19\xb6\xd3\x69\x5b\x1c\x8f\x2a\xbf\x4a\xaf\x64\x5c\x2e\x5e\xee\x9f\x71\x8a\x9d\x95\x31\x5c\xf0\xdd\x34\xd3\xbf\x7b\x84\x2d\xdf\xbc\x74\x10\xaf\x86\x9f\x6f\x10\x8e\xdd\xfb\x51\x07\x4a\xe6\xfb\xaf\xb2\x5e\xad\xc0\xbc\x7f\xe2\x29\xa6\x61\x81\xab\x76\x21\xbc\x60\x26\x67\x2f\xca\xcf\x11\xaf\xe0\x74\x8d\x25\x7c\x38\x5c\x79\xa3\x46\x5d\xc0\xb1\x7b\x03\x03\x64\x49\x6e\x8a\x7f\x5e\x19\x14\xc7\x63\x51\x05\x87\x54\x9f\xfe\x2f\x36\x05\x78\x86\xee\x40\x64\x91\x9c\xd7\x77\x5b\xc7\xf3\xbb\x73\xc7\x14\xb0\x62\x9b\xcd\xeb\xbc\x84\xa7\x3c\x9a\x91\xeb\x76\xd3\x03\x4c\xbd\x6d\xd4\x54\x9f\xd0\xfc\x29\x5b\x9e\xf0\x07\x2b\xc4\x7b\x6a\x44\x76\x8e\xf2\x52\xa5\xf7\x6c\xca\x0c\xc3\x60\xd3\xbe\xef\x64\x13\xe1\x70\x66\xeb\x1a\xec\xfc\x3a\x46\xb1\xd1\x7c\xde\x40\xd4\xd2\xd4\xd5\x3f\x2a\xb7\xcb\x97\x8d\xfc\x89\x73\xf9\xbe\x41\x76\x9e\x42\x2a\x18\x29\x02\x22\x59\xf7\x4d\xa3\x2e\x62\x5c\xd7\xc5\x43\x18\xe4\x58\xda\xe6\xd5\x8b\xce\xbd\xae\x8d\x93\xc3\x4c\x69\x71\xc3\xfb\xef\x4c\xf0\xfa\x86\xcb\x3d\x86\x37\xe8\x01\x7d\xd4\xd5\x7b\xf5\x21\x8d\xd8\x02\xc4\x5d\x88\x74\xb4\x2f\x0c\x26\xcc\x46\xf2\xa3\x18\xb5\xf7\x7a\xcd\xdd\x01\x9f\x38\x72\xc9\xda\xf5\x31\xaa\x61\xf1\xfe\x72\xd2\x83\xdc\xd8\x4b\xbf\xc6\xa0\xf7\x03\x96\x3f\x15\xba\x59\xe4\xb9\x2d\x1a\x25\xd4\xd6\x34\x82\x06\x9c\x69\xe6\xe8\x26\xdb\xc8\x15\x40\xe3\x38\xff\xe2\x68\x59\xc7\xcd\x50\x1f\x45\x68\x32\x3a\x42\x99\xcb\xed\x30\x57\x4e\x54\xfb\xc1\xf5\xe3\x38\x1e\xb7\x8b\x90\x2f\xe0\x7b\x73\x22\x2e\x05\xd8\x9d\x1e\xec\xde\xfe\xe6\xd1\x17\x7c\x4a\x7e\xb3\xe0\x4f\xa0\x7b\xd5\xc4\xda\x05\x8c\x6f\xb4\x50\xad\xbc\xa6\xbf\xd1\x29\xbe\xb0\x83\xea\x07\x08\xa2\x79\xf3\x0c\xa6\x73\x5d\x6e\x13\x3b\x5c\xfc\x7d\x4d\x3d\xcb\xfc\xc4\x72\xec\xe3\xe4\x23\x57\xb5\x26\xec\xc7\xe2\xe1\xe7\xb9\x98\xfc\x97\x5f\x12\x2e\xef\x15\x41\x3b\xca\xd0\x5d\xb2\xc6\xdb\xd9\xc6\xe6\x3d\x77\x81\xe5\xff\xc9\x0d\xb5\x7c\x0f\x48\x91\xde\xfd\x58\x8f\x7c\x29\xfc\x8f\x2c\xe3\xbf\x9c\x13\x17\x47\xfd\x38\x82\xbb\x6a\x5e\xc0\xa5\x5d\xf6\x44\xc7\x37\x8f\xef\xb1\x9b\xff\x1e\x9a\xf3\x07\xff\xe4\xf1\x9e\x80\xa3\x95\x8e\xb2\x37\x4a\x16\xd6\x23\x19\x3c\xf6\x34\xd0\x7c\x75\xd5\x81\xcc\xe6\x03\x44\x10\xea\x7e\xca\xed\x28\x62\x76\xba\xb6\xa3\x01\xf9\x46\xba\xeb\xfb\x8f\xde\x60\x8f\x6c\xb3\xd8\xb2\xf2\x6f\x8e\x7c\x12\x24\xf6\x9b\x13\x5c\x9a\xc1\x8b\x15\x7c\x4a\x5f\x3c\xb1\x47\x86\xf8\x1f\x9f\xec\xba\x52\x26\x56\x9b\xde\x8b\xfd\x5c\x13\x2c\x0e\xbd\x3d\x56\x30\x76\x59\xce\xe7\x46\xfe\xfe\x8b\x2f\x4c\x01\xf9\x70\x7a\xc3\xb4\x94\xd1\x3e\xaf\x0a\x6b\x7c\x79\x1e\xf4\x69\x48\xa0\xd9\x92\xb6\xca\xda\x0d\xd9\xfe\xeb\xe9\xac\xf2\xf6\x8c\xe9\xc9\x4d\xdf\x55\xaa\x0e\x48\x25\x5e\x01\x53\x5d\xb5\xc1\x16\xff\x13\x57\xb5\xcc\xc3\x9c\xaf\x60\xbe\x43\xae\x95\xd5\x48\x98\x98\x88\x44\x3c\xa8\xde\x9c\x52\xfe\xf8\x11\xd2\xa5\x58\xb1\xc2\x97\xf9\x5a\x8b\x85\x39\x3d\x15\x7f\x05\x8c\x5b\x66\xf6\xd6\x60\x0e\xff\xfe\xff\x58\x86\xad\x1b\xd5\x13\x8e\x84\x58\x3b\x48\x52\x44\x11\xbe\x80\x53\x87\x34\xec\x7f\xd6\x3b\x23\x3d\xd2\xcd\x2c\x8a\x7d\x23\xef\x83\xd7\x28\x57\x30\xa6\x30\xdc\x0d\x90\x73\xee\x07\x32\xb0\x7f\x5c\xe6\x6f\x42\x56\xfe\xa7\xd2\xca\xb7\x01\x92\x15\x4f\xb0\x08\xd7\x3f\x8e\x5a\xe8\xd2\xaf\x78\xee\x7f\xd6\xfa\x51\x00\x9e\xb1\x1e\x26\x6f\xb3\x75\xe5\xb7\xb3\xb4\x4e\xfe\x48\xc5\x21\x12\x95\x80\xf8\x7f\xb1\xc9\xaf\x67\xb4\x40\x01\x07\x43\x8f\x95\x3f\xf3\xee\xd8\x11\xbf\x34\xf2\x0f\x7e\xc7\x97\x94\xc3\x92\x93\xfd\x8a\xf3\xd6\x68\xfa\x1d\x69\x77\xa5\x0f\x66\xf3\xb5\xdb\x1d\x2a\xfe\x5f\x1c\x6c\x2e\x87\xd9\x77\xfe\xda\xc8\xd6\x55\xb9\xf7\x1b\x0a\xe1\x6d\xb5\x6f\xc0\x54\xd5\x05\xa1\x8d\xec\x74\x7f\x79\x14\xf9\xde\x5d\x94\xde\x2f\xad\x99\xa1\xc8\x76\xc9\x76\xa9\x9e\x8c\xa7\xd0\x0d\x01\x27\x94\xdb\x2e\xfe\x27\xee\x64\xc7\xdc\x41\xe5\x53\xab\x44\x88\xb2\x1c\x7a\xb2\x64\xb8\xfa\x76\x01\x57\x90\x6d\xa1\x72\xb6\x03\xfd\x5b\xcb\xc4\x8a\x2f\xc6\xbe\xbb\x48\xe5\x69\x2a\x0e\x88\xb5\xa0\x01\x93\x03\x74\x21\xb3\x1f\xd1\xfb\x1f\x1c\x40\x79\x12\x06\xa9\x7c\xd5\x98\xb6\x39\xef\xb5\x7a\xfe\xda\xf7\x03\xf9\xbb\xcc\x33\xec\x3f\xbc\x09\x9f\x49\x4a\x7b\xcf\x14\x39\x11\x37\x5d\x1a\x0c\x1b\xa9\xfa\x38\x86\x4d\x9d\x62\x1e\xb9\x76\x41\xfe\x3c\x4c\xb7\x0d\x7f\x71\x96\xe7\xe6\x5d\x76\xa2\x68\xb1\x60\x23\xfa\x73\x84\x33\x2d\x7f\x4a\x98\x61\x76\xd9\xd5\xe9\x24\x70\xfe\xd3\xfb\x8e\x46\x14\xfe\xa8\x58\xa0\x32\xef\x0f\x82\xa1\x86\xf7\xb1\x9a\x7b\x9f\x2c\xc1\x0c\x45\x31\x0c\x57\xc7\x10\xdc\xbf\xdc\x54\x46\x97\x3e\x54\xe4\xd3\x20\xb3\xc9\x33\x2d\xff\xfe\x6d\x6d\xb3\xd4\xc4\x47\x9b\x07\x46\x8e\xb8\x2b\x5a\xa8\x43\x14\x3c\x66\xfc\xc1\x8e\x0d\xa2\xf0\xbb\xca\xd5\xac\x1c\xab\x9c\xeb\x83\xb6\x83\x4d\x14\x4e\x61\xa2\x65\xa8\x78\xdb\x3f\xcc\xa7\x73\xd5\x79\x31\x76\x9d\xcd\xf4\x65\x9c\xbe\x25\x97\xf6\x3b\xdc\xbb\xee\xf2\x51\x53\x61\x21\xb9\xc6\xfb\xee\x34\x38\x61\x08\xc4\x75\x54\xdc\xa9\x2c\x20\xaf\xff\x83\xc5\x39\xc9\x1e\x46\x1c\x91\xd4\xc3\x7a\xc0\x03\x83\xc5\xe6\xdb\xaa\xa9\xad\x7e\xd8\xcf\x4d\x55\x8a\xfb\x35\x88\x6c\xf9\xf4\x45\x79\x60\x4b\xc1\x0f\xa9\xd1\xf1\x6b\x98\x3a\xde\x1f\x1d\x18\x35\x3a\xc3\xf7\x9d\x5b\x9e\xf2\x29\xe9\xc6\xd9\x06\xa6\xd4\x21\xc8\x85\x48\xd7\x23\x1d\xbc\x8a\xa9\x1a\xdf\x94\x75\x76\xb7\xee\x15\x75\xd8\x17\xc0\x6e\x26\xfc\xe1\xfd\xe3\xe4\x22\xff\x94\xa2\x26\x1b\xe7\x00\xda\x9c\x0f\xd3\x90\xd5\x3e\x6d\xc1\x75\xae\xc7\xa6\x43\x25\xd8\xfc\x85\xe2\x60\xe4\x79\x6f\x73\xd4\x29\x0e\x86\xd9\xe6\xb8\x8e\xce\x4e\x3d\x76\x33\xc1\xf0\xfc\x27\x07\x97\xa0\x62\x1c\xff\xd5\xa6\x03\x9c\x6a\xba\xfa\xae\xd9\xba\xcb\x6c\x53\x98\x3a\x2e\xd3\xc7\x07\x3b\xb5\x74\x11\x31\xf2\xeb\x61\x93\x52\xe6\x69\xb6\xb9\x98\x7d\xd0\xb6\x36\x76\xae\x8a\x8a\x9a\xb8\xff\xcf\xef\x81\x79\xf9\xa5\x8d\x80\x36\xef\xd7\x44\x9b\x0e\xf4\x56\xe1\xf3\x9b\xb3\xce\x1f\x91\x84\x6b\x20\xeb\x35\xf3\x30\x1c\x52\xfb\x30\xda\x4a\x45\xa7\xe2\xd9\x45\xb5\x78\xdb\xdd\x38\xa8\xb6\xe1\x3a\xec\xf8\xa3\x6b\xb9\x47\x68\x29\x84\xc1\x2b\x94\x9b\x8a\xda\x0e\x07\x38\x14\x13\x54\xbc\xf7\x5c\xfe\xb8\x43\xa2\x2c\x42\x22\xb7\xc4\xb2\xae\xf3\x7e\xe0\x58\xa5\x1c\x75\x4a\xc4\xee\x3c\xee\x19\xd9\x7e\x03\xee\x9f\xce\x67\x1b\xc5\x75\xc5\xbd\xfc\x1e\xb0\x26\xee\x6f\x4c\xcb\x3b\xf7\x9f\xbd\x7c\x8a\x71\x49\xb8\x0e\x42\x34\x5b\x4b\x79\x9d\x66\x30\x4b\x9b\x07\x37\x08\x55\x3f\xff\x30\x6d\x85\xbf\xfa\xc2\x26\xe0\x8b\x7d\x4d\xe9\x7f\x7b\x97\x34\x65\xe3\x45\x7a\x5a\xf8\x6b\x35\xae\xb5\x0d\x02\xfb\xc2\x38\x62\x14\x60\x95\xe4\xba\x9c\x76\xaf\x8c\x91\xcb\xec\x62\x2d\xa1\x02\xc3\x61\x3c\x58\x1e\xd5\xc1\xf4\xf4\xa5\xa0\xd1\xbb\xe5\x53\xbe\x1d\xc5\xe1\x7f\x38\x42\x39\xf6\x2b\x62\xb6\xeb\xb5\xb6\xe8\x46\xf8\x91\x5a\x91\xaa\x8d\xc4\xd9\xad\xf9\x5b\x27\x36\x2f\x25\xcf\x18\x04\x19\x5c\x7e\x92\x8a\x73\xbc\xc2\x6f\x0a\xb9\x07\xd2\x69\xe9\x3b\x18\x1e\xa3\x34\x03\x64\x0d\xca\x53\xbd\x4d\xab\xae\x61\xdb\xff\xc5\xba\x6b\xfd\xa2\xb4\x64\x7d\x1a\x86\xcf\x70\xd0\x4e\xf3\x3c\x0d\xb4\x4f\x80\x99\xfa\x95\xcc\xd7\x2c\x35\xb8\xe9\x07\x77\xa6\x2f\x79\x36\x9e\xcb\x3d\xb9\x80\x43\x00\xcf\x81\x79\x5d\xa5\xb3\x1e\x53\xfc\xe0\xb4\x8c\x76\xab\x39\x43\xe9\x79\xe7\x96\x02\x6c\x1e\x45\xd8\x75\x81\xd3\x25\x88\x21\xd6\x73\xda\xdb\x2a\x96\xc8\xed\x08\x47\xdc\x5d\x7d\xa8\xba\x2d\x54\x1f\x67\x99\x21\x4f\x89\x9a\x4f\x72\x3b\xad\x98\x2a\x94\xe0\xd0\x9d\xa4\x18\xdc\x66\x5f\xf9\x87\x4d\x7f\xfb\x04\x3a\x1a\x20\x15\xfa\xb5\xd0\xc0\x4b\x44\x19\xfd\x77\xce\x58\x4d\x75\x35\x57\xd7\x6c\x4a\x31\x1b\xb4\xd1\x09\x92\x8f\x41\xaa\xc1\xcb\x02\xd7\x1c\x99\xf2\x70\xaa\xde\xd9\xdf\x7b\xd6\xf3\x04\x31\xe5\x1e\x6a\xe9\x36\x30\xcf\x9d\xf0\x6c\x5e\x53\x89\x34\xd5\xfd\xce\xf5\xc3\x40\xdf\x3c\x77\x66\xc1\x2a\x67\x29\xba\x99\x21\x4d\x55\x4b\x50\x25\xcf\x6d\x2d\xc6\xe8\x8f\x4e\x6d\x91\x57\xff\x8c\xa8\xea\x50\x16\x01\x81\x28\x10\xf0\x92\x26\xfb\x27\x52\xaa\xaa\x05\x7d\xbf\x70\x48\xf8\xca\x42\xdb\x2f\x50\x35\xbd\x5d\x57\x38\x0e\xf4\x4e\x86\x97\xd8\xb4\xd2\xe8\x59\xe8\xad\x21\x8c\x1e\x7c\xde\x95\xcd\x91\xb4\xc5\x9e\x77\xcb\xbf\x24\x26\x5c\xab\xc7\xbe\xcf\xdf\x7b\xe3\x0c\xcb\x7c\xda\x40\x69\x7b\xaa\x77\x5a\xe2\xe9\xa0\xa8\x49\xda\x79\xc2\x5f\x00\x42\x32\xc2\x55\x13\xd8\xf2\xad\x9b\x71\x16\xac\xec\xbf\xd9\xde\x8a\xcc\xec\xb2\x92\x00\x49\x92\xb3\x77\xaf\xe4\x15\xcb\x0b\x5b\x2d\x6c\x2a\xf7\x18\xc6\x21\x5b\xb0\x9e\x63\xb5\xcf\x9f\x44\x1a\xc3\x29\xb2\xab\xd4\x48\x91\xf6\xa6\x91\xbf\x38\xaa\xe1\xb6\xae\x25\x26\x7b\x59\x30\x79\x08\x04\x27\x2f\xe5\xa7\x26\x6b\x9e\xe0\x14\xa9\xcb\x8e\xe1\x63\x48\x1c\xa7\xde\xf8\xd8\x69\x3a\x5c\x7d\x2e\x59\xd3\xa6\x75\x97\xaf\x72\x71\x50\xac\xf8\x33\x28\x93\xb4\xe5\xab\x45\x8b\xe2\x5e\x2b\x1e\x6b\x91\x76\x60\xc4\xf5\x46\x6b\xab\x29\x73\xd3\x89\xcc\x1c\x5a\xf4\xda\x49\xa5\x1f\x8f\xb4\x1c\xa1\x07\x89\x9b\xf4\xb8\x63\xe3\x48\xf8\x1f\x54\x77\x2f\xcb\x7b\x64\x8b\xca\xaa\x77\x71\xef\x69\xa6\x85\x24\x2a\x77\x2b\x0a\x34\xfb\x73\x8d\x8e\x79\xfa\x7f\x75\x05\xa3\xc8\x89\xa4\x33\xb1\xa9\xee\x39\x26\xce\xb4\x6c\x30\xaf\x7f\x5e\x9f\x12\x07\x2d\x1c\x2d\x90\x3b\xf7\x0a\x87\xe3\x3d\x1c\x4d\x45\x70\x7f\xee\x4d\x18\xed\x5a\x53\xb6\x95\xb4\x16\x2d\x4f\x39\xde\xf6\x21\x4a\xa6\xc8\xc6\x32\x8e\xc4\x1c\x94\x4a\xce\xf5\xe1\x54\x64\xca\x12\x9a\x9c\x3a\x8d\xbf\xcb\x71\x4e\xbc\xcd\xcd\x40\xcf\xe6\x68\xc8\xb6\xbb\x9a\xfc\x59\x4f\x73\x6b\x3e\x92\x83\x8c\xd0\x93\x84\xf9\xed\x94\x55\x03\x7c\xe9\x8c\x90\xd0\x33\xae\xc2\xf5\x10\x37\x2e\x56\x4d\xe1\x57\x84\x94\xec\xae\x8b\x59\xed\xbb\x93\xd6\x18\x3c\xe6\x66\x7f\x72\x41\x8b\xdf\xf5\x69\x43\x6e\x73\x97\x46\xe9\xf9\xef\x70\xff\x9d\xac\x53\x61\x6b\x23\x4c\x47\xeb\x04\x52\x62\x20\x69\x8f\x75\x47\x14\xc2\xf4\x35\xc1\x60\x97\xf0\xe7\xbc\x2c\xf6\xd2\x39\x04\x32\xf7\xad\xef\x18\xe5\x97\x6c\x24\xb3\xf8\x19\x42\x3d\x45\xca\x20\xe5\xed\xac\x57\x8d\xc6\xfc\x24\x50\x07\x77\x8f\x97\xab\x6f\x98\x6d\x61\xa1\xef\x25\xa9\xb5\x67\xc3\xb6\xa5\x22\x83\xfa\xdf\xba\x4a\x46\xe0\xcf\x6c\xfe\xb8\x19\x5f\x69\x0e\x15\x74\x9e\xa9\xac\x04\x7e\x94\xb3\x69\x7b\xa7\xd6\x20\xf2\x05\x46\x67\xbb\x0a\x31\x1a\xe1\xcf\xf9\x58\xb4\xd2\xd9\xbb\xb9\x9e\x98\x4e\xa7\x9d\x79\x54\x64\x6c\x8c\x5f\xb7\x24\x0b\xa8\xd3\xfc\x27\x5e\xe2\x5a\x2a\x91\x49\x80\x46\x85\xc6\x23\xc4\x61\xe0\x53\xe0\x89\xfe\x2f\x86\xc0\x70\xcc\xa9\xf1\x82\xf7\xc9\x1d\x22\xf6\x3b\x7c\x84\xd4\x66\x63\x45\x3c\x3c\x65\xb4\xb7\x3d\x02\x8c\x90\x03\x3d\x88\x1c\x99\x21\x69\x09\x35\xb5\x22\xac\x27\x72\x9e\x23\xdc\x86\x6e\x05\x26\x3c\x66\xe1\x52\x4e\x09\xbb\x24\x67\xbc\x24\x52\x39\x2a\x69\x66\x4c\x02\xcf\x16\x78\x66\x0b\x21\xc7\xd6\x9c\xbf\xbe\x09\xa3\x70\x58\x67\x2a\xb1\xe0\xf9\xd6\xa4\xf0\xe1\x77\x58\x4d\x77\x0d\x3d\xfa\x20\x21\x20\x7e\xe8\xda\x63\x64\xac\xa1\x04\x69\x39\x81\xca\xb9\xd5\xfe\x93\x6d\xa6\x2b\x7d\x61\x64\xbd\x01\xfb\x05\xf0\x25\x8b\x70\xc5\x41\x25\xe6\x42\xcc\x4f\x9a\xea\x52\xa6\xcd\x9b\xd2\xff\xb2\xf7\xd8\xe1\x64\x76\xc7\x30\x0b\xc3\xe3\xc5\xdf\xa3\xa4\x34\x3a\xd1\xb9\xfd\xd7\x70\xc3\x8e\xcc\xd3\xdc\x14\x50\x84\xde\xe9\x78\xa5\xd1\x99\x29\x5f\xdb\x02\xd6\xf2\x1a\x39\x48\x3e\xed\x78\x05\xe2\xe7\xb6\x3d\x60\x06\xc6\x2c\xb7\x53\xd8\xdc\x32\xf8\x90\xd3\xb1\xfa\x5c\xd4\xe7\xae\x43\x80\xee\x24\x23\x4b\x76\xe1\xee\xc0\xb7\x25\x55\x96\x9d\x66\x5a\x72\x3a\xdb\x60\x15\x16\x7e\x4e\xff\x25\x50\xe6\x61\x4c\x4b\xb8\xd8\xbf\x1b\x29\x0b\xb7\x64\xbb\x33\x94\x4e\xe9\xcb\xa5\x7e\xb3\x65\x7b\xc8\xb5\x90\x35\xa2\x90\x9d\xc0\x66\xfe\xa5\x18\xdb\x73\x4b\x3a\xc3\x9c\x1b\x8c\xab\x85\xfb\x68\xd9\x47\x98\x68\x31\x7a\x79\xd3\x4e\x10\xd6\x31\xd8\xd6\xc8\xe2\xa1\xe4\x93\xa7\x09\xbc\x83\xe5\x00\x45\xee\x50\xce\x63\x2d\xd3\x80\xb6\xb2\xde\x28\x9b\xd4\x12\xbe\x25\xb9\xb1\x67\x81\x58\xf8\xd1\x21\x1c\x84\xfa\x56\x8b\x78\x31\x3b\xe8\x73\xc8\xcd\x70\xb6\x09\x79\x49\x8f\x47\xaa\xba\x38\x5c\x08\x4e\xcc\x87\x27\xd9\x02\xb6\xe7\xe5\xe3\x71\x01\xdf\x17\x24\xe4\xcd\x56\x07\x93\xe1\xe0\xce\x55\xa3\x15\x89\x0a\xbe\x2d\x42\x80\xca\xaa\x1e\xd4\xb1\x68\x39\xf3\x73\x3a\xc9\x21\x59\x86\x72\x16\x68\x72\x0c\xd3\xe5\x35\xd5\xd6\x52\x77\xe4\x4c\x1f\xcc\xef\x30\x9c\xb1\xfe\x57\xae\x2a\x76\x30\x3d\x45\xed\x75\xdd\x4e\x07\x93\x3f\xf6\xe7\xcd\x17\xcc\xac\x3b\xcb\x2c\xe8\x8c\x9c\xab\xf7\xaa\x72\xf2\x2b\x0b\x28\x64\x5f\x2f\xab\x46\xea\xba\xc2\xc0\x1e\x16\x53\x3f\x8b\xb2\x02\x9b\x5c\xda\x01\x34\x61\x7d\x8e\x0c\x31\x57\xb5\x06\x53\x7b\xef\x7c\x5b\xdf\x87\xf5\x10\x4f\xe0\xf1\x95\xf8\xd7\x9c\xd1\xff\x9b\x53\x1c\x8c\xb4\x71\x5a\x85\x1a\x7a\x63\x40\x3b\x08\x2f\xa2\x1d\x1f\x47\xa2\x6a\xc9\x5a\xc6\x41\x88\xae\x69\xa5\x86\x81\x1a\xa4\x81\x7e\xc8\x74\xd5\x1f\x87\x15\x81\x10\x0d\x12\x1c\xb4\x44\xcb\xb7\x80\x3a\x1a\x98\x0d\x56\xd1\x5c\x98\xf8\xf8\xd9\x12\x6a\xae\xaf\x57\x0b\xae\x19\x05\xa1\xda\x97\xc0\xad\x3d\xe7\xa9\x57\x12\x41\x8d\x7d\x61\x7f\xb7\xfa\x36\x8e\xdd\x71\x95\xde\x81\xea\x68\x50\x1e\xf7\xe3\xfb\x3c\x29\x9b\xd3\x49\xd5\x1f\x2a\x6e\xf0\xcf\x7a\xa0\x66\xe0\xa3\x5d\xe7\x28\x4e\x47\xc4\xd2\xf5\x12\xb8\xe0\x32\x5b\x98\x6d\x70\xb4\x72\x8a\xb8\xe5\xc8\x76\x95\x72\xa4\x1e\xc3\x59\xe3\xd5\x52\x6c\x32\x43\xf8\xaa\x34\xc2\x51\x6a\xbf\xd1\xea\xa4\x29\x16\x16\xdb\x21\xce\x94\x48\xea\x36\xbb\x9a\x51\x97\xf9\x8a\x83\x35\x75\xd1\xfd\xcd\xad\x32\x8e\x7e\x43\x51\x87\x3e\x8a\x3a\xca\x69\x39\xf6\x47\x40\x41\x52\x02\xed\x0f\x98\xe1\x3b\x35\x1d\xdb\x8a\x6c\x38\xa1\x12\x6e\x90\xf4\x87\x1a\x0e\x35\x9a\xe7\xf5\x73\xa0\xe6\x1b\xe1\xcc\x25\xde\xd5\x14\x47\xe7\xbd\x70\xb3\xcb\xb2\x82\x90\xf1\x4e\x99\x7f\xdb\xa8\xcc\x27\x0e\x1e\x63\x85\xf3\x1a\x9f\xdb\x7b\x8e\xf8\x77\xa6\x19\xc6\xc5\xf8\x8d\xe0\xd9\xd7\x57\xed\xd4\x52\x85\xc9\x4b\xb7\x18\x3a\x43\xc3\x69\x25\xee\xca\x5f\x3c\x5b\x42\x75\x31\xad\xa5\xbf\x7b\xe1\x1c\xa0\x82\x80\x94\x9c\xc7\xe2\x35\xe6\x74\x88\x40\x2b\x7c\x9c\x28\x5a\x16\x18\xd7\x84\xee\x54\x0f\x26\x4b\x81\xe6\xe7\x0d\x96\x29\x91\x37\x8e\xe1\xaf\x88\x71\x3c\x06\xfc\x53\xaf\xc8\x30\x9c\x76\x8d\x2a\xa3\x3d\x5e\x63\x5c\x8f\x77\xb4\xfd\x28\xf8\x6b\xe9\x6b\x06\x5e\xb6\xc7\x59\x01\x62\x16\x81\xe5\xb8\x83\x0f\xca\xcb\xce\x2a\x12\x03\x64\x52\xd1\xab\x11\x00\x3c\x67\x08\x60\x83\xe6\xb1\x9b\xdf\x60\xe1\x54\x02\x2e\x8a\x34\xc3\xae\x97\x0a\x0c\x2e\x71\x96\x85\xa9\xdb\x1f\x03\x2f\x24\x7a\xd2\x88\xa9\x9a\x32\xf8\x26\xdc\x95\x45\x93\x56\xb5\xde\x1a\x1a\xff\x1f\x57\x6f\xb1\x2c\xbb\xb2\x73\x8d\x3e\x90\x1b\x66\x6a\x9a\x99\xd9\x3d\x97\x99\x19\x9f\xfe\xc6\x5a\x7b\x7f\xe7\x9c\xff\xc6\xec\xcd\x08\x57\x65\x65\x4a\x1a\x63\x28\x65\x89\x70\x1d\xad\xac\xb4\xee\xf6\x39\xe3\x8d\x5a\x03\x34\xaf\x89\x22\xa7\xe2\xfb\x89\x87\xfa\x30\x0a\x6d\xff\x98\x54\x1c\x91\x02\x3f\x95\x1d\x5a\x87\x60\x1d\x83\xd2\xa4\x07\x5e\x1d\x8c\xe5\x30\x17\xc1\x29\x14\x8e\xfa\xef\x79\xd5\x4c\xbd\xaf\x61\xad\x72\xf7\xc4\x19\xca\xe7\x66\x42\x07\x50\xc4\x12\xac\xbd\x98\x99\xa9\xd2\x67\x25\x1c\x4b\xaf\xbb\x7c\x52\xe2\xdf\x1f\xe7\x56\x64\x09\x1f\xe8\x49\xdf\x00\x19\xbe\x95\x49\xfd\xe1\x17\x32\x83\xcb\xbf\x61\x3d\x86\xd3\xab\xea\x94\x7d\x27\x0d\x8a\x38\x1a\x27\xa4\xdc\xd2\x0c\x22\x73\xec\xe5\x3f\xe5\x23\x0c\xc3\x8b\x40\x3c\x68\xc1\x1b\xb9\x82\xcc\xab\xbc\xd7\x64\xb6\x0b\x3a\xc8\x0d\x7c\xd7\xa6\x43\x43\xff\x4d\xfc\x0c\x1c\xa2\xa9\x4f\x45\x1d\xb0\x75\x24\x5e\x33\x99\x0f\xaa\xa0\xb8\xdc\x5c\xf0\x5b\xc1\xf5\x79\x52\x4f\x52\x94\x85\xde\x1a\x7a\xb3\xb3\x60\x4d\x30\xd5\x2b\x87\xf0\x49\x83\x96\xff\x17\x80\x18\x46\xf0\xd8\x46\x68\x46\xcf\x8c\x5b\xca\x69\x53\x5f\xfa\x39\x13\x11\x9f\x65\xa5\xfe\xa2\x2a\x9d\x4c\x76\xe9\x8d\x61\xea\x51\x40\xbc\x4f\x93\x0c\x0d\xdb\x2d\xa7\x00\x3e\x0b\xc2\x99\x52\xca\xc1\x35\xfc\xe9\x53\xfc\x7d\x08\xbe\xe9\x10\xed\x89\x58\x46\xf6\xd8\xea\xbf\x18\xa9\x30\xd8\x1f\x3e\x90\xde\xd1\x63\x21\xa5\xfe\x70\xc6\x15\x7f\x3e\x6f\x9f\xa6\xd9\x92\x13\x3d\x71\x6d\x8a\x87\x22\x4e\x12\x3a\x44\x5c\x21\x7e\x95\xe4\x39\xd1\x44\x2a\xcd\xb8\xcc\x39\x63\xaf\x3e\xcd\xa0\xbf\xbc\xc5\xfb\x5c\xaa\xe7\x53\x51\xd5\x72\xfd\x3f\xee\xcc\xb7\x86\x7a\x99\xa6\x12\x55\x63\x39\x9a\x69\x38\x76\x77\xca\x67\x55\xc4\xce\xc8\x78\xbf\x6e\x41\x75\x3d\x11\x02\xdb\xab\x41\x52\x0f\x43\x12\x34\x56\x1f\x5d\xfd\x7e\xa8\x51\x83\x3d\x57\xef\xe5\xf8\x7b\x70\xa6\xd7\x52\x69\x38\x0a\xcd\x30\x20\xe2\x4b\x1d\x46\xdf\x6a\x8b\x39\x14\xe5\xd2\xff\x63\xcb\x8c\x35\xae\xaa\x91\x36\x76\xdb\x9b\xc9\x2e\x4e\xe6\x2a\x62\xb4\xec\xf2\x15\xaf\x32\x1d\x97\x6d\xa1\x96\x64\x54\xfb\xe3\xd3\x1f\x6d\xa0\x48\x31\x83\x31\xf1\xa0\xf3\xed\x7e\xf6\x09\x2c\x45\xdd\xf2\x10\xba\xda\x31\x01\x84\xef\x18\xb8\x65\x7b\xfb\xdd\x26\x3a\x2b\x0b\xf4\x05\x37\x4e\x6c\x77\x2a\x7f\xcc\xe8\x7f\x7c\x95\x77\x71\xb3\x39\x38\x41\x27\xa4\xb5\x1e\x8b\x4a\x73\x55\x73\xf8\x7d\x03\xb1\x84\xd6\x0a\x45\xe7\x20\x78\xd9\xe0\x10\xb2\x3b\x91\x02\xdd\xf5\xf4\x0e\x3a\x1a\x6d\x85\x24\xb4\x3d\xb2\x44\x9b\xef\xa8\xf5\x83\xa7\xfe\xa2\x49\x92\x82\x4b\x81\x70\xa8\x90\x6f\xcf\x09\xff\xd7\xbe\x4c\xa1\xd6\x53\x3d\xda\xd8\x44\xc5\xbd\xc0\x2c\x37\x38\xd7\xdb\xca\xd2\xed\xfe\x10\x7e\xc9\x07\xc3\xbd\x5e\x9f\xdc\x5a\xa0\x32\x5d\x4e\x01\x62\xfe\x06\xba\x9a\x40\xc8\x8e\x7e\xbe\x54\x9e\xb0\x50\x96\x5f\xbf\x5f\x83\xb5\x40\x16\x49\xe5\xd0\x12\x3a\x2b\x80\x3f\x7f\x80\x1d\xc3\xff\xa3\x31\x58\xc6\xe4\xb2\x2e\xf0\xfe\xc4\x3f\x72\x59\x6d\xe0\x25\x54\xef\x43\xb2\x27\xdb\xc2\x6c\x08\x85\xf9\x08\xdb\x4f\x97\x66\x78\x82\xad\xde\xca\xd3\x77\x43\x9b\x90\xee\xa8\xaa\xfb\x55\x05\x36\x9f\x74\x23\x19\x69\x6f\xf4\xcb\x4d\x70\x41\x92\xe2\x57\xa8\x2c\x88\x66\x75\xcc\x7e\x2a\xb3\x02\xd5\xe4\x7f\xb9\x3e\xc7\x8c\xe7\x8d\x84\x29\x6d\x79\xac\x5a\x2c\x19\xed\xaf\x28\xfb\x92\xa6\x61\x0e\x46\x7a\x2c\xe3\x4c\x00\x0f\x50\xa1\x26\x8a\x16\x0d\x6d\x5f\x34\x58\x5d\x08\xf2\x47\x37\x35\xaa\xb9\x71\x61\xa2\xbe\x03\xc4\xe5\x51\x72\xdd\x8a\x23\x63\x39\x54\xa3\xff\xcf\x67\xab\x42\xe5\xf5\x41\xd6\x85\xeb\x10\x08\xc7\xfb\xd8\xdd\x30\x7b\x25\x92\x9c\x21\x85\x22\x53\x66\x3f\x80\xfd\xe4\xcd\x13\x93\xc8\xaa\x90\xfb\x5f\x3f\xcc\xf5\x2e\x4f\x68\x55\x2b\x18\x56\x33\x76\x2a\x6c\x87\xf3\xb7\xb0\x6c\x2d\x78\xa9\x82\xb9\xce\xb2\xb0\x77\x9e\xfd\xc7\x0d\x45\xf3\xf4\x6b\x4c\x53\x08\x27\xee\x5b\xf7\x08\x57\x0f\x6a\x76\xb8\x37\x75\x65\x47\x80\xca\x52\xb7\x92\x3c\x56\xa2\x6c\x81\x4d\x95\x12\x41\xe1\xe9\x22\xfd\x20\x8e\x79\xd8\xd1\x6c\xfa\x1a\x2f\x31\x06\xaa\xaf\xff\xe2\x5c\x2b\x8c\x4b\x68\x75\x30\xa1\x21\xb1\x7f\xb9\x84\x1c\xaa\x99\xe1\xb1\x2a\x34\xfe\x0e\x84\x16\x03\x41\x71\x6b\xc3\xec\x26\x7f\x0b\xb5\xa5\x90\x66\xe1\x27\x37\xc6\x72\x18\x60\x4e\x33\xb5\xea\x0f\x78\x99\xd4\x9c\xca\x22\xff\xc5\x6c\x86\xe9\x3d\x51\xec\xfb\x64\x6e\x37\xb5\xcd\x62\x6b\x2f\xf8\xb5\x70\x56\x01\xc3\x29\x73\x37\x1b\xa7\x68\xeb\x50\xed\x8f\x14\x48\x5f\x96\x79\x27\xf5\xcb\x6d\x4e\x36\xed\x3b\x77\x99\xff\x73\x24\x96\x89\x85\xd6\x5d\x58\xe9\x43\x72\x57\x39\xf2\x14\x8d\xba\x66\x3a\xa2\x88\xf6\xd7\xc2\x49\xe4\x01\xe8\x6c\x87\x98\x42\x6d\x71\xd8\xcf\xab\x7b\xad\x31\xd8\xcd\x0d\xdd\xd8\xe3\xff\x87\x77\x2b\xbc\xf6\x21\x89\x4b\xc8\xd1\xc8\xa6\xe1\xf8\x71\x5e\x54\x62\x84\xea\xad\xbe\x93\x7d\x01\x0f\x7a\xb8\xd2\x0f\x67\x25\xbf\x09\x19\xd2\x48\xdf\x9a\x54\x69\x29\x02\x43\x38\xd3\x7f\x75\xd6\xa3\x14\x82\x17\xae\x37\x92\x3d\xf3\xd2\xcc\x20\x40\xb1\x8d\xa9\x8e\x86\x6e\xec\xb5\x6b\x8b\x8e\xb6\x84\x84\x1c\xce\xd9\xa2\x48\xd4\x25\xde\x02\x53\x28\xee\xff\xe8\x9a\xda\x9e\xf3\x8e\x87\x24\xc7\xd2\xff\xec\x9f\xb9\x0a\x49\x85\xfd\xe1\xdb\x35\x4c\x56\x20\x4a\x64\x4b\x0b\x8f\x06\xa0\xf8\x36\x7e\x99\xde\x20\x2a\x49\xd0\x67\xf7\xc7\xe0\xc5\xfa\x41\x0d\xe9\x09\xf5\xbd\xff\x87\x03\xea\x6f\x25\x7f\x1d\x9b\x98\xed\x51\xa8\xc2\x94\xed\x79\x5a\xd9\x6c\xb6\x2d\x31\xc5\xc1\x88\xf2\x28\xc4\xbe\x71\x73\xda\xe4\x5a\xca\x12\x7b\x41\x9d\x18\x2c\xa9\xb7\xa9\xf8\x5f\x63\xfc\x07\x9f\xec\x66\x6e\x77\x35\x73\xda\xfe\x93\xea\xe7\x1d\x9d\xe7\x11\x98\x83\x87\x50\x68\x3d\xf3\xa3\x37\x56\x83\xbd\x9c\x45\x4c\x3e\x25\x4d\xd3\xf6\x11\xe6\x74\x6b\x5a\x96\x56\xfc\x7f\xdf\x51\xfa\x3b\x1d\x59\x84\xda\xc8\x79\x78\xc9\x82\xa3\x86\x91\xf3\x74\x32\x97\xb3\xd9\xd4\xf5\x89\x38\x64\x25\x5b\xac\xee\xbd\xf4\x79\xfb\xf7\xd5\xe6\x4b\x7d\xf3\x87\x91\x3d\x33\x57\xbb\xff\x10\x69\x96\x51\x4e\x7f\xc0\x57\x0e\x6b\x78\x3f\xfd\xf9\x89\xd1\x95\x8d\xd2\x9f\x37\x4d\x10\x6c\xa0\x0d\xf2\x2f\x8e\xdd\xf5\x08\xd7\xc9\x81\xbd\xe1\x95\x32\x78\xe7\x5e\xdd\x12\xb8\xec\xde\xf3\xe6\xff\x3e\x45\x65\x7c\x7d\x9f\xb2\x9d\xc6\x9d\xf2\x08\x57\x51\x95\x2c\x4e\xb2\x5d\xe2\x0c\x1f\x4b\x50\xfc\x22\xed\x03\x48\xa8\xa5\xa9\x58\x7d\x75\x4c\x01\x5b\x11\x78\xe2\xee\xfe\x7d\x77\xef\x8f\x2f\xad\x01\xe3\xb9\x96\xaa\x04\xfd\xfb\x60\x04\x32\x31\x43\xbf\xc3\x23\x1c\xad\xb0\xb7\x06\xce\x2c\xd4\xd2\x50\x7b\x9e\x32\xb7\x8d\x6c\xaf\xcb\xe2\xf8\x9b\x9d\x24\xce\x7f\x21\x71\xf7\x9b\x57\x0b\x17\x69\x92\x1c\x7e\xbe\xd2\x8e\xcb\x64\x2e\x0b\xdd\x15\x35\xbf\x9c\x49\xda\x3a\x78\xa4\x19\xd2\x1a\x87\x7d\xfb\x1b\x21\xbe\x77\x60\x73\xb6\x50\xd2\xff\xda\x07\xe7\x68\xcc\xc7\xe3\x1c\x1b\x6b\xec\xf0\x9e\xf9\xb3\x9b\xad\x60\xb5\x49\xfa\x39\xf3\x18\x8d\xb8\xc5\xa3\x6b\xe5\x61\xb1\xdf\x5a\xad\xa8\xfc\xfe\x87\x67\x38\x8c\x12\xe2\xfc\xee\xb0\xca\xa4\x38\x61\xe2\x1a\xb3\xca\x29\x7e\x9e\x76\x49\xcb\x8b\x26\x03\x4d\x25\xcd\xe4\x6e\xf8\xff\x7b\x46\x1f\xf0\x32\x7a\x79\xc5\xc0\x16\xf5\x73\x13\x91\x6b\x34\x3e\xed\xb9\xf5\x0a\xef\x55\x1b\x9b\xdb\xef\xf1\x33\xb9\x2d\x43\xe5\xc7\xde\x04\xfe\xe3\xd0\xac\xa6\x2c\xe7\x40\xe9\x9c\x68\x9b\x69\x3a\xfc\xfc\x64\xc3\x6a\x26\xad\x5f\x5f\xbd\xcc\x3b\x7f\x38\x79\x68\xeb\x35\xe7\x18\xad\xb7\x80\xff\xc9\x1d\xe8\x82\xc6\xe1\x22\xe3\xfd\xe4\x5c\xe6\x0f\x51\x71\x0c\x46\x0a\xa2\x21\x68\x7a\x93\xdd\x9d\xa6\x29\xdd\xb7\xf4\x48\x2b\xe8\x79\xe2\x26\xf2\xff\xf8\xad\xaa\xfe\xcc\x6c\x88\x96\x50\x69\xf8\xb5\xe9\xa0\x72\x0b\xb3\xce\x6f\x18\xb6\xc1\x7f\x3f\x31\x0d\xa2\x60\x6c\x98\x31\x07\xa2\x66\x61\xd8\x9e\xfd\xdf\x75\x9e\x82\x59\xd5\xcb\xdd\xe9\xc6\x94\x91\x7c\x2c\x31\x9d\xe0\xba\xa1\x84\x59\x70\x0b\x4c\xe4\xce\x59\x19\x66\xd4\x06\x86\xf5\x1c\xf3\x1f\x6a\xd3\x47\x83\xd8\x30\x89\xe6\x08\x5b\x8f\x9f\x59\xbb\x33\xcd\x60\x6c\x61\x92\x76\xc1\x4f\x50\xaa\x01\xb2\x56\x48\xed\x93\xd2\xa8\x0d\x5a\xf9\xbf\x87\x3c\xbe\x3d\xc2\xd1\x82\x23\x96\x93\x55\xde\xc8\xba\x68\x86\xb5\xe3\x60\x9a\xcd\xfe\x6d\xbc\x96\xf2\xb2\xa8\xec\x8b\xde\x2a\xb5\xc3\x1a\xb5\xfd\x5f\x8c\x50\x19\xc3\xd3\x92\x7e\x0c\xee\x71\xa7\xcf\xbd\x65\xcc\xde\x56\x95\x9e\x02\xd5\x37\x70\x6a\x72\x8c\x5a\xed\x1e\x42\xb6\xe7\xa5\xff\xd1\xd9\x6c\xff\xca\x39\x91\x5a\x6d\x3f\xbc\x77\xef\xf9\xab\x63\x24\xde\x3e\x87\xce\xac\x4b\xc9\x87\x2d\x0c\x54\x26\x18\xb5\x99\xa3\xdc\x29\xf2\xff\x38\xaa\xc3\xfb\xa1\x20\x12\xa6\x96\xea\x62\xa6\xbb\x99\xe8\x28\x0c\xe1\xd8\xde\x1d\xed\xb0\xb6\xb8\xec\xeb\xcd\x84\x87\x09\x82\xc4\xfc\xbf\xcf\xb9\xaa\x17\xf4\x6e\xbd\x30\x82\xb6\xc4\xda\x8f\xcf\x86\x8a\xcf\xb1\xae\xbf\x70\x7b\xf6\xf9\x24\x10\x1c\x63\x3a\x31\xa1\x2c\xca\x6e\x7b\xf2\xb1\xcf\x46\x0d\x10\xa0\x6c\x8b\x8b\xb4\x37\x72\x45\xb2\xeb\xf5\x3f\xfb\xcb\xaa\xc9\xc1\x6f\x81\x63\x34\x50\xd4\x66\xc5\xe9\x0f\xde\x28\xda\xa5\x8a\xd9\xf4\xe5\xf5\x45\x03\x10\xe7\xb6\x7f\xd7\x5e\x1b\xd8\xf1\xea\x69\x38\x92\x68\x42\xf0\x8e\xa6\x85\x43\x93\x74\x9c\xca\xaa\xff\xab\x07\x71\x6e\xe0\x93\x36\x66\xa9\x49\xfd\x24\x25\x73\xef\x85\x54\xf0\x58\xbb\xe0\x67\xb7\x1a\xd8\x82\x99\x17\x3a\x16\x3a\x58\xc3\x3c\xb3\x2d\x4b\xc9\xfd\x0c\xf4\xa5\xca\x25\x64\x26\xf7\x1a\xe2\xb7\x60\xad\x12\x84\x98\x64\xdc\xed\xff\x2d\x90\x73\x8c\xdf\x4a\x9c\x17\x49\x83\x75\xa9\x56\x4b\x86\xa3\x24\xf6\xda\x1f\x55\x41\x09\x6e\x5e\x9d\x59\xe5\x3f\xe6\x15\x98\xba\x16\x95\xa1\x36\x9a\x1e\x96\x66\x18\xa2\xf7\xb2\x36\xc9\x3a\x93\x16\x14\xef\x4e\x07\x3c\x8a\x6a\x5b\xbc\x56\x5b\xce\x61\x97\xe4\x4a\xb0\xc2\xc5\xea\x0e\xa8\xe2\x18\x8f\x77\xdc\xdb\x11\x56\x99\x19\x13\xd0\x9a\x54\xb6\xf9\xcf\xef\x51\x78\x03\x2a\x26\x97\xaa\x4a\x10\xf4\x50\xf7\xfb\x54\xe2\x63\xbb\xfe\x41\x4c\xa9\x8f\x5c\x35\x2f\xe5\x46\x81\xa9\x46\xd4\x54\x5f\x6b\x1c\x64\x85\x43\xef\x7c\x3d\x7f\xf7\x3e\xfd\xd8\xbc\xfc\x18\xe6\xe3\x8d\x9f\xb2\x7a\xd9\xfb\xdc\xa2\x63\xd1\xeb\xd9\xc3\x92\x32\x4f\x70\xa9\x5f\x9d\x4e\x07\xe8\xc0\x0f\x20\x0d\xa6\xdd\x69\xd7\x75\x4f\xf8\x63\x8b\x27\xf2\xe3\x82\xff\x98\x31\xf3\x86\x6e\x16\xf4\xcf\x50\xf6\xd3\x8c\x6b\xe6\x82\x9c\xb2\xd2\x23\xdc\xf1\xcb\x2e\x11\xb5\xf0\x85\x04\xba\xdd\x37\xe7\x2f\xef\xbe\x6b\x9d\x8a\x54\x97\x92\x77\x24\x92\x14\x6b\x1e\x53\x5f\xaa\x01\x31\x45\x26\x98\x9e\xb1\xa7\x86\xd9\xe4\x18\xab\x97\xfe\xd7\x6e\xb9\x3e\x68\xd7\xb0\x1b\x9c\xa0\xde\x9b\xbd\xfc\x8d\xb8\x6e\x1c\x5a\x6e\x14\xf3\xd8\x65\xbf\x4f\x41\x4c\x3f\x18\xb7\x02\x90\xd6\x82\x16\x8c\x99\xae\x96\x7d\x9c\x39\xc5\xc0\x69\xc2\x0e\x89\xfa\x96\xd2\x58\x95\x4c\x8d\xa3\x45\x81\xe3\x3f\x85\xff\xaf\x89\xbe\x7e\xfa\xba\xec\xc8\x29\x9c\xa6\x23\xd9\xe7\xae\x5c\x44\x96\x6f\xe6\xf7\xd9\x6f\x29\x97\x52\xc7\x1f\xb3\x24\x09\x6d\x79\x4b\xf4\x03\x88\x30\x4a\xef\xf4\xf1\xe7\x3e\x3f\x21\xa4\x09\x2c\x1e\x53\xd8\x2c\xf4\x96\xc8\x0e\xf0\xd3\x69\xd3\xff\xf2\xdd\x5a\x72\x3e\x29\x81\xa2\xf6\x19\x1e\x41\x09\xb3\x2d\xc0\x5f\xb8\x9c\x1a\xa5\x9f\xbc\x6c\x93\x21\x5a\x71\x73\xde\x81\xd4\xca\xd3\xec\x87\xbe\x4e\x2a\xaa\xa1\xbf\x24\x35\x09\x3e\x26\x96\x4f\x19\x67\x29\x17\x26\x22\x5a\x6a\xcc\xba\x11\x87\xc5\x73\xb5\x04\x12\xc6\xff\xe5\x14\xc1\xc8\xf7\xad\xac\x08\x4a\x8c\xed\xef\xb7\xbd\xf9\x1a\x81\x13\xba\xd2\xfe\x2a\x3a\x85\x5c\xa0\xe6\x57\xa2\xaa\x55\x2f\xa0\x8c\x83\x3d\x7d\x98\xfd\xe8\x22\x7a\x83\xdb\xc9\x72\xf3\x99\xeb\x4e\xc3\x18\x14\x65\x3c\x29\xc4\x3c\x7b\x6f\xaa\x79\xca\xee\xb0\x46\xa3\xff\x6f\x8c\xe1\xfe\xf8\x65\x17\x64\xbc\x65\xf8\x70\x8f\x13\xed\x64\x8f\x56\x21\xf6\xa5\x04\x8d\xd3\xb1\x65\x70\x11\x7b\x0a\x0a\x59\x1e\x46\x36\x44\x88\x19\x35\x27\xaf\xb4\xdf\x12\x71\x0a\x5a\xbb\x27\xbf\x79\x5c\xf6\x61\x4a\x86\x99\x5a\x09\xba\x6e\xaa\x9c\x17\x0b\xee\xfd\x71\x0a\x83\x38\xfd\x27\xdd\x7f\x04\x1b\x04\xd1\x64\x19\x0f\x70\x11\x87\x70\x88\x16\xbf\x8c\xb8\x6c\x1c\x94\xf1\x4a\x61\x59\x05\x08\xb1\xe3\xbc\x08\x29\x2f\x6d\x39\x89\x1d\x86\x91\xd8\xc4\x9d\xa1\x19\x25\x8f\xcb\x06\x14\x67\xa7\xdf\x7c\xe2\x7d\x8d\xcd\xae\x50\x9b\x61\x09\x2d\xe2\x10\x2d\xba\x40\x55\x2b\xdd\x35\x9f\xcf\x71\xf9\x35\x76\xa0\xfc\x81\x85\x20\xfd\x85\x7d\xf9\x26\x90\xb5\x63\xef\x19\xbc\xac\xc5\x5a\x02\x12\x39\x1a\xab\x28\x85\xec\x42\x58\x66\x78\xd2\xdc\x36\x10\x3e\x3b\x46\xf3\x97\xdb\xb2\x4c\xb9\xb6\xc7\x1a\x4e\x00\x54\x69\x47\x44\x56\x11\x7c\xb8\x4a\x6e\x17\xe3\xa7\xbe\xea\x3f\xc9\x87\x27\x0e\x42\x99\x9d\x3d\x53\x06\x6d\x8c\x71\x1a\x81\x6f\xe9\x71\x87\x90\xc9\xcf\x70\xfa\x08\xc7\x03\x3d\x5e\x2a\xe7\x8f\x2a\x3c\xb1\x55\xe7\xf6\x30\x03\x0a\xb2\xff\x5d\x3f\x12\x74\x5c\x76\x14\x1e\x49\x97\x25\xb3\x9b\x0c\x1a\xbb\x5e\xf8\x32\xdf\x3c\x10\x00\xdb\xc6\xb8\xce\x0f\x3e\x99\xd8\x15\x6e\x09\x35\xd5\x12\xb8\xd1\x99\xa0\xf0\xcf\xb1\xac\xd1\x71\xfe\x26\xb2\xa5\xf2\xe2\xba\x6c\x42\x2a\x68\x1a\x77\xf1\x4d\xcd\x1d\x86\xa9\xd9\x06\xec\x43\x3d\x78\x65\x35\x50\x12\x40\x0c\xd7\xc3\x7c\x70\xc5\xcd\xb7\x21\xdf\xe8\xdc\x65\x59\x41\x6b\x8b\x94\xdf\x0f\xb4\xa3\xe2\x9a\x62\x05\xe1\xe6\x25\x03\x19\x7d\x06\x15\xac\xf2\x53\xfa\xfe\xb5\x69\x90\xc5\x2e\x57\xe5\x99\x62\xed\x9b\x1b\x16\xea\x62\x7d\xad\x46\xed\xfe\x32\x26\x56\x41\x32\xa2\xb0\x10\x80\x04\xd2\x14\xce\xe8\x5c\xad\x67\x76\xfe\xb3\x57\x78\xdb\x2f\x7a\xfa\xd3\x53\xa5\xe3\x77\xae\x0e\xda\xcd\x9f\xdf\x78\x88\xc2\xf9\x14\xe7\xb6\xe5\x14\x7d\x25\xab\x92\x1c\xf1\xae\x45\xf1\xcb\x26\xd1\x92\x1c\x37\xb2\xd8\xbb\xf1\x4e\xff\x7c\x77\xd2\xd4\xa3\x4d\x03\xac\xe7\xab\x79\x37\xdd\x72\xd9\x87\x4c\xba\x9b\xec\x1f\x1e\xe0\xe8\x33\x80\xfe\x36\x18\x73\xf2\xca\x59\x07\x81\x61\x78\x25\x61\x1e\x73\x20\xac\x9d\x8c\xb9\x5b\xb7\x6c\xa3\xc0\x99\x7e\xcc\xb0\xee\xeb\x98\xb1\xff\xe4\x97\x24\x33\xa4\x18\xa9\x1c\x45\x0d\xac\x9b\x2c\x5c\x6a\xd5\x8d\xb3\xdc\x77\xcc\xc5\xba\x95\x41\xd4\x52\x70\xbd\x4c\x3a\x0e\x8b\x79\x8a\x7b\x8d\x5e\x3e\x8b\x20\xf0\xea\xe0\x4f\x7c\x21\xaa\x0b\xf1\x7c\xc2\x53\x8d\xd2\x90\xe6\x1e\x73\xa4\x94\xff\x9b\x07\x12\xb8\x76\x5d\xd7\xb5\xba\xd0\x04\x23\x44\x87\xd3\x84\xbf\xf1\x37\x1c\xf0\x48\x1b\xcd\xf4\x91\x44\xe5\x02\x84\xe5\x5d\xc6\x6a\x02\xb0\xe1\xd8\xa1\x31\x00\x68\x3d\x93\x96\xf7\xa1\xd3\x25\x66\x39\xa1\x5c\xca\xcd\xc4\xe1\x63\x87\x17\x11\xf1\xcb\x12\xc7\x0c\xda\xce\x46\xd3\x87\x0b\xf4\x78\x6b\x35\xe6\x26\xd9\x4a\x22\x28\xea\x21\xe9\x52\xd6\xfe\xcd\x2f\xb3\x2d\xfc\x95\xc9\xbb\xfe\x83\xb3\xbf\x78\xe3\x28\x8a\xe0\xc4\xdd\xda\x7a\x39\x4f\xfc\x25\x21\x6c\x5a\x4b\x71\x4a\x5d\xca\xfb\x58\x52\xee\xa9\xba\x51\x00\xbe\x8a\x57\x2a\x54\xbd\x42\xe0\x86\xfd\x8e\xef\x2d\x78\x03\xe2\x7d\x65\x27\x8b\x83\x53\xf3\x5b\xbd\xe7\x2d\xd0\x1f\x12\x46\x43\x30\x0f\x21\x08\x09\xe7\x80\x9e\x34\x3a\x31\xd8\xa4\x6d\xf5\xa1\x7b\x79\xb8\x1e\x81\xe4\x82\x13\xcc\x6b\x7f\x78\x69\x27\x24\x65\x30\xbb\xcf\xf7\xcc\x58\xf1\x87\x4b\x3d\xff\xf2\x3b\x47\xd9\xa2\x2d\x84\x49\xd2\xac\x9f\xe7\xcf\x72\x74\x5d\x68\x59\x71\x30\x06\xa7\xb1\xf1\x32\x97\xf5\x23\xdb\x72\xc2\x80\x11\x05\x92\xe4\x6d\xfb\xe6\x82\x9b\xe3\x2d\xa6\xe4\x45\x39\xb6\x12\x2d\x49\xb4\x44\x97\x03\x19\xf1\x4e\xaf\x1d\x98\xa8\x89\xb3\x31\xbc\xb0\xa1\xe2\x95\x16\x85\xd8\x35\x55\xc8\xcc\x03\xec\x38\x69\x64\x84\x33\x6d\xa4\xbb\x1e\xa3\x26\xc5\x2c\x3b\xb4\x65\xd8\xde\xfe\x37\xc7\xbd\x44\xdb\xda\x33\xfd\xdf\x33\xd9\x6f\x5f\x37\x3c\xee\x6e\x64\xdc\x0f\xb3\x7d\xbc\x5d\x35\x38\xb4\x63\x5a\x29\x70\x20\x90\x0f\x28\x7b\x0a\x9c\x8a\xaf\x44\x69\x93\x0c\x08\xd4\xd1\x9a\x40\x17\xe4\xd4\x56\x23\x35\x1d\x22\x78\xb1\xd4\xaf\xaf\xc1\x9e\xaf\x0b\xe9\xf8\xfd\x68\xf9\xee\x14\xfa\x7b\xbb\xe9\xa5\x06\xa7\xd5\x8b\xd8\xf6\xc4\x9a\xe2\x8f\x9e\xff\xe7\xbb\x79\x95\x28\xbf\xdd\x96\xbb\x5b\xb1\xfe\xe0\x22\x9b\x2e\xbf\x97\x0a\x15\x6c\xc0\x19\xe3\xfe\x83\x05\xfb\x37\xf1\xf1\xe2\x4a\x33\x36\x59\xfe\x96\x15\x67\xe8\xe2\x0a\x27\x59\xf9\x17\x40\xb4\x9e\x5d\xaa\xf0\x07\x1b\x22\xe5\x1a\xe9\xa8\x25\xa7\x02\xa2\x49\x17\x49\x47\x28\x93\x19\x8a\x24\x16\x34\xf2\x9e\x11\x0a\x0f\xd9\xeb\x26\x6b\x0d\x22\x6f\xe1\xed\xaa\x77\x04\xb1\x7d\x94\x1e\xc5\xa5\x09\x26\xe4\xd7\x92\x1c\xf1\xdf\x7c\x48\x8f\xd3\xed\x93\xbc\xe3\x5e\xd6\xfd\x9f\x58\xee\xf1\x86\x65\x48\x5d\xe0\xe5\x65\x63\x2f\xb4\x9d\x92\xbf\xcc\xa8\xa4\x81\x26\xa6\x00\x9a\xd6\x53\x5e\x38\x46\xa1\xab\xb8\xa2\x95\xb9\xe7\x0c\xb5\x37\x75\x45\xcd\x2c\x5c\x83\x48\x3f\x4d\x25\x7c\xff\x31\xb3\x54\x53\xbd\xda\x64\x57\xe9\xfa\xa6\x51\x1f\x9a\xdb\xcf\xf0\xf7\x0e\x42\x10\x96\xbc\x91\xd2\x42\x05\x48\xaf\x6b\x45\xe0\x2e\x19\x0e\xbb\x8f\x31\xa7\xdc\x7f\x48\x3c\xeb\x61\x08\xfe\x2a\x77\xcd\x30\x2a\x27\xbe\xfb\xa1\x05\x16\x51\xf3\x18\x2c\x61\x54\xa7\x7f\x85\x1b\x2f\x30\x33\x17\xa2\x90\xfe\xe1\x84\xc4\x80\x9c\x4e\xbc\x28\x66\x97\xc0\xae\x57\x20\x59\xba\x9d\xa4\x4f\x2d\xd6\x62\xab\x9e\x69\x42\x57\x7e\x89\xd4\x3d\x54\x47\xc1\x07\xb8\xfd\xc3\xc1\x5f\x26\x84\x55\x19\xe5\xcb\xe3\x77\xa3\x94\xdc\xb5\x32\xdd\x1f\x83\x21\xbd\xb3\xe9\xed\x22\x54\xf1\x4f\x91\xf7\xd6\x16\xa6\x99\x34\xea\x3f\x90\xc3\xaa\xae\x20\x06\x7f\xf4\x8c\x27\x60\x33\xac\xfc\xf9\x2f\xcb\x98\x17\xce\x2c\x59\xf7\x05\x16\x86\xb4\xfd\x3a\xbc\x53\xd5\xa7\x55\xba\x1d\x62\x7f\x40\x6e\x28\x3a\xad\x74\x5e\x07\x0e\xc3\x7d\x89\x1c\xbf\x90\xbc\x5c\xd4\xa5\xe1\xce\x48\xe7\x45\x0b\xc5\x95\x57\x85\x71\x7b\x0a\xdd\x17\x50\x05\x36\x39\x07\x62\x1a\xc2\x3e\x68\xb4\x83\xa2\x2e\x20\x7a\xaf\x94\x55\x75\x9f\xb4\x88\x49\x8b\x9e\x5b\x60\x5b\x38\xd6\x6e\xf9\xb3\xde\x3d\x32\x25\xc5\x21\x1c\x37\xa4\x40\x81\xf9\x63\x3b\xdc\x12\x78\xeb\x53\x30\x18\xc3\xe8\x6a\x10\x44\x12\x6b\x6f\x16\x11\x18\xbf\xa7\x0a\xf8\xe5\x93\x4b\x25\x9e\xe1\x2c\x1b\xda\xc8\x74\x27\x9b\x10\xba\x85\x02\xcf\x1f\x2a\x23\xd7\x52\xd9\x78\x65\x40\x87\x5e\xc8\xe8\x2b\x79\x3b\x14\x35\x0a\xa1\x93\xcb\x5f\x52\x70\xc8\x05\x5a\xa0\x39\xaa\x6a\xf5\x02\xf2\x24\x18\xc0\xa7\x09\x8d\x9e\xb9\xee\x07\x1b\x8b\x67\xdf\x7b\xf9\x12\x30\xe7\xf0\x04\x18\x85\x0b\x6d\xf7\xd6\x97\x4e\x21\x77\xbc\xde\x4c\x0d\xfd\xeb\xe7\xb2\xfe\x1a\x13\x32\x48\x7f\x7b\x15\xf3\xd2\xe4\x53\x91\x13\x32\xab\xc8\xc4\x16\x68\x3c\xe5\x61\x5e\x7a\xd2\xc9\xe8\x1b\x9c\xc8\x81\xee\xd4\x34\xd2\x84\xa7\xa4\x7f\x7d\xdd\x24\xa1\x56\x21\x9e\x28\x7b\x54\x4b\x3e\xda\x3d\x9c\x95\x3a\x3a\xae\xcc\xea\x36\x81\xa4\x63\x35\x0f\xbf\xbe\x28\x27\xd8\xda\x86\x7c\x98\x15\xac\x24\x1c\x2f\x7d\x07\x47\x63\x7d\x0b\x94\x1e\x1c\xba\x61\x4e\x5f\x4a\x5b\xee\x7a\x8e\x45\x64\x45\xdb\xff\xd1\xa4\x9e\x41\x28\x82\x67\xf6\x46\x33\xb5\x7f\x82\x00\xe2\xf5\xe8\x83\x13\x0b\xe9\xb5\xb2\xa7\x89\x8e\xa5\xa2\x16\x69\x4c\x7e\xe0\xba\x83\x51\xe5\xc7\x8f\x46\xfb\xe2\xba\x68\x26\xd2\x98\xe4\x18\xb4\x25\xd4\x26\xd8\x4b\x1b\x94\x76\xd7\x21\xc8\x3a\xb5\x6e\xdb\x3d\x98\xfa\x78\x41\x38\xc5\xf4\x48\xa9\x6b\xad\xf9\xed\xb4\x6c\x13\xfb\x32\xbd\x07\x67\x1d\x02\x4b\x45\xd3\xa9\x55\x2a\x0b\x49\x82\x75\x13\xf9\x63\x97\x0c\x16\xaa\x91\xe9\x2c\x6d\x99\x1f\xbc\xa2\xd4\x85\x35\xb5\xa6\x71\x59\x33\x90\x27\xaa\x0f\xa0\xaa\x4b\x3e\x30\xfa\x60\x67\x93\x03\x69\x3a\x8a\xf2\xdd\x29\x9d\x37\xf2\xfd\xa5\x07\xc1\xc2\x3a\xa2\xe6\xcf\xd9\xeb\xba\xff\xd8\xf2\xb4\xc1\x27\xa8\xc5\xdf\x68\x1d\xc9\x3e\x87\xcc\xcc\x2d\x1f\x6e\xaa\x70\x11\x63\xa3\xe9\xf6\xe6\xaf\x44\xf7\x59\xb4\x56\x5a\xc5\xb5\x53\xf7\xb0\xb5\xe0\x4b\x94\x65\x54\x5a\xa0\x2d\x35\x43\xe2\x74\xa2\xe0\x95\x2c\x49\xa4\xc9\xed\xe6\x9c\x96\x38\x0f\xa5\x26\xe2\x02\x6c\x3c\x9e\xf3\xa2\x69\x5b\x50\x7c\x35\x15\x9e\xcc\x1a\x74\x2d\x4f\x13\x65\x08\xf5\xe5\x33\x80\x6b\x25\x28\xbb\xa1\xec\xb4\x00\xeb\x86\x96\x97\x22\x8b\x7a\xd5\x9e\x8d\x1a\x79\x19\x90\x5f\x18\x8a\x05\x7f\x57\x0c\x2f\xee\x5e\xa2\xfe\xef\x8f\x35\x25\x9d\xe4\xe8\x29\x7d\x8e\x68\xf4\xfc\x0c\x87\xc5\x58\x11\x7e\x69\xee\x2f\x56\xea\x5a\xe4\xaf\xf9\xa6\x79\x3d\x10\x84\x51\xf1\xf3\xe8\x7c\x0d\x99\x40\xe4\xdb\x2f\xd7\x21\xc5\x4b\x15\x64\x25\x43\x5b\x85\x5e\x0b\x83\x88\x72\x3d\x05\x6c\xdb\x01\xfe\x08\x57\xd3\x5b\x07\x03\xd9\x48\x15\x8f\x35\x3a\x3e\xab\xa7\x14\xac\xa6\xd7\xce\x66\xce\xf9\xa5\x93\x81\xdf\x95\x84\xa6\xa4\x24\xcf\x08\xbd\xca\x4e\x78\x73\x68\xcc\x5c\x8a\xe2\x47\xec\x67\xe3\xcb\x95\x86\x0c\xe5\x1e\x23\xf6\x72\xfb\x39\x6c\xbf\x4a\xcf\x5c\x8a\x13\x4d\x7f\x24\xf6\x80\xc5\x11\xff\xcc\xa8\xf5\x65\x16\x2e\x9f\x94\x19\xff\xa0\xa7\xf3\xe8\x7f\xdb\x2d\x97\x39\x23\xff\xb5\xa1\xa8\x3c\xa9\x3d\xb3\xbe\xad\x58\x93\x60\x9d\x8c\xef\x74\xb1\x46\x20\xa6\xd0\xdb\xc8\xa3\xf6\xf7\x89\xf4\xcc\x54\x6e\xfd\x4b\xa2\xa3\xf6\x0d\x5e\xfd\x40\x0b\x7b\x2a\xbe\x1c\x7f\x7e\x14\x38\xd1\xbf\xa9\xfa\x60\x78\x47\x54\x74\x12\x16\xf7\x99\xd6\x1f\x94\xee\x04\x5c\x2c\xaf\x71\xc1\x08\xa9\xa3\xbd\x24\xff\x94\x1f\x65\x09\x3c\x47\x16\x2d\x80\x81\xe9\xef\x47\x9f\x74\xf6\x14\x9c\xe1\x7a\x64\x01\xc0\xef\x19\xbe\x0a\x73\xb3\xac\xa0\x80\x34\x30\x49\xf4\x9d\x30\x7f\x39\x69\xb1\xe8\x6a\x2a\xd9\x72\x67\xac\x25\x4c\x1c\xde\xea\xac\xef\x75\x71\xcf\x17\x6f\xe7\x79\x19\x52\xfd\x91\xb8\x0a\x61\x49\xd3\x49\x69\xa7\x8a\xe0\x41\x46\x70\xf9\xed\x44\x72\x60\xc1\x83\x4a\xe7\x86\x1e\xf5\x1f\x02\xec\xbc\x2b\x40\x0a\x3d\xf2\x2d\x5a\x1b\x72\xb5\x36\x89\x63\xa0\xac\xf9\x92\x5d\x2f\x46\x81\xb2\xcb\xd0\xbd\x0a\xc4\x12\xf3\xd8\x0b\x44\xd0\xa9\x2c\x4f\x04\xb6\x12\xbb\x3e\xbb\x6d\x9b\xf3\x2d\xb5\x49\xca\x82\xd5\x2c\x23\x08\xae\xe5\xef\xe4\x15\x83\x2f\xed\xae\x26\xab\xfd\x95\xa4\x67\x38\xa4\x41\xc6\xdb\xcb\x5e\x6a\x41\xd6\x39\x3f\x35\x4f\x94\x3a\xe4\xd6\x21\xec\xae\xc4\xc4\x81\xfe\xf8\xe9\xfb\x87\xdc\x2f\x1d\x26\xea\x0f\xf9\xcb\x8f\x58\x6d\xd0\xf7\x13\x2d\x9f\x62\x9d\xa3\x4c\xd8\xf1\x3f\x6b\x0b\x8c\x56\xe7\xea\x2b\x21\xa5\x26\xb2\x62\xb5\x2f\x33\x27\xd4\x03\x26\xfa\xa3\x85\x14\x45\x5e\xb3\xf1\xac\x4a\xfb\x8b\x41\x8f\x0e\x6b\x4a\x3a\x22\x1d\xcb\x1d\xc7\x52\x2c\x19\xcc\x4f\xb3\x02\xa8\xaa\xe4\xea\x5a\x13\x98\x9a\x61\xf6\x86\x55\x05\xd5\x98\xfc\x96\x57\x79\x0e\x90\x57\xda\x5e\xfe\x68\x9a\x4e\x06\x52\x07\xf1\xbe\xa8\xce\xd5\xa6\x18\x76\xef\x08\x89\x78\x5e\x5b\x9d\x4d\x3f\xdc\x04\x9b\x5c\xef\x4a\x38\xe7\x3f\x50\x66\x50\xe8\xe8\x7a\xfa\xba\xc0\x11\x6e\xe2\x35\x74\x96\x98\x49\x1a\xc4\x6f\xf4\x2e\xb8\x47\xed\xbd\xf7\xd7\x6e\x07\x5a\x5a\xe1\xf2\xf2\xe7\xc0\x6d\xce\x57\xdc\x94\xee\x36\x7a\xc8\xa6\x49\xfa\x18\x14\x17\x55\x12\x71\x06\xe5\x1d\x95\x79\x76\x77\x58\x45\xd3\xa0\xc3\xf6\xcd\x82\x26\x00\xb2\xfa\xfd\xf0\x58\xc1\xe7\x5a\x60\x18\x73\x92\x7e\x7c\x12\x8a\x4f\x38\x52\xcc\x0e\x49\x09\x62\x5d\xe2\x6d\x14\x1c\x90\xfa\xfc\xcf\x71\x1d\x73\xcf\x87\x23\xa5\xc7\x1c\x92\x2c\xb7\xc2\xa1\x81\x9f\x43\x8e\x5e\x11\x31\xa9\x68\xb2\x44\x4f\x12\x2e\xa7\xe3\x5a\xb6\x9f\xb3\xe3\x7e\xa7\xf3\xc1\xfe\x3e\x49\x24\xb6\x75\xd0\xd6\x0f\xd0\xa5\xc6\xd8\x69\xc6\x92\x32\x75\x53\x22\x32\xc2\xbc\xbe\x56\x3b\x86\x6c\x1f\x20\x69\x95\x8a\x23\xa1\xfe\xc2\x2a\xed\x18\xac\xd3\x09\x14\x23\xad\xc1\xd9\x51\x59\x5c\xc3\x12\x85\x31\xa5\x5b\x8a\x52\x18\xcb\x30\x3c\x21\xc9\x15\x10\xc9\xa3\xa4\x1f\x04\x14\xb5\x30\x72\xde\x30\x8f\xf2\xf9\x1e\x7f\x15\x4f\xb2\xc0\x39\x68\xc0\x7b\x40\xc1\x70\xc4\x10\x10\x23\xc0\xef\x8b\xed\x17\xa8\xbe\x13\x5f\x7e\xe5\x88\xae\x85\x7e\xc6\x15\xa1\x39\x79\x4a\x0c\x4d\xa6\xaf\xf7\xad\x0d\xd1\xfa\xe9\x2f\xec\x4f\x6f\x3e\x99\x5f\xfe\xf1\x5a\x6f\xc6\x57\x9e\x38\x8c\x22\x88\xd1\x06\xbf\xaa\x62\xf8\x7b\x7b\x9b\x55\x28\x86\xe1\x90\x66\x91\xd2\x38\xcc\x15\xbb\x04\x98\x40\x28\x1a\xfb\x9d\xef\xe7\x6a\x7d\xf0\x0e\x24\xf3\x2b\x6e\x4c\xfe\x02\x81\x64\x15\x13\x15\xfa\xe4\x06\x2b\xd9\x49\x22\x1d\x1b\x41\xcd\xa1\xf6\xb0\x09\xc3\x70\x8e\xa5\x0e\x86\x39\x92\x79\x19\x5f\x08\xb9\x9f\xbd\x08\x45\x5e\x2a\x11\x56\x9c\x81\x71\x82\x7e\xe4\x8c\x4c\xd9\x8f\xcf\xe0\x43\x7d\xad\x6b\x30\x9a\x01\xda\x9b\x98\xfd\xa7\x4e\x05\x88\x5f\xe0\x35\x10\x84\x9e\x32\x11\x3b\x6e\x52\x3c\x15\x2c\xa4\x4c\xb0\x44\x55\xc9\x3d\xe8\xf5\xf0\x78\x8b\x48\xa2\x56\x93\x0a\xa0\x1a\xcd\x2e\xf8\xbe\x22\xf2\x22\x25\x4d\x5b\x55\xa0\xd2\xae\xe2\x64\x5d\xf1\x29\xab\xe7\xda\x3f\x7e\x2f\x09\x96\xea\xee\x71\xa7\x7e\x28\xf8\x70\x96\xc2\xe4\x66\x5a\xc1\x0c\xf1\xb7\xef\xcb\xa3\x8f\x05\x46\x95\xd6\x3f\x79\x74\x76\x99\x7f\xed\xbc\xeb\x19\xa2\x4f\x1b\xfe\x0b\xd7\x2e\x2b\x56\x77\xc0\xcb\x25\x83\x45\x31\xf1\xb3\xd4\xb6\x90\x32\x10\x5d\x5f\x19\x0e\x6d\xc5\x45\x61\xa7\xcf\x5d\x85\xc0\x90\x36\xf1\xfd\x27\xeb\x3a\x5e\xa9\xac\x38\x1b\x7a\x3d\xb0\x15\x89\x2d\xe7\x2e\x39\xaf\x34\x8c\x91\x9b\x7e\x3e\x15\x1c\x58\x3c\x60\xa7\x86\x98\xf6\x84\x90\xe6\xc8\x16\x30\x3a\x0d\x5d\xc8\xcd\x03\xdb\x94\xaf\x6c\xad\x1b\xc3\x79\xc2\x07\x14\x5b\x36\x2e\x9c\x6c\x69\x0f\x7e\x5a\x76\xf0\x83\x8a\x7f\x52\x62\xda\xe8\xab\xa4\x62\xa8\xe3\x7d\x73\x87\xf7\x3e\x9d\x4a\xe5\x32\x1c\x45\xd2\x11\xae\x57\x98\x6d\xa1\x40\xf7\x48\x13\x58\x0d\x74\x1e\xc4\xaf\x6e\xf9\xe0\x84\x5f\x9e\xb6\x96\xfd\x27\xcd\x1a\xcb\x68\xb4\x89\x8c\x19\x79\xa2\x5f\xeb\xb7\x93\x42\x5c\x62\xbf\x94\xbf\xfe\xe9\x87\xcc\x78\xc6\x00\xed\x53\xfd\x98\x25\x47\xc6\x72\x85\x97\x33\xe4\x98\x9d\x86\x6f\xe0\x02\x2d\x2f\x20\xae\x4d\xec\xdf\x6b\x20\x56\x90\x66\xb8\xdc\xbe\x67\x7e\x2c\x1a\x2e\x9b\xa0\x5d\xf5\xf6\x9e\xbf\x23\x7d\x89\xd3\x76\x89\x2b\x50\x4e\xf5\x6e\x39\x55\x18\xc9\x87\x4d\x60\x84\x22\x76\x88\x85\xb4\xbc\x8a\xe1\xad\x16\x01\x49\x4f\xc9\x2b\x2a\x03\x8c\x64\x93\x4f\xf5\x02\xa9\x15\x35\x2b\xc7\xbd\x69\xb9\xc5\x6f\x7a\xb3\xe5\xb0\x89\xb0\x60\x02\x33\x8e\x35\x55\xb9\x47\xe6\x6f\x5d\x1a\xc7\xf1\xba\x4a\x31\x4a\x76\x26\x97\xd8\xb2\xff\xa6\x09\x95\x3e\x33\x34\xde\x4a\x3b\x6b\x24\x41\x74\xa5\xaf\x95\x67\xc6\x12\xc3\x8f\xc8\xd3\x60\x7b\x73\x08\xd4\x7d\xcf\xf0\xf1\x2c\x2a\x7b\x37\x63\xc0\x9e\xc1\x87\x80\x0a\x36\x7f\x53\x59\x35\xe0\x40\x5d\x67\x16\x19\xd8\xcc\xbd\xd1\x1f\x6e\xc7\x32\x13\x6f\x31\xde\x1a\xac\x7a\xbb\x18\x04\xd6\x9a\x72\x07\x6b\x0b\x1d\xb6\x1a\x23\x28\x7f\x74\x80\xd0\x7b\x1b\xe4\x31\x0a\xe5\x1f\x00\x28\x77\xc3\x00\x53\xed\xff\xf5\xc8\xce\x73\x29\x78\xcb\x31\x89\xdf\x54\x85\x46\xe2\x4b\x83\xc7\x6c\x56\xd7\x5d\xe9\x30\xeb\x82\x44\xdb\xbc\x8f\xdc\xe1\xce\xa8\xb2\xb4\x2d\xc9\x4b\xc6\x40\x19\x41\xeb\x57\x74\xae\xe8\xfc\xa1\xcb\xeb\x0e\xed\x11\xd6\x93\xc5\x78\x93\x1c\xe5\x4b\x32\xb4\xd0\xaa\x9b\x5c\x8f\x23\x34\x38\xd3\xc2\x5d\x1e\x8e\xc2\x73\x2a\xc3\xda\x7a\xc7\x30\x43\x63\x2c\x47\xa8\x2d\x4e\x20\x1a\x92\xf7\x04\xfb\xff\x0d\x8c\x53\x20\x6b\x84\x70\x8c\x2a\x7a\x98\x24\x7d\xd3\x82\x20\x7c\xac\xe0\xf6\xaa\x02\xaa\x6b\x5e\xd5\x1c\xd1\x78\xd4\xe6\xf6\x1b\xaf\x31\x16\x46\xfa\x39\xaf\x8f\x66\x78\x91\x0b\x62\x6d\x08\xbc\x29\xc3\xb7\xd1\xef\x74\x59\x08\x5c\x7f\xfa\xe4\x30\xd5\xc7\x05\xce\x66\x69\x20\x90\xc3\x59\x2c\x11\x92\x29\x03\x26\x25\x4f\x60\x3c\x95\xff\x1e\x1c\xb1\x15\xc3\xbd\x30\x2c\x31\xe5\x10\xbb\xfe\xcf\x46\x04\xcf\x94\x06\x2d\x76\x9d\xa1\x14\x9d\x41\xcc\x43\xad\x93\xa0\x65\x48\x3c\x7f\x14\xd3\xcf\xc9\x22\x35\x33\xaf\xb6\xf4\xc4\x33\xc7\xb6\x55\x7a\x34\x97\x51\xe8\x69\xa4\xfc\x5c\x0f\xaf\x54\x58\xbb\xa4\x12\x93\xe9\x37\x5a\xb4\x3e\x43\xcb\xef\x7b\x30\xd2\x25\x42\x36\x65\x4b\xe6\xf7\x2a\x14\xaf\x1a\xeb\x30\xc0\x88\xa4\x18\xde\xb5\x10\xc5\xf4\x24\x73\xd8\x32\xff\xdc\xdf\xd0\xea\x8c\x14\xb1\x56\x5d\x9a\x03\xfd\x71\xbf\x79\xd7\xb8\xc3\x6c\xc2\x96\x11\xd5\xbe\x4b\x37\x14\x77\xd0\x07\x15\x26\x9f\x0e\xa1\x42\xf6\xa1\x33\x04\x36\x38\x6b\x03\xaf\x76\x8e\x00\xe9\xa1\xf1\xd4\x5a\x67\x0e\x39\xa5\x82\x8b\x23\x9c\x0f\x05\xca\x82\x24\xaf\x99\xb9\x15\xfe\x70\xb6\x39\x27\x00\x0a\x1a\x9d\x57\x71\xc8\x27\x82\xb3\x47\xfc\xb7\xc5\x4f\x2d\x62\xeb\x10\x6d\x5c\x29\x0c\xd5\x26\x0c\x6e\x28\xe2\xe5\x6f\x24\x2c\x39\x3f\x5e\x03\x3f\xac\x05\x0e\x56\x80\x48\x05\x2b\x21\xb7\x9c\xa2\x53\x03\x18\x9d\xc4\xd3\x87\x97\x41\x3d\x82\x04\xb3\xf4\x2d\x27\x3f\x45\x8c\xdb\xd1\x67\x80\x18\x4d\x81\x61\xfa\x56\xd0\x1a\xc0\x98\x8a\xe2\x35\x2c\x2a\x3b\xb7\x95\x3e\xe1\xec\xa9\xda\x7f\x73\xe4\x74\xfb\xe7\xc7\xe1\x1f\x0e\x1d\x37\x3a\x04\x4b\x1a\x8b\xde\x0c\x03\xfd\xed\x9b\x13\x93\x6e\x51\x41\x7d\x82\x54\xc3\xd8\xd8\xbf\x62\x24\x25\x54\xff\x16\x77\x5e\xc2\x78\xb9\x8d\x9e\x7e\x06\x40\x6a\xb3\x52\x01\xd5\x3c\xe1\xa0\x7f\xb0\x5f\x3a\xcf\x2a\xcb\xce\xb0\xb2\x5c\xf7\x6b\x43\x4c\x38\xa7\x7f\x6a\xfd\xef\xa5\x1d\x7d\x15\xd9\x82\x6c\x9d\x8e\x3f\x08\xf1\xfe\xaa\x29\x5e\xc4\xee\x40\x24\x66\x9f\x5d\x6d\x29\xdc\xd5\x54\x0c\xaa\xd6\xb4\xf9\xb0\xae\x8a\xe3\x85\xce\xfb\xc3\x2d\x8a\x29\xd7\x5e\x22\x4c\x84\xab\xec\x4f\xa5\x4d\x49\x8c\x4f\x6e\xf7\x1e\x6a\x03\x76\x6a\xce\x09\x74\x1a\xa0\xf6\x31\xdd\x91\xa4\xe1\x27\x39\xbb\x46\xf8\xe7\x41\xbb\xfe\x7f\x76\x74\xb9\xad\x34\xfa\x38\xad\xf5\xa1\x8a\x87\xe5\x11\x73\x04\x48\x18\xfa\xd2\xbf\x99\xb1\x20\x53\x86\xe5\x0d\x9f\xa7\xf1\x9e\xfc\xcc\x94\x7d\x86\x6d\xa7\xc7\xc0\x5d\xa0\x9f\xe2\x62\x81\xeb\x06\x18\x45\xc0\x51\x0b\xaf\xc7\x75\xbe\x5e\x0b\x95\xa6\xcc\x49\x45\x8d\xb1\xd6\x82\x43\x58\xe2\x7e\x12\x67\xf1\xfb\x0f\x26\x04\x86\xe3\x5d\x94\x5e\xab\x12\x90\x71\x10\x9c\x58\x1a\x94\x42\x8d\xc5\xf2\x07\x45\xa0\x82\x9d\xfe\xdd\x6f\xde\xf5\x85\x5f\x07\x44\xb6\xec\x49\xa2\x4d\x4d\xea\xb7\x2d\xcf\x37\x7a\xc6\x75\x80\x79\xd9\x52\x61\x1e\x5a\x9d\xb0\x61\xec\xae\xa8\xb6\xca\x33\x3f\x3a\xaa\x00\x3d\x75\xfb\xef\x1c\xd4\xe1\xf3\x9d\x59\xf7\xd0\x88\xf8\x79\xee\xf8\xba\x6a\xd7\x1d\x20\xc9\x05\xf1\x87\xfb\x5c\xea\x61\x90\x1f\xd3\x1b\x52\x07\x98\xcc\x08\x06\x6b\x0f\x4f\x6d\x78\xe0\xe7\x75\xab\x8b\x56\x05\x5d\xe2\x24\x48\x6e\x54\xdb\xee\x7d\x84\xa5\x06\xd0\xe1\xd9\x31\x7f\x53\x99\xff\xeb\xf6\x9a\x66\xca\xe2\x58\x0e\xf8\xe9\xdf\x0d\x5c\x47\xf1\x4f\xc3\x95\xfe\xd3\xaf\x35\x8a\x39\xf2\xa2\x60\x2a\xeb\xb2\x6c\x3f\xc4\xce\x25\x51\x52\xb1\xc5\x4c\xc7\xb3\x37\x36\x86\xfa\x10\x87\x47\xea\x19\x08\x92\xae\x30\x45\x81\x3b\x6a\xd1\xc9\x9a\x8c\x43\x6b\xe7\xc3\x3b\xd1\xd3\x57\xe7\x2f\x26\x68\xc1\x65\x22\x96\xf9\xeb\x7b\xc2\xf0\x78\xf9\xe4\x5f\xe8\x31\xc2\xe9\x6a\x4f\x60\x67\xf6\x70\x51\x54\x55\x3c\x1b\x91\x1d\x40\xeb\x19\x69\x52\x70\xe8\x1e\x52\xfd\x0e\x44\xfb\xbf\xd9\x99\x32\x6d\x9c\xa3\xaa\xad\x62\x3a\xe3\xc5\x71\xe5\xda\x9d\xea\xd5\x15\xa6\x41\xbd\xa6\xed\x9a\x2e\x3b\x39\x5d\xd6\x24\x89\xb1\x46\xc6\xc4\x23\xe5\x9d\x54\x3e\xa3\x72\xea\x5c\x5d\x64\x53\x8e\x3a\xb4\xea\xab\x02\x52\x99\x17\xd7\x84\x9d\x2f\xe9\xed\xfd\x07\x77\xf6\xc7\x67\x38\xfe\x16\xd5\xa8\xd6\x7c\x8f\x00\xe3\xea\x2c\xd7\x95\x84\x1f\x38\x2c\xdd\x31\x84\xcb\x18\x05\x28\x9b\x65\x74\x36\x11\x19\xa7\x31\xfd\x13\x01\x2c\xdb\x1e\xd2\x8f\x58\xdc\x24\x7a\xf7\x55\xbb\x36\xb7\x03\x68\x82\x56\x4b\x50\x98\x04\x7b\x78\x9f\xd2\xb8\x4e\xcf\xfb\x38\xfd\xdf\xeb\xad\xec\x25\x95\x38\xee\x9a\x03\x23\x92\xe3\xfd\x7d\x79\xc0\x65\x7e\xe7\xd2\x68\x3c\xc9\xee\xf9\x33\x2d\x51\x08\x42\xb1\x6b\x7f\x11\x84\xa1\x26\x59\xf6\x20\xbf\x83\xaa\x42\xa6\xa9\xad\x41\x25\xa4\xe4\x30\x7a\xda\x5f\x94\x8a\x11\xaf\xfc\xdc\x50\xb0\x5c\x02\x6f\x38\xa9\x60\xf3\xf3\x45\x34\xa0\xc8\xe9\x3d\x8a\x87\x22\x0e\x17\x5c\xc5\x65\x9e\xc9\xf8\x3f\x9c\x3a\x67\x15\xc6\xb9\xad\x3f\x9a\x21\x34\xd5\xd9\x54\x17\xb6\xc4\xa1\xc9\x8f\xc3\xf0\x48\xba\xbf\xfc\x1f\xdf\x91\xaa\x02\x86\x61\xc0\xa0\xc4\xaa\xf4\x24\x84\x01\xf5\xc8\x11\xba\x04\x7f\x01\x5c\x04\xf8\x14\x90\xc6\xdf\x4b\x2d\xb6\xbe\x45\x84\x79\xed\x0a\x21\xd3\x47\xa7\x75\xce\x94\xbb\xc0\x9b\xd5\x3c\xaa\x61\x08\xc8\x2c\x99\xb4\xd1\x09\x55\x4b\x7f\x99\xae\xd1\x6e\x1b\x5b\xd0\x1e\x9f\xd1\x16\xba\xdd\xc5\x25\xd4\xa2\xb0\x9a\xb0\x55\x7f\x17\x9c\x55\x3d\x55\x83\xa2\x16\x32\xbb\x00\x71\x47\x64\x85\xa5\x21\x37\xd4\x5b\xe4\x0b\x6d\xe3\x5c\x78\x6c\xec\xe0\x5e\x41\xc9\x55\x6b\xe3\xb1\x91\xc1\xd6\xf1\x4a\xe7\xea\xe9\xc3\x7b\x66\x9f\x0d\xe7\xfe\xca\x52\x13\xee\x5a\x9f\xd0\x9d\xb2\x0b\xd9\x85\x54\x49\xb0\x53\x5f\x4f\x9b\x02\xc8\xd4\x05\x1a\x9f\x9a\xf1\xec\x45\x61\x18\x96\x17\xf6\x35\x08\xb1\x09\x33\x2a\xa0\x5c\xc9\x87\x11\xf6\x98\x77\xef\xb1\xac\x80\x14\x4e\xc6\x27\x10\xe6\x48\x57\xfb\xeb\x3a\xaf\x07\xec\xfe\x99\x07\x6b\xba\x1a\xeb\xc5\x31\x2a\x88\xd8\xc2\x89\x7f\xe2\x23\x42\x6f\xd9\x4a\x2c\xb6\x7a\xb9\x29\x2c\x6d\xe1\xa2\xf4\x7e\x3e\xd9\xbb\x51\xbd\x87\xbb\x42\xa7\xfe\x9e\xcb\x9a\xa1\x28\x10\xdf\xc9\x86\xbd\x3d\x0c\x5c\x3f\xe4\x98\xf9\xdb\x63\xd5\x7e\x4a\x76\xb9\xa7\xee\xe6\xe2\xc7\xfc\x04\x67\x20\x82\x7a\x2a\x87\xf0\xe5\xe5\x97\x4c\x8b\xae\xdf\x6a\x5c\xc2\xa3\xe6\x3e\xdd\xd6\xf0\xb7\xe7\xa5\xeb\xc0\xa4\xa5\xbf\xe2\x66\xe2\x5f\x13\xc5\x72\x87\x12\x70\x2a\x75\xcf\xa3\x12\xaf\x73\xa8\xfd\x61\x9c\xa3\xa6\x46\xeb\xc7\x86\x8c\x81\xa9\x2a\xfe\x47\x46\xd5\xd2\xdf\x19\xa4\x6e\xfa\xd4\x78\x91\x97\xeb\x60\x6d\x6f\xae\x24\x27\x11\x86\xd8\x4a\x3a\x32\x09\xbf\x43\x40\xdb\x3e\x94\x18\xff\xbc\x7f\x3a\xff\x68\x5d\xa0\xc2\x6c\x53\x03\xe1\xb7\x20\x03\xf1\xa9\x8d\x1b\x52\x04\xad\x6c\xbf\xbe\x64\x7c\xde\xd0\x82\xc1\x75\x33\x5d\xf2\xa1\x9f\x01\x47\xfd\x32\x2f\xe5\x82\x5b\x9d\x8e\xec\xad\x96\x78\xc4\xbe\xe0\x32\x6f\x7f\x23\x61\x39\x98\xe3\xb2\xef\x9d\xc6\xf2\x15\x26\x11\xb0\x0d\xdc\x2a\xa0\x4e\x00\x1b\xc1\x98\x96\x31\x86\x3a\x44\xd2\xb7\x16\x88\xe6\xba\xca\x0f\x23\xad\xd5\x1b\x0e\xbf\x25\x64\x92\x1c\x46\x61\x95\x44\x81\x2c\xd7\x72\xdb\xdf\x3b\x40\xc3\x93\xe8\xf2\x24\xcf\x6d\x11\x50\x8b\xa7\xd8\xca\x06\x01\x02\x16\xe7\xa4\xde\x55\xb6\xd4\x61\xe0\x2a\x76\x19\xa3\x9b\xfa\x9f\x0b\x31\xa0\x35\x55\x6a\x55\x2f\x3f\x38\x84\x20\xb9\x72\x54\x7d\xf1\x10\x7e\x10\x74\xe9\xdc\x83\x6d\x43\x6e\x52\x3f\x52\x09\x44\x7f\x4e\xd5\xbb\x8a\xf3\xec\x94\xee\xa9\x02\xec\x1e\xdc\x41\x15\x2c\x26\x89\xa4\x13\xa5\x70\x1b\x64\xae\xf3\xe4\x17\x66\x2b\x2d\xf4\x64\x77\x9b\x02\xe3\xb3\x82\x49\xb4\x90\x69\xed\x10\xbf\x39\xcc\xe3\x37\xe3\xa6\x3b\x3a\x18\x37\x53\xa6\x80\x47\x78\x9f\xda\xdb\x2f\xe6\x72\x18\x49\x7f\x87\x70\xf2\xea\x57\x17\x77\xf7\xd9\x67\x5d\xd5\xca\x9b\xa6\x73\xf5\x22\x74\x6f\x27\x86\x8c\x92\x28\x40\x2c\x30\x8a\x9a\x9c\xc2\xcf\xc2\xbc\x51\x74\xa1\xc4\x53\x05\xf4\xb8\xf4\xa1\x85\x3c\xf3\x0b\x0d\x37\xd2\x07\x84\xff\xe7\xf2\xd6\xe2\xf6\x94\xd7\xd3\x4e\x39\xc7\x1d\xd0\x86\x69\x0a\x08\x32\xbb\x53\x91\x22\x28\x42\xbc\x5a\x7c\xe3\xa0\xa8\x87\xf1\x28\xe8\x5f\x02\xb6\xb7\x7b\x3b\x64\xda\x7c\x2a\xe8\xb2\x84\xae\x3a\xed\xba\x02\x83\x5b\x02\xe0\xfc\x01\x02\xfa\x7b\x9c\xdb\x46\x5c\xe5\x37\xdf\x39\xe4\xf7\xb9\xe5\x0d\xb8\xe5\xca\x62\x1f\x25\x25\x82\x38\xb8\x5c\x0b\x5a\xe5\x04\x8d\x8d\xd7\xdc\x48\x05\x54\xdc\x9b\xec\x04\xa7\x59\x32\x78\xb3\xcb\x3e\x23\x3a\xe0\x7f\xb0\xfc\x8c\xbf\x1c\x28\xcb\x47\xe7\xae\xc8\xdc\xa1\x11\xc2\x7d\x55\xf8\x44\x9b\x51\x92\xbf\xb1\xe5\x27\x57\x14\x60\xcb\xda\xdb\xcf\xae\xf9\x35\x20\x78\x7d\xf3\x08\x85\xa2\x9b\x1a\xa3\xff\xa8\x0f\x80\x47\xe1\x90\x97\xb6\x9c\xdb\xcc\xdf\x1a\x12\x83\x4d\x89\x38\x22\xb2\xc2\x1a\x83\x49\xb8\xa0\x90\x57\xf0\x3f\xda\x77\xa1\xc9\x27\x0a\xf0\x36\x1b\xdc\x9b\x67\x0d\x2f\x96\x1a\x34\x4a\xcd\x42\x83\xc2\xf1\x62\xc2\x5c\xa6\x66\x9e\x87\x2e\x11\xd8\x6c\xa1\xc5\x81\x12\x9a\xec\xe4\xfd\x9a\x3b\xbf\x5d\x0e\xdb\x26\x55\x75\xa5\xd5\xf4\x9f\x13\xab\x10\x44\x67\x3a\x5a\x9d\x9b\x8b\x47\x01\x95\x08\x66\xad\xa3\xc0\x0f\x9f\x2e\x4f\xf0\x2e\x0f\x5b\x5b\x77\x86\x76\x90\x22\xc2\x10\xf7\x22\xd1\x28\xc1\x2a\x0d\xb5\xb2\x90\x44\x88\x96\x7c\x01\x61\xb1\x1f\x64\xfd\xc1\x74\x5d\xcf\x8e\x44\x3b\xf5\xa8\xec\x8e\xcf\x1d\x4e\x2c\x53\x25\x0c\x20\x6f\xc1\xa3\xfe\x99\xef\x93\x48\x2c\x7e\xfa\xbd\xaf\xce\xaf\x0e\xe4\x54\xda\x34\x3d\x99\x5e\x2e\x7a\x75\x16\xba\xe9\x4e\x0f\xfd\x06\x6b\xa4\xe0\x2c\x18\xee\xbe\xa7\x7a\xef\x90\x91\x14\x12\xf5\x8c\xc2\xdb\x12\xfd\x64\x25\x01\x3c\x6e\x7d\x79\xc8\x16\x46\xc1\x88\x4d\x06\x58\xbf\x7c\x97\x49\xa6\xb9\x2c\x7c\x80\x63\xae\x8d\xdb\x32\xc8\x42\x6f\x58\xca\x50\x62\x10\xa9\xd1\xb1\xf3\x0c\x6f\xa0\x2c\x34\xe1\x8c\x8d\xf3\xa5\x68\xf4\x91\xbf\xa4\xff\xc9\xfb\xc6\xf6\xb1\xd6\x78\x73\xe5\x50\xb7\x6d\xb4\x36\x83\x78\x70\xc2\x73\x58\xb1\x43\x99\xe0\x17\xd8\x9b\x45\xb1\xcb\x2f\x9f\xbb\x1d\x18\x3d\xbe\xba\x9b\xdf\x5c\x25\x5d\xf1\x66\x4d\x27\xb9\xff\xee\x7f\xcf\x86\x79\xfb\x45\x4f\xda\x16\xf4\x68\x1b\x6a\x6d\xed\x5d\x49\x8c\x4e\x81\x37\x09\x9c\xc7\x54\x91\x22\x0e\xbd\x65\x28\xc3\x71\x79\xa3\x3a\xa8\xf2\xfd\x9d\xb3\xa0\xa7\x15\x97\xe2\x84\x58\x0a\x4b\xb1\x13\x27\x0c\x5f\x6a\x58\x91\x85\x13\xca\x76\xb5\xe2\xcf\xc3\xf6\x34\x59\x96\xaa\xb9\xf3\xab\xa6\x2b\xf9\xd5\x53\x2d\x18\x89\x90\x41\xcd\x4b\xdd\x4a\xec\xa8\x81\xa3\xfa\x9c\x64\x92\x4d\xd3\xa2\x94\x0d\x73\xd0\x3e\x57\x8c\xab\xf6\xc8\xfc\xb5\xe0\x2f\x43\x48\xf4\xd6\x91\xef\x4a\xc9\xce\x2b\xda\xd8\x08\x35\x80\x92\x32\xb0\x73\xa3\x6d\xd2\x38\xe5\x5f\x59\x78\x0a\xd0\xd2\xe0\x05\xa2\x1d\x9c\xd5\x77\xf5\x0f\xdf\x7a\x5a\x50\xef\xbe\xc9\x20\xa9\xb9\xc2\x90\x65\xed\xbc\xfe\xd4\xaf\x98\x1f\xa6\xfb\xea\x3e\xbc\x52\xfb\x8d\x24\x7a\xcd\xd4\x9b\x97\x8d\xd0\xcc\x2b\xf8\x82\x8d\x64\x70\xc9\xc3\x68\xfe\x61\x25\x7b\x54\x42\xb8\x5b\x82\xc7\x2e\xb4\xfd\x9c\xc9\x55\xc7\xd6\x5e\x0b\xc5\x43\xa2\x1d\x20\x03\x43\x78\x9f\xfa\x0b\x2d\xc7\x1a\xb5\x70\xb6\xa9\x99\x7a\xc3\x18\xa5\xea\x29\x45\x65\xe5\x6a\xc6\x7d\xeb\x4d\xbe\x3a\xf4\x3b\xdc\x3f\x9e\xc3\xb6\x80\xeb\x4a\x1c\xc3\xbd\x48\xa1\x0d\x49\x93\xc6\x9a\x77\xaf\x63\xd7\x2d\xa4\x16\x4b\x38\x85\x54\x3e\x76\x12\x8c\x56\x70\xb0\x4a\xfc\xc3\x17\x55\xce\x5d\x7a\xa4\xa8\x0c\x4c\x10\x20\xd4\x4f\xa3\x60\x40\xc1\x09\x99\x8c\xd1\x57\xdb\x36\x6c\x1b\xff\xdc\x02\x62\xd2\x3d\xea\x82\xcb\x11\xa2\x22\x40\x53\x15\x8f\x83\x94\xfd\x9d\x63\x21\x41\x1c\x99\x4d\x01\x05\x4d\x0c\x82\x19\xa4\x89\x8b\x29\x1f\x69\xee\x14\x68\xbf\x94\xca\xb5\xe6\x92\x71\x05\x1a\x21\x74\x48\xbd\x68\xb1\x3d\x36\xd1\xad\x54\xd7\x17\x0c\x07\x00\x2d\x2d\x96\xeb\x98\x18\x0a\xa8\x80\xf7\xef\xfd\x4d\x5a\x37\xcc\x4f\x65\x2a\x96\x6a\xca\x87\xc4\x88\xe2\xea\x1c\xc5\x15\x50\x4b\x02\xcb\x4b\x91\x81\x17\xc9\xbe\x2f\xad\x71\x87\xf2\xa7\x75\x25\x56\x6b\xfa\xa3\x6a\x13\xf7\x9f\x73\xf8\x91\x4f\x70\xb8\xc6\x0b\x12\xc3\x21\x62\xf4\xae\xb3\xba\x71\x5a\xb2\x38\x00\xf0\xaf\x9a\xfc\x65\xbe\xe3\x35\x0c\xbc\x51\x92\xa5\x74\x3e\x75\x99\x21\x26\x87\x90\xda\xe8\x78\xda\x04\xae\x36\x16\x1f\x25\x67\xe5\x14\xe6\x6b\xf4\xb4\xfe\x7a\xde\xe9\x95\xa8\x15\xbc\xf6\x04\x51\x83\x04\x9f\xc7\x2d\xb7\x87\xcd\x71\xf0\xf6\x53\xf7\x0d\x1f\xdb\xc2\xaa\xfb\x1d\x5e\x1d\xcf\xd5\x76\x3f\xf5\xfd\xd3\xbf\x54\x54\x26\x38\xfa\xc1\xb1\xfe\x6c\xca\x7e\x5e\xa8\x87\x28\x2f\x8d\xce\x22\x94\x19\x99\xba\xc3\x5a\xed\x8e\xa2\xc0\xec\x31\x88\x29\xb5\xc3\x44\xd1\x95\x06\x9d\x14\x27\xc6\xd1\xef\xeb\x79\x5e\xe3\xea\xb0\xef\x93\x17\x36\x12\x7d\x91\x0a\x60\x21\x41\xa4\xc6\x28\x70\xae\x71\x77\xff\x8e\x8a\x44\x14\xba\x6c\x96\xfe\x8f\x0d\x98\xe3\x07\x1e\xa4\xf5\xed\x57\x68\x2d\x81\xea\xc5\x43\x9a\x45\xe2\x66\xec\x1a\x25\xd2\xe6\xd9\xc1\xd2\x16\x4b\x70\xc1\x27\x50\x21\xb8\x37\x4e\x6d\x4d\x34\xff\x68\x44\x30\x2a\xa2\x56\x26\x44\x53\xe1\x86\x6d\x9e\xcd\x63\x5d\xd3\x92\x6d\xea\x1a\xd0\x51\x13\x21\x5a\x44\x81\x75\xf4\xd2\x6b\x23\xf8\x71\x5b\x91\x02\xd4\x1b\x35\x77\x6d\x5d\x06\x93\x26\xc8\x7c\xfb\x25\xc2\x6b\xd3\x6a\x17\x67\xfa\xd5\x4f\x53\xe3\x53\xf7\x60\xef\x8d\x87\x34\x53\x5e\x2d\x0b\x4b\x86\xbe\x9d\xb4\x36\x8c\x28\x56\x6d\x3c\x30\x74\x04\x68\x12\xd0\xda\x7b\x9f\x3a\x7e\xaf\x8c\x7b\xae\xe5\xa1\x06\xf9\x85\x1b\x40\x99\x04\x91\x2e\xdc\xdc\xe2\xab\x23\xff\xf8\x13\x33\x6a\xa4\x0e\xad\x05\xaf\xe3\x4a\x42\xb3\xd3\x98\x3a\x2a\x62\xe6\xbf\x31\x43\x62\xef\x7c\x9b\x28\x6c\xe8\xe3\x35\x74\xb5\xba\x65\x0d\xf5\xb4\x20\x8e\x48\xf3\xa2\x88\xc2\x19\xca\xcc\x5e\x4a\x5f\x5b\x51\x1b\xc2\xd0\x38\x90\x51\x27\x70\x62\xb6\x7e\xb1\x04\xcc\x62\xcb\x96\x10\xa5\x1c\x73\x47\x40\xbb\x2c\x26\x49\xb6\x06\x04\x6a\xc5\x76\xdb\x09\xf8\xc3\x2d\x78\x2d\x97\xc3\x86\xd0\xc7\x16\x92\x0d\x03\x2a\x26\x70\x43\x5c\x2e\xc7\x3f\x3b\x03\xac\x38\x60\x1c\xf4\x16\x45\x2e\x1c\x9e\x7c\xe4\xce\x34\x2d\xcd\x69\x29\xc2\x75\x81\xde\xb2\x34\x23\x14\xc7\xb0\xc2\x80\xd7\x26\x60\x19\xa1\x2f\x41\x65\xfc\x54\x5c\x18\x93\xc0\xd1\xdf\xea\x74\x6a\xd6\x91\xd3\xec\x40\xd3\xa3\x40\x4b\xb4\x65\x77\x2a\x43\x2a\xcb\x6e\x92\x3d\xb6\x1b\xb0\x02\x57\x3f\x32\xa8\x84\x9b\xc3\xa8\xd2\x7d\x8a\xee\xae\xeb\x96\xea\xbf\xfd\xf7\x6f\x8b\x0d\xbc\x33\xde\x23\xdf\xe2\x6c\x1f\x1e\xfb\x77\x34\x8b\xe1\xbc\x60\xa4\x87\x88\x3d\x19\x0f\xaa\xea\x44\xc7\x6d\x34\x99\x6e\x79\x89\xf6\x9a\xf5\x68\xab\x3e\x1d\x4e\x6d\x2d\xc6\x0e\x4d\x18\xcc\x5d\xab\xb8\x9d\x94\xe9\xd5\x94\x5a\x69\xa0\xe3\x31\xa7\x12\x68\xf4\xfa\xf6\xb9\xfd\x7e\x24\x4e\xf9\x2e\x8a\xd4\x74\x97\xec\x99\x62\xbb\xa7\x4d\x2b\x5d\x88\x78\xba\xfb\xa7\x18\x74\x1a\xef\x81\xba\x4d\x02\x68\x72\x16\x2c\x55\x83\xb1\xd9\x5e\x45\xf8\x8b\xd2\x6f\x61\xa6\x7f\xd1\xea\xe6\x63\x42\x8d\xbd\xd2\xc8\xdf\x31\xc2\x56\xe7\x2a\xcf\x9e\x49\x97\xfd\xe6\xfd\x60\x68\x09\x87\x25\x15\x84\x39\x6a\x9a\x69\xe3\x02\xbe\x90\x40\xe4\x50\x46\x12\xcb\xba\x29\x48\x89\xbb\xf1\x1e\xce\x57\x12\xff\xe5\xc3\x0a\x63\x2c\x87\x38\x43\xed\x8e\xcb\xbd\xec\x17\x3a\xd6\x6d\x64\x3b\x3b\x1c\x11\xf3\xa5\x10\x57\x33\x50\x00\x68\x4e\xf9\x44\xee\x10\xf5\x8f\xd0\xf1\xf0\x9e\x3b\x1f\x22\x48\xad\x74\x89\x27\x6f\xfc\x8c\xf2\x1f\x08\xf8\x59\x0c\x58\x24\x3e\x60\x6d\xfa\x24\x0f\x30\x66\xbe\x49\xc2\x2b\xa1\x91\x5b\xd5\xfb\xc3\xc9\x2f\xc9\x3e\x27\x68\x54\xc2\x69\xc7\xdc\x3a\x2d\xda\x51\xda\xfb\x36\x2e\x6e\xc3\x5a\x60\x0d\xb3\xe5\xdd\x0f\x8d\xe4\xd3\xed\x6c\x7d\xf9\x42\xc7\xaf\x47\x3c\x40\xc1\xa8\xb6\x77\x31\x59\xb0\x0c\xb3\x71\x19\x26\xd5\xa4\xce\xc5\xa8\xd2\x8e\x97\xe0\x61\x20\x0b\x5a\xfa\x6f\xec\x89\xe9\x04\xbe\xf7\x85\x42\x0a\xad\xb3\x98\x20\x8d\xc2\xfa\xb8\x7f\x3c\x56\xe5\x53\x58\x5a\xe0\x3f\x58\xf6\x45\xd9\xb0\x1a\xb2\x97\x78\x29\xc0\xbc\x16\xf4\x54\xa6\xb0\x99\xbc\x07\x42\x84\xa7\x58\x1f\x55\x41\x0b\x29\x0f\x91\xd8\x81\x3e\x18\x43\xbf\x5b\x54\x52\xe0\x77\x2f\xd7\xc3\xf3\xac\x55\xc6\x37\x89\x8b\xdc\x07\x33\xa5\xe7\x9c\xc5\x93\xc9\xe0\xe0\x5c\x27\x3a\xed\xb3\xe2\x76\x20\xbf\xb7\x82\xdb\xa3\x98\x22\x08\x8e\x29\x40\x24\x35\xa9\xba\x37\x6f\x7d\xde\x4d\x12\xeb\xf1\xff\xe4\x9a\x15\x54\x88\xfd\x07\xf8\x76\x22\x87\xdc\xe4\x8c\x5a\xff\xcc\xe0\xf1\x2d\x99\x5e\xfa\xb7\xb0\xf9\x95\xfb\xd1\x2b\x96\x13\xde\xb4\x27\x58\x69\x29\x07\x1d\x41\xf8\x01\x52\xfc\x80\xfd\xae\x9b\x72\x89\x3f\x84\xc6\xb1\xe1\xad\xd3\x2d\x06\xde\x4f\x06\x7d\xdf\xce\xd9\xb0\xa9\xbb\x9f\x68\x18\x62\x7d\x3d\xaf\x98\x76\x28\x88\x14\x4c\xe5\xdf\x7b\xd1\x64\xe2\x94\x79\xfa\x4d\xbb\x08\xa7\xe9\x47\xc3\x8d\x14\x24\xd5\x50\xe7\xe2\x5e\xea\x0b\x89\xc1\xd5\x8c\xf3\x47\xaf\xa7\x9c\x54\x7d\x64\x01\xa0\xfe\xec\x9a\x68\x67\x7d\xcb\xe7\x3e\xf3\x5d\x18\xe8\x06\x65\xac\x54\x81\x3f\xa3\xb0\xe8\xe7\x34\xb1\xe4\x6f\x3d\x14\xa3\x6b\x6c\xcc\x25\x9b\xd6\xce\xb3\x2e\xf3\x5a\x2a\x23\xbf\x16\xd8\xf8\x13\x9c\x51\x9b\xbd\xcf\xe0\xac\x1b\xce\xc7\xd6\x34\x67\xc2\x66\x21\x7d\xea\x77\x4a\x94\x56\x50\xd5\xd9\x5e\x38\xc3\x9b\xfc\x2d\x28\x75\xc7\x49\xc7\xfd\xa2\x39\xf1\xe4\xab\x01\x76\x60\xf3\xc3\x8f\x97\xf5\xb8\x7e\xbf\x48\x03\xb5\xcd\x42\x81\x3a\x57\x60\x6b\x8d\x02\x49\x86\xa9\x5f\xe2\xa3\x4b\x05\xb5\xf1\xc7\x7c\x6a\xc8\x5e\x3e\x76\x38\xea\xac\xd1\x5f\x79\x2c\x63\x38\x63\xb5\xf3\x9f\xe2\xe5\x5e\x08\x21\xeb\x44\x14\xaa\xd3\x7e\xb0\xab\x16\xbf\x3d\x16\xb6\x27\x58\xfc\x8a\x35\xc5\xe4\xa0\xc8\x36\x34\x01\x83\x71\x40\x98\x19\x4d\xb6\xe3\xc7\x4f\x20\x90\x80\x69\x4e\x59\xc7\x68\x6c\xe1\x7d\xbc\x14\xa6\xb6\xab\xc1\xb1\x6b\xc2\xcf\x12\x68\xfa\xfb\xcc\x35\x21\x68\x27\x05\xd6\x57\xa2\xea\x97\x53\x0c\x6e\xf0\x74\xe2\xb8\x7b\x9b\x05\xea\x5e\x10\x6a\xad\xb6\xed\x9a\x57\x8c\x53\x47\x0e\xee\x9e\x75\xf6\xd1\x52\x0a\x9f\x73\xe0\x67\x41\xd1\x0a\x2b\x27\xc9\x53\x67\xac\x97\x29\x29\xbf\x7f\xeb\x0d\x58\x86\x6e\x59\x15\x1a\x09\x74\x48\xcb\x90\x88\x03\xa2\x6e\xd9\xde\xd9\x0c\xa2\x12\xbb\xdc\x55\xa4\x30\x26\x7e\xd3\x71\xa3\x9b\xfe\xa2\xb9\x57\x3f\x66\xd3\x53\x54\xbd\x83\x5d\xdc\x82\x57\x99\xf3\x5a\x18\x75\x1c\x4b\xfb\xcd\x8d\x2e\x40\xf9\x92\x28\xb0\x76\x75\xec\x90\xa7\x7c\x7f\xae\x55\x30\x95\xd1\x7b\x93\x32\xdd\x7f\xa2\x92\x89\x87\xc4\xc4\xb9\xb4\xdd\xda\xf9\x06\x6d\xbb\xe8\xdc\x3d\x53\xf9\x20\xc2\x70\xac\x2e\xf3\x38\x04\x98\x4d\x1c\x63\x23\x76\xc7\xd3\x87\xdf\x28\xea\x03\xee\x0b\x84\x61\x1c\xbf\x68\x6b\x6f\x5e\x69\x6f\x28\x2e\xe0\x1f\xf8\xb7\xd6\x52\xe1\x76\x05\xb7\x1e\xd6\x89\x71\xd5\x0b\xc5\x70\x5a\xe3\xc8\x8c\x52\x05\x0e\xf6\xd0\xd0\x1e\xd9\x22\xe9\x24\x06\x43\x11\x58\x43\xe7\x8a\x1d\x19\xa2\xac\x9d\x9e\xa5\x85\x4d\x55\x4a\x88\x9a\x94\x42\x29\xe2\xc2\x87\xa0\x6f\x39\x03\x14\xb7\x77\xda\x4b\x98\x69\xc3\x14\x84\x7f\xe9\xaf\x5e\xf1\x76\xd2\x38\x16\x23\xe9\x5b\x94\x89\x3e\x24\x55\x17\xfd\x19\xea\xcc\x40\xcc\x85\xe7\x09\xbf\xef\xe3\xbb\x10\x2a\x84\x27\xd4\x00\xe9\x70\x8b\xd5\x9c\xab\x0a\x55\xd9\x27\xf5\x48\x14\xff\xee\xed\x30\x68\x5b\xc8\xa5\x6f\xf7\xb6\x3f\xa1\xae\x47\xdf\xa8\x67\xe5\x74\x0c\x30\x09\xea\x64\x1b\xa4\xe0\xa9\x80\xca\x66\x64\x43\xf0\xe4\x21\xa4\x23\x71\xda\xa0\x4b\xc5\x7f\x5f\x7d\x95\x86\xbe\x4d\xcd\x1d\xe7\x20\x31\x0a\xc2\xd3\xc8\x44\x7e\x75\x71\x03\x50\x68\x8d\x75\x07\x5b\xa1\xa0\x99\x04\xe8\xd1\x81\xd7\xe3\x72\x3f\xff\xb1\x7f\xa5\x1e\x0b\x89\x8b\xd9\xaf\xc8\x93\x89\x0f\x6a\xf7\x3d\x33\x82\x53\xdb\x37\xe1\xb8\xbf\x95\x3c\xe9\xf2\x8a\x5e\xb0\x65\xc7\xa2\x32\x86\xf3\xea\x80\x20\xaf\x7a\xb1\xc1\x4a\x67\x09\x20\x3f\xef\x51\xa4\x22\x89\x73\x59\x73\xc1\xf9\x5b\xef\x2f\x30\x08\xb7\x05\x0e\xd8\x5a\xed\x4f\xe9\x27\xd8\x71\xd9\xc8\xee\x07\x63\x15\x9e\xa3\x45\xe6\x1b\x0f\x78\xd0\x2d\xd4\x46\x82\xa9\x27\x6f\xcb\x09\x48\x6f\xf2\xdd\xf8\x07\x6a\x9b\xe6\x65\x14\x77\xec\x62\x0a\x07\x22\xba\x7b\xb3\x9b\xa4\xf5\xa4\xad\x07\x9f\x83\x72\xf3\x92\xb7\xa6\xd3\x54\x59\x13\x63\xbf\x14\xcc\xaa\x24\x42\xae\xc4\xb1\x69\x81\x7a\x8b\xb5\xc0\x70\x73\x3c\x9c\x71\xd9\x42\x46\x2c\xc3\x89\x18\xce\xf2\x65\xe6\xa7\x2b\xe3\x4c\x81\xf4\x75\xd1\xca\x88\xdf\xe8\x75\x8b\x46\x05\x1e\x77\x1f\xe8\x6e\x71\xfb\x8e\xcb\xac\xe2\x68\xa8\xd6\x3f\x39\xe0\x7e\x49\xf0\xa3\xe1\x58\x2b\x77\x23\xcb\xd4\x4d\x61\xc5\xc3\x4a\xbe\x8c\x68\x30\x74\x75\xa7\x49\x5b\x58\x08\x0f\xd2\xc0\x03\x95\xcf\x40\xe0\xbb\x1f\x88\x95\x07\xaa\x2b\x14\xd9\x05\xc6\x32\xfa\x43\x6e\x51\xf6\x19\x70\x1a\xc6\x74\xb4\xef\x56\x65\x49\x25\x82\x60\x6e\x2d\xca\x08\x3c\x88\x8c\xca\xc7\xc6\x07\x1d\x3b\xd5\xa3\xd6\x9c\xc3\xf8\x2f\x76\xb3\x69\x6a\xf5\x9e\x91\x9c\x9b\xc8\x3a\x91\xbf\xcc\x94\x56\x26\xe0\x84\xc6\xcf\xf3\xf7\xcd\x7e\x9f\x8e\x7e\xf0\x1a\xfa\x4c\xf2\x70\xf5\xdf\xde\x1d\x8e\xf9\x5b\x90\xf6\x8a\x86\x69\x51\xb2\x9b\x44\xe3\xd1\x1d\x0a\xe4\x9e\xef\x3c\xf7\xb6\x18\x3d\x07\xe6\x34\x17\x1f\x01\x83\x39\xb6\x83\x42\xe6\x1e\x8d\x42\x9b\x42\x4c\x3c\x65\x0d\x9c\x2d\x58\x6d\xed\xd9\x44\x43\xb5\xc8\x9e\xd2\xe6\x92\xf8\xb5\x81\x2c\x9c\xb0\xa7\xab\x7c\xc3\x2e\x9c\x4e\xb2\x82\x54\x5f\xf5\xcc\xb8\x2c\x52\x33\x1c\x43\x86\x62\x1a\x4d\x5d\xdd\xa4\x83\x04\x4a\x7f\xb4\xd9\x6a\x2e\xe5\x41\x52\x80\xa7\x9f\x3e\x52\x4c\x38\xb9\xc2\xc4\xc7\xff\x13\xbc\x54\x16\x7e\xb4\x3d\xb8\x53\x81\x60\x40\x7a\x99\xd8\xd3\xe5\x3c\x98\xfe\x35\x99\x3c\x8d\xba\x7d\xc9\x46\x6d\x15\xcf\xcf\x34\x25\x53\x49\x83\x4c\x21\x69\xf8\x94\x69\x8e\x73\x84\x89\x7e\x4b\x0d\xb3\x71\xb2\xbf\x3b\xe1\x7a\x8e\x47\x1c\x7b\xdc\x01\x98\xbe\xae\xb2\x9b\x11\x18\x87\x15\x84\x9b\x13\x44\x8e\xf2\xbf\xaa\xbc\x16\x28\x87\x4e\x1d\x06\xae\x83\x38\xbf\x9d\x3c\xff\xfc\x6d\x27\x71\xce\x1a\xcb\x28\x8d\xbe\x7b\xa2\xd3\x7d\x76\x03\x29\xcd\x54\x53\x1f\x6f\x18\xb7\x29\xa0\x3e\x6f\x9c\x2f\xaf\x5d\xd1\x2a\x06\xff\x0c\x43\x6e\x97\xd0\xda\x50\x2b\xe5\x9d\xcc\xf7\xb2\x0f\xc9\xdf\x57\xd7\x14\x6d\x0f\x87\x68\x0f\x7d\x61\xcb\xe3\x7c\xf4\xed\xac\xa8\xec\xe9\xaa\x64\x82\x78\x3e\xb9\xfd\x85\xb1\x18\x9c\x51\x2c\xdb\x87\xe9\x36\x5b\xab\xa0\x32\x86\x0c\x88\x49\x96\xc8\x74\xa5\xd8\x25\x12\xf6\x42\x9c\xdb\x0b\x54\x28\x10\xa3\xc0\xb4\x60\xf5\x03\x0a\xd4\x07\x1b\xc1\xfb\x53\xf6\x9b\x64\xdf\x33\xb8\xc7\x9e\x34\xf6\x95\xce\x66\xde\xc9\x78\x28\x72\x5e\x29\x41\xdc\xea\xad\x03\xae\xff\xa7\xff\x4f\x7f\x9d\xdf\x8e\x1b\x0a\xac\xac\xb0\x11\x8f\x98\x56\x11\xbd\xe2\x59\x10\x8d\xa6\xde\xc2\x0c\x60\x50\x36\xe8\x26\xb3\x44\x2b\xd3\x3a\x07\x43\x51\xb5\x44\xbf\xab\x16\x78\xed\x9d\xb2\x9c\xfb\xa6\x84\xf5\x1b\xa9\xb9\x40\xc7\x35\xe9\x11\x6e\x49\xc7\x99\x5a\xd8\xd9\x4d\x1a\xf8\xf2\xd8\x10\xd7\x76\xbf\xa3\x96\x82\xc7\x80\x18\x02\x49\x8a\x98\x4d\x89\xa9\x53\x6a\xb3\x71\x59\xd6\x0c\xd9\x36\x02\xb8\x56\x02\xb8\x36\x02\x58\x7f\xe3\xb2\x58\x07\xe9\x41\x07\x99\xeb\x75\xcb\xb7\x3b\xd2\xc2\xd1\x72\x15\xf8\xc4\xf7\xd6\xf3\x5a\x93\x79\xe7\x0d\x65\xba\x91\xe8\x05\x13\x4e\xdb\xfd\xd8\xf4\xcc\x6c\x2f\xe4\x49\x96\xbb\x88\x79\x93\x3f\x76\x91\xf7\x46\xe3\xcf\x1c\xab\x9f\xba\xf4\x70\x43\x16\xa5\x7f\x63\x99\x29\x77\xf3\x9d\xd9\xee\xdc\xf1\x67\x41\xb9\xb0\x57\xac\xfc\xf2\x60\x53\x67\xae\xe9\x46\xfc\x9d\x40\x78\xad\xe3\xb3\x67\xe5\xb4\x90\xd8\x81\xdc\xef\x58\x69\x85\xbf\xe6\x1f\x8a\x4b\xd5\x84\x03\x55\x0c\x3f\x5e\x30\xa8\x9e\x73\x18\x50\xf2\x4f\x3f\xac\xf6\x8f\x4d\x6c\xda\xdf\xf1\x95\xcb\x96\x01\x5b\x0f\x06\xf9\x65\x9b\x1c\xf4\xcb\x76\xa1\x77\x66\xab\x17\xe5\xcd\x75\x91\xe6\xc2\xf6\xee\x5d\x5f\x23\x73\xae\xd0\xfe\x88\xf4\x5a\x88\x3a\xe7\xec\x58\x1b\xea\xf6\x97\x25\x00\x19\x66\xa7\x1b\x94\xd9\x98\x31\x3a\xeb\x0a\xda\xc8\xd4\xbd\xae\x62\xc4\x45\x0b\x25\x70\x5c\x1f\x80\x81\xe0\x41\x5d\x44\xbf\x0e\xd0\xb8\x7e\x48\x09\x23\x29\x26\x7d\xb7\x38\xd5\x3a\x77\xcf\x5a\xbb\x69\x5f\x8e\x0c\x9a\xe9\x16\x8c\xd1\x50\xaf\x02\xca\xad\x55\xe1\x18\x55\x5a\xb2\x4f\x23\xa0\xdd\x3d\x09\x55\x02\xd6\xf4\xa3\x00\x5b\x3e\xc9\xd1\xcd\x99\xe3\x97\x22\xc5\x94\x22\xe1\x00\xcf\xed\x46\xf8\x73\xc8\x05\xa1\x1b\x84\xe2\x12\x45\x83\x9a\x59\xe3\xcf\x18\x4d\xb1\x7b\x46\x86\x55\x40\xef\x29\x8f\x78\x75\x38\xa6\xc6\xea\x5f\x47\xe4\x77\xfa\x2b\xa5\xb6\xf1\xf4\xf1\xb9\x47\x6e\x15\xdb\x17\x37\x65\x59\xa6\x4a\xc5\x01\x01\x9e\x5e\x64\xbe\x79\x4f\x70\xe3\x1f\x0a\x30\xb9\xc6\xc1\xf2\x5f\xcc\xe1\x8f\x0f\x93\x48\x36\xfe\xd9\xae\x63\xb3\xc0\x4e\x14\x49\x14\x7d\xad\xf8\xed\x0f\xdd\x0b\x32\x53\xea\xdc\x1a\xa7\xb6\xef\x7b\x96\xcc\x96\x14\xf9\x6f\x55\x77\x6d\x49\xeb\x96\x8d\xcb\x9f\xc8\x8d\xed\xfe\x23\x50\x85\x2d\xf3\x34\xb2\xe9\x08\x7d\x55\x25\x28\xee\xb7\x26\x78\xfa\xf0\x50\xb1\x66\xdb\xe9\xf9\x18\xef\x05\x27\x3f\x94\xe7\x0f\x5b\xf9\x79\xdb\x8d\x87\x05\x6c\xf7\x49\x81\x0d\x4e\xb3\x5e\x1d\xe0\x65\xe5\x4b\xc2\x70\x3f\x41\xad\xcf\x35\x22\xe2\x0e\x9e\x60\xa1\x44\x82\xdb\xe7\x08\x53\x42\xb5\x01\xe0\xb1\x66\xe3\xb1\xa6\xe3\x07\x90\x05\x54\x80\xfd\x4b\x6d\xba\x3b\x63\x99\x19\xeb\xfd\xab\x4a\x9d\xbb\x44\xf1\x80\xd8\x0d\x47\x71\xf7\xa1\x7b\xd0\xa4\xdd\x40\x59\xa9\xfd\x51\x5c\xc7\x6f\x4a\xd0\x09\xc1\x17\x2b\x46\x89\x83\xa7\x1c\x8e\x49\xb8\x3a\xe0\x18\x1c\x1d\x53\x5f\x4b\x1d\x4d\x75\xb5\x25\x58\x8f\xe3\xb8\x0e\xcb\xef\xf1\x62\xdb\xe9\x0f\x10\x12\x23\x56\x85\x20\x14\x5d\xe8\x4a\x7c\xa0\x12\x1b\xca\xbe\xe8\xf8\x21\x29\x6a\xe7\x58\xb0\xba\x50\xd2\xa7\x5f\x40\xe7\x30\x24\x4f\x31\x96\xd1\xd8\x19\x2a\x6d\xb9\x83\x09\x53\xd6\xfc\xe5\x1c\x5b\x6c\xd5\x9e\x84\x2a\xac\x91\x6f\x9e\x77\x71\x16\x73\xdb\x8b\xe4\x2e\x74\xed\xf5\x83\x3f\xb1\x65\xd0\x06\x9f\xc3\x4e\x2d\xeb\x89\x42\x18\xaf\x0a\x5e\xe1\x82\x26\x6d\x92\xa4\x8b\xd9\x64\x1b\x48\x60\xfc\x86\x50\x85\xee\x44\x7f\x27\xb2\xc1\x24\x0d\x88\x7c\x03\xab\x30\xc4\x60\x52\x0d\xe5\x96\xfc\xe1\x2f\x20\xf3\xfd\x32\x10\xd7\xf4\xb9\x38\x75\x3a\x4b\x4f\xe4\x76\x21\x4d\xfb\xdf\xb6\x00\xc2\x20\x38\xa1\x6b\x4c\xe9\x66\x7c\xe8\xfe\xb7\x1e\x5f\x27\x44\x67\xb5\x75\x5d\x07\xab\x03\x81\x2b\x3c\x2d\xa3\xe6\xdd\x57\xab\x9b\x09\x56\x5e\x86\x4d\x5c\x11\x69\xef\x99\x5b\xe5\x64\xed\x1d\x5e\x4f\x61\xea\x34\xf7\x57\xb9\x7a\x4b\xe4\xa2\x73\x8d\x25\x67\x05\x37\xca\xc1\xe9\x64\x43\xbb\x79\x02\x52\x1c\x3b\xdb\xcd\x8a\xd2\xdc\xe4\xa2\x45\x61\x04\x59\xe2\x88\x79\xeb\x07\x6a\xb2\x56\x53\xc5\xda\x7d\x10\xfa\xd5\xb3\x68\xd9\x52\x87\x53\x50\x56\x68\xfd\x9b\xda\xf2\xd4\xe5\xd1\x19\x6b\x0c\xd8\xcd\xa4\x75\x53\xa5\x2d\x36\x38\x65\xec\x3c\x00\xe6\x95\x8d\x12\xd4\x4a\x5c\xdb\x64\x01\x6f\xc2\xf3\x33\x1d\xcf\x6a\xbd\xb6\xa7\x35\x1a\xf0\x2e\x64\x9d\xe4\x87\x04\x6d\xb6\x4f\x42\x14\x60\x06\xae\x18\x55\x1a\x3e\x30\xe3\x7c\x75\x7d\xf9\xba\xae\x6b\x31\x7e\xbf\x6b\xb2\xa7\x14\xa6\x72\x40\xd0\x05\x67\x1f\xd5\x1b\x34\x29\x38\x19\xd7\xb5\x31\xc3\xf7\xa3\x33\xbf\xe1\x04\x08\x18\x73\x63\x8a\xd7\xc3\x9a\xfc\xa5\x47\xaa\x6d\x70\x56\x23\x63\x53\xc2\x38\x79\x16\xdc\xf3\xb4\x54\x21\xf4\xf7\x6d\xae\xf9\x65\x20\x13\x7f\x20\xe8\xc9\x36\xb6\xc2\x47\xc0\xd4\xbb\xbc\x85\x6b\x73\x9c\x17\x2b\x77\xd3\x16\x70\x75\xce\x4e\x16\x9a\xee\x00\xe8\xfb\x64\x71\x22\xe5\x77\x97\x6b\x89\x94\x30\x70\xd1\xa9\x69\x8d\xaf\x14\xf8\xe1\x7a\xc0\xf8\x1e\x7d\xe9\x0e\x00\xa9\xad\x05\x6f\xd5\x10\xff\xa0\xa7\xcb\xca\x3c\x0d\x54\x56\x69\x7d\xe8\xef\x04\xb5\xef\x7d\xa9\xa5\x36\xf8\x36\xb0\xa9\xfe\x69\xd1\x34\x94\xb9\x18\x73\xcd\xd1\x72\x4c\x45\x70\x4a\x4f\x04\x7b\x41\x35\x3c\xdc\x09\x94\xdc\x16\xc0\xe6\x55\xd9\x81\xd7\x1f\x0a\x14\xd8\x0b\x9c\x53\x6a\x17\x90\x03\xb4\x54\xbc\x7e\xd4\xba\xe4\xae\xe9\x46\xbb\x93\x75\x24\x1e\xdd\x06\x84\x2c\x00\xa8\xe5\x04\xad\x09\xc4\xfb\xfe\x15\x8b\x68\xbc\x04\x91\x19\x89\xd1\x52\x11\xe7\x39\x7a\xaa\xb3\xb7\x15\xa2\x78\x0a\x14\xa3\x25\x17\x27\xfa\xf3\x0f\x00\xd4\x9b\x04\x46\x16\xb4\x88\xe3\x03\xfd\x99\x13\x89\x63\xf4\x8f\x44\xf1\xa5\xcf\xba\xd1\x4f\x69\x64\x7e\xd3\xfd\x25\x70\x5a\x55\x05\xd8\x78\x98\x6a\x7a\x18\xe0\x8f\x8d\x91\x2c\x70\x93\xa9\x6d\xa3\x11\x89\x46\x13\xed\x9c\x7f\x02\xfb\xb6\x12\x4b\x1a\x85\x3a\xb3\x5b\xe8\xf4\xe2\xca\x31\x7e\x6a\xfd\x64\x48\x7a\xfe\x46\xd2\x2b\x5a\x26\xe1\x8d\x6d\xc8\xf7\x77\x16\x59\x15\xa5\x7e\x8d\xa1\x6e\x17\x21\x75\x22\x99\x88\x38\xfd\xf9\xd1\x05\x5e\x41\x28\x14\x15\x12\xb6\x4f\x59\x5f\x0f\x26\xd6\xb3\x54\xd3\x27\xfa\x2b\x4e\x2c\xc9\x6d\xe4\x57\x9c\x43\x8e\xa2\x36\x26\x2e\x59\xd4\xce\x91\x4e\x0c\xc9\x25\x78\x17\x4c\x01\xb9\x19\x5d\x88\xfa\xb3\xc0\xa2\x94\x44\x4f\x75\xa6\xce\x63\x94\x3a\x60\x6a\x99\x21\x26\x12\xda\x6b\xcf\xd7\xf8\x12\xea\xc5\x9a\x92\xa0\x48\xcd\x6f\xc4\x2e\xf6\x66\x17\xe3\x59\xb9\xd3\xef\x67\x7a\x2b\x1d\x24\x31\xcb\x88\x1f\x68\x93\x34\x80\xfe\x40\x63\x1a\xb7\xf0\x44\x4c\x3e\x47\x79\xb0\xb2\x3b\x77\x61\xf3\x15\x50\x02\xe9\x14\x1c\x7a\xbb\xd1\xa5\x45\x67\x96\x5d\xbd\x40\x65\xb8\x58\x5b\x2a\x4d\x71\x29\x0f\x23\x82\x24\xb2\xd9\xb3\x69\x21\x1f\x8f\x9c\x53\xef\x1f\xa0\xc7\xbc\x79\x97\x99\x59\x3a\x22\x32\xdd\xd1\x9f\x26\xaa\xc6\xff\x47\xd2\x59\x2b\x49\xaf\x43\x41\xf8\x81\x1c\xc8\x0c\xe1\x18\x66\xcc\xcc\x99\x99\x99\xfd\xf4\xb7\xf6\xbf\xd1\xd6\x26\x2e\x59\x6a\x9d\xfe\x5a\x75\xc6\x1a\x6c\x09\xce\x0b\x53\x3c\xd1\x91\x3b\x47\xa3\xbe\x8c\x57\x8e\x60\xfc\x2c\xa9\xb9\xbc\x53\x4b\xf9\x5a\x8e\xf9\x60\x52\x06\x5e\x03\x2b\x0f\x4c\x65\x0f\x10\x51\x3b\xfa\x68\xea\xc5\x1a\xe3\x42\xee\x2b\x8e\x27\xfa\xef\xcd\xb7\xd2\xf8\x11\xc4\x43\x32\x94\xaa\xac\x2b\x85\x0c\xd7\x64\xc9\x53\x4d\xf5\xb8\xf0\xf8\x7d\xec\xa5\x08\x0a\xa2\x4d\x24\x18\x07\xde\xd5\x7a\x45\x61\x8f\x6b\xe0\x0c\x2a\x8d\xd1\xdd\x31\x70\x88\xdf\x2f\x4d\x53\x14\x75\x11\x19\x94\x17\xe6\x91\x29\x13\x23\x4c\x50\xad\x21\x07\x83\xa4\xfa\x00\xe2\x2d\xd0\xc5\xdc\xf7\xfd\x00\xd9\x53\x85\x75\x9c\x07\xf2\x7f\x13\xf5\x83\x57\xd1\x5d\x90\xcf\x3e\x84\xed\xa5\x8e\xf7\x28\x23\xfa\x18\x1f\xa1\xc8\xdb\xb5\x80\x15\xe6\x77\x13\xdc\xf9\xb5\x77\x7d\xd2\x45\x73\x78\xa7\x3e\xa3\x1a\x4e\xf1\xc8\xdc\xa0\xca\x9d\x1e\x91\xca\x8f\x04\x9e\xe4\x47\xe2\xce\xf4\x50\xe9\xed\x0d\x4b\xf9\x76\x9c\xfd\xc3\x21\x4a\x9f\xf4\x49\x22\xda\x42\xf5\xcb\x2d\xa6\x0d\x19\xe8\x7a\x8e\xe6\x9e\xe7\x45\xcd\x48\xeb\xe4\xce\x34\x04\xf2\xc1\x78\x29\x9c\x2c\x56\xe7\xaf\x34\xfc\x81\x01\xb5\x3c\x5b\xc4\x73\xc9\xc4\x8b\xf0\xd3\x39\xce\xec\x73\x0b\x12\x2c\xe8\x3b\x29\x1c\xbc\xab\x36\x6d\x9b\x03\x4c\xe6\xc6\xee\x0f\x3b\x79\x46\x73\xa5\xa9\xf5\xc8\x40\x04\xdf\x47\x85\x21\xbe\x4c\x11\xfa\xa1\x0f\xe7\x62\xcd\x80\x9d\x18\x37\xe8\xd3\x78\xa5\xbb\x7f\x95\x59\x67\x2b\x4d\x4e\x82\x7e\x4e\x82\x9e\x20\x10\x80\xcd\xce\xec\xbd\x1a\x95\xd8\xb8\xc6\x9e\xe5\x81\xfa\x26\x11\x07\xff\xee\xf9\x42\xfc\x38\x14\x71\x7a\x88\xe0\xe2\xe5\x63\x5e\xd9\xc3\x75\xfb\xd9\x48\x21\xc1\xb8\xc0\xb3\x4c\x0c\x9d\xbf\xd4\x9d\x3b\xac\x30\x38\x82\x84\xc9\x55\x80\xdc\x4a\xad\xab\x8a\x50\x10\xd5\xa9\x75\xb7\xcb\x0c\xf0\x63\x2c\x61\x64\xbf\x63\x9d\x7f\x98\xf9\x76\x1c\xfb\xd6\x8a\xf8\xc7\x66\x81\x22\x39\x6e\x74\xa0\x66\xb0\xb8\xdf\x89\x94\x69\xe1\xb6\x04\xc9\x57\x2f\x66\xf5\xc3\xf0\x86\x99\x78\x7b\xb3\x23\x34\xce\x81\x3f\xc5\x94\x8f\x5b\xb4\xab\x95\x00\x3d\xd7\x77\x46\x29\x69\xa5\xbf\x7f\x7e\xf4\xc7\x51\xbd\x49\x9c\x55\x4e\x43\x34\x7d\xf9\x19\x49\x5a\xc4\x4a\xed\x10\xf6\x96\x68\xeb\xaf\xfa\x08\x1e\x27\x51\x5d\xfc\xc4\x88\x52\xa5\xa4\x14\x2a\x9d\x6d\x97\x28\x6a\x7d\xdf\xa6\xed\x5f\xfb\x37\x34\x0e\x9a\x7e\x54\x58\xb7\x73\xb1\x61\x16\xa4\xd8\xc1\xd0\xc6\xdb\xac\x8d\x2e\x9a\x9a\x0b\x19\xcf\xc5\xb6\x7a\x4a\x9e\x67\x05\x04\xf7\x3d\x82\x2f\x4f\x3f\xcc\x7f\x93\x87\x00\x70\xbf\x77\xa8\xf6\x17\xf4\xd8\x52\xd3\x2c\xf2\xf0\xc6\x3b\xf1\x52\x14\x66\x54\x95\xac\x9d\x9c\x8b\x33\x57\x56\x02\x53\xfc\x9a\x78\x83\x5f\x71\x5e\x96\x41\xf8\x10\xda\xd8\x50\x87\x6b\x4f\x70\x01\x0a\xb0\xe5\xd2\x40\x5d\xdb\xb6\x9d\x25\x94\xc6\x18\x2a\xc2\x1a\xb2\x87\x3e\x53\x2c\xbd\x73\x84\xbe\xf3\xea\x8f\x61\xa2\x87\x29\xb6\x2b\xb1\x63\x98\xed\xbf\xc4\x56\x77\xdb\x66\x31\x0f\xf8\xb6\x37\x4a\x02\xc6\x4d\xee\xfd\x4c\x80\x0b\x18\xf4\xdd\x1f\x42\xa8\xde\x01\x69\x90\xd4\xc4\x5a\x00\x4a\x8c\x62\x86\xd0\xcc\x09\x5c\x16\x9e\x34\xcb\xf6\x63\xdf\x1e\x12\x0a\xcc\x85\x0a\xfa\xdd\xa5\x21\x9c\xa2\xc8\x3b\x3d\x1e\x22\x57\xcf\xcd\x92\xdc\xa3\xf2\xbe\x37\x74\xdb\x01\x86\x61\xbd\x18\x05\xdf\xfa\x6f\x8f\x91\xcb\xba\xe4\x0c\x01\x15\x8c\xf9\x6b\x3d\x63\xe3\x64\xf1\xe8\x58\x48\x2c\xd4\x36\xa7\x6a\xaf\x54\x7d\x08\xc9\x06\xbf\x8d\x50\x93\x0e\xb0\x13\x38\x3e\x73\xaf\x55\xad\x4a\x9f\x80\x95\x04\x3f\x59\x0f\xa4\xa1\xb0\x9f\x10\x4e\x2b\xb6\x70\x32\x75\xcc\x5b\x56\xe7\x5d\xc3\x26\x41\x7d\x23\x6e\xbd\x42\xaa\x69\xb1\x9c\x90\x28\xb9\xfa\x43\x56\xf9\x54\xab\x95\xa3\xb0\xeb\x1c\x5f\xf9\xdb\xa7\x70\xc6\x0b\x5a\xc6\xfc\xb4\x9f\xb5\x05\xea\x5c\xa1\xa5\x3b\x0d\x2e\xbd\xee\xa8\x4a\xb5\x67\x08\x18\x12\x18\x4c\xc1\x98\xc7\x8e\x7f\x04\x1a\xd2\xf2\xf0\x00\xca\xff\xf3\xf7\xfc\x41\xa3\xff\x70\x38\x41\x9f\xfa\x79\x00\x0c\x4d\x48\x88\xd2\x37\x72\x93\xf7\xc4\x14\xae\xcc\x10\xbf\x2d\x3d\x5e\x10\x96\xea\x78\xc6\x4d\xc1\x43\xa5\xe1\x6b\xaa\xcc\x4a\x90\x44\x6e\x60\x45\xfc\x16\xc9\xba\x52\xfd\x80\x9d\x37\x71\x84\x3d\xa1\x05\x60\x87\x49\x24\x1d\xb1\xf5\xd1\xa1\x3c\x3b\xef\xce\xa8\xa9\x7c\xc3\x56\xb9\x85\x70\x92\xa2\x28\x6c\x9c\xe7\xfd\xbc\xab\x5b\xdb\x7f\x9e\xef\xc0\x61\x16\x74\x5f\xb6\x2a\xfe\xef\x17\xb1\x27\x38\xd1\x83\x74\x43\x35\x43\xe4\xa7\x01\xb9\x1c\x34\xd5\xa9\x02\xd9\xe7\xf9\x82\x5b\x82\x47\xf2\xd4\x2b\x4d\x1e\x82\x6e\xe8\x04\x7b\x7b\x32\x68\xb9\x24\xef\x8b\xdf\x76\x26\x9e\xa0\x6d\x88\x14\xa2\x73\xcd\xd0\xf5\x87\xa4\xcb\xf9\x1b\x2c\x74\x80\xdf\x44\xcc\x40\x1a\xec\xba\x10\x55\xee\x0f\xad\x9e\xcc\x96\x19\x22\x5b\xe1\x9b\x23\x9f\x18\xf5\x34\xee\x33\x87\xab\xf9\xa5\xc1\x5d\x86\xd8\x4a\x60\x37\x43\x77\xf2\xb7\xd7\xaf\xc8\xe6\x3e\x76\xb0\xf6\xcd\xbf\x3e\xd7\x94\x5a\x09\x62\x06\x19\xc8\x4d\x4d\x51\x3a\x8f\x9b\x42\x88\x3e\x32\xa0\x82\xfe\xca\xbc\xe4\x10\xae\xcc\x42\x40\xba\xa3\x44\x4e\x1f\x62\x1b\xbe\x33\xdc\x9c\x3d\x33\x39\xf3\xbb\x77\x8a\xea\x6b\x8d\xa0\x03\x23\xc5\x77\x5a\x92\xc2\xd9\x0e\x3b\xeb\xb6\xed\x49\x0a\x1d\xb6\x9b\x1b\x5d\xfa\xf4\x6d\x9d\x58\x50\x10\xe3\x18\xec\xe6\x4e\x38\xdc\x97\x2b\x66\xfe\x86\xa6\x0c\xf9\x14\xa1\x51\x5c\xef\x17\x80\xf3\x5d\x89\x0d\xb8\x64\xe8\x44\x16\x3d\x86\xf0\xae\x3e\x27\xc5\x10\xc9\x06\x0e\xcc\x6a\xbe\x9c\x01\xe1\x12\x9c\x41\x85\x09\xf1\xae\xbd\x61\xcc\xe9\xc2\xce\x6f\x15\x43\x33\x44\xde\x17\xa3\x28\xf3\x04\xd0\x9e\x31\x26\x38\xe3\x55\xda\xc7\xbb\x24\xe5\x8e\xf2\x79\xe5\x6a\x39\x99\xd8\x50\x50\x9c\x79\x8e\x6d\x94\x10\x14\x2f\xb2\xa7\xc1\xce\x10\x34\x4d\xa0\x18\x46\xe0\x77\x06\x45\xfb\xce\xc0\x89\x75\xff\xca\x9c\x21\x48\x88\xa4\xcf\xf3\x7d\x61\x18\xfb\xd5\x9e\x51\x9b\x25\xa8\x5b\x0b\x36\xf9\xea\xa2\x99\xda\xac\xc6\x77\x12\x78\x96\xb6\xf3\x60\x3c\x73\x20\x76\x32\xba\x07\xdf\xe6\x4e\x94\x81\x05\xa3\xf1\xa3\x08\x9b\x3e\x00\xf4\x82\xf2\xba\x5f\x49\xfb\xd2\x85\x69\xb6\xc1\x80\x82\x1d\x55\x71\x66\x0d\xf6\x1f\x8f\x20\x69\xc0\x1c\xeb\x4a\xbd\x0f\xd3\xef\x67\xe8\xe6\x27\xb6\xa1\x18\xf6\x7b\x5e\xf4\x15\xc4\x7a\x21\x9f\xed\x54\x6a\xe8\x66\x24\x50\xfb\x00\x5e\xbf\x00\x00\x9c\x4a\xd7\x93\x61\x30\x06\xcf\x32\x55\x68\x7c\x35\xdd\x21\xea\xa0\xa6\xf2\x28\x21\xfe\x53\x59\x7a\x6c\xbc\x53\x76\x53\x18\xf5\xb6\xbb\xd8\xde\x37\x81\x5b\xf4\x39\x8f\x27\xc5\x48\xa4\xd1\x56\xe5\x71\x5c\xa0\x5c\x3e\xc2\xef\x7b\x5d\xbf\x3f\x6f\xa2\x0b\xda\x04\x3d\x92\x7a\x8f\x49\xde\x63\x77\x9f\x75\x84\xec\xb1\xdc\x30\xe5\xd8\x39\x8a\x46\xaa\x9a\x74\x57\x8e\xc4\x0d\x7c\xe7\x48\x51\xe3\x19\xb7\x24\xd5\x8d\x4d\xda\xf2\x8a\xc6\x3f\x6d\x1d\xec\xb3\x9c\xc5\x00\xf3\xac\x41\x0f\x70\x53\x65\x4a\x59\x55\x29\x0c\x7a\x31\xa6\x28\x18\x04\xd1\x19\x86\x74\x60\xc2\xe0\x8f\xd8\x81\xeb\x0b\xe4\xc7\x3d\x32\xcc\x9b\x62\x3b\x69\x78\x9a\x3b\x6f\x37\x4c\x81\x33\x3c\x4e\x90\x1e\xa8\x63\xf6\x63\xf2\xec\x6b\x88\x75\x78\x94\x8d\x6e\x4c\xd1\x97\xa4\x99\xbd\x44\x47\x42\xae\x8d\x6e\x9f\x42\xd2\x77\x78\x0a\x53\xe4\x20\x6b\x2b\x40\x11\x9c\xf4\xd7\x83\x82\xb6\xca\xb0\x75\xee\x1f\x9c\x01\x90\xa2\x95\xe5\x49\x8b\xc3\x0b\x88\xd8\xa8\xc1\xf1\xc7\xc1\x73\x5e\x16\xcd\xf0\x4b\x90\x10\xa2\xe9\x1f\xc0\x30\x6c\x14\x3d\x0b\xca\x32\x3b\x37\x35\xf2\x59\xd5\x26\x37\x12\x3d\xd7\x82\xc2\x38\x7e\xa1\xde\x3f\x48\xde\x9c\xb3\x3d\x14\xee\x7b\x86\xe7\x09\x15\x63\x6e\x82\x17\xe2\xa9\x98\x81\x86\x21\x90\xb5\x9c\x82\xc2\x07\x62\x18\x86\x4a\xe9\x1f\x0d\x65\x34\x60\x90\x3b\x4d\x9e\x6d\xb8\x10\x2e\x33\x44\xb1\x39\xc7\xf3\x78\x8b\xb4\x2b\x04\x3b\xf4\x99\x8c\x67\x18\x04\x30\x46\x6d\x3b\x05\xe2\x2b\xac\x4d\xd2\x26\x45\x6d\x6f\x47\x60\xc3\x79\x62\x2b\x0c\x4a\xa8\xad\xf7\x2f\xf1\x8a\xd6\xf5\xa3\xa8\x13\x8b\x41\xfd\xe3\x5d\x1e\x27\x40\x9d\xa6\x14\x4e\x50\xc4\xbc\x86\x58\x7b\x40\x9e\xd5\xfd\xe5\x67\x92\x8d\xda\x36\x7f\xe7\x2f\x8a\xce\x7b\xc7\x5d\x2c\x27\x72\x0c\xc6\x39\x38\xcf\x02\x59\x92\xc6\x3b\xe8\x45\x57\xea\xed\xfb\xbd\x1a\xe4\x7e\xa1\x9b\x9e\x71\xf2\xfe\xa0\xa3\x40\xfd\xbe\xd6\x0c\x9d\x00\x94\x22\xf6\x5c\x89\x49\x72\x33\x41\xd1\x6f\xd2\xbb\xf3\xcb\xe5\xdd\xc2\xdd\x53\x21\x16\x07\xc4\xb0\x59\x7b\x1b\xc3\x1b\x1f\xa7\x19\x0e\xc3\x0d\xe1\x14\x46\xca\x32\x9d\x53\x54\x79\xd2\x7f\xe4\x02\xe5\x58\x18\x8e\x1d\x52\x1f\xbb\xbb\x3d\x1b\x10\x2b\x52\xf4\xb1\x07\x2e\x75\x91\x66\x1d\x9a\x66\xb0\x87\x7f\xf0\x80\x30\xe7\xcf\xc9\xdf\x14\x4d\x38\x06\x38\xfe\x9e\xf5\x57\x33\xc7\xd7\x60\xdf\x82\xc2\x1c\x08\xa2\xcd\x23\x1a\xa1\xd3\x3f\x29\xc2\xf1\xfd\xe0\x3b\x70\x39\x67\xc3\xa5\xf8\xb7\x67\x9b\xb4\x65\xd1\x38\xcf\xa4\x01\x57\x0c\x62\xfe\xe3\xec\x65\x58\xf6\x2f\xf6\x63\x5d\x8f\xf9\xe3\xe8\xed\xe2\x5d\xf5\xf3\x45\x18\x9a\x8e\x0d\xaa\x1c\x5f\xcc\xc5\xc8\x44\x9d\x81\xc2\x65\xf2\x1d\x6a\x61\x23\x5b\xe7\xf0\x86\x60\xef\xfd\x82\x3a\xa8\xed\xd6\xac\xc8\xe6\x3f\x51\x09\x32\xef\x14\x92\xb0\x18\x51\x07\x14\x87\x15\x9a\x33\x63\x1a\xeb\x09\xf7\x2f\x00\x50\xb4\xf1\x21\xca\x4e\xd2\x99\x1e\x68\x69\x98\x27\x80\x99\xb2\x2c\x01\x4f\x31\x80\xce\xda\xfa\xba\x6b\xb1\x92\x04\xa8\x65\x08\x82\x84\x10\x02\x41\x5e\xea\xd9\x76\xe0\x06\x4d\x72\xef\x9b\x9f\xe2\xe4\xb9\xce\x1d\x9c\x78\x7e\x1a\x78\x92\x1b\xcd\x68\x39\xb7\x9c\xfa\xb7\x36\xfa\x57\x4d\x67\xff\x71\x37\x73\x7a\x99\xb1\x66\x28\xd9\xe8\x26\x62\xdf\x98\xc6\x3e\xdb\x51\xc8\x18\x20\x2e\x48\x5a\x16\xb9\xa9\x9f\x23\xb6\x2c\x5b\x22\xb0\xdd\x33\xdf\xac\xf0\xc5\x29\x5d\x14\x4d\x51\x80\xcd\x28\xdd\x51\xaa\x2c\xb3\xfc\xdc\x5b\x40\x3d\x3e\xe2\x8d\x70\x73\x97\x37\x26\x66\x3f\x12\x02\xe5\x56\xec\xfb\x85\x61\x1c\x3a\x05\x65\x4e\x6c\x81\x0a\xa0\xf9\xd8\xcf\xc2\x48\xe7\x99\x38\x92\xa1\xe5\xc3\x9a\x54\x17\x5b\xf7\xce\xf2\xa4\x24\x06\x22\xf1\x0c\xca\xc7\xf1\xc2\x9e\x4d\x05\x80\x2a\xc0\x4d\x70\x1f\xbc\x1d\xcf\x7e\x8e\x33\x9b\xf2\xec\xe8\x0c\x15\xff\xf8\xa0\x0f\xd1\xa0\xd1\xc8\x7c\xf2\x71\x65\xaa\x8f\x37\x28\x85\xa5\x80\xa8\xeb\xbe\x73\xf7\x4d\xfe\xcf\x4b\x26\x66\x62\x7c\xc8\x63\x64\x54\x97\x41\xcb\xde\x92\xc4\xea\x04\x0e\x4a\xef\x4b\x43\x09\x00\x24\xc0\x3c\x23\xc7\xa4\x1f\xc4\x40\x49\x0c\x1b\x5b\x2c\x59\x81\xde\xe2\xf7\x71\x9e\x0f\x69\x8f\x6e\x0f\x51\x7a\xdb\x00\xec\x91\xac\x68\x44\xdf\x7d\x3f\x67\x68\x20\xdb\xcc\x10\xf9\x06\x00\x92\x33\x34\x49\x60\x01\x1e\xb2\x78\x92\x85\x4e\x5d\x9a\xc3\x09\x5e\xc7\xb9\xe1\x5c\x8c\x7a\xe8\x38\x52\xb4\x10\x41\x58\x82\x4a\x4e\x98\x44\xed\x6b\x68\x64\x45\x71\x99\x26\xd7\x56\x61\xf8\xb1\x16\x7b\x6a\x63\x0c\xdf\xf8\x06\x40\x9f\x3b\xb1\x1c\x4e\x22\x18\xc8\xad\x51\x23\x3f\xa2\xdc\x98\x9d\x4f\x7d\x9f\x26\xbd\xcc\xc1\x9a\xf6\x35\x0c\x0a\xa8\x2c\x2f\x21\xac\x9b\x54\x7a\x0e\x6f\xb5\x95\x37\x1f\x06\xd8\xa0\x74\x00\xa6\x1b\xd0\xb4\x22\x52\xe2\xdb\xa2\x88\x5f\xce\xd0\xb3\x2c\x0b\xb9\x03\xc8\x84\xcb\xd3\x1c\xc9\x1f\x6d\xe2\x84\xb6\xfc\x60\x17\x21\x19\xa3\x31\xcb\x93\xe7\xef\x9b\x61\x78\x15\x0a\x22\x8c\xef\x1e\x59\xa4\x4a\x2c\x2d\xcf\xb0\x2c\x3d\x04\xf1\xb1\x92\x01\xa7\x4f\x9d\x37\xb9\x87\x37\xe8\x3c\x94\xca\xcf\x95\x3c\x56\x8b\xac\xbf\x3b\x66\xcf\xbf\xd1\x1d\x5a\x23\x86\x8d\x06\x8a\xf2\xe9\x27\xfd\x98\x97\x40\x83\x42\x6f\x23\x34\xe2\x8a\x51\x22\x81\x07\x01\xe6\x7e\x77\x86\x79\x48\x9c\xda\xd1\xfb\xa7\x6f\xb4\x2b\xe2\x60\x00\x26\xc0\x66\xa6\xdf\x0f\x33\x65\x81\x49\xaa\x76\xcd\x80\xbf\x32\x40\x89\xcf\xc7\x28\x9d\x17\x7a\xf1\xcc\x09\x7c\x1e\x10\xf5\x7e\xc6\xfd\x21\xcf\xa2\xd9\x18\x06\xc5\x30\x0c\x61\xde\x2f\x02\x68\x1c\xc6\x3c\x6d\xd2\x26\x15\x98\x26\x00\x74\xdb\xef\x67\x01\x51\x71\x0c\x43\xa5\x39\xa3\x59\x4c\xde\x7b\xdb\x9c\x75\xa1\x2c\xb2\xd1\x57\x7d\xb4\x30\x15\x9c\x27\x94\x23\xf2\x7a\xb6\xa7\x8b\x94\x20\x4d\xea\x4c\xd9\xf7\x28\xf8\x8a\x8c\xa4\xd6\x57\xf1\x6d\x5e\x0e\x54\x53\x7f\xfb\x14\xe6\x36\xa2\x06\x52\xbb\x79\x5c\x83\x41\xb4\xa6\x7f\xb9\x3b\x81\x68\x26\x4d\x03\x53\x6a\x8e\xb1\x2c\x4b\x3b\x67\x1b\xe1\xab\x3a\xf4\xe6\xb6\x2f\x80\xf0\x1b\xe4\x79\xc9\xa9\xae\xda\x5a\x1d\x64\xe0\x3e\xc2\x10\x44\x4e\x52\x14\xda\xaf\xc9\x7d\x2a\xf8\xab\xd1\x26\x43\x15\xd8\x49\x52\x33\x01\xa0\xf1\x3d\xc0\x70\x0f\xed\x00\xcb\x54\x7e\x40\x10\xc8\xe3\x74\xc4\xc0\x71\xb8\x24\x12\xf2\xf9\x8e\xb1\x36\x1f\xc4\x34\xc4\x0a\xdf\xe8\x44\xf1\xbc\x6a\x9e\x03\x94\x27\x8a\x44\x75\x82\x36\xf7\xfd\x37\xf5\xaa\xff\xc0\x8e\xe6\xec\x75\x66\xd6\xb3\xed\x47\xd6\x4c\x40\xca\x1c\x6d\x47\x48\xb1\xd7\xb4\x7e\x1d\x48\x02\xe7\xcf\x41\xc9\x63\x5d\x46\xe6\x45\x70\x86\x86\x18\xdb\x3a\xc4\xe9\x41\xf3\x6c\x0b\xfc\x6f\x3a\xbf\x10\xc0\x78\xf2\x78\x1d\x49\xc5\x4b\x95\xac\xfb\x1f\xa5\x5a\xc7\x19\xac\xde\x41\xd9\xa2\x2e\xda\x57\x6e\x44\x96\x0a\xc3\x79\x9a\x40\x7b\x73\x96\x63\x88\xb5\x18\xf3\xfc\x31\x5d\xcc\x53\x27\x5d\x2e\x38\x3c\x5e\xa7\x9f\xd5\x9b\xbd\x0b\x86\x15\x7c\xb9\x5d\xbe\x5a\x17\x9d\xee\xc5\x71\x9a\x9a\xbe\xdc\x04\x31\xb6\xe2\x9b\x7d\x9f\x9f\x27\x58\x36\x0b\x02\x47\xa2\x50\xb7\xdd\x10\x39\xaa\x04\xf9\xc4\x66\x50\x71\x6c\x0c\x4c\x06\xc8\xaa\xca\x20\xf4\x85\x63\x29\x1d\x76\xcb\xf8\x97\x7f\x98\xa4\x7a\xcc\xed\xca\xec\x17\x23\x8e\xfd\xc4\x54\xf6\x82\xd3\x05\x19\xe2\x24\x41\x29\x9d\x62\x20\x14\xc3\xda\xc4\xf3\x83\x20\x1e\x59\xa6\xa4\x73\xf1\xf9\xdd\xd1\x11\x9c\x94\x9d\x35\xb7\x2b\x1c\x65\xca\x65\x4c\xa8\x7e\xc9\xe7\xcf\x5f\x5a\x22\xda\x49\x0a\x79\x29\x82\xca\xf1\xee\x8d\xc3\x74\xb3\xa3\xf0\x27\x0f\x77\x3e\x04\x65\xb2\x2c\x24\x63\x5c\x03\x65\x0e\xfc\xe8\xa6\x6b\xa1\x16\xf7\xfd\x69\xdb\x40\x17\x79\x06\xa5\xc4\x1d\x2b\xcf\x92\x00\x20\xcf\x84\x85\x10\xde\xea\xe1\x24\xe5\x4e\x8e\x62\xf9\xd5\xd1\xd1\xb4\xf4\x1d\xa7\x07\x54\x9c\x56\xcb\x7d\x74\xda\xf0\x10\xc0\x02\x9a\x87\x3e\x6f\x35\x8c\x44\x18\xe2\x70\xff\xe8\x1d\xaa\xc1\xf9\x63\xc2\x96\x23\xed\xa3\xfa\x6d\xe6\xfd\x38\x44\xb1\xad\x27\x4c\x2e\xa1\x99\x97\x9f\xee\x40\xea\x60\x0a\x2e\xca\x42\x2f\xfc\x61\x27\x04\xbf\xfd\x50\x48\xc8\x69\xc6\xe7\xb9\x6f\xbe\xc6\x47\x65\xf9\xfb\xa9\xb8\xd2\x11\xfc\x4f\xe2\x4b\x15\xc7\x49\x91\x54\x03\x6a\x40\x15\x3c\x0c\x26\x00\xf0\xf9\x48\x65\x5f\xb0\x96\x07\xdd\xcf\xe4\x8f\xdb\x70\xc2\xf8\x95\x32\x84\x2a\x1d\xfd\xa0\x19\x9d\x8f\x9c\xa6\x5c\x94\xde\x40\x38\x14\xa5\xe9\xf8\x22\xbd\x5f\xd2\xe5\xc8\xfc\xce\x8d\x0f\x60\xb2\xfc\xc7\x19\xcd\x0b\x68\xfa\x7b\x95\xe1\x3c\x4c\x57\x11\x90\x04\x99\x63\x26\x30\x61\x98\x40\xf3\x31\x6e\x57\xfc\x58\x37\x4a\x7c\xd1\x21\x07\x0c\x21\xe4\x18\x92\xbb\x9e\xf0\xb1\x6f\x48\xfe\xe0\x62\x3c\x18\x22\x3f\x70\xa8\xb4\x12\x1a\x73\xae\x58\xf9\xca\xf1\xbf\x33\x0c\x71\x43\xad\x84\x97\xac\x9e\x72\xfb\x9f\x77\x7c\x4e\x1f\x65\xce\x54\x47\xb1\xac\xe6\xba\xba\x4c\xbe\x16\xa9\xfa\x61\x78\x62\xc5\x98\x33\xdf\x91\xca\xa2\x5c\xb4\x61\xd3\x3c\x35\xea\x26\x69\x70\x09\x9e\xe6\x58\xd2\xb4\x4e\x89\x19\xd3\x62\xd3\xdd\xc8\x73\x96\x35\xa1\xf5\x0b\xaf\x39\x9f\x2b\xe9\xa0\xc1\xc7\xa9\x51\x4c\x99\xa1\xfa\x38\x90\x20\x6e\x8c\x4b\xd1\xb8\xa0\x9b\x00\x62\x4e\x0f\x0b\x38\xec\xa6\xbb\x93\x7c\x8c\x38\xf7\x51\xfb\x2d\x89\xeb\xdc\x9f\xaa\xe1\x60\x65\xeb\xf3\xab\x51\x2c\x6d\xa2\xac\x08\x8b\x65\x56\xa0\xa7\x02\x6e\xd2\xe0\xbb\x51\x88\x53\x1b\xf2\xb2\x60\x5e\xb7\x23\x12\x08\x05\xf3\x0e\xf9\xa5\x37\x1f\xa4\x9e\x03\xaf\x16\x8b\x63\x08\x55\x37\x2f\xcb\x8a\xf3\x4e\x3a\xd8\x37\x6b\x0a\xfd\xa9\x94\xc9\xd3\xa3\x69\x70\x36\x3c\xc3\x40\x25\x6d\x07\xa6\x11\x51\x14\x28\xb5\xf3\xdf\xfb\x5c\xd1\x1c\x13\x0e\x0b\x95\x82\x89\x8d\x27\xe8\xe7\xfd\xc0\xd6\x7d\xe4\xa1\x98\xc4\x8f\xb7\x3c\x01\x40\x03\xf4\x4f\xe2\x3b\x10\xc8\x33\x4e\x9c\x8f\x95\x88\x09\x25\xf8\xcd\xbd\x7e\x9f\x7b\x5a\x8a\xd1\xa6\x2d\xfd\xed\x98\x2b\xa6\x89\x09\xa1\xd1\xf4\x7e\xd9\x26\x3c\xfa\x60\x0b\xab\x7b\x9e\x5c\x41\x74\x19\x94\xd2\xa8\x34\x1d\x41\xcb\xe4\xc5\xfd\xe5\x85\xc2\xa0\xe2\xf3\x84\x82\x61\x20\x7d\xcb\x7a\xcc\x2f\x06\x34\x3a\xec\x9e\xdf\x86\x4e\x65\x70\x0c\x8c\x2d\xd2\xea\x0d\x7f\xb4\xdb\xd0\x67\x97\xd2\xe2\x3e\xc0\x29\x5e\xe6\xa6\x10\x4e\x29\x66\x47\xd0\x87\xc4\x52\xf3\x84\xe1\x3d\x3d\xee\xb2\xa3\x37\x8c\x80\xca\xc2\xcb\x21\xb4\xdb\x6c\x96\x13\x5c\x32\xdf\xb1\x1a\x86\x60\xff\xb6\x3a\xfa\xfd\x51\xb2\xe6\x8b\xad\x2d\xaf\x1e\x2e\x14\xde\x6c\x35\x84\x49\x55\x3a\x7c\x26\x3b\x06\x64\xd3\x14\x49\xef\x6b\x76\x01\x05\x55\xcc\xfd\xf8\xa1\x59\x86\xeb\x42\x1e\x31\x01\x08\xcc\x85\xc1\x99\x1e\xf7\x64\x89\xaf\x1a\x24\x7b\x20\x45\x40\x37\xce\x60\x5d\xcf\x19\xaa\xb7\x67\x25\x79\x45\xe2\x89\x64\x3f\x5e\x68\x64\xb0\x91\x26\x30\xa6\x7a\x96\x96\x3e\xf4\x3d\x0d\x30\x0c\x0b\xcf\x73\x04\x14\x7e\xc3\x9f\xaa\x52\x87\x22\xe1\x61\xc6\x2c\x01\x7d\xbf\x8c\xb0\xca\x61\x5c\x2d\x46\xd4\xfc\x00\x35\x07\x4a\x91\x8f\x11\x39\xc6\xc6\xe8\x0a\x63\xf2\xce\xa7\x4e\x4c\xfb\xf8\xde\xf1\x5d\xfd\x65\x73\xbe\x8e\x5b\x3b\x50\xe1\x33\x3c\x50\x08\xd0\x2f\x56\x00\x1f\x87\x6f\x61\x32\x45\x1c\x8c\xbd\x44\x31\x38\xb9\x8d\x25\x6f\x3a\xf3\x78\x21\x52\xb7\xd9\x9a\xc1\x6d\x73\x2f\x6f\x2d\x17\xbd\xc6\xf5\x31\x85\x9a\x12\xf9\xcf\x6f\x1c\xff\x32\x6f\x66\x80\x9c\x79\x2d\x4c\x27\x73\xda\x65\xd2\x3d\x4a\x17\xb1\x08\x42\x3a\x40\xcf\x48\xb5\x4a\x68\x78\x94\xce\x16\x26\x8d\x15\x67\xc1\xa0\x29\xea\xf1\x64\x4d\x13\xc6\x79\xee\x12\x75\x77\x86\xd6\x3f\x9a\xbc\x78\xc5\xb6\xd0\xa4\xd0\xf8\x19\x50\x5a\x3e\x59\x51\x34\x27\xf1\x90\x30\xbc\xdf\x86\x79\x66\x67\x1d\xb8\xed\x29\x96\xe6\xb8\xef\xe7\x19\x60\x39\xba\x06\x51\xd6\x7e\x0d\x5e\x79\x70\x63\x2e\x82\x7e\x4e\x44\x11\x7b\xa7\x26\xcb\xca\x14\x05\xe6\xb1\x7a\x46\x81\xa5\x27\x38\x7f\x26\xd5\xae\xab\x9f\x17\x71\x77\x83\x12\xca\xfb\x71\x67\x10\xfa\x21\xc9\xfc\x78\xf9\x10\x46\xac\xb0\x39\x7e\x12\x61\x1a\x4c\x81\xee\x6b\x02\x87\x59\x24\x4a\x64\x06\x47\xee\x0e\x6f\xa3\x65\xb3\xea\xb7\x01\xec\x2d\x7f\xaa\x96\xce\x5f\x8c\xc2\xb0\xf3\x74\xc2\x13\xb7\x39\xc9\xb3\x79\x9b\x85\xce\xf0\xc4\x72\x03\xc2\xe9\xa2\x94\xbb\x7c\x25\xe8\x8a\xf9\x49\x46\xc8\x06\xc5\x88\x2d\x2b\x22\x9b\xee\x32\x1c\xba\x12\xba\x24\xc5\xf3\x9f\xdf\x20\x10\xa0\x1f\xcb\xf3\x84\x45\x04\xd0\x15\x6c\x3f\x9a\x8f\x40\xf4\x66\xea\x17\x59\x85\x5b\x80\x9b\x34\x34\x3d\x45\x01\x74\x81\x03\x9c\x39\x59\xb8\xb5\xd0\x41\x5a\xf6\x5e\xc5\xbd\xac\x2e\x1b\x9e\xb8\xf6\x93\x43\xc6\x8f\x6b\xfc\x30\xfc\x21\x4e\xf8\x90\x6a\x88\x86\xd0\x31\x2a\x22\x83\x60\x6c\x3f\xc6\x33\x4d\x37\x7d\x44\x48\x0b\x06\xcd\xfb\x04\x2f\x3a\x97\xa9\xb1\x3c\xf4\x18\xba\x6c\xce\x12\x9c\x9e\x47\xf4\x09\xff\x2e\x37\x86\xb5\x77\x1a\xea\x96\xf2\x12\x49\x79\x6a\xba\x4e\xa6\xf4\xb0\x64\x9e\x71\xa6\xfe\x1f\x30\xd1\x42\xb6\xab\x0e\xc2\x50\x1b\x24\x00\xb1\xc2\x45\x91\x9a\x5f\x8c\x21\x70\x95\xa2\xd0\xc7\xbe\x70\x97\x17\xc0\x28\xac\x49\x8b\x5a\xa9\x9a\xc0\xd1\x32\x48\x01\xaa\xc7\xcc\x31\xaf\x6b\x37\x3e\x0e\x51\xc1\x85\x2f\xdb\x5e\xfc\x93\x7e\xc8\xfb\xd2\x59\x81\xaf\x82\xbd\x30\x07\x48\xf3\x67\x37\x92\x26\xd6\x52\x0f\xd3\x19\x0a\x50\xa7\x85\xad\x08\x5a\xd6\xc9\x43\x1f\x4a\x16\x09\x86\x72\x34\xf8\x6e\x8b\xf3\x62\x79\x4f\x84\xb3\x5f\xdb\x19\x50\x6f\x95\xf1\x41\xd1\xe4\xc1\x39\x23\x9e\xc7\x69\x49\x33\x57\xbf\x81\xc2\xaf\x4c\x31\x45\x2a\x6e\x5b\x1a\x48\x41\xc8\xe8\x23\x66\x00\x23\x46\xec\xd0\x3e\x60\x9b\xb6\x24\x1f\xc5\x27\x42\x09\x1a\xa4\x74\x0e\xff\xa0\x93\x1a\xb7\x34\xa2\xd7\xe2\x56\x4a\x46\xb3\x33\x1a\x66\x84\xa9\xcf\x7e\x8e\xac\x33\xa7\x6b\xed\xb8\xbd\x43\x2c\x1a\x46\xe1\xc8\xcc\x51\xc3\x44\x40\x34\xe5\xed\xc8\x07\x94\x02\x85\x10\xc6\xf9\x4c\x94\x3f\x9a\x0a\x27\x4a\x2f\x95\xdc\xfb\x4b\xb4\xc2\xb2\xf9\xc4\x77\x5a\x90\xe4\x38\x0e\x33\x40\x71\x82\xc9\xad\xf7\xcd\xc4\xb6\x74\xf1\xf5\x0a\x20\x7e\x33\x59\xca\x94\x2e\x00\x80\x3c\x8c\x23\x44\x2d\xe4\xb6\x3e\x9e\xee\xfa\x48\x8e\x31\x38\x01\xc1\xe3\x3a\x28\xa6\x81\xbd\xf8\x1f\x6b\x97\x25\xa0\x54\xe2\xdf\x79\xe1\x2d\x48\x65\xc7\x4a\x91\x95\x0a\x46\xe1\x6f\x68\xfa\xb7\x8f\xe1\x71\x7d\xf5\x41\x3c\x84\x53\x3a\xa8\x85\x44\xc6\x97\xd6\x92\x44\xcc\xb9\xf7\x8f\xef\x28\x8a\xc2\xc5\xbd\x10\x9c\xe7\x28\x5f\xb3\xa4\xa6\x08\x00\xec\x7e\xc1\x6d\xca\x8c\xaf\x62\xaf\xd2\x2b\x5d\x04\x52\x5d\x8c\x8f\xc5\xeb\x0d\xc0\x1f\xa6\xd8\x06\x71\xfa\x0d\x4c\x67\xf4\x96\xfe\xd7\xde\x64\x1e\x9e\x1b\x5d\x94\x52\xd7\xf3\x06\x47\xe9\x6e\x8e\x85\x98\xe9\x62\x14\x89\x46\x78\xee\xed\xc7\x6d\x7d\x00\xf1\x30\x99\x07\x0e\xbe\x3a\xa9\x41\xca\x99\xe2\x6e\x01\x92\xc3\x49\x49\x66\xd8\x19\x02\xb4\x3c\x57\xc3\x68\x9e\x75\x03\xe5\x52\x88\x54\x45\xb0\x4e\xe7\x7f\x6d\xc1\x67\x79\xee\xde\x58\x57\xf8\x28\xe1\x19\x06\xa3\xa1\xef\xe9\x41\xf5\xa9\x3c\xdf\x05\xf5\xb9\x85\x8f\x67\xb3\x2c\x6b\x55\x5f\x76\xa8\x84\x7f\x1f\xc8\x6a\x5f\x26\x08\xed\xb2\x7e\xb5\x87\xd1\xa0\x92\x39\xcd\x34\x0e\xed\x08\xe4\x10\x35\x8e\x6b\x7f\x53\xe7\x50\xc0\x8c\x73\x6e\x70\x2d\x60\x22\xcc\x22\x3b\x17\xfb\x74\x41\x83\xb2\x6d\xe3\xe7\xf9\x74\x6f\x05\xff\x26\x8c\xc7\x83\x7a\x49\xe6\x2a\xfa\x51\xc1\xb5\xa5\xc9\xbd\xb7\xd6\xa3\x8d\x2f\xa5\xb7\x98\xf5\x42\xcc\x37\x3a\x94\x9d\xb8\x9e\x89\x4f\xba\x49\x08\x8f\x06\x0d\x7d\x3d\x10\x51\x7b\x3c\x8f\x93\x74\x2e\xdb\xf2\x6f\xf2\x36\xe5\x72\x7a\xeb\x6d\x2a\x14\x0e\xe4\x8f\x2f\xc5\x4f\x6c\x50\x15\x4f\x34\xcb\x6e\x66\xd3\xbe\x26\xae\xd3\x3b\x1b\x65\x60\x67\x03\x99\xe2\xf8\x12\x98\xf8\x98\xcf\x17\x22\x34\x43\xcc\x39\x81\xa2\xfa\x17\xa2\xd2\x70\xd1\x7f\x58\xca\x20\x9c\x42\x51\x17\x38\x31\x8a\xf4\x8d\x11\x39\x18\xc5\x39\x30\xba\xf8\xce\xc9\xb0\x42\x27\x46\x1a\x62\x20\x92\x92\x24\xd2\x6e\x0e\x45\x5b\xaa\x6c\x8a\xe3\x51\xc3\xaa\x41\x1f\xcb\xd2\xfc\x2f\x6b\x7d\xd8\x44\x6b\xa6\xf7\x43\x3f\x12\xfb\x91\xbe\xcd\x5b\x9c\xc1\xc0\xdb\xc7\xad\xc5\x77\x67\x88\x22\x0d\x99\xce\xec\x41\xc1\x62\x2f\x6c\xca\xa0\x94\xf2\x6c\x33\x4e\xaa\x10\xfb\x40\x21\x4a\xed\xba\x48\xd6\x0c\x6f\x79\x02\x9b\x6f\x8a\xf0\x1a\x7c\xb2\xdc\x05\x7f\x25\x7c\x10\x33\xa9\x07\x8f\x32\x9c\x6b\x76\x5b\xd3\x55\x6a\xb2\xc4\x49\x9c\x56\xec\x78\xbd\x4c\x98\x37\xbe\x14\x74\x0c\x53\xd1\xfc\x95\x4b\x60\x7c\x4c\x7c\x8a\x2a\x34\xb9\x73\xcc\xbf\xdd\x3f\x79\x77\xc0\x50\x06\xb9\xc2\xda\xee\x6e\x90\x8c\xcf\x31\x86\x50\xa4\x0f\x76\x62\x2f\xb1\x31\x09\x44\x6e\x26\x48\x0f\x6c\x0c\x09\x7c\x0b\xb4\x1d\x1a\xa3\xce\x63\x34\x8d\xad\xb4\x6f\xe0\xf7\xa1\x0f\xe7\xda\x6b\xba\x7d\x83\x6e\x6b\x02\x6f\xed\xe7\xd2\x11\x3d\xf4\x03\xee\x1a\x2c\xfb\x33\xb6\x04\x14\x69\x61\x98\xf4\x2f\xf5\xed\x6f\x88\x3f\x0b\x7b\xd0\xe0\xf0\xe4\xa0\x56\x5c\x5b\xbb\xd0\xb8\xb1\x3d\x49\x28\x15\xf1\x73\xd6\x09\xfc\x7e\x19\x64\x34\xbd\x7a\xf0\x7b\xd7\x55\xc4\xd5\x08\xd2\xef\x86\x26\x91\xfe\x83\x82\x9d\x50\x42\x3b\xd0\xf7\x68\x20\xf6\x96\x2b\x47\xe0\x21\x48\x7e\x86\x29\x32\xac\xc3\x4b\xa0\xbc\xda\x06\x0c\x3e\x00\x02\x7d\x12\xf5\x1b\xc2\x3b\xa2\xc4\x57\x79\x62\xe1\x4b\x4c\xee\x27\x0b\x07\xe2\x08\x6b\x4b\x28\xac\x55\xcb\x7f\xd6\xeb\x7b\x9d\x29\x0f\xaf\xd9\xcd\x8a\x33\x62\x14\x63\x69\x5e\x29\x1b\x09\x74\xaa\xbd\x83\x5f\x16\xe9\xcb\x71\xe0\xf6\x2d\x7a\x5a\xaf\x96\x7e\xa7\xda\xb1\x89\xee\x64\x3b\xeb\xe0\xf0\xf6\xa6\xc1\xb3\x8d\x50\xb6\xf6\xd9\x8b\x08\x2d\x9d\xd6\xa0\x02\x9b\xc4\x23\xbe\xef\x8d\x8e\xca\x9c\x26\x76\x91\x6a\x4b\xdd\x9a\x8b\x0d\x3a\xb3\x98\xad\xfc\xa1\x13\xf3\xa2\x0d\xf1\x61\x7d\xda\x1c\x81\xb1\xea\xbd\xac\x22\xa4\x05\x79\x06\x54\x6a\x59\xb4\xfb\xee\x8d\xb2\x7e\xe0\x15\x63\x29\x23\x07\x54\x09\xb5\x36\x93\x34\x75\x9f\xdf\x6c\x1a\x5b\x80\x44\x8c\x7a\xea\x60\xd4\x9f\xee\x95\xd8\x8f\x53\xa0\x12\x9e\x74\x73\x55\x60\xe2\x49\xe4\xd0\xfc\x12\xaa\x39\x12\xf4\x20\x4b\x4e\x69\xac\x3d\x8a\x24\xf3\xec\x3d\xc9\x19\xae\x22\x9d\x08\xad\xb4\xc6\x1b\xb6\xb5\xd2\xbb\xe5\x4d\x03\xe7\xfc\x9c\x73\x5e\x6f\x07\xc8\xae\xda\x7a\x2b\xa1\xdb\xfa\x20\xd1\x9e\x66\xaf\xe6\x9a\x3e\x9c\xfb\x8e\xd7\x17\x07\xf8\xd7\xa3\xe3\x63\x24\x42\xc8\x7b\x40\xe5\xd0\xee\x4e\x6d\x4b\x90\x81\x75\x95\x24\xff\xb1\x59\x41\x28\x8d\xcd\xd5\x80\xde\xc5\x96\xc2\x49\x4e\xd8\x9a\x1d\x41\xb0\xdf\x5a\x2a\x81\x3e\xf6\x8f\xe3\x75\xb2\x3d\x30\x3c\x6d\x86\x98\x7d\x9b\xd0\xd9\x48\x9d\x1c\x0e\x26\x1d\x2d\x7a\xe3\x09\x6b\xb9\xb5\xf9\x81\x95\xbc\xd5\x19\x00\xf0\x86\x3b\x9d\x9b\x55\x1e\x2b\x8c\x34\x48\x5a\x0b\x52\x2d\xbb\xe4\xde\x4c\x8b\x32\xcf\x49\xb0\xad\x8a\xd3\xcd\xca\xf3\xb7\x5c\xd3\x22\x35\x35\xbd\xd7\x9a\xdf\x69\xf2\x64\x7e\x63\x5d\x9c\x73\xe5\x6b\x29\xac\x25\x43\xe1\x0d\x85\x01\x9c\xb7\xff\xee\xe3\xa8\x7d\xdf\x0f\xfb\x38\x08\xfa\x38\xf0\xfb\x39\x09\x7b\xa2\x08\xf1\xa5\x66\x67\x4e\xa2\x4b\x33\x5b\xe5\xc7\x12\xbc\xde\xbc\xbb\xf7\x5c\x34\x9a\xbd\xd8\xe2\x26\xcd\x76\xba\x37\x2c\x9d\x90\x7b\x1a\x60\x45\x6b\xcd\xf1\xed\x19\xbb\x8b\x7f\xec\xd9\x01\x65\x36\x65\x44\x4f\x03\x64\xe7\x3d\xff\xab\xfb\xbe\xef\xbb\xbe\x1f\x07\xf1\x2a\x46\x2a\x9b\xae\x0e\x02\x49\xc7\x0a\xcd\x6b\xd2\x4c\x0a\x07\x9d\x0b\x57\x9d\x2a\xa0\xe8\x23\xe5\xaa\x4a\xbb\xf9\xaf\x4e\x32\xc5\x9b\x1d\x92\xc8\xbf\x48\x03\xef\xc1\x56\x7f\x15\x98\x06\x25\x00\x6a\xff\x50\x63\x35\xe3\xa6\x12\xa1\xc5\x79\x52\x82\x13\xeb\x12\x3d\xfc\xb6\x55\x81\x19\x7b\x7a\x24\xee\x03\x44\x1c\x28\x7e\x97\xe8\xa2\x97\xba\xd6\x93\x51\x46\x7a\x72\x96\x14\xd8\xeb\x15\x5d\x15\x3e\x98\x3b\xd9\x7a\x72\x7b\x43\x2e\xc0\x8c\xc0\x67\xbe\xa8\x3d\x4a\xc6\xad\x0c\xc9\xaf\xf9\x1b\x52\xa5\x24\xec\xa4\x38\xc7\xa4\x34\xfb\xc5\x56\x54\x9d\xa9\x73\x29\x47\xad\x10\xf1\x5c\xc2\x3b\xf6\x47\x08\xe9\x4f\xc8\x79\x1e\x57\x25\xdc\xb0\x2f\x49\x96\x23\xcb\x17\xa5\xeb\xba\xfa\x95\xed\x60\xf7\x04\xc3\x52\xa8\xf6\xe9\xd7\x73\xe2\xf0\x0e\x34\xbc\x2b\xf9\x1f\x49\xab\x69\xe6\xa1\xde\xf2\x36\xa5\x9f\xf5\xfc\xb6\x68\x90\x9b\x64\x98\xb7\xf4\x77\x4f\xf1\xef\xee\x52\xe1\x76\x72\x5c\xe8\x2e\x38\x69\xb3\xb8\xd1\xd2\x2e\x53\xa7\x52\xc5\x43\x89\xe0\xfa\xeb\xcb\x4f\x25\x33\x62\xd0\xb2\x2a\xf7\x46\x1d\x6f\xdc\x64\xb4\x7b\x62\x68\x77\x6c\x68\x42\x20\x1e\xff\xef\x4e\x32\x41\xb0\xf6\xf0\x4d\xba\xce\xc8\x2c\x8c\x09\x36\x8c\xbe\xf5\x38\xbc\x86\xf3\xab\xcf\xb7\x85\x0e\x24\xba\x4f\xa4\x31\xcc\x4b\xf2\x27\x99\x66\x5a\x9e\x6d\xd5\xd4\x7a\x53\x99\x9f\x81\x80\xcf\xf7\xaa\x04\xa0\x2e\xe4\xf0\x6f\x65\xd6\x87\x3e\x15\x85\x3e\xd5\x07\xde\x55\xc7\xc5\x83\xaf\xcf\x0e\x42\x7f\x56\xb4\x96\x7f\x40\x64\x9c\x68\x9a\xa1\x93\xbe\xb2\x02\x7d\x5a\x25\x6c\x32\x5a\x6a\x3c\xef\x0c\x83\x1e\x93\x0a\x0b\x37\x38\x1e\xba\x40\xb5\xd0\x4e\x99\x41\xed\xe7\x2a\x70\xa6\x68\xed\x15\x99\x1e\x07\x2a\xbf\xb9\x81\x45\x05\x6f\x6d\x2d\x6e\xe5\xae\xd7\x4b\x8f\xf6\x66\xaf\xde\x46\xb7\xe6\x0a\xb7\xd6\x46\xa8\xce\xab\x1e\xb2\xff\x69\x28\x1d\x32\xbe\xd6\x3b\xdb\x93\x58\x2d\xfc\xde\x9e\xff\xb5\x23\xef\xcb\xfe\xc9\xd4\xa6\x41\xa9\xbd\xc6\xbb\x51\xca\xab\xbd\xea\x43\x1b\xb4\x51\x2a\xe6\x70\x87\x8b\x0b\xa5\xb4\x3c\x95\xce\xdc\xc1\xe9\x65\x04\xab\x4f\x32\xd9\x58\x8a\xa2\x88\xb5\xa5\xca\x86\x45\x8c\xfa\xfa\xf0\x4e\xfb\x48\x58\xfd\x2b\xa4\xbf\xfb\x4f\xfd\x47\x3a\x10\x43\x3a\xc4\x4b\x32\xcc\xeb\x4c\x16\xfd\x9c\x04\x13\x66\xfd\xed\x2a\xa8\x6c\xef\x08\x89\x87\xf8\xdf\x2e\xf9\xfb\x3b\x27\xc5\x99\x52\x0c\xe4\xc4\xeb\x97\x87\xc9\xdc\xf0\x9a\x58\x0f\x56\x1f\x6b\x29\xe3\xda\x68\x20\xfe\x88\x50\x0d\xd7\xef\x46\x15\x99\x2a\x90\xc7\xbc\x00\x33\x9a\x95\x66\x39\x82\xb4\x08\x1e\x28\x70\x88\x47\xd7\xc7\xb7\x6b\x65\x27\x24\x90\x6c\x0f\x0b\xd1\x92\xaa\xa1\x5e\x63\x50\xa6\x14\xc5\xb8\x0c\x30\xcd\xb1\xdd\x46\xd3\x81\x77\xd9\xf1\xbe\xfc\xe3\x35\x34\xee\x7c\x6b\x99\x54\x9b\xc7\xac\x59\x44\xb7\x3c\xfe\x73\xeb\xae\xf7\x26\x68\xbc\x45\x83\x52\xa5\x28\x5b\x25\x0a\xf7\x17\xd3\xfa\x35\x41\x3b\x46\x3a\x7b\xcc\xa0\x21\x21\x0b\xc7\xdf\x29\xb0\xcd\xb6\xcf\x07\xa9\xfd\x69\xe5\xaa\xfc\x64\x34\xe1\x7b\xd0\x15\x5b\xde\x85\x4f\xf5\x68\xab\xf6\x6a\xab\x06\xcc\xc9\xfd\xda\x9e\xff\xb7\x1a\xd6\xa3\xb5\xa6\x8b\x30\x66\x88\x30\x9f\x4b\xe3\x73\x0b\xd6\x0b\xff\x80\x6d\xc5\xb4\xd1\xdf\x15\xd4\x34\x52\x67\x4c\x95\xf1\xf3\xa9\xe2\xa1\x42\x88\xfc\xca\x20\x38\xa5\xd7\xd4\x43\x0f\xae\x3e\x20\x67\x89\x2a\x77\x56\x68\x23\x9d\x86\x8b\x99\x11\x42\x12\xf9\xae\x0f\x44\x22\xc3\x8c\xe8\xd5\xe5\xb7\x53\x4b\x11\xdf\x09\x80\xd3\x07\x18\xaa\xcb\x46\x34\x57\x40\x34\xd7\x43\xf5\x36\x42\x90\x5c\xf4\x52\xd3\x75\xd6\x59\x71\xba\x4d\xf9\x54\xf2\x53\x8e\xa0\x3c\xb1\xc3\xed\x08\x8a\x21\xfa\x79\x45\x88\x0b\x32\x6f\x47\xac\x2f\x1a\x93\x5f\xf9\x72\x8c\x80\x62\xee\x0a\xc3\x28\x66\xac\x0d\xd0\x8e\xaa\x4f\xe2\x11\x71\x33\x56\xf0\xad\xa6\x91\xda\x4b\xff\xeb\xc0\xb9\xf9\x2d\x39\xab\x93\x7d\xbe\x5f\x9d\xf2\x37\x1f\x69\x82\xe6\x5b\x81\xa6\xf1\x81\xa5\x8b\x1f\x95\xfd\x55\x09\xdc\x9d\x6e\xa7\xab\x10\xd9\xd9\x15\x96\x82\xa5\x01\x96\xee\x0b\x9a\xef\x11\x8a\xec\x11\xaa\x77\xf1\xcf\x36\xd4\x94\x8b\x78\x16\xce\x45\x1b\xce\x45\x07\x5a\xca\xb3\xa5\xc1\x9f\x48\x86\x79\x45\xa0\xf1\xec\x08\xbd\x3c\xbd\x45\x77\x03\x5f\x19\x68\x48\x08\xbf\x56\xf8\xbd\x34\x03\xbd\xd9\x60\xd6\x08\x12\xd2\xa0\xa8\xb2\xab\x72\x7d\x86\xf9\x48\x33\x34\xad\x6e\xac\xc7\x23\xd5\x96\x06\x2a\x43\x53\xb2\x04\x6b\xd0\x55\xbf\x80\x7b\x82\x35\x41\x76\xe8\xc2\x8d\x34\x5f\xe0\x24\xf0\xd7\x85\x4c\x06\xb6\x51\xd6\xff\x3b\x91\x88\x02\xc0\x76\x1e\xf6\x64\xd1\xcd\xef\x43\x0f\xa1\x83\xc3\x85\x19\x3e\x51\xef\xa4\xc8\x1c\x8f\x3e\xc2\xa4\x6f\x9c\xdd\xd1\x19\xe4\x32\xb0\x44\x28\x6e\xdf\x29\xfd\x11\xbb\x1e\xbc\xa9\x39\xb8\x7e\xfa\xf6\x66\x17\x72\x04\x86\x43\xb1\xfe\xaf\xf1\xd4\x9c\xbd\x94\x8f\x29\x92\x8a\x77\x98\x8c\x0d\x37\x44\x73\xe5\x28\xc6\x9b\x48\xf6\x60\xc0\x8a\x63\x0a\x1d\x0d\x3e\x88\xd0\x20\xd1\xd1\xdd\x07\x77\x3e\x0c\x25\x94\x85\xbd\xeb\x35\x57\x7f\xb0\xfc\x61\x64\x73\x7a\x9c\x6e\x96\x77\x92\x49\xd0\x35\x40\xf7\xd5\x13\x4a\x6b\x0f\x48\xbd\xc1\xc1\x79\x08\xf8\x4c\x3d\x8a\x5d\x7f\x84\xd1\x22\x5d\x9c\x6f\xc1\x24\x7f\xc7\xbb\x54\x1f\x7a\x76\x3b\x42\x76\x3b\xc2\x9c\xb1\x32\x5c\x49\xa8\xd9\x83\x35\x77\x6d\x24\xf9\xd7\x78\xf5\x37\xbc\x75\x4d\x8e\x7d\x21\x4d\xc5\x39\x5d\xe0\xd4\xae\x15\x38\x17\x3a\xd0\x48\xb3\x31\xfd\xf6\x9d\x4e\xc6\x24\x56\xdc\x3e\x58\xc4\xd9\x96\x6d\x08\x01\x1d\x90\x67\x43\xd6\x73\x42\x70\x68\x30\x22\x87\x9b\x0e\x27\xf1\x59\x94\x86\x3c\x69\x10\x17\x77\xee\xb7\x1a\x33\xf9\x45\xc9\x0e\xfb\x33\xc0\x48\x26\x08\x9a\xa5\xfd\x68\xe8\xdc\x5f\x3e\x40\xfa\xb4\x04\xa8\xec\x70\x2e\xd9\x0d\xbd\x5c\xcc\x22\x4c\xe9\xa3\xdb\xaa\x59\x4c\x70\x3d\xa1\x38\xdb\x1f\x61\x21\xe8\x21\xf5\x25\xf0\xdf\x8c\xd6\x5e\x1a\x06\x16\x92\x87\xf9\x1e\x96\x26\xa3\x43\x23\x71\x94\xe3\xc3\x1c\x10\x86\x1f\x60\xc7\x54\x22\x3b\x25\xba\xcc\x33\x20\xf9\x7b\x12\xe4\x63\x82\xf6\x73\x14\xd4\x53\xfc\xb3\xbb\xe4\x97\x2c\xf3\xe2\x74\x8b\xd2\x4a\x11\xcf\x92\x26\x43\x0d\xb8\xc1\xc1\xbb\x59\x86\x08\x79\x65\x26\xb5\x64\xdd\x0c\xb7\x8f\xca\x22\x40\x07\x44\x6e\x57\x89\x6e\xea\xe0\x05\x2f\x29\xd2\x67\xa7\x02\xe4\xaa\x98\xf0\xb7\xba\x5c\xf2\xba\xf9\x81\xba\x1d\x61\x30\x07\xb6\x07\x54\xbc\xd8\x31\x51\x3b\xa3\x8f\xe4\xce\x28\x2b\x19\x54\x9a\xd8\x89\xe3\xda\x4f\xbd\xd9\xc2\x1b\x10\xf2\x89\x72\xf3\x97\xee\x28\x85\x63\x03\x0d\x47\x96\xc0\x42\x20\x3f\xad\xdc\xca\xf4\xa2\xc0\x6c\x98\xcc\x67\x9b\xf4\x3f\x74\xa2\xa9\x1f\x6f\xdd\xa0\x64\x49\xc6\x99\xcc\x2a\xa9\x65\x63\xb9\x9b\x97\xc4\x38\x31\x6c\x49\x82\x7e\x0e\x1c\xdc\x29\xd6\xe4\xcd\xc2\xef\x9d\x05\x50\x19\x9e\x32\xc2\xa8\x01\xa2\x5b\x74\x01\x56\xf8\x5f\x9b\x1b\x0a\x4a\xc5\xa9\xa6\x4e\x91\xcc\x9c\x9f\x19\x30\x49\xa0\xbe\xf0\xd4\xae\x59\x01\x9d\x37\x2c\xa2\x30\xf6\xa8\xc9\x33\x50\x3d\x27\x1f\xee\x0f\x4c\x8f\xca\x73\xce\x2b\x5c\x48\xd8\x12\x2a\x49\xad\x06\xe8\xde\x93\x68\xd4\xf9\x6f\x03\xa5\x1d\x10\x2b\x44\x77\x83\x54\x47\x61\xf2\x87\x1d\x3f\xeb\x2c\x9a\x4a\x67\xa7\x9d\xfb\xf2\x35\x4d\x16\x06\x5e\xea\xf1\x76\x7e\xa8\xdd\xf5\x10\xe3\x2d\x76\x67\x7b\x4c\x41\x39\xfa\xf6\xaf\xea\x2f\xc5\x89\x59\xb6\x0a\xdc\xc7\x12\xfc\xef\xed\x57\x27\x75\xd1\xa5\xd9\xb5\xb7\x46\xf1\x71\x6a\x9e\x28\x53\xc3\x54\x5e\xac\xd1\x12\x1b\xc8\x9e\xfa\x51\xb2\x28\xdf\xde\x73\x1a\xee\x11\xe9\x3b\x95\xe3\x31\x16\xe3\x5d\x86\x9c\xb1\x99\x3e\x1f\xee\xf3\x71\x3c\x9b\xf5\x45\x41\x6e\x6f\xcd\x11\x5b\x08\xf5\x55\x3c\xc1\xf5\xd4\xeb\x0a\xf6\x3b\xa7\x4e\xcd\xdd\x21\xf1\xd9\xaa\x9c\xff\x4c\x72\xba\x0f\x0b\xe2\x32\x2f\x87\x2b\xe4\xd1\x4e\xd0\x49\x92\x47\xdb\x03\x11\x00\x19\x2b\x7b\x38\x0f\x1f\xbe\xa2\x41\xc7\xd1\xfd\x13\x91\xa2\x45\x56\xf4\xb7\xd2\xea\x6e\x23\xe6\x12\x68\xfe\xb0\x01\x40\x8b\x59\x61\x35\x63\xcb\x50\xfa\x79\x98\xc1\x9f\x55\xb9\x80\x10\x2d\xd8\xf7\x72\x67\x71\x26\x6f\x50\x65\x15\x78\x82\x95\x9e\x47\x9b\x32\x16\xfa\xda\x4c\x8e\x33\x43\x1d\x09\x9b\xb9\x48\x8a\xb0\x1c\x56\x60\xcf\x49\xd0\xbb\xb7\x52\xdc\x3a\xc4\x64\x0f\x80\xc4\xae\x7f\xda\xd1\x22\xcb\x8c\xa4\x8f\x02\x2f\xc4\xb1\x86\x40\xdb\xf5\xb2\xe3\xad\x7d\x83\x82\xef\xcd\x98\x70\x06\x81\xec\x0c\x17\x73\xc4\x28\xdd\x7c\x31\xd6\x52\x59\xaa\x47\x29\xb7\xbe\x28\x77\x59\xa8\x04\xdd\xd2\x1f\x5d\x1a\xed\x44\x1a\xed\x98\xee\x68\x1b\x5c\x8a\xe2\xe0\x8b\xd1\x6e\x68\x6a\xda\x9d\x2f\x38\x03\x29\xf8\x1a\x47\x5a\xda\x39\xde\xe8\xbe\x26\x45\x68\x0e\xe6\x5a\x83\x10\x99\x4a\x4b\xf8\xb2\x93\x7f\x62\xe9\x8e\x50\x8c\xc8\x6f\x98\x39\x84\x3d\x39\xcb\xa3\xb1\x2e\x64\x55\x62\x14\x03\x41\xb9\x7b\x42\xd4\x8e\x3e\x5b\x2b\x2b\xe2\x4f\xd5\xda\x37\xb3\x19\x54\xe4\x3f\x59\xe9\x0f\x73\x13\xd5\x42\xfe\xed\x86\x1f\xb8\xcc\x6d\xa6\xf2\x87\x59\x50\x63\x74\xeb\xea\xea\x0e\x11\x21\x99\xd2\x2d\x09\x7a\xc1\x52\xc3\x9a\x97\x78\x30\xdf\x02\x2b\x4f\x2c\x7f\x74\x9d\x84\x30\x5f\x79\x96\x40\xed\x1f\x22\x3f\xb9\x66\xff\x15\x12\xfc\x1b\xb0\x60\xe4\x87\x42\x7a\x91\xde\x6c\x19\x43\x90\x6c\x49\x56\xe7\x0b\x9c\xaf\x8c\x3f\x65\x71\x8a\x5d\x6b\x22\x34\x93\xdc\x47\xea\x25\xba\xc8\xdb\x15\xde\x99\x8f\xfa\xf4\xd0\x38\x4b\x96\x50\x33\x0f\x51\xfa\x3b\x54\x34\xda\x33\x78\xef\xb8\xf6\x18\xf3\x01\x0f\x70\xf2\x54\xfa\xb0\xfd\xa9\xc1\x32\x6f\x0d\x44\x76\x22\x84\xeb\x3d\x9a\x59\xdf\xea\x8b\x03\x95\x1f\xf6\x60\x9d\x5d\x3f\x0f\xbf\x7d\x7c\x84\x87\x29\xee\x28\x99\x63\xe6\x86\x7d\x3b\x27\x05\xc5\xdb\xd7\x5c\x59\x2e\x81\x67\xeb\x43\xb1\x7d\xf0\x21\x11\xc1\x68\xc0\x2e\x31\xa5\x4e\x96\x7b\x18\xcd\x49\x65\x83\x4a\x65\x53\x7d\xe9\xac\x9c\xe9\x12\xbc\x1d\x37\xf9\xfc\x87\x00\xda\xf7\x53\x7d\xcb\xbf\xd8\x5d\x0b\x4a\x8d\x1b\x00\x70\x96\xc7\x55\x5e\x35\x09\xd3\x22\x58\xcb\xd7\x92\x59\x49\x06\x80\xa4\x1c\xce\x72\x84\xc8\x96\x64\x4e\x85\x7a\xf4\x63\x83\x02\x2a\x16\x40\x01\x18\xaa\xe0\xdf\x84\x18\x33\x00\x8c\x7e\x2f\xb9\xbd\x94\x2e\x69\xbd\xbf\x9e\x02\x53\x08\x28\x12\x6e\xa0\xf4\x09\xac\xeb\x27\xdd\x25\x15\x9d\x8e\xcd\xe2\x50\xc1\xb3\x80\x5a\x9f\xdf\xce\x26\xb1\xa1\x56\x68\xf6\xe3\xdb\x2f\x49\x83\x42\x0b\xa2\xa3\xd4\x44\xd5\x5f\x69\xec\x37\x8d\x7c\x82\xf6\x00\xbc\x83\x9d\x41\xa5\x26\xe3\xe3\x9a\x9a\xec\x43\x64\xe7\x8a\x40\x54\x7e\x86\xcf\xb7\x18\x83\x03\x7b\xe4\x99\x81\x46\xb7\xf4\x62\xe3\x8e\x4d\xb8\xa4\xf3\x14\x94\xa7\x78\xc1\x14\xd4\x58\x75\x15\x4a\xc8\x2f\x85\x3c\x11\x40\x56\x4f\xe5\xd7\x95\xa9\x24\x87\x36\x5d\x03\xc3\xea\xc0\x90\x0c\x04\xdc\x03\x66\xce\x0f\xac\x7e\xe6\x17\xfb\x89\x7c\xfd\x6a\x0f\xbd\xb9\x0c\x59\xee\xb0\x22\xf0\x7a\xa9\xb6\x26\x4b\x9c\xc8\x76\x81\xb1\x25\x08\xe9\xec\x75\xed\x6e\x34\xb5\x23\x8c\xf4\xc4\xf2\x50\x9d\x91\x04\x95\xd2\x2c\xe9\x2a\xe1\xd3\x1e\x18\xb5\x63\x74\xa6\x7e\x0f\xac\x3c\x3a\xd5\xf8\x22\x7d\x76\x99\x0c\x25\x04\x44\x17\xc3\x64\xc4\x73\x1d\x99\xeb\x1b\x26\xf6\xb7\x1b\xa2\xfb\x9b\x85\x02\x83\xf1\x34\xff\xd5\xdd\x3f\xd7\x28\x8e\x10\xcf\x6e\xe9\x12\x1e\xed\xd5\x46\x37\xae\x23\x65\xf1\x6e\x12\xb3\xc8\x33\xda\xdd\x2f\x96\x99\xed\x43\x18\x6e\x2d\x43\xfb\xaf\xaa\xac\x45\xfc\x77\xee\xe2\xd9\x82\xcd\x40\x20\xef\xe9\xa9\xc1\xc8\xd1\x9d\xdb\x1e\xcd\x67\x97\x00\x62\xcb\x54\xe2\x7d\x51\x18\x91\xa0\xf3\x81\x91\xc1\x1f\x45\x31\xa5\xef\x7b\xbd\x83\xd0\x98\xed\xf9\x5f\x0f\xd1\x5d\x0e\xde\x54\xe5\x39\xd7\xb7\x23\xf2\x57\x7b\xb5\xc5\x0c\x89\x07\x9e\x55\x1c\x32\xcf\x33\x5c\x09\xfa\xc0\xd2\x1d\xa2\x1f\x6d\x5b\x95\x67\xb0\x5b\xa2\x3c\x43\x98\xf8\xfd\xea\x29\x26\x68\x28\xd5\x07\xe2\xc0\xb6\xd5\x47\xb2\x51\x76\xd8\x60\x5d\x6d\x01\x5f\x94\x67\x2b\xff\x81\x88\xec\x78\x5d\x49\xa1\x54\x7e\x60\x77\x16\x7e\xb7\x7e\xf6\xda\xb3\xbf\x0d\x47\xb8\xb5\x50\x7c\x6a\xa9\x73\xca\x61\x1e\x34\xb6\xc9\x0f\xcc\x2a\xcc\x9f\x23\x65\x4c\x71\x08\x03\xc6\xfa\xb2\xae\xcb\x1f\x7a\xa8\x3f\x98\x5a\x60\xaa\xce\xc5\x47\xcb\x7e\xcd\x16\x60\xe0\x81\x1c\xc5\xd6\x92\x6d\x46\x49\xe8\x90\xa2\xe8\xf0\xb8\x65\xfd\x8c\x24\x01\x91\x27\x91\x95\x63\xc7\x2c\x48\xda\xdc\xd9\x91\x0c\xbc\xea\x57\x81\xa1\x88\xf7\xb7\x4f\xe3\x44\xa2\xe8\x70\xb2\xf3\xb8\x40\x15\xe8\x4d\x88\xcb\x90\x9f\x62\x5d\xc8\x96\x25\x0e\x0c\x97\x22\x7b\x2f\xa1\x27\x14\xcc\xb0\x79\xd9\x98\xd5\xfd\x78\x76\xba\x7f\xbe\x15\xea\x0f\xb1\x20\xc5\xe1\xf0\xa5\xae\x8d\x14\x57\x9b\x82\x2b\xa3\x3c\xac\x4f\x0e\x07\xcc\x17\x3f\x80\x30\x2b\xd9\x78\x6a\x3b\xf1\x97\x14\x02\xff\xeb\x58\xe6\x8d\x25\xb4\xf9\xe2\x98\xbb\x63\x7e\x73\xa7\xee\x94\x2e\x01\xeb\xf9\x7d\x89\xf3\x50\x45\xe7\xe6\xfe\x72\x57\x25\x0b\x1e\xf7\xb1\x46\x7e\x26\xe8\x8d\x83\x40\xa0\x32\xeb\xdc\x3b\x51\x8b\x8f\x23\x0d\x95\x3a\x5a\x1c\x84\x6c\xb6\xc1\xbe\x26\x16\x9e\xe9\xa2\x1b\x6f\x83\x42\x16\xe2\xe8\x9b\x1f\xeb\xfa\x4d\xe4\xa1\x3a\x48\x16\xf6\xf8\xa2\x34\xa3\x7e\x67\xa9\x68\x6b\x7f\xa1\x3c\xac\x87\x9e\xc7\x3e\x32\xa6\x19\x22\xff\x48\xb2\xba\x0f\xf1\xcf\xf5\x9e\x5c\xb0\x33\x03\x93\xc6\xfc\xc0\x4c\x0c\x23\x67\x05\xdd\xdb\x40\x68\xfd\x96\xa0\x21\x9e\xdf\x77\x06\xea\xbb\xfa\x0e\xbd\x5e\x4a\xb4\xe1\x9d\x38\x81\x31\xb5\x0c\x15\x2a\x49\x36\xe6\x77\xa3\xfe\x82\x97\x01\x95\x3d\x31\x25\x62\x4d\xe7\xbf\x1b\xae\xf0\x88\xda\x57\x82\x26\xe1\x9d\x77\x89\xc6\xeb\x5e\x8d\x32\xc9\x20\x30\x58\xeb\xcb\xfa\xbe\xef\xe7\x61\x8e\x5d\xa6\xf1\x22\x09\x93\xa3\xa9\xbe\x19\xbf\x4b\xa7\x78\xe8\x0d\x13\x5a\xde\xd9\x19\xf9\x79\x08\xeb\x01\x5d\x41\x5b\x46\x16\x6d\xc4\xd7\xd7\x12\xfa\x80\xd3\xa3\x70\xa0\xe3\xa7\xb6\x2a\x4f\x13\xa1\x0d\xbe\xe1\xa2\x85\x43\x70\x88\x51\x6f\x8d\xe9\xbf\xf3\x25\xab\xcc\x6f\xfe\x72\x5a\x17\x4c\xf8\x32\xd8\xc6\xd5\x22\x79\x18\x1e\xe4\x31\x52\x8c\xf3\x27\xec\xc0\xef\x65\x6f\xfc\x11\xf2\xa3\x36\xef\x81\x83\x8b\x2d\xe6\xf9\xf7\xdb\xd0\x91\x61\xbb\x71\xf0\x64\xc7\xef\xa3\x4c\xfb\xbd\xf3\xc2\xfc\x2a\x66\x71\x1f\x21\xeb\x2e\x09\x44\xbd\x80\x2d\x14\x00\x1d\xfc\xe5\x68\x75\x79\x78\xc8\xc1\x2f\x9b\xdd\x3e\x68\x72\x98\x98\x14\x3c\xef\x45\xf0\xad\x23\xfc\xa8\xfc\x54\xfb\xe9\xca\x94\xdf\x0a\x05\xcb\xba\x7c\x77\x33\x43\x62\x33\xf9\xd9\x64\x32\x8f\x49\x09\xe1\xe9\x2b\xdc\x9a\x3d\x1e\xb8\x4b\x4c\xb0\xc2\x01\xec\x86\xd4\x53\x1a\x39\x81\x76\xc6\x4c\x51\x49\xaa\x04\xa0\x1b\x24\xf5\x1a\x3f\xe4\x94\x27\xbc\x2c\x51\xf1\x8e\x32\x27\x46\x51\x8c\x48\xe9\x63\xe8\xd6\xc0\x6c\x25\x1a\xdf\x51\x2a\x47\x54\xe2\x27\x65\x86\x58\x5b\x12\x2b\x1b\x83\xab\x45\x11\xe8\x18\x98\x29\x9d\x5f\x41\x55\xa6\xcc\x3c\x00\x2c\xff\x7a\xc5\x97\xa5\x9a\x69\x2e\x31\x29\xf8\xf7\x73\x56\x53\xb3\x1a\xcf\x12\x99\x03\x36\xf9\x6a\x71\x8a\x75\x2d\xaf\x5d\x6e\x5a\x39\x0f\xff\x22\x53\x24\x6f\xa2\x56\x57\x9a\x8a\x32\xe7\xf7\x2e\xc2\x6f\xb6\x87\xb2\x8a\xe0\x52\x12\x99\x2e\x69\xda\x8f\x8c\x97\xdf\x6b\xf9\x36\x77\xb4\x95\xa6\x7b\x4d\x8e\x85\x25\xfb\xb2\x0d\x09\x54\xa6\x80\x66\x3f\x64\x0b\xed\xe6\xa8\x8f\x79\x32\xc1\x89\x2e\xb6\x36\xc5\xd0\xda\x8f\xdf\x74\xee\xaa\xb5\xc2\xa4\xcb\x6b\xd2\x6e\xcb\xff\xe6\x28\x93\x5d\xb9\xb5\x7d\x4f\x8c\xaa\xa7\xe4\x77\xb8\xf1\x65\xff\x0a\xe9\xe2\x5f\x1c\xbb\x20\xf3\x8d\x86\x78\x7f\x71\xda\xae\x08\x7c\x31\xb6\x5d\x74\x7f\xc8\x6f\x70\xc4\xbb\x38\xe6\x05\x87\xb2\xc3\x95\xba\x44\x17\x97\xa4\x99\x3c\xad\x3a\xac\xc7\x68\x7f\xae\x3e\xb2\x95\xf5\xfb\xab\xcd\xe4\xee\xca\x1d\x14\xf6\x84\xad\xa6\x8c\x12\xa8\x74\x7f\x12\xcf\xef\x73\xf9\x5f\xdb\x2b\x9b\xde\xb3\x27\x3c\xc9\x0b\x35\xca\x32\xfe\xf3\xad\x96\x2f\x42\x32\x05\x84\x9a\xa8\xca\xdf\x73\xf9\x81\xc2\x07\x45\x9a\x60\x1e\x4d\x02\x81\xa0\xfc\x33\xa2\x1e\x16\x6e\x88\x36\xdc\x19\x9a\xd1\xc6\x4a\x2b\x35\xad\xd5\xef\x33\x6b\x7a\xdc\x1d\x58\x57\x7e\x8e\x50\x25\x9a\xcd\x2d\xe4\xe4\x98\x97\x08\xbb\xe9\x7a\x22\x8a\xd9\x69\xa6\x45\x82\x19\xa6\xaf\xb8\x5e\x44\xba\xa6\x21\xa0\xdc\x34\xc9\xee\x89\xd2\xc7\x8b\x9e\x1d\x40\xa1\xf6\x73\x26\xfd\x27\xdd\x47\x3c\x3d\xcd\x3c\x5f\x76\x19\xfd\xc4\xc0\x21\xa0\x1f\xcf\xe2\x5b\xa8\x9e\xab\xaf\x1a\x3f\x44\xa6\x2f\x48\x8c\x2b\x86\x12\x69\x62\x47\x6a\x97\x01\x80\xa0\xe3\x64\x0f\xce\x91\x84\xca\x74\x42\x4b\xad\x14\x8b\xef\xa4\x0a\x6a\xd8\x33\x3c\x22\x17\x13\x24\xac\xb7\x56\xd5\x1f\x47\xe4\x0d\x2e\xf5\x6a\x8e\x24\x1c\xaf\x17\x62\xbc\x98\xa8\x8b\x51\x6f\x8a\xa0\x29\x1b\x56\xf9\xf1\x25\x18\x15\xb4\x9a\x20\xba\xe3\xbf\x7b\x41\x3e\x97\x76\x75\x23\xfd\xef\x17\x7b\x4a\xcc\x9c\x03\xfd\x8e\x2f\x01\x40\xb0\x56\x93\xe4\x7c\xd9\xa3\x86\xda\x0c\x2a\x8d\xb0\xc5\xa1\xd1\x7e\xbf\xa8\x96\x06\xb7\xee\xc2\x97\xf2\xe3\xeb\x8b\x2e\x8c\x51\xc5\x37\xbe\x2e\x4c\xb4\x5e\x12\xf9\xc3\x98\x14\x41\x12\xd9\x9c\xea\x28\xa3\xa4\xa2\x39\x10\x47\xda\xca\xd3\x7b\x22\xe9\x86\x41\xe5\x8e\xe8\xf5\x2a\xbe\x33\x9c\x1b\x58\x0e\x0d\xb1\x0d\x47\x26\xcd\x72\x29\x83\x5b\x9a\x2b\xa0\x79\xf5\x6e\x06\x4d\xd7\xd4\x66\xca\x8c\x67\x18\x63\xb9\x2f\x0b\x74\xf2\x6f\x13\x4b\x6e\x44\xca\xcd\xe7\xea\xe4\x8b\xd1\x51\xe7\xf3\xc7\x8c\x46\x6a\x8e\xa7\x08\x40\x38\x4b\xa9\xef\xb3\x16\x6d\xa6\x37\x6d\x53\xeb\x44\x72\x95\xf5\x15\xff\x7d\x3b\xf9\x86\xa1\x4c\xd3\xd2\x54\x79\xab\x49\x31\x5f\x2f\x89\x65\xec\x96\x65\x73\x10\x9e\x61\xc7\x81\xb9\x2f\x48\xfa\x71\xfd\x36\x42\x25\xee\xae\x82\x65\x21\x8f\xf6\x2c\xd8\xcc\x10\xb3\xe2\xe4\x8b\xa9\xc4\x3f\xe0\x37\x6d\x15\x3d\xe9\x92\xcc\x2f\x78\x49\xd1\x82\xbe\xb9\x7d\xb6\x22\xf4\x29\x62\xbf\xb6\xf1\xc5\x79\x8a\x7f\xba\xce\x18\x31\x07\xd7\xcd\x48\x79\xd9\x8c\xce\x76\x5d\x1b\x72\xe8\xd0\x25\xb8\x45\xd2\x9b\x84\x9b\x70\xab\xd8\xf5\x8f\xeb\x2a\x8d\xad\x39\x96\x2d\xac\x33\xb8\xbd\x01\x33\xbc\x10\x26\x0e\x7a\x40\x71\x88\x3c\xbd\xee\xd3\x3d\xd5\x02\xbe\x6b\x0a\xbb\x87\xcc\xcb\xc4\xee\xba\x29\xb2\x26\xae\xdc\x01\xa2\xc5\xad\xc4\x21\x98\x8a\xf4\x4d\xee\x6e\xa0\x95\xa9\x35\x57\x00\xe5\x8e\x96\xe7\x46\xfa\x9a\x9c\x62\x58\x89\xad\x48\xa6\x8e\x05\x8c\xdc\x8d\x16\x83\x91\xa4\x5b\x02\x9c\x63\xcb\x5e\x1d\x54\x9a\xdd\xb8\x27\xdd\xaf\x35\xc2\x72\x37\x46\x8a\x83\xd8\x68\x0f\xe0\x79\xc8\x20\x6d\x74\x57\x76\x4f\xd3\x7d\x7b\x72\xd5\x81\x7b\x39\xca\x42\x43\x25\x16\xdb\xe0\x21\x2c\xd9\x4a\x3d\xc3\xf8\x51\x4e\x85\x5d\x75\xd0\xb3\x18\x81\x61\x8e\xee\x6b\x1f\x30\x5d\xfe\x3c\xd2\x28\x49\x1f\x19\xde\xe8\xcf\xea\xb3\x33\x80\xce\x3e\xf6\xfc\xb1\x4f\x26\x77\xb8\x35\x5e\xe1\x92\x2d\xfd\xde\x35\x8e\xe7\x4e\x1a\xf0\x3a\x3b\xef\xbf\x5f\xab\x9c\x0b\x57\x7d\xd4\xb4\x11\x97\xd1\x6c\x86\x50\x0d\x1f\x6b\x70\x86\xfb\xfd\xcb\x85\xa8\xc9\xd7\x5d\xfe\xb5\xf1\x27\x37\xa6\x1f\xf1\x00\x6e\x57\x9c\x6e\x01\x2e\x01\x27\x62\xed\x11\x99\xfe\xa9\x8a\xb4\x8a\xbc\x88\xa8\xa9\x4d\xaf\x33\xa6\xa3\xc5\x03\x74\xb4\xad\x4f\x2a\x5f\x35\x9d\x53\x69\xc7\xaa\x2b\x24\x93\xec\xa2\x3b\xc3\xd6\x8f\xb6\x6d\x91\xc4\x33\x70\x18\xac\x4e\x61\x39\x04\x6c\x10\xda\x02\xa4\xd9\x72\x07\xd7\xde\xdd\xd5\xad\x10\xc4\x2b\x97\xec\x7c\x2d\xce\x66\xb5\xf4\x9c\xf0\xb1\xd9\xf8\x36\x15\xca\x6a\xdb\xc2\x73\x57\x07\x40\x89\x68\x42\x5c\x33\x98\xed\x7e\x8e\x8b\xe8\x62\x8f\x5c\x1d\xad\xbb\x29\x9d\xcc\x95\x26\x18\xf4\x60\xa2\xb7\xe7\x59\xe6\x29\x03\xf9\x53\xa4\x20\x32\x8b\x9d\x2d\x56\x4d\x1f\xde\x28\xe7\xab\xc9\x49\xa8\x60\xf6\x55\xee\xdd\x98\x83\x2a\x19\x80\x8e\xee\x9e\xec\xbf\xaa\xc6\x3d\xe4\xc4\xa8\x74\x77\x7f\xd7\x56\xaf\x2e\x9d\x19\xef\x04\x27\xbd\x5b\xce\x7a\x93\xed\x0f\xb1\x60\xba\xe5\x98\xdc\xa0\xc6\x5b\xdf\xdd\x2f\x70\xea\x6c\x9c\x21\xee\xf2\x3e\xbb\xca\x21\x6d\xcc\xd7\x30\xd9\xf1\x19\x28\x9b\x08\xfd\xae\x77\x4f\x7c\x98\x5a\x63\xeb\xf6\x54\xe1\x66\x5a\xcc\xcc\x74\xdf\x6e\x8d\x29\xef\xca\x84\x9a\xd1\x5b\xbb\x08\x81\x31\x23\xd1\xf9\x59\x2c\xe8\x8f\x1f\x21\xc0\xd7\x1f\x92\xaf\x36\x43\xe4\x9d\xb4\x49\x2d\x3c\x32\xea\x18\xd1\xbf\x6c\x67\x57\x99\xd0\xf2\x93\x62\xb2\x5f\x94\xc9\x3a\xbf\x19\xd0\xbd\x4f\xb0\xad\x33\x8c\xd6\xac\xad\x0d\xde\x53\xbb\x7b\xbc\x28\x17\x63\x14\xf4\x0d\x4e\x64\x46\x53\xcd\x89\xd7\xb3\x75\x30\xe3\xa2\x42\x4c\x74\xf6\x41\xa0\x58\xa8\xa5\x3c\xf4\xfb\xa4\xd9\x29\x3e\x3b\x44\xaa\x2d\xfd\x28\x58\x95\xe4\x3c\x5f\x3a\x69\x1e\xf6\xb9\x8b\xc1\x95\xe9\x60\x59\xc9\xe4\x38\x07\x8a\x87\x4e\x2f\xd5\x09\x19\xc6\xe6\x60\x11\xd0\xdf\x3d\x50\x2c\xe5\xa8\x36\xb0\xf7\x0a\x48\xe8\x63\x08\xd8\x0a\xb1\x82\x89\x9c\x20\x59\x8a\x47\x43\xef\x64\xeb\xfd\xc9\xbe\x6c\xbb\x7e\xbb\x23\xe4\xeb\x0b\x7a\x01\xd1\xfa\xb7\x7c\x58\x88\x59\x68\x77\x54\xe0\xe0\x93\x98\x51\x49\x09\x1a\x72\xc0\xb8\xf7\x60\xd4\x8e\x74\xe8\xb7\x15\xdf\x19\xe5\x2f\x58\x0a\x55\xd0\xab\x0e\x2e\x9b\x0a\xa7\xd8\x89\x66\x90\x4c\xc4\xe6\x8e\x2d\x3a\xd7\x61\xde\xdf\x06\x89\x36\xd1\xa4\xf8\x93\x37\x48\x0b\x13\x9e\x6d\x5e\x18\x06\x67\x06\x2a\x3f\xfa\x90\x1d\x00\xb7\xfd\xd8\x2a\x12\xf9\x1a\x79\x28\xe3\x92\xe4\xa4\x59\x96\x7d\xf5\xef\x28\xe8\xc8\xe2\x33\xba\x04\xb1\x05\x6a\x5e\x7c\xea\x7d\x81\x13\xf5\xdb\xc5\x7c\xf5\xe7\x61\x4f\xc7\xfb\x51\x61\x54\x70\xd0\x1e\x62\x8d\x8f\x17\x0c\x42\x91\x34\x04\xef\x53\xc5\xe3\x76\xc7\x22\x8c\xe8\xaf\x8d\x33\xc5\x25\x29\xe6\xb8\xe2\x0a\x97\x8d\x2c\xa4\x89\xfd\xba\x63\x54\xfd\x58\x0f\x2f\x77\x55\xf3\xf1\xbe\x76\x38\xbe\x33\x83\xc9\x7c\x2d\x05\x7d\xde\x73\x39\x37\xa4\xf9\x61\x4d\xe8\x0f\xb8\x25\x9c\xe7\x9b\x24\xc3\x9d\x45\xdb\x38\xe2\xf9\x7d\xf4\xfb\x2a\xcf\xb4\x7c\x2a\x90\xdb\x8b\x5e\x3b\xde\x26\x7f\xec\x60\x53\x87\x6f\x1d\x5c\xe0\xe5\x34\x89\xae\x10\xe2\x48\x7b\x73\x6c\x2f\x7b\xc4\x48\x91\xaf\xff\x02\x74\x65\x14\x18\xbd\xee\x4d\xfe\xe3\x3b\x01\x2e\x04\x34\x5d\xb6\x03\xb3\xde\x2d\xbd\x94\xc4\x1d\x95\xc7\x44\xcd\xde\x9a\x7a\xdb\xf3\xb5\x27\xd1\x52\x03\x3f\xd8\xb6\x12\x8a\xcf\x37\x03\x42\x9d\x0e\x08\xaf\x8d\x3e\xbc\xaf\x29\xef\xb6\x7d\x2c\xb5\xfd\x44\x1b\xfc\xb5\x08\xd5\x29\xa2\x90\xdc\xa6\x61\x4b\x83\x41\xfd\x36\x8f\x87\x6a\x95\x60\x73\x6b\x47\x18\x96\x00\x55\x79\x76\x60\xb3\xae\xf4\x67\x88\xe8\x76\xb6\xfd\xea\x9a\x54\x7f\xad\xd7\x33\xce\x92\x38\xdd\xfe\x0b\xd3\x7d\xfb\xf2\xf5\xc4\x4d\x45\xd9\xe3\x1b\xd3\x6f\x5a\x4f\x0a\xdb\x0e\x81\xf0\x65\xcf\x73\x6d\xcb\x9a\xff\x44\xed\x1f\xbb\xd7\x97\xcc\xa5\xc9\xbd\x65\xe2\x39\xc8\x49\x80\xec\x2b\x42\x12\xc9\x19\x4a\xbf\x2f\xa1\x3b\xcd\xa6\xf2\x57\x38\x5e\xf4\xc4\xf1\xb1\x3c\x9a\xc1\x8d\x1a\x02\x4b\x72\x89\xc3\x39\x4a\x3b\xbd\x9c\xf0\x51\x3b\x0b\xa1\x0a\x7a\x09\x55\x99\x37\x96\x83\x42\xf9\x8b\x12\xdc\xfb\x45\x7e\xad\xcc\x12\xfe\xdd\x69\xf5\x02\x95\x21\x5c\x47\x8b\x61\x85\x89\x23\x81\xc3\xde\xf8\x96\x42\x5d\x19\xa6\x3c\x44\x77\xaa\x1d\xf9\xd0\xc5\x59\x4d\xb2\xe3\x7d\xfd\xdd\x0c\xdf\xbb\xd0\x6d\x9b\x23\xf0\x63\xf5\x97\x47\xb1\x8f\xcf\x92\x00\x4b\xe3\xf2\x83\x8a\xd7\x04\xdd\xd5\xc8\xfc\xc1\x71\x23\x50\x0b\xbd\xef\xea\x0a\xbb\xfc\x79\x88\x63\x1c\x74\x4e\xc5\x55\x01\x0f\x61\xea\x78\x62\x2b\xca\x0b\xeb\x4b\xb4\x7c\xbf\x0f\xb0\x6c\x93\x1e\xed\x62\xaf\x95\xc0\xc1\xd5\x5f\x69\x60\x89\x04\xed\x7f\xed\x60\x7c\x89\xfa\xa6\x4d\xbe\x26\xea\xc8\x41\x8f\x53\x79\xb6\x35\xd6\x00\xfd\x11\xb9\xc4\xec\xa4\x15\x87\xcc\xea\x13\x52\x90\xb6\xa3\x74\x7f\xa2\x1d\x39\x16\x38\x74\x35\x1a\xad\x8c\xea\xb4\xfd\x84\xae\xc8\xc2\x6f\xc4\x7f\x02\x90\xfa\xf8\xb5\x38\xb2\x9b\x5b\xb7\xd6\xa6\x28\x73\x0a\x35\x27\xc9\x30\x54\xfe\x92\x61\x9e\x00\x41\xd3\x7f\x0f\x77\x49\x24\x85\x99\xd2\xc7\x28\x66\xa3\xca\x43\x12\x44\x9d\x0d\x47\x8c\x38\xd2\x2d\x37\xc4\x1f\xb3\xc6\x78\x1e\x78\x52\xf0\xc6\xa8\x4d\x6b\x43\xce\xa0\xfb\x98\x5e\x0c\x11\xdd\x5a\xf8\xd5\x03\xdc\xe2\x4b\x89\x29\x79\x02\xe0\x91\xf2\x25\x8a\xb0\xc7\x77\xdc\xea\xe8\x21\x33\x47\xf3\x37\x8e\x08\xc5\x5b\x97\x4e\x64\x79\xf1\x97\x47\xf9\x2b\x13\xa1\x72\xa4\xf0\x37\x50\x65\xe9\xbd\x99\x43\x7e\x8e\x88\xe3\x64\xc7\xeb\x61\x5f\xc4\xef\x8a\xd4\x60\x83\xad\x02\xe1\xcb\x5b\xb4\x01\x81\x72\xa9\x37\xab\x6a\x7c\xe4\xa1\x8a\xde\xd7\xf2\x57\x51\x7b\x70\x21\x50\x9a\xcd\x5b\x7f\x73\x0b\xb4\xab\x1b\x3b\x67\x99\xa2\x11\x9b\x7a\x62\xb7\xf3\x97\xc1\xeb\xa7\x1b\x5c\xe6\x18\x7d\x53\x98\xb8\xd0\x7e\x9c\x41\xa3\xee\x40\x91\x49\xf0\xde\x2e\x44\xab\xb0\x63\xe1\xdd\x85\xc1\xf5\xc4\xcf\x31\xbf\x23\x67\xbc\x57\x13\x95\xb7\x76\x15\x2a\x6c\xc7\x6d\x9d\xca\x55\xeb\xf0\xce\x73\x1e\x20\x87\x9a\x39\x44\x2b\xf2\x3d\x5d\x18\xe4\x86\xda\x32\x8e\x9f\x64\x41\x6c\x68\x4a\xbd\xfb\x15\xe9\x14\x0d\x79\xb3\xe2\x0c\xce\x1b\xe7\x2f\x4e\x5b\x5b\xa8\xa2\xd2\x33\x44\x18\x85\xff\xe5\xbe\xe1\x0c\xd7\xf2\x74\x1e\x22\x87\x5d\x66\x4a\x11\x94\xc1\x87\xbf\x57\x79\x84\xdc\xc0\x3c\xc5\xc0\xc8\x2d\x4c\x77\x14\xfa\x84\xd4\x95\xa1\xda\xb8\x93\xd0\x07\xec\x0c\x28\x91\x4b\xad\x5f\x42\x88\x7a\x61\x73\x7f\x96\xf4\xd6\x92\x21\x8f\xef\x0f\x65\xd5\xe7\xcf\xe3\x17\xa2\x38\xa2\x85\x65\x35\xf5\x18\xd3\xdd\xe9\x66\xf3\x7b\xda\x1e\xff\xc1\x4d\xa6\xbe\x08\xb2\x08\x4f\x75\xca\x34\x8d\x1d\x4c\x85\xa2\x98\x1d\x4b\x7f\xf9\xce\x6d\x34\xf1\x99\x91\xbc\x0c\xea\x0b\x4f\xd9\xa4\xc6\x55\xe3\x59\x76\x71\x92\x1e\xfb\x54\x56\x42\x72\x04\xf6\x5b\xeb\x22\x03\xdd\x90\x18\x29\x56\xe1\x28\xdd\xac\x38\x3a\xd9\x9f\xd7\xcf\x8f\x55\x3d\xf9\xb9\xf1\xf6\xe3\xe3\x14\xf9\x72\x5f\xbe\x77\xd9\x18\x51\xf8\x12\x61\xe7\xdf\xa0\x80\x51\x69\xea\x03\x53\x2f\x79\x93\xb5\x8d\x1e\x4d\xe3\xd6\x92\xa2\xb1\x45\x55\xd2\x4a\xc7\xd9\x17\x45\x50\x28\xd3\xd9\xc2\x6b\x20\x5f\x0c\x0a\x1d\xbb\xe1\xd8\x3f\x62\x6b\x6d\xa3\x25\x84\x34\x1d\x39\x09\x66\xb3\x63\x23\x2a\xfa\x17\xe9\xe2\xf8\x60\x27\xf6\xa7\x1d\x4d\x56\x39\x02\x21\x99\x72\x45\x20\x8a\xef\xf4\x3c\x5e\x9a\x65\x99\x27\x90\x43\x24\x5b\x96\x5b\xbf\x21\x09\x65\x0e\x17\x5a\x40\x6a\xe7\x04\xa2\xd8\x52\x01\x92\xc0\x7b\x52\xe2\x91\x26\xa6\xf3\x4d\x93\xf1\x8f\x30\x88\xbf\xf1\x2f\x7a\x70\x6c\x69\xf2\x00\xc0\x1d\x04\x75\x86\xed\x3b\x93\xba\x81\xed\xc1\x2a\x6f\x91\x11\xac\x1d\x33\xc3\xd4\x26\x9d\x92\x4b\xf2\x2e\x99\x02\x06\x9c\xe7\xb2\x07\xbb\xac\x0b\x52\x0e\xd9\x22\x46\xed\x98\x0a\x40\x65\x7b\xec\x87\xc6\x2c\xdd\x00\x97\xc0\x47\x9a\xf6\x28\xad\xe4\x7c\xc8\x71\x36\xc5\x15\x27\x0d\x47\x16\x20\xb5\x68\x66\xe3\xcd\x98\xf6\x8e\xa8\x04\xdd\x4f\x79\xdb\x13\xa3\x8d\xfe\xfe\x27\x91\x74\xa7\x93\xa9\x7b\xd7\x22\xc2\x90\xaa\xbe\xa2\xf0\x5b\x27\x0a\x74\xc7\x92\x5b\x35\x5f\xaa\x7d\x8e\x3f\x7f\x86\xe8\x6e\x63\x05\x11\x7a\x72\x6d\x74\x69\x2e\x5d\xde\x4f\xd4\x1a\xde\xea\xbf\x15\xf1\xc0\x45\xbd\x6b\xd1\xe7\x3a\x79\x6c\x7c\x89\x77\xab\xc6\xf6\x88\xdc\x78\x68\xe8\x98\x73\x12\xf7\x08\x44\x77\x6e\xe3\x1d\x45\xd5\xad\x89\xcf\x50\x71\x86\x54\x1f\x2e\x8f\x7c\xa2\x87\x3e\x9a\xd4\xc5\x14\x34\x14\x3f\xfb\x9e\xd6\x2a\xca\xd3\x63\xd0\xd3\x75\x6b\x64\xae\xfa\x85\xe1\x93\x44\x72\x94\xd4\xc6\x76\x3d\x51\xb2\x09\xd8\x34\x46\xd5\x86\xd6\x8f\x69\x95\x59\xbf\x8f\x83\x49\x06\x60\x8d\x0f\x4c\x56\xc1\xec\xaf\x09\x1a\x65\x85\xc9\x46\x78\x2a\x53\x42\x01\x4d\xe8\xd0\x10\xa6\x3b\x39\x86\xf8\x66\xaf\x56\x1e\x82\x11\x22\x3b\x75\x93\x64\xce\x38\x40\x91\xb5\xc5\x8c\xd1\x78\x68\x4e\x5f\x73\x93\xd2\x8d\x69\x28\xd6\xd0\xd3\x10\x95\xeb\x93\x54\xcd\x71\xfa\x97\x29\xf2\x64\x67\xd3\x44\x4c\x56\x35\x2b\x7c\x2c\xb6\xa0\xbf\xad\x36\x0f\x7c\x3d\xf3\x0c\xe4\x33\xb6\x97\xff\xf6\xf3\x3e\xaa\x48\x57\xd4\xef\xdb\x7e\x66\x69\xf0\xfa\x38\xd8\x03\x35\xd6\xca\x0f\x4c\x9e\xd0\xe7\xcd\x8f\x77\x58\xfd\xbd\xaa\x1f\xd9\xf9\xfe\x90\x9d\x4a\x61\x91\x59\x4f\x84\xc2\x99\xc0\x61\xf3\x3c\xcc\x61\xf6\x73\x95\x5c\x32\x25\xdf\xba\x1b\x20\xa5\x73\x51\xb1\xf9\x1e\xd8\x25\x43\x65\x5d\x31\x71\xf5\x1a\x8f\xe0\x59\x85\x63\xde\x85\xa3\xe0\xc4\xec\x96\xe5\xac\x6b\xe1\x74\x6d\x3f\xf3\x36\xf4\xef\x6e\x68\x22\x01\xd3\x64\x1a\xf4\x41\x15\xbb\x47\xf5\x45\x4c\x3a\xae\x69\x3d\xde\x50\x7c\x5f\x67\xcd\xa5\x30\x84\x4a\x8a\xa1\xa4\xa1\x44\x3d\x80\xf6\x6b\xbd\x48\xe5\x3e\x6f\x76\x0c\x06\x75\x4c\xd1\x60\x65\xa6\x41\x9f\xcc\xc7\xf1\xfa\xf9\x4d\x17\xe4\x84\xa1\x5c\x99\x7e\x02\x4e\xa4\xfa\x80\x40\x4c\x31\x05\x85\x47\x4c\x22\x03\x41\x3a\x7d\x01\xe9\xd5\x1e\x8f\x16\x93\xd8\x35\x12\xa1\xb1\x35\x53\x74\xc7\x6c\xfd\x76\xef\x32\xd6\x3d\xb6\xde\xc4\xa3\xff\x2e\x38\x30\x7f\xe0\x57\x9c\x5f\x27\x71\x49\xf7\xdb\xdc\x52\xef\xca\x10\x96\xee\x24\x00\x19\x25\x77\xcd\xe4\x73\x78\x34\xf7\x0f\xd6\xd1\xe3\xd9\x18\xd4\x2a\xf9\xcf\x8b\x88\x6d\x66\x9d\x81\x66\xdc\xbb\x6a\xd1\x5f\xd1\x15\xae\x5d\xe2\x56\xe7\x53\xb3\xe5\x48\xfc\xf1\xe7\xe7\x76\x37\x6c\xd1\x28\xb9\x20\x44\x2c\x11\x45\xbc\xf3\x5b\x2e\x1c\x5d\x54\xbd\x6f\x9c\xcc\xcd\x91\x76\xc6\x17\x55\xee\xbe\x21\x4a\x73\x0c\x49\xfd\xf7\x92\xbe\x0e\xb9\xb1\x73\x04\xe0\x25\x10\x65\x9c\x9a\x30\x7c\x19\x10\x70\x65\x1a\xca\x6f\xb6\x10\xd9\x39\xbd\x3f\x7d\x0a\xae\xee\xcb\x47\xf9\x75\x2d\x4a\x33\x15\x63\x63\x5a\xc1\xc7\xb1\x75\x46\x75\xab\x62\x1b\xff\x8a\x1b\x79\x68\x94\x7f\x10\x34\x62\x46\x5d\xd0\xd3\x4d\x6b\x64\x36\xb9\x90\x42\xd6\xee\xdc\x1b\x79\xd7\x20\x3c\x70\xd3\x08\x1b\x7f\xb3\xd9\x02\x31\x20\xf4\x72\x31\x66\x06\x85\x08\x6b\x4a\x7a\x89\x60\x45\x56\x44\x08\x5d\x86\x2e\xb3\x49\x69\x96\x23\x4c\x99\x03\x9e\x5d\xb9\x60\x6f\x70\xf5\x15\xc0\x50\x98\xda\x97\x63\x5e\xa2\x1e\x51\x30\x1f\xc9\x43\x7a\x0f\xfa\xdb\xf7\xa3\xe0\xe7\x11\xf9\x9b\x15\xd9\xdf\xd8\xba\x53\x17\x87\x6f\x1d\x8b\xd5\x64\x8a\xae\x5d\x9b\x47\x3e\x37\xfc\x94\xbd\x19\x13\x95\x32\x4c\x96\xf4\x99\xde\xff\xd1\x74\x16\x4b\xd6\x32\xcd\x16\xbe\x20\x06\xb8\x0d\xb1\x8d\xbb\x33\xc3\xdd\x9d\xab\x3f\xd1\xef\x77\xfe\x01\x11\x1d\x1d\x7b\x40\x15\x59\x2b\xd7\x93\x50\x59\x40\x46\x84\x93\x7e\x0d\xc5\xa4\x40\xd3\x1f\x27\x2d\x23\xb6\xa3\xd6\xf4\xc1\x46\x10\x54\xe8\xf8\xc3\xeb\x1e\x89\xd1\x7a\x56\xd9\x7e\xcf\xd0\x34\xde\xac\x84\xf8\x92\xbd\x57\x4a\x38\x53\xf9\x99\x30\xbb\x1d\xcd\x40\xb0\x7b\xfa\x2f\xda\x50\xe1\x87\x81\x3d\xd6\x7f\xbb\x18\xff\x18\x86\xab\xb1\xcc\x6a\x6e\xf7\x7c\xb1\x25\x0d\x86\xf0\x3b\xc9\x1f\x36\xd4\x8e\x07\x45\x1a\xfc\xe6\xe6\x04\x11\x45\x63\xac\x92\x56\x5c\x68\x86\x43\x54\xa2\x61\xb4\x12\xfa\x83\x91\x9e\x11\x0d\x2a\xbb\x63\xa4\x60\xae\x67\xe9\x03\x17\x53\xe0\x6f\xc1\xa8\x79\xe9\x38\x34\x89\xe8\xf9\x27\x44\x5f\x88\x4a\x33\xee\x8f\xbd\xad\x2f\x47\x69\x2d\x79\x7e\xa6\x37\x45\xe4\x73\x33\x41\xf2\x35\x6a\x3e\x45\x2d\x63\x3b\x0c\xae\xb0\x0f\x22\x2f\xe9\xbb\x5f\x12\xff\xc8\xdd\x08\xf7\xeb\xc0\x12\x56\xef\x95\x17\x66\x80\x52\x24\x7d\x0b\x4a\xd2\xe7\x81\x12\xa5\xf2\xe3\x05\xe5\xfe\xf6\xb4\x14\xa2\x52\x63\x1b\xa8\x98\x5c\x34\x3b\x86\x25\x09\x09\x2b\x03\xa1\xe9\x0f\xfd\x4c\xc9\xeb\xa9\x9c\xca\x74\x54\xb9\x73\x2a\x84\x06\xed\x2b\x50\x8a\x4a\x8d\xea\x85\x8b\x76\x8e\x3b\x3e\xfe\x99\x0b\x7a\xe0\x25\x04\xa4\x7a\x33\x22\x5d\xea\x0a\xba\x27\x3c\xa3\x97\x74\xc0\x66\x27\x10\x71\x6e\xeb\xbd\xab\xdc\xba\x6e\x2b\x39\xe4\xff\x5e\xc0\xaf\xeb\x4a\xec\xd4\x07\xae\x0e\x26\xe2\x3c\x82\xef\x88\x63\x63\xd5\xaf\xf0\x83\x51\x1f\xca\x23\x8c\x2d\x85\xf2\xd3\xee\xef\x67\x31\x5d\x9e\xc1\xa5\x15\x14\x5e\xec\x9c\x1c\x71\x3a\x29\x31\xfd\xd7\x93\xc5\xaa\xe8\x5c\xa3\x20\xee\x58\x04\x81\x13\x60\x56\x1f\x98\xab\xfa\xee\xa8\xc6\x9a\x9d\x6c\x54\x06\xef\xc3\x05\x00\x66\x2d\x35\x3d\x13\xc0\x87\x17\x08\x8e\x59\xb0\x3f\xa5\x5b\xfc\x40\xeb\xe6\x63\xfd\xec\xf4\x4e\x7e\xb3\x03\xa1\xda\x3c\x46\xba\xd3\x92\xba\xdd\x04\xb4\x3f\xcf\x93\x5a\x62\x27\x24\x9d\xe0\xdb\x26\x89\xb2\xaa\x0b\xcd\x0c\x9b\xc1\xd4\xc5\x87\xf0\x61\xf0\x31\x7b\x69\x19\x6c\x80\x60\x8e\xfa\x14\xb5\x5e\x3d\x6e\x3a\x3b\x9a\x29\xbf\x4d\x39\xe6\x6c\xfc\x3d\xa6\x59\xcb\xca\x9e\x67\xdd\x3c\x2e\x44\x29\xd6\x32\x99\x1e\x4f\x72\x2c\xa6\x53\xa0\xe4\xb1\x05\x2b\x50\x23\xd4\x02\xce\xc4\xb9\x9d\xa8\x66\x90\xc4\xe5\x2c\x83\x40\x98\x30\x54\xb0\x76\xfa\x4b\x76\x24\x3e\xc2\xcd\xbe\xf5\xcf\xf0\x02\xb8\x02\x3f\x54\xc1\x88\xb2\x92\x1a\x5f\x6b\xde\xd3\xdf\x9e\x9f\x07\x3c\x23\x73\xff\xad\x67\x74\x85\x49\x03\xfb\xe0\x65\xe5\xfa\x45\x73\x3a\x18\xc2\xf7\x43\x90\x4b\xec\x04\x4b\xcd\xad\x67\x86\xb5\x7b\x10\xf1\x4c\xe0\xf2\x56\xd4\x39\x91\x9f\xff\xf8\xac\x96\xc4\xa9\xfd\x91\x34\x80\x05\x11\x52\x06\x1a\x8c\x20\x21\xe9\xcc\xb5\x47\x82\x92\x50\x48\x0f\x01\x91\x47\x57\xb4\x61\x97\x73\x34\xd7\xc5\x92\x75\x97\xf2\x57\xcf\xa2\x0c\x1f\xac\x18\x0e\x4b\x26\x3c\x7a\xc6\xa5\x36\x16\x1b\x41\x50\x44\x0e\x42\x39\x8e\x81\xcd\x1a\x77\x0b\x81\x68\x7e\x88\xab\x53\x56\x21\x05\xcd\x6a\x4e\x0b\x5d\x4e\x19\x0c\x42\x8c\xc3\x39\xae\xe6\x50\x6f\xa0\x3e\xf4\x31\xcc\x30\x41\x16\x77\x6e\x4a\x85\xf4\x23\x10\x17\x68\xb7\x95\x00\x12\x1a\x00\xb4\x9e\x6c\xb7\x32\xc9\x2f\x34\x29\xfc\x40\x70\xce\x19\xa5\x58\xa5\x38\xd1\x18\x2b\x2d\x20\xab\x31\x8e\xb7\x94\xbe\x06\xad\x07\x4b\x84\x6a\x1a\x3f\x67\x7f\xda\x1c\xa4\x30\x8c\x02\xaa\xea\xa8\x37\x3e\x2f\x92\x30\x1a\xb6\xe2\x44\xd2\xf0\xd8\xe6\x27\xe8\x65\x2e\x26\xc4\x81\x33\x84\x45\xc7\x2f\x70\x62\x6a\x2c\x37\x19\xc7\xd1\x3d\x88\x06\xfb\xaa\xe6\x30\x60\x8d\x5c\x01\x36\x3a\xc7\xcb\xca\x3b\x28\xa2\x02\xa1\x59\x30\xf1\x52\xb6\x95\x0b\x4d\xfc\x76\xfa\x04\xf2\x3b\x37\x35\xdc\x0f\xc1\x5a\x60\x77\x59\x5e\xde\xbc\xb7\xa4\x3f\x0b\x88\x02\x01\x44\x14\xe6\x9f\x32\xdd\x30\xbe\x55\xd2\x43\x41\xbf\x5a\xe8\x7d\x53\xb5\x7f\x20\x58\x00\xa4\x8b\x57\xfb\xb8\x50\x9d\x25\xda\x0a\xb1\x62\xb4\xd0\x08\x79\xaf\xb8\xa1\xe2\xd1\xc0\xb3\x03\x16\x12\x79\xe7\x13\xa9\xc6\x93\xf3\x6d\xee\x05\x3b\x42\xa3\x0e\xfc\x2b\xa8\xf1\xdd\x37\xf5\x18\xbf\xb4\xf9\xc5\x1d\xf8\xa4\x6c\x0e\x64\x06\x9a\x35\x78\x4f\xac\xb1\x08\xa8\x9e\xf4\x4e\xd3\xf3\xd1\x20\x38\x3d\x35\xfa\x61\x4f\x1b\x53\xa9\xe5\xcc\x52\x5e\xab\xed\x4a\x94\x68\x76\xea\xe2\x18\x0c\xab\x1d\xa0\x2f\x05\x5a\x17\x4a\xee\x96\x2a\xb4\xc1\x9b\x7c\xb0\x58\x92\x27\xdf\xed\xbb\xdc\xc9\x2d\xd3\x5b\xdb\x40\xb7\x54\xee\x18\x3b\x0b\xbe\x17\x61\x76\x33\xc9\x23\x37\x4a\x79\x02\x2b\xc0\xa7\xa9\xa2\xd9\x61\x8c\x4f\xfa\xe4\xc0\xd0\xb7\xbf\x61\x85\xd3\x22\x52\xa0\xc6\xf0\x75\x6b\xba\x85\xae\x82\x86\x92\x7f\x4a\xc0\x9c\xbc\x5d\xd9\x68\xd4\x78\x6f\xbe\xc6\x59\x9c\xb5\xe2\x01\x81\x4c\xc9\xf9\x6c\x68\x00\x86\x29\x83\x68\xed\x00\xd8\x79\xe3\xee\xdc\x00\x4a\xab\xd4\x3c\x92\x4e\x69\x00\x48\x8f\xf0\xeb\x73\x7e\xd8\x8a\x94\xad\xf5\x67\x59\xe0\xf4\xce\x75\x89\xe3\x00\x2f\x78\xc9\xb2\x45\x01\x72\x40\x20\xf1\xea\x45\x0e\x3a\xb5\x59\x61\xec\xc8\xf4\x20\xd6\x9d\xa6\x07\x2d\x4e\x14\xc6\xcb\xa8\xc5\x4c\x3c\xc5\x4e\xad\x33\x26\x30\x16\x24\x51\xc9\xc2\x2d\x38\xac\xc9\xc3\x8c\x2a\x61\xce\xdd\x13\x1e\x7b\x15\x6c\x5f\x61\xd6\xfe\x9b\xb6\x18\x61\x6b\x48\x0f\x17\x8e\xe0\xeb\xae\xbc\x22\x17\x3a\x34\x3d\x9b\xd3\x57\x89\xb4\xe0\x66\xa5\xc5\x48\xa4\x20\x08\x60\x84\xc2\x0a\xa7\x4f\xc4\xd4\x52\x2f\x68\x5f\x11\x38\x4e\x0c\x91\x1e\x76\x63\x98\x9b\xd2\x96\xb9\xda\xbf\xe4\xe9\x83\xc9\xa1\x6d\xcb\x0d\x6f\x77\xa1\xd1\x03\x3e\xda\xcd\x85\xb6\x96\xea\xc2\x81\x94\x7b\xb9\x97\xcb\x61\xc3\x0b\x99\x74\x47\x32\x03\x2a\xb4\xea\xf1\xd3\xae\xc8\x4a\xa6\xa0\xb6\x5b\x63\x07\x08\xc8\xd4\xb7\x9f\x9f\x36\xaa\x4e\x68\x8c\x8c\x73\x8b\x62\xed\xc1\x7a\xfc\xa2\xd3\x73\x73\x50\xe9\x13\x10\x8b\x6e\xb1\xaa\x36\xad\x07\x32\xb7\x3e\x05\xb0\x92\xac\xa5\x26\xb6\xa1\x83\xe2\x34\xd8\x02\x4f\x90\x08\x31\xb2\x28\xaf\x08\xa6\x30\x0d\x4f\x9f\x52\xcd\x8c\xb1\x85\xab\xd3\x56\x90\x84\xcd\xde\x26\x10\x3b\x07\x36\xe6\x5e\xb5\x76\xd9\xb1\xd5\x8f\xf2\x64\x12\xf1\xcc\x0a\xff\x0c\x07\xbb\x99\x40\x3d\x8f\xcd\x83\x49\xbc\xbe\xc5\x90\x31\x69\x64\x83\xbf\xe5\x6b\xfd\x9f\x63\xfb\xc7\xf8\x65\xe9\x28\xb2\xf3\x8d\xa5\xad\x6f\x4a\x7c\x7b\x84\x5b\x68\xdf\xa2\xd8\xfe\x1a\xed\x77\xa1\x24\x71\x4c\x0e\xb2\x27\x17\xe7\xc8\xbc\x8b\xd4\x76\x2d\xd4\xff\xf4\xf4\xb7\x16\x27\xe8\xdc\x8f\x93\x59\x9c\x28\x4b\x0a\x1d\x30\x46\xe4\xc3\x1a\x63\x9e\x9d\x14\x1f\x1a\xc3\x06\xa2\xa5\x12\xcf\x36\x03\x60\x75\xa2\x59\x03\x44\xfe\xd7\x92\x0e\x94\xc3\x23\x98\xd7\xfa\xf0\xa8\x62\x0d\x21\x97\x1a\xa8\xf0\x4b\xb4\xe1\x81\xa1\x7b\x69\x49\x37\x55\x59\xb2\x0d\xc8\xb7\xc3\xaa\x5c\xbf\x6c\xc1\xfa\x95\x07\x51\x55\x88\xf2\x04\x11\xd2\x8f\x0e\x58\xed\xc8\x89\xba\x9c\xed\x3e\xb8\x54\xee\x62\xdf\x69\x9d\x1e\x49\x28\x75\x46\x32\xbf\x2d\x84\xf7\x43\xbd\x03\x8d\xb9\xbc\xf5\xc7\xfd\x4d\x50\x24\x9f\x94\x5b\xe7\x6d\x88\x65\x53\xb3\x9b\x3b\x89\x11\x7b\x45\x28\xad\x4e\xea\x1e\xb0\xd9\xa0\x04\x02\xfe\xdd\xc3\x89\xa6\xb1\x6e\x1a\x98\x5f\x5a\xd1\x65\x02\xa2\x3e\x02\x2d\x8b\xdf\xda\x69\x5b\x64\x03\x5a\x9f\x0f\xff\x62\xf8\xe0\xcc\xca\x9a\xe2\xb2\x08\x7d\xc8\x6e\x7e\x00\x63\x3d\xab\x26\x4b\xb2\x36\x10\x3b\xb3\x72\xb1\xcf\x15\x92\xeb\xd4\x7c\x96\xf6\xb4\xe3\x07\x82\x69\x39\xb6\xda\x78\x27\x4a\x3e\x9c\x57\xca\x7b\xa8\x79\xc9\x85\xc6\xca\xc2\x04\x2d\x60\xfc\x96\x05\x26\x88\x62\xb4\x1c\x6b\xfa\xe6\xa1\x3b\x73\xac\xf9\x2d\x31\x42\xb7\x82\xc4\x40\x1e\x81\xc8\xbf\xb6\x55\x61\x50\xea\x38\x8c\x2a\xad\x87\x37\x80\xf4\xf8\x55\x15\x3e\x26\x63\x29\x36\x3f\x87\x16\x9d\x3e\x2d\x65\x52\x7c\x4e\xd4\x95\xdb\xf9\xe6\x02\x51\x7f\x47\x5b\x97\x78\x42\x9d\x7f\x9e\x9d\x66\x49\x4d\x26\x62\x19\xa3\xca\x9b\x37\x37\x55\xc6\xf2\x47\x4f\xfa\xa6\xbe\x0b\x5f\x0b\x92\x30\x83\x5f\x06\xd3\x08\x59\x9c\x84\xc4\x7b\x61\xd5\xaf\x3f\xa1\x9c\xd5\x7d\xeb\xe5\xac\xc6\xcd\xa7\xcf\x6c\x23\x21\xdc\xd8\x6d\x33\x4e\xb8\x64\x51\x68\xe2\x8c\xe3\xba\x05\x29\xc6\xcf\x99\x6b\xff\x5f\x7d\xb2\xc5\x64\xee\x07\x73\xc7\xa9\xd6\xb1\x16\x42\x82\xb2\xa6\x63\x2d\xae\xe9\xb8\x2c\x2f\x21\xfe\xf6\x42\x78\x44\x67\x8e\xb1\xc1\x8a\x60\xda\x2b\x2e\x84\x58\xeb\x59\xe6\x58\xae\x26\xb4\xa7\x58\xb1\x24\xd2\x3f\x2a\x74\xa1\x74\x5c\x56\xfa\xfc\xd2\xc6\xcd\x34\x1d\xc0\x3a\x8b\xc1\x24\xc9\x13\x10\xa3\x8f\xb7\xab\x2f\x56\xa0\x92\x8a\x13\x4d\x35\x1b\xcd\xe6\x5d\x14\xcf\x2b\xf8\x9e\x53\x9e\xb3\x08\xa5\xc0\x8b\x7d\xd4\xa9\xa6\xf1\x32\x63\xaf\x21\x5b\x60\x12\x22\x97\x91\xf2\x1b\x1b\xab\x38\xad\x6e\xd5\x4e\xee\x04\xdd\xda\x71\x05\xc3\x0a\xed\x85\x16\x26\xc9\x0b\x53\x6c\xed\x8f\x6e\x9f\x94\xa3\xfc\x1d\xa8\x4c\xa2\xe0\x1e\x19\x9c\xeb\x38\x67\xb5\x57\x04\x8b\x4b\x19\x93\x31\x9e\x44\x70\xb9\x33\x98\x00\xc0\x8f\x5a\x39\xb8\xf2\x3e\x1e\x62\x3b\xc1\x77\x4b\x3f\x48\x42\x76\xf0\xb4\xd2\xda\xc3\xbf\x71\x2f\x6b\x3a\xfa\x26\xec\x1e\x99\x0b\xe1\x16\xef\x1c\xe9\xba\x12\x27\xc7\x32\x88\x46\xd4\xe3\x57\x5c\x3d\xac\xb9\xf7\xd9\x05\xc2\x3b\xaf\x6a\xb3\xa3\x59\x12\xd8\x90\xc1\x4b\xa6\x12\x69\x03\xad\xb8\x3e\x2e\xf6\x40\x68\x5f\xe8\xb9\x7e\x0a\x68\xf5\x47\x01\xf8\x20\xa0\x14\x96\xd6\xd1\x80\x76\xb5\xa5\x4e\xa6\x61\x32\x1a\xe3\x65\x66\xfc\x3b\x0b\x3d\x1b\x04\x51\x54\xcf\x82\x34\xd7\x98\xab\x74\xf1\xf4\xfb\xd3\x7f\x3f\x28\x22\x12\xe8\x55\xc0\xc3\x76\xf0\xc4\x0b\x4a\x88\x88\xbd\x77\x86\xa4\x0c\x97\xfe\xad\xd8\xe4\x4f\x10\xcb\x8a\x36\x1d\xf0\x68\xb2\x17\x82\x80\x7e\x0b\x08\xd0\x85\x8a\x1f\xab\xbe\xae\x92\xbe\x74\x84\x98\xc1\x66\xaf\xc2\x6d\xf0\x75\xdc\x55\x10\x3e\x17\xcc\x16\x0e\x2b\x9a\x1d\x68\x39\x7b\x50\xda\xbe\xfc\xdb\x69\x04\xcb\xa4\x7c\xfa\x17\x9b\x90\xa1\x88\xb7\xf9\xbb\xe7\xdf\xba\xdf\x1c\x79\xcf\xf5\x26\x75\x0f\xb6\x69\x73\x52\x9d\x10\x37\x41\x78\x79\x85\xe3\x68\xfa\x48\xf5\xeb\x54\xd1\xe9\x93\x5a\x9c\xb0\x45\x90\x3b\x29\x58\x5b\xa5\x7f\x8e\x2d\x35\xbb\x7a\xff\x49\xe7\x0a\xea\x15\xee\xb9\x4b\x66\x39\x73\xc8\xae\xa4\x92\xf0\x6a\xb4\x05\x2f\xcb\x67\x4c\xff\x9c\x5c\x63\xd3\x8c\xe0\xba\xb2\xcd\xe9\x44\x69\xd9\xfb\x9c\x8a\xce\x8e\xea\xa3\x43\xad\x46\x18\x57\x87\xcc\x31\x2e\x37\x8a\xdd\x6e\x5f\xc4\xd5\x28\x14\x11\x05\x78\xc9\xaf\xe7\xb2\xa8\x2e\x54\x5c\x10\x61\x49\x21\x3f\x13\x62\xb3\x47\x1a\xac\x2e\x6f\xac\x88\x3f\x0a\xac\xe0\x86\x75\xe9\xea\xbc\xbe\xe6\xbe\x73\x88\x3e\x68\x0c\x34\x1b\xc7\xed\x67\x75\x53\x13\x50\x66\x53\x4b\xbe\x9b\xd2\xfe\x7c\x06\x81\x7d\xd0\x8d\x6a\xce\xfc\x60\xb9\x9a\xf8\x13\x69\x02\xe1\x21\x44\xbe\x26\x9f\x44\x21\xd2\xf6\x37\xcb\x35\x53\xcb\xfc\x94\x20\x85\xee\xd5\x43\x2d\xa1\x24\x3d\x98\x93\xe7\x98\x52\xbe\x6b\xdd\xf3\x02\x5e\x7f\xb0\x0d\x10\x4a\xf5\x2c\x88\x52\x3d\x93\x0c\x3f\x85\xb6\x9b\xba\xb6\x04\xd1\xc0\x50\x7d\xd0\xeb\x18\x77\x18\x52\x95\x84\xdc\xa1\xea\x0f\x7b\x26\x3e\xf5\xf2\xea\xad\x05\x54\xc8\x16\x1c\xbf\x5b\xd1\xf1\x86\x5a\x19\x2d\x44\x0f\x64\x58\xd2\xb0\x96\xd5\x69\x1e\x95\x9f\x5d\x0b\xa2\x08\x56\x3e\x6c\x78\x39\xa8\x09\x5c\xc4\x27\x48\x64\x4d\xb7\x95\x46\x8e\x46\xba\xdf\x81\x01\x32\xcf\xd8\x55\xc2\xf4\x60\xf1\x11\x77\x80\x25\x40\xf4\x00\xa1\x50\xcb\xe2\x75\x5c\xb5\x4c\xf3\xa9\x88\x37\x50\x11\xfd\xd8\x18\xfe\x09\xba\x1d\x6b\x33\xc8\xe0\xa0\x69\x49\x1e\xa2\x0e\x5d\xcc\xf5\x7a\x0f\x19\xec\x7a\x04\x00\x58\x52\x63\x52\x38\x52\x8d\x95\x3f\x41\xb3\x1d\xae\x30\xd1\xb2\xd4\xc5\xbe\x75\xd6\x4c\x10\x4d\x08\x76\xfa\xcf\x29\x01\xef\x16\x32\x27\x92\x46\xee\x43\x2a\x3d\xd2\xac\x66\x23\x1c\x2d\x3e\x36\xf7\x6d\x1b\xef\xc5\x00\xb6\x1b\x98\x96\xd3\x79\xfd\x13\x3f\xfa\x61\x1a\xdc\xe4\x0a\xf3\xf1\xdf\x1c\xb2\x43\x8d\x81\x3b\xff\x1b\xf3\x87\xad\xef\x4a\x6b\x3a\xf3\x56\x4a\xb7\xb2\x26\x84\x28\x2a\x3d\x7c\x8e\x0b\x9d\xe4\x53\x53\x31\xe9\xb4\x0c\xe2\x28\xc1\x9c\x65\xee\xb2\x3d\x00\x8d\xb7\x3e\x86\x41\x9f\x47\x13\xea\x94\xc7\x4a\x5d\x43\x85\x1e\x24\xc7\x27\xff\xf3\x9e\xe5\xb5\xd3\x6a\x3e\x29\x5c\x4c\x55\x37\xb2\x11\x40\x75\x36\xbb\xdd\x72\x02\xe3\x39\xeb\xe0\x6f\xb6\x16\xc9\x14\xd3\xdd\xae\x3d\xbd\xff\x9e\x5f\x93\x86\xbf\x1e\xf2\x89\x72\x6b\xe3\x9a\x4f\x75\xb9\xa2\x60\xc3\xf3\x27\xfe\x36\x23\xda\x6d\xe7\x54\x7c\x12\xab\x7f\x79\x61\x57\x76\x84\x77\xec\x0e\xa2\xad\x88\x4f\x4a\x50\x7a\x36\x18\x00\x9d\xe9\x18\xc4\x0f\xa6\xc1\x0a\x92\xf8\xfb\x41\x25\x0c\x0f\x0d\x96\x55\x70\xaa\xfa\x28\xd0\xb8\xd0\xec\x56\xb4\xee\x40\xc1\xee\xdb\x75\x97\xc6\xc3\x2d\x59\xb9\x64\x08\x6f\x1e\x63\x40\x08\x2f\xb3\x93\xec\x1c\x9c\x4d\x18\x75\xb1\xf0\xf5\xb5\x10\x8c\x07\xdc\x7e\x51\x6b\x59\x71\x7a\xaf\x1d\xa8\xbb\x64\x50\xa4\xdc\x56\x62\xbf\x42\xcd\xb6\x3b\xc7\xdf\x78\x26\xe9\x88\x78\x1b\x42\x8e\xaa\x5d\x3b\xb6\xc4\x54\x3d\x36\x1b\x9a\xc3\xdf\x91\xb5\x58\x28\x59\xb7\x4b\x95\xc6\x67\xbf\x6a\x63\xa1\x24\x3e\x6b\xb2\x5c\xb3\x82\x08\x1d\xe1\xae\x95\x6f\x52\x9d\xa3\xbd\x4c\x14\x2d\xfd\xf9\x60\x35\x03\x69\x78\xb1\xc1\x6f\xb4\x5f\x05\x42\x12\x4d\x04\xc6\x29\x1e\x15\xb0\xfa\x70\x9d\xec\xf6\x7b\x0f\xb5\xc4\xcc\xf0\xde\x97\x67\xf5\xdd\xaf\x30\x23\x74\x6f\x2e\x2c\x54\x0e\x7f\x8d\xaa\xd2\x7a\x7f\x4f\x0e\x55\xd9\x33\x22\x1c\x76\x01\xc2\x6f\xf7\xba\xdf\x0c\x54\xb5\x83\xdd\x2e\xcb\x0a\x13\x89\xd3\x7f\x50\x7a\x8b\xfa\x52\x86\x4c\x26\x8a\xe3\x9c\x12\xdc\x00\x42\x89\xee\x31\x8f\x89\x5f\x37\xfa\x63\x6d\x1f\xb5\x36\x94\x7d\x1c\xaa\x5f\x38\xc6\xf0\xc8\x2a\xe7\x40\x00\xbd\x2e\x94\x44\x04\x78\x81\x88\x4a\x59\xd3\x87\x14\x1a\xfa\xd3\x51\xe3\x01\x37\x62\xae\x29\xb7\xa6\x82\xb6\xac\x06\x8c\x81\x29\x6e\x5e\x35\xcd\xed\x2f\x07\x01\x97\x3e\x09\xa3\xe2\xaa\x43\x0a\x1e\xab\x1d\xd1\xa4\xb6\xb4\x70\x41\x90\x5d\x15\xd1\x82\xed\x94\xa2\x81\xbd\x19\x46\x66\x58\xc5\x11\x7e\x3e\xfb\x9e\x71\xbf\xbc\x54\x71\xf9\xa9\x61\x25\xd1\x5f\x1c\x40\x8b\x47\x82\x96\xe0\x29\x3b\x8b\xc4\xab\x2d\x60\xa5\xd4\x60\xca\xca\xb3\x35\x8d\x10\x45\x6c\x30\xb0\xbc\x9a\x7c\x8d\x75\x6c\xb7\x70\x2e\x4e\x12\x40\x66\xdc\xbb\xc2\x1d\xbf\x0a\x99\x8d\xdf\xcc\xc4\x22\x8b\xa0\xd5\xe9\xff\x0c\xcf\xfe\x0a\x80\x8b\x7b\x80\xad\xdb\xdf\xbd\x19\xd3\xb7\xb3\x6b\xbe\x4d\x39\xe1\x19\x13\x26\x8b\x3e\xb7\xa7\x35\x10\xfd\x0c\x2d\xba\x0b\x30\xd4\x05\xa6\x97\x72\x31\xf9\x74\xc0\x33\xea\x90\x78\x65\x47\xd5\x66\x55\xf9\x5c\xc0\xa6\x5a\x19\xe3\xaf\x9d\x3e\xa1\xcc\xdd\x3f\x29\x22\xe5\x0e\x06\x98\x8b\x10\x1d\xa1\x9a\x6b\xbd\xb8\x69\x4b\xe4\x2f\xe7\x8f\xd4\x7b\x42\x4d\xa8\x39\x2c\xec\x5e\xe3\xe2\x80\xce\xd2\x77\xd8\x3c\x78\xe6\x14\xc2\x17\x18\x0f\x47\x69\xe4\xed\x13\x11\x3f\xbd\x71\xc7\xb7\x11\x3b\x39\x24\x33\x08\x13\xbd\xa8\x95\x73\xec\xeb\x40\xc8\xe2\x7a\x58\x2a\xd7\x27\x57\x96\x64\x3c\xaf\x2e\xef\x16\xa2\xb6\xe9\xb0\x54\x64\xd7\x24\x5f\xf4\xd3\x47\x51\xd2\x83\xe8\x52\x82\x4b\xef\x03\x8a\x9f\xe3\x97\xed\xd1\xa9\x62\x3b\x6f\xca\x43\x11\x89\xe2\xbf\x99\x97\xf2\x0e\x84\xc1\xa5\x93\x4a\x24\x15\x4d\x0f\x65\xfb\x02\xbb\x99\xd9\xac\x87\x06\x54\x48\xde\x6d\x0b\xf3\xcf\xf2\x20\x7a\x15\x23\x92\x67\x62\x7e\x40\x2e\x5a\x24\x8b\x13\x6d\xef\x53\xab\x63\x7f\x90\x51\x65\xb2\x82\x25\x3b\xa4\x1c\x3d\xb0\x92\xae\xc5\x71\x59\x63\x31\x06\x28\x4d\xfa\x70\xea\x94\xc0\xcb\x3a\xdd\x5f\x03\x11\x15\x0d\x14\x94\xf1\x4b\xda\xdd\x98\xf6\x30\x33\xa6\xd9\xfe\x8b\x8f\x6b\xe8\x9a\xf9\x13\x87\xf8\x03\x0d\x6f\x59\xd7\x79\xa5\xad\x58\x63\xab\x09\xff\xbd\x74\x5e\x1b\x7e\x8e\x7d\xbe\x68\x82\x7e\xc3\xfd\xd4\x4a\x5a\x31\xfa\xf6\x02\x6b\xfa\x5e\x38\xbf\x7a\x55\x62\x22\xd0\x45\x19\x6c\x12\x21\xf2\xa8\xa9\xc4\x3c\xdd\x28\xeb\x7c\x9e\xa9\xf5\x48\x1b\xb0\xbd\x41\x93\x5f\xab\xfe\xb0\xca\x4c\x77\x0b\x76\x82\xc0\x13\xfc\x25\x6e\xb9\x7a\xd7\xf2\x32\xb2\xd8\x24\x34\xbb\x18\x64\x21\x45\xd8\xa1\x8c\xc6\x28\x95\xb7\x05\x87\x82\x50\x71\x9e\xc6\x87\x02\x38\x78\x67\x5c\x56\x15\xc7\xad\x23\x43\x1e\x2f\x0d\xf7\x31\xba\x18\x31\xe7\xec\x53\x90\xd7\x82\xd0\xb9\x95\x1b\x14\xb8\x54\x68\xf4\x4c\x60\x6b\xf9\x61\xe1\xa2\x21\x09\x8a\x2b\x92\x7f\x7f\x73\x80\x53\xa4\x78\x17\xc9\x42\x37\xd4\x7d\xeb\x9b\xca\xcd\x48\xa0\xfc\xe0\x22\x62\x97\xa8\xc4\x7c\xa8\x5b\xc4\xce\xd9\x25\xd3\x71\xeb\x4b\xc3\x28\xbd\x83\xd8\xee\x42\x79\x0a\x91\xa4\xd8\xd8\xb0\x55\x6d\xb7\x53\x6a\xfe\xd3\x07\xba\x9c\x82\x93\x2c\xe2\x6c\xbd\x5a\x6c\x4d\x4c\xa0\x44\xbd\x05\x02\xe7\x5c\xb7\x9a\x9c\xaf\xb5\xdf\x4b\x97\x57\x94\x18\x36\xbd\x90\xc7\xf8\x05\xe9\x09\xb0\x60\xa4\xc5\xc5\x72\xd7\xad\xac\x72\xf5\xd5\x92\x05\x22\xc0\x64\x89\x1e\x00\x39\xe2\xb1\xc3\xb9\x58\x98\x95\x6f\xd1\x27\xc1\x66\xce\xab\x50\xe7\xd0\x2d\x38\x6b\xc1\x7b\x70\x15\xdc\x39\xcb\xfa\x75\x8f\x01\x7d\xf0\x00\x97\xba\xae\xc4\x2e\xd1\x00\xc9\xa5\x31\x8a\x4a\x77\x87\x83\xf2\x46\xab\xe5\x9d\x4b\x02\x8b\x66\xf0\x8a\x3a\x1f\x0b\xb8\x53\x82\xd2\x0a\x27\xb0\xfe\x8f\x0b\xff\xbd\xa7\x24\xc3\x48\x05\x1e\xc0\xf1\xb3\x7a\xd0\x09\xd0\x8c\xc0\x53\x52\x99\x74\xa4\x90\xd2\x94\x7a\xf7\x6c\x17\x7c\xe9\x89\xaa\x39\xaf\x5d\x91\xd3\x77\xdf\x34\x92\x33\x59\x8a\xc0\xa6\xee\x41\x7f\x05\x07\x09\x76\x92\x86\xc3\x1f\x67\xee\xca\xdc\x39\xd3\xbc\xaa\xed\xda\x1e\x77\xcb\xc1\x7a\xe5\x42\x9b\x0a\x97\x0a\x6e\x4f\x1d\x4c\xe2\x9d\x25\x12\xe0\x0a\xa7\x48\xf7\x6a\xb4\xb8\x15\x00\xe8\xf5\xce\x6f\x83\x57\x74\xc3\x81\x0c\x01\xdd\x6e\xc7\x77\x24\xeb\x9e\x99\x2e\x0f\x80\x05\x7d\xa1\xb9\xa3\x04\x29\x2e\x65\x81\xca\x40\x1b\x10\x5e\xab\xc3\x1e\x12\xa7\x24\x94\x6d\xd0\x4b\xfa\x67\xd2\xd9\xf6\x1e\x9b\xfc\x8a\x04\xa7\x5b\x6d\xa2\xf0\x16\x8a\x4a\xf2\x2d\xa5\xcb\xdd\xff\xb1\x9e\xdd\xa5\x19\x33\x18\x6d\x48\x1e\x2f\xc0\x57\x47\xbe\x10\xeb\xca\x1d\x07\x24\x8a\xbd\x10\x25\x6f\x61\x1b\xc9\x5d\x94\x9f\x2f\xe4\x28\x25\x67\x92\xa3\xbb\xaa\xc3\xfd\xd8\x9b\xb0\xd8\x46\x1f\x7b\xbf\xa6\x84\x58\x9f\x9c\x39\xff\x31\xf6\x20\xf2\xef\x0a\x97\xcb\x9a\xf6\x88\xd1\x25\xaf\x34\xff\xac\xe9\xfb\x8c\x97\xda\xf9\x9f\xe4\xa1\x94\xc1\x7b\x10\x65\x5e\xc7\xe9\x3e\x47\x16\xc0\x7f\x3a\x57\xa9\x76\x43\x8d\x80\x4e\x55\xb2\x6a\xa1\x61\xfa\x00\x06\xcb\x39\x71\xf4\xc3\x01\xa5\xad\xfc\xdc\x08\x34\xb3\xf3\x60\x9a\x98\x1c\xb8\xf0\xc2\x5a\x56\x2a\x4d\xf2\xe0\x91\x17\xe2\xbd\x6e\xf9\x0a\xfb\x86\x15\xd7\xcf\x48\xa3\xc2\x26\xfa\x29\xee\x7e\xf1\x16\x5b\xc0\x64\x61\xd1\x1d\x3d\x3e\x34\xa1\x65\x9c\x5e\xbf\x86\x33\x59\x07\x5e\x6e\xe9\x8b\xfb\x75\x6b\x69\x2f\xb5\xa8\xae\x30\xe0\xf0\x91\xac\xe9\xb8\xad\x22\xbb\xe2\x3f\xa5\xee\x5a\x61\x72\xcf\x1d\x01\xc0\xaa\x85\xb3\xc3\x57\x3a\x37\x56\xf1\xb3\x1a\xed\xd9\x37\x9a\x11\xcb\xaa\x0b\x2d\xaf\x4d\xbd\x75\x00\x28\xec\xdf\xe3\x07\x43\xe9\x6f\xc1\x37\xe3\x26\x21\x04\x9e\x5f\xbc\x74\x69\x45\x5b\xad\x82\xb2\x43\xe1\x69\xe3\x02\xd2\x22\x10\x92\x77\x20\xc1\xcf\x88\x32\x42\x95\xfb\x45\x76\xe9\xbe\x23\xe4\xe8\x06\x40\xf8\xc9\x25\x95\xab\xe7\x44\x74\x66\xc2\xec\x36\x63\x86\x51\x5d\x2f\xe8\x19\x26\x12\xc6\x41\xf4\x97\x3b\xa3\xad\xd7\x57\x3d\x69\xf7\xec\x93\x80\x95\xdb\xa0\x5d\xbe\x6e\x96\x36\x7a\xb6\xfd\x43\x1e\x10\xe6\x5e\x58\x76\x6e\xba\x1c\x3c\x13\x81\xbc\xb7\xd4\xbe\xfb\x5f\x45\x39\xce\x4d\xf1\x8e\x49\xef\x09\x58\x41\x19\x9b\x3f\xbf\x85\xd2\xf9\xc2\xa0\xda\x86\xaf\xa8\x33\xb5\x16\x4a\xd2\x70\x14\x06\xa3\x92\x5d\xd4\xbf\x9d\x8c\x4a\x1b\x8f\xc1\x91\x85\xe7\xc4\x7c\xbb\xdb\x18\xcf\x71\xea\x87\x66\x43\xb6\x20\x88\xf5\xf7\x6b\xa0\xde\x86\x86\xc1\x16\x3a\xe6\x14\xa4\xa4\x70\x03\x38\x97\xa6\x75\xe0\x15\x3d\x8d\x9a\xd3\x8c\x25\xb9\xe0\xec\x6b\x78\x28\x33\x5e\x25\x06\x9f\x16\xe3\x8d\x7c\x45\x60\x8d\x65\xa7\xe7\x7d\x08\x40\xf3\x2f\xcb\xdd\x26\x4b\xa1\xd4\xd4\x5c\x51\x86\x7e\x00\xc8\xf6\x10\xf7\xb1\x7e\x73\xa2\x2e\x44\x5b\x1b\x56\x3b\x78\x96\x35\x2f\x91\xa9\xb9\x45\x60\x72\x93\xcb\x19\x8c\x50\x0c\x77\x25\x5f\x4e\x99\xca\x3b\x68\x02\x7c\xc4\xe1\xda\xf6\x21\xd4\xb0\xd4\x33\xe3\x83\xde\x0a\x11\x71\x06\x20\x28\x75\x00\x2a\x0d\xf8\xd1\xd9\xa3\xba\xad\xd0\xc1\x3a\x76\xaf\x0f\x7d\x79\x1d\x58\x4c\xdc\x2d\x67\x29\xd7\x82\xb5\x4c\x1e\xff\x5a\xd4\x76\xad\xe7\xde\x89\x7c\xf4\xb0\x5e\x15\x24\xfa\xa4\x2e\xd5\x1d\xd8\x0f\xff\x89\x39\x38\xb9\x4a\xd0\xb1\xe8\x84\x12\x31\x47\x77\xfb\x2a\x6e\xeb\xbd\x03\x2e\xf0\xa9\x78\x7e\xcc\x1a\x1b\xb1\xcd\x69\xd5\x2e\x57\x83\xd3\xc5\x60\x73\x96\x22\xbf\x81\xbb\x3d\x1a\x00\xd6\xa1\xdb\x6d\x5c\x9b\x2a\x1a\x78\x3c\x7f\xc0\xd2\x70\x59\x81\x6b\x23\xe7\x18\x02\xbd\xda\x11\x18\x08\x1c\x25\xfe\xe9\x5b\xf1\x26\x8d\x5d\xf6\xf6\xb3\x70\x8b\x28\x82\x81\xac\xf9\xa8\xe6\x65\x3f\x1c\x03\x9a\x08\xe6\x6b\x2a\xea\xa0\x8e\xee\xba\x07\xd1\x94\xbe\x3b\x45\x3f\xb1\x36\x10\x60\x98\x8c\x4b\xe7\x5c\x62\x77\x01\x41\x55\xd9\x61\x64\xbe\x01\x48\xb6\xdd\x93\x8b\x62\x19\xd4\x7d\xb0\xc7\xe4\x64\x0b\x34\x77\x53\xe2\xf9\x18\xd1\x1f\x0d\x09\xf6\x4d\x7d\x65\x2c\x37\xf9\xa7\xc7\x52\x43\xe4\xd8\x4a\x7a\xa8\x8c\xfd\x20\x47\xc0\xb1\x9c\x28\x10\x8c\x5d\x0b\x7e\x2b\xfe\x3c\x6f\xe4\xfa\xcd\x75\xe1\xc0\x6e\xfa\x91\xf6\xc8\xde\x4b\x5d\x1a\x14\xd4\xaa\x9d\x56\x9e\x02\x02\x22\x9f\x57\xbf\x58\x7d\x7a\xe3\xb2\xee\xdb\x36\x62\xbb\x7c\x41\xd7\xc1\xfc\x1f\xeb\x86\x5b\xf0\x39\xa7\xa4\x43\x35\xf5\x8b\x2f\xd1\x55\xda\x79\x56\x91\xab\xa6\x91\x12\xac\x2c\x14\x7d\x7f\x3f\xde\x5e\x82\x1d\x1d\x93\x4f\x0f\x13\xd0\x8c\xb2\x39\xae\x33\x9c\xed\xe2\xd5\x27\xde\xb1\x38\x10\x9a\x45\xc7\x2a\x3b\x10\xfa\xca\x46\xc2\x8c\x10\x74\xc1\x4e\x6f\x4f\x44\xb6\xae\x79\x5c\xa6\x9a\x5e\x3c\x4e\xda\x2b\xa6\x0c\x81\xdd\x23\xc2\x0b\x4b\xa7\x80\xca\xfc\x3d\xb6\x7f\xf3\x78\xd1\x59\xd1\xcf\x80\x62\xb9\xbe\x3e\x09\xa2\xb6\x5e\x0d\xf4\x7e\x27\xd0\x14\x39\x96\x3f\x46\x35\xa6\x6b\x92\x6a\x09\x3f\x55\x3c\xbf\x2e\x74\x1b\xdc\x3e\xf8\xb1\x0e\xc6\x2d\xdc\x8f\x02\xad\xee\xc9\xaa\x25\xb3\x05\x49\xfa\x16\xf4\xb9\x16\x24\x17\xd9\x3a\x3e\x25\x6f\x63\xdb\x4e\xc6\x41\xbd\x42\x25\x80\x79\x06\xf9\x97\x84\xd1\xd0\x25\x3b\x0a\xd8\x55\x4d\xbc\x07\xa6\x28\x76\x55\xdd\x5c\x2a\x21\x60\xb2\xb7\xbe\xf9\xb9\x7a\xc0\xd7\x98\x59\xbd\x70\x41\xad\xfb\x92\x77\x6b\x61\x9d\xa0\x05\x14\xf5\x4e\x14\x80\xdc\xcd\x84\xa8\x39\x72\x8e\x77\x78\x2e\x4d\x77\xc6\x6f\x6b\x46\xd2\x04\x5d\x82\x19\xb4\x16\xb7\x88\x15\x08\x59\x40\x03\x99\x2a\xac\xa8\xa3\x5e\xac\xf3\x0e\x1b\x2f\x6d\x3c\x6a\x1d\x42\xd4\xe1\x26\xda\x32\xda\x2a\x4d\xda\xc8\xa1\x78\xd7\x1b\x52\x98\xf0\x82\xac\x77\xe2\xb4\x23\x27\xf3\xc0\x94\x91\x00\x30\xb9\x36\x79\x11\x65\xbf\x98\x4e\x8e\x6a\xd3\x8f\x7b\x4a\x9c\x2e\x7b\x32\x2e\x3e\x0c\xcd\x0e\xe4\xc9\x2b\x29\xc6\xe8\x17\xe7\x2a\xa1\xa6\x09\x48\xb8\xbd\xc6\x74\xb4\x4d\xc8\x27\xad\x55\xc4\xf2\x66\x68\xba\x00\x88\x7a\x85\x1d\x7c\xef\x6a\xbf\xd0\x5d\x3c\x85\x4b\xc8\x6e\x1e\x59\xee\x80\xb2\xc7\x4d\x6f\xc4\x75\x5e\x35\x1a\x10\x63\x18\x2a\x1f\xdd\x6e\xc2\xaf\x0c\xbd\x50\x92\x66\x57\xca\xfd\x0d\x86\x17\xa2\x1d\xde\x23\xf1\x72\xf5\x28\x71\x6e\xeb\x37\xff\x10\x7a\xe1\x8f\x7f\x75\x66\x4f\xe9\x39\xf3\x95\xa7\xb5\x93\x55\xab\xd7\xef\xab\x48\xc2\x98\x9b\xb2\xc6\x0f\x86\x84\x38\xb7\xab\x0b\x94\xda\xe4\x9b\xfa\x1d\x21\x60\x9a\x6b\xca\xbb\x39\x90\x9b\xa0\xb0\x65\xea\x73\x5a\x88\xa8\x38\x51\x3c\x46\x45\x84\xce\x2f\x10\x03\xd4\xfb\x08\x21\xba\xaa\x24\x40\xf7\xec\x84\x13\x75\x13\xb4\x80\x40\x4d\x86\xdd\x9b\x28\xdc\x28\x2f\xa6\xd6\xb8\x04\xa2\x29\x8c\x02\xb6\x0d\xa1\x9c\x99\x4e\xce\xe8\xc1\x01\x75\xf2\xb4\x47\xa9\x28\xa9\xa6\x2c\x8e\x94\x03\x80\x2c\xeb\xfc\xb5\xc4\x67\xcf\xe2\x47\xc8\xc6\xe8\x77\xe7\x32\x77\x90\x13\x7d\x83\x24\x99\x1f\x27\xd0\x09\x0a\x94\x4b\x31\x20\xb0\xca\x99\x8c\xa9\x10\xc4\xbd\xec\x7a\x54\x67\xd9\xd2\x21\xe8\xca\xa4\x5f\x17\x4a\x60\x89\xd0\xc9\x21\x9a\x1e\x35\x44\x56\xfb\x67\xa1\x30\xed\xf8\x95\x30\x5d\x54\x32\xee\x58\x6e\x48\x28\xf6\x82\xbc\x0b\xd0\xd5\x82\xcb\x2b\xe3\x17\x82\x6b\x65\x02\x38\x6e\x32\xb0\x8e\xc3\x7a\xa1\x1b\xc4\xb2\x21\x58\x32\x0a\xe1\xba\x8d\x5f\x5a\x28\xa6\xaf\x46\xda\x25\x10\x18\xc7\xe5\x21\xcf\xb4\x14\xc2\x5b\x72\x65\x18\x05\xb8\xcc\xa3\xb9\xd4\x79\x6a\x2d\x71\x8f\xbb\xf4\x06\x90\x5c\x8a\xcd\xcd\xa9\x74\x8b\xe7\x48\x91\x77\x72\x5d\xbb\x8c\xfe\x18\x5d\x1a\x86\x4a\x19\x54\x90\x3e\xff\xc4\x94\xaa\xa2\xfd\x24\x8f\x6f\xf4\x92\x7d\xec\x1a\xb0\x5a\xa1\xc2\xf2\xd0\xd2\x2a\x23\x6b\x24\x0f\x84\xc6\xc1\x17\xcf\xdf\x49\x79\x83\x20\x08\xa2\xb6\xc7\x59\xb3\xf1\x95\x0e\x03\xf9\xb1\x96\x8d\xb8\xeb\x17\x8a\x65\xee\x9c\x5b\x97\x30\x1c\xd6\x74\x5a\x52\x71\x4b\xc4\x54\x1f\xe8\x12\x91\x8a\xf3\x31\xb2\x5f\x1c\xfb\x4b\x2d\x42\xfd\xd5\xdf\x7c\x20\xf1\x33\xb6\xaa\xe7\x86\xe1\x42\xa7\x10\xeb\xba\x0e\x06\x00\x52\x68\xf6\x80\xd7\x89\x66\xbb\x45\x1e\xb4\xe5\x45\xb0\x17\xfd\x1c\xdf\x0f\x24\x16\x8b\x58\xa8\x90\xec\x7d\x4b\x6f\xa2\x38\xb7\x19\x59\xf7\x48\xda\x25\x50\xe1\x67\xb7\xec\xe4\x89\x56\x9e\x4d\x3f\xf5\xe7\x3e\x2d\x0e\xa8\x0c\x3b\x9d\x02\xb8\x08\x8b\x36\x06\xd1\x7e\xa3\xbe\x1b\xca\x0d\xa9\x16\x57\x1a\x00\x33\x96\xfc\x02\x9c\x30\x90\x89\xc4\x4d\x41\x01\x5a\xfe\xb1\x18\x8b\x97\xb9\x03\x90\x48\x98\x1a\x22\x0e\xa3\xf2\xc2\x9c\x52\x5f\xb8\xf5\xca\x42\x57\xbf\x5f\x64\x6e\x05\xfa\x08\x93\x01\xa7\x75\x59\xf9\x7e\xa6\x8e\x4c\x42\x9b\xe2\x3b\x20\xeb\x1e\xc5\x9a\x69\x46\xd6\xbb\x7f\xdb\x37\xbe\x0d\xa7\x09\x3a\x8b\x24\x62\xdd\xd6\x67\xff\xd7\x89\x60\xc4\xdb\x78\x64\xeb\x54\x74\xe6\x54\x3c\xb7\x85\x28\xa7\x99\xd8\x15\x93\x82\x2c\xf9\x59\x2e\x3f\xd0\x39\x54\xfe\xec\xf4\x4b\x61\xb0\x42\xdd\x00\xb7\x9c\x8f\x20\x0b\xf4\x7b\x48\x26\xcc\x48\x6b\x7a\x8b\x34\x0c\xce\x6e\x77\x5d\xe1\x0b\x33\xf0\x8c\x18\x96\x64\x77\x07\x97\x0b\x19\xeb\x37\x9c\xaa\x83\xbe\xda\x1e\xb2\x7b\x70\x0c\x11\x5a\x73\x5d\xb6\xb4\x96\x05\x9e\xb2\xaf\x3c\xe5\xe5\x4f\xc7\x29\xba\xbc\xe3\x99\x30\xd4\x63\x24\xd2\x70\xb8\xee\x18\xd1\x16\x43\x44\xf6\x6c\xfc\xca\x65\x0d\x38\x4e\x0f\x24\xe7\x9a\x70\x60\x67\x21\xf7\xd5\xe9\xef\xe4\x67\xdf\xf0\x42\xb8\x9b\x54\xef\x55\x75\x61\xdb\xe0\xdc\x20\xf0\x8a\x47\x1b\xad\xab\xee\x3c\x84\xaf\x8c\x6f\x20\x52\x99\xb9\xf3\xb5\x6b\x40\x68\x6d\x10\xa8\x04\x9b\x30\xb5\xc7\x18\xd1\x0c\xd9\x8a\xab\xc3\x45\x45\xd6\xeb\x6b\x0f\xbd\x44\x5f\xa8\x27\x9a\xc3\x5f\x93\x7a\x74\xc3\xf9\x83\xe2\xfa\x83\x92\xd2\xe5\xb5\x6e\xa0\xfd\xac\xc6\xb2\x8a\xcd\xfc\xdf\x5e\xe4\x69\xf9\x77\x10\x84\xb9\xcd\xc4\xdf\x64\x9d\xd3\x4a\x98\xc7\x96\x22\x1d\x05\x9a\xbf\xeb\xae\xe1\xec\x58\x2b\xdb\x49\xad\x3f\x70\x44\xf6\x4e\xe6\x7e\xd0\x60\x66\x7f\xd3\x9a\x1d\x48\x2d\x98\xef\xb4\x01\xa4\xd2\x4f\xc5\xef\xf8\x16\x73\x98\xd3\xf0\xbc\x50\x92\x03\x8a\x64\x47\x52\xd9\x17\x04\xe9\x00\x2e\x4d\x7d\xf5\x4e\xff\x04\x68\x35\x9c\xd5\x62\xbf\x73\xf9\x09\xac\xec\x0a\x8f\x6f\xa8\x5f\xa3\x83\x67\xdc\x96\xf3\x77\x87\xda\x41\xf0\x89\x97\x36\x37\x55\x91\x07\x42\xe2\xc0\xb7\x6b\x3c\x25\x26\x63\x30\x30\x51\x86\x11\xa5\x37\xb7\x0c\x72\xb9\x71\x98\x8e\xc3\xba\x05\x2b\x5c\x5e\xd3\xab\x04\x7d\xab\xd7\x92\xc8\xee\xd6\xf4\x34\xb2\x2b\x0c\xd0\xa0\x50\x13\x47\x4e\x8a\x9a\xf3\xe2\x5e\xd8\x0e\x0f\x84\xfc\x6b\xca\x42\xdb\x6d\x0b\x96\x1d\xc8\x5b\xea\xd3\xcf\x2d\x22\x1f\x6e\x3c\x02\x71\x39\x7b\xd5\x5a\xec\xd4\x5a\x1c\x00\xab\x0d\xa6\x41\x3a\x08\x83\x21\x09\xe0\x22\x0a\xa1\x42\x0a\xe0\x2a\xba\x75\x96\xf9\xff\x56\x02\x95\xf7\x77\x41\x94\x55\xac\xb2\x25\x77\x78\xad\x12\xe7\x2d\x2d\xc2\x5a\x98\x60\x29\x79\x0c\xc8\x1f\x67\xcb\x62\xbf\x16\x98\xbf\x65\x64\xdf\x48\x14\x35\xab\x23\xf2\x5e\xb9\x8d\x70\xfd\x0d\x49\xf8\x17\x93\x26\xdb\xd8\x88\x1b\x23\xc7\x92\xde\x06\x56\xb3\x82\x10\x8b\xcd\xa6\xbe\xa1\x67\x02\x97\xf3\xe5\xf4\x89\x57\x7e\xf1\x73\xec\xd0\x8f\x25\x47\x58\x7e\xdf\xf0\xc0\x54\x7f\xd5\xac\x4f\x00\xaa\x20\xa0\xb8\xec\x3c\xf9\xa4\x50\xaf\xe5\x3e\xb2\xc4\x62\x39\x92\x15\x73\xaf\xf8\xe2\xb9\x32\x3b\x20\x6c\xce\x42\x3c\x69\x72\xdc\x04\x55\x1a\x9f\x0b\x35\xf2\x34\x73\x8c\x0c\x75\x4d\x7a\x88\xed\x13\x1f\x91\x6a\x01\x95\xf1\xbb\x6b\x61\xdf\x7e\xd2\xcf\xf1\x83\xbf\x4b\x74\xfa\x04\x05\x3f\xca\xa5\x43\x7c\xda\x08\xa0\x4f\xfe\xfe\x23\x3a\x73\x22\x35\x03\x0a\xda\x10\x5d\x49\x73\x5d\xbe\x7d\xf5\xad\xbf\x94\x4b\xf7\xfb\x28\xe5\x75\x64\x73\xb8\x9a\xb2\xe0\x44\xed\x75\xa0\x81\xcb\x5d\x66\x95\x65\x02\x38\x8f\x3a\xd7\x0f\x0a\x7e\xe6\xbd\x84\x89\xe3\x1d\xb0\xfe\x22\x87\x21\x16\x98\x90\xed\x8d\x66\x85\x04\xff\xe3\x2e\x22\x1c\x96\x98\xe3\x6c\xc0\x19\xf5\xb1\xa0\xcf\xdf\x77\xfe\xad\x29\x6f\xa1\x08\xde\x0d\xb0\xbf\x1c\xdd\x3d\x14\x48\x9c\xd7\xf6\x62\x23\xab\xba\x93\x52\x8b\x6b\x61\x7e\x57\x1b\xe0\xc7\x6e\x4a\xd9\x52\x59\x3c\xc3\x54\x0e\xdb\x5f\xb5\xc4\xee\x1f\x10\x3f\x69\x1d\x4b\x0f\x55\xfd\x96\x74\x5c\xc2\x60\xb0\xdf\x6c\x58\xc2\x20\xc8\x00\x58\xab\x5b\x80\xea\x0a\x8b\xe9\x05\xdb\xfe\xbd\x44\x51\x1d\x1d\xbd\x7e\x86\xf8\x95\x8a\xc3\xc9\x09\xba\x23\x57\x50\xe6\xcb\x5b\x01\x98\x82\xd8\xef\xf8\x6f\x0f\x7f\x3c\x2a\x3b\x92\x1a\x9e\xfe\x18\x9e\xf0\xe9\x9f\x0e\x1b\x45\x14\x40\x94\xc5\xf4\x6c\x32\x2c\x69\xc8\x58\x11\xa5\xf3\x36\x6a\x7c\x39\xea\x04\xfe\x52\xc7\xe3\xb2\xc6\xa3\xea\x4e\x09\x64\x28\x49\x1b\x0e\x73\x86\xe7\xbe\x5b\x0a\xd1\x01\x80\x3f\x54\x34\x21\x0e\xe6\x1b\xe8\xb6\x30\x52\x36\x8d\x9f\xf3\xaf\x3e\x7c\xdf\x89\xbc\xd0\x26\x7f\x55\x37\xa3\xbf\x16\x87\x45\xdc\xa8\x76\xf3\x9b\xd1\x46\xef\x58\xa8\x3f\x01\x10\xb3\x95\xce\x81\x60\xa3\x32\x69\x01\xb8\x60\xeb\x21\x7e\x49\xbf\x5f\x03\x35\xd5\xd4\x21\x28\xad\x29\x55\x47\x3a\xc2\x07\x58\x66\x86\xf8\x36\x6c\xef\xd7\xbe\xd0\xb8\x54\xba\xc3\xab\xe8\xc5\x87\xc6\xd9\xfe\x31\x88\x40\x9f\xfd\x1e\xf2\x23\x68\xdd\x99\x1d\x56\xec\x55\xf9\xbb\x69\xc7\x55\xda\xf7\x8d\x13\x0f\x97\x40\x81\x27\xaa\x09\x3f\xbd\x1e\x3f\x3d\x0a\xe0\x01\x30\xa5\x40\x5c\x52\xf1\x65\x47\xd2\x31\x39\xb3\x10\x5e\xd2\x70\x58\x92\x70\x68\xe2\x58\x4f\xf2\x78\x75\x87\xc5\x16\xd7\xa2\xec\x62\xc6\x45\x06\x81\xc1\x0a\xb3\xe6\xc7\x87\xb6\x3c\xe8\x74\xd6\xdb\x73\xb9\x4a\xb6\x62\x0a\xb0\xaa\x8d\x0e\x56\x43\xb2\x09\x34\x25\x0a\xc9\xc1\x3e\x47\x4e\xf0\x01\x17\x1d\x80\xbf\x1d\x5f\xe3\xb6\x16\xbb\xf2\xa5\xcd\xfe\xe6\x32\x33\xbf\x9a\xaa\x2a\x59\x70\x2f\x56\xcf\xcc\x57\x70\x1d\x3d\xe1\x8d\xa1\xc2\x5a\xdb\x6d\x0b\x62\xbc\xb0\xc0\x4d\x91\x2b\xfa\x6d\x60\xaa\xc8\x1e\x1b\x6b\xce\x8e\x38\x2a\x12\xbb\xd1\x3b\x81\xf5\x0f\xe0\xe8\x74\x67\x59\x9b\xb2\x56\x38\xa5\xa7\x4b\xc1\xc7\x78\xdc\xd7\x3e\xb2\xfd\x1f\xeb\xe4\x57\x24\xf3\x01\xcd\xf6\xe4\xaf\xdb\x79\x99\xe9\xdc\x82\x7f\xa4\xb2\x91\x5b\x28\xc9\x8c\x11\xf0\x6f\xa7\xc2\x68\x8b\x25\x2f\x2f\xdc\xd6\x91\xf6\x7c\x17\x04\xc9\x36\x53\xdf\x7d\x0e\x07\x27\xde\x43\x2d\x38\xa1\xcc\x18\xdf\xc0\xdf\x3f\xfd\x33\x20\xd7\xff\x18\x7c\xaf\x32\xa4\x38\xbb\xc5\x71\xdb\x29\x42\xc8\x51\x6c\x6f\x28\x8c\x96\xb4\x1c\x66\xd5\xd5\x2c\x57\x65\x01\x89\xbb\x41\x74\x7d\x12\xfd\xf5\x07\xc5\x7b\xc6\x96\xb9\x3d\xc9\x86\xa8\x31\x32\x31\x50\x40\xc7\x4d\x06\x25\x8e\x01\x19\x50\x6a\x9e\xbc\x12\x0d\x82\x2e\x48\x1a\xe8\x3b\x8a\x24\x07\xfc\x8c\xb9\xa1\x09\xd1\x6c\xb6\xf0\x3c\xd1\xdc\x73\x84\xb2\x4f\xa6\x35\xd1\x28\xca\xcb\x7f\x33\x23\x3a\xab\xc1\xf6\x07\x95\xb5\x55\x1b\x53\xf8\x5f\x0b\xe2\xee\x9b\x1d\xe6\x44\x42\xa2\x02\x5a\xec\xe3\xf9\xf0\x11\x97\x86\x54\xdb\x4f\x2b\x72\x32\xc7\x62\x5d\xb3\x2e\x73\x3a\x3e\xf9\x35\xaa\xe3\x32\xa7\x85\xa9\x67\x7f\x7c\x2a\x2c\xd4\x54\xad\x28\xe9\x07\x8a\xbb\x6f\xe9\x93\x16\x27\x92\x79\x17\x59\x8c\xe8\x41\x5a\x5c\x23\x2d\x9c\x7e\x20\x14\x0b\x17\x2b\x9c\x62\x65\xe8\xd7\x5d\x4c\x3f\xc3\x65\x87\xba\x62\xbb\xad\x54\x5a\x56\x37\x7d\x34\xc8\x2e\xaf\x05\x53\x2b\xf2\x73\xb0\xdb\x91\xd3\x65\x4d\x47\x3c\x67\xf0\x57\x5f\xcb\x71\x59\xd3\xa6\x0f\x7e\x67\xb6\x92\x79\x38\x2e\x4b\x92\x86\xfb\xc6\x3c\xd8\x6f\x5e\xf5\x56\x71\x25\x50\x6a\xc2\xa4\x4d\xeb\x71\x0b\x0d\x23\x22\xc8\x37\x1e\xe1\xc3\x46\x52\x59\xfc\xcd\x86\xb2\x56\x17\x0d\xaa\xb8\xbb\x33\x86\x4b\x97\x27\xcf\xfe\x31\x33\x3d\x06\x97\x12\x0d\x49\x2a\x36\xbb\xc7\x10\x3b\xfe\x1c\xa7\xf6\x84\x4a\x23\x71\xb2\xcc\xf4\xd1\x65\x4d\x90\xce\x33\xe8\xf4\x25\xb8\x17\xfc\x5c\x21\xbb\x5e\xe1\xdd\x37\xf5\x5f\xaf\xe7\xe9\x22\x0c\xce\x8d\x67\xc3\x5a\x86\x21\x09\xe9\x2b\x43\xa6\xec\x80\xc8\x83\x7b\x64\x9c\x08\xc7\xbb\xab\x77\x9c\x48\xc7\x65\x6d\x7a\xe7\x97\xba\xad\x04\xd1\x55\x14\xc0\x45\xa0\xb9\xfd\xc2\xc0\x96\xd6\x9b\x22\xc0\xc8\xb2\x8b\x51\x80\x85\x4b\x1f\xc5\xad\xc7\x08\xa5\xb2\x20\xf1\xca\xaf\xd9\x06\x84\x0e\x07\xbc\xe4\xdb\x26\x8e\x7e\xdf\x4e\x94\x04\xfb\xd4\xda\x4b\x9a\x93\x57\x00\x60\xf9\x56\x9f\x3f\xb6\x2f\x86\x0d\x71\xda\x15\x29\x55\x46\xa6\x2e\x49\x4a\x1b\x87\x22\xab\xf4\x75\x79\x80\x24\xcd\x03\x18\x48\xb1\xd2\xc9\xce\x93\x85\x3f\x94\xc1\x27\x3b\x5d\x60\x84\x2e\x46\x11\x01\x9b\xd3\x4a\x8c\x0b\x63\xff\xf3\x90\xb9\x75\x71\x71\xcb\x31\xaa\xbe\xa5\xf0\xe1\x0b\xdd\x1d\x61\x7b\x74\x83\x89\x3c\x88\xa2\x60\x9f\x62\x94\xb4\xef\xe4\x2d\x64\x9f\x6f\x63\x21\xb1\x48\x71\x7e\x1b\x5a\x48\xff\xce\xc9\xf9\xe5\xcf\xc2\x46\x23\x56\x0e\x8a\x3b\x0c\x6e\x44\xb8\x5e\xff\xe7\x0d\x5d\xa9\xa3\xc4\xbe\xd4\x9e\x52\xa1\xc0\x8a\xce\x6c\x48\x60\x23\xa1\x1a\x84\x8b\x85\x62\x0b\xd3\xc6\x87\x42\xf5\x5c\x91\x5f\x79\x3f\x04\x07\x0a\x3b\xce\xb1\x31\x4f\x11\x1d\x7d\x03\x2c\x09\x94\x01\x5b\xe8\xff\x10\x73\x56\xb9\xa6\x46\x14\xce\x4b\xc6\xcc\x18\x85\x7b\x04\x5a\xb6\x11\x99\x57\xec\x00\x3a\x0e\x75\xe4\x4b\x28\xcc\xff\x3d\x95\xd6\xf7\x3b\x25\xb5\x20\x45\x8b\x43\xec\xe5\x80\x23\x83\x3f\xa8\xe1\x38\xd9\x34\xf8\x00\xa2\x4f\xb2\x42\x69\x26\xe6\x38\xd3\x40\x3a\x01\xa9\x48\x64\x0b\x8e\x2d\x20\xa8\x84\x30\x12\x10\x3c\x1e\xfc\x40\xc8\xb2\x11\x91\x4d\xa9\x74\x99\x95\x35\xee\xee\xe5\xd9\xf0\x0f\x4d\x25\x5d\x3f\x1f\x9a\xc4\x76\x30\xf8\xd6\x0b\x86\x55\x85\x7c\xd0\x57\x6b\xc4\xaf\x86\xf1\x8d\x7e\xc8\x8a\x0b\x7d\x53\xba\x94\x05\xa0\x57\xc0\x0f\xa7\x48\xad\x52\x2a\x85\x47\x87\xba\x70\xeb\x71\x69\xe3\x58\x27\xdc\xdf\x1d\x32\xb1\xc8\xb6\x35\x8f\x2b\xd3\x6b\x70\x4d\x78\x6c\xe9\x6e\x8d\x3f\x81\x2a\xcd\x17\x57\x7e\x7f\xbe\xef\x4f\x31\x6b\x59\x56\xb9\x7a\xed\x9c\x19\xe4\x10\x41\xb7\x9d\xdf\x6d\xc1\x91\x47\x2c\xdc\xe8\xd1\x0f\x19\x6b\xa0\xb9\xf1\x7a\x20\x44\x01\x5a\x6c\xc9\x8e\xe2\x14\x50\x18\x04\x57\x21\x58\x06\x13\xa4\x60\xe5\xb5\xbe\xbc\x3a\x25\x55\xaa\x51\xa3\xcd\xdb\x0d\xe8\xc6\x24\x7b\x0f\x54\x7a\xc3\xbb\x8f\x84\x5f\x89\xab\x05\x1e\x04\x5a\x0f\x78\xdf\x7e\x12\x05\x4f\x6e\x89\x9c\xba\x3d\x22\xff\x98\x42\x38\xaf\x6a\x8b\x15\x96\xd8\x66\x26\xd5\x61\xea\x90\x45\x0f\xe8\x6d\x84\x23\x4a\xa0\xd5\x41\x33\x6f\x24\x33\xf8\x88\xb5\xb9\x89\x8e\x9f\x70\xc5\xd9\xb8\xd8\xfc\x37\x5f\xdd\x83\x91\x6c\x5a\x63\x99\x35\x3c\x81\x67\xc3\x1d\x0f\x09\xf6\x1e\x2a\x53\xf2\x14\x08\x68\xb4\x42\xeb\x58\x49\xc6\xa7\x04\xe4\x75\xea\xbb\xaf\xad\xdc\xaa\xb4\x83\x01\x89\x3e\x4e\x2f\x1d\x5e\x11\xcb\xc8\x6c\x79\xc9\x9e\x35\xa1\x04\xab\x36\x63\x2a\x77\xc6\x43\x8c\xd2\x9c\x0a\xcd\xcc\x6e\x75\x5e\xdb\xc2\xec\x7c\xed\x17\x03\x51\xc5\x11\x6c\xbf\xa8\xf4\x1d\xe8\x32\xb5\x84\xe9\xb8\xcc\x1a\x4e\x01\x1d\x0f\xdb\x8d\xda\x6b\x62\x48\xdc\x8c\x31\x6e\x36\x4c\x57\x52\xcd\x09\x1f\x5b\x27\x58\xad\xba\xfc\x83\xd5\xce\x2e\xc3\xa1\xfa\xee\x9b\x87\x53\x94\xe2\x5c\xe3\xc4\xd3\xe8\xbf\xfd\x79\x3f\xce\x7e\x42\x05\x07\xa2\xa6\x83\x39\x41\x96\x6b\x31\xf6\xcc\x14\xe3\x4a\xc3\x6a\x12\xf0\xc4\x81\x54\x24\x83\x34\xbd\x37\x73\xf2\x9e\x0a\x38\x43\x1e\xeb\x55\xb1\x91\xdd\xdf\xdf\x3a\x98\x5f\x06\x60\xc5\xfd\xc3\x68\x04\x69\xe4\x24\x31\x7c\x06\x8c\xfb\x74\xbd\x57\x30\xb7\x9b\xdf\x2a\xd3\xf8\x52\x04\x75\x86\x90\x85\xe6\x3d\xe0\x8d\xc9\x9b\x91\x9f\xd1\x8b\xcf\xab\xcc\x55\x29\xa3\x6e\x30\x00\x7a\x13\x11\x74\x5a\x95\xf2\xfe\x2f\xe2\xe9\x8a\xee\xd9\xb9\x90\xbc\x87\x81\xfa\x1f\x6b\x87\x52\xaf\x9a\x2c\x22\x11\x85\x35\xc5\x72\x91\x72\xfd\x71\xf7\x0a\x1f\xdb\x11\xc9\x03\xed\x35\x13\x26\xef\xc7\x79\xdd\xea\xf6\xad\xf3\x4e\x7e\x4d\xca\xcf\xfd\xb5\x73\x4f\xea\x5f\xe7\x27\xbc\xfd\x2c\x86\xed\x4b\xec\x34\x20\x64\x73\x53\x49\x79\x7a\x37\x96\x6f\xaa\xdb\x79\xbd\x88\x70\xdf\x58\x34\x48\x87\x6d\x33\x51\xf6\xec\x34\xda\xff\x7c\x87\x0e\x68\x66\x87\xe9\x07\x5d\x44\xc1\x53\xfd\xbb\xe7\xbf\xb5\xda\x70\x85\xdd\xba\x53\x3a\x15\x4a\x1a\x0c\xb5\x7c\x26\x41\xc4\x37\x75\xd6\x3b\x3d\x54\xf0\x38\xef\x8b\x7c\x30\x1e\xaa\xda\xca\xe7\xc3\xef\xf5\x9b\x8f\x23\x59\x9e\x96\x00\xa8\xf7\x61\xf7\xfa\xaf\xee\xac\xe8\xbb\xd1\x86\x17\x04\xef\x0d\x7f\x43\x96\xd1\x23\x62\x94\x1f\xb6\x57\x18\xcf\x9e\x2c\x43\x72\x49\x89\x31\xe4\x8e\x7c\xf4\x4e\x29\x4c\xd7\xdc\xa0\x06\xb2\x6f\x1d\xa1\xbe\xe8\xf6\x4b\x12\x3a\x63\x37\xc8\xf3\x3d\xfa\xf7\xa0\xb8\xe1\xdd\x72\x1b\x0b\xf2\x75\x7b\x61\x35\x69\xc1\x98\x48\xd7\xaf\xe5\x3a\x89\xe0\xf4\x83\xe6\xa2\x17\x4c\x35\x11\x61\x73\xc8\x19\x6d\x7d\xab\x13\x30\x70\xdd\x22\x62\xf4\x45\xf0\xf3\xc1\x62\x61\xd2\x6b\x0b\x14\xc1\xf1\xa3\x1f\x9a\xeb\x7c\x70\x59\xd8\x5e\x9a\xf0\x91\x85\xfe\xd1\xfa\xbd\xca\x36\xe1\x2e\x54\xd6\xd4\xc6\xa3\xc9\xd5\xb1\xed\x70\x4b\x1c\x0e\xcb\x19\x79\xf8\xbe\xb6\x31\x21\xf3\x8c\xfd\xfb\x34\xa8\xf1\xd4\x97\xda\x2d\xd2\xb8\x2e\xa2\xc4\x1f\xac\xba\x7f\x85\xa9\x6b\x49\x1a\xd4\x80\x93\xe6\x50\xff\x2b\x18\x99\x2a\x62\x26\xb6\xfe\x97\xf7\x7e\x11\x8f\xcb\x4f\x10\xfc\xbc\x27\x6d\x85\x97\x7b\x4a\xc3\x6f\xf4\xaa\x9b\xe2\x53\xeb\xa9\xa1\x58\x6f\xef\xa0\xd4\x76\x5d\xe6\xcd\xb1\xc7\xc4\x0f\x2c\x86\x71\x1d\xfd\xca\x5e\xca\x6c\x6e\x7d\x0e\x2d\x6f\x81\xe8\xfe\x4b\x88\x66\x73\x75\xad\x7b\xde\x7e\x51\x63\x8e\x33\xd8\xcd\xf8\x68\xaa\x92\x6f\x98\x15\xd4\xb1\x5b\x89\x1c\x4d\xf3\xad\x47\xb4\xf6\x1b\xc9\xe2\x28\x4a\x34\x68\xa9\x6b\x98\xdb\xd2\x98\x09\xae\x8e\xad\xc9\x5d\x62\x09\x60\x5c\xc0\xeb\x0f\xc6\xb8\x95\xaa\x0d\x79\x83\x8d\x6c\xce\x8a\x42\xe8\xd8\x76\x9a\xc1\xd9\xea\xc1\xf7\x9c\xfd\xe8\x72\x05\x98\xd7\x7a\x39\x99\x92\x4e\xf0\x7d\xfc\x6b\x66\x9e\x50\xe9\xe6\x35\xfc\x92\x5a\x20\x03\x4a\x1f\xc1\x83\xbf\x75\x69\xca\x81\xb1\x5d\x53\x1f\x2e\xf5\xda\x0e\x75\xa4\x9b\x43\x91\xd1\x12\xb9\xf7\x84\xe6\xe6\xd4\xa7\xc6\x5f\xbc\xd8\x44\x64\xd7\x0b\xd9\x66\x39\x49\xdb\xbf\xb2\x20\xcf\x6f\xbf\xc4\xac\x40\xfa\x23\xda\x88\xa7\xb8\x08\x12\xac\x19\xf1\xde\xf1\x6d\x68\x00\x27\xda\xde\xd4\x9c\x48\x16\xa6\x9e\x18\xcf\xc8\xff\xea\xdd\x4a\x1a\xd6\xb3\xcc\x3e\x4d\x55\x7d\x45\x14\x50\x34\x6b\x3a\x28\xb2\x43\x41\x4e\x46\x92\xf4\x8a\x0e\xe2\x3a\x2f\x9e\x9f\x58\xe8\x98\xed\xa2\x06\x63\xd5\xf7\xb2\x2f\x21\xf4\xbc\x5b\xe3\x30\x74\x7b\x50\xc7\xea\xe8\x8a\x4f\xae\x88\x3d\xac\x89\x0f\x9a\xef\x99\x76\x59\xfc\x43\x01\x91\xb6\x60\x7d\xbc\x84\x97\x80\x2b\x65\xf5\xcd\x42\xfa\x8e\x11\xc6\x80\x4f\xd3\x72\x32\xe7\x0a\x37\x20\xfd\x51\x60\x71\x4e\x5f\xf2\xb8\x67\xc4\x3f\x10\x6e\x49\xd2\xab\x58\x17\x42\x56\xe2\x49\x24\xb9\xcd\xcd\xe1\x5f\xfe\x84\xc4\xd2\x0c\x46\xa5\x9e\x8f\x37\xf3\xe1\x59\x0a\x64\x40\xa6\xe5\x24\xba\x70\xea\x67\x4a\xd1\x8b\xf1\x2c\xc1\xf9\x0c\xf9\xe0\x7b\x85\x57\x3c\xa6\x5c\xa0\x2e\xdb\x0d\xde\x1f\x76\x92\x78\x73\xab\xf7\xba\xb0\x4c\xb6\x0c\xfc\xa9\xcb\xb4\x2d\x0a\x5f\xe3\x6d\xdf\x6d\x04\x70\x6d\x34\x6a\x3c\xb5\x91\x8b\xdb\xce\xf9\x3c\xa0\x97\x48\x8a\x54\xd1\x36\x40\x64\xc7\x0b\x82\xed\x77\xb4\x21\x10\xd3\x81\x90\x9e\x32\xf1\xf9\xa9\xa1\x24\x0d\x23\x78\x35\xa2\x28\xda\x21\xde\x02\x7d\x0b\x71\xaa\xed\x9c\x8a\x2c\xde\xb9\x02\x69\x7e\xbb\xea\xe8\x13\x59\xac\x8f\xff\xd6\xfe\x7b\x4a\x27\x83\xc4\x5f\xe8\xbf\x54\x9a\xe6\x6b\xa6\xd5\xd2\xd6\x6d\x7a\xf7\x5a\x2f\x28\xd6\x3b\x7a\xe9\x70\xa4\x10\xbf\x37\xf4\x6a\xc8\x57\xfa\xce\xf0\x7c\x58\xf1\xfa\xc4\x72\xd9\xf3\x78\x81\x22\x3d\xe7\x55\x68\x34\x17\x3a\xc3\xa2\xde\x10\x22\x56\xcc\x05\x31\xf3\xde\x5a\x9f\x49\x96\xa2\xe0\x9c\x3a\x1c\xa0\x51\xac\x7a\xf0\x5b\xa5\xcb\x60\xcc\xc6\xbf\x9c\x10\x49\x17\x3c\x2f\x8c\x42\x92\xe6\xbf\x6f\xbf\xb9\xf4\x5a\x5a\x1c\x95\x04\xdb\x6d\x7e\xbf\xfb\x84\x89\x1f\xcf\x62\xb9\x29\x65\x24\x95\x22\xf8\x99\xf5\xcb\x9b\x1f\x6b\x76\xf0\xc5\x85\x6e\x0f\x4e\x11\xd9\x0c\xbd\x25\x44\x18\xe0\x19\xc5\x80\xd8\xb8\xfe\xa4\x10\x74\x79\x42\x59\x89\xb6\xbb\xdc\xb8\x2a\xa5\x40\xce\x9c\x33\x74\xce\x6c\x03\xf5\x61\x76\x1d\x3d\x6c\x57\x35\x2f\x02\xba\xfe\x18\x3a\x7c\x22\xdf\xa9\xf6\xbc\xbd\x39\x51\x80\xd5\xc5\xbd\x22\xf1\x85\xb9\xac\x98\x3a\x33\xd1\x2f\x94\x0d\x26\xbf\x18\xa6\xb7\x25\x2f\xd9\x61\xe2\xdc\x96\xf2\x44\xe7\xc0\xe7\x75\x4c\x55\x9a\x14\xa8\xc4\x1b\xe2\xf9\x78\x40\x8d\x30\x18\x32\xf3\xdb\xb1\x38\xb2\x5b\xce\x67\xf3\x4e\x7e\xf5\x4e\x26\xac\xb2\xaa\x16\x0a\x28\x2a\x6b\xfa\x80\xe9\xf2\x07\x92\x7e\xb1\x4e\x7d\xaf\x2d\xca\x53\xb2\x78\xfa\x44\x71\xfd\x81\x30\x94\x68\xea\x70\x1c\x3b\xf3\xaf\xd8\x11\xe2\x48\xd1\xec\x50\xc4\xea\xb2\x53\x2a\xa3\x0a\xd2\xde\xde\x4a\x21\x79\x83\x6f\xb5\xaa\xe5\x25\x42\xb4\x6f\xb1\xf3\x63\xaf\x0d\xd9\x32\xad\x34\xdc\xe4\x6a\xa6\x77\xc7\x75\x25\xf6\x2b\xa2\x34\x65\x52\xec\xc9\xe8\x36\xd1\x7a\x59\x66\x18\xc8\x5a\x77\x5a\x1b\xbe\xa3\x3d\xf6\x8b\x97\x62\x38\x87\xb5\x40\xa6\x36\xaf\x68\xeb\xa5\x42\x6f\x04\x81\x72\x63\x98\x0e\x48\xca\x72\x8b\x49\x81\xb6\xbd\xea\x7f\xec\x9d\xfb\xda\x0f\x61\xe0\x3d\xaa\x73\xdb\x61\x12\x1b\x32\xf8\x19\x37\xba\x05\x22\xcc\x29\x23\x81\x45\x7d\x77\xcd\x32\x8a\xa4\xc7\xcd\x62\xc0\xcf\x68\x4a\x90\xe2\xef\xef\x11\x37\xb7\xee\x9e\x3e\x7b\x57\xb9\x35\xd1\xc7\xed\xc1\xde\x00\xac\xbb\xfc\x90\x39\x7c\x37\x60\xb8\xed\x8e\x26\x05\x93\xa8\x06\x3b\x04\x46\x04\x69\x10\x2f\x11\x90\xfe\xbc\x1f\xac\xed\x7b\xa5\x00\xca\xcb\xb6\x91\x36\x10\xfb\xa6\x3e\x82\x44\x34\x66\x35\xe1\x00\x68\x20\xa4\x76\x20\x04\x16\xa1\x48\x07\x81\x05\x20\xae\x1e\x6a\x72\xf0\xe0\x3a\x94\x1a\xa5\x40\x09\xe6\xe7\x2c\x66\x76\xef\x1a\xfe\x1b\x03\x95\x29\xc5\xb9\xd1\xb8\x46\x17\xc3\x24\x0d\x8c\x46\x1e\xfb\x75\x2b\xbe\xdd\xba\x6e\x29\xbc\xe2\x47\x48\x9e\x08\x1d\xd1\x71\x18\x8c\xc9\x80\x9f\xd9\x84\x83\x20\x55\x5a\x12\xc8\xd1\x20\x80\x37\x55\xaf\x80\x20\x51\xe8\x53\xe9\xd6\xd8\x4a\x9c\x5b\x48\x26\x7d\x1a\xfe\x9a\x39\x07\xe3\xbd\x92\x6d\x06\x7a\xb1\xe7\x30\xe1\x52\xa0\xe5\x30\x9c\x1b\x82\xca\x9f\xbf\x9c\xaa\x3d\x9e\xda\x21\xa6\xcb\x26\xc2\x32\xaf\x66\x0b\x31\x5e\x22\xf3\x72\xeb\x2f\xd9\x8b\x41\x8b\xea\xce\xec\xfa\xaf\xd6\xc2\xfd\x7a\xb6\xa6\xec\xb2\x62\x2c\x5e\xe6\x8d\xee\x2d\xe9\xd2\x92\xa0\xb7\xb0\x10\xfe\x84\x95\xeb\x34\x86\x24\xf4\x1f\x28\xe7\x8b\x67\xcf\x08\xa0\x50\x66\x83\xb9\x57\x56\x90\x7a\xe1\x5f\x5d\xef\xd8\xd2\xf7\xd8\x08\x84\x06\xb4\x46\x55\xda\xf9\xd4\xb8\x7b\xd7\xac\xc7\x0f\x7f\x4d\x02\xa8\xd7\x06\xad\x19\x77\x53\x86\x39\xfd\xeb\x97\xd0\xf8\xe1\x4f\x22\x01\x90\x1d\x6e\x3e\x31\x20\x21\x1e\x84\x13\xcd\x76\xfc\x17\x7d\x4f\x0f\xe4\xb2\x65\x4a\x22\xc9\xa7\x07\xa1\x52\x92\x46\x01\x81\x86\x54\xcd\x77\x20\x1a\x1f\x67\xa0\xef\xf5\xbf\x4b\x1a\x1f\xb8\xdf\x83\x29\x80\x8d\xb8\xf1\x15\x8f\xe4\xe5\x4f\x13\x08\xdc\xf5\x61\xa3\x5c\x08\xd9\xd8\x29\xb3\x6b\x6e\xf2\xcb\x23\x41\xef\x64\x7a\x8a\x25\x3f\xb2\x41\xa9\x59\x5c\x77\x10\x39\xa5\x5f\xd4\xf7\xe0\x05\xa8\xe1\x88\x2f\x39\x24\x7e\xc6\x2c\x61\xc0\x98\xb5\x4e\x24\xd6\x11\xc0\xeb\xc1\x00\x75\xf2\x7c\xab\x54\x23\x9a\x77\x20\xa7\xc7\x52\x96\x15\x7f\xb2\x5c\xbb\x12\xfc\xc7\x79\xff\x1d\xec\xd9\x64\xce\xbc\x47\x28\x88\x47\x16\xfe\xe4\xe1\xcf\xb4\x23\xd0\x42\xa3\x85\x52\xac\x32\x1a\x70\xb3\x98\x92\x33\x1b\xf1\x3f\x89\x0a\x8c\xaf\xb2\xef\xdc\x82\xce\x16\xca\x4b\x4b\x7a\xc1\xa4\x09\x82\x24\x6c\x16\x8d\x2b\xae\xcc\x5f\x32\xdb\x27\x65\x41\x3b\x06\x59\xb5\xd3\xf6\xf7\x97\xb3\x23\x0e\x8b\x88\x63\x24\x37\xf6\xad\x30\x47\x4a\x64\x7b\xd5\x1e\xc4\x97\xe7\x80\x89\x25\x27\xa2\x01\xd2\x5d\xf6\x4d\x20\xff\xd8\xb8\x16\x97\x21\x49\xea\x6a\xc0\x2b\x32\x4d\xbd\x85\x65\x6c\xf1\x3e\x33\x49\xfa\x60\x6a\x54\xd4\x1c\xd5\x94\x40\xa5\xb5\x53\x9f\x41\xc9\x44\x51\xc2\x50\xdf\x71\x20\x73\x94\x54\x9e\x86\x15\x04\x1b\xf1\x29\x55\x57\x7a\xb1\x99\x63\xb1\x99\xb3\x0a\x24\x4a\x0e\xb4\xbe\x7d\x52\xde\xfc\x4f\xa3\x69\x7a\xba\xd0\x31\xec\x17\x22\x9a\x70\xa0\xf0\xe2\x35\x37\xc9\x0e\xa8\x37\xf5\xa6\xd2\xcb\x99\x45\x0f\xbf\xd3\x73\x59\x73\xbe\x3a\x46\x11\x64\x01\x74\xe0\x3c\x1f\x32\xfe\x9e\x17\x0d\xcb\x73\x30\xf9\x7f\xc3\xe5\xea\x5a\x8d\x29\xd4\x5f\xa6\x95\x72\xc4\x54\x5c\xd7\x73\x53\x97\xfc\x9a\xeb\xf7\x79\xe8\xfd\x4d\xdc\x40\x1f\x5f\x28\x11\x9b\x1d\x1e\xd5\xb7\x5f\x6c\x2f\x92\xb4\x17\x3b\x9f\x8b\xa9\x75\x2a\xf8\x95\x32\x2b\x3b\x72\x69\x4a\x21\x9c\x21\x24\x4e\x00\xf6\x62\xeb\x40\x23\x43\x72\x62\x88\xd0\x48\xbe\x9f\xe4\x40\x69\x58\xb3\xe1\xb1\xa6\xe3\xc6\x5b\xc5\xfd\x0c\x0d\x23\xd8\x29\x6f\xc3\x85\xe5\xc1\x85\xf1\xe5\x12\x8f\x01\x8b\xf5\xef\xd5\xe6\xa1\x79\xd0\x61\xb9\x7a\x27\x7f\x3e\x6c\xd8\xe8\x9a\x8e\x3d\x19\xbe\x40\x55\xee\x48\x15\xa1\x34\xd9\xc1\xc4\x6b\x6e\x0e\x93\x3f\x23\x75\x4d\xd4\x87\x53\x60\x8a\x34\x73\xac\x3f\x5e\x8b\xab\xae\xb0\x33\x97\x6c\x66\x92\x10\x0d\xe2\x65\xf4\x79\x10\x84\x77\x46\x57\xd3\x87\x83\x4f\xca\x89\xef\x7f\xda\xc5\x47\x7d\x6b\xf4\x27\x07\xe0\xc5\x15\xac\xd6\x97\xa3\x48\x51\x17\xbc\x0d\x19\xab\xf5\x61\xcd\x4d\x55\x3a\xff\xc9\x9f\x5e\x5a\x12\x2d\x08\xfe\x29\x54\x02\xcf\xa2\x74\xf3\x30\xb7\x77\xa2\x19\x52\x52\x5f\xd8\x9c\x50\xf2\x0a\xe6\xbb\xdb\x9c\x80\xe5\xe6\x4d\x6c\x84\x37\xbc\x8a\x52\x69\x8f\xcf\x72\x02\x63\x3b\xd2\x3b\xaf\xea\x95\x1d\x08\x7d\xa2\x20\x79\x80\x01\x02\x1f\x64\x79\xfa\xf0\x4b\x57\xca\x06\x13\x40\xa5\x0c\x50\x7f\xb8\x41\x92\x6b\x4d\xae\x0e\xd5\x0b\xe1\x42\xf3\xe8\xdf\x79\xd4\x10\x26\x19\xc9\x99\x0d\x78\xf8\x03\x26\x49\xeb\xf1\x32\x61\x9d\xc5\x26\xf0\x3d\x77\x80\xd8\x3f\x83\x29\x08\x82\x8c\x85\x81\x6b\xc2\x78\x19\x94\xb9\xee\xe7\x40\x61\xcb\x91\xac\x10\x88\x6e\xff\x01\x84\xda\xad\xf7\x81\x12\x3b\x29\x21\x1c\xf3\x49\xa0\xf0\x63\xf7\xe1\x26\x8a\xcc\x80\x0e\xd9\xf5\x7f\x4c\x2f\xcc\xbe\xc0\xe2\xbf\x2f\x79\x81\xdc\xba\x81\xcc\x19\x7e\x7e\xc0\xde\x78\xd9\x38\xa2\x10\xcb\x75\xcb\x39\xcd\x4e\x0f\x07\x59\x2c\x44\x19\x9d\x57\xb4\xed\x88\x71\xe2\x7b\x66\x7c\xc9\xe3\x5f\x00\x71\x9c\xd7\x46\xae\x84\xd9\xf4\x80\x34\x83\x12\x80\x5a\xa5\xa5\x76\x2a\x4f\xaa\xcd\x9c\xf6\xca\x6a\xc5\x8d\x76\x83\xdd\x18\x29\x14\xc0\xb0\x38\xcc\x7b\x3e\x65\xfb\x8a\xbc\x01\xb2\xf9\x51\x26\x7d\xc5\x4a\x4a\xdf\x36\x52\xf2\xc1\x0a\xff\xcb\xdb\xac\x84\xb8\xd6\x63\x96\x4a\x46\x03\xc0\x10\xc3\xb4\xee\xf1\x76\x83\x6b\xea\x4b\xa1\xbf\xbf\x71\x94\x55\x5d\x3b\x3c\x49\x31\xb5\x52\xb3\x29\x5d\x9e\xc9\xa2\xbd\x23\xdd\x86\x62\x1d\x6f\x26\x6f\x63\xb9\xe1\x07\x81\xff\x34\xec\x5f\x8c\xb9\xf2\xb4\x90\xe5\xac\x8b\x7c\x40\x3c\x69\x51\x49\x2a\x5e\x70\x9d\x83\x02\x95\x79\x44\x25\xba\xe0\xe6\x02\x5d\x8f\x4c\xc2\x20\x88\x92\x03\xd5\xf8\x2f\x91\xa5\xc0\xd5\x11\x75\x78\x65\x64\xc6\x3c\xf5\xbb\x88\x05\x1f\x4d\x3e\xcd\xa0\x10\x14\x28\x42\xd6\xfc\xae\xea\x09\x0e\x29\x84\xe6\xb5\xd4\x5a\x6c\xfb\x1b\x7f\xaa\x35\x79\xae\xcf\x9e\x7b\x3f\xa5\xa1\x2b\x87\x15\x23\x6c\x53\x64\x9e\x8d\x9b\xde\xc8\x80\xc5\x1f\xf3\x6a\xd3\xb7\x50\x13\x43\xc6\xb1\xc8\x36\x9c\xfb\x97\x5c\xe6\x45\x90\x9b\xd5\x68\xf6\x9f\x68\xff\xd1\xf7\xc4\x84\xc2\x3d\x2d\x68\x5a\xa1\x75\x84\x92\x8c\x42\x23\x2c\xa3\xb0\xae\xc4\xdf\x77\x1f\x6a\xae\x16\x66\x06\x02\xe6\xaf\xbe\xe9\x2c\xeb\xf4\x7b\xd0\x95\x56\x87\xc5\xd6\xdd\x72\xb2\xe9\xb1\xc8\x9e\xa5\xc8\x9e\x10\x9b\x42\x5f\x79\x20\x39\x5f\xb2\xa3\x1b\x0c\x90\xe0\xf9\x2d\x3e\xf6\x63\x64\x25\xd4\xbc\xde\xc1\x00\xa6\xb1\xbc\x67\xf8\x42\x61\x50\xfe\x14\x9a\x0f\x67\x2a\x46\x17\x42\xac\xe3\x03\xf7\x1b\xcb\xbd\x0b\x5f\xff\xec\xd7\xee\x77\xe7\xf4\x43\x0a\x88\x04\xda\xf2\xa0\x59\x4d\x7f\xf6\xa8\x84\x01\x9b\x5d\xb3\x28\x08\xbd\x27\x06\x03\x9e\x44\x5a\xaf\xe8\x78\x14\x9d\xf8\x36\xb4\x30\x37\xc3\x87\x21\xef\xa1\xa6\x3d\x08\xed\xae\x3e\xb2\xfb\xda\x8f\x48\xcc\x89\x48\xeb\x59\x60\xe1\x10\x7a\x74\x2f\xe5\xfa\x92\x7f\xca\x6c\xc4\xce\x6b\xf7\x1b\x05\x01\x3d\x94\x90\x15\x45\x76\xc4\x19\x9c\x08\x20\x85\x44\x2b\x2b\x2a\x53\x2a\x00\x50\xb6\x95\x73\xe2\x8e\x1e\x5f\x4c\x57\x62\xe4\xcd\xe4\x98\xda\xfe\x63\x34\xff\xa9\xfe\x74\xc4\x6f\xe5\x65\x49\xc3\x13\x2b\xa5\x13\xab\xa4\x01\xef\xe9\x3c\xac\x3a\x7f\x51\x3d\xa5\xba\x13\xfa\xfc\x52\xb2\x78\xe1\x15\x13\xd9\x3a\x7e\xf0\x14\x61\x6b\x46\xf1\x2b\x0f\x3d\x79\x20\x92\xd6\x3e\xc1\xc4\xe2\xf0\xe6\x82\xdf\xf6\xf6\x5f\x9d\x21\x6b\xa3\xb2\x16\x00\x00\x55\x4b\xe5\x64\xd9\xfb\x6d\x0c\xb6\x32\x27\xa0\x7a\x4a\x99\xe3\x6c\x2c\xb7\x1c\xb8\xcc\xea\x6b\x97\x79\x88\x83\xdf\x7d\x53\xdb\x27\x3f\xdf\x99\x39\x92\x31\x19\x6b\x71\xb9\x20\x5a\x7f\xa0\xbd\x56\xa4\x3f\x34\x1b\x79\xdb\xe6\x51\xdb\x24\xda\x3f\x8f\xd8\xc5\x7e\xa5\xec\x98\xae\x74\x0f\xc8\x27\x7d\x1c\xf3\x7a\x12\x5b\x30\xa0\x4b\x8c\xc3\x0a\x8a\xda\x6d\x2b\x79\xea\xa1\x22\xf8\x42\x77\xef\x89\xa5\xfb\xd4\xac\x32\x0c\x53\x33\xc2\x20\xd8\x81\x3d\xa1\x42\x81\xa9\xdc\xbc\xba\xe3\xe7\x05\x41\x10\xa4\x70\x79\xf5\x1e\xac\x31\xf6\x01\xe4\xa8\xf2\xae\xeb\xba\xea\xc2\xbc\xb0\x32\x28\x31\xf0\xf3\xac\xaa\xb9\xbd\x08\x73\x43\xbf\xe0\xbf\xd8\x1d\x6e\xcb\xe4\x01\x73\x08\x31\xf9\x88\x7f\xc7\x36\x2a\x6b\x7a\x6e\x35\x26\x73\xa7\x51\xfb\x12\x7b\x57\x5e\xb2\x43\xff\xce\xac\x90\x47\x8f\xf9\x1d\xc6\xf8\xd9\x0c\x39\x6f\x0f\x05\x38\x72\xd7\x25\x5f\x3d\xbb\xc2\xc1\x33\x19\xcf\x92\x4b\xe0\x8a\x8f\xee\x09\x83\xc2\xf9\x03\x22\x68\x0f\x86\x6a\x41\xa4\xc1\xef\x54\xb7\x8c\x6c\xb7\xc2\xae\x71\xdf\xf8\x25\x34\x48\x5f\x2f\xbe\x16\xe6\xe4\x86\x0f\x0e\x11\xa6\xc4\x53\x40\x65\xbe\x74\xe7\x2d\x6b\x32\x42\x3f\x85\x8b\x23\x6e\x51\xed\x9e\x17\xb0\x15\xcd\xef\x49\xb1\x05\x44\xe3\xe5\x2f\xc5\xd2\x50\xbe\x54\xfd\x2f\xff\xb2\x75\x2c\xd6\xc2\x18\xc2\x6f\xbf\x94\x3a\x63\xbb\x03\x40\x43\xbd\xb8\x19\x71\x6e\x4a\x58\x7a\x1a\x0d\x8c\x16\x68\xc1\x1c\x99\x0b\x1d\x4a\xe5\x5f\x04\xec\x07\x3f\x5b\xd0\x84\x40\x71\xa7\x97\x8d\xfd\xc4\xec\x07\xf2\xef\xfe\x2f\x1b\x8b\x0d\xb8\xf0\x7c\x96\xf5\x7a\x2a\xaa\xa7\xae\x81\xa6\x9b\x20\x68\xaf\x1f\x70\xd0\xac\x9d\x99\xe3\x0c\xe7\xb2\x60\x9a\x32\x63\xdb\x61\x84\xd9\x79\x54\xb7\x9f\x81\x98\x2a\xc4\x09\x1b\x8b\x0b\xe1\xd8\x84\x9d\x49\xd2\x38\xbf\x85\x48\x47\x67\x89\xa9\x43\x73\x21\x66\x70\x48\xf0\xbc\x93\xa6\x0d\x7f\xae\xf4\x96\xae\xb1\xc4\x76\xc3\xab\x72\x41\x52\xa6\x52\x69\x6c\xf6\x99\x71\xea\x67\xf6\x38\xb6\x33\x21\x33\x70\x50\xef\xf0\xce\xb2\x35\xcd\x07\x4b\x67\xdc\x14\xc7\xfc\xe3\x7b\x91\xed\x1d\xd5\x36\x91\x43\x6c\x1a\xe6\x0d\x83\x7e\x91\x39\x93\xb1\x83\xda\x95\x41\x8b\x04\xea\x99\x61\x69\x99\x83\x72\x7e\x2c\xf5\xe1\x29\xf7\x64\x74\x04\x47\x0c\x86\xa5\x70\x50\x3e\x7b\xb0\x4b\x3e\xbd\x1e\xf7\x03\xeb\xf8\xd7\xaf\xc4\xfe\xd9\x29\xaf\x17\x0f\x5d\x0a\x0e\x04\x5b\x6e\xa2\xc3\x8e\x1f\xe8\x2e\xb1\xc5\x2a\x57\x0f\xfa\xe4\x51\xab\x5b\xc2\x59\x38\x5b\xd3\xb3\xe0\x75\xb5\x3c\x9a\x35\x75\xd8\x2f\xd0\x2c\xe1\x7c\x07\xe1\x5a\x45\xad\xbc\x2d\x43\x4b\x16\xde\x0d\x02\x3f\xd0\x1e\x92\xbe\x09\x4b\xf4\x95\xdf\x9f\xdf\xd9\x06\x84\x66\xdb\x2e\x9e\x91\xc2\x2a\xa2\x00\x36\xb4\x6c\x59\xd5\x76\xa6\x4d\xd2\x13\x61\xfe\x06\xb6\x60\x4b\x7c\x96\xcf\x57\x57\xf6\xe2\x3d\xf4\x7f\x32\x6c\x78\xfe\xb5\xcb\x6e\x5e\xe9\x4c\x48\x71\x5a\x7b\xeb\xc6\xc7\x8a\x6f\x3a\xab\x6a\x2b\x5f\x9f\x9f\x96\xd3\x09\x5b\xe7\xbe\xfd\x76\x34\xa3\x94\x15\xa8\x23\x2c\x26\xed\xfa\x6f\x3c\x92\x9b\x7a\x44\x19\x1d\x92\x83\x05\x48\x04\x32\x8c\xf6\x3b\x55\xde\xc6\xfe\xd8\xc3\x13\x13\x4a\xff\x84\xc7\x0f\x58\xbb\xfe\x29\x9a\xdb\xaf\xeb\xaa\x76\x4c\xaa\xda\xc2\xdf\x9a\x69\xe3\xb1\xa6\x4b\x23\x1c\xce\x7a\x95\x77\x40\xb6\x3c\xfa\xcc\x0e\x2c\xf7\x19\xb4\x4a\x5e\xd9\xc7\x73\x19\xc7\xf4\x31\xbf\x49\x0e\xe7\x9a\x8f\xb7\x83\x73\xff\x6f\x7f\x00\x4c\x0e\xe7\x5a\x1e\xe2\xe4\xb1\x03\x7f\x80\x1b\x4c\x8a\x62\xd2\x33\x37\xa5\x02\xc1\xcf\x0f\x2c\x3b\x37\x1c\x25\xa4\x00\x57\x11\x48\x26\x9a\x61\x6a\xd0\x78\x47\x57\x59\x9b\xe3\xb6\x64\x83\x29\xd2\xfc\x6a\xa2\x63\x7d\xc1\x76\xf8\xc4\x0e\xe0\xa2\x3a\xa7\x2f\x81\x4f\x34\x3b\x34\x17\x7e\x32\x57\x69\xe7\x55\x5d\xf5\x46\x0e\x3d\xcd\x40\xf6\x38\x75\xe7\xcd\xfa\xd7\x3c\xe0\x01\xbb\x9e\x95\xa9\xca\xe2\xea\x6d\xc5\x4c\x77\x46\x79\x2c\x69\xb3\x91\x30\xb7\x96\x7f\xf8\xa5\x5a\x9e\xba\xe5\x4f\x94\x2a\x3d\xc3\x57\x94\x58\x39\xb7\x51\x69\x63\x53\xf2\xe6\x5a\xc5\x39\x28\x5b\x0c\x91\x6e\x61\x20\xe3\xf8\x50\x0d\x38\x15\x3e\x32\x65\xd1\x95\xe2\xdc\xc4\x80\xfb\x14\x81\x59\x7f\xdd\x83\xb7\xa0\x57\xff\x44\x1e\x26\xfe\xd5\xf0\x56\xb6\x76\xfd\x51\xf9\x09\xb4\xcd\xda\xfe\xef\xbf\xef\xa7\x23\x01\x9b\x84\x7f\x03\x98\xb1\xd3\x83\x40\xd1\x53\xbe\x19\x37\xe7\x45\xb1\x3e\x99\x62\x26\x6e\x9d\x0b\xf7\x49\xe9\xdc\xf4\x4d\xf4\x9c\x8a\x3d\xae\x13\xaf\x26\x17\x84\xec\x05\x1a\xdc\x82\x99\xb5\x2e\xa8\xe1\x58\xdf\x29\x51\x82\x72\xe2\x33\xac\xc5\xc5\x12\x1a\xa5\x27\xfc\x55\x7c\x99\xfe\x12\x06\xba\x4f\x44\x9b\xe1\x4e\xa5\xf7\x26\x3e\xb7\xbc\x9b\x81\x33\xf5\xdb\x1f\x0a\xa8\x84\x66\xb1\xbf\x3a\xef\x6a\x38\xe7\x40\x0d\xa2\x2d\x2f\x47\x7f\xb7\xae\x83\xda\x4d\xeb\xa3\x47\x5d\xca\x4b\xcb\x12\xb5\xaa\xeb\xc2\x47\x7a\xc5\xaf\x07\x4e\x9a\x8d\x93\xc6\x90\x60\x4a\xd2\x6e\x8a\x5c\x23\x40\x82\x0d\x77\x31\x12\x25\x6f\xae\x0b\x98\xcd\x0a\xbf\x9e\xff\x7c\xf8\x28\x21\xb2\x40\x3b\xbc\x94\x0f\xfe\xd2\xfe\xf8\x68\x0b\xd6\x4f\xeb\x7e\xe1\x03\x80\x3a\x79\x98\x9f\x8c\xdc\x83\x3d\xfe\x13\x4c\x04\x8e\x61\x8a\x2c\xa5\x01\xfe\xe1\xec\xf7\xd0\x70\xb1\x64\x2b\xb1\x6f\xcc\x3b\x04\xc3\x90\x70\xde\xc9\x31\x82\xd0\x33\x56\xd3\x7f\xbd\xc8\xb3\x84\xb9\xed\x96\xb7\x91\x77\x92\x2d\xec\xf0\x03\xdd\xb1\x90\xbc\x03\x61\x06\x97\xcc\xaf\xfe\x6d\x9a\x01\x3f\xe5\x57\xaa\xbf\x05\x03\xc0\xf6\x46\xc2\x2f\x5e\x04\x2e\x37\xa4\x85\x19\x92\x30\x78\x7c\x9b\x1f\x08\x92\x04\xaa\xa3\x69\x38\x46\xae\xf7\x7a\x35\xd8\xe5\x00\xe6\x3b\xd9\x81\x4c\x5f\x8e\xdf\x4c\x31\xf4\xdc\x07\xc2\x1b\xe3\x6e\x31\x39\x48\xc1\x2f\x59\xbc\xa6\xeb\xca\x2c\x94\x5f\xcf\xec\x47\x53\x58\x81\x08\xe4\x53\x9c\xc8\x1d\x3e\x50\x4b\x62\x35\x6d\x41\x44\x07\x05\x5b\x82\xd4\xb2\x1a\x6d\xf0\xfb\xb3\xa9\xcc\x6e\x25\xf5\xdd\xd7\x33\xc2\xcc\xfc\x33\x46\xda\xb9\x81\xfc\x63\x46\x73\x5e\x95\xf6\xcf\x2b\xdb\xba\x84\x9d\x68\xfe\xc7\x94\x0b\xf9\x7f\x2c\x9d\xb5\xd6\xb4\xcc\x12\x85\x2f\x88\x00\xb7\x10\x67\x70\xb7\x0c\x77\x77\xae\xfe\xac\xf7\xfb\xcf\x24\x93\x0c\x2c\x56\x4f\x57\xed\x67\x37\xd5\xd5\xfe\x20\x3b\xd4\x6b\xbd\x6f\xcc\xd5\x25\x3f\xd2\xce\x35\x33\x70\x64\x43\xc7\x2f\x35\x18\x0f\x9b\xc2\x66\x76\xb9\x66\x17\x40\x4e\x12\x64\x72\x2d\xe4\x00\x36\x52\xae\x5e\xd3\x71\x49\x09\xba\x94\x38\xe1\x0f\x34\xdf\x2f\x6f\x9c\x19\xc9\xac\xc9\xd6\xcf\x11\x6f\xe3\x50\x74\x7c\x85\xdd\x43\xd5\xdd\xb7\x10\x5e\x38\x6f\x48\xa9\xdc\xc2\x38\xb6\x21\x95\x3a\x84\xe3\x07\xb1\x5f\x84\x74\x8e\x96\xc0\xda\xbc\xc6\x0b\xe6\x38\x99\xa9\x32\x10\x8c\x8a\x8d\x4c\x93\x38\xff\xd7\x7d\x38\x45\xb2\xdb\xc0\xf3\x6f\xf2\xb4\xcc\x94\xa8\x0a\x0e\x5a\x1d\x86\x98\x73\x66\x37\x59\x71\x22\x6c\xfa\x2e\x15\x7e\x01\x46\xe7\xc3\x62\x6e\xea\xbc\xf1\x6f\xbd\x6a\xdf\x98\x87\x9e\x59\xb6\xab\x22\xb8\x31\x21\x6d\xc4\xcb\xa4\xbc\x26\x47\xe9\xb7\x8b\xc1\x40\xd1\x9c\x3e\xcc\x58\x81\xa9\x33\xe1\x38\x17\x63\xff\x57\xb7\xec\x90\x84\x21\x9a\x1d\x18\x75\x5a\x20\xb3\x36\xfe\x36\xbc\x4f\x79\xc9\xe4\x71\x5e\x30\x49\xc3\x08\x95\xab\x62\x1c\x1c\xea\x32\x48\xa6\xb0\x20\x05\x13\x73\xdc\xbe\x0c\xcc\xfc\xef\x37\xfb\x13\xb3\xc6\x71\x90\xa6\xc4\xb3\x0f\xf8\x52\x1d\x7f\xbb\xc2\xd1\xc4\xa1\x4c\xa1\x51\xc3\xdc\x5e\x72\x20\x6d\xbd\xa8\xa9\xf4\xb4\xca\xdd\xb5\xd5\x83\x85\x34\x17\x48\xab\x3f\x28\x36\x55\x5a\x3a\xd3\x35\x30\x23\x22\xc2\x30\x2b\x6d\x3c\xca\xde\x82\x38\x62\x25\xd6\x59\x68\x1c\x21\xbc\xbd\xba\xff\x6f\x5f\xf5\x20\x13\xc9\x83\xa8\x4f\xac\xe7\xed\x5b\xfc\x88\xa0\x9f\x3d\xaf\x42\xf1\xbd\x52\xa5\x3a\x16\x59\x14\xc5\xe9\xd8\x0b\xf8\x1a\xd2\xfb\xb2\x1d\xf5\xae\xc5\x0e\xd5\x16\x7c\xd8\x88\x02\xd9\x63\xef\x9f\x1e\x4b\x75\xcb\xdd\x96\x0c\x02\x95\x49\xee\xa6\x6d\x11\x67\x8e\x54\x26\x00\xde\xb3\x6f\x3c\x09\x45\x97\xd7\x64\xe3\x66\x3b\xaf\x84\xde\x3a\x89\x7f\x86\xfc\x79\x83\x3f\x83\x01\x31\x2b\x3e\x26\x11\x9b\x59\x37\x31\xc6\xe2\xc5\xdd\xa7\x88\xbd\xa2\x86\xaf\x43\x1d\x56\xe8\x88\x6c\x3e\x6c\x7c\xb6\x76\xe4\x59\x74\x1c\xf8\x8f\x97\x8d\x26\xa1\x7a\xac\xa6\x62\xab\x1e\x18\xdf\x2d\x3d\x99\x2c\xd1\xc3\x74\x6e\x73\xe6\xf8\x60\xfd\x7e\x8e\x99\x6d\x4a\x75\xc5\xbb\xfe\xe9\x9e\x2f\xf3\xb3\xce\xdd\xa5\xf8\x9a\xb7\xff\xcd\x1a\x77\x5f\x17\xaa\x66\x88\x80\x3b\x9a\xf1\x14\xcc\x91\x9f\x91\x36\x04\x41\x10\x4a\xb1\x9b\x54\x39\x6a\x7c\x72\xf7\x10\x0d\x8f\x7b\x3c\x4c\x53\xd5\xae\xf9\xb3\xed\x30\x89\xe4\xf4\x2e\xf1\x62\xab\xc0\x34\xa6\xcc\xef\xe6\x0a\x4c\x03\x69\xc3\x99\x8f\x51\x75\xab\x3c\x5e\x18\x4c\x38\x4c\x68\x62\xff\x16\xfa\x25\x5b\x24\xbd\x51\xc3\xd4\xdb\xad\x5f\xa9\x5b\x00\x5a\xe3\xc7\x4c\x37\x45\x81\xe6\xd7\x67\x9e\xa2\xbf\x6e\xe2\x5f\x01\x6c\xd8\x0c\x1b\x50\xa3\x52\x44\x21\xbc\xaf\x92\x99\xa2\xd9\x21\x0a\x3c\x99\xb3\x38\xbd\xdf\x89\x3c\x03\xb2\xef\x17\xdc\xbf\x16\x1c\xac\xd1\x7e\x03\xf4\x58\x18\x56\x0b\xfb\x68\xed\xf4\xb0\x97\x34\xdb\x9c\x56\xd5\x62\xc4\x54\x22\x6c\xe9\x08\x08\xbf\x19\x62\xbf\xc3\x3b\xcf\xd6\x34\x1b\x50\x85\x44\x7a\x0f\x15\x88\x4e\xc0\xdc\x6e\xab\x06\xd0\x4b\x9e\x5a\xcd\x24\x2b\xb7\xae\xeb\x66\x3e\xba\xd3\x8e\xc2\x18\xf9\x6f\x61\xb5\xbd\xdd\xd2\x3f\xf1\x1d\x95\x31\xa1\xcb\x2e\x11\xe0\xf8\x23\x2c\xc6\x79\xa3\x0f\xe3\x80\xca\xc2\x81\x6a\x62\xee\x75\x5d\xd3\xdd\xca\x1f\xc0\xf4\x63\xa1\xe6\x58\x07\x3f\xb3\x09\x88\x51\x28\xb3\xda\x7d\x50\xbc\x1e\xbf\x8d\xea\xa2\x57\x38\x4b\x15\xa8\x87\x0a\xcf\x9f\x2c\x8d\xcc\x30\x8e\xfb\xd3\xfe\x37\xa5\xcb\x37\x8e\x71\x83\xdd\x0c\x2e\xf3\x44\x77\xf8\x0b\x0f\x5b\x18\x16\xce\xeb\x33\x63\xfa\x9a\x7f\xc7\x85\xa8\x52\x33\x27\x63\x72\x66\x33\x29\xfc\xec\xa5\xd2\x93\x91\x89\x6c\x50\xfe\xe3\xaf\x39\x52\x4b\xab\x57\x90\x17\x3a\x7e\x19\xfc\x4a\x24\x32\x45\x1b\x3a\xc0\xbc\x7d\x9b\x86\xe8\x50\x39\x5f\x17\xc8\x5d\x91\x9d\x83\x51\x73\x14\x10\xfd\xba\xc6\x12\x42\x81\xd3\x63\xc9\x9d\x29\xb0\x5c\xbb\xb8\xe1\x70\xfe\x36\xee\xdc\x5a\xf9\x61\x18\x04\x21\x49\xba\xbc\x22\xfe\x8d\xdc\xdd\xc4\xe7\x94\x6d\x77\x4c\x6f\x9c\x1f\x08\x5c\x57\xb5\xeb\xed\xab\x24\xd8\xed\x03\xfa\xfd\x34\x31\xd3\x72\x4c\xab\xba\xf3\xdd\xfb\x62\x7e\x3b\xc2\xdb\x72\x82\xc3\x88\x9d\x74\x99\x66\x59\xee\x27\x11\xc3\x0a\x74\xcf\xf3\x8f\x3b\x4d\x57\x5f\xd7\x1f\xa7\xd6\x5c\xe3\xb0\xae\x6d\xf1\xb2\x5c\x57\x27\x9b\x93\x30\x8e\x16\x4e\xb0\x95\xdb\x42\x82\x1b\x65\xe1\xdf\x64\x99\x41\x57\x80\x41\x62\x14\x68\x00\x07\x19\xb4\xaa\xed\x32\x0b\x35\xcb\xac\x7b\x0e\x14\x95\xea\x4f\x00\x72\x0f\x89\xeb\x6b\xe2\x7a\xf7\x02\x94\x15\x3c\xcf\xfd\xf8\x1c\xfd\x21\x46\x57\xd7\x91\xf4\xec\xe9\xab\x74\x2d\x3d\x45\xa7\xa7\x55\x2c\x74\x73\xe3\x9b\x66\x5e\x0d\x43\x7d\x2f\x9c\x4a\x86\x5b\xd1\xda\x85\xdf\xc4\xb0\xb7\x59\x94\x56\x27\xdb\xc3\x25\x36\x09\x04\xd6\x5a\x08\xdc\xbc\x11\xd9\x04\xe8\xc9\x99\x22\x77\xca\xe7\xef\x6c\x47\xb0\x1c\xf7\x83\x39\xf8\xc8\x02\x1d\xc4\x1b\xf9\x58\xcf\x62\x4a\x60\xc3\x38\x7a\x02\x54\x3c\x66\x07\xaa\x9b\x90\xec\x53\x45\xf6\x0d\x1b\xce\x4b\xee\x8e\x37\x30\xd6\xa9\xaa\x2a\x53\xce\x34\xb2\x53\xc7\x75\xad\xb1\x4a\xb7\xb5\x83\xb1\xd9\x5f\x98\x19\xc4\x97\x17\xc4\xe2\xaa\xbe\xcb\xb9\x5b\x40\xe0\xaa\xd7\xe3\x12\xcf\x4d\x3c\x06\x0a\x94\xe5\x41\x8a\xb8\xb7\x29\x50\xea\x39\xbf\x97\x8b\x7d\xe7\xc7\x3c\x9c\x3b\x6e\x46\x43\x1c\xc4\x2d\x1a\xbb\x72\x13\x06\x43\x92\x08\xc7\x0e\x83\x20\x58\xd7\x3b\xf3\x2b\x5f\x2a\x12\x3c\xe1\x31\x5f\xf7\x4b\xd5\x76\x9e\xcf\xdf\xae\xc7\x90\x78\xfc\x38\xbd\x1f\xd3\xb1\x99\x11\x15\xa7\x4b\xc8\x09\x90\xf9\x35\xba\x12\x51\xc8\xba\x80\x4d\xf7\xcd\x21\x6f\xcf\xe8\xb3\x4b\x7a\xe0\xa6\x3e\xd7\x94\x3b\x84\x51\x4f\xff\xf6\xc5\xa7\xac\x4c\x74\x0f\xf3\x90\x81\x2c\x94\x06\xf7\x3a\x04\x4a\x4b\x68\x95\x36\x91\xd6\xb3\xa0\xb0\xab\x56\xf6\x3a\x24\x4a\xb4\xb5\x51\xbb\xd6\x18\xd3\x4b\x66\xac\x91\x2f\xfc\x77\x2c\xdb\x4b\x55\x16\x9a\x16\x76\xdd\x0d\xd5\x06\x11\xd0\x7e\x1f\xf0\x20\x39\x6d\xb2\xfd\x56\xb3\x9e\x0d\x3e\x43\x92\x61\x1f\xfd\xd2\x92\x39\x68\x51\x7d\x69\x9b\xb1\xe9\xa5\x2e\x95\x07\x6e\xc0\xd6\x0a\x8b\xbb\x77\x2d\x47\xd9\xf7\x61\x4b\xd6\x36\x3a\xd2\xc4\x22\xee\x87\x12\x8f\xc5\xda\x4e\x7d\xd9\xa0\x0d\x5f\xc6\xf4\xfd\x39\xee\xba\x0e\x5b\xfd\xcd\x07\x4e\xca\x96\xcc\x9c\x57\xb3\x1b\xbb\xe4\xd2\xbb\x38\x4d\xc7\x61\x45\xc9\x03\x52\xc4\xab\x6e\x74\xdc\x5a\x10\xf2\xf7\xc1\x86\xd0\x39\x20\x27\xdd\xa8\x7b\x90\xe2\x0a\x67\x87\x29\x65\xca\xe0\x4e\xfe\xaf\x94\x9d\x40\x2c\xc6\xb5\xec\x17\xd5\x85\xdf\xe6\x3a\x18\x9b\xf9\x99\x11\xb6\x07\x00\xcd\x52\x29\x58\x4d\x28\x88\x4e\xb0\xd0\xef\xeb\xb9\xfa\x56\x76\xac\x8e\x0a\x80\x5d\xc3\xe0\x27\x07\x11\x34\x68\x91\x3f\x51\x6c\xfc\x50\xee\x06\x4a\x52\x11\x53\xe9\x89\x82\xd7\x3b\xe3\x73\xa3\x22\xe9\x58\x5c\x36\x59\x70\x65\xf7\x8a\x84\x02\xc2\x22\x3e\x6b\xfa\x28\x79\xea\x10\x59\xad\x1d\xe2\xb7\xed\x71\x97\x83\xd3\x79\x63\x69\xab\x36\xee\x0c\x55\x96\x3c\x7a\x68\x69\xd3\x63\x29\xab\x59\x9d\x7a\x19\xba\x09\x9d\x43\x6d\xea\x7b\xf0\xee\xaa\xfc\xf1\x0b\x0c\xc9\xfd\x18\x22\x3a\x1f\xa1\x18\xbd\xd7\x31\xd5\xfd\x1e\xdd\x15\x56\x07\x3a\xf6\x42\xc9\x70\x01\xbf\xf5\x40\x74\xa0\x5c\xfe\x6c\x86\x69\xf5\x4e\xff\x7e\xaf\xf1\xcb\x78\x9a\xd6\x7d\x5b\x93\xce\x71\x10\x8c\x8c\x85\x15\x71\x48\xca\x48\x78\xe8\x7b\x50\x85\x50\x0b\xce\x74\x4c\x46\x47\xab\x2c\xea\xcc\x39\x9d\x96\x5d\xc8\x5c\x26\xed\xcd\x7b\xc5\x14\x7a\x6c\xb6\xcf\xea\x03\xc0\x4b\xaf\xb9\x87\x4d\x1b\x1e\xad\x5a\xac\x8d\x47\xe5\xb4\xa3\xa6\x71\xf6\xa9\x6b\xa8\xa8\xf5\xdd\xd9\x49\xb9\xec\xde\x35\xee\x44\xab\x53\xe0\xde\x3b\x44\x8b\x1e\x5f\x6d\x93\x4a\x29\x67\x83\x09\xba\x5c\x4e\xff\x31\x5e\xe6\x90\xd0\x68\x1b\x27\x6f\xa9\x6d\xed\xd3\x2f\xcd\x44\xbd\xfa\x27\xce\xe9\x10\x25\x27\x4a\xc9\x73\x15\x91\x35\x07\x15\xb2\x43\x1f\xe3\x97\xb7\x61\x59\x7d\xb3\x1e\x8e\x79\xba\xab\x99\x01\x8b\xd6\xf4\xfc\x76\x5f\x10\xd9\x3b\xac\xf4\x54\xb3\x59\x86\x63\x06\xec\x14\xf9\xdf\x19\x08\x56\x84\xa8\x49\x0e\xfb\xfb\x96\x22\xca\xd0\xa4\xd5\x80\x01\x23\xf6\xfb\x0a\xab\xbe\xf7\x3a\x08\x83\x20\x38\x50\x8d\x61\x37\x9f\x1c\x8f\x91\x2c\xed\xe9\xe5\xfc\x2a\x2f\x2d\x8f\x3f\x18\x93\xd1\xe4\xc5\x97\x73\xd4\x1f\x2c\x66\x70\x14\xf6\x57\x00\xb2\x0e\xa6\x8d\x3c\x2b\xdd\xbd\x6f\xea\xba\xb6\x23\xc7\xd6\x34\x5a\x08\x81\xbf\x96\x51\x83\x51\x72\xdd\x67\x18\xcd\x8a\x98\x1a\xcb\x0e\xd7\x96\x14\x7e\x9b\xca\xf3\x25\x14\x00\x54\x60\x5e\x6a\x31\x94\x76\xaf\xde\x91\xf4\x0b\x74\x5e\x7b\x37\x0d\xb8\xa8\xa5\x87\x92\x07\x36\x8c\x90\xfa\xf1\x97\xac\x60\x24\x4c\xd0\xc8\xe6\x2e\x4c\x9f\x32\x0c\x67\x0b\x4d\x9e\xb9\x84\x9b\xaf\xeb\xbc\x12\x2e\x2a\xd4\x11\xd5\x02\xef\x3d\xab\x48\x15\xcc\x7b\x06\x30\x77\xfc\x6b\x7c\xf5\x4d\x3c\x42\xab\x9a\xb8\x14\xe7\x54\x52\x20\x03\x25\xe9\x17\xaf\x00\xaa\xa4\x42\x55\xee\x9c\xd6\x44\x18\x85\xb2\xcb\x09\x3b\x7f\xe7\xf6\x6f\x1d\xf8\xe8\xdf\x1a\x33\x39\xa1\xd1\x3d\x3f\x91\xf5\x20\x58\x52\xb5\x49\xb5\x30\x4a\x9c\x01\xfa\x9d\xfd\x79\x73\xbf\x4e\x9f\x70\x67\xce\x24\xcd\x41\x0b\xce\x89\x31\x2d\xdc\x02\xe8\xd0\x5c\xbc\xcf\x04\xa3\x60\x19\x6a\x18\x89\xf4\x3d\xb7\x83\x78\x53\xc7\x48\xa5\xda\x5f\xd5\x76\x45\xb2\x62\x54\x4d\x8d\x55\x60\x84\x2c\xbe\x5f\x33\xfa\xeb\xba\xac\xae\x00\x34\xde\x4d\x6b\x25\x5a\xa2\xd9\x2e\x70\x80\xf3\x9e\xa9\x41\x57\x81\x4c\x32\x02\x63\xdf\x3e\x08\x8f\x4e\x9f\xb4\x5c\x31\x48\x63\xb3\x09\xef\x7b\x74\x22\x72\xcd\xb5\xca\xc6\x3f\x6e\xe3\x40\xb1\x05\xe9\x0e\x2f\x21\xdc\xe4\x8f\xb5\xf4\x58\x3b\x12\x43\xb4\xb8\x7e\x01\xb6\x07\x49\x18\x4c\x09\x52\xd4\xf5\x75\xb3\xa5\xdf\xcd\xf4\x96\x4a\x1b\x42\x18\x23\x9f\x29\xbd\xdb\x86\xde\xf7\xcc\x08\x7c\x64\xe1\xec\xde\x99\xf2\xed\x18\x50\x9d\x5f\xbc\x58\x82\x77\x4e\xd5\x82\xac\x07\xd9\xe1\x64\x71\x4e\xd5\x01\xcb\x13\xd6\xab\x52\x66\x8c\x2f\x55\x80\xc5\xe9\xf9\x90\x31\x13\xd4\xf9\xc7\x6c\x35\x52\x47\x48\x88\xdc\x12\x3d\xeb\xb4\xf7\x4a\xa5\xc2\xef\x65\x52\x06\x60\x14\x0d\xdc\x64\x76\x73\x4a\x9c\x64\xb7\xda\x14\xa3\xd6\xe2\x4b\x97\x13\x7f\x90\x62\x0b\x1b\xc8\x95\x9d\xe8\x62\xb2\x03\x9a\x85\x54\x15\x7d\x4a\x70\xfd\xeb\xd5\x63\xa1\x28\xe5\x6a\x3c\xd3\xbf\x85\xd9\x4f\x48\x5a\x00\x9b\xff\xe6\x1a\xc7\x0c\xbe\xc5\x30\xce\x1f\x14\x38\x6a\xbf\xf8\x1d\x0f\x81\x6b\x6a\xee\x9b\xf0\xde\x87\xa5\xbd\xf9\x92\x89\x09\xe0\xfd\xfa\xe8\x06\x26\xe4\x4d\x9e\x3c\x12\x57\xb8\x3c\xed\xe3\xf4\xda\x28\xd8\x60\x68\xe8\x06\xf0\x75\xa2\x85\xf8\x69\x39\x5f\x51\x6e\x0d\x4c\xc7\x51\x53\xc7\x21\x5c\x32\x09\x03\x83\xc3\x30\xe6\xea\x0a\x91\xfa\xee\x78\x7e\x45\xde\xd2\xef\xd6\x09\x58\xd1\xd1\xc5\xa3\x0a\x14\x42\xbe\xaa\xef\xe5\x41\xb4\xc1\xd7\xb3\x1e\x7d\xca\x0e\x66\x7a\x67\xef\x22\x23\x69\x00\xa3\x72\x6e\x9a\xcc\x73\x65\xe1\x8f\x5e\x0d\x98\x5d\x41\xd9\xa0\x89\x30\x5c\x44\xf1\x4f\x64\xeb\x5c\xd4\xbf\xb9\x9e\x0e\xbc\x4c\xac\x32\xc7\x22\x06\x03\xc0\x6c\x77\xf2\x5f\xb5\x46\xdb\x03\x5a\x13\x7e\x0b\xbc\x50\x47\x30\x61\x7e\x7b\x26\x35\xb3\xab\x69\x1c\x71\x5e\x5b\xdf\x3a\x66\xef\x5e\x17\x05\x54\x56\x70\x81\x58\x5b\x52\x43\xe7\xca\x94\xcb\x30\x0c\x1e\xc0\x41\xe0\x44\xcc\x17\x81\xa9\xb1\x17\x4a\x52\x44\x3e\x7c\x17\x0a\x66\x31\x61\xf8\xe4\x65\xed\x26\x3a\x50\x55\xbb\xad\x7d\x31\xa1\xd6\x6b\xa7\x1d\xb6\x76\x45\xae\x42\xfe\x54\xca\xec\x21\x9d\xaf\x2e\x98\xc4\xc0\x9b\xb9\x1e\xb0\xbb\x4d\xb5\xa3\x2b\x69\x8e\x91\x60\x70\xa2\x27\xae\x41\xea\xf4\xa8\x41\xb1\xa3\xc0\x0d\x4b\xf8\xc8\x22\xb9\x7b\xa0\xcc\x9a\xbc\x98\x0e\xaf\xe8\xa2\x81\x09\x48\xb8\xe4\x0c\x49\x63\xac\xa3\x0f\x5f\x42\x7f\xe0\xf9\x53\xaf\x77\x95\xdb\x6b\xe0\xd6\x16\x84\x20\x12\xa3\x60\xfa\x06\x94\xd9\x6a\x2c\x73\xa4\xe4\x79\x96\x39\x00\xb0\x7c\x72\x4f\xa0\xac\xbc\xe6\x9d\x05\x9a\x3d\x8c\x59\xf9\x97\xba\xb4\xe1\xc5\x53\xaf\xca\x47\x56\x83\xec\x16\x4a\xe7\x40\xc5\x47\xe0\x57\x97\x40\x11\xeb\xed\xb4\xf6\xaf\xc5\xbd\x39\x6c\xbe\x3d\x74\x4b\xd3\xcb\x65\x4d\x6a\x20\xa3\x97\x1f\xe1\x16\xf0\xd7\x5f\xbc\x20\xf1\x9b\xbe\x3a\xad\x10\xf6\x11\x59\xfb\xa8\x8f\xfb\xbc\xbe\xe7\xad\xf5\x29\x50\xc9\xa0\x88\x6b\xce\x6d\x26\x34\x50\x5e\x99\x24\x14\x27\x22\xcb\xa0\x8c\x90\xc5\x75\x84\x64\xa1\xcc\x80\xfd\x5c\xa3\xd9\x43\xfe\x8f\x19\x2d\x44\x72\x2a\xa8\x71\x30\xa8\xf4\xb2\x4f\x7f\xf7\x4d\x15\xf3\x33\xec\x51\x28\x61\x30\x55\x6d\xe7\x75\xf4\x92\x91\xc8\x28\xb0\x94\x71\x3a\xcb\x4b\xf0\xbc\x22\x11\x00\xf7\x40\x74\xf2\x97\x80\x2e\xde\xd6\x35\x95\xaf\xf2\x4e\x57\x7d\x93\x67\xb7\xd3\x89\x92\x3b\x16\x76\x6f\xd7\x14\x04\x00\x2f\x3c\xd7\x96\x62\x1f\x43\xb0\xc5\x50\xb0\xda\x1d\xd3\xf0\x9c\x25\xdc\x82\x46\xc9\x4d\x1f\x83\x7e\x88\xb6\xbe\x57\x62\xb8\x44\x30\x24\x81\x80\xcf\x7e\x20\x3e\x45\xc5\x33\x7d\x53\x92\x62\x57\xe9\x65\xfd\xd4\x12\xb3\xb1\xab\xd2\x48\xec\xd2\xc4\xa1\xc8\x71\xc3\xf0\x4a\x58\xae\xc0\x8c\xb3\x73\xb4\xe0\xec\x99\x74\x45\x1b\xaa\x0c\xf8\x5e\x44\x11\xdc\xcf\xa1\x46\x5d\xd6\x0b\x31\xf5\xf2\x63\x55\x45\xdc\xf1\xea\xf7\x43\x60\xf5\x5f\x3d\x3a\x71\x6e\x73\x7d\xdf\x62\xd1\xeb\x3c\x59\x22\xe4\x88\xd6\xb1\xc0\x52\xa1\xea\x09\x8d\x39\xf4\x99\xcf\xb8\xa2\x63\xf4\x2b\x68\x11\x7f\x41\xaf\x80\x74\x43\x8c\xcb\x1a\x19\xe3\x97\x12\xfb\x26\x79\xf6\x13\x10\x94\xcb\xff\xbe\x05\x92\x3c\xe5\x84\x8a\x3e\x19\xbc\xa4\x99\xe1\xf4\x70\x97\xfc\x2d\x39\xb6\x20\x80\x22\xb9\x9c\x0d\x02\xc2\x61\x49\x8a\x13\xf5\x87\xe8\xfc\xf0\x5b\xe7\xb3\x03\x21\x9a\x2b\x11\x82\xdc\xd2\xfa\xfb\xce\x2d\x81\xc9\x43\x0c\xb4\x70\xb4\x23\x3a\x8e\x07\xb9\xba\x37\x00\x30\xb3\x20\x20\x67\x99\x7a\xd8\xc3\x9c\xaf\xf3\xf4\x39\xb6\xe5\xc6\x0a\xdf\xd4\x19\x5b\x2a\x2b\x6b\x82\x39\x81\xeb\x3e\xe2\xf0\xb7\x7a\x0d\x16\x82\x64\xbf\xb5\x24\x31\xae\x34\x15\x12\xd2\x4c\x2c\x62\xdf\x1c\xd5\x23\x2d\x78\x7f\x70\x02\xba\xc1\x70\x64\x27\xa2\x25\x54\x0d\x24\x63\xf1\x9b\x2b\xf3\xc5\x76\x7b\x56\xb9\xba\x7e\xff\x3f\x0e\x26\x06\x4a\x94\x33\x0d\xda\x0c\x38\xff\xf6\xb5\x9f\xd1\x2d\x0e\xfe\xbc\x09\x36\x55\x79\xcb\x7c\xcf\x05\x5e\x3c\x4b\x7e\x45\x0f\x46\x96\x8b\xbd\x88\xe0\x05\xbd\x81\xf9\x7e\x1f\xdb\xe3\x8b\x8d\x77\xaf\xc8\x73\x4a\x12\x06\x81\x1f\x14\xed\xe8\x43\xb6\x90\x18\x88\xc4\x19\x46\xd6\x6e\x01\x42\xe3\x27\x9a\x1d\x48\x73\x2d\xfc\x6b\x76\xc6\x8b\x26\x2f\xd8\xde\xf2\xca\xa3\x05\x94\x19\x52\xc3\xec\x3a\xf7\xee\xdb\xef\x4b\x28\x92\x72\xeb\x3e\x10\x9d\x90\xc5\xef\xe6\x2a\x3d\x50\x82\x9f\x02\xe6\x6d\x06\xa2\x5f\x0c\x97\x7c\xa9\xde\x16\xf0\x53\x15\xa5\x4e\x63\x28\x35\x42\x65\x18\x7e\xaf\xde\xe5\xd3\x29\x56\x83\x98\x09\xdf\x3e\x0e\xe1\x06\xd9\xc4\x90\x5e\x57\x98\xc5\x54\xfb\x5b\x1d\x67\xdf\x46\x11\xc8\x59\xb6\x7e\xd8\xa6\x96\x01\xf7\x4b\x12\x3e\x9b\x75\x99\x00\xa6\xcd\x25\xac\xde\x73\x76\xa4\xb7\x90\x92\xd7\xc0\x16\x35\xc6\x8f\x02\x2a\x53\xc0\x2e\xf1\x82\xb5\x1f\x11\xb3\x1e\x52\x4c\x49\xa7\x75\x65\x2f\x71\x2e\xe7\x74\x78\x65\xe1\x4c\x62\xa6\xbe\xe1\xe7\x93\x82\xe9\xa3\xe7\xd7\x88\x70\x68\x19\x3f\xf0\x3a\x74\xa8\xef\xf1\x59\x38\x9c\x2c\xed\x1e\x75\x27\xc9\x0f\xf1\xe6\x0f\x42\x3a\x6e\x2b\xb4\x07\x9a\x22\xb8\x51\x67\xeb\xb4\xea\xee\x5b\x07\x7a\xaf\x22\x5e\x63\x93\xf3\xdf\x92\x86\x03\x5d\x91\x93\x08\x19\x5c\x3b\xb7\x67\xdf\x09\xaf\x71\x92\xce\xfe\x56\xab\x54\xb3\x33\x79\x59\xd3\x07\x3d\x78\x1c\x4a\xc4\x64\x3e\x7b\x3d\x1c\x75\x8a\x0c\xcb\xdf\x7d\xf6\x2f\x08\xb1\xb7\x30\x05\x66\x15\xa1\xb6\xc3\x91\x23\xdc\x00\xb0\xa2\xdb\x22\x9e\x95\xb4\xb0\x26\x6f\xae\x24\xae\x1d\xee\xb5\xb2\x46\x41\xa4\x6e\xe8\x66\x8a\x85\x37\x00\xad\x6d\xe7\x53\xfb\x9b\x3b\x83\x1f\x29\xa2\x93\x47\x94\x19\x99\xcf\x2d\xa0\x63\x3a\x2e\xeb\x1f\x17\xed\xa3\x95\xd1\x03\x55\xcd\x6f\x7f\x69\x24\xf8\x6b\x38\x59\x04\xb5\x97\x62\xc1\xea\x12\xde\xf7\x76\xe9\xf2\x44\xba\x99\x48\x85\xfd\xc5\x21\x1c\xe2\xc0\xf6\x5f\x4f\x41\x6b\xda\x04\xe2\xc7\xea\x23\xef\x28\xd2\xba\xc3\x3b\x69\xbe\xf8\x4e\x24\x2d\xe8\x84\x17\x3a\x77\xef\x0e\x54\x56\xa4\x87\x02\xae\x67\x36\x08\xe9\xb2\x97\xea\xa4\x7a\x5e\x2e\x67\xab\xe7\xc4\x35\xd5\x45\x87\xbf\x45\xca\xf9\xae\x11\xe9\x5a\xa1\x9d\x19\x94\xc2\xe7\x66\x74\x46\xf3\x4c\xb4\xd1\x85\xc8\x6e\x5a\x89\x3f\xf3\x40\xff\xf4\x27\x93\xdd\xfe\xd0\x5a\xb4\x46\xc8\x17\x30\xe5\x6e\x78\xad\x8b\xa1\xa4\xd6\x79\x60\x02\x2f\xd1\x0a\x95\xb5\xb6\x0f\xc8\xc3\x6d\x6a\xc2\xf4\x04\xec\xa7\x53\x2a\xdd\x0f\x9b\x16\x3e\x45\x14\x78\xfc\x62\xcd\xe0\x47\x81\x46\xff\x25\x4d\x1c\x89\x84\x81\x24\x69\x88\xad\x52\x87\x74\x4a\x1f\x7d\x8d\x41\x46\x07\x01\x16\x18\x08\x04\x0f\x94\x4a\xfd\x8c\xe9\x44\x2e\xeb\x93\xe5\xde\x3d\x87\xda\xf1\xaa\xb6\xa3\x4b\xd2\xf1\x6d\xb6\xaa\xd4\x60\x09\xd7\xd8\x44\xe0\xe4\xd7\xb7\xc1\xf7\x35\x7e\x79\x25\xe0\xe8\xbc\x69\x2e\x52\x98\x11\x2a\x3d\x37\x55\x09\xcc\x86\xcf\x69\x3a\x1a\xe3\x87\xe5\x9a\x32\x4c\x1d\x4c\x2f\x13\x5e\xad\x2b\x09\xd0\x4e\x95\x10\x89\x41\x94\xd3\xcc\x47\x4c\x5a\x0f\xb5\xc4\x08\x29\x49\x17\x4e\xc0\xf6\x7c\xea\xb8\xac\xa3\x1b\x06\x42\x4b\xe9\x25\x3f\x5f\x9f\x77\x4b\x89\x1e\xb8\xf4\xec\x89\xad\xa2\x24\x0e\x13\x40\x74\xe7\xbc\xa3\xd5\x27\x59\x9e\x99\x31\xc2\xe1\xca\x45\x18\x0f\x78\x83\xe8\xe4\x45\x9a\x23\x76\xfd\xde\x5a\xf5\xcb\xe4\x37\x7f\x81\xc0\x1c\xbb\x27\x71\xe7\x70\x5a\x54\x4f\x1f\x3b\x89\xcf\xe4\x79\x06\x04\xf1\xc2\x4e\x43\xee\x40\x05\x07\xad\xfa\xb9\x3d\xad\x52\x32\xa0\x03\xef\xd2\x82\x7e\x67\xc4\x29\xc9\x18\x4b\x7c\x4d\x98\xed\x0f\xef\x6d\x39\x1c\x96\x14\x8d\x2e\xe8\x27\x36\x35\xae\x1a\xb2\x27\x02\xac\x89\x66\x94\xc9\x40\x06\x1f\x8e\x3e\xc8\xd7\x6f\x7e\x46\xaf\x18\x36\x30\x1d\xb0\x49\xe8\x0d\x28\x7c\xbe\xfd\x23\xb8\x82\x7d\x10\x3a\x6d\xfd\x7c\x8e\xb1\x05\x8e\xfa\xac\x8f\xa4\xfd\x0d\xfe\x3c\x05\x03\xaa\x9f\xf5\x84\x16\x35\x67\x40\xaa\x33\x35\x37\xb4\xf1\xa8\x95\x4a\xeb\x37\xfc\xa0\xc0\xb8\xc1\x36\xbd\xdf\x08\xbb\xce\x8f\x5a\xb2\x7e\x26\xf2\xa7\x59\xb3\x26\xb6\x88\x0f\xf5\xeb\x8e\x1c\x5b\xfa\xa7\xe1\x68\xf6\x3c\xcc\x8b\x78\xb0\x70\xb5\x7b\x1b\x68\x4b\x52\x91\xc5\xef\xbd\x36\x52\xf6\xad\x25\x66\x76\x86\xb5\x9a\xbd\x3a\x91\x15\xd9\x66\xdc\x84\x9c\x9a\xad\x2e\x74\xa6\x13\x3a\xdb\xdf\x7d\x51\x61\x5e\x0a\xec\x59\xe1\x95\x99\xa8\x7a\x25\x0c\x9c\xec\xeb\x2f\xe3\xc9\xcd\x01\xc4\x30\xaa\xfb\x75\x0f\x05\x0a\xed\x73\x0b\xbc\xf2\x41\xf3\x24\x0b\x0c\xc0\x2d\x7e\xdf\xf7\xf3\xc5\x7e\x06\x21\x46\x82\xc1\xc7\xf8\x03\xd1\x7b\xd7\xe6\x7c\x8d\x6e\x03\x5d\x9d\xe8\x6c\x84\x07\x6c\xad\xe9\xbb\x4f\x3c\x3d\x91\xf3\x1e\x69\x0f\xa3\x9a\xa9\xbb\xac\xde\x14\x4f\x15\x4b\xcc\xb0\xce\x2e\x28\x8e\x28\x79\x49\x9f\x68\xe1\xf9\xb0\xae\x4c\xb3\x19\x0e\x4d\xf6\x10\xf7\x8f\xe9\x15\x32\x45\x8e\x99\x07\x6e\xaa\xe6\x0f\xd5\x1b\x94\x46\xa8\x44\x6b\x84\x57\x38\xdb\x3f\xfc\xe4\x6b\xcc\x64\xe0\x27\x5f\x44\x17\x73\x38\x25\xd9\xc3\x0f\x8f\xe0\x0a\xb0\xaf\x8b\x72\x6c\xf0\x44\x61\xea\xce\x50\x3c\x08\x92\xd0\x7f\xbb\xfc\xd1\x2b\x19\xa6\x21\x33\x67\x32\x82\x57\xe8\x8b\xff\x70\x08\x8c\xa0\x41\x71\xfd\x55\xb4\x50\x10\xc9\xac\x4c\x0f\xcb\x68\xc0\xd3\x66\xe4\xe6\x4e\xc4\x06\x7f\x0b\x46\x32\xdd\x05\x51\x45\x5f\x5b\x6d\xcb\x8c\xfc\xb5\x84\x40\xc8\xcc\x34\x51\x54\xd5\xa8\x9e\x5b\x18\x2a\xe1\x39\xbb\x27\x3c\x26\xc7\xc6\xa9\xd4\x74\x0a\x2d\xe2\x52\x73\x63\x49\x12\x06\x87\xb6\x56\xfc\xbd\x6b\xcc\xdf\x23\x47\xf0\x91\xb6\x64\x85\xfc\xfe\x38\xa4\x8c\xac\xb1\x17\x11\x98\xa1\xbe\xd6\xc8\xd7\x2c\x93\xa8\xd5\x7c\xaf\xcd\xbd\xba\x61\x02\xe7\xe9\xc1\xa8\x42\x41\x0f\xe7\x86\x4a\x33\x96\x65\xd3\x60\xd8\x7a\xb1\x2b\x94\xc4\x0d\xc3\xb9\x9d\x2a\x10\x1d\x7f\x13\x5b\xa4\x33\x3f\x3f\xec\x60\x1a\xcc\x63\x89\xbd\x7e\xf6\xe5\xf4\x5f\xf2\x39\x33\x24\xb0\x6a\xe3\xef\x7d\xdf\x85\x5b\x70\x04\x17\xee\x4c\xfe\x19\x4d\xdd\xb3\xfe\x44\x8e\xf0\xd1\x33\xb1\x34\xdc\xc5\xf3\x4b\xa8\x53\x29\xb5\x19\x44\xf0\x24\x0c\x30\x8c\xf1\xcb\x60\xb9\x0b\xd4\xf2\x0c\x64\x07\x0a\x8c\xe9\x5b\x8f\x43\xb3\x7d\xc3\x85\x03\xdd\x13\x9e\xf9\x7b\x69\x70\x5b\x5e\x27\x5a\x65\x5f\xd4\x3d\xe8\xca\xde\x1c\x35\xbe\xdf\x83\x01\xca\x5f\x6c\xbc\x78\xd1\x2b\xa3\x97\x1d\xaf\xe2\xb5\xb2\xf5\x52\x08\x5d\x80\xf9\xb9\x3f\x54\x69\x19\x24\xd5\xd8\x07\x66\x49\x3d\xed\x70\x84\xdc\x10\x74\x7e\xd5\x0a\xd9\x57\xd4\xb4\x07\x35\x55\x52\x99\xfe\x2f\x26\x58\xef\xdd\x44\xa9\x73\x76\x77\x6a\x16\x08\xab\xae\x4f\xbe\x60\x81\x6e\x31\xc2\xac\x40\x24\x25\x04\xb3\x02\x35\x72\x65\x18\xc6\x0f\x35\x1a\x89\x5c\x82\x1e\x48\xe8\x85\xcd\xd4\x90\x60\xc3\xf5\xf7\x36\x44\xd2\x40\x13\xbf\x51\x99\xe6\x74\xc4\xd7\xdf\xd0\x12\x41\x54\xf5\xb0\xf1\xe5\x19\x2c\x41\x58\x6e\x61\x84\x14\xd6\x54\x63\xe7\xc2\x36\xb4\x48\x84\x6e\xff\xf5\xc9\x78\xf4\xd6\xa1\x27\xf5\x0e\x18\xad\x16\x41\xb1\xaf\xea\x14\x00\x27\x4c\xf2\x92\xe5\xb7\x81\x2f\x86\x18\xf5\xd2\xa3\xa4\xf6\x51\x07\x9f\xf8\x07\xff\xc7\x64\x64\x47\x23\x5e\x82\x61\x6d\xf9\x9d\xbf\x01\x6c\xf2\x6d\x22\xba\x2a\x58\x24\xcc\xbd\x5d\xcc\xfe\x72\x72\xee\xf4\xb7\xa2\x4f\xad\x25\xd6\xb5\x9d\x05\xee\xbe\x09\xfd\x27\x2e\x7b\xd9\x3b\xf1\x1e\x92\x0d\x56\x42\xed\x05\xfe\xe9\x1a\x05\x64\xfa\x16\x00\xa5\xcd\x0f\x8e\x2f\x32\x77\x59\xaa\x3d\x61\x36\x73\xc3\x28\x52\xf7\x0c\x46\x31\x2c\xb6\xd3\x67\x52\x57\xee\xe0\xb9\xea\x33\x95\x4f\xdd\xdf\xf5\xc4\xb9\xad\xab\x18\x33\xb1\xa9\x76\x65\x49\xec\x48\xd0\xb1\x9e\x91\x2e\xf5\x8f\xd7\x2c\x72\x5c\x09\xbf\x80\x08\x1a\x37\xaa\x51\x8b\x8f\x60\x47\xd7\x90\xac\xc3\xe0\xc8\x4e\xb4\x42\xa7\x1d\xca\x0c\x68\x5e\x8e\xd7\xc9\xc8\x62\xa4\x4b\xda\x92\xba\x40\x2d\x84\xd1\x39\x63\x0f\x1f\x90\xc1\x15\xa4\x93\x01\xdf\x08\xa7\x22\x71\x48\xca\x6a\x54\xf1\x42\xcd\x1a\xbd\x6b\x72\xf6\xe7\x0a\xd7\x43\x83\x81\x56\x5e\x50\x41\xf7\x4f\x04\x9a\x07\x19\x25\xa8\xc7\xbc\x89\xe5\x56\xf5\x9a\x8e\x4a\xf3\x53\x9d\xbe\xee\x53\x8c\x41\x8a\xa0\x67\xeb\x58\xea\x7a\xdc\x4c\x45\x18\xfa\x3d\xb6\x5a\x7e\x3b\x29\xbc\xdf\x0d\x64\xd6\x94\x86\xc3\xe2\x31\xa0\x06\x9b\x93\x27\x75\xc5\xa9\x69\xe8\x2b\x43\x81\x00\xf2\xc9\xe3\x0f\xa2\x23\x04\x5b\xfd\xe7\x2d\x29\x49\xe6\x10\x59\x50\x38\xbb\xff\xb1\x11\x83\xc9\x3f\x7d\xf4\xf2\xae\x9c\xbf\x3a\xff\xe6\xa1\x7b\x50\x62\x1e\xc0\x68\xfc\x0a\x7d\x52\xc4\xfc\x56\xb9\x7e\x29\xa3\x85\x9c\x7d\x8c\xad\x55\xc1\x15\x1a\x35\xd4\x06\x82\xf3\x7d\xc5\xdd\x06\x80\x3c\xae\xd3\x8a\x72\x57\x83\x0b\xd9\x49\x4b\xab\xfe\x89\xa5\x33\xf1\x01\x79\xac\x52\x33\x07\xb6\x25\x38\xb7\x6f\x49\xa0\x29\x6b\x62\xdc\xc9\x19\x39\xbd\xf3\xaa\x2e\xf1\x19\xf5\x3f\xea\x00\x7b\x10\x80\xdd\x0d\x26\xf0\x20\x10\x1d\xe1\x66\x64\x40\xc0\x28\x53\x41\xe4\xea\xbc\xfc\xdf\x87\x8b\xae\xe5\x3b\x7f\xc3\x8d\xed\xa5\x59\xc6\xf2\x11\xda\xfd\xa2\xb9\x5f\x71\x21\x9d\x67\xa2\x1f\x85\x9b\xc9\xc8\xdd\x68\x74\x21\xb1\x89\xcc\x71\x43\x89\x42\x8f\xc8\x40\x5f\x1b\x88\x37\x2e\xdc\xf8\x86\xc4\xe7\xc3\x47\x2c\x45\x77\xd3\x96\xfd\x2d\x30\xbb\xdc\x2e\xfe\x89\x45\x2a\x09\xf1\x8d\x0c\x02\x9d\x0f\xe4\x16\xee\x65\xd2\xb7\x87\x3c\x08\x76\xbf\x5b\x6f\x18\x15\x90\x4c\x6b\x72\xd1\x14\xb1\x23\xe5\xa5\x66\x7a\x5f\xe4\x93\xa3\xd5\xb3\x20\x20\x36\x92\xc3\xfb\x65\x6b\x56\xa7\x2f\x9e\xad\x89\x50\x1b\x10\x2e\x3b\x45\x1a\xc5\xc1\xec\x80\xdd\x23\x72\x5d\x7d\xfa\x6c\x26\x12\x6f\x5f\x64\xb3\x5e\x5d\x7a\xa6\x0e\xb5\x00\xe9\x32\x57\x76\x5b\xbd\x74\xae\xd6\xa2\x7c\x78\x02\x3b\xbb\x5e\xab\x0d\x22\x0a\x0b\xdb\x4b\xe3\x44\xb7\xba\x21\x6d\xc3\x18\xbd\x2c\x40\x8d\x3b\x67\xec\x0a\x13\xbc\x37\x9d\xf4\xaa\x57\x03\x43\xf7\x7c\x64\x28\xe7\xd6\xed\x17\x2d\xd1\x91\xbc\x00\x49\x59\xf1\x2d\xa6\x80\x09\xba\x90\x3f\x1c\x0a\x2d\x4e\xfc\x49\xeb\xe8\x54\x3c\x0e\xfe\x04\x9e\xa5\x7f\x88\xd4\xca\xec\x1d\xdb\x17\x5c\x23\x89\x19\x8e\x6b\x59\x59\x63\xc2\x1b\x6e\xb4\x0d\xd4\x68\x87\x59\x43\x3a\x1b\x8a\x92\x31\x25\x89\xae\x95\xbb\xf2\xa7\x3f\x0f\x38\x5a\x0a\x79\x69\x56\x2a\x49\x4d\x1c\x18\xe0\x08\x3f\xb6\xff\x63\xed\xdb\x00\x92\x71\x59\x10\xd2\x4f\xb0\xb5\x6a\x9f\x19\x2a\x41\xf0\xce\x13\xa2\x1c\x50\x92\xbe\x9b\x52\xb0\x45\x36\x0e\x1c\xab\x23\x66\xcf\x66\xeb\xf3\x38\xd1\xac\x45\xf2\xeb\xe6\xb3\xc7\x82\xd3\x00\x9c\xd4\x7f\x3a\x9b\x09\x97\x8e\x57\x9a\xec\xba\x11\x09\x7f\xc6\xf8\x95\x95\x1e\x9e\xe3\xf1\x03\xdc\x71\xd9\x56\x12\x38\xe5\x48\x8b\x2a\xe1\x8a\xa0\xb5\x04\x67\xdd\x1f\x95\xb6\xf8\x01\xbe\x44\x4f\xf8\x23\x74\xce\xab\xd5\x0c\x0f\xfc\xb4\xd3\xea\xfe\xbd\xfb\xa7\xcb\xd3\x0f\x92\x70\x38\x17\x47\x61\x35\xe5\xea\x60\x52\xa4\xde\xac\xc3\xde\x82\xae\xf4\xd1\xba\x08\xb4\x4d\xcc\x50\x83\x91\xd4\x41\xe4\x74\xcc\x48\x1a\xe8\x17\xb8\x01\x97\xaa\x4f\x4c\x8f\x7a\xeb\xb6\x1e\x39\x76\xf2\x16\xf4\x59\x6d\xdc\xbc\xf4\xda\x9c\x83\x5c\x61\x95\xe2\x42\xd3\x82\x0d\xa5\xc4\x9c\x10\x62\x4c\xc6\x24\x60\x68\x27\x1c\x66\x22\xa3\xc8\x9c\x01\x2f\xd4\x45\x74\x4e\x88\x0d\xff\xdf\xba\xe1\xe6\x2c\x68\x32\xc3\x41\x10\x04\x00\x8f\x72\x16\x38\x11\x00\x2e\x1c\x94\x15\x6e\x30\x2c\x5a\x13\x4a\x4e\x3c\x44\x94\xa6\x20\x23\x31\x3a\x5c\x09\x52\xa5\xd6\x65\xb3\x8c\x4c\xaa\x35\x78\xa1\x0a\x76\x67\x03\x6e\x7a\x35\xcc\xfb\x36\xc5\x2b\xfd\x5f\x62\x4b\x14\x17\xda\x15\x73\xf2\x66\xd8\xf0\x54\xf7\xa3\x18\x53\xf6\xd2\x3d\x02\x41\x00\xea\x70\xd5\xf5\x27\x05\xd4\xa6\xaf\x3a\x80\xc7\x27\x96\x45\x79\xc6\x69\x59\xb3\xf1\xb6\x48\x5a\x27\x2a\x4b\xe5\xe6\x7d\xb0\xd2\xe7\xe3\x50\x7d\x78\xf1\xaa\x59\x6a\x1e\xe4\xeb\xb2\xf2\x49\x11\xda\x97\xf5\xdb\x5e\x5c\x64\xbf\x19\x3d\x10\x12\x6d\x75\x7a\xfa\x68\xb2\x3b\x37\x30\x77\x28\xb0\x12\x5b\xa2\xfc\x8d\xe0\x46\x03\x1a\x8e\x7b\x92\xe7\xd6\x3e\xd8\x25\x03\x37\xa2\xbc\x30\xc5\xcb\x60\x7e\x9c\x1b\x7a\xe3\xa2\x8d\x00\x58\xad\xcb\x9a\xf6\x8e\xc6\x33\x98\xfa\xab\xc5\x38\x10\x5d\x7f\x98\x07\xd0\x06\x72\xc3\xf3\x61\xe7\xc6\x8a\xa9\x5b\xf0\xfd\xf8\xc6\x10\x24\x31\x2c\x37\x30\x90\x14\x76\x44\x89\xe5\x45\xaf\xa4\x67\x4f\x95\x82\x49\x35\x12\xba\x1b\x10\xfc\x70\x0a\xa6\x23\xb0\x55\x30\x8d\x23\x22\x93\x5e\x50\xde\x9c\x1d\x46\xac\x3b\xdd\x95\x9d\x0c\xfb\xae\x1d\xa9\x2c\xe1\x37\x57\x0a\x2e\xfe\xe0\x95\xce\x0e\xf0\xb4\xa2\x42\xcd\x44\x4f\x5c\x3f\xa9\xc1\xbb\x8b\x6b\x95\x78\x3f\x34\xee\xed\xab\xc4\xfb\xe3\xa1\x6f\x81\x00\x8b\xae\x2c\xcd\x15\x68\x79\x05\x92\xdb\x14\x87\x24\x4c\xf4\xd1\xe3\x9f\x97\xe0\x19\xd1\x7c\x29\xa5\xc9\x15\x23\x24\xd3\x79\x55\xeb\x9a\x64\x18\xb0\xeb\xcb\x6d\x7f\xa6\x1e\x3f\xb3\x96\xe8\x35\xe3\x0a\xa7\x15\xd7\x47\x12\xa4\x9b\x20\x0c\x46\xc5\xb9\x58\xfa\x5f\x9d\x34\x59\x5d\x12\x3f\x50\x8f\x0e\x65\x06\xd1\x56\xa7\x37\xd0\xf8\xfc\x4a\xbc\x73\xb9\xfa\xa7\xc2\x47\x16\x36\x73\x2a\x08\x1c\xf2\xe5\xa7\x26\x7a\xcd\x8d\xcf\xf9\x64\x8f\x02\xd3\x11\xf4\x49\xcb\xbb\xce\xa0\x54\x25\x28\x19\x4d\xdc\x3f\x5e\x0d\x87\x25\xf3\x2b\x93\xa5\xc4\x0b\xde\x07\xa5\x42\xc1\xe8\x42\x71\x15\x3d\xa2\x6c\xa0\xca\xca\x9e\x65\xc4\xeb\x1a\x0b\xec\x4d\x3a\xad\x80\x1f\x78\x26\xc1\x97\x5f\x20\x5e\x2d\x10\x50\xfc\xb6\xd3\x9f\x03\x6b\xfa\x8e\x7a\x10\x6e\x3e\xa6\x3b\x35\x18\xbf\xe3\xa0\x16\xfb\x8f\x17\x3b\x13\xfc\x55\x7d\x72\x66\x26\x32\x71\x8f\xc1\x69\x03\xe1\xa0\x2d\x1f\x9b\xfc\x95\x21\xf4\xf5\xcb\x13\x29\x18\x70\xf7\xcf\x9b\x0f\x5b\x0a\x1b\xf7\xa6\xbb\x82\xc3\x82\x97\xff\xe7\x19\x13\xed\x33\x52\xa6\xb9\x5d\xa9\xb3\x34\xb4\x8d\x47\x7d\x31\xd9\xb4\xfa\x60\x80\xac\x16\x04\xca\x49\x81\xdb\x19\xc0\xca\xda\x1c\xaa\x00\x91\xe3\x3a\x7c\xcc\xbb\x36\x1f\x97\x35\xad\x15\x7d\xba\xfc\x82\xb0\xe6\xd3\x74\xba\x0b\x0b\xe0\x21\x09\x83\x1d\xcd\x40\xf1\x96\xd0\x0f\xf9\xd8\x31\xa9\x84\xe6\x26\x0f\x53\xfe\xf6\x7e\xfd\xd3\xaf\x84\xd3\xbf\x05\xfc\x1e\x89\x57\x85\xec\x27\xef\xa3\xa0\x99\x73\xc5\xf0\x09\x8a\x03\xe0\xf5\xe2\x14\x9c\x1e\xa1\x38\xb8\x7e\xfb\xb3\xbc\x94\xb8\x77\x99\x67\x2f\x6b\xdc\x02\x82\x70\x7b\xe0\x14\x23\xc4\xb9\x32\x08\xa4\x8e\x8a\xae\x16\x9c\x89\xc4\xa7\xa8\xb8\x6d\xf8\xd1\x3d\x07\x54\x1b\x31\xdb\x36\x5b\x4f\xf8\x9a\x8e\x8b\x25\x7b\xd8\x9d\xe0\x95\x79\x7c\x18\x6c\x2b\xef\xaf\xbd\xf7\x4a\x0b\x89\xc5\xc1\x26\x15\x87\x88\xc4\xb2\x89\x3a\x33\x10\x82\x2a\xaa\x03\x49\xcf\x38\x1a\xf0\x32\x02\x49\xf9\xa3\x41\x19\x88\xff\xf8\xe9\xb4\x6f\x98\xa5\xc0\x4a\xe9\x08\x04\x70\x0c\xe9\x4b\x6c\x78\x31\xab\x03\x61\x80\xe4\x80\x58\x98\xb1\x8e\x67\x2f\x83\x21\x09\x51\xf2\x68\xcc\x2f\x2f\x74\x7e\x2e\xbd\x3e\x11\x9e\xa2\x52\x7d\x23\x3d\xc2\x17\x40\x38\x30\x02\x82\x7e\x51\xdf\xe4\x08\xd7\xb9\xc4\x4a\x91\x22\xaa\x01\x0e\x42\xa9\x38\xc6\x2f\x6c\x81\x38\x48\x7e\x82\x29\xeb\xd3\x4f\x97\x62\xf4\xcd\x19\xf7\xde\x35\x71\x45\x32\x61\xbc\x6f\xf3\x8a\xb6\xcd\x18\x51\xd9\x62\xe7\x3e\x44\x8e\x2d\xf3\x65\xf3\xbc\x54\xb8\x90\xf8\xe6\x32\xbb\x1a\xcd\xaf\x57\xa7\x34\xe9\xeb\x77\x53\x46\xc9\x83\x14\xbd\x9b\x06\x64\x4b\x2c\x5e\x96\x16\x2d\x79\xcd\x06\xcb\x0b\x40\xb4\x06\x74\x91\xd9\xc5\x46\xa7\xdc\x66\x97\x9b\x27\x11\x48\x02\x63\x18\xcd\x75\x27\xe5\xa6\xe2\xe2\xc3\xfe\x3c\x94\xd8\xf8\xc1\xcf\x59\x2a\xd5\xa5\x2e\x94\x5c\xf0\x97\x7e\x92\x9d\x08\x8b\xea\x78\xf1\x8e\x34\x8e\x1d\x89\x7f\xe6\xaf\xe2\xd3\x22\xa5\x90\x74\x86\x57\xb4\xa7\xda\x3e\x15\xa2\x3f\xd5\x2f\xad\xe1\xaa\x4e\x2b\x0a\x6d\x92\x47\x9d\xd0\x0f\xc4\x27\xb6\x68\xe0\x7b\x84\x6e\x7e\xc7\xbc\xf7\x26\x09\xa6\x8b\x83\x92\x18\x28\xc3\x58\x02\x33\xe4\x7b\xb2\x3c\x98\xce\x8a\x1d\x85\xb2\x24\xe9\xc7\xbf\xb8\x8a\x6e\xca\x94\xcb\xfa\xc6\x8b\xd3\x9d\x27\x29\x8f\x07\xa8\xee\x0b\x84\xac\xfe\xf2\x4d\x7b\x94\xbf\x3e\xa9\x78\x8d\xda\xef\x31\x4e\x9f\x36\x9f\x90\xc9\x3b\xfb\x2b\x41\x9f\x8d\xea\x94\x6f\x26\xf4\x8e\x73\xe2\x58\xad\xcc\x29\xe1\x92\xfe\x9d\xf2\xd6\xc7\x1a\xed\xa5\xae\x0b\xd5\x70\xbd\xdb\xdb\x99\x70\xfb\x43\x9a\x36\x71\x5f\xd2\x7c\xc4\x4f\xf2\x52\x07\x97\x28\xcc\x69\x51\xcb\x61\xcf\xd4\x03\x68\x15\x8c\x2a\xaf\x28\x43\x46\xdf\x9a\x95\xea\xc7\x0e\x13\xbf\x40\xbb\x26\x3d\xbf\xe2\xf0\xcc\x29\x83\x10\xb1\xbc\xaa\x9f\x3c\x31\xf5\x08\x42\xa1\xfc\x9a\x0c\x77\x47\x21\x7c\x64\x65\x3b\xf8\x0c\x80\xde\x71\x6e\xc9\x13\x57\x5a\x37\xc3\x30\x1c\xc3\xb8\xbe\xc3\x06\xdc\xbc\xa9\x90\xc1\x10\xdd\x43\x53\x87\x97\x41\xc0\xc5\x01\x95\xe5\xa2\xb3\xc2\xab\xac\x67\x8e\xbc\xaf\x31\x15\xd0\x86\x60\x75\x42\x48\x65\xce\xe6\x73\xc3\x45\x14\x30\x6e\x61\xf1\x0d\xf5\xd2\xfa\x36\xbc\xc4\x57\x65\x67\x24\xd1\xce\xc5\x37\x37\x46\xe6\x67\x7d\x0f\xbe\xa1\x57\xd5\x05\x83\x21\xaa\x26\xbc\xb3\xd7\xd6\xd6\x40\x95\x09\x8d\x5d\x71\x5d\xd3\x37\x70\x2d\x11\xb9\x74\xef\x3c\xa1\xf6\x4c\xe0\x85\xf0\x95\x1e\xe7\xa7\x4c\x95\x99\x9a\xa5\x9e\xc2\x79\x53\x86\x60\xb1\x29\xa3\x4c\x89\x6b\xc1\x7a\xeb\xfc\xbc\xba\x5b\x6a\xad\x44\x62\x8c\x00\x59\x9e\x44\xc1\xd6\x77\x02\x75\x47\x3b\xb4\x78\xf5\x23\x5b\x01\x43\x58\x24\x31\x9d\xb1\x3b\x50\xe3\xe2\x6d\xc8\xa8\xeb\xf0\x55\x4b\xb3\xdd\x56\xf2\x5c\x5a\x24\x5b\xf3\x5b\x12\x1e\x28\xc0\xbd\xc8\xcd\x81\x6b\xd4\x0a\xb5\xcc\x05\x37\x41\x8d\x2f\xff\x9b\x67\x5d\x33\x0d\xc2\xb3\x7b\x2d\x4e\x65\x30\x03\x3e\x6a\xe9\xa0\xd9\x01\x02\x00\x56\xce\xed\x2b\x34\x8e\xef\x82\xa8\xd1\xc5\x08\x5f\x13\xe6\xaa\xb5\x8c\xc0\x94\x83\x92\x86\x72\xf7\xdc\xb7\x6e\x1c\xb9\xce\x2b\x3d\x11\x0e\x4b\xf5\xcb\xdb\xf9\xd5\x3b\x6b\xf8\xf0\xbf\x41\xbb\x02\x3e\x69\x63\xb1\x01\x8f\xe3\x1d\x1d\xdd\xb5\x36\xd5\x15\x68\x0b\x44\xc5\x4e\x2d\xc9\x79\x1b\x08\xfc\x3d\x2e\x8f\x00\x09\x1a\x20\x6e\x3d\x2d\xdd\xce\x41\x0c\xaa\x52\xe2\x23\xf4\x15\x44\xa3\x33\x10\x56\x83\x0d\x06\xfc\x2d\x20\x14\x85\xa1\xed\xac\x23\x93\x09\xde\x8c\x68\x43\xfa\x6f\x19\x0c\x0a\x52\xde\x7c\x52\x91\xec\xb8\xef\x84\xe4\x48\xbe\xf2\xc3\x39\x10\x15\x37\x3f\xa7\xf6\x29\xa8\xd1\x9b\x7e\x99\x69\x76\x75\x6d\xeb\xb8\xe9\xf5\xaf\xf5\xfa\x99\x84\xef\x7c\x73\xff\x65\x37\xf7\xf7\x4d\xd2\xb6\xa6\xbd\xf2\xc3\xd7\xc4\x87\xe9\x4a\x46\x4f\x41\x8f\xff\x38\x50\xd5\xd6\xf7\x62\x99\xc1\xf0\x7c\x9c\x02\x4b\x8a\x48\x01\xcd\x99\x91\x48\xc3\xdf\x25\xf4\xb7\x22\xeb\x73\xbe\x0b\xe0\xc2\x8f\xbe\x85\xaa\x88\x13\x7f\x72\x8b\x62\x7b\xbf\x13\x50\x83\x09\xc4\x27\xa2\xcf\xa8\xaa\xf4\x1f\xd5\xcc\x49\xc1\xf5\xb9\xaf\x55\x7d\x84\xca\x1d\xaa\x7f\xfa\xf7\xb3\xae\xd6\x94\xbf\xa3\xa4\x69\x6a\x10\xf6\x69\xf1\x89\x4a\x99\x3a\x66\xec\x6e\x93\xb9\xb8\x7e\x56\x8d\x8e\x7e\x5e\x0c\x85\x31\x91\x2c\x4e\xd0\xfc\x72\x24\x38\xa8\x0b\xa4\x4c\x99\x47\x8e\x60\xb3\x7e\xa5\x35\x73\xdf\x52\x1e\x27\x92\xc5\xb9\x2e\xc7\xab\x44\x43\x94\xa7\xf4\x58\xae\x47\xbf\xfe\xb1\x0b\x1a\x04\xc8\x02\xd4\x86\xef\x01\x37\x7c\x0f\x47\xdf\xe2\x7e\x6d\xbc\xab\x18\x95\x19\xe3\x27\x3c\xba\xab\x7a\x18\x64\x42\x85\x5c\x14\x17\xaa\x72\xf5\xfc\xe3\x11\x5e\x64\xaf\x8a\x5f\xab\x49\x29\xd1\x83\x6c\xfc\xca\xec\x6a\x3b\x5e\xad\xf0\x2b\xd4\x6a\xe2\xc1\x3a\x97\x4f\xb2\x37\x25\xbe\x88\x02\x38\x0c\x92\x2d\x3e\x84\xb9\xcf\x1d\x21\x2a\x4e\x14\xed\x7d\xc1\x95\xbc\x47\xb9\x2a\x68\xc5\x69\x00\x82\x33\x63\x3d\xd7\x75\xdf\x56\x96\x9b\x57\x75\xdf\xd4\x77\xdf\x04\xec\x52\x55\x6e\x27\x50\x85\x96\xe5\x67\x4f\x5d\x30\xc9\x6a\xc2\x74\x7d\xb7\x73\x8a\x36\x5e\xd5\xb6\x67\x83\xc0\x65\x6c\x48\x1e\x2d\x69\xdc\xfc\xbf\xf4\x3f\x2c\x69\xd8\xe6\xc1\x80\x97\x3e\x8c\x33\x71\x1e\xd2\x23\x6c\x4e\x66\x8a\x5b\xbc\x8d\x78\xc6\x24\x75\x9e\x0d\xec\x58\x45\xb1\xb6\x1f\x88\x41\xf0\xaf\x96\x9a\xf9\xb1\x43\x78\x6c\xc4\x5a\x4c\x1b\x4e\x7a\x09\x45\xc6\x67\x04\xc9\x83\x9d\x1f\x9a\x0b\xd1\x95\xd9\xfd\xbb\xd6\xfa\xc5\x26\x55\x69\xc8\x72\xf5\xe9\xa0\x82\x3d\x5e\x86\x05\x57\xd7\x3f\xce\x5e\xc7\x52\x0b\xe1\x73\x9b\x89\xdb\xa5\x54\xb3\xe8\x71\xb5\x04\x2b\x98\xc8\xaf\x79\x6d\xe7\x75\x9d\x57\x81\x69\xfa\xd2\xa2\xa7\x89\x96\x80\x18\xfe\xbb\xbd\x74\xdf\xd2\x11\x6d\x37\x0e\x49\x84\xbb\xcc\x8e\x90\x48\xfe\x80\xb8\x8b\xfb\xb4\xfe\x68\x4d\x1d\xec\x24\xf1\x5d\x8b\xf3\xa5\xfd\x8d\x45\x3c\x09\x70\x0c\x17\x19\x3e\x61\xa3\xd1\x30\x4b\xef\x77\x6b\x41\x9b\x1d\xeb\xe2\x91\x13\x0c\xc9\xac\xfe\x77\xbc\xf8\xa2\xba\xc2\xd1\x42\xdb\xbf\x1e\x59\x18\x50\x99\xb2\xb5\x16\x4a\x79\x46\x76\x49\xf2\x68\x02\xe5\xa3\x46\x2b\x19\xa0\xb7\xdf\x41\x13\x97\x47\x97\x60\x39\x4f\xcc\xfa\xe7\x74\xf1\xf8\xf2\xd7\x43\x2b\xae\xd1\x0b\xa6\x62\x18\x13\xd3\x72\x5c\x55\x8f\xe4\xaa\x42\x57\xba\x7a\xf1\x1c\x83\x0d\x4f\x48\x0d\xe9\x08\xd1\xea\x03\x24\x74\xde\x7b\x61\x1f\x0d\x82\xce\x79\x6f\x79\x74\xaf\x27\xc2\xd7\x9e\x62\x84\x3e\x2e\x24\x4b\x02\x3f\x10\x1c\x2d\x19\xe8\x7c\x52\x5f\xa9\xf8\xbc\x58\x9c\xad\x46\xb8\xc0\x2e\xa1\x01\x94\x9c\x3e\xde\x1c\x16\xb7\x03\x1f\x68\x27\x27\x13\x8d\x66\x5d\xe6\xed\x5b\xc7\x8b\xb3\xe3\xe9\x1c\x7e\xc6\xe4\xcc\x78\xe0\xa6\x4a\x4b\xab\x2b\xe9\xd1\xb7\x9b\x44\xc5\x8b\x8a\x44\x38\x8c\x9c\xbe\x0d\x28\x6b\x8d\xaa\xec\xb7\x6a\x6d\xfb\xeb\x7e\x88\x51\x3e\xda\x43\xd2\x2f\x39\x80\xd1\x21\x7d\xdf\x47\x07\x90\xda\x40\xfa\x97\xff\x8b\x24\x9d\x2c\xaf\xd1\x9c\xba\x65\x4d\xc7\xf5\x01\x1b\xc3\x0b\xe1\x3d\x13\x1f\xdf\xa7\xcb\x64\xf5\x07\xc5\x7b\xc1\x0b\x95\xbb\x87\x4e\x8c\x1a\x88\x3e\x20\xcf\x24\xe7\xcf\x6d\x5c\x19\x62\xd4\x58\x51\x3e\x75\x1c\x8a\x2c\x02\xeb\xf4\x69\x81\x0c\xe6\x9b\x72\x22\x2b\xf3\xdf\x38\xe3\x1f\x69\xda\x58\x6e\xcc\x28\xa5\x2e\x43\x7e\x45\x38\x66\x59\x32\x48\xc2\x2d\xba\x1e\x60\xfc\x1a\xbc\x9b\xeb\xe1\x35\x5e\xfc\xf0\x11\x8e\x6e\x88\x8e\x1f\x08\x8f\xee\xf9\x9f\xf9\xe1\x2d\x92\x16\x40\x17\xef\xfe\xe8\x29\x67\x1d\xc2\xf0\x61\x78\x39\x6c\x77\xaf\x50\x59\xe8\x5b\x83\x44\x7f\x46\x19\xa9\x17\x25\xcb\x04\x6c\x4f\x2f\xa9\xdb\x3b\x3c\x4e\x88\x16\x45\x58\x6d\x34\x54\xd1\x92\x9e\xcd\x73\xda\x6d\x6d\x1d\x5a\x08\x7b\x39\xac\x7b\x3e\x6a\x20\x5d\x0b\xe5\x91\xf3\xfa\x83\xe1\xf5\x58\xb9\x69\x2d\xb6\x12\x87\x95\x8d\x21\x3e\x25\x21\x5b\x63\xa6\xb6\x22\x6b\x71\x4d\x44\x22\x39\xe7\xad\x01\x5a\xb8\xc1\xd0\xef\x8a\xa2\x8d\xa4\x5b\x34\xb0\x1f\x3c\x27\xd7\xf8\x18\xc9\x03\x21\xb0\xb8\x02\xc0\xaa\x9a\x8b\xf4\x8c\x26\x1d\xb7\xc4\x27\x54\x08\xae\x99\x4b\xb9\x25\xce\xed\xc4\x42\xbc\xcf\xf4\xd7\x9f\x65\x94\x00\x2c\xb1\x7d\xf5\xf0\x86\x0c\x9e\x02\xe5\x27\x99\x7c\x6b\x83\x57\x04\x25\x8b\x97\x55\xdd\xa4\x42\x43\xb4\x5c\x08\xb7\x5f\xd2\x38\x14\x9b\x34\x1c\xf0\x50\x7b\x4a\x75\x4d\xfb\x85\xd4\x5e\x91\xbd\xd3\xaf\x8a\x13\xca\x9f\xe2\xf8\xcf\xb2\x18\x5f\xfe\x19\xe1\x56\x9c\x64\xd9\xf5\x8a\x71\x86\x9f\x14\x08\x47\x88\x96\x27\x2f\x60\xaa\xd8\x22\x38\xcd\xd5\x76\x6c\x94\x57\x74\xa1\x84\x11\x7e\x5e\xb2\x23\xb4\x02\x50\x40\x45\x9f\x7c\x1e\x89\x50\x20\x3a\xbe\x0f\x74\x53\x87\xd3\xee\x8e\x20\xd9\x15\xd6\xab\x5a\x63\x31\x9d\xe9\x73\x6e\x4a\x7e\x34\xd9\x9d\xe5\x41\xf6\x9d\x5b\x6f\xe8\xe8\xee\x90\x61\x95\x4c\xa0\xe4\x81\x4a\x5d\x73\x5c\xc9\x48\x4a\x6f\x7d\xee\xab\x5a\xff\x2c\xf9\x3a\xef\xd9\xd7\x44\x13\x84\x95\xe1\x08\xe1\x23\x06\x66\x28\x27\x69\x54\x1a\x71\x60\x3a\x10\x2d\xa3\x51\x63\xfc\xf4\xee\x66\xd3\xe7\xda\x18\x17\x3b\xff\x34\x1e\xa2\x35\x77\x1e\x82\x9e\xab\x77\x6d\x83\x11\xba\xec\xfa\xdd\xe2\xfa\xc5\x75\xe3\x29\x96\x9e\x76\x1f\xab\x0a\x9d\x35\xaa\xfa\xe3\xfb\xcc\x39\xd0\x15\xdd\x49\x21\xc3\x01\xd9\x3b\xe0\x26\xa0\x1f\x74\x43\xbe\xd9\xe0\x8d\x11\x8d\x6d\xcb\xf4\x60\xc3\x8a\x78\x12\x8b\xeb\x26\x62\x0d\xd9\x23\xe1\x13\xf1\x14\x88\xa0\xda\x98\x96\x55\xd3\x55\xf7\x4d\x79\x37\x9a\xa0\x41\xbd\x34\xf4\xcf\x86\x12\xab\x0c\xa0\xc9\xa0\x40\xe6\xca\x92\x1d\x25\x68\x73\xf2\xb6\x68\x47\x19\x2c\x01\xd5\x16\x5b\xd5\x69\xc3\x30\x5d\x36\xa4\xaf\xec\xa6\x8e\x08\x60\xfb\x3e\x2c\x14\x04\xdb\x8c\x36\xee\x15\x24\x1d\xe4\x4b\x0e\x7e\x9a\xef\xda\x4f\xa6\x9a\x8b\x5e\x04\x4d\xd6\x21\x04\xc1\x0b\xfe\x13\xe4\xc3\x2e\xca\x25\xca\x03\xd1\xc9\x8a\x13\xcd\x70\x1c\x03\x57\x0d\x7f\xe9\x3f\xa0\xef\x4b\x2e\x31\xbd\x9e\xc8\x8e\x91\x64\xfb\x4b\x20\xf2\x4c\x7c\x82\x17\xaf\xaa\xe6\x4e\x46\x37\xb0\xe6\x5b\xdc\x7f\x0d\xf3\x9b\xac\x0b\xa1\x2a\xeb\x4b\x91\xa7\xfe\x29\x17\xc9\xc3\x3a\x90\x52\x0d\xd5\x9b\xbe\x96\x85\xe8\x91\x1d\x08\x69\xa2\xc1\x9d\x1e\xe7\x29\x7b\xc8\x14\x00\xde\x84\x93\x80\xde\x62\xa7\xd1\xc5\x30\x2e\x24\x66\xdc\x0b\xfc\xf7\x66\x06\x01\x5c\x73\x66\x8c\xf8\x0e\x2f\x2f\x61\x26\xc4\x1f\x9f\xca\xfc\x83\x11\xc5\x65\xcf\xbc\x5b\x39\x3e\xc4\xb2\x76\x2e\x6b\x08\x7a\xb9\xb8\x41\xc7\x46\x53\x3b\xc2\x63\x7e\xf9\x31\xbc\x67\x04\x85\xc8\x71\x65\x1b\x4c\x90\xce\x50\x58\x1d\x96\x4d\xc7\x84\x6e\xf0\xce\x7e\x75\xf6\xa3\xd9\x8f\xa8\x48\xa0\xeb\x11\x0d\x26\x3b\x0a\x2f\x4e\xaa\x41\x50\x3c\xe4\xea\x59\x95\xe9\x07\xcc\xaf\xe8\x9a\xde\x52\x9f\xf4\xed\x16\xc7\x64\x4d\xc9\x63\x44\x03\xf8\x90\x71\x04\x76\x85\x05\x95\x1f\x10\x8c\xe8\x12\xb4\xe3\x3c\x5c\x87\xfc\x4b\xf5\x5f\x3e\xae\xeb\xb9\xa1\x76\x89\x57\x15\x49\x8d\x39\x36\x99\xd1\x75\x4e\xa6\xd0\x39\x2b\xf7\xa6\x9c\x8f\x1a\x68\x35\x50\x4d\xf4\x97\x35\x7e\x4d\xf1\xb5\x14\x38\x01\x18\x95\x11\x40\xb5\x7f\xa9\x98\xd9\x1f\xa1\xe1\x80\x55\x47\xce\x9e\x49\x93\xb7\xc0\xf9\xb9\xc5\x77\x41\x96\x53\x3b\x76\x31\xab\x2a\xb8\x15\x6e\x30\x2d\x3b\x7e\x22\x38\x1d\x4c\x80\x55\x8b\x66\x4c\xee\x9a\x93\xb7\x1c\x28\xd9\xf3\x16\x30\x57\x0a\x7d\x0d\x00\x0a\x80\x1c\x19\x1c\x08\x99\x78\x38\x45\x14\x27\xea\x86\x70\xc8\x27\xc1\x87\xd3\xc0\xe5\xdd\xe0\x6c\xfe\x9a\x1b\xe8\x66\xc2\x5a\x74\x45\xb3\x67\xa4\xb2\x8e\xf2\x8a\xe2\x38\x66\x1b\xca\x50\x3c\xe1\xcb\xf7\x28\xc8\x3c\xe1\xd6\xed\x5d\xe0\xda\x79\x55\xb1\x37\xd5\xe5\x0f\x1e\x79\xcb\xa7\x05\x8e\xe0\x97\x0b\xbd\x10\xd2\x42\x01\x4d\xec\x0e\x73\xc6\x8c\x11\x74\x2e\x01\xca\x9a\x27\x3d\xc2\x2d\xd9\x91\x40\xf9\x43\xd3\x30\x81\x15\xd7\xbf\x7e\x88\xfa\x47\x58\xee\xd4\x78\xbe\x92\x47\xec\x73\xe0\xd8\x04\xfa\x40\x7e\x46\xc9\x9f\x86\x66\xc3\xa5\x13\xeb\xba\xce\x43\xfb\x24\xde\x50\x97\xd2\x71\xac\x48\x96\x1d\x03\xf0\xa5\xac\xad\x73\xe6\x7b\xf7\x16\x47\x9f\x58\x35\x1b\x54\x75\xf1\x98\x3d\x1c\x59\x09\x5e\xa6\xec\xa5\xc8\xd1\xd9\xd4\x01\xa0\xd9\x51\x87\xa5\xe5\x97\xb2\x0e\xc8\x4f\xa9\xc3\xd9\x21\xb3\x50\x21\x7d\xd9\x35\xa0\xda\xd0\x22\x0b\x11\xb0\xaa\xa2\xa8\x91\x06\x53\x40\x8b\x2d\x00\x70\x79\xca\x4b\xb6\xd1\x3e\xc1\x1a\x2e\x33\x98\xd8\xc4\xe1\x09\x56\xc7\x96\x5d\x8f\x3e\x2a\xd4\xa4\x5b\x0d\x61\x5e\x1b\x49\xaf\xe4\x82\x4c\xde\x72\xd6\x2f\xb8\xbe\xdf\x42\x81\x3b\x2a\xc8\x55\x6e\x0b\x87\x96\xc2\x1a\x16\x4a\x31\x0d\xd9\xdb\x9b\x4f\xca\x4e\x64\xd6\x6c\x0d\x93\x98\xb2\xd2\x01\x90\x05\x8c\xc0\xb1\x07\xca\x63\x83\x3b\xcd\x7b\x75\x18\x4a\x53\xb4\xe6\xde\x3b\x69\x7e\x07\x59\x7e\x47\x26\xc1\x47\xea\x29\x2d\x20\x04\x67\x36\x92\xdc\xf8\x55\x0f\x55\xc9\xcf\x06\x93\xf2\x93\x87\xca\x13\xfe\x88\x49\x09\x8d\x2e\x47\x00\x06\x3c\x12\x8a\x5a\xf8\x31\xd7\x65\xfe\x81\x88\x52\x61\x80\x1f\x14\x8e\xcb\x9a\x1d\xc8\x56\x6c\x68\x9a\x18\xd2\x9d\xcb\xed\x95\x6b\x9a\x3b\xaf\xe5\x45\xee\x48\x7c\x4d\x1f\x61\x76\xf3\x01\x7a\xa9\x73\xcc\x22\x5c\x45\x4a\x7e\x86\xd4\x54\x53\x86\x91\x6b\x38\x05\xfe\x59\x33\xfe\x9b\x73\x0e\x11\xf2\x71\x42\x01\xec\x33\xe6\x10\x07\xba\xe6\x07\x5e\x20\xa8\x98\x92\x42\x65\x43\x3e\x23\x7a\x97\x22\xc7\x96\xdf\x87\xf6\x5f\x05\xa9\xfe\xfd\xf9\xc7\x34\x82\xce\xd4\xbc\x77\x9e\xa1\x35\x0f\xa2\x2d\x17\xea\x2c\x57\x87\x8d\x32\x38\xa0\xe3\xb0\xa6\x0f\x7b\xb2\x69\xef\xfe\x64\x7a\xcc\x8c\x91\x8f\xec\xcc\xb1\xc4\x67\x78\x9f\xb4\x30\xff\xbc\xc9\x73\x9a\xec\x63\x96\x50\x25\x4f\x11\x48\x7d\xb3\x32\x11\x27\x9c\x1d\x78\x7c\x46\xad\xf6\xe9\x7e\x4e\x40\x86\xe7\x5b\x32\x8f\xf5\xbc\x70\xd0\xc0\x97\x5d\x00\x68\xcd\x50\x69\x42\xe6\xfa\xaf\x39\x64\xa6\xec\xf0\x8e\xc0\x63\x8a\x18\x5d\x8a\x0c\x03\x92\x39\x8b\x0f\x2b\x3c\xc3\xfb\xb0\x91\xf4\x7f\x3c\xa6\xb8\x95\xfc\x50\x21\xd8\xa2\xaf\x4b\x95\xbe\xf1\xc0\x3b\x7a\xa5\xc6\xf8\xe2\x59\x5c\x20\x24\xb0\x07\x48\xa4\x02\x7c\x2b\xdf\xb4\x1c\xc1\x1f\xfd\x92\x6a\x8b\x74\x35\x0e\x10\x1e\x30\x5c\xda\x97\x67\x25\x57\xcf\xbb\xc2\x95\x0b\x59\x2e\x06\x0d\x50\x60\x84\xda\x5f\xe4\x3c\x44\x69\xc9\x54\x45\x00\xf9\x71\xcb\x70\x58\x8f\x30\x41\x97\x04\xd2\x81\x5e\x62\xd0\xb9\x89\x51\x95\x74\xc1\x9c\x9f\xec\x1b\x07\xe9\x7c\x8e\x1a\x9f\x0d\x19\x52\xe7\x3e\x3a\xcf\xd4\xda\xcf\x02\xbf\x29\x41\x9c\x3e\xf9\x23\x14\x29\x1c\x97\xb4\x04\xcb\x2b\x3a\xa3\x49\x7c\x6c\x5f\xe0\x50\x81\xf7\x1f\x83\x7f\x30\x40\xe1\x90\xa3\x4b\x80\xd7\x0a\x6e\xd3\x7b\xa8\x9b\xdc\xe0\x82\x3d\x3e\x5c\x56\x71\x2f\x46\xf4\xbf\x79\xb4\x85\xc8\xbe\x85\xf0\xee\x09\xb0\xd1\x16\xc5\x15\x0d\x78\x99\xf6\x8b\x1a\x8f\x4a\x1b\xf7\x4a\x6b\xf7\x0a\x57\x0e\x73\xca\xfb\x45\xfa\xa7\x29\x93\xc7\x3e\xbf\x61\x5e\x1a\x4a\x57\x4c\x59\x7c\x69\x02\x2f\x5a\x46\xdf\xe8\x12\x8d\x0a\x3a\x4c\x8d\xc4\x2b\x63\xa7\x46\xb7\x7e\xb3\x4c\xd0\x07\x55\x77\x5e\x8d\x2e\xfe\x77\x00\x5a\x66\xb8\x73\xef\xe3\xbc\xfc\xe7\xbb\x1d\xa8\x90\x6d\xd8\xf0\xbc\x7f\x5b\x35\xe0\x22\x15\xed\xd5\x6a\xc0\xaa\x1c\xa6\xe0\x5f\x8b\xaa\xbf\x4f\x11\xb5\x54\xf4\xa7\x52\x2d\x76\x2a\x6d\xef\xd7\xbd\xb0\x44\x3d\x5e\x66\x23\x2e\x79\x53\x62\x56\xfe\x5f\x8e\x88\xa3\x85\x3f\x48\x13\x0d\x49\xf1\x55\xaa\x90\x24\x6c\x5f\x66\xff\x38\x81\xe9\xd1\xb1\xa5\x46\x4f\xd9\x66\x0b\x8d\xf7\x9d\x06\x7b\x0b\x85\x52\xbc\x1c\x82\x70\x58\x55\x64\x7d\xba\x38\x14\x1f\xd2\xb4\x95\xb2\x27\x61\x73\xba\x88\xcf\xa4\xc8\x82\xd6\x90\x39\xb7\x26\xea\x8f\x64\x92\x3d\x95\xbc\xe0\xdc\x54\xe0\x5f\x03\xde\x85\x06\xea\x3a\x49\xa5\x66\x4d\xa5\x65\x4f\x23\x13\xcd\x0a\x9a\x70\xd3\x71\x59\x89\x92\x0c\x67\xb2\xc1\x0e\xa1\xf1\x7d\xd1\x74\x7a\x1c\x70\xa8\x6f\x9f\x88\x41\x09\xc3\x61\x59\x9d\x69\x10\x93\xd0\x9f\xf8\x14\xf8\xc2\xab\xb8\xd6\x23\xbc\x40\x6b\x28\x23\xbb\xb4\x3a\x99\x21\xe5\x37\x1f\x16\x9c\xc0\x40\x8a\xb7\xc0\x30\x73\x8b\x90\xe0\xc6\x65\x8a\x17\x4b\xb8\x67\x51\x55\xcd\x54\x55\x91\x63\x4a\x29\x90\x6e\xa2\x0d\xc6\x1a\xd1\x62\xd1\x1c\xa8\xac\xf9\x6b\x34\x81\x0f\x63\xab\x23\x01\xef\xbb\x4b\x0f\xfe\x33\x5e\x74\x15\x11\x65\xd3\xfd\x3b\x14\x20\x45\xfe\x7d\xcf\xe9\xd8\xf4\x5c\xbd\xb6\x89\xef\xc3\x86\xe7\x3f\xfe\x2f\x60\x6c\xce\x5a\x80\x6b\x56\x59\x9b\xc6\xe9\x0a\x5c\x61\xe1\xb7\x0e\xa4\xf4\x42\x97\xf6\x52\x97\x46\x50\xf3\xf6\xd6\x8b\xea\x48\x41\x2b\x2c\xc2\x6f\x11\x7f\x81\xd8\xd8\xa1\xf8\xaf\xea\xcb\x9e\xf0\x3f\xc7\x13\x06\x43\x02\x54\x1e\xa8\x1b\x16\xdf\xe7\xdd\x42\x00\xe0\x02\x92\x20\xe1\x65\x9a\x7c\x8c\x6d\xb4\x11\x85\x21\x71\x8d\x67\x57\x15\xcb\xa8\x8d\x8f\x18\x1d\x73\x1b\xbc\x73\x2d\xc6\xb8\xc5\xbb\x24\xf3\xcd\x8c\x40\x87\x66\x43\x06\x1f\xf9\x7f\x8f\xdf\xf8\xbf\x21\x09\x03\xd1\xc9\xfd\xcb\xcb\x90\xb3\x0f\x8a\x30\xf8\x35\xaa\x7b\x6e\x04\x25\x04\xa2\x93\xd0\x9f\x75\x16\x7f\xe3\xab\x7c\xd7\x74\x63\xbe\x41\x84\xcd\x66\xa0\xef\x85\x57\x16\xd1\x2a\xf1\x51\x44\x22\xea\x58\x5d\x9f\x7f\xb3\x45\xd2\x40\x65\x4d\x71\xa1\x8f\xdc\x8b\x94\xe6\xe8\xda\x21\x7e\x0e\x2c\x62\xbe\x94\x27\x3d\xbf\x9a\xa4\x7d\x1a\x4e\xc2\x65\x4b\x81\xa8\x0f\x5e\xc8\xe6\xb8\x44\x9f\xf8\xce\x7d\x71\x8b\xb8\x62\x47\xf8\x2d\x92\x8c\x20\x9c\xe3\xfe\x5c\xf2\x63\xab\x3f\x8f\x3a\xd5\x98\x01\x15\x51\x98\x94\xf7\xa0\x89\x2f\x80\x97\xa5\x2e\xad\x97\x76\x25\x3b\x92\x58\xa1\xd6\xbb\xf2\x5a\x22\x18\xba\x19\x74\xba\x87\x7d\x64\xed\xa5\x5e\x95\xa3\xf3\x9e\xc1\x7d\x0e\x84\xa4\x89\x71\x6c\xc8\x1f\x4e\x92\xcb\x7b\x91\x1b\xaa\x4b\x0d\x38\xe5\x7c\x9b\x1d\x08\x2e\x9e\x3b\x51\x05\xc1\x92\x12\x67\x4c\xf4\xbf\x94\x56\x16\xea\x99\x89\x42\x9f\xe2\x59\x9d\x67\x50\xc3\x4a\x71\x0b\x56\x58\x92\x4d\x66\xfb\xb7\x07\x27\xc9\xcf\x3f\x96\xd8\x81\x97\x40\xf8\x1c\x88\x6a\x4a\xe5\xea\x15\x3e\xb2\x68\x0f\xb1\x70\x59\x89\x93\x24\x29\x1e\x50\xea\xc7\xca\xfc\x59\x26\x69\x82\x1e\x3f\xf8\x0b\xba\xec\xd3\xbf\xef\x29\xf9\x3b\x3c\x64\xb3\xf1\xb5\xa6\x81\xa8\x04\x21\x8b\xb3\x4b\xa2\x1f\x26\x6b\x62\x6c\x19\x5e\xc1\xbc\x57\x89\x08\xb0\xe7\xbe\xd7\x1f\x7c\x0e\xa5\x43\x25\x67\x16\x70\x27\x98\x1d\xf4\x43\x11\xab\x5a\x5e\x1f\x86\xad\x1b\x31\x2e\x7d\x62\xb1\x54\x4e\x14\x26\x4e\xd1\x32\xd0\x2d\xa4\x1b\x7a\x01\x0f\x34\xc3\x8b\x37\xb9\x75\x6f\xff\xfa\xf3\x52\x44\x95\x00\x24\x8e\x23\xce\x84\x92\x84\x88\x46\x2a\x50\x5c\x9b\x9f\x16\x5b\xe9\x2f\x1f\x69\x9a\x60\x7a\x42\xa5\x77\x2f\x36\x9f\xf0\x32\x24\x27\x9a\x86\xfb\x44\x61\x8d\xa8\x79\x69\xfd\xee\x6a\x06\xa2\x9e\x4c\x5f\x9d\x3a\xe8\x42\xb0\x91\xe5\x9d\x3d\x47\x36\xa9\x22\xc1\x90\xf8\xb4\xe5\xd1\xb6\xb9\x15\x4c\xf3\x73\x2e\xbb\x17\xea\x9e\xab\x29\xc3\x7e\x9e\xd8\x75\x55\x67\x97\xe8\xfb\x92\xe5\xee\x99\x2e\x00\xfd\x55\x6c\xee\x6a\xfa\x97\x23\xd6\xf4\x7d\xce\xb3\x4b\x2c\xe1\x54\x5c\x3d\x25\x67\x32\xe2\x00\xad\x3b\x0f\xff\xc3\xc1\xbc\x24\xf5\xd0\x7e\xcd\x1d\xc6\x9d\x38\x14\x31\x49\xf6\x69\x41\x4d\x4e\x2b\x78\xd0\x05\x4d\x66\x02\x63\xc2\xfb\xae\x09\xde\x39\x4f\x94\x6c\x1a\x02\x23\x8f\x72\x5a\x88\xbd\x5b\xe5\x91\xce\x9f\x17\x6f\x8e\x38\x1b\x3e\xfc\x26\x10\xb9\x02\x26\x52\x7d\x77\xc4\x68\x62\xe4\x2f\xa9\x24\x68\x01\x85\x86\xfc\xa7\xf1\xbe\x68\xf9\x02\xb3\x8a\x23\x99\xec\x52\x19\x75\x37\x46\x6a\x6d\x8c\x28\x4e\xb1\x31\xe5\xc5\x43\xf4\xa0\x38\x7e\x2a\x07\x6a\xd6\xeb\x85\x1e\x9c\xd4\xe6\xba\xd3\x92\x86\x93\xf2\xea\xa6\xce\x81\xe7\x14\x7d\xca\xfc\x63\x3a\x89\x1d\xb3\x89\xbc\x5f\x49\xe8\x69\x2e\xf9\xb9\xd0\xb1\xc1\x38\x59\x1c\x22\x92\xab\x6d\x41\xd0\xe7\x02\x03\x66\xed\x18\xe6\x0b\x9e\xa8\xf7\xfc\xe6\x5f\xcd\x23\x64\x39\xab\x98\x7c\x9f\xbc\x5f\x89\x4b\x1a\x6e\x17\x42\xb2\xd3\x80\x51\x26\xc7\x45\xc2\xfe\x9c\xd5\xd7\xdc\x7f\xa2\xdb\x35\x95\x4e\x97\x57\xe8\x60\xd2\x19\x0d\xf8\x9f\x58\xa4\xad\x59\x81\x1b\x46\x85\x86\xe9\xd5\x38\xef\x7d\x18\xa2\x34\x31\x0c\xa8\x74\x3b\x6d\x40\x4d\x01\x7d\x62\x48\xc3\x0b\x18\x9d\x83\xee\xa4\xb9\x72\xc3\xa2\x7f\x3e\x6c\x45\xda\xae\xea\x3b\xa2\xfc\x46\xa3\xf5\x65\x03\x5e\x2d\x0d\xe7\x13\x4c\x57\x51\x82\xed\xf0\x1d\x08\x33\x7e\x1e\xa8\x50\x5e\xa7\xdb\x0b\xc1\xf2\x92\xe4\x13\x1d\xbb\xea\x1e\x03\xa0\x9b\x36\xcc\x3d\xaf\x70\xab\xf2\xca\x32\xb8\x3b\xf6\x4d\xa1\x6e\x6f\x91\x8d\x83\x24\x47\xd2\x2b\xd2\x60\xf5\xc7\x32\xb5\x74\x38\xe8\x98\x26\xe6\x48\x26\x00\x76\xc7\x02\x08\xd0\xae\x3f\xa8\xef\xa8\x81\x07\x0f\x3e\x36\xff\xda\xc0\xb5\xae\x6b\xbb\x2c\x9d\x9e\x1d\xd9\x6d\x5a\xcf\xd2\x13\xd5\x31\x92\x3c\xdb\x3a\xe8\xbc\x96\x48\x56\x9c\x25\xc7\xb4\xb1\x8e\x50\x67\xe2\xec\x52\xe5\x1f\x63\xd2\xc6\xa3\x34\xd1\x9a\xd3\xc7\x92\x4d\x51\x54\x4f\x8a\x93\x76\x41\x84\x97\x56\xb8\xe4\xce\x9b\x4a\xd0\xc5\xf5\x67\x5d\xb4\xa1\xca\x1b\x9b\xcf\x33\x98\xa0\xbf\xe5\x05\x95\xd6\xd9\x3d\x59\xdb\xda\x9d\xb6\x1c\x24\x08\x6f\xb0\xb4\x56\x6b\xa6\x50\x6b\x23\xcb\x57\x9f\xa4\x11\x2a\x51\xb6\xc7\x16\x41\x45\x5f\xd7\x71\x79\x9c\x06\x76\xf7\x6d\xff\xb8\xb8\xd7\x8c\x7d\x9e\xb6\xfb\x27\x91\x34\x00\x0f\x28\x94\xe1\xb4\x21\x5d\x15\x48\x79\x8c\x5b\x1e\x59\x7a\x3b\xdc\x3e\xc7\x12\xdb\x51\x65\xc8\x83\xab\x21\xc5\xfe\xc5\xc1\x05\xdc\x3d\x4a\x57\xae\x2b\xb1\x83\x95\xd5\x30\x5f\x26\xc7\x94\x31\x52\x09\x01\x94\x4c\x58\x98\x08\x7d\x65\x33\x30\xd9\x0e\x60\x49\x9d\x57\xec\xc8\xd6\x90\x28\x8c\x7d\xf9\xa7\x13\x93\x40\x29\x45\x43\x82\xc6\x20\x3e\x7a\x60\x59\xb2\x11\x11\x7f\xfe\xfa\xfb\x75\xfa\xce\xca\xfc\x1f\x6a\xc0\xba\x67\x0b\x62\x20\x0d\x7f\x5a\x3d\xbf\x89\x4e\x17\x47\x6c\x16\xba\x00\x7e\x37\x01\x15\x51\x40\x96\xe0\x7b\x33\xc4\xc4\x8c\xd1\xfb\xa0\x9d\x79\xc7\xb0\xdd\x55\xb3\x1a\x4b\x14\x1a\x9d\xc1\x5f\xb2\x1f\x92\xc0\xd9\xdf\xb7\x9e\x55\xe6\x2e\xaa\x15\x5a\xf2\x33\x52\xdd\x7a\xfe\xb1\x8b\x0b\x17\xde\x8f\xb0\x78\x67\xc6\xf1\x32\x1a\x3a\xd6\xbb\xe5\xc9\x9a\x60\x73\xea\xc8\x60\x1e\x03\xad\x31\xd5\x6a\xb7\x74\x0c\x58\x3b\xf7\x56\x94\x21\xa9\x36\x02\xb8\x76\x93\x54\xa8\x3b\x75\xd5\xea\x83\xaa\xad\x77\x61\x43\x4b\xd1\x45\x47\x72\x81\x1d\xd0\x19\xca\xf4\x69\xcb\x16\x63\x55\x96\x2b\x2e\x89\x8b\x3d\x22\xb5\xee\x56\x78\xcf\x7c\xc3\x94\x11\x35\xe8\x76\x50\x57\x90\xe4\xac\x46\x27\x86\x72\xfa\xca\xe0\x18\x21\xef\x80\x52\xb9\x6b\xf9\x24\xe0\x9a\x5c\x2c\x8b\xb2\x05\x39\x22\xff\x63\xbe\xc0\xce\x68\x59\x9d\xf0\x84\xb2\x60\x52\xbb\x77\x32\x8a\xa1\xd4\xf0\x35\x43\x5f\x10\xe4\xb8\xe2\xea\x44\x4b\xe3\x5e\xf0\x42\xd4\xf0\xe1\x53\x6a\x38\xa7\xaa\xcb\x44\x03\xb8\x70\x04\x43\x75\x04\xb5\xc9\x8f\x68\x1b\xda\x2f\x5b\x51\x3d\x00\x04\x1e\x52\x4d\xcb\x1d\x04\xab\xe1\xd1\x6c\x9b\x24\x3c\xb2\x80\x27\xbe\xa9\xdc\x1c\x9d\x33\x8e\x31\x49\x61\x75\xae\xce\x59\x10\x35\xba\xba\x7d\xc5\x12\x3d\x70\x08\xf9\x74\x16\xa0\xb9\x47\xef\x6a\x82\x4f\xe4\x8c\x74\x4e\x27\x0e\xbc\xd0\xc4\x44\x66\x97\x3a\x05\x1b\x21\xf2\x38\x75\x98\x2e\xca\xaa\x7e\x0d\xa9\xeb\x1e\x04\xdb\xda\x61\x70\xc2\x6c\xfc\x0a\x00\xb0\xa2\x60\x11\x46\x0f\xdd\x09\x3a\x89\xb0\x74\xfe\x44\x5c\x66\x28\x33\xe6\xd8\x50\x39\x3c\xf1\xf8\xd6\x71\x27\x4b\xd4\x42\x85\xf5\x56\xc5\x23\xc4\x5c\x2e\xee\xb1\xc2\x5c\x6e\xc5\x32\x73\xa4\xe4\x99\xb1\x6f\xac\xe8\xf4\xcf\x48\xc7\xe4\x89\xdd\x5a\xec\xc7\x7a\xd5\x9c\x86\x43\xe3\xf2\x3f\xdf\x01\x82\xb5\x16\xb6\x63\xf5\x87\x7f\xef\xa4\xe2\x91\xa9\x99\xd1\x53\x46\x45\x36\xdd\x75\x59\xd5\x06\x2b\xa7\x5e\x6c\x6c\xc7\x1a\xf9\xd6\x99\x1a\x0a\x97\x9e\x3d\x8e\xf9\x92\xa8\x88\x70\x5e\xf5\x2e\x2f\x6e\x43\x73\xdf\xcb\xc7\x34\xe0\x3d\xc6\xac\xfc\x66\xae\x30\xa7\x1c\x28\x3f\xd2\x46\x73\x9d\x07\xcb\x8f\x80\x0a\x2b\x42\xc9\x60\xa2\x89\x1b\xdf\xe1\x09\x04\x34\xf3\xbd\xf7\x34\xa2\xbd\x4a\x82\x21\x00\xb1\x48\xe9\x2f\xa6\x91\xd4\x10\x38\xd1\x17\x79\x71\x89\x43\x8e\x51\xa8\x96\x48\x43\xb1\xbd\xa6\x76\x4b\x56\x38\x5e\x7e\x66\xb6\x12\xe7\x1e\x8f\xca\x58\x4f\x81\xa9\x7d\x40\x46\x1b\x63\xf6\x5d\xb7\x4c\xea\xf5\xf2\x0b\xfe\x3c\x8a\xe3\xef\x21\x49\xaf\x1f\x72\x33\x8a\x93\x77\x45\x1a\x94\x47\x98\xc1\x30\xf0\x65\xba\x54\x2d\x56\x72\xa6\xb1\xc8\xed\xd7\xc1\x75\x7b\x9d\x31\x77\xf6\xcf\x18\x68\x20\xa2\x09\x93\x87\xd3\x2b\x9a\xcd\xb0\xb4\x98\x10\x67\xbb\x9c\xef\x61\xc0\x2f\x95\xa2\x64\x7f\x53\xb7\x32\x70\xc5\xc7\x0a\x73\xe5\x00\x70\x1f\x81\x22\xbc\x46\x72\x43\x67\x58\x17\x14\xa3\xaa\xaf\x03\xf5\xcb\x0f\x97\x92\x3e\x10\x3d\x1f\x3e\xef\xd4\x94\x2a\xf6\xa6\xe3\x70\x58\x5b\x79\x02\x57\x31\x92\xfc\x8e\x02\x70\x0a\x13\x0f\x84\x0c\x3a\x30\x0f\xd7\x95\x38\xd1\x7d\x3c\x45\xf7\x02\x44\xf8\x1e\xbf\xed\x40\x88\xf7\x62\x04\xe7\xba\x88\xb9\xc9\xe6\x35\x46\x78\x06\x4c\xda\x66\x04\x91\x53\xb9\xf3\x30\x1a\x0a\xd9\x5b\x60\x45\x54\x4c\x1a\xc7\x68\x6f\xa1\x68\x1d\x45\x47\x5e\xf8\xe4\xb9\x5c\x92\x64\x22\x31\xc4\x10\x9e\x6b\x23\xe2\x80\x13\xbf\xac\x38\x61\xf3\x31\xb0\x6f\x02\xf3\x90\x7f\xd8\xea\x92\xe1\x2f\x44\x6f\x4c\x67\x34\x1c\xbc\x10\x02\x2b\x66\x90\xa9\x35\xee\x3e\xf7\x12\xd7\x3d\xd9\xee\xe9\x35\x02\xe7\x81\xea\xc2\x1f\x3b\x67\x12\x40\x91\xbb\x0c\x1e\xc0\x14\x61\x53\xdb\x0f\xe3\xb2\xa6\xd5\x45\x02\x22\x65\x70\x0b\x44\x54\xf0\xca\xb2\x0c\xb8\x56\x94\xc4\x58\x05\xed\xa5\x16\x39\x90\x25\xcf\x63\x5b\x9a\x74\x0e\x75\x27\x40\x52\xc8\xae\x5e\x9a\x9d\x42\xf6\x49\x58\x4c\xc5\xf7\xd5\xb8\xf9\xe2\xf9\x9f\x87\x12\xb9\x0c\x7c\xa0\xb3\x24\x77\x8f\xb1\x45\x6f\x81\x68\xcf\x0f\x24\xa7\x01\x0e\x38\x8f\x02\x71\x5e\xc4\x0a\x37\xaf\x49\x21\x0e\x1e\xa1\xb7\xf4\x98\x8a\xbd\x7b\xd7\x5a\x81\x83\x00\x4e\x08\xba\x6c\x05\x93\x52\x29\x89\x6f\x36\xe1\x3d\xcf\x77\xd7\xb8\xfb\x68\xa5\x5b\x59\x87\x0d\x26\x30\x95\xab\xff\x15\xfc\xb2\xbf\x5c\xe4\x9b\x1b\xe5\x73\x68\x21\xfe\xbc\xe6\xd2\xbf\x45\x79\x29\x3e\xc3\x5a\x91\xbb\xa9\xc1\xbe\x69\x6f\xf3\xeb\xbd\x0f\xbf\x49\x84\x0c\x32\x03\x72\x3b\x79\xd8\x12\xc4\x81\xe8\x3c\xfa\x9c\x7e\x0f\xff\xfc\xc4\xef\x99\xa9\x0c\xfb\xcd\x47\x6a\x7a\x5c\x2c\x57\x2b\xbb\x3e\x18\xc9\xe0\x43\x86\x54\x53\xfe\x54\xa6\x87\xf7\x44\xe0\xd6\xfe\x3c\x4a\x4e\x3c\x3a\xbd\x21\x83\x4d\x7d\xf0\x1a\xe6\x18\xe0\x48\xb9\xf5\x48\xb6\x7c\x0d\x59\x7f\x7f\x9f\x5d\x45\x60\xb4\x0f\xe1\x36\x6d\x30\xa1\x5f\x15\x25\x3a\xb6\xff\xcc\x58\xd6\xa0\x1b\xa5\xb6\xb1\xa7\xf4\x70\x0b\x0c\xd1\x5d\x6a\x5f\xf3\x83\x62\x21\xb2\xbf\x87\xb6\xd4\x36\xfc\x7e\x3c\x70\xb0\x0b\x22\xf3\x0b\x35\x46\x24\xff\x60\x90\x8e\x97\x11\x19\xe8\xb0\xc1\x7b\x12\x60\x8d\x2d\x31\x01\x4e\x96\x19\x23\xe9\xc0\x83\xfe\xf8\x3e\xec\x17\x1f\x78\x5a\x12\xb6\xc4\x1a\x48\x7b\xd2\x1d\xcb\x22\x81\x5b\x12\x68\xa9\xad\xd8\xec\xd9\xf8\x82\x0f\x54\xf0\xfe\xc4\x1f\x20\xba\x0c\x5f\xf2\x37\x2f\xa8\xaa\xa3\x0a\x16\x7b\xcd\x2d\xdd\x8a\x33\xc9\x91\x82\x7e\xe6\x27\x8c\xff\xc7\xde\x75\xb4\xde\x8f\x73\xe7\xfd\xfb\x29\xc2\x64\x15\x0c\x71\x6f\x33\x24\x60\xdf\xeb\x5e\xaf\xbb\x4d\x36\xee\xbd\x77\x87\xf7\xbb\x87\xfb\x1b\x08\xff\xc9\x2e\xfb\x11\x78\x61\x21\x74\x2c\xe9\x41\xe7\x3c\xb2\xa4\x47\x30\x10\x5f\x09\x9f\x58\x97\x5b\x8a\x0e\xb7\x03\x00\x89\x93\x1a\x15\x01\x79\x03\xb3\x16\xeb\x02\x41\xa7\x47\xbe\x30\x63\x68\x62\x68\xa7\x99\xc1\x46\xe6\x82\xe1\x3b\x15\xbd\x02\x9d\xbb\x8b\xbc\x17\xef\x81\x36\xec\xe5\x6b\x1c\x15\xbd\x89\x90\x13\x8a\x49\x2d\xa9\x52\x59\xb1\xdb\x79\x5e\x66\x5a\x94\x88\xb1\x50\xf1\x24\x42\x33\xf9\xbc\x62\x3a\x49\x81\x42\x5f\xfb\xc7\x6b\xb0\xf5\x96\xbc\x21\x42\xb0\x98\xaf\xbe\x6c\x74\xe6\x20\xa3\x22\x8c\x76\x52\xad\x0d\x00\x43\x01\x29\xa1\xb0\xb0\x7c\xe4\xf1\xaf\xe2\x10\x1b\x80\xc8\xb5\xc1\x13\xca\x2c\x78\x00\xf0\x38\x50\x62\xdd\xf5\xb8\x93\x7d\x6f\x70\x46\x8c\xce\xc1\xe2\x20\x2c\x8e\x36\xc9\x0c\xa0\x97\xd8\xdf\xac\x43\x8c\xf9\x0f\xf1\xa6\x11\x52\x5f\x60\x02\x1f\xe1\x18\x8c\x55\x2b\x0f\x06\x3c\x74\x39\xf6\x31\xbb\x73\x2f\x8c\x01\xa1\x87\x04\x4b\x05\xca\x38\x20\xba\x70\x8f\x0a\xcb\x9c\x82\x67\x1c\x0e\x37\x70\x0a\x48\x1b\x40\xb4\xfb\x39\x1e\x64\x1c\x34\x9a\xa1\x0d\x2b\xde\x7c\xf1\xdf\x66\x6d\x13\x44\xfa\xef\x7b\x81\x32\x47\x53\x5f\xd8\x4e\xae\x86\xf8\x06\x03\x12\x47\x4f\xa0\xa0\x11\x81\x0e\x26\x22\xef\x40\xba\x13\x17\x88\xd4\x45\x75\x0f\xb2\x2f\xa1\x9b\xe3\x7a\x24\x34\x15\xd8\xf3\xf0\xe8\x63\x3a\xde\xa8\xab\xa5\x85\xe6\x08\x21\xf9\xae\xc6\x58\x24\x39\x86\x6a\x42\x40\x47\xef\xb4\xe3\x2d\xd7\x95\x6e\xb5\x18\x09\xa3\xd2\x86\x46\xee\x80\x78\xf6\xbc\xaa\x8c\x96\x1b\x60\x3f\xca\xdb\xfb\x18\x07\x0b\x7e\x52\x89\x0d\x8f\x22\x4f\x8a\x0d\xe5\xf8\xae\x6c\x8d\x3d\x78\x23\xe7\xeb\x1c\x15\x67\xc2\x30\x2e\x38\xab\x59\xbd\x29\x51\x41\xb7\x89\x26\x82\x80\x89\x89\xbc\x3c\xa3\xb0\xaf\xc6\xdb\xb4\x96\xdc\x0a\x33\x33\x38\xfa\x45\x9a\x95\x57\xd3\x1f\x10\xb9\xe4\x85\x5a\xec\xa8\xd7\x9d\xaa\xeb\xf1\x56\x6e\xd2\x17\x11\x0f\x13\x60\x0c\xc8\x02\x8b\xcd\x89\x24\xfa\x22\xdf\x0a\x15\xbb\x9d\x6c\xbd\xd9\x93\xcc\xf7\x00\x21\xa7\x39\x12\x86\x79\x0b\x6d\xb7\x9b\x6e\xfd\xf5\xa3\x4f\x36\x49\xe1\x8c\xd6\x61\x07\x04\xb5\x19\xae\x36\x0c\x60\x67\x6e\xfa\x41\xec\x99\x8f\x66\x47\xed\x99\x0c\x57\x9a\xbc\x6e\xcf\x82\x6f\x20\x5d\x5d\x86\x27\x6e\x2e\x0a\x19\xef\xc6\xa3\x62\x47\x47\x2f\x0d\x5f\x04\xb9\x2b\xfd\xe2\xad\xc4\x1a\xa0\x74\xe4\xe1\x39\xda\x94\x20\x08\x01\x05\xd1\x98\x51\xb8\x12\x54\x9e\x1a\xc2\x1b\x3c\x0c\x91\xb0\x87\x29\x82\xf0\x22\x4f\x14\x3c\xdd\x30\x80\x28\x7f\x48\x64\x80\xd2\xa0\x55\xd3\x58\xe7\x52\x76\x6d\x7f\x28\xd5\x78\xb0\x2f\x4f\x24\xc0\xe3\xaa\x63\x08\xda\x92\x0f\x75\x38\x97\x98\x0f\x8b\x72\x67\xb1\x04\x2d\x11\x4d\xd0\x09\x93\x62\x82\xc4\x80\xfb\x38\x2b\xcd\x0a\x1a\x3a\x9a\x23\xb3\x63\x0f\x6a\x47\x49\x3a\x52\x0c\x24\x50\x15\xe6\x50\xde\x14\xc7\x5b\xa1\x3f\x6e\x1d\xcd\x62\xa0\x18\xd3\xfb\x3e\x84\xfb\x62\x63\x40\x6e\x46\xbe\xdb\xf1\xd5\x13\x58\x9c\xc5\xa5\xab\xaf\x5e\x82\x7a\x05\x72\xb2\x42\x93\x62\xb7\xbb\xaf\xfa\x9e\x43\x8f\x20\x05\x9a\x27\xbe\x22\x31\x58\x87\x40\x80\x5f\xc0\x4a\x50\x2f\xb6\xc6\xc3\x35\x3a\xf2\x17\x44\xda\xd0\xc6\x9a\x62\xd3\x21\x64\xde\x42\x86\x77\x2a\xd3\xac\x94\x5a\x5a\x1d\x2d\x99\x9b\x0f\x6c\xdb\x70\x40\xd9\x2e\x15\xf0\x66\x42\x50\x91\x86\x14\xf5\xee\x3e\x9f\x11\xab\xc4\xf5\x6e\xb5\x39\x21\x80\x62\x7b\xf3\x9c\x72\x4b\x11\xf6\xb3\x47\x6c\xeb\x9f\x90\x67\x4f\xb7\xe1\x45\xd9\x50\x58\x7b\x0f\x96\xdd\xbf\x97\x2b\xd4\x26\xdb\x6a\x1d\x9e\xbe\x37\xbb\x10\x6a\x75\xa0\x82\xea\xc1\x57\x28\xd3\x06\x67\x6c\xc0\xeb\xfa\xb8\x22\x0b\xa4\x6f\xa6\x55\xde\x65\x39\x4a\x2f\x5d\x81\x0a\x58\x91\xf9\x17\x4c\x83\x07\x85\x67\x7b\xcd\xb8\x0f\xef\x39\x2e\x6a\x3e\xd7\x0a\x3b\x8c\x9d\x3a\xdc\x25\x59\xef\x00\xa6\x0b\x97\x3e\x16\x4a\xdc\xc9\xb5\xea\xec\x2d\xc9\xcd\x60\x33\xc4\x06\x60\x3b\x67\x5a\xc7\x39\xee\xbf\x3c\x20\x9f\x53\x43\xb4\x4b\x40\xed\xb2\xbd\x87\x79\xde\x4a\x7d\xef\x86\x0b\x63\x70\x7a\xa7\x9f\x66\x85\x3e\x52\x4f\x7b\x8c\x07\x2c\x35\x81\x66\x8f\xcf\x01\x0b\x8d\xb5\x3f\x2b\xab\xe4\x43\x42\xcf\xa7\xe6\x8c\x84\x5f\x62\xcb\x86\xfb\x19\x9a\xca\x7c\x4d\xd7\x68\x98\xf0\x9c\xd4\x74\x10\x66\xbc\x27\x97\x28\xda\x54\x9c\x8d\x66\x24\x8d\x4e\x18\x1c\x76\x29\xb5\x56\x36\x97\x27\x25\x0d\x73\x28\x90\xc4\x68\x78\xfb\x76\x3b\xb9\x90\xcf\x23\x5b\x62\xa4\x35\xc4\xf7\xb5\x12\x89\x5c\x42\xdc\x94\xd8\x05\x7a\xa5\x01\x4c\x83\xf4\x76\xe2\xb7\x59\xb6\xef\x58\x17\x01\xfb\xd3\xb9\x87\x0d\x00\x13\xed\xa8\x12\xbf\x27\x1b\x81\x51\x69\x61\xa0\xa8\x7e\xa7\x15\xa3\x00\xb9\xd3\xe2\xaa\x55\x42\xa9\x2a\xb0\x65\x72\xa7\x54\xcf\x57\xa1\xb7\x78\x33\xa2\xe4\x6c\x73\x49\x28\xbd\x46\x82\x0d\x45\x66\x7b\x1b\xe4\x5e\x20\xa0\xac\x4a\x93\x98\xee\x01\x44\xca\xef\x06\x03\x12\x73\x10\xb4\x05\xe7\x5b\x8f\xbf\xbe\xfe\xb1\x84\x0a\x23\x96\x71\x0a\x88\x25\xb6\x5f\xa9\xa2\x50\xa1\xc7\x18\x1c\xe7\xc2\xc0\x6e\x05\xbc\x51\x8d\x91\xad\x36\x68\x53\x46\x49\x9a\xe3\x63\xa6\xee\xe5\xdc\xac\xce\x9b\x48\xf4\x6f\xf4\xff\x62\x3c\x42\x52\x81\x57\x8d\x14\xcf\x8a\x14\xe6\xa7\xa6\xf3\x7d\x38\x86\x77\x17\xd3\x7d\xd4\x47\x74\xfe\x78\x33\x94\x1f\xc3\x9e\xf4\xf8\x20\xdb\xb4\xcd\xb3\x67\x48\xd5\xd2\x6e\x55\xea\xd2\x2b\xf5\x38\x39\xd5\x49\xee\x9f\xe7\x4c\xa3\xc8\xf6\x1b\x6b\x2e\x4c\x94\x32\xde\xe5\x4c\xa4\x39\x4c\x44\x7d\xd8\x13\xc0\xee\xde\x40\x10\x23\xfa\x4c\xec\xea\x8c\xbd\xab\x73\xac\xce\x03\xb2\xdb\x4d\x5d\x30\xab\x78\x2f\xd3\x59\xa6\x41\x61\x28\xf0\xb6\xbc\x11\xe1\xcd\x0e\x25\x56\x2b\x74\x23\xf6\x90\x68\xd1\x81\xcb\xb3\x23\x94\x28\xfc\x0c\x1c\x4c\x51\x9a\x84\x84\x08\x65\xa7\xdf\x40\x16\x1c\xd7\x39\xba\xae\xc8\x55\x89\xff\xac\x2d\xcd\xca\xbd\xfd\xf0\x06\xea\xd9\xf6\x8d\xf0\x15\x55\x88\x57\xba\x10\x68\x57\x9c\x9f\xd7\xe8\x67\xc6\x90\x21\x22\x20\x57\x09\x42\x1d\xc3\x25\x60\x19\x58\xec\x50\xaa\x8b\x5c\x25\xd9\xc7\xe1\x8a\xc0\xb1\x10\xe8\xac\x0b\xf9\xe7\xcc\xa8\x7a\x55\xc3\x46\xba\xb5\x9a\x10\x2b\x0f\x20\xf3\xc5\x03\x7a\x72\x3e\xbb\x48\xb8\xa8\xcf\x2b\x60\x42\x33\x45\x55\x1b\xde\x2c\x4e\xf7\x8e\x05\xa2\x72\x93\x6f\xa5\xed\x3b\x5f\xe3\x40\x31\xdc\xa9\x0a\xbd\xca\x98\x35\x51\xf2\xdb\x37\xd7\x9a\x08\xd7\x07\xa0\x65\xdf\xf3\x02\x18\xc6\xdd\x25\x8c\xb2\x57\x40\xd2\x40\xe3\x62\x2a\x47\xf4\xcb\x8c\x16\x13\xb2\x06\xd9\x49\xe8\xdd\x0c\xc7\xb7\x51\xe6\x5a\x03\xd2\x66\xec\x0f\xd3\x16\x6f\xc1\xb7\x9f\x8a\x03\x25\x36\xef\xe1\x2b\xad\x68\x10\x27\x7e\xc8\xec\xc6\x6d\x8c\xce\x4d\x17\xd6\x1c\xc3\x79\x9c\x6a\x2c\x44\x90\xda\x8d\xa2\xcb\xa8\xe5\x30\x87\x07\x50\xaf\x5c\xb9\xb5\x46\x74\x32\xa2\x0a\xdc\x4e\xf6\x5d\x58\x77\x3c\x2f\xf0\xa0\x8c\xbb\xb6\xe7\x85\x6e\xaa\x72\x6f\x89\xd7\x41\x77\x88\x83\x77\xfb\x68\x8f\x36\x69\x85\x48\xef\xe0\x8f\x1e\x6c\x27\x4d\x02\xb6\x28\x37\xb5\x70\x97\x2d\x21\xe2\xce\xdb\xc3\xc9\xf3\x96\xe7\x65\x3e\x17\xb7\x4a\x05\xe9\x8e\xfb\x68\xaa\x7d\x2e\x51\xa4\x5d\x50\x26\x66\x37\x1d\x3c\x17\x28\x0e\xe3\x44\x6b\xe4\x86\x10\x97\xac\xbe\x38\xf7\x75\x1c\x30\xf9\x80\xd2\x93\xa2\x0a\xd2\x2e\xf1\x05\x4d\xaa\x4d\xe8\x7d\x65\x3a\x24\x6f\xf6\x0a\xd3\x7d\xbd\xbd\xcf\x6e\x4b\x6c\x7c\xa1\xd6\x27\x3d\x9e\x38\x7a\x82\x1b\xaf\xfa\x94\xae\x09\x42\xe5\x27\x25\x3c\xba\xd3\x84\x37\x1a\xe6\xba\x20\xe1\xa3\x06\x67\xec\xc7\xe5\xa9\x42\x7c\x6e\x84\x4c\x27\x12\xd6\xb9\xb1\x57\xae\x9d\x3b\x57\xb5\x0d\x84\x9c\x48\x9a\x74\x69\x14\x65\x1d\x5f\x65\x3c\xc7\xfd\x3c\x03\x45\xaf\x7d\xf9\xb5\x6a\x43\xdf\x21\x39\xd6\x92\x72\xaa\x54\x57\x1d\xa8\x96\x1a\xe9\x32\x73\x99\x75\xda\x9f\x3b\x81\xeb\x71\x52\x90\x6d\x89\xe1\x2d\xf6\x97\x68\x87\x88\x58\xff\x5c\xfb\x8b\xc5\x66\xb9\x4e\x06\x04\xa6\x83\x64\x43\xa8\xe0\x2e\x04\x64\xa0\x97\x18\xd9\x60\x92\x1e\xd8\x2b\x4b\x7d\x2e\x75\x3a\x2b\xf0\x60\x1a\x07\xe3\x2c\x86\xf3\xc3\x1c\x09\x2d\x32\xfc\xa6\xd2\x8e\x6e\xeb\x1f\x6f\xee\x40\xb0\x18\x50\x92\x8e\xb5\x7b\xb3\x59\x8a\x48\x6c\xaa\x38\xdc\x19\x0f\x60\xc5\xef\xa6\xf8\xe3\x0a\x80\xcf\x5f\xbe\x5c\x45\x81\xe7\xa5\x95\x76\x38\x6b\xe9\x7c\x2e\xfd\xfd\x79\x34\xd2\x38\x57\xf5\x75\x6f\x53\x82\x33\xe5\xae\x35\x28\xb5\xc9\xcf\x41\x7e\x19\xcd\x86\x90\x79\x61\x06\x33\x1f\xee\xef\x91\x10\x2a\x28\x23\xad\xd5\x33\x87\xa7\x82\xc8\xcc\xb7\x2e\x7b\x18\x99\x96\xd5\xeb\xb5\x68\xfc\xc7\x5b\xd1\xa5\xa3\x41\xbe\x82\xb6\xd6\x79\xdf\x1f\xac\xae\xc7\x5e\xfd\xd2\xb3\x14\x00\x9d\x09\x4e\xd6\x20\xda\xc6\x17\xc3\xbc\xa5\xfa\x47\x6b\xb7\xc6\x76\xa9\x40\x45\xfa\x06\x33\x88\x06\xb8\x95\x5c\x88\xbc\x83\x49\x5a\x68\x72\x0c\xdc\xe9\x9f\x73\x56\x0a\x6a\x9a\xf7\x80\xcd\x4a\xed\x93\xd9\x1e\x90\x34\xa2\x3a\x61\x5f\x55\x90\x53\xd4\xd0\xa6\x16\x07\x44\xe6\xc7\xd7\x13\x03\x47\x43\xce\x3c\xc6\x5e\xda\x9b\x04\x1c\xa7\xc5\x0d\x8b\x33\xa5\x0b\x17\xad\x86\x50\x9b\x3e\x11\xd5\x25\x7b\x8d\xd9\x0b\xc8\xf2\x15\x79\xf7\x68\xbc\xf5\xb0\x78\x26\x16\xc7\x30\xef\xf9\x1b\x47\xa3\x2a\xfc\xd0\x20\x41\xe7\x14\x50\x8f\xf7\xba\x28\x40\x07\x9e\xa5\xc2\x8e\x82\x31\x7c\x7d\x63\x96\x1f\xe9\xf4\x39\xfa\x9e\x61\x18\x46\xab\x1f\x5a\xb5\x21\x19\x03\x0a\x8b\xf3\x78\x33\x00\x91\x46\x84\x71\xaf\xb3\x5c\xcf\x78\x36\x32\x5b\x49\x23\x48\x46\x48\x13\x7f\xd6\x14\xde\x1e\x4d\x90\xb8\x60\x8a\x0d\xa2\xe4\xe6\x07\xd3\x26\xf9\x7a\x22\xd2\xc4\xe9\x9f\xc3\xbb\x5d\x8c\xe7\x7b\x90\x1c\x8a\x97\x62\x02\x63\x26\x2c\x60\x56\x60\x0b\x95\x6d\x9a\x08\x17\xe4\x89\xd6\x17\x59\x0b\x0c\xd0\x4a\xbd\x2e\x21\x35\x47\x14\x5a\x52\xdc\x65\x38\xd1\x8a\x24\x3a\x02\x5a\x63\x1b\xa8\x3f\x4b\xf9\x47\x89\xbd\x4f\xf6\x1e\x97\x9b\x02\x8d\xde\x91\x21\xa0\x30\x45\xf4\x06\x44\x5e\xb0\xca\x78\x7b\x5a\x98\xfd\xa4\xe2\x17\x86\xec\x99\x0a\xd5\xe2\x6a\x09\x7b\x16\x1a\x5f\xa6\x0c\x23\xbd\xc0\x99\xe8\xa7\x3a\x04\xcc\x06\xdb\xf5\xa2\x40\x67\x38\xdd\xb1\x8e\xba\xf4\x6e\xde\xa7\xc9\xf7\x86\x88\x2e\x94\x65\xfa\x91\x1e\xd2\x17\x1b\x29\x1e\xa8\xe8\xce\x25\x93\x64\x59\x0d\x7b\xbd\x19\x1e\x9c\xa0\x73\x53\xa4\xe0\x74\x0b\x36\x0d\x32\x2f\xc0\xbc\x1e\x0d\xd5\x7d\x32\x9b\xd0\x64\xd2\x7b\x30\x36\x9a\xa9\x29\x99\x95\x31\x04\x16\x04\x09\xef\x40\x10\x32\x3b\x02\x2a\x11\xae\xb4\x10\xe5\xdb\xed\xa6\xd9\xef\x21\x7f\x31\x55\xd6\xf5\x78\x4f\xfb\xf3\xe0\x3c\xb4\x2e\xf6\xb9\xa9\x36\xb4\xa9\x36\x7d\xaf\xcc\xe7\x75\xaf\x8b\xfc\x35\x65\x51\x80\xca\xdf\x64\x8d\xc1\xba\xe5\xf6\xf6\x53\x79\xbc\xee\xac\xdf\x98\x46\x40\xfd\x45\x20\x51\x77\xe6\x3f\xb5\x38\xb2\x0c\xf3\x62\x44\x5c\x70\x86\x02\x25\xe8\x7c\x47\x13\x9a\xea\x65\x3b\xec\x0e\x14\x49\x86\x08\xd6\x1f\x32\xc3\xd4\x29\x5f\x66\x62\x5b\xe2\x3e\xea\x63\x64\x5b\x22\x1f\xee\x42\xc4\x78\x0b\x89\xf7\x31\x61\xcf\xf3\x62\x3a\x3f\xc6\x5b\xad\xa1\x4d\xf9\x06\x1e\xb6\xf9\x60\x58\xa8\xaf\x08\x79\xf7\xdd\x14\x6f\x4d\x88\xc0\x8d\x8b\xa8\x5d\x8d\xae\x3e\x99\x09\x7d\x75\x32\xf4\x2a\x62\x80\x02\xe6\x5b\x06\xd0\x39\x5e\x50\x74\x0f\xc7\x7e\x37\xf5\x56\x1f\xf5\x3f\xbf\xff\xea\x10\xe6\xa8\xf3\x3b\x8b\xc2\xb1\xa0\x7b\x6c\xc9\x30\x2c\x87\xcb\x16\xc7\xbb\x59\x10\xc0\xb4\x69\xc7\x42\xd5\xc2\xba\x3f\xcd\xb1\xde\xb8\xb7\x5e\x4a\x02\x0c\xb1\x8c\x78\x15\x79\xd0\xe1\x9f\x56\x7d\x21\x94\xdd\xe2\xc6\x17\xf4\x36\x1a\xc7\xdd\x04\x75\x8d\xf4\x25\x01\x88\xde\x30\xa3\xd0\x39\x9f\x4b\x73\x5c\xe4\x8b\xa2\x35\x89\x6f\xbd\x09\xcf\x4f\xf1\x85\x71\xd1\xc1\xb2\xed\x76\xb3\xdd\x4e\x82\xd5\x47\x82\x35\x4c\x84\x3f\x4c\xdf\xef\xfa\xd6\xc6\x7e\x3e\x82\xb7\x80\x11\x65\x76\x74\xe0\x91\xf9\xf5\xc9\x4d\xa1\xf9\x40\xb1\x8e\xe0\x2b\xa2\x3b\x1f\x44\x73\x38\x44\xaf\x42\x89\x7d\x95\xe5\xf8\xc2\xb0\x5d\xad\x27\xcd\xe1\x32\x00\xcc\x7f\x94\xd8\xe2\xbc\x8b\x08\x7b\xc0\x01\xa7\xb5\x15\x90\x9d\x89\x7d\x11\xae\x36\xf9\x51\xf0\xbb\xd6\xa4\xc7\xeb\xd8\xe7\xb7\x04\x83\x56\x93\x31\xb6\xaa\x90\x6f\x0a\x54\x6f\x6a\xd0\x80\x22\x7d\x68\x10\x3c\x4e\x5c\x7f\xa8\x43\x7d\x52\xd4\xbb\x3f\x76\x57\xe0\xe6\x8f\x74\xa4\xeb\xe1\x79\x11\x14\xe9\xbb\x4c\xc5\x11\x18\x46\xe5\x55\xfe\x08\x57\x2b\x8d\x84\x83\xba\xc7\x32\xb2\x57\xba\xaf\xf2\x67\xdf\x9e\x52\xcf\xb3\xdf\xcd\x71\x93\x7c\x92\x8d\x65\x66\x4c\xe8\xbb\x2e\x7e\xb3\xdd\xac\x67\xe2\xb7\x7f\x9d\x0f\x75\x32\x8c\xc4\x49\x2d\xd7\x7b\x7d\x24\x3e\x04\xfd\x6a\x07\xe3\x4e\x49\xf9\x59\x41\x95\x04\xc6\x55\x7d\x9d\x2b\xcf\xba\x6e\x27\xf5\xfc\x94\x7b\xdd\x8f\xc3\x5b\xdb\x76\x9a\x63\xa1\x26\x82\x99\xb0\x5b\x4f\xcc\x9b\x3f\x17\x40\x65\x1b\xda\xde\x2e\xa4\xff\x09\x57\x68\x73\xbe\x8f\x0b\xeb\x89\xaf\xf9\x55\x0d\xe9\xce\xc7\xe5\x33\xf3\x8d\x71\xfc\x77\x0c\xee\xce\xf2\xbc\x3c\x68\x71\xc1\xea\xa2\xef\x80\x56\xae\xf7\x0d\xe0\xe0\xc0\x1b\x5e\xed\xc6\x49\x03\x1f\xf9\x51\x17\x06\x66\x5e\x7c\xab\xcf\x2c\x24\xd9\x17\x5c\x47\x13\x60\xcb\xaf\xcd\x73\xf9\x77\x49\x81\x83\xa2\x0c\xbe\xeb\x79\x96\xfb\x6d\xfb\xcf\xdd\x2a\x1e\x9b\x05\x1e\x9c\xcd\x2f\x7c\x85\x14\x96\x3d\xa1\x58\xcf\x44\x0b\x12\x1a\x6f\xfe\x3a\xa2\x26\x86\xc8\x4f\x98\x28\x37\xb5\x3f\xeb\xa2\xce\x56\x07\xdf\xe9\x22\x3f\x26\x90\xfa\xbc\xe5\x2b\xd6\xcb\xed\xa4\x4e\xcc\x28\x6e\xeb\xa2\xd8\xe3\xa4\xb9\xff\x73\x83\xe2\xbc\x2c\xd7\x61\xe2\xe0\x8b\x7e\xab\xdf\xd7\x56\x85\x8d\x56\x86\xb3\x10\x11\xde\xd6\x8a\x40\x3d\xea\xae\xbc\xd0\x58\x25\x94\x10\xf9\xb0\xc4\xfe\x34\x4b\xab\xc4\x50\x65\xd2\x60\x27\xf3\xbf\xe9\xe4\x14\x78\x4b\x02\x6c\x60\x34\x06\xc5\x8a\x2b\xfd\x30\xbf\xa4\xd7\xc7\x7a\x6e\x8e\xf9\x4b\x7a\xb7\x9c\x96\x88\xcc\xaf\xe5\x38\x26\x0f\x83\x33\xfd\x4b\x31\xe3\x63\x5d\x6b\xca\xfe\x9a\xf5\x61\xf1\xaa\x60\xcf\xbf\x14\xc3\x59\x51\xb8\xce\x5f\x4d\xb0\x8c\xd8\xf3\x94\xf8\x7f\x6d\xa6\x7f\xdb\xfc\xdb\xe6\xff\xc3\xe6\x01\x15\x0b\x50\x75\x81\xb1\x89\x3d\xd2\xfe\xe4\xda\xae\x67\x58\x0a\xfe\x0a\x25\xe9\x3f\x7e\xfb\xb7\x3f\xfe\xf1\xcf\x7f\xfc\x7b\xb2\xe4\x71\x96\x2e\x7b\x9f\xfc\x67\x57\x03\x5d\xfd\x7b\x92\x17\xe3\x92\xff\x77\x3a\x0e\x5b\x3e\x6c\xbf\xff\x06\xfe\x17\x04\xc5\xd0\x6f\x7f\x4c\x71\x96\xd5\x43\xf9\x3b\xf4\x2f\xf8\x74\xfd\x91\x8e\xdd\xb8\xfc\xfe\xaf\x69\x9a\xfe\xf1\xcf\xff\x09\x00\x00\xff\xff\xaf\xa5\x1a\xb1\x3d\x07\x02\x00") - -func pagesAssetsStylesContainersCssBytes() ([]byte, error) { - return bindataRead( - _pagesAssetsStylesContainersCss, - "pages/assets/styles/containers.css", - ) -} - -func pagesAssetsStylesContainersCss() (*asset, error) { - bytes, err := pagesAssetsStylesContainersCssBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "pages/assets/styles/containers.css", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -// Asset loads and returns the asset for the given name. -// It returns an error if the asset could not be found or -// could not be loaded. -func Asset(name string) ([]byte, error) { - cannonicalName := strings.Replace(name, "\\", "/", -1) - if f, ok := _bindata[cannonicalName]; ok { - a, err := f() - if err != nil { - return nil, fmt.Errorf("Asset %s can't read by error: %v", name, err) - } - return a.bytes, nil - } - return nil, fmt.Errorf("Asset %s not found", name) -} - -// MustAsset is like Asset but panics when Asset would return an error. -// It simplifies safe initialization of global variables. -func MustAsset(name string) []byte { - a, err := Asset(name) - if err != nil { - panic("asset: Asset(" + name + "): " + err.Error()) - } - - return a -} - -// AssetInfo loads and returns the asset info for the given name. -// It returns an error if the asset could not be found or -// could not be loaded. -func AssetInfo(name string) (os.FileInfo, error) { - cannonicalName := strings.Replace(name, "\\", "/", -1) - if f, ok := _bindata[cannonicalName]; ok { - a, err := f() - if err != nil { - return nil, fmt.Errorf("AssetInfo %s can't read by error: %v", name, err) - } - return a.info, nil - } - return nil, fmt.Errorf("AssetInfo %s not found", name) -} - -// AssetNames returns the names of the assets. -func AssetNames() []string { - names := make([]string, 0, len(_bindata)) - for name := range _bindata { - names = append(names, name) - } - return names -} - -// _bindata is a table, holding each asset generator, mapped to its name. -var _bindata = map[string]func() (*asset, error){ - "pages/assets/js/bootstrap-4.0.0-beta.2.min.js": pagesAssetsJsBootstrap400Beta2MinJs, - "pages/assets/js/containers.js": pagesAssetsJsContainersJs, - "pages/assets/js/gcharts.js": pagesAssetsJsGchartsJs, - "pages/assets/js/google-jsapi.js": pagesAssetsJsGoogleJsapiJs, - "pages/assets/js/jquery-3.0.0.min.js": pagesAssetsJsJquery300MinJs, - "pages/assets/js/popper.min.js": pagesAssetsJsPopperMinJs, - "pages/assets/styles/bootstrap-4.0.0-beta.2.min.css": pagesAssetsStylesBootstrap400Beta2MinCss, - "pages/assets/styles/bootstrap-theme-3.1.1.min.css": pagesAssetsStylesBootstrapTheme311MinCss, - "pages/assets/styles/containers.css": pagesAssetsStylesContainersCss, -} - -// AssetDir returns the file names below a certain -// directory embedded in the file by go-bindata. -// For example if you run go-bindata on data/... and data contains the -// following hierarchy: -// data/ -// foo.txt -// img/ -// a.png -// b.png -// then AssetDir("data") would return []string{"foo.txt", "img"} -// AssetDir("data/img") would return []string{"a.png", "b.png"} -// AssetDir("foo.txt") and AssetDir("notexist") would return an error -// AssetDir("") will return []string{"data"}. -func AssetDir(name string) ([]string, error) { - node := _bintree - if len(name) != 0 { - cannonicalName := strings.Replace(name, "\\", "/", -1) - pathList := strings.Split(cannonicalName, "/") - for _, p := range pathList { - node = node.Children[p] - if node == nil { - return nil, fmt.Errorf("Asset %s not found", name) - } - } - } - if node.Func != nil { - return nil, fmt.Errorf("Asset %s not found", name) - } - rv := make([]string, 0, len(node.Children)) - for childName := range node.Children { - rv = append(rv, childName) - } - return rv, nil -} - -type bintree struct { - Func func() (*asset, error) - Children map[string]*bintree -} - -var _bintree = &bintree{nil, map[string]*bintree{ - "pages": {nil, map[string]*bintree{ - "assets": {nil, map[string]*bintree{ - "js": {nil, map[string]*bintree{ - "bootstrap-4.0.0-beta.2.min.js": {pagesAssetsJsBootstrap400Beta2MinJs, map[string]*bintree{}}, - "containers.js": {pagesAssetsJsContainersJs, map[string]*bintree{}}, - "gcharts.js": {pagesAssetsJsGchartsJs, map[string]*bintree{}}, - "google-jsapi.js": {pagesAssetsJsGoogleJsapiJs, map[string]*bintree{}}, - "jquery-3.0.0.min.js": {pagesAssetsJsJquery300MinJs, map[string]*bintree{}}, - "popper.min.js": {pagesAssetsJsPopperMinJs, map[string]*bintree{}}, - }}, - "styles": {nil, map[string]*bintree{ - "bootstrap-4.0.0-beta.2.min.css": {pagesAssetsStylesBootstrap400Beta2MinCss, map[string]*bintree{}}, - "bootstrap-theme-3.1.1.min.css": {pagesAssetsStylesBootstrapTheme311MinCss, map[string]*bintree{}}, - "containers.css": {pagesAssetsStylesContainersCss, map[string]*bintree{}}, - }}, - }}, - }}, -}} - -// RestoreAsset restores an asset under the given directory -func RestoreAsset(dir, name string) error { - data, err := Asset(name) - if err != nil { - return err - } - info, err := AssetInfo(name) - if err != nil { - return err - } - err = os.MkdirAll(_filePath(dir, filepath.Dir(name)), os.FileMode(0755)) - if err != nil { - return err - } - err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode()) - if err != nil { - return err - } - err = os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime()) - if err != nil { - return err - } - return nil -} - -// RestoreAssets restores an asset under the given directory recursively -func RestoreAssets(dir, name string) error { - children, err := AssetDir(name) - // File - if err != nil { - return RestoreAsset(dir, name) - } - // Dir - for _, child := range children { - err = RestoreAssets(dir, filepath.Join(name, child)) - if err != nil { - return err - } - } - return nil -} - -func _filePath(dir, name string) string { - cannonicalName := strings.Replace(name, "\\", "/", -1) - return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...) -} diff --git a/cluster-autoscaler/vendor/github.com/google/cadvisor/pages/static/static.go b/cluster-autoscaler/vendor/github.com/google/cadvisor/pages/static/static.go deleted file mode 100644 index 21a3ed4bc9..0000000000 --- a/cluster-autoscaler/vendor/github.com/google/cadvisor/pages/static/static.go +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright 2014 Google Inc. 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. - -// Handler for /static content. - -package static - -import ( - "fmt" - "mime" - "net/http" - "net/url" - "path" - - "github.com/golang/glog" -) - -const StaticResource = "/static/" - -var popper, _ = Asset("pages/assets/js/popper.min.js") -var bootstrapJs, _ = Asset("pages/assets/js/bootstrap-4.0.0-beta.2.min.js") -var containersJs, _ = Asset("pages/assets/js/containers.js") -var gchartsJs, _ = Asset("pages/assets/js/gcharts.js") -var googleJsapiJs, _ = Asset("pages/assets/js/google-jsapi.js") -var jqueryJs, _ = Asset("pages/assets/js/jquery-3.0.0.min.js") - -var bootstrapCss, _ = Asset("pages/assets/styles/bootstrap-4.0.0-beta.2.min.css") -var bootstrapThemeCss, _ = Asset("pages/assets/styles/bootstrap-theme-3.1.1.min.css") -var containersCss, _ = Asset("pages/assets/styles/containers.css") - -var staticFiles = map[string][]byte{ - "popper.min.js": popper, - "bootstrap-4.0.0-beta.2.min.css": bootstrapCss, - "bootstrap-4.0.0-beta.2.min.js": bootstrapJs, - "bootstrap-theme-3.1.1.min.css": bootstrapThemeCss, - "containers.css": containersCss, - "containers.js": containersJs, - "gcharts.js": gchartsJs, - "google-jsapi.js": googleJsapiJs, - "jquery-3.0.0.min.js": jqueryJs, -} - -func HandleRequest(w http.ResponseWriter, u *url.URL) { - if len(u.Path) <= len(StaticResource) { - http.Error(w, fmt.Sprintf("unknown static resource %q", u.Path), http.StatusNotFound) - return - } - - // Get the static content if it exists. - resource := u.Path[len(StaticResource):] - content, ok := staticFiles[resource] - if !ok { - http.Error(w, fmt.Sprintf("unknown static resource %q", u.Path), http.StatusNotFound) - return - } - - // Set Content-Type if we were able to detect it. - contentType := mime.TypeByExtension(path.Ext(resource)) - if contentType != "" { - w.Header().Set("Content-Type", contentType) - } - - if _, err := w.Write(content); err != nil { - glog.Errorf("Failed to write response: %v", err) - } -} diff --git a/cluster-autoscaler/vendor/github.com/google/cadvisor/pages/templates.go b/cluster-autoscaler/vendor/github.com/google/cadvisor/pages/templates.go deleted file mode 100644 index b4821d4ae4..0000000000 --- a/cluster-autoscaler/vendor/github.com/google/cadvisor/pages/templates.go +++ /dev/null @@ -1,256 +0,0 @@ -// Copyright 2018 Google Inc. 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. -// generated by build/assets.sh; DO NOT EDIT - -// Code generated by go-bindata. -// sources: -// pages/assets/html/containers.html -// DO NOT EDIT! - -package pages - -import ( - "bytes" - "compress/gzip" - "fmt" - "io" - "io/ioutil" - "os" - "path/filepath" - "strings" - "time" -) - -func bindataRead(data []byte, name string) ([]byte, error) { - gz, err := gzip.NewReader(bytes.NewBuffer(data)) - if err != nil { - return nil, fmt.Errorf("Read %q: %v", name, err) - } - - var buf bytes.Buffer - _, err = io.Copy(&buf, gz) - clErr := gz.Close() - - if err != nil { - return nil, fmt.Errorf("Read %q: %v", name, err) - } - if clErr != nil { - return nil, err - } - - return buf.Bytes(), nil -} - -type asset struct { - bytes []byte - info os.FileInfo -} - -type bindataFileInfo struct { - name string - size int64 - mode os.FileMode - modTime time.Time -} - -func (fi bindataFileInfo) Name() string { - return fi.name -} -func (fi bindataFileInfo) Size() int64 { - return fi.size -} -func (fi bindataFileInfo) Mode() os.FileMode { - return fi.mode -} -func (fi bindataFileInfo) ModTime() time.Time { - return fi.modTime -} -func (fi bindataFileInfo) IsDir() bool { - return false -} -func (fi bindataFileInfo) Sys() interface{} { - return nil -} - -var _pagesAssetsHtmlContainersHtml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x5a\xcd\x72\xdb\x38\x12\x3e\x4b\x4f\xd1\xc3\xda\xc3\x6c\x55\x48\xd9\x89\x2f\x9b\x95\x55\xa5\x51\x92\x1d\xed\x38\x76\xca\xb2\x67\x6a\x8e\x20\xd9\x22\x11\x43\x04\x06\x00\x25\x6b\x5d\x7e\xf7\x2d\x00\xa4\xc4\x5f\x29\xfe\xa9\x64\x74\xb1\x44\xa0\xbb\xbf\xfe\xba\x1b\x68\x10\x1e\xff\xe4\xfb\x43\x80\x19\x17\x5b\x49\x93\x54\xc3\xdb\x93\xd3\x33\xf8\x0f\xe7\x09\x43\x98\x67\x51\x00\x53\xc6\xe0\xda\x0c\x29\xb8\x46\x85\x72\x8d\x71\x30\x1c\x02\x5c\xd0\x08\x33\x85\x31\xe4\x59\x8c\x12\x74\x8a\x30\x15\x24\x4a\xb1\x1c\x79\x03\xbf\xa3\x54\x94\x67\xf0\x36\x38\x81\x9f\xcd\x04\xaf\x18\xf2\xfe\xf9\xef\x21\xc0\x96\xe7\xb0\x22\x5b\xc8\xb8\x86\x5c\x21\xe8\x94\x2a\x58\x52\x86\x80\xf7\x11\x0a\x0d\x34\x83\x88\xaf\x04\xa3\x24\x8b\x10\x36\x54\xa7\xd6\x4c\xa1\x24\x18\x02\xfc\x59\xa8\xe0\xa1\x26\x34\x03\x02\x11\x17\x5b\xe0\xcb\xea\x3c\x20\xda\xe0\x35\x9f\x54\x6b\xf1\x7e\x34\xda\x6c\x36\x01\xb1\x58\x03\x2e\x93\x11\x73\xf3\xd4\xe8\x62\x3e\xfb\x78\xb9\xf8\xe8\xbf\x0d\x4e\x8c\xc4\x6d\xc6\x50\x29\x90\xf8\x57\x4e\x25\xc6\x10\x6e\x81\x08\xc1\x68\x44\x42\x86\xc0\xc8\x06\xb8\x04\x92\x48\xc4\x18\x34\x37\x68\x37\x92\x6a\x9a\x25\x6f\x40\xf1\xa5\xde\x10\x89\x43\x80\x98\x2a\x2d\x69\x98\xeb\x1a\x55\x25\x36\xaa\x6a\x13\x78\x06\x24\x03\x6f\xba\x80\xf9\xc2\x83\x5f\xa6\x8b\xf9\xe2\xcd\x10\xe0\x8f\xf9\xcd\xaf\x57\xb7\x37\xf0\xc7\xf4\xfa\x7a\x7a\x79\x33\xff\xb8\x80\xab\x6b\x98\x5d\x5d\x7e\x98\xdf\xcc\xaf\x2e\x17\x70\xf5\x09\xa6\x97\x7f\xc2\x6f\xf3\xcb\x0f\x6f\x00\xa9\x4e\x51\x02\xde\x0b\x69\xf0\x73\x09\xd4\x90\x68\xe2\x06\xb0\x40\xac\x01\x58\x72\x07\x48\x09\x8c\xe8\x92\x46\xc0\x48\x96\xe4\x24\x41\x48\xf8\x1a\x65\x46\xb3\x04\x04\xca\x15\x55\x26\x94\x0a\x48\x16\x0f\x01\x18\x5d\x51\x4d\xb4\x7d\xd2\x72\x2a\x18\xfa\xfe\x64\x38\x1c\xa7\x7a\xc5\x26\x43\x80\x71\x8a\x24\x9e\xd8\x10\x8c\x35\xd5\x0c\x27\xd1\x34\x5e\x53\xc5\x25\xf8\xf0\xf0\x10\x7c\xa0\x4a\x30\xb2\xbd\x24\x2b\x7c\x7c\x1c\x8f\xdc\x14\x37\x5d\x45\x92\x0a\x0d\x4a\x46\xe7\xde\xc3\x43\x70\xcd\xb9\x7e\x7c\x54\xc6\x72\x34\x12\x5c\x08\x94\xc1\x8a\x66\xc1\x57\xe5\x4d\xc6\x23\x37\xb9\x90\xfc\xc9\xf7\xe1\x82\x68\x54\xda\xe6\x10\x65\x18\x1b\xec\xb0\xa2\x19\x5d\x52\x8c\x61\xb6\x58\x80\xc1\x69\x67\x33\x9a\xdd\x81\x44\x76\xee\x29\xbd\x65\xa8\x52\x44\xed\x41\x2a\x71\xd9\xb6\x1b\x72\xae\x95\x96\x44\xf8\x67\xc1\x49\x70\xe2\x87\xa8\x49\xf0\xd6\xe2\x88\x94\xf2\x26\xc3\x3d\x80\x2b\x61\x28\x22\xcc\xb0\xb3\xc2\x97\x9a\xb3\x4a\xfc\x77\xc1\x69\x70\xda\xb2\xf6\x14\x8d\x11\xcf\x4c\xb5\xa0\x54\x2d\xc0\x07\x19\xfb\x2f\x59\x93\x85\x0b\xc8\xce\x93\x43\x01\xfa\xfa\x57\x8e\x72\xeb\xbf\x33\x2c\xf5\x85\xe9\x90\xfc\x01\xa2\xfb\x35\xe9\xad\xc0\x73\x4f\xe3\xbd\x1e\x7d\x25\x6b\xe2\x9e\x7a\xdd\x06\x12\xbb\xcc\xf9\x5f\x15\x11\xb4\xa1\xf2\xd9\x3a\x2b\xe4\xbe\x12\xc8\x28\x25\x52\xb7\xb5\x8d\x47\x65\x59\x8d\x43\x1e\x6f\x0b\x03\x31\x5d\x43\xc4\x88\x52\xe7\xde\x0e\x89\xcb\x3e\x5f\xa5\x7c\x13\x11\x85\x1e\x4c\x8a\xe5\x70\x4c\x9a\x19\xe2\xed\x85\x99\xaf\x56\xfe\xe9\x5b\x0f\x68\x7c\xee\x31\x9e\x70\x6f\x27\x36\x22\xbb\xaf\x35\x7b\xa5\xc8\x64\x38\xa8\x0e\x08\x92\xa0\x6f\xc0\xa2\x34\x43\x66\x41\x38\x9d\xb4\xeb\x3e\x3d\x35\x72\xa3\x98\xae\xcd\x5f\xce\x4a\xf1\x50\x22\x89\x23\x99\xaf\x42\x27\xfd\xf0\x20\x49\x96\x20\xfc\x43\x10\x89\x99\x9e\xed\xdc\x7c\x7f\x0e\xc1\x97\xfa\x33\xf5\xf8\x68\x0d\x32\x3a\xa9\x38\xdb\x94\x0c\x2e\x68\x76\xf7\xf8\xe8\x4d\x3a\x86\x6e\xf0\x5e\x1b\x74\x64\x32\x1e\x31\x5a\x00\xc0\x2c\x36\x8a\xc7\x23\xce\xf6\xa4\x58\xe0\xee\xc7\xc3\x03\x5d\x42\x30\x57\x8e\xd4\x23\x5c\x41\xf1\x19\xa7\x67\x7b\x90\x41\x30\x8a\x79\x74\x67\x18\xfb\x60\xff\xc2\xde\x27\x07\x26\x3d\xeb\x31\xed\xc0\x55\x81\x2c\xf2\x30\xaa\x32\xf2\xb2\xd8\xbd\x9b\xd4\xf4\x8d\x47\xe9\xbb\x6a\xe0\x2a\xc2\x8c\x2a\xed\x27\x92\xe7\xa2\x11\x39\x55\x51\x60\xc3\xd6\x44\x38\xa8\x25\x67\x6d\x7e\x19\xac\xb6\x11\x9f\x6a\x5c\xd9\x20\xd6\xe6\xef\x23\xd8\x08\x5e\x85\xb5\x7e\x0a\x1d\x83\x2e\x06\x0b\x4d\x74\xfe\x1a\x04\x7e\x90\x74\x8d\x12\x9c\xbe\x26\x81\x39\x3b\xca\x9f\x4b\x0d\x65\xc5\x2d\x7f\x0d\x7c\x2e\xe5\x9d\x1a\xe8\xa0\x68\xac\x04\xc9\x4a\x2b\x46\x8d\xcf\x48\x88\xcc\x72\x57\xd5\x1d\xfc\x86\x5b\x43\x9d\x99\x3e\x81\xe6\xe0\xef\x84\xe5\xb6\x72\x9b\x75\x51\x67\xcd\x39\xbb\xc7\x36\x78\x1e\xb4\x85\xe6\x92\x24\x38\x0e\xe5\xa4\x00\x64\x54\xf5\x91\x35\xd8\x73\x65\xcd\xb7\xb8\xea\x47\xf5\x54\xbe\x2a\xfa\xdb\x7c\x55\x07\xeb\x7c\x0d\x76\x74\x0d\xc6\xa3\x9c\x59\x6f\x4a\x26\x8b\x07\x7d\xd9\xda\x55\xe3\xce\xab\xf9\x8a\x24\x78\x3c\x43\x61\xf7\xe9\x4f\x55\xa8\x7c\x4c\xce\x3a\xd5\x2e\x59\x2b\x23\x55\x5c\x4e\x9b\xd9\x2f\x5c\x9e\xf8\xd4\xca\x98\x7d\xab\x36\xcb\x84\x30\x94\xfb\xdf\xc7\x7c\xbb\x46\xc5\x73\x19\xa1\x9a\xae\x09\x65\xa6\xfb\x7e\x85\x1a\x9c\x2b\xce\x6c\x07\xdb\xa8\x3f\x67\x72\x26\xf2\xaa\xb1\xde\x44\xab\x30\xd1\x9b\x3f\x40\x22\x4d\xd7\xa6\xd7\x2f\x2c\xfa\xb6\xc5\x05\x41\x32\x64\xee\xbb\x37\x99\x7d\xb9\x75\xe1\xdf\x6b\x2c\x16\x6f\x81\x91\x81\x13\x5c\x98\x9e\x7b\xe7\xf8\x61\x93\x87\xea\x28\x25\xd2\xc4\xb1\xcc\x51\x21\x69\xa6\xdd\xc3\xb6\x31\xa8\xa9\xc9\x33\xba\x53\xa3\xaa\x6a\xda\xc8\xab\x41\xec\xf0\xe5\x33\xb9\x7f\x25\x77\x3e\x93\x7b\xb0\xaa\x1a\x1e\xcd\x78\xdd\xa1\xbd\xc5\x7e\x9f\x22\xfe\x22\x97\xd4\xdd\xcb\xdd\x99\x32\xc6\x37\xe6\x74\xc2\xdb\x41\x32\x16\x1a\x06\x21\xf8\x4c\xa2\x94\x66\x38\xcf\x96\x3c\xb8\xcc\x57\x56\xae\x5c\x63\xda\xe8\xcb\xa5\x66\xf7\xdb\x39\xf1\x19\x57\x5c\x6e\xbf\x6f\xc2\x3b\x9b\x07\x72\xde\x4d\x08\xdc\x4b\x07\xab\xe6\xe5\xf4\x56\x94\x35\x2b\x80\xfe\x0f\x0f\x18\xee\x4f\x9a\x42\xfe\x36\xa3\xfa\x80\xfc\x73\xb2\xaa\xd0\xf3\x4a\x85\xd2\x55\x24\x6d\xa7\x8f\xd6\x48\xaf\xbb\x85\xe4\x0b\x1c\x5d\x6c\x88\x78\xad\x45\x6e\x43\x44\xe7\xb2\xd0\xf6\xb8\x62\xf5\x19\x5e\x57\xa4\x8f\x78\xde\x2c\xbd\xc2\xbb\x5a\x17\xfa\xec\xcd\xec\x56\x99\xd6\xa8\xbf\x13\xb7\x95\x57\xd4\x9f\x90\x74\x45\xe4\xf6\x40\x1b\x60\x66\x19\x0b\x34\x4b\xda\x8d\x40\x7d\x5a\x51\xcc\x57\x6b\x94\x6b\x8a\x9b\xc3\xed\x41\xb5\x43\xc8\x0d\x62\x3f\x21\x79\x82\x5e\x5d\xa5\x39\xcd\xee\x5a\x86\x1f\xe2\xcd\x17\xc9\x23\x54\xea\x58\xb7\x53\x75\x47\x94\x22\xbe\xe6\xe2\x9b\x1c\xea\xe9\x33\xbe\xa3\x9b\xb6\xe5\xf8\x16\x07\x3b\xbc\x69\x18\x38\x9b\xdc\x70\x4d\x18\x94\x79\x78\x66\x33\xb3\xc2\x4f\x24\x72\x5f\x9b\x29\xbe\x0b\xbc\x7d\xa9\xb1\x27\x05\xca\x17\x50\x46\xd5\xec\xcb\x2d\x5c\x70\x12\xc3\x74\x8d\xf2\x80\x3e\xc6\x49\x5c\x57\xb4\x7b\x2f\x55\x45\x66\x31\x81\xb0\x47\x68\xd9\xab\x4c\xa0\xf4\xcd\xfe\xdf\x89\xaf\x5b\xe5\x2f\x12\xc9\x5d\xcc\x37\x59\x9f\x4e\xa7\x2a\x2c\xa7\xf5\x2a\x6d\xa7\xc6\xd1\xdd\xf9\x3b\xa6\x49\xb9\x51\x7f\xa7\x4c\x59\x59\x73\xc7\xc3\x10\xca\x51\xe3\x49\x05\x80\xe4\x1b\xe8\x3e\xf0\x1c\x0c\x61\x63\x5a\x7b\x39\xfe\x97\x3d\x5b\xd6\x5c\x95\x3c\x91\x68\x5f\xa3\x42\xeb\xd3\x35\xd1\x0f\x89\x84\xea\x0f\x3f\x36\x07\x55\xe9\x95\xeb\x88\x1b\x48\xb9\xf6\x1d\x15\x9d\x9a\xa1\xbe\x57\x29\xe9\xf3\x8c\x6d\xbd\xc9\xaf\x5c\x43\x19\x30\x77\x48\xee\x90\x6c\xb3\xf9\x14\xb8\x34\x5b\xf2\x06\xd8\x88\xb3\xf8\x39\x68\x67\x9c\xc5\xdf\x0a\x77\x30\xe8\xc4\xdd\xfd\xb0\x1d\xb9\x77\x5e\x35\xbb\x34\xde\x37\x57\x9f\x27\x16\xe5\x25\xea\x0d\x97\x77\x4f\xac\xca\xc1\xcb\xcb\xb1\x30\x5c\x6c\xf6\x4f\x29\xc4\x41\x73\x34\x96\x5c\x98\xe4\x6f\x17\x48\x98\x6b\xcd\x77\xf1\x0a\x75\x06\xa1\xce\xfc\x18\x97\x24\x67\x1a\x4a\x39\x5f\xf3\x24\x61\xe8\x15\xef\xb3\x9d\x90\xe3\x39\x73\x28\x7d\x85\x0c\x23\x7b\x04\xd8\x19\x83\x98\x68\x52\x88\x56\x30\x00\x91\x94\xf8\x29\x51\x82\x8b\x5c\x9c\x7b\x5a\xe6\x58\x3c\xc4\x7b\x41\xb2\x18\xe3\x73\x6f\x49\x98\xc2\x8e\x14\x73\xe9\xd5\x6d\xb8\x8c\x75\x77\x7e\xd5\x12\x33\x22\x12\x2b\x73\x07\x65\x26\x38\xcf\x5a\x2c\xe5\xac\xdb\xa4\xd7\x24\xd8\x5f\x61\x96\x7b\x20\xb9\xf1\xd8\x7d\xb7\x8e\xd9\xee\x92\x61\x1c\x6e\x0f\x32\xd6\xce\xf9\xe2\xf5\xd0\x81\xb4\x7d\xca\x82\x9c\x4a\x9e\x27\xa9\xc8\x75\x7b\x15\xdc\x2d\xcb\x25\xbc\x70\xab\x51\xb5\xb7\xef\x67\x98\xfd\x28\x25\xb7\xaf\x8f\x5b\x5b\x40\x69\x0b\xed\x8c\x7e\x63\x0d\xe7\x1b\x15\xfa\x49\xfd\xb0\x2d\xf3\x13\x65\xa8\xb6\x4a\xe3\xea\xdb\x3b\xc8\xe5\x4e\xc6\xed\x7d\x9d\x4d\x64\xbf\xa6\x9e\x65\x6a\x96\x2b\xcd\x57\x9f\x51\x4b\x1a\x3d\x95\x8f\x23\x8b\xd5\xe0\x10\x03\x53\x77\x51\x6e\xf2\x18\x0a\xeb\xcd\x15\xeb\x50\xae\x34\x7a\x29\xeb\x84\xbf\x72\x7a\x8e\xe6\xc3\xa0\x79\xd8\xec\xb8\x05\xf9\x61\xa9\xd1\x71\x77\x72\x2c\x3b\xbe\xad\xa9\x12\x60\xfa\x66\xdb\xd6\xbc\x6f\xae\x17\x34\x13\xb9\xae\xb5\xba\xd5\x1b\x12\x3f\x76\x17\x71\x7e\xc4\xf3\x4c\x7b\x9d\xfb\xf7\x6e\xeb\xee\x92\xb3\xea\x7b\xe4\xd6\x84\xe5\x78\x7e\x7a\xd2\x80\xdc\xbf\xd0\x74\x22\xac\x75\x83\x0d\x4d\xdd\x0b\xe0\x33\x39\x74\xcd\xc8\x51\x1a\x8b\x36\xe2\xef\xc9\x64\xad\xd5\x72\x56\x24\x67\xac\x62\x26\x64\x3c\xba\x6b\x32\xd0\xde\x1f\x9b\x3d\xf9\x2b\x86\xa5\x67\xe9\xee\x18\xac\x0e\x55\x06\x0e\x5f\xa5\x97\xc2\x4a\x13\xa9\xbf\x90\x04\x7f\x7e\x78\x08\x76\x37\xa8\xee\xc6\xf9\x0d\x98\x67\xb5\xf3\xb7\x7d\xd4\x3a\x6e\xd9\xa7\xee\x2a\xd7\x7e\x2d\xef\x75\xed\x3f\x31\x99\x4f\x2c\xc9\xc6\x5d\x8f\x18\x33\xf5\x9b\x98\x62\x52\xfd\xe6\xde\x5d\xd8\x8f\x47\xee\x3f\x64\xfe\x1f\x00\x00\xff\xff\x17\x71\xfc\x09\x84\x25\x00\x00") - -func pagesAssetsHtmlContainersHtmlBytes() ([]byte, error) { - return bindataRead( - _pagesAssetsHtmlContainersHtml, - "pages/assets/html/containers.html", - ) -} - -func pagesAssetsHtmlContainersHtml() (*asset, error) { - bytes, err := pagesAssetsHtmlContainersHtmlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "pages/assets/html/containers.html", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -// Asset loads and returns the asset for the given name. -// It returns an error if the asset could not be found or -// could not be loaded. -func Asset(name string) ([]byte, error) { - cannonicalName := strings.Replace(name, "\\", "/", -1) - if f, ok := _bindata[cannonicalName]; ok { - a, err := f() - if err != nil { - return nil, fmt.Errorf("Asset %s can't read by error: %v", name, err) - } - return a.bytes, nil - } - return nil, fmt.Errorf("Asset %s not found", name) -} - -// MustAsset is like Asset but panics when Asset would return an error. -// It simplifies safe initialization of global variables. -func MustAsset(name string) []byte { - a, err := Asset(name) - if err != nil { - panic("asset: Asset(" + name + "): " + err.Error()) - } - - return a -} - -// AssetInfo loads and returns the asset info for the given name. -// It returns an error if the asset could not be found or -// could not be loaded. -func AssetInfo(name string) (os.FileInfo, error) { - cannonicalName := strings.Replace(name, "\\", "/", -1) - if f, ok := _bindata[cannonicalName]; ok { - a, err := f() - if err != nil { - return nil, fmt.Errorf("AssetInfo %s can't read by error: %v", name, err) - } - return a.info, nil - } - return nil, fmt.Errorf("AssetInfo %s not found", name) -} - -// AssetNames returns the names of the assets. -func AssetNames() []string { - names := make([]string, 0, len(_bindata)) - for name := range _bindata { - names = append(names, name) - } - return names -} - -// _bindata is a table, holding each asset generator, mapped to its name. -var _bindata = map[string]func() (*asset, error){ - "pages/assets/html/containers.html": pagesAssetsHtmlContainersHtml, -} - -// AssetDir returns the file names below a certain -// directory embedded in the file by go-bindata. -// For example if you run go-bindata on data/... and data contains the -// following hierarchy: -// data/ -// foo.txt -// img/ -// a.png -// b.png -// then AssetDir("data") would return []string{"foo.txt", "img"} -// AssetDir("data/img") would return []string{"a.png", "b.png"} -// AssetDir("foo.txt") and AssetDir("notexist") would return an error -// AssetDir("") will return []string{"data"}. -func AssetDir(name string) ([]string, error) { - node := _bintree - if len(name) != 0 { - cannonicalName := strings.Replace(name, "\\", "/", -1) - pathList := strings.Split(cannonicalName, "/") - for _, p := range pathList { - node = node.Children[p] - if node == nil { - return nil, fmt.Errorf("Asset %s not found", name) - } - } - } - if node.Func != nil { - return nil, fmt.Errorf("Asset %s not found", name) - } - rv := make([]string, 0, len(node.Children)) - for childName := range node.Children { - rv = append(rv, childName) - } - return rv, nil -} - -type bintree struct { - Func func() (*asset, error) - Children map[string]*bintree -} - -var _bintree = &bintree{nil, map[string]*bintree{ - "pages": {nil, map[string]*bintree{ - "assets": {nil, map[string]*bintree{ - "html": {nil, map[string]*bintree{ - "containers.html": {pagesAssetsHtmlContainersHtml, map[string]*bintree{}}, - }}, - }}, - }}, -}} - -// RestoreAsset restores an asset under the given directory -func RestoreAsset(dir, name string) error { - data, err := Asset(name) - if err != nil { - return err - } - info, err := AssetInfo(name) - if err != nil { - return err - } - err = os.MkdirAll(_filePath(dir, filepath.Dir(name)), os.FileMode(0755)) - if err != nil { - return err - } - err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode()) - if err != nil { - return err - } - err = os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime()) - if err != nil { - return err - } - return nil -} - -// RestoreAssets restores an asset under the given directory recursively -func RestoreAssets(dir, name string) error { - children, err := AssetDir(name) - // File - if err != nil { - return RestoreAsset(dir, name) - } - // Dir - for _, child := range children { - err = RestoreAssets(dir, filepath.Join(name, child)) - if err != nil { - return err - } - } - return nil -} - -func _filePath(dir, name string) string { - cannonicalName := strings.Replace(name, "\\", "/", -1) - return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...) -} diff --git a/cluster-autoscaler/vendor/github.com/google/cadvisor/validate/validate.go b/cluster-autoscaler/vendor/github.com/google/cadvisor/validate/validate.go deleted file mode 100644 index b2db558097..0000000000 --- a/cluster-autoscaler/vendor/github.com/google/cadvisor/validate/validate.go +++ /dev/null @@ -1,324 +0,0 @@ -// Copyright 2014 Google Inc. 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. - -// Handler for /validate content. -// Validates cadvisor dependencies - kernel, os, docker setup. - -package validate - -import ( - "fmt" - "io/ioutil" - "log" - "net/http" - "os" - "path" - "strings" - - "github.com/google/cadvisor/container/docker" - "github.com/google/cadvisor/manager" - "github.com/google/cadvisor/utils" - - "github.com/opencontainers/runc/libcontainer/cgroups" -) - -const ( - ValidatePage = "/validate/" - Supported = "[Supported, but not recommended]" - Unsupported = "[Unsupported]" - Recommended = "[Supported and recommended]" - Unknown = "[Unknown]" - VersionFormat = "%d.%d%s" - OutputFormat = "%s: %s\n\t%s\n\n" -) - -func getMajorMinor(version string) (int, int, error) { - var major, minor int - var ign string - n, err := fmt.Sscanf(version, VersionFormat, &major, &minor, &ign) - if n != 3 || err != nil { - log.Printf("Failed to parse version for %s", version) - return -1, -1, err - } - return major, minor, nil -} - -func validateKernelVersion(version string) (string, string) { - desc := fmt.Sprintf("Kernel version is %s. Versions >= 2.6 are supported. 3.0+ are recommended.\n", version) - major, minor, err := getMajorMinor(version) - if err != nil { - desc = fmt.Sprintf("Could not parse kernel version. %s", desc) - return Unknown, desc - } - - if major < 2 { - return Unsupported, desc - } - - if major == 2 && minor < 6 { - return Unsupported, desc - } - - if major >= 3 { - return Recommended, desc - } - - return Supported, desc -} - -func validateDockerVersion(version string) (string, string) { - desc := fmt.Sprintf("Docker version is %s. Versions >= 1.0 are supported. 1.2+ are recommended.\n", version) - major, minor, err := getMajorMinor(version) - if err != nil { - desc = fmt.Sprintf("Could not parse docker version. %s\n\t", desc) - return Unknown, desc - } - if major < 1 { - return Unsupported, desc - } - - if major == 1 && minor < 2 { - return Supported, desc - } - - return Recommended, desc -} - -func getEnabledCgroups() (map[string]int, error) { - out, err := ioutil.ReadFile("/proc/cgroups") - if err != nil { - return nil, err - } - cgroups := make(map[string]int) - for i, line := range strings.Split(string(out), "\n") { - var cgroup string - var ign, enabled int - if i == 0 || line == "" { - continue - } - n, err := fmt.Sscanf(line, "%s %d %d %d", &cgroup, &ign, &ign, &enabled) - if n != 4 || err != nil { - if err == nil { - err = fmt.Errorf("failed to parse /proc/cgroup entry %s", line) - } - return nil, err - } - cgroups[cgroup] = enabled - } - return cgroups, nil -} - -func areCgroupsPresent(available map[string]int, desired []string) (bool, string) { - for _, cgroup := range desired { - enabled, ok := available[cgroup] - if !ok { - reason := fmt.Sprintf("Missing cgroup %s. Available cgroups: %v\n", cgroup, available) - return false, reason - } - if enabled != 1 { - reason := fmt.Sprintf("Cgroup %s not enabled. Available cgroups: %v\n", cgroup, available) - return false, reason - } - } - return true, "" -} - -func validateCpuCfsBandwidth(available_cgroups map[string]int) string { - ok, _ := areCgroupsPresent(available_cgroups, []string{"cpu"}) - if !ok { - return "\tCpu cfs bandwidth status unknown: cpu cgroup not enabled.\n" - } - mnt, err := cgroups.FindCgroupMountpoint("cpu") - if err != nil { - return "\tCpu cfs bandwidth status unknown: cpu cgroup not mounted.\n" - } - _, err = os.Stat(path.Join(mnt, "cpu.cfs_period_us")) - if os.IsNotExist(err) { - return "\tCpu cfs bandwidth is disabled. Recompile kernel with \"CONFIG_CFS_BANDWIDTH\" enabled.\n" - } - - return "\tCpu cfs bandwidth is enabled.\n" -} - -func validateMemoryAccounting(available_cgroups map[string]int) string { - ok, _ := areCgroupsPresent(available_cgroups, []string{"memory"}) - if !ok { - return "\tHierarchical memory accounting status unknown: memory cgroup not enabled.\n" - } - mnt, err := cgroups.FindCgroupMountpoint("memory") - if err != nil { - return "\tHierarchical memory accounting status unknown: memory cgroup not mounted.\n" - } - hier, err := ioutil.ReadFile(path.Join(mnt, "memory.use_hierarchy")) - if err != nil { - return "\tHierarchical memory accounting status unknown: hierarchy interface unavailable.\n" - } - var enabled int - n, err := fmt.Sscanf(string(hier), "%d", &enabled) - if err != nil || n != 1 { - return "\tHierarchical memory accounting status unknown: hierarchy interface unreadable.\n" - } - if enabled == 1 { - return "\tHierarchical memory accounting enabled. Reported memory usage includes memory used by child containers.\n" - } - return "\tHierarchical memory accounting disabled. Memory usage does not include usage from child containers.\n" - -} - -func validateCgroups() (string, string) { - required_cgroups := []string{"cpu", "cpuacct"} - recommended_cgroups := []string{"memory", "blkio", "cpuset", "devices", "freezer"} - available_cgroups, err := getEnabledCgroups() - desc := fmt.Sprintf("\tFollowing cgroups are required: %v\n\tFollowing other cgroups are recommended: %v\n", required_cgroups, recommended_cgroups) - if err != nil { - desc = fmt.Sprintf("Could not parse /proc/cgroups.\n%s", desc) - return Unknown, desc - } - ok, out := areCgroupsPresent(available_cgroups, required_cgroups) - if !ok { - out += desc - return Unsupported, out - } - ok, out = areCgroupsPresent(available_cgroups, recommended_cgroups) - if !ok { - // supported, but not recommended. - out += desc - return Supported, out - } - out = fmt.Sprintf("Available cgroups: %v\n", available_cgroups) - out += desc - out += validateMemoryAccounting(available_cgroups) - out += validateCpuCfsBandwidth(available_cgroups) - return Recommended, out -} - -func validateDockerInfo() (string, string) { - info, err := docker.ValidateInfo() - if err != nil { - return Unsupported, fmt.Sprintf("Docker setup is invalid: %v", err) - } - - desc := fmt.Sprintf("Storage driver is %s.\n", info.Driver) - return Recommended, desc -} - -func validateCgroupMounts() (string, string) { - const recommendedMount = "/sys/fs/cgroup" - desc := fmt.Sprintf("\tAny cgroup mount point that is detectible and accessible is supported. %s is recommended as a standard location.\n", recommendedMount) - mnt, err := cgroups.FindCgroupMountpoint("cpu") - if err != nil { - out := "Could not locate cgroup mount point.\n" - out += desc - return Unknown, out - } - mnt = path.Dir(mnt) - if !utils.FileExists(mnt) { - out := fmt.Sprintf("Cgroup mount directory %s inaccessible.\n", mnt) - out += desc - return Unsupported, out - } - mounts, err := ioutil.ReadDir(mnt) - if err != nil { - out := fmt.Sprintf("Could not read cgroup mount directory %s.\n", mnt) - out += desc - return Unsupported, out - } - mountNames := "\tCgroup mount directories: " - for _, mount := range mounts { - mountNames += mount.Name() + " " - } - mountNames += "\n" - out := fmt.Sprintf("Cgroups are mounted at %s.\n", mnt) - out += mountNames - out += desc - info, err := ioutil.ReadFile("/proc/mounts") - if err != nil { - out := fmt.Sprintf("Could not read /proc/mounts.\n") - out += desc - return Unsupported, out - } - out += "\tCgroup mounts:\n" - for _, line := range strings.Split(string(info), "\n") { - if strings.Contains(line, " cgroup ") { - out += "\t" + line + "\n" - } - } - if mnt == recommendedMount { - return Recommended, out - } - return Supported, out -} - -func validateIoScheduler(containerManager manager.Manager) (string, string) { - var desc string - mi, err := containerManager.GetMachineInfo() - if err != nil { - return Unknown, "Machine info not available\n\t" - } - cfq := false - for _, disk := range mi.DiskMap { - desc += fmt.Sprintf("\t Disk %q Scheduler type %q.\n", disk.Name, disk.Scheduler) - if disk.Scheduler == "cfq" { - cfq = true - } - } - // Since we get lot of random block devices, report recommended if - // at least one of them is on cfq. Report Supported otherwise. - if cfq { - desc = "At least one device supports 'cfq' I/O scheduler. Some disk stats can be reported.\n" + desc - return Recommended, desc - } - desc = "None of the devices support 'cfq' I/O scheduler. No disk stats can be reported.\n" + desc - return Supported, desc -} - -func HandleRequest(w http.ResponseWriter, containerManager manager.Manager) error { - // Get cAdvisor version Info. - versionInfo, err := containerManager.GetVersionInfo() - if err != nil { - return err - } - - out := fmt.Sprintf("cAdvisor version: %s\n\n", versionInfo.CadvisorVersion) - - // No OS is preferred or unsupported as of now. - out += fmt.Sprintf("OS version: %s\n\n", versionInfo.ContainerOsVersion) - - kernelValidation, desc := validateKernelVersion(versionInfo.KernelVersion) - out += fmt.Sprintf(OutputFormat, "Kernel version", kernelValidation, desc) - - cgroupValidation, desc := validateCgroups() - out += fmt.Sprintf(OutputFormat, "Cgroup setup", cgroupValidation, desc) - - mountsValidation, desc := validateCgroupMounts() - out += fmt.Sprintf(OutputFormat, "Cgroup mount setup", mountsValidation, desc) - - dockerValidation, desc := validateDockerVersion(versionInfo.DockerVersion) - out += fmt.Sprintf(OutputFormat, "Docker version", dockerValidation, desc) - - dockerInfoValidation, desc := validateDockerInfo() - out += fmt.Sprintf(OutputFormat, "Docker driver setup", dockerInfoValidation, desc) - - ioSchedulerValidation, desc := validateIoScheduler(containerManager) - out += fmt.Sprintf(OutputFormat, "Block device setup", ioSchedulerValidation, desc) - - // Output debug info. - debugInfo := containerManager.DebugInfo() - for category, lines := range debugInfo { - out += fmt.Sprintf(OutputFormat, category, "", strings.Join(lines, "\n\t")) - } - - _, err = w.Write([]byte(out)) - return err -} diff --git a/cluster-autoscaler/vendor/github.com/json-iterator/go/Gopkg.lock b/cluster-autoscaler/vendor/github.com/json-iterator/go/Gopkg.lock index 338f1c68a5..3719afe8e0 100644 --- a/cluster-autoscaler/vendor/github.com/json-iterator/go/Gopkg.lock +++ b/cluster-autoscaler/vendor/github.com/json-iterator/go/Gopkg.lock @@ -1,6 +1,12 @@ # This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. +[[projects]] + name = "github.com/json-iterator/go" + packages = ["."] + revision = "ca39e5af3ece67bbcda3d0f4f56a8e24d9f2dad4" + version = "1.1.3" + [[projects]] name = "github.com/modern-go/concurrent" packages = ["."] @@ -16,6 +22,6 @@ [solve-meta] analyzer-name = "dep" analyzer-version = 1 - inputs-digest = "ac7003b5a981716353a43055ab7d4c5357403cb30a60de2dbdeb446c1544beaa" + inputs-digest = "56a0b9e9e61d2bc8af5e1b68537401b7f4d60805eda3d107058f3171aa5cf793" solver-name = "gps-cdcl" solver-version = 1 diff --git a/cluster-autoscaler/vendor/github.com/json-iterator/go/config.go b/cluster-autoscaler/vendor/github.com/json-iterator/go/config.go index bd66947d7c..835819129c 100644 --- a/cluster-autoscaler/vendor/github.com/json-iterator/go/config.go +++ b/cluster-autoscaler/vendor/github.com/json-iterator/go/config.go @@ -2,12 +2,13 @@ package jsoniter import ( "encoding/json" - "github.com/modern-go/concurrent" - "github.com/modern-go/reflect2" "io" "reflect" "sync" "unsafe" + + "github.com/modern-go/concurrent" + "github.com/modern-go/reflect2" ) // Config customize how the API should behave. @@ -23,6 +24,7 @@ type Config struct { OnlyTaggedField bool ValidateJsonRawMessage bool ObjectFieldMustBeSimpleString bool + CaseSensitive bool } // API the public interface of this package. @@ -75,6 +77,7 @@ type frozenConfig struct { extensions []Extension streamPool *sync.Pool iteratorPool *sync.Pool + caseSensitive bool } func (cfg *frozenConfig) initCache() { @@ -128,6 +131,7 @@ func (cfg Config) Froze() API { objectFieldMustBeSimpleString: cfg.ObjectFieldMustBeSimpleString, onlyTaggedField: cfg.OnlyTaggedField, disallowUnknownFields: cfg.DisallowUnknownFields, + caseSensitive: cfg.CaseSensitive, } api.streamPool = &sync.Pool{ New: func() interface{} { diff --git a/cluster-autoscaler/vendor/github.com/json-iterator/go/iter_object.go b/cluster-autoscaler/vendor/github.com/json-iterator/go/iter_object.go index ebd3da8951..6e7c370abe 100644 --- a/cluster-autoscaler/vendor/github.com/json-iterator/go/iter_object.go +++ b/cluster-autoscaler/vendor/github.com/json-iterator/go/iter_object.go @@ -60,7 +60,7 @@ func (iter *Iterator) readFieldHash() int64 { if b == '\\' { iter.head = i for _, b := range iter.readStringSlowPath() { - if 'A' <= b && b <= 'Z' { + if 'A' <= b && b <= 'Z' && !iter.cfg.caseSensitive { b += 'a' - 'A' } hash ^= int64(b) @@ -82,7 +82,7 @@ func (iter *Iterator) readFieldHash() int64 { } return hash } - if 'A' <= b && b <= 'Z' { + if 'A' <= b && b <= 'Z' && !iter.cfg.caseSensitive { b += 'a' - 'A' } hash ^= int64(b) @@ -95,10 +95,14 @@ func (iter *Iterator) readFieldHash() int64 { } } -func calcHash(str string) int64 { +func calcHash(str string, caseSensitive bool) int64 { hash := int64(0x811c9dc5) for _, b := range str { - hash ^= int64(unicode.ToLower(b)) + if caseSensitive { + hash ^= int64(b) + } else { + hash ^= int64(unicode.ToLower(b)) + } hash *= 0x1000193 } return int64(hash) diff --git a/cluster-autoscaler/vendor/github.com/json-iterator/go/reflect.go b/cluster-autoscaler/vendor/github.com/json-iterator/go/reflect.go index 5c7d3a8a03..be7a0e2188 100644 --- a/cluster-autoscaler/vendor/github.com/json-iterator/go/reflect.go +++ b/cluster-autoscaler/vendor/github.com/json-iterator/go/reflect.go @@ -2,9 +2,10 @@ package jsoniter import ( "fmt" - "github.com/modern-go/reflect2" "reflect" "unsafe" + + "github.com/modern-go/reflect2" ) // ValDecoder is an internal type registered to cache as needed. @@ -40,6 +41,14 @@ type ctx struct { decoders map[reflect2.Type]ValDecoder } +func (b *ctx) caseSensitive() bool { + if b.frozenConfig == nil { + // default is case-insensitive + return false + } + return b.frozenConfig.caseSensitive +} + func (b *ctx) append(prefix string) *ctx { return &ctx{ frozenConfig: b.frozenConfig, diff --git a/cluster-autoscaler/vendor/github.com/json-iterator/go/reflect_native.go b/cluster-autoscaler/vendor/github.com/json-iterator/go/reflect_native.go index fac4d9f775..9042eb0cb9 100644 --- a/cluster-autoscaler/vendor/github.com/json-iterator/go/reflect_native.go +++ b/cluster-autoscaler/vendor/github.com/json-iterator/go/reflect_native.go @@ -1,7 +1,6 @@ package jsoniter import ( - "bytes" "encoding/base64" "reflect" "strconv" @@ -418,20 +417,11 @@ func (codec *base64Codec) Decode(ptr unsafe.Pointer, iter *Iterator) { } switch iter.WhatIsNext() { case StringValue: - encoding := base64.StdEncoding - src := iter.SkipAndReturnBytes() - // New line characters (\r and \n) are ignored. - // Refer to https://golang.org/pkg/encoding/base64/#Encoding.Decode - src = bytes.Replace(src, []byte(`\r`), []byte{}, -1) - src = bytes.Replace(src, []byte(`\n`), []byte{}, -1) - src = src[1 : len(src)-1] - decodedLen := encoding.DecodedLen(len(src)) - dst := make([]byte, decodedLen) - len, err := encoding.Decode(dst, src) + src := iter.ReadString() + dst, err := base64.StdEncoding.DecodeString(src) if err != nil { iter.ReportError("decode base64", err.Error()) } else { - dst = dst[:len] codec.sliceType.UnsafeSet(ptr, unsafe.Pointer(&dst)) } case ArrayValue: diff --git a/cluster-autoscaler/vendor/github.com/json-iterator/go/reflect_struct_decoder.go b/cluster-autoscaler/vendor/github.com/json-iterator/go/reflect_struct_decoder.go index fd76647863..355d2d116b 100644 --- a/cluster-autoscaler/vendor/github.com/json-iterator/go/reflect_struct_decoder.go +++ b/cluster-autoscaler/vendor/github.com/json-iterator/go/reflect_struct_decoder.go @@ -2,10 +2,11 @@ package jsoniter import ( "fmt" - "github.com/modern-go/reflect2" "io" "strings" "unsafe" + + "github.com/modern-go/reflect2" ) func decoderOfStruct(ctx *ctx, typ reflect2.Type) ValDecoder { @@ -31,11 +32,15 @@ func decoderOfStruct(ctx *ctx, typ reflect2.Type) ValDecoder { for k, binding := range bindings { fields[k] = binding.Decoder.(*structFieldDecoder) } - for k, binding := range bindings { - if _, found := fields[strings.ToLower(k)]; !found { - fields[strings.ToLower(k)] = binding.Decoder.(*structFieldDecoder) + + if !ctx.caseSensitive() { + for k, binding := range bindings { + if _, found := fields[strings.ToLower(k)]; !found { + fields[strings.ToLower(k)] = binding.Decoder.(*structFieldDecoder) + } } } + return createStructDecoder(ctx, typ, fields) } @@ -46,12 +51,13 @@ func createStructDecoder(ctx *ctx, typ reflect2.Type, fields map[string]*structF knownHash := map[int64]struct{}{ 0: {}, } + switch len(fields) { case 0: return &skipObjectDecoder{typ} case 1: for fieldName, fieldDecoder := range fields { - fieldHash := calcHash(fieldName) + fieldHash := calcHash(fieldName, ctx.caseSensitive()) _, known := knownHash[fieldHash] if known { return &generalStructDecoder{typ, fields, false} @@ -65,7 +71,7 @@ func createStructDecoder(ctx *ctx, typ reflect2.Type, fields map[string]*structF var fieldDecoder1 *structFieldDecoder var fieldDecoder2 *structFieldDecoder for fieldName, fieldDecoder := range fields { - fieldHash := calcHash(fieldName) + fieldHash := calcHash(fieldName, ctx.caseSensitive()) _, known := knownHash[fieldHash] if known { return &generalStructDecoder{typ, fields, false} @@ -88,7 +94,7 @@ func createStructDecoder(ctx *ctx, typ reflect2.Type, fields map[string]*structF var fieldDecoder2 *structFieldDecoder var fieldDecoder3 *structFieldDecoder for fieldName, fieldDecoder := range fields { - fieldHash := calcHash(fieldName) + fieldHash := calcHash(fieldName, ctx.caseSensitive()) _, known := knownHash[fieldHash] if known { return &generalStructDecoder{typ, fields, false} @@ -119,7 +125,7 @@ func createStructDecoder(ctx *ctx, typ reflect2.Type, fields map[string]*structF var fieldDecoder3 *structFieldDecoder var fieldDecoder4 *structFieldDecoder for fieldName, fieldDecoder := range fields { - fieldHash := calcHash(fieldName) + fieldHash := calcHash(fieldName, ctx.caseSensitive()) _, known := knownHash[fieldHash] if known { return &generalStructDecoder{typ, fields, false} @@ -156,7 +162,7 @@ func createStructDecoder(ctx *ctx, typ reflect2.Type, fields map[string]*structF var fieldDecoder4 *structFieldDecoder var fieldDecoder5 *structFieldDecoder for fieldName, fieldDecoder := range fields { - fieldHash := calcHash(fieldName) + fieldHash := calcHash(fieldName, ctx.caseSensitive()) _, known := knownHash[fieldHash] if known { return &generalStructDecoder{typ, fields, false} @@ -199,7 +205,7 @@ func createStructDecoder(ctx *ctx, typ reflect2.Type, fields map[string]*structF var fieldDecoder5 *structFieldDecoder var fieldDecoder6 *structFieldDecoder for fieldName, fieldDecoder := range fields { - fieldHash := calcHash(fieldName) + fieldHash := calcHash(fieldName, ctx.caseSensitive()) _, known := knownHash[fieldHash] if known { return &generalStructDecoder{typ, fields, false} @@ -248,7 +254,7 @@ func createStructDecoder(ctx *ctx, typ reflect2.Type, fields map[string]*structF var fieldDecoder6 *structFieldDecoder var fieldDecoder7 *structFieldDecoder for fieldName, fieldDecoder := range fields { - fieldHash := calcHash(fieldName) + fieldHash := calcHash(fieldName, ctx.caseSensitive()) _, known := knownHash[fieldHash] if known { return &generalStructDecoder{typ, fields, false} @@ -303,7 +309,7 @@ func createStructDecoder(ctx *ctx, typ reflect2.Type, fields map[string]*structF var fieldDecoder7 *structFieldDecoder var fieldDecoder8 *structFieldDecoder for fieldName, fieldDecoder := range fields { - fieldHash := calcHash(fieldName) + fieldHash := calcHash(fieldName, ctx.caseSensitive()) _, known := knownHash[fieldHash] if known { return &generalStructDecoder{typ, fields, false} @@ -364,7 +370,7 @@ func createStructDecoder(ctx *ctx, typ reflect2.Type, fields map[string]*structF var fieldDecoder8 *structFieldDecoder var fieldDecoder9 *structFieldDecoder for fieldName, fieldDecoder := range fields { - fieldHash := calcHash(fieldName) + fieldHash := calcHash(fieldName, ctx.caseSensitive()) _, known := knownHash[fieldHash] if known { return &generalStructDecoder{typ, fields, false} @@ -431,7 +437,7 @@ func createStructDecoder(ctx *ctx, typ reflect2.Type, fields map[string]*structF var fieldDecoder9 *structFieldDecoder var fieldDecoder10 *structFieldDecoder for fieldName, fieldDecoder := range fields { - fieldHash := calcHash(fieldName) + fieldHash := calcHash(fieldName, ctx.caseSensitive()) _, known := knownHash[fieldHash] if known { return &generalStructDecoder{typ, fields, false} @@ -513,13 +519,13 @@ func (decoder *generalStructDecoder) decodeOneField(ptr unsafe.Pointer, iter *It fieldBytes := iter.ReadStringAsSlice() field = *(*string)(unsafe.Pointer(&fieldBytes)) fieldDecoder = decoder.fields[field] - if fieldDecoder == nil { + if fieldDecoder == nil && !iter.cfg.caseSensitive { fieldDecoder = decoder.fields[strings.ToLower(field)] } } else { field = iter.ReadString() fieldDecoder = decoder.fields[field] - if fieldDecoder == nil { + if fieldDecoder == nil && !iter.cfg.caseSensitive { fieldDecoder = decoder.fields[strings.ToLower(field)] } } diff --git a/cluster-autoscaler/vendor/github.com/quobyte/api/quobyte.go b/cluster-autoscaler/vendor/github.com/quobyte/api/quobyte.go index 66e51fd813..a9b18e2234 100644 --- a/cluster-autoscaler/vendor/github.com/quobyte/api/quobyte.go +++ b/cluster-autoscaler/vendor/github.com/quobyte/api/quobyte.go @@ -2,7 +2,9 @@ package quobyte import ( + "log" "net/http" + "regexp" ) // retry policy codes @@ -43,6 +45,17 @@ func NewQuobyteClient(url string, username string, password string) *QuobyteClie // CreateVolume creates a new Quobyte volume. Its root directory will be owned by given user and group func (client QuobyteClient) CreateVolume(request *CreateVolumeRequest) (string, error) { var response volumeUUID + + if request.TenantID != "" && !IsValidUUID(request.TenantID) { + log.Printf("Tenant name resolution: Resolving %s to UUID\n", request.TenantID) + tenantUUID, err := client.ResolveTenantNameToUUID(request.TenantID) + if err != nil { + return "", err + } + + request.TenantID = tenantUUID + } + if err := client.sendRequest("createVolume", request, &response); err != nil { return "", err } @@ -168,3 +181,23 @@ func (client *QuobyteClient) SetTenant(tenantName string) (string, error) { return response.TenantID, nil } + +// IsValidUUID Validates given uuid +func IsValidUUID(uuid string) bool { + r := regexp.MustCompile("^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-4[a-fA-F0-9]{3}-[8|9|aA|bB][a-fA-F0-9]{3}-[a-fA-F0-9]{12}$") + return r.MatchString(uuid) +} + +// ResolveTenantNameToUUID Returns UUID for given name, error if not found. +func (client *QuobyteClient) ResolveTenantNameToUUID(name string) (string, error) { + request := &resolveTenantNameRequest{ + TenantName: name, + } + + var response resolveTenantNameResponse + err := client.sendRequest("resolveTenantName", request, &response) + if err != nil { + return "", err + } + return response.TenantID, nil +} diff --git a/cluster-autoscaler/vendor/github.com/quobyte/api/rpc_client.go b/cluster-autoscaler/vendor/github.com/quobyte/api/rpc_client.go index 77e929e766..7cab3842ae 100644 --- a/cluster-autoscaler/vendor/github.com/quobyte/api/rpc_client.go +++ b/cluster-autoscaler/vendor/github.com/quobyte/api/rpc_client.go @@ -5,6 +5,7 @@ import ( "encoding/json" "errors" "io" + "log" "math/rand" "net/http" "reflect" @@ -110,5 +111,8 @@ func (client QuobyteClient) sendRequest(method string, request interface{}, resp } defer resp.Body.Close() + if resp.StatusCode < 200 || resp.StatusCode > 299 { + log.Printf("Warning: HTTP status code for request is %s\n", strconv.Itoa(resp.StatusCode)) + } return decodeResponse(resp.Body, &response) } diff --git a/cluster-autoscaler/vendor/github.com/quobyte/api/types.go b/cluster-autoscaler/vendor/github.com/quobyte/api/types.go index 2e18bd7278..6682012c61 100644 --- a/cluster-autoscaler/vendor/github.com/quobyte/api/types.go +++ b/cluster-autoscaler/vendor/github.com/quobyte/api/types.go @@ -22,6 +22,14 @@ type resolveVolumeNameRequest struct { retryPolicy } +type resolveTenantNameRequest struct { + TenantName string `json:"tenant_name,omitempty"` +} + +type resolveTenantNameResponse struct { + TenantID string `json:"tenant_id,omitempty"` +} + type volumeUUID struct { VolumeUUID string `json:"volume_uuid,omitempty"` } diff --git a/cluster-autoscaler/vendor/github.com/satori/go.uuid/.travis.yml b/cluster-autoscaler/vendor/github.com/satori/go.uuid/.travis.yml index 38517e2ed9..20dd53b8d3 100644 --- a/cluster-autoscaler/vendor/github.com/satori/go.uuid/.travis.yml +++ b/cluster-autoscaler/vendor/github.com/satori/go.uuid/.travis.yml @@ -6,6 +6,14 @@ go: - 1.4 - 1.5 - 1.6 + - 1.7 + - 1.8 + - 1.9 + - tip +matrix: + allow_failures: + - go: tip + fast_finish: true before_install: - go get github.com/mattn/goveralls - go get golang.org/x/tools/cmd/cover diff --git a/cluster-autoscaler/vendor/github.com/satori/go.uuid/LICENSE b/cluster-autoscaler/vendor/github.com/satori/go.uuid/LICENSE index 488357b8af..926d549870 100644 --- a/cluster-autoscaler/vendor/github.com/satori/go.uuid/LICENSE +++ b/cluster-autoscaler/vendor/github.com/satori/go.uuid/LICENSE @@ -1,4 +1,4 @@ -Copyright (C) 2013-2016 by Maxim Bublis +Copyright (C) 2013-2018 by Maxim Bublis Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the diff --git a/cluster-autoscaler/vendor/github.com/satori/go.uuid/README.md b/cluster-autoscaler/vendor/github.com/satori/go.uuid/README.md index b6aad1c813..7b1a722dff 100644 --- a/cluster-autoscaler/vendor/github.com/satori/go.uuid/README.md +++ b/cluster-autoscaler/vendor/github.com/satori/go.uuid/README.md @@ -59,7 +59,7 @@ func main() { ## Copyright -Copyright (C) 2013-2016 by Maxim Bublis . +Copyright (C) 2013-2018 by Maxim Bublis . UUID package released under MIT License. See [LICENSE](https://github.com/satori/go.uuid/blob/master/LICENSE) for details. diff --git a/cluster-autoscaler/vendor/github.com/satori/go.uuid/codec.go b/cluster-autoscaler/vendor/github.com/satori/go.uuid/codec.go new file mode 100644 index 0000000000..656892c53e --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/satori/go.uuid/codec.go @@ -0,0 +1,206 @@ +// Copyright (C) 2013-2018 by Maxim Bublis +// +// 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. + +package uuid + +import ( + "bytes" + "encoding/hex" + "fmt" +) + +// FromBytes returns UUID converted from raw byte slice input. +// It will return error if the slice isn't 16 bytes long. +func FromBytes(input []byte) (u UUID, err error) { + err = u.UnmarshalBinary(input) + return +} + +// FromBytesOrNil returns UUID converted from raw byte slice input. +// Same behavior as FromBytes, but returns a Nil UUID on error. +func FromBytesOrNil(input []byte) UUID { + uuid, err := FromBytes(input) + if err != nil { + return Nil + } + return uuid +} + +// FromString returns UUID parsed from string input. +// Input is expected in a form accepted by UnmarshalText. +func FromString(input string) (u UUID, err error) { + err = u.UnmarshalText([]byte(input)) + return +} + +// FromStringOrNil returns UUID parsed from string input. +// Same behavior as FromString, but returns a Nil UUID on error. +func FromStringOrNil(input string) UUID { + uuid, err := FromString(input) + if err != nil { + return Nil + } + return uuid +} + +// MarshalText implements the encoding.TextMarshaler interface. +// The encoding is the same as returned by String. +func (u UUID) MarshalText() (text []byte, err error) { + text = []byte(u.String()) + return +} + +// UnmarshalText implements the encoding.TextUnmarshaler interface. +// Following formats are supported: +// "6ba7b810-9dad-11d1-80b4-00c04fd430c8", +// "{6ba7b810-9dad-11d1-80b4-00c04fd430c8}", +// "urn:uuid:6ba7b810-9dad-11d1-80b4-00c04fd430c8" +// "6ba7b8109dad11d180b400c04fd430c8" +// ABNF for supported UUID text representation follows: +// uuid := canonical | hashlike | braced | urn +// plain := canonical | hashlike +// canonical := 4hexoct '-' 2hexoct '-' 2hexoct '-' 6hexoct +// hashlike := 12hexoct +// braced := '{' plain '}' +// urn := URN ':' UUID-NID ':' plain +// URN := 'urn' +// UUID-NID := 'uuid' +// 12hexoct := 6hexoct 6hexoct +// 6hexoct := 4hexoct 2hexoct +// 4hexoct := 2hexoct 2hexoct +// 2hexoct := hexoct hexoct +// hexoct := hexdig hexdig +// hexdig := '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | +// 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | +// 'A' | 'B' | 'C' | 'D' | 'E' | 'F' +func (u *UUID) UnmarshalText(text []byte) (err error) { + switch len(text) { + case 32: + return u.decodeHashLike(text) + case 36: + return u.decodeCanonical(text) + case 38: + return u.decodeBraced(text) + case 41: + fallthrough + case 45: + return u.decodeURN(text) + default: + return fmt.Errorf("uuid: incorrect UUID length: %s", text) + } +} + +// decodeCanonical decodes UUID string in format +// "6ba7b810-9dad-11d1-80b4-00c04fd430c8". +func (u *UUID) decodeCanonical(t []byte) (err error) { + if t[8] != '-' || t[13] != '-' || t[18] != '-' || t[23] != '-' { + return fmt.Errorf("uuid: incorrect UUID format %s", t) + } + + src := t[:] + dst := u[:] + + for i, byteGroup := range byteGroups { + if i > 0 { + src = src[1:] // skip dash + } + _, err = hex.Decode(dst[:byteGroup/2], src[:byteGroup]) + if err != nil { + return + } + src = src[byteGroup:] + dst = dst[byteGroup/2:] + } + + return +} + +// decodeHashLike decodes UUID string in format +// "6ba7b8109dad11d180b400c04fd430c8". +func (u *UUID) decodeHashLike(t []byte) (err error) { + src := t[:] + dst := u[:] + + if _, err = hex.Decode(dst, src); err != nil { + return err + } + return +} + +// decodeBraced decodes UUID string in format +// "{6ba7b810-9dad-11d1-80b4-00c04fd430c8}" or in format +// "{6ba7b8109dad11d180b400c04fd430c8}". +func (u *UUID) decodeBraced(t []byte) (err error) { + l := len(t) + + if t[0] != '{' || t[l-1] != '}' { + return fmt.Errorf("uuid: incorrect UUID format %s", t) + } + + return u.decodePlain(t[1 : l-1]) +} + +// decodeURN decodes UUID string in format +// "urn:uuid:6ba7b810-9dad-11d1-80b4-00c04fd430c8" or in format +// "urn:uuid:6ba7b8109dad11d180b400c04fd430c8". +func (u *UUID) decodeURN(t []byte) (err error) { + total := len(t) + + urn_uuid_prefix := t[:9] + + if !bytes.Equal(urn_uuid_prefix, urnPrefix) { + return fmt.Errorf("uuid: incorrect UUID format: %s", t) + } + + return u.decodePlain(t[9:total]) +} + +// decodePlain decodes UUID string in canonical format +// "6ba7b810-9dad-11d1-80b4-00c04fd430c8" or in hash-like format +// "6ba7b8109dad11d180b400c04fd430c8". +func (u *UUID) decodePlain(t []byte) (err error) { + switch len(t) { + case 32: + return u.decodeHashLike(t) + case 36: + return u.decodeCanonical(t) + default: + return fmt.Errorf("uuid: incorrrect UUID length: %s", t) + } +} + +// MarshalBinary implements the encoding.BinaryMarshaler interface. +func (u UUID) MarshalBinary() (data []byte, err error) { + data = u.Bytes() + return +} + +// UnmarshalBinary implements the encoding.BinaryUnmarshaler interface. +// It will return error if the slice isn't 16 bytes long. +func (u *UUID) UnmarshalBinary(data []byte) (err error) { + if len(data) != Size { + err = fmt.Errorf("uuid: UUID must be exactly 16 bytes long, got %d bytes", len(data)) + return + } + copy(u[:], data) + + return +} diff --git a/cluster-autoscaler/vendor/github.com/satori/go.uuid/generator.go b/cluster-autoscaler/vendor/github.com/satori/go.uuid/generator.go new file mode 100644 index 0000000000..3f2f1da2dc --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/satori/go.uuid/generator.go @@ -0,0 +1,239 @@ +// Copyright (C) 2013-2018 by Maxim Bublis +// +// 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. + +package uuid + +import ( + "crypto/md5" + "crypto/rand" + "crypto/sha1" + "encoding/binary" + "hash" + "net" + "os" + "sync" + "time" +) + +// Difference in 100-nanosecond intervals between +// UUID epoch (October 15, 1582) and Unix epoch (January 1, 1970). +const epochStart = 122192928000000000 + +var ( + global = newDefaultGenerator() + + epochFunc = unixTimeFunc + posixUID = uint32(os.Getuid()) + posixGID = uint32(os.Getgid()) +) + +// NewV1 returns UUID based on current timestamp and MAC address. +func NewV1() UUID { + return global.NewV1() +} + +// NewV2 returns DCE Security UUID based on POSIX UID/GID. +func NewV2(domain byte) UUID { + return global.NewV2(domain) +} + +// NewV3 returns UUID based on MD5 hash of namespace UUID and name. +func NewV3(ns UUID, name string) UUID { + return global.NewV3(ns, name) +} + +// NewV4 returns random generated UUID. +func NewV4() UUID { + return global.NewV4() +} + +// NewV5 returns UUID based on SHA-1 hash of namespace UUID and name. +func NewV5(ns UUID, name string) UUID { + return global.NewV5(ns, name) +} + +// Generator provides interface for generating UUIDs. +type Generator interface { + NewV1() UUID + NewV2(domain byte) UUID + NewV3(ns UUID, name string) UUID + NewV4() UUID + NewV5(ns UUID, name string) UUID +} + +// Default generator implementation. +type generator struct { + storageOnce sync.Once + storageMutex sync.Mutex + + lastTime uint64 + clockSequence uint16 + hardwareAddr [6]byte +} + +func newDefaultGenerator() Generator { + return &generator{} +} + +// NewV1 returns UUID based on current timestamp and MAC address. +func (g *generator) NewV1() UUID { + u := UUID{} + + timeNow, clockSeq, hardwareAddr := g.getStorage() + + binary.BigEndian.PutUint32(u[0:], uint32(timeNow)) + binary.BigEndian.PutUint16(u[4:], uint16(timeNow>>32)) + binary.BigEndian.PutUint16(u[6:], uint16(timeNow>>48)) + binary.BigEndian.PutUint16(u[8:], clockSeq) + + copy(u[10:], hardwareAddr) + + u.SetVersion(V1) + u.SetVariant(VariantRFC4122) + + return u +} + +// NewV2 returns DCE Security UUID based on POSIX UID/GID. +func (g *generator) NewV2(domain byte) UUID { + u := UUID{} + + timeNow, clockSeq, hardwareAddr := g.getStorage() + + switch domain { + case DomainPerson: + binary.BigEndian.PutUint32(u[0:], posixUID) + case DomainGroup: + binary.BigEndian.PutUint32(u[0:], posixGID) + } + + binary.BigEndian.PutUint16(u[4:], uint16(timeNow>>32)) + binary.BigEndian.PutUint16(u[6:], uint16(timeNow>>48)) + binary.BigEndian.PutUint16(u[8:], clockSeq) + u[9] = domain + + copy(u[10:], hardwareAddr) + + u.SetVersion(V2) + u.SetVariant(VariantRFC4122) + + return u +} + +// NewV3 returns UUID based on MD5 hash of namespace UUID and name. +func (g *generator) NewV3(ns UUID, name string) UUID { + u := newFromHash(md5.New(), ns, name) + u.SetVersion(V3) + u.SetVariant(VariantRFC4122) + + return u +} + +// NewV4 returns random generated UUID. +func (g *generator) NewV4() UUID { + u := UUID{} + g.safeRandom(u[:]) + u.SetVersion(V4) + u.SetVariant(VariantRFC4122) + + return u +} + +// NewV5 returns UUID based on SHA-1 hash of namespace UUID and name. +func (g *generator) NewV5(ns UUID, name string) UUID { + u := newFromHash(sha1.New(), ns, name) + u.SetVersion(V5) + u.SetVariant(VariantRFC4122) + + return u +} + +func (g *generator) initStorage() { + g.initClockSequence() + g.initHardwareAddr() +} + +func (g *generator) initClockSequence() { + buf := make([]byte, 2) + g.safeRandom(buf) + g.clockSequence = binary.BigEndian.Uint16(buf) +} + +func (g *generator) initHardwareAddr() { + interfaces, err := net.Interfaces() + if err == nil { + for _, iface := range interfaces { + if len(iface.HardwareAddr) >= 6 { + copy(g.hardwareAddr[:], iface.HardwareAddr) + return + } + } + } + + // Initialize hardwareAddr randomly in case + // of real network interfaces absence + g.safeRandom(g.hardwareAddr[:]) + + // Set multicast bit as recommended in RFC 4122 + g.hardwareAddr[0] |= 0x01 +} + +func (g *generator) safeRandom(dest []byte) { + if _, err := rand.Read(dest); err != nil { + panic(err) + } +} + +// Returns UUID v1/v2 storage state. +// Returns epoch timestamp, clock sequence, and hardware address. +func (g *generator) getStorage() (uint64, uint16, []byte) { + g.storageOnce.Do(g.initStorage) + + g.storageMutex.Lock() + defer g.storageMutex.Unlock() + + timeNow := epochFunc() + // Clock changed backwards since last UUID generation. + // Should increase clock sequence. + if timeNow <= g.lastTime { + g.clockSequence++ + } + g.lastTime = timeNow + + return timeNow, g.clockSequence, g.hardwareAddr[:] +} + +// Returns difference in 100-nanosecond intervals between +// UUID epoch (October 15, 1582) and current time. +// This is default epoch calculation function. +func unixTimeFunc() uint64 { + return epochStart + uint64(time.Now().UnixNano()/100) +} + +// Returns UUID based on hashing of namespace UUID and name. +func newFromHash(h hash.Hash, ns UUID, name string) UUID { + u := UUID{} + h.Write(ns[:]) + h.Write([]byte(name)) + copy(u[:], h.Sum(nil)) + + return u +} diff --git a/cluster-autoscaler/vendor/github.com/satori/go.uuid/sql.go b/cluster-autoscaler/vendor/github.com/satori/go.uuid/sql.go new file mode 100644 index 0000000000..56759d3905 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/satori/go.uuid/sql.go @@ -0,0 +1,78 @@ +// Copyright (C) 2013-2018 by Maxim Bublis +// +// 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. + +package uuid + +import ( + "database/sql/driver" + "fmt" +) + +// Value implements the driver.Valuer interface. +func (u UUID) Value() (driver.Value, error) { + return u.String(), nil +} + +// Scan implements the sql.Scanner interface. +// A 16-byte slice is handled by UnmarshalBinary, while +// a longer byte slice or a string is handled by UnmarshalText. +func (u *UUID) Scan(src interface{}) error { + switch src := src.(type) { + case []byte: + if len(src) == Size { + return u.UnmarshalBinary(src) + } + return u.UnmarshalText(src) + + case string: + return u.UnmarshalText([]byte(src)) + } + + return fmt.Errorf("uuid: cannot convert %T to UUID", src) +} + +// NullUUID can be used with the standard sql package to represent a +// UUID value that can be NULL in the database +type NullUUID struct { + UUID UUID + Valid bool +} + +// Value implements the driver.Valuer interface. +func (u NullUUID) Value() (driver.Value, error) { + if !u.Valid { + return nil, nil + } + // Delegate to UUID Value function + return u.UUID.Value() +} + +// Scan implements the sql.Scanner interface. +func (u *NullUUID) Scan(src interface{}) error { + if src == nil { + u.UUID, u.Valid = Nil, false + return nil + } + + // Delegate to UUID Scan function + u.Valid = true + return u.UUID.Scan(src) +} diff --git a/cluster-autoscaler/vendor/github.com/satori/go.uuid/uuid.go b/cluster-autoscaler/vendor/github.com/satori/go.uuid/uuid.go index 9c7fbaa54e..a2b8e2ca2a 100644 --- a/cluster-autoscaler/vendor/github.com/satori/go.uuid/uuid.go +++ b/cluster-autoscaler/vendor/github.com/satori/go.uuid/uuid.go @@ -1,4 +1,4 @@ -// Copyright (C) 2013-2015 by Maxim Bublis +// Copyright (C) 2013-2018 by Maxim Bublis // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the @@ -26,23 +26,29 @@ package uuid import ( "bytes" - "crypto/md5" - "crypto/rand" - "crypto/sha1" - "database/sql/driver" - "encoding/binary" "encoding/hex" - "fmt" - "hash" - "net" - "os" - "sync" - "time" +) + +// Size of a UUID in bytes. +const Size = 16 + +// UUID representation compliant with specification +// described in RFC 4122. +type UUID [Size]byte + +// UUID versions +const ( + _ byte = iota + V1 + V2 + V3 + V4 + V5 ) // UUID layout variants. const ( - VariantNCS = iota + VariantNCS byte = iota VariantRFC4122 VariantMicrosoft VariantFuture @@ -55,136 +61,48 @@ const ( DomainOrg ) -// Difference in 100-nanosecond intervals between -// UUID epoch (October 15, 1582) and Unix epoch (January 1, 1970). -const epochStart = 122192928000000000 - -// Used in string method conversion -const dash byte = '-' - -// UUID v1/v2 storage. -var ( - storageMutex sync.Mutex - storageOnce sync.Once - epochFunc = unixTimeFunc - clockSequence uint16 - lastTime uint64 - hardwareAddr [6]byte - posixUID = uint32(os.Getuid()) - posixGID = uint32(os.Getgid()) -) - // String parse helpers. var ( urnPrefix = []byte("urn:uuid:") byteGroups = []int{8, 4, 4, 4, 12} ) -func initClockSequence() { - buf := make([]byte, 2) - safeRandom(buf) - clockSequence = binary.BigEndian.Uint16(buf) -} - -func initHardwareAddr() { - interfaces, err := net.Interfaces() - if err == nil { - for _, iface := range interfaces { - if len(iface.HardwareAddr) >= 6 { - copy(hardwareAddr[:], iface.HardwareAddr) - return - } - } - } - - // Initialize hardwareAddr randomly in case - // of real network interfaces absence - safeRandom(hardwareAddr[:]) - - // Set multicast bit as recommended in RFC 4122 - hardwareAddr[0] |= 0x01 -} - -func initStorage() { - initClockSequence() - initHardwareAddr() -} - -func safeRandom(dest []byte) { - if _, err := rand.Read(dest); err != nil { - panic(err) - } -} - -// Returns difference in 100-nanosecond intervals between -// UUID epoch (October 15, 1582) and current time. -// This is default epoch calculation function. -func unixTimeFunc() uint64 { - return epochStart + uint64(time.Now().UnixNano()/100) -} - -// UUID representation compliant with specification -// described in RFC 4122. -type UUID [16]byte - -// NullUUID can be used with the standard sql package to represent a -// UUID value that can be NULL in the database -type NullUUID struct { - UUID UUID - Valid bool -} - -// The nil UUID is special form of UUID that is specified to have all +// Nil is special form of UUID that is specified to have all // 128 bits set to zero. var Nil = UUID{} // Predefined namespace UUIDs. var ( - NamespaceDNS, _ = FromString("6ba7b810-9dad-11d1-80b4-00c04fd430c8") - NamespaceURL, _ = FromString("6ba7b811-9dad-11d1-80b4-00c04fd430c8") - NamespaceOID, _ = FromString("6ba7b812-9dad-11d1-80b4-00c04fd430c8") - NamespaceX500, _ = FromString("6ba7b814-9dad-11d1-80b4-00c04fd430c8") + NamespaceDNS = Must(FromString("6ba7b810-9dad-11d1-80b4-00c04fd430c8")) + NamespaceURL = Must(FromString("6ba7b811-9dad-11d1-80b4-00c04fd430c8")) + NamespaceOID = Must(FromString("6ba7b812-9dad-11d1-80b4-00c04fd430c8")) + NamespaceX500 = Must(FromString("6ba7b814-9dad-11d1-80b4-00c04fd430c8")) ) -// And returns result of binary AND of two UUIDs. -func And(u1 UUID, u2 UUID) UUID { - u := UUID{} - for i := 0; i < 16; i++ { - u[i] = u1[i] & u2[i] - } - return u -} - -// Or returns result of binary OR of two UUIDs. -func Or(u1 UUID, u2 UUID) UUID { - u := UUID{} - for i := 0; i < 16; i++ { - u[i] = u1[i] | u2[i] - } - return u -} - // Equal returns true if u1 and u2 equals, otherwise returns false. func Equal(u1 UUID, u2 UUID) bool { return bytes.Equal(u1[:], u2[:]) } // Version returns algorithm version used to generate UUID. -func (u UUID) Version() uint { - return uint(u[6] >> 4) +func (u UUID) Version() byte { + return u[6] >> 4 } // Variant returns UUID layout variant. -func (u UUID) Variant() uint { +func (u UUID) Variant() byte { switch { - case (u[8] & 0x80) == 0x00: + case (u[8] >> 7) == 0x00: return VariantNCS - case (u[8]&0xc0)|0x80 == 0x80: + case (u[8] >> 6) == 0x02: return VariantRFC4122 - case (u[8]&0xe0)|0xc0 == 0xc0: + case (u[8] >> 5) == 0x06: return VariantMicrosoft + case (u[8] >> 5) == 0x07: + fallthrough + default: + return VariantFuture } - return VariantFuture } // Bytes returns bytes slice representation of UUID. @@ -198,13 +116,13 @@ func (u UUID) String() string { buf := make([]byte, 36) hex.Encode(buf[0:8], u[0:4]) - buf[8] = dash + buf[8] = '-' hex.Encode(buf[9:13], u[4:6]) - buf[13] = dash + buf[13] = '-' hex.Encode(buf[14:18], u[6:8]) - buf[18] = dash + buf[18] = '-' hex.Encode(buf[19:23], u[8:10]) - buf[23] = dash + buf[23] = '-' hex.Encode(buf[24:], u[10:]) return string(buf) @@ -215,274 +133,29 @@ func (u *UUID) SetVersion(v byte) { u[6] = (u[6] & 0x0f) | (v << 4) } -// SetVariant sets variant bits as described in RFC 4122. -func (u *UUID) SetVariant() { - u[8] = (u[8] & 0xbf) | 0x80 -} - -// MarshalText implements the encoding.TextMarshaler interface. -// The encoding is the same as returned by String. -func (u UUID) MarshalText() (text []byte, err error) { - text = []byte(u.String()) - return -} - -// UnmarshalText implements the encoding.TextUnmarshaler interface. -// Following formats are supported: -// "6ba7b810-9dad-11d1-80b4-00c04fd430c8", -// "{6ba7b810-9dad-11d1-80b4-00c04fd430c8}", -// "urn:uuid:6ba7b810-9dad-11d1-80b4-00c04fd430c8" -func (u *UUID) UnmarshalText(text []byte) (err error) { - if len(text) < 32 { - err = fmt.Errorf("uuid: UUID string too short: %s", text) - return +// SetVariant sets variant bits. +func (u *UUID) SetVariant(v byte) { + switch v { + case VariantNCS: + u[8] = (u[8]&(0xff>>1) | (0x00 << 7)) + case VariantRFC4122: + u[8] = (u[8]&(0xff>>2) | (0x02 << 6)) + case VariantMicrosoft: + u[8] = (u[8]&(0xff>>3) | (0x06 << 5)) + case VariantFuture: + fallthrough + default: + u[8] = (u[8]&(0xff>>3) | (0x07 << 5)) } - - t := text[:] - braced := false - - if bytes.Equal(t[:9], urnPrefix) { - t = t[9:] - } else if t[0] == '{' { - braced = true - t = t[1:] - } - - b := u[:] - - for i, byteGroup := range byteGroups { - if i > 0 && t[0] == '-' { - t = t[1:] - } else if i > 0 && t[0] != '-' { - err = fmt.Errorf("uuid: invalid string format") - return - } - - if i == 2 { - if !bytes.Contains([]byte("012345"), []byte{t[0]}) { - err = fmt.Errorf("uuid: invalid version number: %s", t[0]) - return - } - } - - if len(t) < byteGroup { - err = fmt.Errorf("uuid: UUID string too short: %s", text) - return - } - - if i == 4 && len(t) > byteGroup && - ((braced && t[byteGroup] != '}') || len(t[byteGroup:]) > 1 || !braced) { - err = fmt.Errorf("uuid: UUID string too long: %s", t) - return - } - - _, err = hex.Decode(b[:byteGroup/2], t[:byteGroup]) - - if err != nil { - return - } - - t = t[byteGroup:] - b = b[byteGroup/2:] - } - - return } -// MarshalBinary implements the encoding.BinaryMarshaler interface. -func (u UUID) MarshalBinary() (data []byte, err error) { - data = u.Bytes() - return -} - -// UnmarshalBinary implements the encoding.BinaryUnmarshaler interface. -// It will return error if the slice isn't 16 bytes long. -func (u *UUID) UnmarshalBinary(data []byte) (err error) { - if len(data) != 16 { - err = fmt.Errorf("uuid: UUID must be exactly 16 bytes long, got %d bytes", len(data)) - return - } - copy(u[:], data) - - return -} - -// Value implements the driver.Valuer interface. -func (u UUID) Value() (driver.Value, error) { - return u.String(), nil -} - -// Scan implements the sql.Scanner interface. -// A 16-byte slice is handled by UnmarshalBinary, while -// a longer byte slice or a string is handled by UnmarshalText. -func (u *UUID) Scan(src interface{}) error { - switch src := src.(type) { - case []byte: - if len(src) == 16 { - return u.UnmarshalBinary(src) - } - return u.UnmarshalText(src) - - case string: - return u.UnmarshalText([]byte(src)) - } - - return fmt.Errorf("uuid: cannot convert %T to UUID", src) -} - -// Value implements the driver.Valuer interface. -func (u NullUUID) Value() (driver.Value, error) { - if !u.Valid { - return nil, nil - } - // Delegate to UUID Value function - return u.UUID.Value() -} - -// Scan implements the sql.Scanner interface. -func (u *NullUUID) Scan(src interface{}) error { - if src == nil { - u.UUID, u.Valid = Nil, false - return nil - } - - // Delegate to UUID Scan function - u.Valid = true - return u.UUID.Scan(src) -} - -// FromBytes returns UUID converted from raw byte slice input. -// It will return error if the slice isn't 16 bytes long. -func FromBytes(input []byte) (u UUID, err error) { - err = u.UnmarshalBinary(input) - return -} - -// FromBytesOrNil returns UUID converted from raw byte slice input. -// Same behavior as FromBytes, but returns a Nil UUID on error. -func FromBytesOrNil(input []byte) UUID { - uuid, err := FromBytes(input) +// Must is a helper that wraps a call to a function returning (UUID, error) +// and panics if the error is non-nil. It is intended for use in variable +// initializations such as +// var packageUUID = uuid.Must(uuid.FromString("123e4567-e89b-12d3-a456-426655440000")); +func Must(u UUID, err error) UUID { if err != nil { - return Nil + panic(err) } - return uuid -} - -// FromString returns UUID parsed from string input. -// Input is expected in a form accepted by UnmarshalText. -func FromString(input string) (u UUID, err error) { - err = u.UnmarshalText([]byte(input)) - return -} - -// FromStringOrNil returns UUID parsed from string input. -// Same behavior as FromString, but returns a Nil UUID on error. -func FromStringOrNil(input string) UUID { - uuid, err := FromString(input) - if err != nil { - return Nil - } - return uuid -} - -// Returns UUID v1/v2 storage state. -// Returns epoch timestamp, clock sequence, and hardware address. -func getStorage() (uint64, uint16, []byte) { - storageOnce.Do(initStorage) - - storageMutex.Lock() - defer storageMutex.Unlock() - - timeNow := epochFunc() - // Clock changed backwards since last UUID generation. - // Should increase clock sequence. - if timeNow <= lastTime { - clockSequence++ - } - lastTime = timeNow - - return timeNow, clockSequence, hardwareAddr[:] -} - -// NewV1 returns UUID based on current timestamp and MAC address. -func NewV1() UUID { - u := UUID{} - - timeNow, clockSeq, hardwareAddr := getStorage() - - binary.BigEndian.PutUint32(u[0:], uint32(timeNow)) - binary.BigEndian.PutUint16(u[4:], uint16(timeNow>>32)) - binary.BigEndian.PutUint16(u[6:], uint16(timeNow>>48)) - binary.BigEndian.PutUint16(u[8:], clockSeq) - - copy(u[10:], hardwareAddr) - - u.SetVersion(1) - u.SetVariant() - - return u -} - -// NewV2 returns DCE Security UUID based on POSIX UID/GID. -func NewV2(domain byte) UUID { - u := UUID{} - - timeNow, clockSeq, hardwareAddr := getStorage() - - switch domain { - case DomainPerson: - binary.BigEndian.PutUint32(u[0:], posixUID) - case DomainGroup: - binary.BigEndian.PutUint32(u[0:], posixGID) - } - - binary.BigEndian.PutUint16(u[4:], uint16(timeNow>>32)) - binary.BigEndian.PutUint16(u[6:], uint16(timeNow>>48)) - binary.BigEndian.PutUint16(u[8:], clockSeq) - u[9] = domain - - copy(u[10:], hardwareAddr) - - u.SetVersion(2) - u.SetVariant() - - return u -} - -// NewV3 returns UUID based on MD5 hash of namespace UUID and name. -func NewV3(ns UUID, name string) UUID { - u := newFromHash(md5.New(), ns, name) - u.SetVersion(3) - u.SetVariant() - - return u -} - -// NewV4 returns random generated UUID. -func NewV4() UUID { - u := UUID{} - safeRandom(u[:]) - u.SetVersion(4) - u.SetVariant() - - return u -} - -// NewV5 returns UUID based on SHA-1 hash of namespace UUID and name. -func NewV5(ns UUID, name string) UUID { - u := newFromHash(sha1.New(), ns, name) - u.SetVersion(5) - u.SetVariant() - - return u -} - -// Returns UUID based on hashing of namespace UUID and name. -func newFromHash(h hash.Hash, ns UUID, name string) UUID { - u := UUID{} - h.Write(ns[:]) - h.Write([]byte(name)) - copy(u[:], h.Sum(nil)) - return u } diff --git a/cluster-autoscaler/vendor/google.golang.org/api/CONTRIBUTORS b/cluster-autoscaler/vendor/google.golang.org/api/CONTRIBUTORS index b8928e6164..fe55ebff07 100644 --- a/cluster-autoscaler/vendor/google.golang.org/api/CONTRIBUTORS +++ b/cluster-autoscaler/vendor/google.golang.org/api/CONTRIBUTORS @@ -48,6 +48,7 @@ Kunpei Sakai Matthew Whisenhunt Michael McGreevy Nick Craig-Wood +Robbie Trencheny Ross Light Sarah Adams Scott Van Woudenberg diff --git a/cluster-autoscaler/vendor/google.golang.org/api/compute/v0.alpha/compute-api.json b/cluster-autoscaler/vendor/google.golang.org/api/compute/v0.alpha/compute-api.json index b60a8bfdc7..481d09e290 100644 --- a/cluster-autoscaler/vendor/google.golang.org/api/compute/v0.alpha/compute-api.json +++ b/cluster-autoscaler/vendor/google.golang.org/api/compute/v0.alpha/compute-api.json @@ -29,7 +29,7 @@ "description": "Creates and runs virtual machines on Google Cloud Platform.", "discoveryVersion": "v1", "documentationLink": "https://developers.google.com/compute/docs/reference/latest/", - "etag": "\"Zkyw9ACJZUvcYmlFaKGChzhmtnE/uu5Fb8xKeF9Z7ooFYwXgp7bFFJg\"", + "etag": "\"Zkyw9ACJZUvcYmlFaKGChzhmtnE/KNWJ1HZYolCRG_Vy_LaMdDtL5UU\"", "icons": { "x16": "https://www.google.com/images/icons/product/compute_engine-16.png", "x32": "https://www.google.com/images/icons/product/compute_engine-32.png" @@ -17749,6 +17749,71 @@ "https://www.googleapis.com/auth/compute.readonly" ] }, + "getNatMappingInfo": { + "description": "Retrieves runtime Nat mapping information of VM endpoints.", + "httpMethod": "GET", + "id": "compute.routers.getNatMappingInfo", + "parameterOrder": [ + "project", + "region", + "router" + ], + "parameters": { + "filter": { + "description": "A filter expression that filters resources listed in the response. The expression must specify the field name, a comparison operator, and the value that you want to use for filtering. The value must be a string, a number, or a boolean. The comparison operator must be either =, !=, \u003e, or \u003c.\n\nFor example, if you are filtering Compute Engine instances, you can exclude instances named example-instance by specifying name != example-instance.\n\nYou can also filter nested fields. For example, you could specify scheduling.automaticRestart = false to include instances only if they are not scheduled for automatic restarts. You can use filtering on nested fields to filter based on resource labels.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart = true) (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND expression. However, you can include AND and OR expressions explicitly. For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel Broadwell\") AND (scheduling.automaticRestart = true).", + "location": "query", + "type": "string" + }, + "maxResults": { + "default": "500", + "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)", + "format": "uint32", + "location": "query", + "minimum": "0", + "type": "integer" + }, + "orderBy": { + "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.", + "location": "query", + "type": "string" + }, + "pageToken": { + "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.", + "location": "query", + "type": "string" + }, + "project": { + "description": "Project ID for this request.", + "location": "path", + "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))", + "required": true, + "type": "string" + }, + "region": { + "description": "Name of the region for this request.", + "location": "path", + "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?", + "required": true, + "type": "string" + }, + "router": { + "description": "Name of the Router resource to query for Nat Mapping information of VM endpoints.", + "location": "path", + "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?", + "required": true, + "type": "string" + } + }, + "path": "{project}/regions/{region}/routers/{router}/getNatMappingInfo", + "response": { + "$ref": "VmEndpointNatMappingsList" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/compute", + "https://www.googleapis.com/auth/compute.readonly" + ] + }, "getRouterStatus": { "description": "Retrieves runtime information of the specified router.", "httpMethod": "GET", @@ -23842,7 +23907,6 @@ } } }, - "revision": "20180518", "rootUrl": "https://www.googleapis.com/", "schemas": { "AcceleratorConfig": { @@ -24416,9 +24480,11 @@ "description": "[Output Only] The status of the address, which can be one of RESERVING, RESERVED, or IN_USE. An address that is RESERVING is currently in the process of being reserved. A RESERVED address is currently reserved and available to use. An IN_USE address is currently being used by another resource and is not available.", "enum": [ "IN_USE", - "RESERVED" + "RESERVED", + "RESERVING" ], "enumDescriptions": [ + "", "", "" ], @@ -28480,6 +28546,10 @@ ], "type": "string" }, + "allPorts": { + "description": "This field is used along with the backend_service field for internal load balancing or with the target field for internal TargetInstance. This field cannot be used with port or portRange fields.\n\nWhen the load balancing scheme is INTERNAL and protocol is TCP/UDP, specify this field to allow packets addressed to any ports will be forwarded to the backends configured with this forwarding rule.", + "type": "boolean" + }, "backendService": { "description": "This field is not used for external load balancing.\n\nFor internal load balancing, this field identifies the BackendService resource to receive the matched traffic.", "type": "string" @@ -35775,7 +35845,7 @@ "type": "object" }, "ManagedInstance": { - "description": "Next available tag: 12", + "description": "A Managed Instance resource.", "id": "ManagedInstance", "properties": { "currentAction": { @@ -37308,6 +37378,21 @@ "nodeType": { "description": "The type of this node.", "type": "string" + }, + "status": { + "enum": [ + "CREATING", + "DELETING", + "INVALID", + "READY" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" } }, "type": "object" @@ -39086,6 +39171,7 @@ "IN_USE_MAINTENANCE_WINDOWS", "LOCAL_SSD_TOTAL_GB", "NETWORKS", + "NETWORK_ENDPOINT_GROUPS", "NVIDIA_K80_GPUS", "NVIDIA_P100_GPUS", "NVIDIA_P100_VWS_GPUS", @@ -39173,6 +39259,7 @@ "", "", "", + "", "" ], "type": "string" @@ -41702,6 +41789,16 @@ }, "type": "array" }, + "icmpIdleTimeoutSec": { + "description": "Timeout (in seconds) for ICMP connections. Defaults to 30s if not set.", + "format": "int32", + "type": "integer" + }, + "minPortsPerVm": { + "description": "Minimum number of ports allocated to a VM from this NAT config. If not set, a default number of ports is allocated to a VM. This gets rounded up to the nearest power of 2. Eg. if the value of this field is 50, at least 64 ports will be allocated to a VM.", + "format": "int32", + "type": "integer" + }, "name": { "description": "Unique name of this Nat service. The name must be 1-63 characters long and comply with RFC1035.", "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?", @@ -41746,6 +41843,21 @@ "$ref": "RouterNatSubnetworkToNat" }, "type": "array" + }, + "tcpEstablishedIdleTimeoutSec": { + "description": "Timeout (in seconds) for TCP established connections. Defaults to 1200s if not set.", + "format": "int32", + "type": "integer" + }, + "tcpTransitoryIdleTimeoutSec": { + "description": "Timeout (in seconds) for TCP transitory connections. Defaults to 30s if not set.", + "format": "int32", + "type": "integer" + }, + "udpIdleTimeoutSec": { + "description": "Timeout (in seconds) for UDP connections. Defaults to 30s if not set.", + "format": "int32", + "type": "integer" } }, "type": "object" @@ -46688,6 +46800,162 @@ }, "type": "object" }, + "VmEndpointNatMappings": { + "description": "Contain information of Nat mapping for a VM endpoint (i.e., NIC).", + "id": "VmEndpointNatMappings", + "properties": { + "instanceName": { + "description": "Name of the VM instance which the endpoint belongs to", + "type": "string" + }, + "interfaceNatMappings": { + "items": { + "$ref": "VmEndpointNatMappingsInterfaceNatMappings" + }, + "type": "array" + } + }, + "type": "object" + }, + "VmEndpointNatMappingsInterfaceNatMappings": { + "description": "Contain information of Nat mapping for an interface of this endpoint.", + "id": "VmEndpointNatMappingsInterfaceNatMappings", + "properties": { + "natIpPortRanges": { + "description": "A list of all IP:port-range mappings assigned to this interface. These ranges are inclusive, that is, both the first and the last ports can be used for NAT. Example: [\"2.2.2.2:12345-12355\", \"1.1.1.1:2234-2234\"].", + "items": { + "type": "string" + }, + "type": "array" + }, + "numTotalNatPorts": { + "description": "Total number of ports across all NAT IPs allocated to this interface. It equals to the aggregated port number in the field nat_ip_port_ranges.", + "format": "int32", + "type": "integer" + }, + "sourceAliasIpRange": { + "description": "Alias IP range for this interface endpoint. It will be a private (RFC 1918) IP range. Examples: \"10.33.4.55/32\", or \"192.168.5.0/24\".", + "type": "string" + }, + "sourceVirtualIp": { + "description": "Primary IP of the VM for this NIC.", + "type": "string" + } + }, + "type": "object" + }, + "VmEndpointNatMappingsList": { + "description": "Contains a list of VmEndpointNatMappings.", + "id": "VmEndpointNatMappingsList", + "properties": { + "id": { + "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.", + "type": "string" + }, + "kind": { + "default": "compute#vmEndpointNatMappingsList", + "description": "[Output Only] Type of resource. Always compute#vmEndpointNatMappingsList for lists of Nat mappings of VM endpoints.", + "type": "string" + }, + "nextPageToken": { + "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.", + "type": "string" + }, + "result": { + "description": "[Output Only] A list of Nat mapping information of VM endpoints.", + "items": { + "$ref": "VmEndpointNatMappings" + }, + "type": "array" + }, + "selfLink": { + "description": "[Output Only] Server-defined URL for this resource.", + "type": "string" + }, + "warning": { + "description": "[Output Only] Informational warning message.", + "properties": { + "code": { + "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.", + "enum": [ + "CLEANUP_FAILED", + "DEPRECATED_RESOURCE_USED", + "DEPRECATED_TYPE_USED", + "DISK_SIZE_LARGER_THAN_IMAGE_SIZE", + "EXPERIMENTAL_TYPE_USED", + "EXTERNAL_API_WARNING", + "FIELD_VALUE_OVERRIDEN", + "INJECTED_KERNELS_DEPRECATED", + "MISSING_TYPE_DEPENDENCY", + "NEXT_HOP_ADDRESS_NOT_ASSIGNED", + "NEXT_HOP_CANNOT_IP_FORWARD", + "NEXT_HOP_INSTANCE_NOT_FOUND", + "NEXT_HOP_INSTANCE_NOT_ON_NETWORK", + "NEXT_HOP_NOT_RUNNING", + "NOT_CRITICAL_ERROR", + "NO_RESULTS_ON_PAGE", + "REQUIRED_TOS_AGREEMENT", + "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING", + "RESOURCE_NOT_DELETED", + "SCHEMA_VALIDATION_IGNORED", + "SINGLE_INSTANCE_PROPERTY_TEMPLATE", + "UNDECLARED_PROPERTIES", + "UNREACHABLE" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "data": { + "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }", + "items": { + "properties": { + "key": { + "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).", + "type": "string" + }, + "value": { + "description": "[Output Only] A warning data value corresponding to the key.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "message": { + "description": "[Output Only] A human-readable description of the warning code.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, "VpnGateway": { "description": "Represents a VPN gateway resource.", "id": "VpnGateway", @@ -46741,20 +47009,6 @@ "description": "URL of the network to which this VPN gateway is attached. Provided by the client when the VPN gateway is created.", "type": "string" }, - "redundancy": { - "description": "The redundancy mode configured for this VPN gateway. Possible values are ACTIVE_ACTIVE and NONE. If set to ACTIVE_ACTIVE, two VPN interfaces are created thereby providing higher availability. If set to NONE, only one interface is created with a lower availability SLA.\n\nIf this field is specified, either 2 or 1 external IP addresses (depending on the value of specified redundancy) are automatically allocated for use with this VPN gateway, and incoming traffic on the external addresses to ports ESP, UDP:500 and UDP:4500 are automatically forwarded to this gateway.", - "enum": [ - "ACTIVE_ACTIVE", - "NONE", - "REDUNDANCY_UNSPECIFIED" - ], - "enumDescriptions": [ - "", - "", - "" - ], - "type": "string" - }, "region": { "description": "[Output Only] URL of the region where the VPN gateway resides.", "type": "string" @@ -47235,11 +47489,11 @@ "type": "string" }, "vpnGateway": { - "description": "URL of the VPN gateway with which this VPN tunnel is associated. Provided by the client when the VPN tunnel is created. This must be used (instead of target_vpn_gateway) if a VPN gateway resource is created with redundancy.\n\nVPN gateway resource provides a way to create a highly available VPN setup.", + "description": "URL of the VPN gateway with which this VPN tunnel is associated. Provided by the client when the VPN tunnel is created. This must be used (instead of target_vpn_gateway) if a High Availability VPN gateway resource is created.", "type": "string" }, "vpnGatewayInterface": { - "description": "The interface ID of the VPN gateway with which this VPN tunnel is associated. If the VPN gateway has redundancy other than NONE, this field is required to identify which interface of the VPN gateway to use.", + "description": "The interface ID of the VPN gateway with which this VPN tunnel is associated.", "format": "int32", "type": "integer" } diff --git a/cluster-autoscaler/vendor/google.golang.org/api/compute/v0.alpha/compute-gen.go b/cluster-autoscaler/vendor/google.golang.org/api/compute/v0.alpha/compute-gen.go index 50c4ab5587..88d030a0c2 100644 --- a/cluster-autoscaler/vendor/google.golang.org/api/compute/v0.alpha/compute-gen.go +++ b/cluster-autoscaler/vendor/google.golang.org/api/compute/v0.alpha/compute-gen.go @@ -1628,6 +1628,7 @@ type Address struct { // Possible values: // "IN_USE" // "RESERVED" + // "RESERVING" Status string `json:"status,omitempty"` // Subnetwork: The URL of the subnetwork in which to reserve the @@ -7901,6 +7902,16 @@ type ForwardingRule struct { // "UDP" IPProtocol string `json:"IPProtocol,omitempty"` + // AllPorts: This field is used along with the backend_service field for + // internal load balancing or with the target field for internal + // TargetInstance. This field cannot be used with port or portRange + // fields. + // + // When the load balancing scheme is INTERNAL and protocol is TCP/UDP, + // specify this field to allow packets addressed to any ports will be + // forwarded to the backends configured with this forwarding rule. + AllPorts bool `json:"allPorts,omitempty"` + // BackendService: This field is not used for external load // balancing. // @@ -18227,7 +18238,7 @@ func (s *MachineTypesScopedListWarningData) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } -// ManagedInstance: Next available tag: 12 +// ManagedInstance: A Managed Instance resource. type ManagedInstance struct { // CurrentAction: [Output Only] The current action that the managed // instance group has scheduled for the instance. Possible values: @@ -20503,6 +20514,13 @@ type NodeGroupNode struct { // NodeType: The type of this node. NodeType string `json:"nodeType,omitempty"` + // Possible values: + // "CREATING" + // "DELETING" + // "INVALID" + // "READY" + Status string `json:"status,omitempty"` + // ForceSendFields is a list of field names (e.g. "Index") to // unconditionally include in API requests. By default, fields with // empty values are omitted from API requests. However, any non-pointer, @@ -23139,6 +23157,7 @@ type Quota struct { // "IN_USE_MAINTENANCE_WINDOWS" // "LOCAL_SSD_TOTAL_GB" // "NETWORKS" + // "NETWORK_ENDPOINT_GROUPS" // "NVIDIA_K80_GPUS" // "NVIDIA_P100_GPUS" // "NVIDIA_P100_VWS_GPUS" @@ -26907,6 +26926,16 @@ type RouterNat struct { // shrink based on the number of VMs configured to use NAT. AutoAllocatedNatIps []string `json:"autoAllocatedNatIps,omitempty"` + // IcmpIdleTimeoutSec: Timeout (in seconds) for ICMP connections. + // Defaults to 30s if not set. + IcmpIdleTimeoutSec int64 `json:"icmpIdleTimeoutSec,omitempty"` + + // MinPortsPerVm: Minimum number of ports allocated to a VM from this + // NAT config. If not set, a default number of ports is allocated to a + // VM. This gets rounded up to the nearest power of 2. Eg. if the value + // of this field is 50, at least 64 ports will be allocated to a VM. + MinPortsPerVm int64 `json:"minPortsPerVm,omitempty"` + // Name: Unique name of this Nat service. The name must be 1-63 // characters long and comply with RFC1035. Name string `json:"name,omitempty"` @@ -26941,6 +26970,18 @@ type RouterNat struct { // is selected for the SubnetworkIpRangeToNatOption above. Subnetworks []*RouterNatSubnetworkToNat `json:"subnetworks,omitempty"` + // TcpEstablishedIdleTimeoutSec: Timeout (in seconds) for TCP + // established connections. Defaults to 1200s if not set. + TcpEstablishedIdleTimeoutSec int64 `json:"tcpEstablishedIdleTimeoutSec,omitempty"` + + // TcpTransitoryIdleTimeoutSec: Timeout (in seconds) for TCP transitory + // connections. Defaults to 30s if not set. + TcpTransitoryIdleTimeoutSec int64 `json:"tcpTransitoryIdleTimeoutSec,omitempty"` + + // UdpIdleTimeoutSec: Timeout (in seconds) for UDP connections. Defaults + // to 30s if not set. + UdpIdleTimeoutSec int64 `json:"udpIdleTimeoutSec,omitempty"` + // ForceSendFields is a list of field names (e.g. "AutoAllocatedNatIps") // to unconditionally include in API requests. By default, fields with // empty values are omitted from API requests. However, any non-pointer, @@ -34326,6 +34367,241 @@ func (s *UsageExportLocation) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// VmEndpointNatMappings: Contain information of Nat mapping for a VM +// endpoint (i.e., NIC). +type VmEndpointNatMappings struct { + // InstanceName: Name of the VM instance which the endpoint belongs to + InstanceName string `json:"instanceName,omitempty"` + + InterfaceNatMappings []*VmEndpointNatMappingsInterfaceNatMappings `json:"interfaceNatMappings,omitempty"` + + // ForceSendFields is a list of field names (e.g. "InstanceName") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "InstanceName") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *VmEndpointNatMappings) MarshalJSON() ([]byte, error) { + type NoMethod VmEndpointNatMappings + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// VmEndpointNatMappingsInterfaceNatMappings: Contain information of Nat +// mapping for an interface of this endpoint. +type VmEndpointNatMappingsInterfaceNatMappings struct { + // NatIpPortRanges: A list of all IP:port-range mappings assigned to + // this interface. These ranges are inclusive, that is, both the first + // and the last ports can be used for NAT. Example: + // ["2.2.2.2:12345-12355", "1.1.1.1:2234-2234"]. + NatIpPortRanges []string `json:"natIpPortRanges,omitempty"` + + // NumTotalNatPorts: Total number of ports across all NAT IPs allocated + // to this interface. It equals to the aggregated port number in the + // field nat_ip_port_ranges. + NumTotalNatPorts int64 `json:"numTotalNatPorts,omitempty"` + + // SourceAliasIpRange: Alias IP range for this interface endpoint. It + // will be a private (RFC 1918) IP range. Examples: "10.33.4.55/32", or + // "192.168.5.0/24". + SourceAliasIpRange string `json:"sourceAliasIpRange,omitempty"` + + // SourceVirtualIp: Primary IP of the VM for this NIC. + SourceVirtualIp string `json:"sourceVirtualIp,omitempty"` + + // ForceSendFields is a list of field names (e.g. "NatIpPortRanges") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "NatIpPortRanges") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *VmEndpointNatMappingsInterfaceNatMappings) MarshalJSON() ([]byte, error) { + type NoMethod VmEndpointNatMappingsInterfaceNatMappings + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// VmEndpointNatMappingsList: Contains a list of VmEndpointNatMappings. +type VmEndpointNatMappingsList struct { + // Id: [Output Only] The unique identifier for the resource. This + // identifier is defined by the server. + Id string `json:"id,omitempty"` + + // Kind: [Output Only] Type of resource. Always + // compute#vmEndpointNatMappingsList for lists of Nat mappings of VM + // endpoints. + Kind string `json:"kind,omitempty"` + + // NextPageToken: [Output Only] This token allows you to get the next + // page of results for list requests. If the number of results is larger + // than maxResults, use the nextPageToken as a value for the query + // parameter pageToken in the next list request. Subsequent list + // requests will have their own nextPageToken to continue paging through + // the results. + NextPageToken string `json:"nextPageToken,omitempty"` + + // Result: [Output Only] A list of Nat mapping information of VM + // endpoints. + Result []*VmEndpointNatMappings `json:"result,omitempty"` + + // SelfLink: [Output Only] Server-defined URL for this resource. + SelfLink string `json:"selfLink,omitempty"` + + // Warning: [Output Only] Informational warning message. + Warning *VmEndpointNatMappingsListWarning `json:"warning,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Id") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Id") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *VmEndpointNatMappingsList) MarshalJSON() ([]byte, error) { + type NoMethod VmEndpointNatMappingsList + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// VmEndpointNatMappingsListWarning: [Output Only] Informational warning +// message. +type VmEndpointNatMappingsListWarning struct { + // Code: [Output Only] A warning code, if applicable. For example, + // Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in + // the response. + // + // Possible values: + // "CLEANUP_FAILED" + // "DEPRECATED_RESOURCE_USED" + // "DEPRECATED_TYPE_USED" + // "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" + // "EXPERIMENTAL_TYPE_USED" + // "EXTERNAL_API_WARNING" + // "FIELD_VALUE_OVERRIDEN" + // "INJECTED_KERNELS_DEPRECATED" + // "MISSING_TYPE_DEPENDENCY" + // "NEXT_HOP_ADDRESS_NOT_ASSIGNED" + // "NEXT_HOP_CANNOT_IP_FORWARD" + // "NEXT_HOP_INSTANCE_NOT_FOUND" + // "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" + // "NEXT_HOP_NOT_RUNNING" + // "NOT_CRITICAL_ERROR" + // "NO_RESULTS_ON_PAGE" + // "REQUIRED_TOS_AGREEMENT" + // "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" + // "RESOURCE_NOT_DELETED" + // "SCHEMA_VALIDATION_IGNORED" + // "SINGLE_INSTANCE_PROPERTY_TEMPLATE" + // "UNDECLARED_PROPERTIES" + // "UNREACHABLE" + Code string `json:"code,omitempty"` + + // Data: [Output Only] Metadata about this warning in key: value format. + // For example: + // "data": [ { "key": "scope", "value": "zones/us-east1-d" } + Data []*VmEndpointNatMappingsListWarningData `json:"data,omitempty"` + + // Message: [Output Only] A human-readable description of the warning + // code. + Message string `json:"message,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Code") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Code") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *VmEndpointNatMappingsListWarning) MarshalJSON() ([]byte, error) { + type NoMethod VmEndpointNatMappingsListWarning + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type VmEndpointNatMappingsListWarningData struct { + // Key: [Output Only] A key that provides more detail on the warning + // being returned. For example, for warnings where there are no results + // in a list request for a particular zone, this key might be scope and + // the key value might be the zone name. Other examples might be a key + // indicating a deprecated resource and a suggested replacement, or a + // warning about invalid network settings (for example, if an instance + // attempts to perform IP forwarding but is not enabled for IP + // forwarding). + Key string `json:"key,omitempty"` + + // Value: [Output Only] A warning data value corresponding to the key. + Value string `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Key") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Key") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *VmEndpointNatMappingsListWarningData) MarshalJSON() ([]byte, error) { + type NoMethod VmEndpointNatMappingsListWarningData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // VpnGateway: Represents a VPN gateway resource. type VpnGateway struct { // CreationTimestamp: [Output Only] Creation timestamp in RFC3339 text @@ -34373,24 +34649,6 @@ type VpnGateway struct { // Provided by the client when the VPN gateway is created. Network string `json:"network,omitempty"` - // Redundancy: The redundancy mode configured for this VPN gateway. - // Possible values are ACTIVE_ACTIVE and NONE. If set to ACTIVE_ACTIVE, - // two VPN interfaces are created thereby providing higher availability. - // If set to NONE, only one interface is created with a lower - // availability SLA. - // - // If this field is specified, either 2 or 1 external IP addresses - // (depending on the value of specified redundancy) are automatically - // allocated for use with this VPN gateway, and incoming traffic on the - // external addresses to ports ESP, UDP:500 and UDP:4500 are - // automatically forwarded to this gateway. - // - // Possible values: - // "ACTIVE_ACTIVE" - // "NONE" - // "REDUNDANCY_UNSPECIFIED" - Redundancy string `json:"redundancy,omitempty"` - // Region: [Output Only] URL of the region where the VPN gateway // resides. Region string `json:"region,omitempty"` @@ -35015,17 +35273,12 @@ type VpnTunnel struct { // VpnGateway: URL of the VPN gateway with which this VPN tunnel is // associated. Provided by the client when the VPN tunnel is created. - // This must be used (instead of target_vpn_gateway) if a VPN gateway - // resource is created with redundancy. - // - // VPN gateway resource provides a way to create a highly available VPN - // setup. + // This must be used (instead of target_vpn_gateway) if a High + // Availability VPN gateway resource is created. VpnGateway string `json:"vpnGateway,omitempty"` // VpnGatewayInterface: The interface ID of the VPN gateway with which - // this VPN tunnel is associated. If the VPN gateway has redundancy - // other than NONE, this field is required to identify which interface - // of the VPN gateway to use. + // this VPN tunnel is associated. VpnGatewayInterface int64 `json:"vpnGatewayInterface,omitempty"` // ServerResponse contains the HTTP response code and headers from the @@ -108279,6 +108532,276 @@ func (c *RoutersGetCall) Do(opts ...googleapi.CallOption) (*Router, error) { } +// method id "compute.routers.getNatMappingInfo": + +type RoutersGetNatMappingInfoCall struct { + s *Service + project string + region string + router string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// GetNatMappingInfo: Retrieves runtime Nat mapping information of VM +// endpoints. +func (r *RoutersService) GetNatMappingInfo(project string, region string, router string) *RoutersGetNatMappingInfoCall { + c := &RoutersGetNatMappingInfoCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.project = project + c.region = region + c.router = router + return c +} + +// Filter sets the optional parameter "filter": A filter expression that +// filters resources listed in the response. The expression must specify +// the field name, a comparison operator, and the value that you want to +// use for filtering. The value must be a string, a number, or a +// boolean. The comparison operator must be either =, !=, >, or <. +// +// For example, if you are filtering Compute Engine instances, you can +// exclude instances named example-instance by specifying name != +// example-instance. +// +// You can also filter nested fields. For example, you could specify +// scheduling.automaticRestart = false to include instances only if they +// are not scheduled for automatic restarts. You can use filtering on +// nested fields to filter based on resource labels. +// +// To filter on multiple expressions, provide each separate expression +// within parentheses. For example, (scheduling.automaticRestart = true) +// (cpuPlatform = "Intel Skylake"). By default, each expression is an +// AND expression. However, you can include AND and OR expressions +// explicitly. For example, (cpuPlatform = "Intel Skylake") OR +// (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = +// true). +func (c *RoutersGetNatMappingInfoCall) Filter(filter string) *RoutersGetNatMappingInfoCall { + c.urlParams_.Set("filter", filter) + return c +} + +// MaxResults sets the optional parameter "maxResults": The maximum +// number of results per page that should be returned. If the number of +// available results is larger than maxResults, Compute Engine returns a +// nextPageToken that can be used to get the next page of results in +// subsequent list requests. Acceptable values are 0 to 500, inclusive. +// (Default: 500) +func (c *RoutersGetNatMappingInfoCall) MaxResults(maxResults int64) *RoutersGetNatMappingInfoCall { + c.urlParams_.Set("maxResults", fmt.Sprint(maxResults)) + return c +} + +// OrderBy sets the optional parameter "orderBy": Sorts list results by +// a certain order. By default, results are returned in alphanumerical +// order based on the resource name. +// +// You can also sort results in descending order based on the creation +// timestamp using orderBy="creationTimestamp desc". This sorts results +// based on the creationTimestamp field in reverse chronological order +// (newest result first). Use this to sort resources like operations so +// that the newest operation is returned first. +// +// Currently, only sorting by name or creationTimestamp desc is +// supported. +func (c *RoutersGetNatMappingInfoCall) OrderBy(orderBy string) *RoutersGetNatMappingInfoCall { + c.urlParams_.Set("orderBy", orderBy) + return c +} + +// PageToken sets the optional parameter "pageToken": Specifies a page +// token to use. Set pageToken to the nextPageToken returned by a +// previous list request to get the next page of results. +func (c *RoutersGetNatMappingInfoCall) PageToken(pageToken string) *RoutersGetNatMappingInfoCall { + c.urlParams_.Set("pageToken", pageToken) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *RoutersGetNatMappingInfoCall) Fields(s ...googleapi.Field) *RoutersGetNatMappingInfoCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *RoutersGetNatMappingInfoCall) IfNoneMatch(entityTag string) *RoutersGetNatMappingInfoCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *RoutersGetNatMappingInfoCall) Context(ctx context.Context) *RoutersGetNatMappingInfoCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *RoutersGetNatMappingInfoCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *RoutersGetNatMappingInfoCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/routers/{router}/getNatMappingInfo") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "project": c.project, + "region": c.region, + "router": c.router, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "compute.routers.getNatMappingInfo" call. +// Exactly one of *VmEndpointNatMappingsList or error will be non-nil. +// Any non-2xx status code is an error. Response headers are in either +// *VmEndpointNatMappingsList.ServerResponse.Header or (if a response +// was returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *RoutersGetNatMappingInfoCall) Do(opts ...googleapi.CallOption) (*VmEndpointNatMappingsList, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &VmEndpointNatMappingsList{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Retrieves runtime Nat mapping information of VM endpoints.", + // "httpMethod": "GET", + // "id": "compute.routers.getNatMappingInfo", + // "parameterOrder": [ + // "project", + // "region", + // "router" + // ], + // "parameters": { + // "filter": { + // "description": "A filter expression that filters resources listed in the response. The expression must specify the field name, a comparison operator, and the value that you want to use for filtering. The value must be a string, a number, or a boolean. The comparison operator must be either =, !=, \u003e, or \u003c.\n\nFor example, if you are filtering Compute Engine instances, you can exclude instances named example-instance by specifying name != example-instance.\n\nYou can also filter nested fields. For example, you could specify scheduling.automaticRestart = false to include instances only if they are not scheduled for automatic restarts. You can use filtering on nested fields to filter based on resource labels.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart = true) (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND expression. However, you can include AND and OR expressions explicitly. For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel Broadwell\") AND (scheduling.automaticRestart = true).", + // "location": "query", + // "type": "string" + // }, + // "maxResults": { + // "default": "500", + // "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)", + // "format": "uint32", + // "location": "query", + // "minimum": "0", + // "type": "integer" + // }, + // "orderBy": { + // "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.", + // "location": "query", + // "type": "string" + // }, + // "pageToken": { + // "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.", + // "location": "query", + // "type": "string" + // }, + // "project": { + // "description": "Project ID for this request.", + // "location": "path", + // "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))", + // "required": true, + // "type": "string" + // }, + // "region": { + // "description": "Name of the region for this request.", + // "location": "path", + // "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?", + // "required": true, + // "type": "string" + // }, + // "router": { + // "description": "Name of the Router resource to query for Nat Mapping information of VM endpoints.", + // "location": "path", + // "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?", + // "required": true, + // "type": "string" + // } + // }, + // "path": "{project}/regions/{region}/routers/{router}/getNatMappingInfo", + // "response": { + // "$ref": "VmEndpointNatMappingsList" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform", + // "https://www.googleapis.com/auth/compute", + // "https://www.googleapis.com/auth/compute.readonly" + // ] + // } + +} + +// Pages invokes f for each page of results. +// A non-nil error returned from f will halt the iteration. +// The provided context supersedes any context provided to the Context method. +func (c *RoutersGetNatMappingInfoCall) Pages(ctx context.Context, f func(*VmEndpointNatMappingsList) error) error { + c.ctx_ = ctx + defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point + for { + x, err := c.Do() + if err != nil { + return err + } + if err := f(x); err != nil { + return err + } + if x.NextPageToken == "" { + return nil + } + c.PageToken(x.NextPageToken) + } +} + // method id "compute.routers.getRouterStatus": type RoutersGetRouterStatusCall struct { diff --git a/cluster-autoscaler/vendor/google.golang.org/api/compute/v0.beta/compute-api.json b/cluster-autoscaler/vendor/google.golang.org/api/compute/v0.beta/compute-api.json index ca39228206..fb646841b6 100644 --- a/cluster-autoscaler/vendor/google.golang.org/api/compute/v0.beta/compute-api.json +++ b/cluster-autoscaler/vendor/google.golang.org/api/compute/v0.beta/compute-api.json @@ -29,7 +29,7 @@ "description": "Creates and runs virtual machines on Google Cloud Platform.", "discoveryVersion": "v1", "documentationLink": "https://developers.google.com/compute/docs/reference/latest/", - "etag": "\"Zkyw9ACJZUvcYmlFaKGChzhmtnE/gQPyaiSDCaC01bTsNohkwKrRGFY\"", + "etag": "\"Zkyw9ACJZUvcYmlFaKGChzhmtnE/XxPbeTDXrLPRv1hWo1J5w2hfNX8\"", "icons": { "x16": "https://www.google.com/images/icons/product/compute_engine-16.png", "x32": "https://www.google.com/images/icons/product/compute_engine-32.png" @@ -8984,6 +8984,444 @@ } } }, + "networkEndpointGroups": { + "methods": { + "aggregatedList": { + "description": "Retrieves the list of network endpoint groups and sorts them by zone.", + "httpMethod": "GET", + "id": "compute.networkEndpointGroups.aggregatedList", + "parameterOrder": [ + "project" + ], + "parameters": { + "filter": { + "description": "A filter expression that filters resources listed in the response. The expression must specify the field name, a comparison operator, and the value that you want to use for filtering. The value must be a string, a number, or a boolean. The comparison operator must be either =, !=, \u003e, or \u003c.\n\nFor example, if you are filtering Compute Engine instances, you can exclude instances named example-instance by specifying name != example-instance.\n\nYou can also filter nested fields. For example, you could specify scheduling.automaticRestart = false to include instances only if they are not scheduled for automatic restarts. You can use filtering on nested fields to filter based on resource labels.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart = true) (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND expression. However, you can include AND and OR expressions explicitly. For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel Broadwell\") AND (scheduling.automaticRestart = true).", + "location": "query", + "type": "string" + }, + "maxResults": { + "default": "500", + "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)", + "format": "uint32", + "location": "query", + "minimum": "0", + "type": "integer" + }, + "orderBy": { + "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.", + "location": "query", + "type": "string" + }, + "pageToken": { + "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.", + "location": "query", + "type": "string" + }, + "project": { + "description": "Project ID for this request.", + "location": "path", + "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))", + "required": true, + "type": "string" + } + }, + "path": "{project}/aggregated/networkEndpointGroups", + "response": { + "$ref": "NetworkEndpointGroupAggregatedList" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/compute", + "https://www.googleapis.com/auth/compute.readonly" + ] + }, + "attachNetworkEndpoints": { + "description": "Attach a list of network endpoints to the specified network endpoint group.", + "httpMethod": "POST", + "id": "compute.networkEndpointGroups.attachNetworkEndpoints", + "parameterOrder": [ + "project", + "zone", + "networkEndpointGroup" + ], + "parameters": { + "networkEndpointGroup": { + "description": "The name of the network endpoint group where you are attaching network endpoints to. It should comply with RFC1035.", + "location": "path", + "required": true, + "type": "string" + }, + "project": { + "description": "Project ID for this request.", + "location": "path", + "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))", + "required": true, + "type": "string" + }, + "requestId": { + "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).", + "location": "query", + "type": "string" + }, + "zone": { + "description": "The name of the zone where the network endpoint group is located. It should comply with RFC1035.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "{project}/zones/{zone}/networkEndpointGroups/{networkEndpointGroup}/attachNetworkEndpoints", + "request": { + "$ref": "NetworkEndpointGroupsAttachEndpointsRequest" + }, + "response": { + "$ref": "Operation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/compute" + ] + }, + "delete": { + "description": "Deletes the specified network endpoint group. The network endpoints in the NEG and the VM instances they belong to are not terminated when the NEG is deleted. Note that the NEG cannot be deleted if there are backend services referencing it.", + "httpMethod": "DELETE", + "id": "compute.networkEndpointGroups.delete", + "parameterOrder": [ + "project", + "zone", + "networkEndpointGroup" + ], + "parameters": { + "networkEndpointGroup": { + "description": "The name of the network endpoint group to delete. It should comply with RFC1035.", + "location": "path", + "required": true, + "type": "string" + }, + "project": { + "description": "Project ID for this request.", + "location": "path", + "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))", + "required": true, + "type": "string" + }, + "requestId": { + "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).", + "location": "query", + "type": "string" + }, + "zone": { + "description": "The name of the zone where the network endpoint group is located. It should comply with RFC1035.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "{project}/zones/{zone}/networkEndpointGroups/{networkEndpointGroup}", + "response": { + "$ref": "Operation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/compute" + ] + }, + "detachNetworkEndpoints": { + "description": "Detach a list of network endpoints from the specified network endpoint group.", + "httpMethod": "POST", + "id": "compute.networkEndpointGroups.detachNetworkEndpoints", + "parameterOrder": [ + "project", + "zone", + "networkEndpointGroup" + ], + "parameters": { + "networkEndpointGroup": { + "description": "The name of the network endpoint group where you are removing network endpoints. It should comply with RFC1035.", + "location": "path", + "required": true, + "type": "string" + }, + "project": { + "description": "Project ID for this request.", + "location": "path", + "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))", + "required": true, + "type": "string" + }, + "requestId": { + "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).", + "location": "query", + "type": "string" + }, + "zone": { + "description": "The name of the zone where the network endpoint group is located. It should comply with RFC1035.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "{project}/zones/{zone}/networkEndpointGroups/{networkEndpointGroup}/detachNetworkEndpoints", + "request": { + "$ref": "NetworkEndpointGroupsDetachEndpointsRequest" + }, + "response": { + "$ref": "Operation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/compute" + ] + }, + "get": { + "description": "Returns the specified network endpoint group. Gets a list of available network endpoint groups by making a list() request.", + "httpMethod": "GET", + "id": "compute.networkEndpointGroups.get", + "parameterOrder": [ + "project", + "zone", + "networkEndpointGroup" + ], + "parameters": { + "networkEndpointGroup": { + "description": "The name of the network endpoint group. It should comply with RFC1035.", + "location": "path", + "required": true, + "type": "string" + }, + "project": { + "description": "Project ID for this request.", + "location": "path", + "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))", + "required": true, + "type": "string" + }, + "zone": { + "description": "The name of the zone where the network endpoint group is located. It should comply with RFC1035.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "{project}/zones/{zone}/networkEndpointGroups/{networkEndpointGroup}", + "response": { + "$ref": "NetworkEndpointGroup" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/compute", + "https://www.googleapis.com/auth/compute.readonly" + ] + }, + "insert": { + "description": "Creates a network endpoint group in the specified project using the parameters that are included in the request.", + "httpMethod": "POST", + "id": "compute.networkEndpointGroups.insert", + "parameterOrder": [ + "project", + "zone" + ], + "parameters": { + "project": { + "description": "Project ID for this request.", + "location": "path", + "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))", + "required": true, + "type": "string" + }, + "requestId": { + "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).", + "location": "query", + "type": "string" + }, + "zone": { + "description": "The name of the zone where you want to create the network endpoint group. It should comply with RFC1035.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "{project}/zones/{zone}/networkEndpointGroups", + "request": { + "$ref": "NetworkEndpointGroup" + }, + "response": { + "$ref": "Operation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/compute" + ] + }, + "list": { + "description": "Retrieves the list of network endpoint groups that are located in the specified project and zone.", + "httpMethod": "GET", + "id": "compute.networkEndpointGroups.list", + "parameterOrder": [ + "project", + "zone" + ], + "parameters": { + "filter": { + "description": "A filter expression that filters resources listed in the response. The expression must specify the field name, a comparison operator, and the value that you want to use for filtering. The value must be a string, a number, or a boolean. The comparison operator must be either =, !=, \u003e, or \u003c.\n\nFor example, if you are filtering Compute Engine instances, you can exclude instances named example-instance by specifying name != example-instance.\n\nYou can also filter nested fields. For example, you could specify scheduling.automaticRestart = false to include instances only if they are not scheduled for automatic restarts. You can use filtering on nested fields to filter based on resource labels.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart = true) (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND expression. However, you can include AND and OR expressions explicitly. For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel Broadwell\") AND (scheduling.automaticRestart = true).", + "location": "query", + "type": "string" + }, + "maxResults": { + "default": "500", + "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)", + "format": "uint32", + "location": "query", + "minimum": "0", + "type": "integer" + }, + "orderBy": { + "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.", + "location": "query", + "type": "string" + }, + "pageToken": { + "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.", + "location": "query", + "type": "string" + }, + "project": { + "description": "Project ID for this request.", + "location": "path", + "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))", + "required": true, + "type": "string" + }, + "zone": { + "description": "The name of the zone where the network endpoint group is located. It should comply with RFC1035.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "{project}/zones/{zone}/networkEndpointGroups", + "response": { + "$ref": "NetworkEndpointGroupList" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/compute", + "https://www.googleapis.com/auth/compute.readonly" + ] + }, + "listNetworkEndpoints": { + "description": "Lists the network endpoints in the specified network endpoint group.", + "httpMethod": "POST", + "id": "compute.networkEndpointGroups.listNetworkEndpoints", + "parameterOrder": [ + "project", + "zone", + "networkEndpointGroup" + ], + "parameters": { + "filter": { + "description": "A filter expression that filters resources listed in the response. The expression must specify the field name, a comparison operator, and the value that you want to use for filtering. The value must be a string, a number, or a boolean. The comparison operator must be either =, !=, \u003e, or \u003c.\n\nFor example, if you are filtering Compute Engine instances, you can exclude instances named example-instance by specifying name != example-instance.\n\nYou can also filter nested fields. For example, you could specify scheduling.automaticRestart = false to include instances only if they are not scheduled for automatic restarts. You can use filtering on nested fields to filter based on resource labels.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart = true) (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND expression. However, you can include AND and OR expressions explicitly. For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel Broadwell\") AND (scheduling.automaticRestart = true).", + "location": "query", + "type": "string" + }, + "maxResults": { + "default": "500", + "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)", + "format": "uint32", + "location": "query", + "minimum": "0", + "type": "integer" + }, + "networkEndpointGroup": { + "description": "The name of the network endpoint group from which you want to generate a list of included network endpoints. It should comply with RFC1035.", + "location": "path", + "required": true, + "type": "string" + }, + "orderBy": { + "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.", + "location": "query", + "type": "string" + }, + "pageToken": { + "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.", + "location": "query", + "type": "string" + }, + "project": { + "description": "Project ID for this request.", + "location": "path", + "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))", + "required": true, + "type": "string" + }, + "zone": { + "description": "The name of the zone where the network endpoint group is located. It should comply with RFC1035.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "{project}/zones/{zone}/networkEndpointGroups/{networkEndpointGroup}/listNetworkEndpoints", + "request": { + "$ref": "NetworkEndpointGroupsListEndpointsRequest" + }, + "response": { + "$ref": "NetworkEndpointGroupsListNetworkEndpoints" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/compute", + "https://www.googleapis.com/auth/compute.readonly" + ] + }, + "testIamPermissions": { + "description": "Returns permissions that a caller has on the specified resource.", + "httpMethod": "POST", + "id": "compute.networkEndpointGroups.testIamPermissions", + "parameterOrder": [ + "project", + "zone", + "resource" + ], + "parameters": { + "project": { + "description": "Project ID for this request.", + "location": "path", + "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))", + "required": true, + "type": "string" + }, + "resource": { + "description": "Name of the resource for this request.", + "location": "path", + "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?", + "required": true, + "type": "string" + }, + "zone": { + "description": "The name of the zone for this request.", + "location": "path", + "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?", + "required": true, + "type": "string" + } + }, + "path": "{project}/zones/{zone}/networkEndpointGroups/{resource}/testIamPermissions", + "request": { + "$ref": "TestPermissionsRequest" + }, + "response": { + "$ref": "TestPermissionsResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/compute", + "https://www.googleapis.com/auth/compute.readonly" + ] + } + } + }, "networks": { "methods": { "addPeering": { @@ -14314,6 +14752,54 @@ "https://www.googleapis.com/auth/compute.readonly" ] }, + "listPreconfiguredExpressionSets": { + "description": "Gets the current list of preconfigured Web Application Firewall (WAF) expressions.", + "httpMethod": "GET", + "id": "compute.securityPolicies.listPreconfiguredExpressionSets", + "parameterOrder": [ + "project" + ], + "parameters": { + "filter": { + "description": "A filter expression that filters resources listed in the response. The expression must specify the field name, a comparison operator, and the value that you want to use for filtering. The value must be a string, a number, or a boolean. The comparison operator must be either =, !=, \u003e, or \u003c.\n\nFor example, if you are filtering Compute Engine instances, you can exclude instances named example-instance by specifying name != example-instance.\n\nYou can also filter nested fields. For example, you could specify scheduling.automaticRestart = false to include instances only if they are not scheduled for automatic restarts. You can use filtering on nested fields to filter based on resource labels.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart = true) (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND expression. However, you can include AND and OR expressions explicitly. For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel Broadwell\") AND (scheduling.automaticRestart = true).", + "location": "query", + "type": "string" + }, + "maxResults": { + "default": "500", + "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)", + "format": "uint32", + "location": "query", + "minimum": "0", + "type": "integer" + }, + "orderBy": { + "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.", + "location": "query", + "type": "string" + }, + "pageToken": { + "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.", + "location": "query", + "type": "string" + }, + "project": { + "description": "Project ID for this request.", + "location": "path", + "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))", + "required": true, + "type": "string" + } + }, + "path": "{project}/global/securityPolicies/listPreconfiguredExpressionSets", + "response": { + "$ref": "SecurityPoliciesListPreconfiguredExpressionSetsResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/compute" + ] + }, "patch": { "description": "Patches the specified policy with the data included in the request.", "httpMethod": "PATCH", @@ -19020,7 +19506,6 @@ } } }, - "revision": "20180518", "rootUrl": "https://www.googleapis.com/", "schemas": { "AcceleratorConfig": { @@ -19531,6 +20016,10 @@ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?", "type": "string" }, + "network": { + "description": "The URL of the network in which to reserve the address. This field can only be used with INTERNAL type with VPC_PEERING purpose.", + "type": "string" + }, "networkTier": { "description": "This signifies the networking tier used for configuring this Address and can only take the following values: PREMIUM , STANDARD.\n\nIf this field is not specified, it is assumed to be PREMIUM.", "enum": [ @@ -19543,6 +20032,27 @@ ], "type": "string" }, + "prefixLength": { + "description": "The prefix length if the resource reprensents an IP range.", + "format": "int32", + "type": "integer" + }, + "purpose": { + "description": "The purpose of resource, only used with INTERNAL type.", + "enum": [ + "DNS_RESOLVER", + "GCE_ENDPOINT", + "UNSPECIFIED_PURPOSE", + "VPC_PEERING" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, "region": { "description": "[Output Only] URL of the region where the regional address resides. This field is not applicable to global addresses. You must specify this field as part of the HTTP request URL. You cannot set this field in the request body.", "type": "string" @@ -19555,9 +20065,11 @@ "description": "[Output Only] The status of the address, which can be one of RESERVING, RESERVED, or IN_USE. An address that is RESERVING is currently in the process of being reserved. A RESERVED address is currently reserved and available to use. An IN_USE address is currently being used by another resource and is not available.", "enum": [ "IN_USE", - "RESERVED" + "RESERVED", + "RESERVING" ], "enumDescriptions": [ + "", "", "" ], @@ -20708,6 +21220,11 @@ "format": "int32", "type": "integer" }, + "maxConnectionsPerEndpoint": { + "description": "The max number of simultaneous connections that a single backend network endpoint can handle. This is used to calculate the capacity of the group. Can be used in either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerEndpoint must be set.\n\nThis cannot be used for internal load balancing.", + "format": "int32", + "type": "integer" + }, "maxConnectionsPerInstance": { "description": "The max number of simultaneous connections that a single backend instance can handle. This is used to calculate the capacity of the group. Can be used in either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerInstance must be set.\n\nThis cannot be used for internal load balancing.", "format": "int32", @@ -20718,6 +21235,11 @@ "format": "int32", "type": "integer" }, + "maxRatePerEndpoint": { + "description": "The max requests per second (RPS) that a single backend network endpoint can handle. This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerEndpoint must be set.\n\nThis cannot be used for internal load balancing.", + "format": "float", + "type": "number" + }, "maxRatePerInstance": { "description": "The max requests per second (RPS) that a single backend instance can handle. This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerInstance must be set.\n\nThis cannot be used for internal load balancing.", "format": "float", @@ -21346,6 +21868,15 @@ }, "type": "object" }, + "BackendServiceReference": { + "id": "BackendServiceReference", + "properties": { + "backendService": { + "type": "string" + } + }, + "type": "object" + }, "BackendServicesScopedList": { "id": "BackendServicesScopedList", "properties": { @@ -23720,6 +24251,15 @@ }, "type": "object" }, + "ForwardingRuleReference": { + "id": "ForwardingRuleReference", + "properties": { + "forwardingRule": { + "type": "string" + } + }, + "type": "object" + }, "ForwardingRulesScopedList": { "id": "ForwardingRulesScopedList", "properties": { @@ -23875,6 +24415,20 @@ "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.", "type": "string" }, + "portSpecification": { + "description": "Specifies how port is selected for health checking, can be one of following values:\nUSE_FIXED_PORT: The port number in\nport\nis used for health checking.\nUSE_NAMED_PORT: The\nportName\nis used for health checking.\nUSE_SERVING_PORT: For NetworkEndpointGroup, the port specified for each network endpoint is used for health checking. For other backends, the port or named port specified in the Backend Service is used for health checking.\n\n\nIf not specified, HTTP2 health check follows behavior specified in\nport\nand\nportName\nfields.", + "enum": [ + "USE_FIXED_PORT", + "USE_NAMED_PORT", + "USE_SERVING_PORT" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, "proxyHeader": { "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.", "enum": [ @@ -23914,6 +24468,20 @@ "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.", "type": "string" }, + "portSpecification": { + "description": "Specifies how port is selected for health checking, can be one of following values:\nUSE_FIXED_PORT: The port number in\nport\nis used for health checking.\nUSE_NAMED_PORT: The\nportName\nis used for health checking.\nUSE_SERVING_PORT: For NetworkEndpointGroup, the port specified for each network endpoint is used for health checking. For other backends, the port or named port specified in the Backend Service is used for health checking.\n\n\nIf not specified, HTTP health check follows behavior specified in\nport\nand\nportName\nfields.", + "enum": [ + "USE_FIXED_PORT", + "USE_NAMED_PORT", + "USE_SERVING_PORT" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, "proxyHeader": { "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.", "enum": [ @@ -23953,6 +24521,20 @@ "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.", "type": "string" }, + "portSpecification": { + "description": "Specifies how port is selected for health checking, can be one of following values:\nUSE_FIXED_PORT: The port number in\nport\nis used for health checking.\nUSE_NAMED_PORT: The\nportName\nis used for health checking.\nUSE_SERVING_PORT: For NetworkEndpointGroup, the port specified for each network endpoint is used for health checking. For other backends, the port or named port specified in the Backend Service is used for health checking.\n\n\nIf not specified, HTTPS health check follows behavior specified in\nport\nand\nportName\nfields.", + "enum": [ + "USE_FIXED_PORT", + "USE_NAMED_PORT", + "USE_SERVING_PORT" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, "proxyHeader": { "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.", "enum": [ @@ -24223,6 +24805,40 @@ }, "type": "object" }, + "HealthStatusForNetworkEndpoint": { + "id": "HealthStatusForNetworkEndpoint", + "properties": { + "backendService": { + "$ref": "BackendServiceReference", + "description": "URL of the backend service associated with the health state of the network endpoint." + }, + "forwardingRule": { + "$ref": "ForwardingRuleReference", + "description": "URL of the forwarding rule associated with the health state of the network endpoint." + }, + "healthCheck": { + "$ref": "HealthCheckReference", + "description": "URL of the health check associated with the health state of the network endpoint." + }, + "healthState": { + "description": "Health state of the network endpoint determined based on the health checks configured.", + "enum": [ + "DRAINING", + "HEALTHY", + "UNHEALTHY", + "UNKNOWN" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, "HostRule": { "description": "UrlMaps A host-matching rule for a URL. If matched, will use the named PathMatcher to select the BackendService.", "id": "HostRule", @@ -29024,7 +29640,7 @@ "type": "object" }, "ManagedInstance": { - "description": "Next available tag: 12", + "description": "A Managed Instance resource.", "id": "ManagedInstance", "properties": { "currentAction": { @@ -29278,6 +29894,587 @@ }, "type": "object" }, + "NetworkEndpoint": { + "description": "The network endpoint.", + "id": "NetworkEndpoint", + "properties": { + "instance": { + "description": "The name for a specific VM instance that the IP address belongs to. This is required for network endpoints of type GCE_VM_IP and GCE_VM_IP_PORT. The instance must be in the same zone of network endpoint group.\n\nThe name must be 1-63 characters long, and comply with RFC1035.", + "type": "string" + }, + "ipAddress": { + "description": "Optional IPv4 address of network endpoint. The IP address must belong to a VM in GCE (either the primary IP or as part of an aliased IP range). If the IP address is not specified, then the primary IP address for the VM instance in the network that the network endpoint group belongs to will be used.", + "type": "string" + }, + "port": { + "description": "Optional port number of network endpoint. If not specified and the NetworkEndpointGroup.network_endpoint_type is GCE_IP_PORT, the defaultPort for the network endpoint group will be used.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "NetworkEndpointGroup": { + "description": "Represents a collection of network endpoints.", + "id": "NetworkEndpointGroup", + "properties": { + "creationTimestamp": { + "description": "[Output Only] Creation timestamp in RFC3339 text format.", + "type": "string" + }, + "description": { + "description": "An optional description of this resource. Provide this property when you create the resource.", + "type": "string" + }, + "id": { + "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.", + "format": "uint64", + "type": "string" + }, + "kind": { + "default": "compute#networkEndpointGroup", + "description": "[Output Only] Type of the resource. Always compute#networkEndpointGroup for network endpoint group.", + "type": "string" + }, + "loadBalancer": { + "$ref": "NetworkEndpointGroupLbNetworkEndpointGroup", + "description": "This field is only valid when the network endpoint group type is LOAD_BALANCING." + }, + "name": { + "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.", + "type": "string" + }, + "networkEndpointType": { + "description": "Type of network endpoints in this network endpoint group. Only supported values for LOAD_BALANCING are GCE_VM_IP or GCE_VM_IP_PORT.", + "enum": [ + "GCE_VM_IP_PORT" + ], + "enumDescriptions": [ + "" + ], + "type": "string" + }, + "selfLink": { + "description": "[Output Only] Server-defined URL for the resource.", + "type": "string" + }, + "size": { + "description": "[Output only] Number of network endpoints in the network endpoint group.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "NetworkEndpointGroupAggregatedList": { + "id": "NetworkEndpointGroupAggregatedList", + "properties": { + "id": { + "description": "[Output Only] Unique identifier for the resource; defined by the server.", + "type": "string" + }, + "items": { + "additionalProperties": { + "$ref": "NetworkEndpointGroupsScopedList", + "description": "The name of the scope that contains this set of network endpoint groups." + }, + "description": "A list of NetworkEndpointGroupsScopedList resources.", + "type": "object" + }, + "kind": { + "default": "compute#networkEndpointGroupAggregatedList", + "description": "[Output Only] The resource type, which is always compute#networkEndpointGroupAggregatedList for aggregated lists of network endpoint groups.", + "type": "string" + }, + "nextPageToken": { + "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.", + "type": "string" + }, + "selfLink": { + "description": "[Output Only] Server-defined URL for this resource.", + "type": "string" + }, + "warning": { + "description": "[Output Only] Informational warning message.", + "properties": { + "code": { + "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.", + "enum": [ + "CLEANUP_FAILED", + "DEPRECATED_RESOURCE_USED", + "DEPRECATED_TYPE_USED", + "DISK_SIZE_LARGER_THAN_IMAGE_SIZE", + "EXPERIMENTAL_TYPE_USED", + "EXTERNAL_API_WARNING", + "FIELD_VALUE_OVERRIDEN", + "INJECTED_KERNELS_DEPRECATED", + "MISSING_TYPE_DEPENDENCY", + "NEXT_HOP_ADDRESS_NOT_ASSIGNED", + "NEXT_HOP_CANNOT_IP_FORWARD", + "NEXT_HOP_INSTANCE_NOT_FOUND", + "NEXT_HOP_INSTANCE_NOT_ON_NETWORK", + "NEXT_HOP_NOT_RUNNING", + "NOT_CRITICAL_ERROR", + "NO_RESULTS_ON_PAGE", + "REQUIRED_TOS_AGREEMENT", + "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING", + "RESOURCE_NOT_DELETED", + "SCHEMA_VALIDATION_IGNORED", + "SINGLE_INSTANCE_PROPERTY_TEMPLATE", + "UNDECLARED_PROPERTIES", + "UNREACHABLE" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "data": { + "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }", + "items": { + "properties": { + "key": { + "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).", + "type": "string" + }, + "value": { + "description": "[Output Only] A warning data value corresponding to the key.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "message": { + "description": "[Output Only] A human-readable description of the warning code.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "NetworkEndpointGroupLbNetworkEndpointGroup": { + "description": "Load balancing specific fields for network endpoint group of type LOAD_BALANCING.", + "id": "NetworkEndpointGroupLbNetworkEndpointGroup", + "properties": { + "defaultPort": { + "description": "The default port used if the port number is not specified in the network endpoint. If the network endpoint type is GCE_VM_IP, this field must not be specified.", + "format": "int32", + "type": "integer" + }, + "network": { + "description": "The URL of the network to which all network endpoints in the NEG belong. Uses \"default\" project network if unspecified.", + "type": "string" + }, + "subnetwork": { + "description": "Optional URL of the subnetwork to which all network endpoints in the NEG belong.", + "type": "string" + }, + "zone": { + "description": "[Output Only] The URL of the zone where the network endpoint group is located.", + "type": "string" + } + }, + "type": "object" + }, + "NetworkEndpointGroupList": { + "id": "NetworkEndpointGroupList", + "properties": { + "id": { + "description": "[Output Only] Unique identifier for the resource; defined by the server.", + "type": "string" + }, + "items": { + "description": "A list of NetworkEndpointGroup resources.", + "items": { + "$ref": "NetworkEndpointGroup" + }, + "type": "array" + }, + "kind": { + "default": "compute#networkEndpointGroupList", + "description": "[Output Only] The resource type, which is always compute#networkEndpointGroupList for network endpoint group lists.", + "type": "string" + }, + "nextPageToken": { + "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.", + "type": "string" + }, + "selfLink": { + "description": "[Output Only] Server-defined URL for this resource.", + "type": "string" + }, + "warning": { + "description": "[Output Only] Informational warning message.", + "properties": { + "code": { + "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.", + "enum": [ + "CLEANUP_FAILED", + "DEPRECATED_RESOURCE_USED", + "DEPRECATED_TYPE_USED", + "DISK_SIZE_LARGER_THAN_IMAGE_SIZE", + "EXPERIMENTAL_TYPE_USED", + "EXTERNAL_API_WARNING", + "FIELD_VALUE_OVERRIDEN", + "INJECTED_KERNELS_DEPRECATED", + "MISSING_TYPE_DEPENDENCY", + "NEXT_HOP_ADDRESS_NOT_ASSIGNED", + "NEXT_HOP_CANNOT_IP_FORWARD", + "NEXT_HOP_INSTANCE_NOT_FOUND", + "NEXT_HOP_INSTANCE_NOT_ON_NETWORK", + "NEXT_HOP_NOT_RUNNING", + "NOT_CRITICAL_ERROR", + "NO_RESULTS_ON_PAGE", + "REQUIRED_TOS_AGREEMENT", + "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING", + "RESOURCE_NOT_DELETED", + "SCHEMA_VALIDATION_IGNORED", + "SINGLE_INSTANCE_PROPERTY_TEMPLATE", + "UNDECLARED_PROPERTIES", + "UNREACHABLE" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "data": { + "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }", + "items": { + "properties": { + "key": { + "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).", + "type": "string" + }, + "value": { + "description": "[Output Only] A warning data value corresponding to the key.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "message": { + "description": "[Output Only] A human-readable description of the warning code.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "NetworkEndpointGroupsAttachEndpointsRequest": { + "id": "NetworkEndpointGroupsAttachEndpointsRequest", + "properties": { + "networkEndpoints": { + "description": "The list of network endpoints to be attached.", + "items": { + "$ref": "NetworkEndpoint" + }, + "type": "array" + } + }, + "type": "object" + }, + "NetworkEndpointGroupsDetachEndpointsRequest": { + "id": "NetworkEndpointGroupsDetachEndpointsRequest", + "properties": { + "networkEndpoints": { + "description": "The list of network endpoints to be detached.", + "items": { + "$ref": "NetworkEndpoint" + }, + "type": "array" + } + }, + "type": "object" + }, + "NetworkEndpointGroupsListEndpointsRequest": { + "id": "NetworkEndpointGroupsListEndpointsRequest", + "properties": { + "healthStatus": { + "description": "Optional query parameter for showing the health status of each network endpoint. Valid options are SKIP or SHOW. If you don't specifiy this parameter, the health status of network endpoints will not be provided.", + "enum": [ + "SHOW", + "SKIP" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "NetworkEndpointGroupsListNetworkEndpoints": { + "id": "NetworkEndpointGroupsListNetworkEndpoints", + "properties": { + "id": { + "description": "[Output Only] Unique identifier for the resource; defined by the server.", + "type": "string" + }, + "items": { + "description": "A list of NetworkEndpointWithHealthStatus resources.", + "items": { + "$ref": "NetworkEndpointWithHealthStatus" + }, + "type": "array" + }, + "kind": { + "default": "compute#networkEndpointGroupsListNetworkEndpoints", + "description": "[Output Only] The resource type, which is always compute#networkEndpointGroupsListNetworkEndpoints for the list of network endpoints in the specified network endpoint group.", + "type": "string" + }, + "nextPageToken": { + "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.", + "type": "string" + }, + "warning": { + "description": "[Output Only] Informational warning message.", + "properties": { + "code": { + "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.", + "enum": [ + "CLEANUP_FAILED", + "DEPRECATED_RESOURCE_USED", + "DEPRECATED_TYPE_USED", + "DISK_SIZE_LARGER_THAN_IMAGE_SIZE", + "EXPERIMENTAL_TYPE_USED", + "EXTERNAL_API_WARNING", + "FIELD_VALUE_OVERRIDEN", + "INJECTED_KERNELS_DEPRECATED", + "MISSING_TYPE_DEPENDENCY", + "NEXT_HOP_ADDRESS_NOT_ASSIGNED", + "NEXT_HOP_CANNOT_IP_FORWARD", + "NEXT_HOP_INSTANCE_NOT_FOUND", + "NEXT_HOP_INSTANCE_NOT_ON_NETWORK", + "NEXT_HOP_NOT_RUNNING", + "NOT_CRITICAL_ERROR", + "NO_RESULTS_ON_PAGE", + "REQUIRED_TOS_AGREEMENT", + "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING", + "RESOURCE_NOT_DELETED", + "SCHEMA_VALIDATION_IGNORED", + "SINGLE_INSTANCE_PROPERTY_TEMPLATE", + "UNDECLARED_PROPERTIES", + "UNREACHABLE" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "data": { + "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }", + "items": { + "properties": { + "key": { + "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).", + "type": "string" + }, + "value": { + "description": "[Output Only] A warning data value corresponding to the key.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "message": { + "description": "[Output Only] A human-readable description of the warning code.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "NetworkEndpointGroupsScopedList": { + "id": "NetworkEndpointGroupsScopedList", + "properties": { + "networkEndpointGroups": { + "description": "[Output Only] The list of network endpoint groups that are contained in this scope.", + "items": { + "$ref": "NetworkEndpointGroup" + }, + "type": "array" + }, + "warning": { + "description": "[Output Only] An informational warning that replaces the list of network endpoint groups when the list is empty.", + "properties": { + "code": { + "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.", + "enum": [ + "CLEANUP_FAILED", + "DEPRECATED_RESOURCE_USED", + "DEPRECATED_TYPE_USED", + "DISK_SIZE_LARGER_THAN_IMAGE_SIZE", + "EXPERIMENTAL_TYPE_USED", + "EXTERNAL_API_WARNING", + "FIELD_VALUE_OVERRIDEN", + "INJECTED_KERNELS_DEPRECATED", + "MISSING_TYPE_DEPENDENCY", + "NEXT_HOP_ADDRESS_NOT_ASSIGNED", + "NEXT_HOP_CANNOT_IP_FORWARD", + "NEXT_HOP_INSTANCE_NOT_FOUND", + "NEXT_HOP_INSTANCE_NOT_ON_NETWORK", + "NEXT_HOP_NOT_RUNNING", + "NOT_CRITICAL_ERROR", + "NO_RESULTS_ON_PAGE", + "REQUIRED_TOS_AGREEMENT", + "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING", + "RESOURCE_NOT_DELETED", + "SCHEMA_VALIDATION_IGNORED", + "SINGLE_INSTANCE_PROPERTY_TEMPLATE", + "UNDECLARED_PROPERTIES", + "UNREACHABLE" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "data": { + "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }", + "items": { + "properties": { + "key": { + "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).", + "type": "string" + }, + "value": { + "description": "[Output Only] A warning data value corresponding to the key.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "message": { + "description": "[Output Only] A human-readable description of the warning code.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "NetworkEndpointWithHealthStatus": { + "id": "NetworkEndpointWithHealthStatus", + "properties": { + "healths": { + "description": "[Output only] The health status of network endpoint;", + "items": { + "$ref": "HealthStatusForNetworkEndpoint" + }, + "type": "array" + }, + "networkEndpoint": { + "$ref": "NetworkEndpoint", + "description": "[Output only] The network endpoint;" + } + }, + "type": "object" + }, "NetworkInterface": { "description": "A network interface resource attached to an instance.", "id": "NetworkInterface", @@ -29828,6 +31025,21 @@ "nodeType": { "description": "The type of this node.", "type": "string" + }, + "status": { + "enum": [ + "CREATING", + "DELETING", + "INVALID", + "READY" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" } }, "type": "object" @@ -31364,6 +32576,19 @@ }, "type": "object" }, + "PreconfiguredWafSet": { + "id": "PreconfiguredWafSet", + "properties": { + "expressionSets": { + "description": "List of entities that are currently supported for WAF rules.", + "items": { + "$ref": "WafExpressionSet" + }, + "type": "array" + } + }, + "type": "object" + }, "Project": { "description": "A Project resource. For an overview of projects, see Cloud Platform Resource Hierarchy. (== resource_for v1.projects ==) (== resource_for beta.projects ==)", "id": "Project", @@ -31551,6 +32776,7 @@ "IN_USE_ADDRESSES", "LOCAL_SSD_TOTAL_GB", "NETWORKS", + "NETWORK_ENDPOINT_GROUPS", "NVIDIA_K80_GPUS", "NVIDIA_P100_GPUS", "NVIDIA_V100_GPUS", @@ -31630,6 +32856,7 @@ "", "", "", + "", "" ], "type": "string" @@ -33673,6 +34900,20 @@ "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.", "type": "string" }, + "portSpecification": { + "description": "Specifies how port is selected for health checking, can be one of following values:\nUSE_FIXED_PORT: The port number in\nport\nis used for health checking.\nUSE_NAMED_PORT: The\nportName\nis used for health checking.\nUSE_SERVING_PORT: For NetworkEndpointGroup, the port specified for each network endpoint is used for health checking. For other backends, the port or named port specified in the Backend Service is used for health checking.\n\n\nIf not specified, SSL health check follows behavior specified in\nport\nand\nportName\nfields.", + "enum": [ + "USE_FIXED_PORT", + "USE_NAMED_PORT", + "USE_SERVING_PORT" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, "proxyHeader": { "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.", "enum": [ @@ -33762,6 +35003,24 @@ }, "type": "object" }, + "SecurityPoliciesListPreconfiguredExpressionSetsResponse": { + "id": "SecurityPoliciesListPreconfiguredExpressionSetsResponse", + "properties": { + "preconfiguredExpressionSets": { + "$ref": "SecurityPoliciesWafConfig" + } + }, + "type": "object" + }, + "SecurityPoliciesWafConfig": { + "id": "SecurityPoliciesWafConfig", + "properties": { + "wafRules": { + "$ref": "PreconfiguredWafSet" + } + }, + "type": "object" + }, "SecurityPolicy": { "description": "A security policy is comprised of one or more rules. It can also be associated with one or more 'targets'. Next available tag: 11", "id": "SecurityPolicy", @@ -38230,6 +39489,40 @@ }, "type": "object" }, + "WafExpressionSet": { + "id": "WafExpressionSet", + "properties": { + "aliases": { + "description": "A list of alternate IDs. The format should be: - E.g. XSS-stable Generic suffix like \"stable\" is particularly useful if a policy likes to avail newer set of expressions without having to change the policy. A given alias name can't be used for more than one entity set.", + "items": { + "type": "string" + }, + "type": "array" + }, + "expressions": { + "description": "List of available expressions.", + "items": { + "$ref": "WafExpressionSetExpression" + }, + "type": "array" + }, + "id": { + "description": "Google specified expression set ID. The format should be: - E.g. XSS-20170329", + "type": "string" + } + }, + "type": "object" + }, + "WafExpressionSetExpression": { + "id": "WafExpressionSetExpression", + "properties": { + "id": { + "description": "Expression ID should uniquely identify the origin of the expression. E.g. owasp-crs-v020901-id973337 identifies Owasp core rule set version 2.9.1 rule id 973337. The ID could be used to determine the individual attack definition that has been detected. It could also be used to exclude it from the policy in case of false positive.", + "type": "string" + } + }, + "type": "object" + }, "XpnHostList": { "id": "XpnHostList", "properties": { diff --git a/cluster-autoscaler/vendor/google.golang.org/api/compute/v0.beta/compute-gen.go b/cluster-autoscaler/vendor/google.golang.org/api/compute/v0.beta/compute-gen.go index 897cc504f6..49a2415547 100644 --- a/cluster-autoscaler/vendor/google.golang.org/api/compute/v0.beta/compute-gen.go +++ b/cluster-autoscaler/vendor/google.golang.org/api/compute/v0.beta/compute-gen.go @@ -97,6 +97,7 @@ func New(client *http.Client) (*Service, error) { s.LicenseCodes = NewLicenseCodesService(s) s.Licenses = NewLicensesService(s) s.MachineTypes = NewMachineTypesService(s) + s.NetworkEndpointGroups = NewNetworkEndpointGroupsService(s) s.Networks = NewNetworksService(s) s.NodeGroups = NewNodeGroupsService(s) s.NodeTemplates = NewNodeTemplatesService(s) @@ -189,6 +190,8 @@ type Service struct { MachineTypes *MachineTypesService + NetworkEndpointGroups *NetworkEndpointGroupsService + Networks *NetworksService NodeGroups *NodeGroupsService @@ -495,6 +498,15 @@ type MachineTypesService struct { s *Service } +func NewNetworkEndpointGroupsService(s *Service) *NetworkEndpointGroupsService { + rs := &NetworkEndpointGroupsService{s: s} + return rs +} + +type NetworkEndpointGroupsService struct { + s *Service +} + func NewNetworksService(s *Service) *NetworksService { rs := &NetworksService{s: s} return rs @@ -1475,6 +1487,10 @@ type Address struct { // last character, which cannot be a dash. Name string `json:"name,omitempty"` + // Network: The URL of the network in which to reserve the address. This + // field can only be used with INTERNAL type with VPC_PEERING purpose. + Network string `json:"network,omitempty"` + // NetworkTier: This signifies the networking tier used for configuring // this Address and can only take the following values: PREMIUM , // STANDARD. @@ -1486,6 +1502,19 @@ type Address struct { // "STANDARD" NetworkTier string `json:"networkTier,omitempty"` + // PrefixLength: The prefix length if the resource reprensents an IP + // range. + PrefixLength int64 `json:"prefixLength,omitempty"` + + // Purpose: The purpose of resource, only used with INTERNAL type. + // + // Possible values: + // "DNS_RESOLVER" + // "GCE_ENDPOINT" + // "UNSPECIFIED_PURPOSE" + // "VPC_PEERING" + Purpose string `json:"purpose,omitempty"` + // Region: [Output Only] URL of the region where the regional address // resides. This field is not applicable to global addresses. You must // specify this field as part of the HTTP request URL. You cannot set @@ -1504,6 +1533,7 @@ type Address struct { // Possible values: // "IN_USE" // "RESERVED" + // "RESERVING" Status string `json:"status,omitempty"` // Subnetwork: The URL of the subnetwork in which to reserve the @@ -3346,6 +3376,15 @@ type Backend struct { // This cannot be used for internal load balancing. MaxConnections int64 `json:"maxConnections,omitempty"` + // MaxConnectionsPerEndpoint: The max number of simultaneous connections + // that a single backend network endpoint can handle. This is used to + // calculate the capacity of the group. Can be used in either CONNECTION + // or UTILIZATION balancing modes. For CONNECTION mode, either + // maxConnections or maxConnectionsPerEndpoint must be set. + // + // This cannot be used for internal load balancing. + MaxConnectionsPerEndpoint int64 `json:"maxConnectionsPerEndpoint,omitempty"` + // MaxConnectionsPerInstance: The max number of simultaneous connections // that a single backend instance can handle. This is used to calculate // the capacity of the group. Can be used in either CONNECTION or @@ -3363,6 +3402,14 @@ type Backend struct { // This cannot be used for internal load balancing. MaxRate int64 `json:"maxRate,omitempty"` + // MaxRatePerEndpoint: The max requests per second (RPS) that a single + // backend network endpoint can handle. This is used to calculate the + // capacity of the group. Can be used in either balancing mode. For RATE + // mode, either maxRate or maxRatePerEndpoint must be set. + // + // This cannot be used for internal load balancing. + MaxRatePerEndpoint float64 `json:"maxRatePerEndpoint,omitempty"` + // MaxRatePerInstance: The max requests per second (RPS) that a single // backend instance can handle. This is used to calculate the capacity // of the group. Can be used in either balancing mode. For RATE mode, @@ -3405,6 +3452,7 @@ func (s *Backend) UnmarshalJSON(data []byte) error { type NoMethod Backend var s1 struct { CapacityScaler gensupport.JSONFloat64 `json:"capacityScaler"` + MaxRatePerEndpoint gensupport.JSONFloat64 `json:"maxRatePerEndpoint"` MaxRatePerInstance gensupport.JSONFloat64 `json:"maxRatePerInstance"` MaxUtilization gensupport.JSONFloat64 `json:"maxUtilization"` *NoMethod @@ -3414,6 +3462,7 @@ func (s *Backend) UnmarshalJSON(data []byte) error { return err } s.CapacityScaler = float64(s1.CapacityScaler) + s.MaxRatePerEndpoint = float64(s1.MaxRatePerEndpoint) s.MaxRatePerInstance = float64(s1.MaxRatePerInstance) s.MaxUtilization = float64(s1.MaxUtilization) return nil @@ -4288,6 +4337,33 @@ func (s *BackendServiceListWarningData) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +type BackendServiceReference struct { + BackendService string `json:"backendService,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BackendService") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BackendService") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *BackendServiceReference) MarshalJSON() ([]byte, error) { + type NoMethod BackendServiceReference + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + type BackendServicesScopedList struct { // BackendServices: A list of BackendServices contained in this scope. BackendServices []*BackendService `json:"backendServices,omitempty"` @@ -7813,6 +7889,33 @@ func (s *ForwardingRuleListWarningData) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +type ForwardingRuleReference struct { + ForwardingRule string `json:"forwardingRule,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ForwardingRule") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ForwardingRule") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *ForwardingRuleReference) MarshalJSON() ([]byte, error) { + type NoMethod ForwardingRuleReference + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + type ForwardingRulesScopedList struct { // ForwardingRules: A list of forwarding rules contained in this scope. ForwardingRules []*ForwardingRule `json:"forwardingRules,omitempty"` @@ -8041,6 +8144,33 @@ type HTTP2HealthCheck struct { // both port and port_name are defined, port takes precedence. PortName string `json:"portName,omitempty"` + // PortSpecification: Specifies how port is selected for health + // checking, can be one of following values: + // USE_FIXED_PORT: The port number in + // port + // is used for health checking. + // USE_NAMED_PORT: The + // portName + // is used for health checking. + // USE_SERVING_PORT: For NetworkEndpointGroup, the port specified for + // each network endpoint is used for health checking. For other + // backends, the port or named port specified in the Backend Service is + // used for health checking. + // + // + // If not specified, HTTP2 health check follows behavior specified + // in + // port + // and + // portName + // fields. + // + // Possible values: + // "USE_FIXED_PORT" + // "USE_NAMED_PORT" + // "USE_SERVING_PORT" + PortSpecification string `json:"portSpecification,omitempty"` + // ProxyHeader: Specifies the type of proxy header to append before // sending data to the backend, either NONE or PROXY_V1. The default is // NONE. @@ -8096,6 +8226,33 @@ type HTTPHealthCheck struct { // both port and port_name are defined, port takes precedence. PortName string `json:"portName,omitempty"` + // PortSpecification: Specifies how port is selected for health + // checking, can be one of following values: + // USE_FIXED_PORT: The port number in + // port + // is used for health checking. + // USE_NAMED_PORT: The + // portName + // is used for health checking. + // USE_SERVING_PORT: For NetworkEndpointGroup, the port specified for + // each network endpoint is used for health checking. For other + // backends, the port or named port specified in the Backend Service is + // used for health checking. + // + // + // If not specified, HTTP health check follows behavior specified + // in + // port + // and + // portName + // fields. + // + // Possible values: + // "USE_FIXED_PORT" + // "USE_NAMED_PORT" + // "USE_SERVING_PORT" + PortSpecification string `json:"portSpecification,omitempty"` + // ProxyHeader: Specifies the type of proxy header to append before // sending data to the backend, either NONE or PROXY_V1. The default is // NONE. @@ -8151,6 +8308,33 @@ type HTTPSHealthCheck struct { // both port and port_name are defined, port takes precedence. PortName string `json:"portName,omitempty"` + // PortSpecification: Specifies how port is selected for health + // checking, can be one of following values: + // USE_FIXED_PORT: The port number in + // port + // is used for health checking. + // USE_NAMED_PORT: The + // portName + // is used for health checking. + // USE_SERVING_PORT: For NetworkEndpointGroup, the port specified for + // each network endpoint is used for health checking. For other + // backends, the port or named port specified in the Backend Service is + // used for health checking. + // + // + // If not specified, HTTPS health check follows behavior specified + // in + // port + // and + // portName + // fields. + // + // Possible values: + // "USE_FIXED_PORT" + // "USE_NAMED_PORT" + // "USE_SERVING_PORT" + PortSpecification string `json:"portSpecification,omitempty"` + // ProxyHeader: Specifies the type of proxy header to append before // sending data to the backend, either NONE or PROXY_V1. The default is // NONE. @@ -8522,6 +8706,53 @@ func (s *HealthStatus) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +type HealthStatusForNetworkEndpoint struct { + // BackendService: URL of the backend service associated with the health + // state of the network endpoint. + BackendService *BackendServiceReference `json:"backendService,omitempty"` + + // ForwardingRule: URL of the forwarding rule associated with the health + // state of the network endpoint. + ForwardingRule *ForwardingRuleReference `json:"forwardingRule,omitempty"` + + // HealthCheck: URL of the health check associated with the health state + // of the network endpoint. + HealthCheck *HealthCheckReference `json:"healthCheck,omitempty"` + + // HealthState: Health state of the network endpoint determined based on + // the health checks configured. + // + // Possible values: + // "DRAINING" + // "HEALTHY" + // "UNHEALTHY" + // "UNKNOWN" + HealthState string `json:"healthState,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BackendService") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BackendService") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *HealthStatusForNetworkEndpoint) MarshalJSON() ([]byte, error) { + type NoMethod HealthStatusForNetworkEndpoint + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // HostRule: UrlMaps A host-matching rule for a URL. If matched, will // use the named PathMatcher to select the BackendService. type HostRule struct { @@ -15333,7 +15564,7 @@ func (s *MachineTypesScopedListWarningData) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } -// ManagedInstance: Next available tag: 12 +// ManagedInstance: A Managed Instance resource. type ManagedInstance struct { // CurrentAction: [Output Only] The current action that the managed // instance group has scheduled for the instance. Possible values: @@ -15751,6 +15982,889 @@ func (s *Network) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// NetworkEndpoint: The network endpoint. +type NetworkEndpoint struct { + // Instance: The name for a specific VM instance that the IP address + // belongs to. This is required for network endpoints of type GCE_VM_IP + // and GCE_VM_IP_PORT. The instance must be in the same zone of network + // endpoint group. + // + // The name must be 1-63 characters long, and comply with RFC1035. + Instance string `json:"instance,omitempty"` + + // IpAddress: Optional IPv4 address of network endpoint. The IP address + // must belong to a VM in GCE (either the primary IP or as part of an + // aliased IP range). If the IP address is not specified, then the + // primary IP address for the VM instance in the network that the + // network endpoint group belongs to will be used. + IpAddress string `json:"ipAddress,omitempty"` + + // Port: Optional port number of network endpoint. If not specified and + // the NetworkEndpointGroup.network_endpoint_type is GCE_IP_PORT, the + // defaultPort for the network endpoint group will be used. + Port int64 `json:"port,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Instance") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Instance") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *NetworkEndpoint) MarshalJSON() ([]byte, error) { + type NoMethod NetworkEndpoint + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// NetworkEndpointGroup: Represents a collection of network endpoints. +type NetworkEndpointGroup struct { + // CreationTimestamp: [Output Only] Creation timestamp in RFC3339 text + // format. + CreationTimestamp string `json:"creationTimestamp,omitempty"` + + // Description: An optional description of this resource. Provide this + // property when you create the resource. + Description string `json:"description,omitempty"` + + // Id: [Output Only] The unique identifier for the resource. This + // identifier is defined by the server. + Id uint64 `json:"id,omitempty,string"` + + // Kind: [Output Only] Type of the resource. Always + // compute#networkEndpointGroup for network endpoint group. + Kind string `json:"kind,omitempty"` + + // LoadBalancer: This field is only valid when the network endpoint + // group type is LOAD_BALANCING. + LoadBalancer *NetworkEndpointGroupLbNetworkEndpointGroup `json:"loadBalancer,omitempty"` + + // Name: Name of the resource; provided by the client when the resource + // is created. The name must be 1-63 characters long, and comply with + // RFC1035. Specifically, the name must be 1-63 characters long and + // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means + // the first character must be a lowercase letter, and all following + // characters must be a dash, lowercase letter, or digit, except the + // last character, which cannot be a dash. + Name string `json:"name,omitempty"` + + // NetworkEndpointType: Type of network endpoints in this network + // endpoint group. Only supported values for LOAD_BALANCING are + // GCE_VM_IP or GCE_VM_IP_PORT. + // + // Possible values: + // "GCE_VM_IP_PORT" + NetworkEndpointType string `json:"networkEndpointType,omitempty"` + + // SelfLink: [Output Only] Server-defined URL for the resource. + SelfLink string `json:"selfLink,omitempty"` + + // Size: [Output only] Number of network endpoints in the network + // endpoint group. + Size int64 `json:"size,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "CreationTimestamp") + // to unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CreationTimestamp") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *NetworkEndpointGroup) MarshalJSON() ([]byte, error) { + type NoMethod NetworkEndpointGroup + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type NetworkEndpointGroupAggregatedList struct { + // Id: [Output Only] Unique identifier for the resource; defined by the + // server. + Id string `json:"id,omitempty"` + + // Items: A list of NetworkEndpointGroupsScopedList resources. + Items map[string]NetworkEndpointGroupsScopedList `json:"items,omitempty"` + + // Kind: [Output Only] The resource type, which is always + // compute#networkEndpointGroupAggregatedList for aggregated lists of + // network endpoint groups. + Kind string `json:"kind,omitempty"` + + // NextPageToken: [Output Only] This token allows you to get the next + // page of results for list requests. If the number of results is larger + // than maxResults, use the nextPageToken as a value for the query + // parameter pageToken in the next list request. Subsequent list + // requests will have their own nextPageToken to continue paging through + // the results. + NextPageToken string `json:"nextPageToken,omitempty"` + + // SelfLink: [Output Only] Server-defined URL for this resource. + SelfLink string `json:"selfLink,omitempty"` + + // Warning: [Output Only] Informational warning message. + Warning *NetworkEndpointGroupAggregatedListWarning `json:"warning,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Id") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Id") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *NetworkEndpointGroupAggregatedList) MarshalJSON() ([]byte, error) { + type NoMethod NetworkEndpointGroupAggregatedList + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// NetworkEndpointGroupAggregatedListWarning: [Output Only] +// Informational warning message. +type NetworkEndpointGroupAggregatedListWarning struct { + // Code: [Output Only] A warning code, if applicable. For example, + // Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in + // the response. + // + // Possible values: + // "CLEANUP_FAILED" + // "DEPRECATED_RESOURCE_USED" + // "DEPRECATED_TYPE_USED" + // "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" + // "EXPERIMENTAL_TYPE_USED" + // "EXTERNAL_API_WARNING" + // "FIELD_VALUE_OVERRIDEN" + // "INJECTED_KERNELS_DEPRECATED" + // "MISSING_TYPE_DEPENDENCY" + // "NEXT_HOP_ADDRESS_NOT_ASSIGNED" + // "NEXT_HOP_CANNOT_IP_FORWARD" + // "NEXT_HOP_INSTANCE_NOT_FOUND" + // "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" + // "NEXT_HOP_NOT_RUNNING" + // "NOT_CRITICAL_ERROR" + // "NO_RESULTS_ON_PAGE" + // "REQUIRED_TOS_AGREEMENT" + // "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" + // "RESOURCE_NOT_DELETED" + // "SCHEMA_VALIDATION_IGNORED" + // "SINGLE_INSTANCE_PROPERTY_TEMPLATE" + // "UNDECLARED_PROPERTIES" + // "UNREACHABLE" + Code string `json:"code,omitempty"` + + // Data: [Output Only] Metadata about this warning in key: value format. + // For example: + // "data": [ { "key": "scope", "value": "zones/us-east1-d" } + Data []*NetworkEndpointGroupAggregatedListWarningData `json:"data,omitempty"` + + // Message: [Output Only] A human-readable description of the warning + // code. + Message string `json:"message,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Code") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Code") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *NetworkEndpointGroupAggregatedListWarning) MarshalJSON() ([]byte, error) { + type NoMethod NetworkEndpointGroupAggregatedListWarning + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type NetworkEndpointGroupAggregatedListWarningData struct { + // Key: [Output Only] A key that provides more detail on the warning + // being returned. For example, for warnings where there are no results + // in a list request for a particular zone, this key might be scope and + // the key value might be the zone name. Other examples might be a key + // indicating a deprecated resource and a suggested replacement, or a + // warning about invalid network settings (for example, if an instance + // attempts to perform IP forwarding but is not enabled for IP + // forwarding). + Key string `json:"key,omitempty"` + + // Value: [Output Only] A warning data value corresponding to the key. + Value string `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Key") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Key") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *NetworkEndpointGroupAggregatedListWarningData) MarshalJSON() ([]byte, error) { + type NoMethod NetworkEndpointGroupAggregatedListWarningData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// NetworkEndpointGroupLbNetworkEndpointGroup: Load balancing specific +// fields for network endpoint group of type LOAD_BALANCING. +type NetworkEndpointGroupLbNetworkEndpointGroup struct { + // DefaultPort: The default port used if the port number is not + // specified in the network endpoint. If the network endpoint type is + // GCE_VM_IP, this field must not be specified. + DefaultPort int64 `json:"defaultPort,omitempty"` + + // Network: The URL of the network to which all network endpoints in the + // NEG belong. Uses "default" project network if unspecified. + Network string `json:"network,omitempty"` + + // Subnetwork: Optional URL of the subnetwork to which all network + // endpoints in the NEG belong. + Subnetwork string `json:"subnetwork,omitempty"` + + // Zone: [Output Only] The URL of the zone where the network endpoint + // group is located. + Zone string `json:"zone,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DefaultPort") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DefaultPort") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *NetworkEndpointGroupLbNetworkEndpointGroup) MarshalJSON() ([]byte, error) { + type NoMethod NetworkEndpointGroupLbNetworkEndpointGroup + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type NetworkEndpointGroupList struct { + // Id: [Output Only] Unique identifier for the resource; defined by the + // server. + Id string `json:"id,omitempty"` + + // Items: A list of NetworkEndpointGroup resources. + Items []*NetworkEndpointGroup `json:"items,omitempty"` + + // Kind: [Output Only] The resource type, which is always + // compute#networkEndpointGroupList for network endpoint group lists. + Kind string `json:"kind,omitempty"` + + // NextPageToken: [Output Only] This token allows you to get the next + // page of results for list requests. If the number of results is larger + // than maxResults, use the nextPageToken as a value for the query + // parameter pageToken in the next list request. Subsequent list + // requests will have their own nextPageToken to continue paging through + // the results. + NextPageToken string `json:"nextPageToken,omitempty"` + + // SelfLink: [Output Only] Server-defined URL for this resource. + SelfLink string `json:"selfLink,omitempty"` + + // Warning: [Output Only] Informational warning message. + Warning *NetworkEndpointGroupListWarning `json:"warning,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Id") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Id") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *NetworkEndpointGroupList) MarshalJSON() ([]byte, error) { + type NoMethod NetworkEndpointGroupList + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// NetworkEndpointGroupListWarning: [Output Only] Informational warning +// message. +type NetworkEndpointGroupListWarning struct { + // Code: [Output Only] A warning code, if applicable. For example, + // Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in + // the response. + // + // Possible values: + // "CLEANUP_FAILED" + // "DEPRECATED_RESOURCE_USED" + // "DEPRECATED_TYPE_USED" + // "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" + // "EXPERIMENTAL_TYPE_USED" + // "EXTERNAL_API_WARNING" + // "FIELD_VALUE_OVERRIDEN" + // "INJECTED_KERNELS_DEPRECATED" + // "MISSING_TYPE_DEPENDENCY" + // "NEXT_HOP_ADDRESS_NOT_ASSIGNED" + // "NEXT_HOP_CANNOT_IP_FORWARD" + // "NEXT_HOP_INSTANCE_NOT_FOUND" + // "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" + // "NEXT_HOP_NOT_RUNNING" + // "NOT_CRITICAL_ERROR" + // "NO_RESULTS_ON_PAGE" + // "REQUIRED_TOS_AGREEMENT" + // "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" + // "RESOURCE_NOT_DELETED" + // "SCHEMA_VALIDATION_IGNORED" + // "SINGLE_INSTANCE_PROPERTY_TEMPLATE" + // "UNDECLARED_PROPERTIES" + // "UNREACHABLE" + Code string `json:"code,omitempty"` + + // Data: [Output Only] Metadata about this warning in key: value format. + // For example: + // "data": [ { "key": "scope", "value": "zones/us-east1-d" } + Data []*NetworkEndpointGroupListWarningData `json:"data,omitempty"` + + // Message: [Output Only] A human-readable description of the warning + // code. + Message string `json:"message,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Code") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Code") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *NetworkEndpointGroupListWarning) MarshalJSON() ([]byte, error) { + type NoMethod NetworkEndpointGroupListWarning + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type NetworkEndpointGroupListWarningData struct { + // Key: [Output Only] A key that provides more detail on the warning + // being returned. For example, for warnings where there are no results + // in a list request for a particular zone, this key might be scope and + // the key value might be the zone name. Other examples might be a key + // indicating a deprecated resource and a suggested replacement, or a + // warning about invalid network settings (for example, if an instance + // attempts to perform IP forwarding but is not enabled for IP + // forwarding). + Key string `json:"key,omitempty"` + + // Value: [Output Only] A warning data value corresponding to the key. + Value string `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Key") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Key") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *NetworkEndpointGroupListWarningData) MarshalJSON() ([]byte, error) { + type NoMethod NetworkEndpointGroupListWarningData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type NetworkEndpointGroupsAttachEndpointsRequest struct { + // NetworkEndpoints: The list of network endpoints to be attached. + NetworkEndpoints []*NetworkEndpoint `json:"networkEndpoints,omitempty"` + + // ForceSendFields is a list of field names (e.g. "NetworkEndpoints") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "NetworkEndpoints") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *NetworkEndpointGroupsAttachEndpointsRequest) MarshalJSON() ([]byte, error) { + type NoMethod NetworkEndpointGroupsAttachEndpointsRequest + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type NetworkEndpointGroupsDetachEndpointsRequest struct { + // NetworkEndpoints: The list of network endpoints to be detached. + NetworkEndpoints []*NetworkEndpoint `json:"networkEndpoints,omitempty"` + + // ForceSendFields is a list of field names (e.g. "NetworkEndpoints") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "NetworkEndpoints") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *NetworkEndpointGroupsDetachEndpointsRequest) MarshalJSON() ([]byte, error) { + type NoMethod NetworkEndpointGroupsDetachEndpointsRequest + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type NetworkEndpointGroupsListEndpointsRequest struct { + // HealthStatus: Optional query parameter for showing the health status + // of each network endpoint. Valid options are SKIP or SHOW. If you + // don't specifiy this parameter, the health status of network endpoints + // will not be provided. + // + // Possible values: + // "SHOW" + // "SKIP" + HealthStatus string `json:"healthStatus,omitempty"` + + // ForceSendFields is a list of field names (e.g. "HealthStatus") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "HealthStatus") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *NetworkEndpointGroupsListEndpointsRequest) MarshalJSON() ([]byte, error) { + type NoMethod NetworkEndpointGroupsListEndpointsRequest + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type NetworkEndpointGroupsListNetworkEndpoints struct { + // Id: [Output Only] Unique identifier for the resource; defined by the + // server. + Id string `json:"id,omitempty"` + + // Items: A list of NetworkEndpointWithHealthStatus resources. + Items []*NetworkEndpointWithHealthStatus `json:"items,omitempty"` + + // Kind: [Output Only] The resource type, which is always + // compute#networkEndpointGroupsListNetworkEndpoints for the list of + // network endpoints in the specified network endpoint group. + Kind string `json:"kind,omitempty"` + + // NextPageToken: [Output Only] This token allows you to get the next + // page of results for list requests. If the number of results is larger + // than maxResults, use the nextPageToken as a value for the query + // parameter pageToken in the next list request. Subsequent list + // requests will have their own nextPageToken to continue paging through + // the results. + NextPageToken string `json:"nextPageToken,omitempty"` + + // Warning: [Output Only] Informational warning message. + Warning *NetworkEndpointGroupsListNetworkEndpointsWarning `json:"warning,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Id") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Id") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *NetworkEndpointGroupsListNetworkEndpoints) MarshalJSON() ([]byte, error) { + type NoMethod NetworkEndpointGroupsListNetworkEndpoints + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// NetworkEndpointGroupsListNetworkEndpointsWarning: [Output Only] +// Informational warning message. +type NetworkEndpointGroupsListNetworkEndpointsWarning struct { + // Code: [Output Only] A warning code, if applicable. For example, + // Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in + // the response. + // + // Possible values: + // "CLEANUP_FAILED" + // "DEPRECATED_RESOURCE_USED" + // "DEPRECATED_TYPE_USED" + // "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" + // "EXPERIMENTAL_TYPE_USED" + // "EXTERNAL_API_WARNING" + // "FIELD_VALUE_OVERRIDEN" + // "INJECTED_KERNELS_DEPRECATED" + // "MISSING_TYPE_DEPENDENCY" + // "NEXT_HOP_ADDRESS_NOT_ASSIGNED" + // "NEXT_HOP_CANNOT_IP_FORWARD" + // "NEXT_HOP_INSTANCE_NOT_FOUND" + // "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" + // "NEXT_HOP_NOT_RUNNING" + // "NOT_CRITICAL_ERROR" + // "NO_RESULTS_ON_PAGE" + // "REQUIRED_TOS_AGREEMENT" + // "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" + // "RESOURCE_NOT_DELETED" + // "SCHEMA_VALIDATION_IGNORED" + // "SINGLE_INSTANCE_PROPERTY_TEMPLATE" + // "UNDECLARED_PROPERTIES" + // "UNREACHABLE" + Code string `json:"code,omitempty"` + + // Data: [Output Only] Metadata about this warning in key: value format. + // For example: + // "data": [ { "key": "scope", "value": "zones/us-east1-d" } + Data []*NetworkEndpointGroupsListNetworkEndpointsWarningData `json:"data,omitempty"` + + // Message: [Output Only] A human-readable description of the warning + // code. + Message string `json:"message,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Code") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Code") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *NetworkEndpointGroupsListNetworkEndpointsWarning) MarshalJSON() ([]byte, error) { + type NoMethod NetworkEndpointGroupsListNetworkEndpointsWarning + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type NetworkEndpointGroupsListNetworkEndpointsWarningData struct { + // Key: [Output Only] A key that provides more detail on the warning + // being returned. For example, for warnings where there are no results + // in a list request for a particular zone, this key might be scope and + // the key value might be the zone name. Other examples might be a key + // indicating a deprecated resource and a suggested replacement, or a + // warning about invalid network settings (for example, if an instance + // attempts to perform IP forwarding but is not enabled for IP + // forwarding). + Key string `json:"key,omitempty"` + + // Value: [Output Only] A warning data value corresponding to the key. + Value string `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Key") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Key") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *NetworkEndpointGroupsListNetworkEndpointsWarningData) MarshalJSON() ([]byte, error) { + type NoMethod NetworkEndpointGroupsListNetworkEndpointsWarningData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type NetworkEndpointGroupsScopedList struct { + // NetworkEndpointGroups: [Output Only] The list of network endpoint + // groups that are contained in this scope. + NetworkEndpointGroups []*NetworkEndpointGroup `json:"networkEndpointGroups,omitempty"` + + // Warning: [Output Only] An informational warning that replaces the + // list of network endpoint groups when the list is empty. + Warning *NetworkEndpointGroupsScopedListWarning `json:"warning,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "NetworkEndpointGroups") to unconditionally include in API requests. + // By default, fields with empty values are omitted from API requests. + // However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "NetworkEndpointGroups") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *NetworkEndpointGroupsScopedList) MarshalJSON() ([]byte, error) { + type NoMethod NetworkEndpointGroupsScopedList + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// NetworkEndpointGroupsScopedListWarning: [Output Only] An +// informational warning that replaces the list of network endpoint +// groups when the list is empty. +type NetworkEndpointGroupsScopedListWarning struct { + // Code: [Output Only] A warning code, if applicable. For example, + // Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in + // the response. + // + // Possible values: + // "CLEANUP_FAILED" + // "DEPRECATED_RESOURCE_USED" + // "DEPRECATED_TYPE_USED" + // "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" + // "EXPERIMENTAL_TYPE_USED" + // "EXTERNAL_API_WARNING" + // "FIELD_VALUE_OVERRIDEN" + // "INJECTED_KERNELS_DEPRECATED" + // "MISSING_TYPE_DEPENDENCY" + // "NEXT_HOP_ADDRESS_NOT_ASSIGNED" + // "NEXT_HOP_CANNOT_IP_FORWARD" + // "NEXT_HOP_INSTANCE_NOT_FOUND" + // "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" + // "NEXT_HOP_NOT_RUNNING" + // "NOT_CRITICAL_ERROR" + // "NO_RESULTS_ON_PAGE" + // "REQUIRED_TOS_AGREEMENT" + // "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" + // "RESOURCE_NOT_DELETED" + // "SCHEMA_VALIDATION_IGNORED" + // "SINGLE_INSTANCE_PROPERTY_TEMPLATE" + // "UNDECLARED_PROPERTIES" + // "UNREACHABLE" + Code string `json:"code,omitempty"` + + // Data: [Output Only] Metadata about this warning in key: value format. + // For example: + // "data": [ { "key": "scope", "value": "zones/us-east1-d" } + Data []*NetworkEndpointGroupsScopedListWarningData `json:"data,omitempty"` + + // Message: [Output Only] A human-readable description of the warning + // code. + Message string `json:"message,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Code") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Code") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *NetworkEndpointGroupsScopedListWarning) MarshalJSON() ([]byte, error) { + type NoMethod NetworkEndpointGroupsScopedListWarning + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type NetworkEndpointGroupsScopedListWarningData struct { + // Key: [Output Only] A key that provides more detail on the warning + // being returned. For example, for warnings where there are no results + // in a list request for a particular zone, this key might be scope and + // the key value might be the zone name. Other examples might be a key + // indicating a deprecated resource and a suggested replacement, or a + // warning about invalid network settings (for example, if an instance + // attempts to perform IP forwarding but is not enabled for IP + // forwarding). + Key string `json:"key,omitempty"` + + // Value: [Output Only] A warning data value corresponding to the key. + Value string `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Key") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Key") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *NetworkEndpointGroupsScopedListWarningData) MarshalJSON() ([]byte, error) { + type NoMethod NetworkEndpointGroupsScopedListWarningData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type NetworkEndpointWithHealthStatus struct { + // Healths: [Output only] The health status of network endpoint; + Healths []*HealthStatusForNetworkEndpoint `json:"healths,omitempty"` + + // NetworkEndpoint: [Output only] The network endpoint; + NetworkEndpoint *NetworkEndpoint `json:"networkEndpoint,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Healths") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Healths") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *NetworkEndpointWithHealthStatus) MarshalJSON() ([]byte, error) { + type NoMethod NetworkEndpointWithHealthStatus + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // NetworkInterface: A network interface resource attached to an // instance. type NetworkInterface struct { @@ -16555,6 +17669,13 @@ type NodeGroupNode struct { // NodeType: The type of this node. NodeType string `json:"nodeType,omitempty"` + // Possible values: + // "CREATING" + // "DELETING" + // "INVALID" + // "READY" + Status string `json:"status,omitempty"` + // ForceSendFields is a list of field names (e.g. "Instances") to // unconditionally include in API requests. By default, fields with // empty values are omitted from API requests. However, any non-pointer, @@ -18807,6 +19928,35 @@ func (s *Policy) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +type PreconfiguredWafSet struct { + // ExpressionSets: List of entities that are currently supported for WAF + // rules. + ExpressionSets []*WafExpressionSet `json:"expressionSets,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ExpressionSets") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ExpressionSets") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *PreconfiguredWafSet) MarshalJSON() ([]byte, error) { + type NoMethod PreconfiguredWafSet + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // Project: A Project resource. For an overview of projects, see Cloud // Platform Resource Hierarchy. (== resource_for v1.projects ==) (== // resource_for beta.projects ==) @@ -19089,6 +20239,7 @@ type Quota struct { // "IN_USE_ADDRESSES" // "LOCAL_SSD_TOTAL_GB" // "NETWORKS" + // "NETWORK_ENDPOINT_GROUPS" // "NVIDIA_K80_GPUS" // "NVIDIA_P100_GPUS" // "NVIDIA_V100_GPUS" @@ -22032,6 +23183,33 @@ type SSLHealthCheck struct { // both port and port_name are defined, port takes precedence. PortName string `json:"portName,omitempty"` + // PortSpecification: Specifies how port is selected for health + // checking, can be one of following values: + // USE_FIXED_PORT: The port number in + // port + // is used for health checking. + // USE_NAMED_PORT: The + // portName + // is used for health checking. + // USE_SERVING_PORT: For NetworkEndpointGroup, the port specified for + // each network endpoint is used for health checking. For other + // backends, the port or named port specified in the Backend Service is + // used for health checking. + // + // + // If not specified, SSL health check follows behavior specified + // in + // port + // and + // portName + // fields. + // + // Possible values: + // "USE_FIXED_PORT" + // "USE_NAMED_PORT" + // "USE_SERVING_PORT" + PortSpecification string `json:"portSpecification,omitempty"` + // ProxyHeader: Specifies the type of proxy header to append before // sending data to the backend, either NONE or PROXY_V1. The default is // NONE. @@ -22170,6 +23348,64 @@ func (s *SchedulingNodeAffinity) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +type SecurityPoliciesListPreconfiguredExpressionSetsResponse struct { + PreconfiguredExpressionSets *SecurityPoliciesWafConfig `json:"preconfiguredExpressionSets,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. + // "PreconfiguredExpressionSets") to unconditionally include in API + // requests. By default, fields with empty values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "PreconfiguredExpressionSets") to include in API requests with the + // JSON null value. By default, fields with empty values are omitted + // from API requests. However, any field with an empty value appearing + // in NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *SecurityPoliciesListPreconfiguredExpressionSetsResponse) MarshalJSON() ([]byte, error) { + type NoMethod SecurityPoliciesListPreconfiguredExpressionSetsResponse + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type SecurityPoliciesWafConfig struct { + WafRules *PreconfiguredWafSet `json:"wafRules,omitempty"` + + // ForceSendFields is a list of field names (e.g. "WafRules") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "WafRules") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *SecurityPoliciesWafConfig) MarshalJSON() ([]byte, error) { + type NoMethod SecurityPoliciesWafConfig + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // SecurityPolicy: A security policy is comprised of one or more rules. // It can also be associated with one or more 'targets'. Next available // tag: 11 @@ -28847,6 +30083,76 @@ func (s *VpnTunnelsScopedListWarningData) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +type WafExpressionSet struct { + // Aliases: A list of alternate IDs. The format should be: - E.g. + // XSS-stable Generic suffix like "stable" is particularly useful if a + // policy likes to avail newer set of expressions without having to + // change the policy. A given alias name can't be used for more than one + // entity set. + Aliases []string `json:"aliases,omitempty"` + + // Expressions: List of available expressions. + Expressions []*WafExpressionSetExpression `json:"expressions,omitempty"` + + // Id: Google specified expression set ID. The format should be: - E.g. + // XSS-20170329 + Id string `json:"id,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Aliases") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Aliases") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *WafExpressionSet) MarshalJSON() ([]byte, error) { + type NoMethod WafExpressionSet + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type WafExpressionSetExpression struct { + // Id: Expression ID should uniquely identify the origin of the + // expression. E.g. owasp-crs-v020901-id973337 identifies Owasp core + // rule set version 2.9.1 rule id 973337. The ID could be used to + // determine the individual attack definition that has been detected. It + // could also be used to exclude it from the policy in case of false + // positive. + Id string `json:"id,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Id") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Id") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *WafExpressionSetExpression) MarshalJSON() ([]byte, error) { + type NoMethod WafExpressionSetExpression + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + type XpnHostList struct { // Id: [Output Only] Unique identifier for the resource; defined by the // server. @@ -66234,6 +67540,1801 @@ func (c *MachineTypesListCall) Pages(ctx context.Context, f func(*MachineTypeLis } } +// method id "compute.networkEndpointGroups.aggregatedList": + +type NetworkEndpointGroupsAggregatedListCall struct { + s *Service + project string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// AggregatedList: Retrieves the list of network endpoint groups and +// sorts them by zone. +func (r *NetworkEndpointGroupsService) AggregatedList(project string) *NetworkEndpointGroupsAggregatedListCall { + c := &NetworkEndpointGroupsAggregatedListCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.project = project + return c +} + +// Filter sets the optional parameter "filter": A filter expression that +// filters resources listed in the response. The expression must specify +// the field name, a comparison operator, and the value that you want to +// use for filtering. The value must be a string, a number, or a +// boolean. The comparison operator must be either =, !=, >, or <. +// +// For example, if you are filtering Compute Engine instances, you can +// exclude instances named example-instance by specifying name != +// example-instance. +// +// You can also filter nested fields. For example, you could specify +// scheduling.automaticRestart = false to include instances only if they +// are not scheduled for automatic restarts. You can use filtering on +// nested fields to filter based on resource labels. +// +// To filter on multiple expressions, provide each separate expression +// within parentheses. For example, (scheduling.automaticRestart = true) +// (cpuPlatform = "Intel Skylake"). By default, each expression is an +// AND expression. However, you can include AND and OR expressions +// explicitly. For example, (cpuPlatform = "Intel Skylake") OR +// (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = +// true). +func (c *NetworkEndpointGroupsAggregatedListCall) Filter(filter string) *NetworkEndpointGroupsAggregatedListCall { + c.urlParams_.Set("filter", filter) + return c +} + +// MaxResults sets the optional parameter "maxResults": The maximum +// number of results per page that should be returned. If the number of +// available results is larger than maxResults, Compute Engine returns a +// nextPageToken that can be used to get the next page of results in +// subsequent list requests. Acceptable values are 0 to 500, inclusive. +// (Default: 500) +func (c *NetworkEndpointGroupsAggregatedListCall) MaxResults(maxResults int64) *NetworkEndpointGroupsAggregatedListCall { + c.urlParams_.Set("maxResults", fmt.Sprint(maxResults)) + return c +} + +// OrderBy sets the optional parameter "orderBy": Sorts list results by +// a certain order. By default, results are returned in alphanumerical +// order based on the resource name. +// +// You can also sort results in descending order based on the creation +// timestamp using orderBy="creationTimestamp desc". This sorts results +// based on the creationTimestamp field in reverse chronological order +// (newest result first). Use this to sort resources like operations so +// that the newest operation is returned first. +// +// Currently, only sorting by name or creationTimestamp desc is +// supported. +func (c *NetworkEndpointGroupsAggregatedListCall) OrderBy(orderBy string) *NetworkEndpointGroupsAggregatedListCall { + c.urlParams_.Set("orderBy", orderBy) + return c +} + +// PageToken sets the optional parameter "pageToken": Specifies a page +// token to use. Set pageToken to the nextPageToken returned by a +// previous list request to get the next page of results. +func (c *NetworkEndpointGroupsAggregatedListCall) PageToken(pageToken string) *NetworkEndpointGroupsAggregatedListCall { + c.urlParams_.Set("pageToken", pageToken) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *NetworkEndpointGroupsAggregatedListCall) Fields(s ...googleapi.Field) *NetworkEndpointGroupsAggregatedListCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *NetworkEndpointGroupsAggregatedListCall) IfNoneMatch(entityTag string) *NetworkEndpointGroupsAggregatedListCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *NetworkEndpointGroupsAggregatedListCall) Context(ctx context.Context) *NetworkEndpointGroupsAggregatedListCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *NetworkEndpointGroupsAggregatedListCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *NetworkEndpointGroupsAggregatedListCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/aggregated/networkEndpointGroups") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "project": c.project, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "compute.networkEndpointGroups.aggregatedList" call. +// Exactly one of *NetworkEndpointGroupAggregatedList or error will be +// non-nil. Any non-2xx status code is an error. Response headers are in +// either *NetworkEndpointGroupAggregatedList.ServerResponse.Header or +// (if a response was returned at all) in +// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check +// whether the returned error was because http.StatusNotModified was +// returned. +func (c *NetworkEndpointGroupsAggregatedListCall) Do(opts ...googleapi.CallOption) (*NetworkEndpointGroupAggregatedList, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &NetworkEndpointGroupAggregatedList{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Retrieves the list of network endpoint groups and sorts them by zone.", + // "httpMethod": "GET", + // "id": "compute.networkEndpointGroups.aggregatedList", + // "parameterOrder": [ + // "project" + // ], + // "parameters": { + // "filter": { + // "description": "A filter expression that filters resources listed in the response. The expression must specify the field name, a comparison operator, and the value that you want to use for filtering. The value must be a string, a number, or a boolean. The comparison operator must be either =, !=, \u003e, or \u003c.\n\nFor example, if you are filtering Compute Engine instances, you can exclude instances named example-instance by specifying name != example-instance.\n\nYou can also filter nested fields. For example, you could specify scheduling.automaticRestart = false to include instances only if they are not scheduled for automatic restarts. You can use filtering on nested fields to filter based on resource labels.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart = true) (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND expression. However, you can include AND and OR expressions explicitly. For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel Broadwell\") AND (scheduling.automaticRestart = true).", + // "location": "query", + // "type": "string" + // }, + // "maxResults": { + // "default": "500", + // "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)", + // "format": "uint32", + // "location": "query", + // "minimum": "0", + // "type": "integer" + // }, + // "orderBy": { + // "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.", + // "location": "query", + // "type": "string" + // }, + // "pageToken": { + // "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.", + // "location": "query", + // "type": "string" + // }, + // "project": { + // "description": "Project ID for this request.", + // "location": "path", + // "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))", + // "required": true, + // "type": "string" + // } + // }, + // "path": "{project}/aggregated/networkEndpointGroups", + // "response": { + // "$ref": "NetworkEndpointGroupAggregatedList" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform", + // "https://www.googleapis.com/auth/compute", + // "https://www.googleapis.com/auth/compute.readonly" + // ] + // } + +} + +// Pages invokes f for each page of results. +// A non-nil error returned from f will halt the iteration. +// The provided context supersedes any context provided to the Context method. +func (c *NetworkEndpointGroupsAggregatedListCall) Pages(ctx context.Context, f func(*NetworkEndpointGroupAggregatedList) error) error { + c.ctx_ = ctx + defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point + for { + x, err := c.Do() + if err != nil { + return err + } + if err := f(x); err != nil { + return err + } + if x.NextPageToken == "" { + return nil + } + c.PageToken(x.NextPageToken) + } +} + +// method id "compute.networkEndpointGroups.attachNetworkEndpoints": + +type NetworkEndpointGroupsAttachNetworkEndpointsCall struct { + s *Service + project string + zone string + networkEndpointGroup string + networkendpointgroupsattachendpointsrequest *NetworkEndpointGroupsAttachEndpointsRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// AttachNetworkEndpoints: Attach a list of network endpoints to the +// specified network endpoint group. +func (r *NetworkEndpointGroupsService) AttachNetworkEndpoints(project string, zone string, networkEndpointGroup string, networkendpointgroupsattachendpointsrequest *NetworkEndpointGroupsAttachEndpointsRequest) *NetworkEndpointGroupsAttachNetworkEndpointsCall { + c := &NetworkEndpointGroupsAttachNetworkEndpointsCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.project = project + c.zone = zone + c.networkEndpointGroup = networkEndpointGroup + c.networkendpointgroupsattachendpointsrequest = networkendpointgroupsattachendpointsrequest + return c +} + +// RequestId sets the optional parameter "requestId": An optional +// request ID to identify requests. Specify a unique request ID so that +// if you must retry your request, the server will know to ignore the +// request if it has already been completed. +// +// For example, consider a situation where you make an initial request +// and the request times out. If you make the request again with the +// same request ID, the server can check if original operation with the +// same request ID was received, and if so, will ignore the second +// request. This prevents clients from accidentally creating duplicate +// commitments. +// +// The request ID must be a valid UUID with the exception that zero UUID +// is not supported (00000000-0000-0000-0000-000000000000). +func (c *NetworkEndpointGroupsAttachNetworkEndpointsCall) RequestId(requestId string) *NetworkEndpointGroupsAttachNetworkEndpointsCall { + c.urlParams_.Set("requestId", requestId) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *NetworkEndpointGroupsAttachNetworkEndpointsCall) Fields(s ...googleapi.Field) *NetworkEndpointGroupsAttachNetworkEndpointsCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *NetworkEndpointGroupsAttachNetworkEndpointsCall) Context(ctx context.Context) *NetworkEndpointGroupsAttachNetworkEndpointsCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *NetworkEndpointGroupsAttachNetworkEndpointsCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *NetworkEndpointGroupsAttachNetworkEndpointsCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.networkendpointgroupsattachendpointsrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/zones/{zone}/networkEndpointGroups/{networkEndpointGroup}/attachNetworkEndpoints") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "project": c.project, + "zone": c.zone, + "networkEndpointGroup": c.networkEndpointGroup, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "compute.networkEndpointGroups.attachNetworkEndpoints" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *NetworkEndpointGroupsAttachNetworkEndpointsCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Attach a list of network endpoints to the specified network endpoint group.", + // "httpMethod": "POST", + // "id": "compute.networkEndpointGroups.attachNetworkEndpoints", + // "parameterOrder": [ + // "project", + // "zone", + // "networkEndpointGroup" + // ], + // "parameters": { + // "networkEndpointGroup": { + // "description": "The name of the network endpoint group where you are attaching network endpoints to. It should comply with RFC1035.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "project": { + // "description": "Project ID for this request.", + // "location": "path", + // "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))", + // "required": true, + // "type": "string" + // }, + // "requestId": { + // "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).", + // "location": "query", + // "type": "string" + // }, + // "zone": { + // "description": "The name of the zone where the network endpoint group is located. It should comply with RFC1035.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "{project}/zones/{zone}/networkEndpointGroups/{networkEndpointGroup}/attachNetworkEndpoints", + // "request": { + // "$ref": "NetworkEndpointGroupsAttachEndpointsRequest" + // }, + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform", + // "https://www.googleapis.com/auth/compute" + // ] + // } + +} + +// method id "compute.networkEndpointGroups.delete": + +type NetworkEndpointGroupsDeleteCall struct { + s *Service + project string + zone string + networkEndpointGroup string + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Delete: Deletes the specified network endpoint group. The network +// endpoints in the NEG and the VM instances they belong to are not +// terminated when the NEG is deleted. Note that the NEG cannot be +// deleted if there are backend services referencing it. +func (r *NetworkEndpointGroupsService) Delete(project string, zone string, networkEndpointGroup string) *NetworkEndpointGroupsDeleteCall { + c := &NetworkEndpointGroupsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.project = project + c.zone = zone + c.networkEndpointGroup = networkEndpointGroup + return c +} + +// RequestId sets the optional parameter "requestId": An optional +// request ID to identify requests. Specify a unique request ID so that +// if you must retry your request, the server will know to ignore the +// request if it has already been completed. +// +// For example, consider a situation where you make an initial request +// and the request times out. If you make the request again with the +// same request ID, the server can check if original operation with the +// same request ID was received, and if so, will ignore the second +// request. This prevents clients from accidentally creating duplicate +// commitments. +// +// The request ID must be a valid UUID with the exception that zero UUID +// is not supported (00000000-0000-0000-0000-000000000000). +func (c *NetworkEndpointGroupsDeleteCall) RequestId(requestId string) *NetworkEndpointGroupsDeleteCall { + c.urlParams_.Set("requestId", requestId) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *NetworkEndpointGroupsDeleteCall) Fields(s ...googleapi.Field) *NetworkEndpointGroupsDeleteCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *NetworkEndpointGroupsDeleteCall) Context(ctx context.Context) *NetworkEndpointGroupsDeleteCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *NetworkEndpointGroupsDeleteCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *NetworkEndpointGroupsDeleteCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/zones/{zone}/networkEndpointGroups/{networkEndpointGroup}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("DELETE", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "project": c.project, + "zone": c.zone, + "networkEndpointGroup": c.networkEndpointGroup, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "compute.networkEndpointGroups.delete" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *NetworkEndpointGroupsDeleteCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Deletes the specified network endpoint group. The network endpoints in the NEG and the VM instances they belong to are not terminated when the NEG is deleted. Note that the NEG cannot be deleted if there are backend services referencing it.", + // "httpMethod": "DELETE", + // "id": "compute.networkEndpointGroups.delete", + // "parameterOrder": [ + // "project", + // "zone", + // "networkEndpointGroup" + // ], + // "parameters": { + // "networkEndpointGroup": { + // "description": "The name of the network endpoint group to delete. It should comply with RFC1035.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "project": { + // "description": "Project ID for this request.", + // "location": "path", + // "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))", + // "required": true, + // "type": "string" + // }, + // "requestId": { + // "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).", + // "location": "query", + // "type": "string" + // }, + // "zone": { + // "description": "The name of the zone where the network endpoint group is located. It should comply with RFC1035.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "{project}/zones/{zone}/networkEndpointGroups/{networkEndpointGroup}", + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform", + // "https://www.googleapis.com/auth/compute" + // ] + // } + +} + +// method id "compute.networkEndpointGroups.detachNetworkEndpoints": + +type NetworkEndpointGroupsDetachNetworkEndpointsCall struct { + s *Service + project string + zone string + networkEndpointGroup string + networkendpointgroupsdetachendpointsrequest *NetworkEndpointGroupsDetachEndpointsRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// DetachNetworkEndpoints: Detach a list of network endpoints from the +// specified network endpoint group. +func (r *NetworkEndpointGroupsService) DetachNetworkEndpoints(project string, zone string, networkEndpointGroup string, networkendpointgroupsdetachendpointsrequest *NetworkEndpointGroupsDetachEndpointsRequest) *NetworkEndpointGroupsDetachNetworkEndpointsCall { + c := &NetworkEndpointGroupsDetachNetworkEndpointsCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.project = project + c.zone = zone + c.networkEndpointGroup = networkEndpointGroup + c.networkendpointgroupsdetachendpointsrequest = networkendpointgroupsdetachendpointsrequest + return c +} + +// RequestId sets the optional parameter "requestId": An optional +// request ID to identify requests. Specify a unique request ID so that +// if you must retry your request, the server will know to ignore the +// request if it has already been completed. +// +// For example, consider a situation where you make an initial request +// and the request times out. If you make the request again with the +// same request ID, the server can check if original operation with the +// same request ID was received, and if so, will ignore the second +// request. This prevents clients from accidentally creating duplicate +// commitments. +// +// The request ID must be a valid UUID with the exception that zero UUID +// is not supported (00000000-0000-0000-0000-000000000000). +func (c *NetworkEndpointGroupsDetachNetworkEndpointsCall) RequestId(requestId string) *NetworkEndpointGroupsDetachNetworkEndpointsCall { + c.urlParams_.Set("requestId", requestId) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *NetworkEndpointGroupsDetachNetworkEndpointsCall) Fields(s ...googleapi.Field) *NetworkEndpointGroupsDetachNetworkEndpointsCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *NetworkEndpointGroupsDetachNetworkEndpointsCall) Context(ctx context.Context) *NetworkEndpointGroupsDetachNetworkEndpointsCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *NetworkEndpointGroupsDetachNetworkEndpointsCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *NetworkEndpointGroupsDetachNetworkEndpointsCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.networkendpointgroupsdetachendpointsrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/zones/{zone}/networkEndpointGroups/{networkEndpointGroup}/detachNetworkEndpoints") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "project": c.project, + "zone": c.zone, + "networkEndpointGroup": c.networkEndpointGroup, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "compute.networkEndpointGroups.detachNetworkEndpoints" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *NetworkEndpointGroupsDetachNetworkEndpointsCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Detach a list of network endpoints from the specified network endpoint group.", + // "httpMethod": "POST", + // "id": "compute.networkEndpointGroups.detachNetworkEndpoints", + // "parameterOrder": [ + // "project", + // "zone", + // "networkEndpointGroup" + // ], + // "parameters": { + // "networkEndpointGroup": { + // "description": "The name of the network endpoint group where you are removing network endpoints. It should comply with RFC1035.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "project": { + // "description": "Project ID for this request.", + // "location": "path", + // "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))", + // "required": true, + // "type": "string" + // }, + // "requestId": { + // "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).", + // "location": "query", + // "type": "string" + // }, + // "zone": { + // "description": "The name of the zone where the network endpoint group is located. It should comply with RFC1035.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "{project}/zones/{zone}/networkEndpointGroups/{networkEndpointGroup}/detachNetworkEndpoints", + // "request": { + // "$ref": "NetworkEndpointGroupsDetachEndpointsRequest" + // }, + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform", + // "https://www.googleapis.com/auth/compute" + // ] + // } + +} + +// method id "compute.networkEndpointGroups.get": + +type NetworkEndpointGroupsGetCall struct { + s *Service + project string + zone string + networkEndpointGroup string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// Get: Returns the specified network endpoint group. Gets a list of +// available network endpoint groups by making a list() request. +func (r *NetworkEndpointGroupsService) Get(project string, zone string, networkEndpointGroup string) *NetworkEndpointGroupsGetCall { + c := &NetworkEndpointGroupsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.project = project + c.zone = zone + c.networkEndpointGroup = networkEndpointGroup + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *NetworkEndpointGroupsGetCall) Fields(s ...googleapi.Field) *NetworkEndpointGroupsGetCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *NetworkEndpointGroupsGetCall) IfNoneMatch(entityTag string) *NetworkEndpointGroupsGetCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *NetworkEndpointGroupsGetCall) Context(ctx context.Context) *NetworkEndpointGroupsGetCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *NetworkEndpointGroupsGetCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *NetworkEndpointGroupsGetCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/zones/{zone}/networkEndpointGroups/{networkEndpointGroup}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "project": c.project, + "zone": c.zone, + "networkEndpointGroup": c.networkEndpointGroup, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "compute.networkEndpointGroups.get" call. +// Exactly one of *NetworkEndpointGroup or error will be non-nil. Any +// non-2xx status code is an error. Response headers are in either +// *NetworkEndpointGroup.ServerResponse.Header or (if a response was +// returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *NetworkEndpointGroupsGetCall) Do(opts ...googleapi.CallOption) (*NetworkEndpointGroup, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &NetworkEndpointGroup{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Returns the specified network endpoint group. Gets a list of available network endpoint groups by making a list() request.", + // "httpMethod": "GET", + // "id": "compute.networkEndpointGroups.get", + // "parameterOrder": [ + // "project", + // "zone", + // "networkEndpointGroup" + // ], + // "parameters": { + // "networkEndpointGroup": { + // "description": "The name of the network endpoint group. It should comply with RFC1035.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "project": { + // "description": "Project ID for this request.", + // "location": "path", + // "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))", + // "required": true, + // "type": "string" + // }, + // "zone": { + // "description": "The name of the zone where the network endpoint group is located. It should comply with RFC1035.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "{project}/zones/{zone}/networkEndpointGroups/{networkEndpointGroup}", + // "response": { + // "$ref": "NetworkEndpointGroup" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform", + // "https://www.googleapis.com/auth/compute", + // "https://www.googleapis.com/auth/compute.readonly" + // ] + // } + +} + +// method id "compute.networkEndpointGroups.insert": + +type NetworkEndpointGroupsInsertCall struct { + s *Service + project string + zone string + networkendpointgroup *NetworkEndpointGroup + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Insert: Creates a network endpoint group in the specified project +// using the parameters that are included in the request. +func (r *NetworkEndpointGroupsService) Insert(project string, zone string, networkendpointgroup *NetworkEndpointGroup) *NetworkEndpointGroupsInsertCall { + c := &NetworkEndpointGroupsInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.project = project + c.zone = zone + c.networkendpointgroup = networkendpointgroup + return c +} + +// RequestId sets the optional parameter "requestId": An optional +// request ID to identify requests. Specify a unique request ID so that +// if you must retry your request, the server will know to ignore the +// request if it has already been completed. +// +// For example, consider a situation where you make an initial request +// and the request times out. If you make the request again with the +// same request ID, the server can check if original operation with the +// same request ID was received, and if so, will ignore the second +// request. This prevents clients from accidentally creating duplicate +// commitments. +// +// The request ID must be a valid UUID with the exception that zero UUID +// is not supported (00000000-0000-0000-0000-000000000000). +func (c *NetworkEndpointGroupsInsertCall) RequestId(requestId string) *NetworkEndpointGroupsInsertCall { + c.urlParams_.Set("requestId", requestId) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *NetworkEndpointGroupsInsertCall) Fields(s ...googleapi.Field) *NetworkEndpointGroupsInsertCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *NetworkEndpointGroupsInsertCall) Context(ctx context.Context) *NetworkEndpointGroupsInsertCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *NetworkEndpointGroupsInsertCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *NetworkEndpointGroupsInsertCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.networkendpointgroup) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/zones/{zone}/networkEndpointGroups") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "project": c.project, + "zone": c.zone, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "compute.networkEndpointGroups.insert" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *NetworkEndpointGroupsInsertCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Creates a network endpoint group in the specified project using the parameters that are included in the request.", + // "httpMethod": "POST", + // "id": "compute.networkEndpointGroups.insert", + // "parameterOrder": [ + // "project", + // "zone" + // ], + // "parameters": { + // "project": { + // "description": "Project ID for this request.", + // "location": "path", + // "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))", + // "required": true, + // "type": "string" + // }, + // "requestId": { + // "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).", + // "location": "query", + // "type": "string" + // }, + // "zone": { + // "description": "The name of the zone where you want to create the network endpoint group. It should comply with RFC1035.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "{project}/zones/{zone}/networkEndpointGroups", + // "request": { + // "$ref": "NetworkEndpointGroup" + // }, + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform", + // "https://www.googleapis.com/auth/compute" + // ] + // } + +} + +// method id "compute.networkEndpointGroups.list": + +type NetworkEndpointGroupsListCall struct { + s *Service + project string + zone string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// List: Retrieves the list of network endpoint groups that are located +// in the specified project and zone. +func (r *NetworkEndpointGroupsService) List(project string, zone string) *NetworkEndpointGroupsListCall { + c := &NetworkEndpointGroupsListCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.project = project + c.zone = zone + return c +} + +// Filter sets the optional parameter "filter": A filter expression that +// filters resources listed in the response. The expression must specify +// the field name, a comparison operator, and the value that you want to +// use for filtering. The value must be a string, a number, or a +// boolean. The comparison operator must be either =, !=, >, or <. +// +// For example, if you are filtering Compute Engine instances, you can +// exclude instances named example-instance by specifying name != +// example-instance. +// +// You can also filter nested fields. For example, you could specify +// scheduling.automaticRestart = false to include instances only if they +// are not scheduled for automatic restarts. You can use filtering on +// nested fields to filter based on resource labels. +// +// To filter on multiple expressions, provide each separate expression +// within parentheses. For example, (scheduling.automaticRestart = true) +// (cpuPlatform = "Intel Skylake"). By default, each expression is an +// AND expression. However, you can include AND and OR expressions +// explicitly. For example, (cpuPlatform = "Intel Skylake") OR +// (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = +// true). +func (c *NetworkEndpointGroupsListCall) Filter(filter string) *NetworkEndpointGroupsListCall { + c.urlParams_.Set("filter", filter) + return c +} + +// MaxResults sets the optional parameter "maxResults": The maximum +// number of results per page that should be returned. If the number of +// available results is larger than maxResults, Compute Engine returns a +// nextPageToken that can be used to get the next page of results in +// subsequent list requests. Acceptable values are 0 to 500, inclusive. +// (Default: 500) +func (c *NetworkEndpointGroupsListCall) MaxResults(maxResults int64) *NetworkEndpointGroupsListCall { + c.urlParams_.Set("maxResults", fmt.Sprint(maxResults)) + return c +} + +// OrderBy sets the optional parameter "orderBy": Sorts list results by +// a certain order. By default, results are returned in alphanumerical +// order based on the resource name. +// +// You can also sort results in descending order based on the creation +// timestamp using orderBy="creationTimestamp desc". This sorts results +// based on the creationTimestamp field in reverse chronological order +// (newest result first). Use this to sort resources like operations so +// that the newest operation is returned first. +// +// Currently, only sorting by name or creationTimestamp desc is +// supported. +func (c *NetworkEndpointGroupsListCall) OrderBy(orderBy string) *NetworkEndpointGroupsListCall { + c.urlParams_.Set("orderBy", orderBy) + return c +} + +// PageToken sets the optional parameter "pageToken": Specifies a page +// token to use. Set pageToken to the nextPageToken returned by a +// previous list request to get the next page of results. +func (c *NetworkEndpointGroupsListCall) PageToken(pageToken string) *NetworkEndpointGroupsListCall { + c.urlParams_.Set("pageToken", pageToken) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *NetworkEndpointGroupsListCall) Fields(s ...googleapi.Field) *NetworkEndpointGroupsListCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *NetworkEndpointGroupsListCall) IfNoneMatch(entityTag string) *NetworkEndpointGroupsListCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *NetworkEndpointGroupsListCall) Context(ctx context.Context) *NetworkEndpointGroupsListCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *NetworkEndpointGroupsListCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *NetworkEndpointGroupsListCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/zones/{zone}/networkEndpointGroups") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "project": c.project, + "zone": c.zone, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "compute.networkEndpointGroups.list" call. +// Exactly one of *NetworkEndpointGroupList or error will be non-nil. +// Any non-2xx status code is an error. Response headers are in either +// *NetworkEndpointGroupList.ServerResponse.Header or (if a response was +// returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *NetworkEndpointGroupsListCall) Do(opts ...googleapi.CallOption) (*NetworkEndpointGroupList, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &NetworkEndpointGroupList{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Retrieves the list of network endpoint groups that are located in the specified project and zone.", + // "httpMethod": "GET", + // "id": "compute.networkEndpointGroups.list", + // "parameterOrder": [ + // "project", + // "zone" + // ], + // "parameters": { + // "filter": { + // "description": "A filter expression that filters resources listed in the response. The expression must specify the field name, a comparison operator, and the value that you want to use for filtering. The value must be a string, a number, or a boolean. The comparison operator must be either =, !=, \u003e, or \u003c.\n\nFor example, if you are filtering Compute Engine instances, you can exclude instances named example-instance by specifying name != example-instance.\n\nYou can also filter nested fields. For example, you could specify scheduling.automaticRestart = false to include instances only if they are not scheduled for automatic restarts. You can use filtering on nested fields to filter based on resource labels.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart = true) (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND expression. However, you can include AND and OR expressions explicitly. For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel Broadwell\") AND (scheduling.automaticRestart = true).", + // "location": "query", + // "type": "string" + // }, + // "maxResults": { + // "default": "500", + // "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)", + // "format": "uint32", + // "location": "query", + // "minimum": "0", + // "type": "integer" + // }, + // "orderBy": { + // "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.", + // "location": "query", + // "type": "string" + // }, + // "pageToken": { + // "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.", + // "location": "query", + // "type": "string" + // }, + // "project": { + // "description": "Project ID for this request.", + // "location": "path", + // "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))", + // "required": true, + // "type": "string" + // }, + // "zone": { + // "description": "The name of the zone where the network endpoint group is located. It should comply with RFC1035.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "{project}/zones/{zone}/networkEndpointGroups", + // "response": { + // "$ref": "NetworkEndpointGroupList" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform", + // "https://www.googleapis.com/auth/compute", + // "https://www.googleapis.com/auth/compute.readonly" + // ] + // } + +} + +// Pages invokes f for each page of results. +// A non-nil error returned from f will halt the iteration. +// The provided context supersedes any context provided to the Context method. +func (c *NetworkEndpointGroupsListCall) Pages(ctx context.Context, f func(*NetworkEndpointGroupList) error) error { + c.ctx_ = ctx + defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point + for { + x, err := c.Do() + if err != nil { + return err + } + if err := f(x); err != nil { + return err + } + if x.NextPageToken == "" { + return nil + } + c.PageToken(x.NextPageToken) + } +} + +// method id "compute.networkEndpointGroups.listNetworkEndpoints": + +type NetworkEndpointGroupsListNetworkEndpointsCall struct { + s *Service + project string + zone string + networkEndpointGroup string + networkendpointgroupslistendpointsrequest *NetworkEndpointGroupsListEndpointsRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// ListNetworkEndpoints: Lists the network endpoints in the specified +// network endpoint group. +func (r *NetworkEndpointGroupsService) ListNetworkEndpoints(project string, zone string, networkEndpointGroup string, networkendpointgroupslistendpointsrequest *NetworkEndpointGroupsListEndpointsRequest) *NetworkEndpointGroupsListNetworkEndpointsCall { + c := &NetworkEndpointGroupsListNetworkEndpointsCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.project = project + c.zone = zone + c.networkEndpointGroup = networkEndpointGroup + c.networkendpointgroupslistendpointsrequest = networkendpointgroupslistendpointsrequest + return c +} + +// Filter sets the optional parameter "filter": A filter expression that +// filters resources listed in the response. The expression must specify +// the field name, a comparison operator, and the value that you want to +// use for filtering. The value must be a string, a number, or a +// boolean. The comparison operator must be either =, !=, >, or <. +// +// For example, if you are filtering Compute Engine instances, you can +// exclude instances named example-instance by specifying name != +// example-instance. +// +// You can also filter nested fields. For example, you could specify +// scheduling.automaticRestart = false to include instances only if they +// are not scheduled for automatic restarts. You can use filtering on +// nested fields to filter based on resource labels. +// +// To filter on multiple expressions, provide each separate expression +// within parentheses. For example, (scheduling.automaticRestart = true) +// (cpuPlatform = "Intel Skylake"). By default, each expression is an +// AND expression. However, you can include AND and OR expressions +// explicitly. For example, (cpuPlatform = "Intel Skylake") OR +// (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = +// true). +func (c *NetworkEndpointGroupsListNetworkEndpointsCall) Filter(filter string) *NetworkEndpointGroupsListNetworkEndpointsCall { + c.urlParams_.Set("filter", filter) + return c +} + +// MaxResults sets the optional parameter "maxResults": The maximum +// number of results per page that should be returned. If the number of +// available results is larger than maxResults, Compute Engine returns a +// nextPageToken that can be used to get the next page of results in +// subsequent list requests. Acceptable values are 0 to 500, inclusive. +// (Default: 500) +func (c *NetworkEndpointGroupsListNetworkEndpointsCall) MaxResults(maxResults int64) *NetworkEndpointGroupsListNetworkEndpointsCall { + c.urlParams_.Set("maxResults", fmt.Sprint(maxResults)) + return c +} + +// OrderBy sets the optional parameter "orderBy": Sorts list results by +// a certain order. By default, results are returned in alphanumerical +// order based on the resource name. +// +// You can also sort results in descending order based on the creation +// timestamp using orderBy="creationTimestamp desc". This sorts results +// based on the creationTimestamp field in reverse chronological order +// (newest result first). Use this to sort resources like operations so +// that the newest operation is returned first. +// +// Currently, only sorting by name or creationTimestamp desc is +// supported. +func (c *NetworkEndpointGroupsListNetworkEndpointsCall) OrderBy(orderBy string) *NetworkEndpointGroupsListNetworkEndpointsCall { + c.urlParams_.Set("orderBy", orderBy) + return c +} + +// PageToken sets the optional parameter "pageToken": Specifies a page +// token to use. Set pageToken to the nextPageToken returned by a +// previous list request to get the next page of results. +func (c *NetworkEndpointGroupsListNetworkEndpointsCall) PageToken(pageToken string) *NetworkEndpointGroupsListNetworkEndpointsCall { + c.urlParams_.Set("pageToken", pageToken) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *NetworkEndpointGroupsListNetworkEndpointsCall) Fields(s ...googleapi.Field) *NetworkEndpointGroupsListNetworkEndpointsCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *NetworkEndpointGroupsListNetworkEndpointsCall) Context(ctx context.Context) *NetworkEndpointGroupsListNetworkEndpointsCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *NetworkEndpointGroupsListNetworkEndpointsCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *NetworkEndpointGroupsListNetworkEndpointsCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.networkendpointgroupslistendpointsrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/zones/{zone}/networkEndpointGroups/{networkEndpointGroup}/listNetworkEndpoints") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "project": c.project, + "zone": c.zone, + "networkEndpointGroup": c.networkEndpointGroup, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "compute.networkEndpointGroups.listNetworkEndpoints" call. +// Exactly one of *NetworkEndpointGroupsListNetworkEndpoints or error +// will be non-nil. Any non-2xx status code is an error. Response +// headers are in either +// *NetworkEndpointGroupsListNetworkEndpoints.ServerResponse.Header or +// (if a response was returned at all) in +// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check +// whether the returned error was because http.StatusNotModified was +// returned. +func (c *NetworkEndpointGroupsListNetworkEndpointsCall) Do(opts ...googleapi.CallOption) (*NetworkEndpointGroupsListNetworkEndpoints, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &NetworkEndpointGroupsListNetworkEndpoints{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Lists the network endpoints in the specified network endpoint group.", + // "httpMethod": "POST", + // "id": "compute.networkEndpointGroups.listNetworkEndpoints", + // "parameterOrder": [ + // "project", + // "zone", + // "networkEndpointGroup" + // ], + // "parameters": { + // "filter": { + // "description": "A filter expression that filters resources listed in the response. The expression must specify the field name, a comparison operator, and the value that you want to use for filtering. The value must be a string, a number, or a boolean. The comparison operator must be either =, !=, \u003e, or \u003c.\n\nFor example, if you are filtering Compute Engine instances, you can exclude instances named example-instance by specifying name != example-instance.\n\nYou can also filter nested fields. For example, you could specify scheduling.automaticRestart = false to include instances only if they are not scheduled for automatic restarts. You can use filtering on nested fields to filter based on resource labels.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart = true) (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND expression. However, you can include AND and OR expressions explicitly. For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel Broadwell\") AND (scheduling.automaticRestart = true).", + // "location": "query", + // "type": "string" + // }, + // "maxResults": { + // "default": "500", + // "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)", + // "format": "uint32", + // "location": "query", + // "minimum": "0", + // "type": "integer" + // }, + // "networkEndpointGroup": { + // "description": "The name of the network endpoint group from which you want to generate a list of included network endpoints. It should comply with RFC1035.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "orderBy": { + // "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.", + // "location": "query", + // "type": "string" + // }, + // "pageToken": { + // "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.", + // "location": "query", + // "type": "string" + // }, + // "project": { + // "description": "Project ID for this request.", + // "location": "path", + // "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))", + // "required": true, + // "type": "string" + // }, + // "zone": { + // "description": "The name of the zone where the network endpoint group is located. It should comply with RFC1035.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "{project}/zones/{zone}/networkEndpointGroups/{networkEndpointGroup}/listNetworkEndpoints", + // "request": { + // "$ref": "NetworkEndpointGroupsListEndpointsRequest" + // }, + // "response": { + // "$ref": "NetworkEndpointGroupsListNetworkEndpoints" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform", + // "https://www.googleapis.com/auth/compute", + // "https://www.googleapis.com/auth/compute.readonly" + // ] + // } + +} + +// Pages invokes f for each page of results. +// A non-nil error returned from f will halt the iteration. +// The provided context supersedes any context provided to the Context method. +func (c *NetworkEndpointGroupsListNetworkEndpointsCall) Pages(ctx context.Context, f func(*NetworkEndpointGroupsListNetworkEndpoints) error) error { + c.ctx_ = ctx + defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point + for { + x, err := c.Do() + if err != nil { + return err + } + if err := f(x); err != nil { + return err + } + if x.NextPageToken == "" { + return nil + } + c.PageToken(x.NextPageToken) + } +} + +// method id "compute.networkEndpointGroups.testIamPermissions": + +type NetworkEndpointGroupsTestIamPermissionsCall struct { + s *Service + project string + zone string + resource string + testpermissionsrequest *TestPermissionsRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// TestIamPermissions: Returns permissions that a caller has on the +// specified resource. +func (r *NetworkEndpointGroupsService) TestIamPermissions(project string, zone string, resource string, testpermissionsrequest *TestPermissionsRequest) *NetworkEndpointGroupsTestIamPermissionsCall { + c := &NetworkEndpointGroupsTestIamPermissionsCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.project = project + c.zone = zone + c.resource = resource + c.testpermissionsrequest = testpermissionsrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *NetworkEndpointGroupsTestIamPermissionsCall) Fields(s ...googleapi.Field) *NetworkEndpointGroupsTestIamPermissionsCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *NetworkEndpointGroupsTestIamPermissionsCall) Context(ctx context.Context) *NetworkEndpointGroupsTestIamPermissionsCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *NetworkEndpointGroupsTestIamPermissionsCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *NetworkEndpointGroupsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.testpermissionsrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/zones/{zone}/networkEndpointGroups/{resource}/testIamPermissions") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "project": c.project, + "zone": c.zone, + "resource": c.resource, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "compute.networkEndpointGroups.testIamPermissions" call. +// Exactly one of *TestPermissionsResponse or error will be non-nil. Any +// non-2xx status code is an error. Response headers are in either +// *TestPermissionsResponse.ServerResponse.Header or (if a response was +// returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *NetworkEndpointGroupsTestIamPermissionsCall) Do(opts ...googleapi.CallOption) (*TestPermissionsResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &TestPermissionsResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Returns permissions that a caller has on the specified resource.", + // "httpMethod": "POST", + // "id": "compute.networkEndpointGroups.testIamPermissions", + // "parameterOrder": [ + // "project", + // "zone", + // "resource" + // ], + // "parameters": { + // "project": { + // "description": "Project ID for this request.", + // "location": "path", + // "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))", + // "required": true, + // "type": "string" + // }, + // "resource": { + // "description": "Name of the resource for this request.", + // "location": "path", + // "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?", + // "required": true, + // "type": "string" + // }, + // "zone": { + // "description": "The name of the zone for this request.", + // "location": "path", + // "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?", + // "required": true, + // "type": "string" + // } + // }, + // "path": "{project}/zones/{zone}/networkEndpointGroups/{resource}/testIamPermissions", + // "request": { + // "$ref": "TestPermissionsRequest" + // }, + // "response": { + // "$ref": "TestPermissionsResponse" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform", + // "https://www.googleapis.com/auth/compute", + // "https://www.googleapis.com/auth/compute.readonly" + // ] + // } + +} + // method id "compute.networks.addPeering": type NetworksAddPeeringCall struct { @@ -88130,6 +91231,235 @@ func (c *SecurityPoliciesListCall) Pages(ctx context.Context, f func(*SecurityPo } } +// method id "compute.securityPolicies.listPreconfiguredExpressionSets": + +type SecurityPoliciesListPreconfiguredExpressionSetsCall struct { + s *Service + project string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// ListPreconfiguredExpressionSets: Gets the current list of +// preconfigured Web Application Firewall (WAF) expressions. +func (r *SecurityPoliciesService) ListPreconfiguredExpressionSets(project string) *SecurityPoliciesListPreconfiguredExpressionSetsCall { + c := &SecurityPoliciesListPreconfiguredExpressionSetsCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.project = project + return c +} + +// Filter sets the optional parameter "filter": A filter expression that +// filters resources listed in the response. The expression must specify +// the field name, a comparison operator, and the value that you want to +// use for filtering. The value must be a string, a number, or a +// boolean. The comparison operator must be either =, !=, >, or <. +// +// For example, if you are filtering Compute Engine instances, you can +// exclude instances named example-instance by specifying name != +// example-instance. +// +// You can also filter nested fields. For example, you could specify +// scheduling.automaticRestart = false to include instances only if they +// are not scheduled for automatic restarts. You can use filtering on +// nested fields to filter based on resource labels. +// +// To filter on multiple expressions, provide each separate expression +// within parentheses. For example, (scheduling.automaticRestart = true) +// (cpuPlatform = "Intel Skylake"). By default, each expression is an +// AND expression. However, you can include AND and OR expressions +// explicitly. For example, (cpuPlatform = "Intel Skylake") OR +// (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = +// true). +func (c *SecurityPoliciesListPreconfiguredExpressionSetsCall) Filter(filter string) *SecurityPoliciesListPreconfiguredExpressionSetsCall { + c.urlParams_.Set("filter", filter) + return c +} + +// MaxResults sets the optional parameter "maxResults": The maximum +// number of results per page that should be returned. If the number of +// available results is larger than maxResults, Compute Engine returns a +// nextPageToken that can be used to get the next page of results in +// subsequent list requests. Acceptable values are 0 to 500, inclusive. +// (Default: 500) +func (c *SecurityPoliciesListPreconfiguredExpressionSetsCall) MaxResults(maxResults int64) *SecurityPoliciesListPreconfiguredExpressionSetsCall { + c.urlParams_.Set("maxResults", fmt.Sprint(maxResults)) + return c +} + +// OrderBy sets the optional parameter "orderBy": Sorts list results by +// a certain order. By default, results are returned in alphanumerical +// order based on the resource name. +// +// You can also sort results in descending order based on the creation +// timestamp using orderBy="creationTimestamp desc". This sorts results +// based on the creationTimestamp field in reverse chronological order +// (newest result first). Use this to sort resources like operations so +// that the newest operation is returned first. +// +// Currently, only sorting by name or creationTimestamp desc is +// supported. +func (c *SecurityPoliciesListPreconfiguredExpressionSetsCall) OrderBy(orderBy string) *SecurityPoliciesListPreconfiguredExpressionSetsCall { + c.urlParams_.Set("orderBy", orderBy) + return c +} + +// PageToken sets the optional parameter "pageToken": Specifies a page +// token to use. Set pageToken to the nextPageToken returned by a +// previous list request to get the next page of results. +func (c *SecurityPoliciesListPreconfiguredExpressionSetsCall) PageToken(pageToken string) *SecurityPoliciesListPreconfiguredExpressionSetsCall { + c.urlParams_.Set("pageToken", pageToken) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *SecurityPoliciesListPreconfiguredExpressionSetsCall) Fields(s ...googleapi.Field) *SecurityPoliciesListPreconfiguredExpressionSetsCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *SecurityPoliciesListPreconfiguredExpressionSetsCall) IfNoneMatch(entityTag string) *SecurityPoliciesListPreconfiguredExpressionSetsCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *SecurityPoliciesListPreconfiguredExpressionSetsCall) Context(ctx context.Context) *SecurityPoliciesListPreconfiguredExpressionSetsCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *SecurityPoliciesListPreconfiguredExpressionSetsCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *SecurityPoliciesListPreconfiguredExpressionSetsCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/global/securityPolicies/listPreconfiguredExpressionSets") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "project": c.project, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "compute.securityPolicies.listPreconfiguredExpressionSets" call. +// Exactly one of +// *SecurityPoliciesListPreconfiguredExpressionSetsResponse or error +// will be non-nil. Any non-2xx status code is an error. Response +// headers are in either +// *SecurityPoliciesListPreconfiguredExpressionSetsResponse.ServerRespons +// e.Header or (if a response was returned at all) in +// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check +// whether the returned error was because http.StatusNotModified was +// returned. +func (c *SecurityPoliciesListPreconfiguredExpressionSetsCall) Do(opts ...googleapi.CallOption) (*SecurityPoliciesListPreconfiguredExpressionSetsResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &SecurityPoliciesListPreconfiguredExpressionSetsResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Gets the current list of preconfigured Web Application Firewall (WAF) expressions.", + // "httpMethod": "GET", + // "id": "compute.securityPolicies.listPreconfiguredExpressionSets", + // "parameterOrder": [ + // "project" + // ], + // "parameters": { + // "filter": { + // "description": "A filter expression that filters resources listed in the response. The expression must specify the field name, a comparison operator, and the value that you want to use for filtering. The value must be a string, a number, or a boolean. The comparison operator must be either =, !=, \u003e, or \u003c.\n\nFor example, if you are filtering Compute Engine instances, you can exclude instances named example-instance by specifying name != example-instance.\n\nYou can also filter nested fields. For example, you could specify scheduling.automaticRestart = false to include instances only if they are not scheduled for automatic restarts. You can use filtering on nested fields to filter based on resource labels.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart = true) (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND expression. However, you can include AND and OR expressions explicitly. For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel Broadwell\") AND (scheduling.automaticRestart = true).", + // "location": "query", + // "type": "string" + // }, + // "maxResults": { + // "default": "500", + // "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)", + // "format": "uint32", + // "location": "query", + // "minimum": "0", + // "type": "integer" + // }, + // "orderBy": { + // "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.", + // "location": "query", + // "type": "string" + // }, + // "pageToken": { + // "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.", + // "location": "query", + // "type": "string" + // }, + // "project": { + // "description": "Project ID for this request.", + // "location": "path", + // "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))", + // "required": true, + // "type": "string" + // } + // }, + // "path": "{project}/global/securityPolicies/listPreconfiguredExpressionSets", + // "response": { + // "$ref": "SecurityPoliciesListPreconfiguredExpressionSetsResponse" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform", + // "https://www.googleapis.com/auth/compute" + // ] + // } + +} + // method id "compute.securityPolicies.patch": type SecurityPoliciesPatchCall struct { diff --git a/cluster-autoscaler/vendor/google.golang.org/api/compute/v1/compute-api.json b/cluster-autoscaler/vendor/google.golang.org/api/compute/v1/compute-api.json index 8fb9acc986..15363091e3 100644 --- a/cluster-autoscaler/vendor/google.golang.org/api/compute/v1/compute-api.json +++ b/cluster-autoscaler/vendor/google.golang.org/api/compute/v1/compute-api.json @@ -29,7 +29,7 @@ "description": "Creates and runs virtual machines on Google Cloud Platform.", "discoveryVersion": "v1", "documentationLink": "https://developers.google.com/compute/docs/reference/latest/", - "etag": "\"Zkyw9ACJZUvcYmlFaKGChzhmtnE/rcMTQpIOHgWYetp22aQ7_LoqIH4\"", + "etag": "\"Zkyw9ACJZUvcYmlFaKGChzhmtnE/BGL7e2LbtubnBH3AZ2eFVpuxx2U\"", "icons": { "x16": "https://www.google.com/images/icons/product/compute_engine-16.png", "x32": "https://www.google.com/images/icons/product/compute_engine-32.png" @@ -812,6 +812,46 @@ }, "backendBuckets": { "methods": { + "addSignedUrlKey": { + "description": "Adds the given Signed URL Key to the backend bucket.", + "httpMethod": "POST", + "id": "compute.backendBuckets.addSignedUrlKey", + "parameterOrder": [ + "project", + "backendBucket" + ], + "parameters": { + "backendBucket": { + "description": "Name of the BackendBucket resource to which the Signed URL Key should be added. The name should conform to RFC1035.", + "location": "path", + "required": true, + "type": "string" + }, + "project": { + "description": "Project ID for this request.", + "location": "path", + "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))", + "required": true, + "type": "string" + }, + "requestId": { + "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).", + "location": "query", + "type": "string" + } + }, + "path": "{project}/global/backendBuckets/{backendBucket}/addSignedUrlKey", + "request": { + "$ref": "SignedUrlKey" + }, + "response": { + "$ref": "Operation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/compute" + ] + }, "delete": { "description": "Deletes the specified BackendBucket resource.", "httpMethod": "DELETE", @@ -850,6 +890,50 @@ "https://www.googleapis.com/auth/compute" ] }, + "deleteSignedUrlKey": { + "description": "Deletes the given Signed URL Key from the backend bucket.", + "httpMethod": "POST", + "id": "compute.backendBuckets.deleteSignedUrlKey", + "parameterOrder": [ + "project", + "backendBucket", + "keyName" + ], + "parameters": { + "backendBucket": { + "description": "Name of the BackendBucket resource to which the Signed URL Key should be added. The name should conform to RFC1035.", + "location": "path", + "required": true, + "type": "string" + }, + "keyName": { + "description": "The name of the Signed URL Key to delete.", + "location": "query", + "required": true, + "type": "string" + }, + "project": { + "description": "Project ID for this request.", + "location": "path", + "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))", + "required": true, + "type": "string" + }, + "requestId": { + "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).", + "location": "query", + "type": "string" + } + }, + "path": "{project}/global/backendBuckets/{backendBucket}/deleteSignedUrlKey", + "response": { + "$ref": "Operation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/compute" + ] + }, "get": { "description": "Returns the specified BackendBucket resource. Gets a list of available backend buckets by making a list() request.", "httpMethod": "GET", @@ -1052,6 +1136,46 @@ }, "backendServices": { "methods": { + "addSignedUrlKey": { + "description": "Adds the given Signed URL Key to the specified backend service.", + "httpMethod": "POST", + "id": "compute.backendServices.addSignedUrlKey", + "parameterOrder": [ + "project", + "backendService" + ], + "parameters": { + "backendService": { + "description": "Name of the BackendService resource to which the Signed URL Key should be added. The name should conform to RFC1035.", + "location": "path", + "required": true, + "type": "string" + }, + "project": { + "description": "Project ID for this request.", + "location": "path", + "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))", + "required": true, + "type": "string" + }, + "requestId": { + "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).", + "location": "query", + "type": "string" + } + }, + "path": "{project}/global/backendServices/{backendService}/addSignedUrlKey", + "request": { + "$ref": "SignedUrlKey" + }, + "response": { + "$ref": "Operation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/compute" + ] + }, "aggregatedList": { "description": "Retrieves the list of all BackendService resources, regional and global, available to the specified project.", "httpMethod": "GET", @@ -1139,6 +1263,50 @@ "https://www.googleapis.com/auth/compute" ] }, + "deleteSignedUrlKey": { + "description": "Deletes the given Signed URL Key from the specified backend service.", + "httpMethod": "POST", + "id": "compute.backendServices.deleteSignedUrlKey", + "parameterOrder": [ + "project", + "backendService", + "keyName" + ], + "parameters": { + "backendService": { + "description": "Name of the BackendService resource to which the Signed URL Key should be added. The name should conform to RFC1035.", + "location": "path", + "required": true, + "type": "string" + }, + "keyName": { + "description": "The name of the Signed URL Key to delete.", + "location": "query", + "required": true, + "type": "string" + }, + "project": { + "description": "Project ID for this request.", + "location": "path", + "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))", + "required": true, + "type": "string" + }, + "requestId": { + "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).", + "location": "query", + "type": "string" + } + }, + "path": "{project}/global/backendServices/{backendService}/deleteSignedUrlKey", + "response": { + "$ref": "Operation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/compute" + ] + }, "get": { "description": "Returns the specified BackendService resource. Gets a list of available backend services by making a list() request.", "httpMethod": "GET", @@ -14944,7 +15112,6 @@ } } }, - "revision": "20180518", "rootUrl": "https://www.googleapis.com/", "schemas": { "AcceleratorConfig": { @@ -15443,9 +15610,11 @@ "description": "[Output Only] The status of the address, which can be one of RESERVING, RESERVED, or IN_USE. An address that is RESERVING is currently in the process of being reserved. A RESERVED address is currently reserved and available to use. An IN_USE address is currently being used by another resource and is not available.", "enum": [ "IN_USE", - "RESERVED" + "RESERVED", + "RESERVING" ], "enumDescriptions": [ + "", "", "" ], @@ -16526,6 +16695,10 @@ "description": "Cloud Storage bucket name.", "type": "string" }, + "cdnPolicy": { + "$ref": "BackendBucketCdnPolicy", + "description": "Cloud CDN Coniguration for this BackendBucket." + }, "creationTimestamp": { "description": "[Output Only] Creation timestamp in RFC3339 text format.", "type": "string" @@ -16560,6 +16733,25 @@ }, "type": "object" }, + "BackendBucketCdnPolicy": { + "description": "Message containing Cloud CDN configuration for a backend bucket.", + "id": "BackendBucketCdnPolicy", + "properties": { + "signedUrlCacheMaxAgeSec": { + "description": "Number of seconds up to which the response to a signed URL request will be cached in the CDN. After this time period, the Signed URL will be revalidated before being served. Defaults to 1hr (3600s). If this field is set, Cloud CDN will internally act as though all responses from this bucket had a ?Cache-Control: public, max-age=[TTL]? header, regardless of any existing Cache-Control header. The actual headers served in responses will not be altered.", + "format": "int64", + "type": "string" + }, + "signedUrlKeyNames": { + "description": "[Output Only] Names of the keys currently configured for Cloud CDN Signed URL on this backend bucket.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, "BackendBucketList": { "description": "Contains a list of BackendBucket resources.", "id": "BackendBucketList", @@ -16932,6 +17124,18 @@ "cacheKeyPolicy": { "$ref": "CacheKeyPolicy", "description": "The CacheKeyPolicy for this CdnPolicy." + }, + "signedUrlCacheMaxAgeSec": { + "description": "Number of seconds up to which the response to a signed URL request will be cached in the CDN. After this time period, the Signed URL will be revalidated before being served. Defaults to 1hr (3600s). If this field is set, Cloud CDN will internally act as though all responses from this backend had a ?Cache-Control: public, max-age=[TTL]? header, regardless of any existing Cache-Control header. The actual headers served in responses will not be altered.", + "format": "int64", + "type": "string" + }, + "signedUrlKeyNames": { + "description": "[Output Only] Names of the keys currently configured for Cloud CDN Signed URL on this backend service.", + "items": { + "type": "string" + }, + "type": "array" } }, "type": "object" @@ -17980,6 +18184,47 @@ }, "type": "object" }, + "DiskInstantiationConfig": { + "description": "A specification of the desired way to instantiate a disk in the instance template when its created from a source instance.", + "id": "DiskInstantiationConfig", + "properties": { + "autoDelete": { + "description": "Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance).", + "type": "boolean" + }, + "customImage": { + "description": "The custom source image to be used to restore this disk when instantiating this instance template.", + "type": "string" + }, + "deviceName": { + "description": "Specifies the device name of the disk to which the configurations apply to.", + "type": "string" + }, + "instantiateFrom": { + "description": "Specifies whether to include the disk and what image to use. Possible values are: \n- source-image: to use the same image that was used to create the source instance's corresponding disk. Applicable to the boot disk and additional read-write disks. \n- source-image-family: to use the same image family that was used to create the source instance's corresponding disk. Applicable to the boot disk and additional read-write disks. \n- custom-image: to use a user-provided image url for disk creation. Applicable to the boot disk and additional read-write disks. \n- attach-read-only: to attach a read-only disk. Applicable to read-only disks. \n- do-not-include: to exclude a disk from the template. Applicable to additional read-write disks, local SSDs, and read-only disks.", + "enum": [ + "ATTACH_READ_ONLY", + "BLANK", + "CUSTOM_IMAGE", + "DEFAULT", + "DO_NOT_INCLUDE", + "SOURCE_IMAGE", + "SOURCE_IMAGE_FAMILY" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, "DiskList": { "description": "A list of Disk resources.", "id": "DiskList", @@ -22037,6 +22282,14 @@ "selfLink": { "description": "[Output Only] The URL for this instance template. The server defines this URL.", "type": "string" + }, + "sourceInstance": { + "description": "The source instance used to create the template. You can provide this as a partial or full URL to the resource. For example, the following are valid values: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/instance \n- projects/project/zones/zone/instances/instance", + "type": "string" + }, + "sourceInstanceParams": { + "$ref": "SourceInstanceParams", + "description": "The source instance params to use to create this instance template." } }, "type": "object" @@ -24148,7 +24401,7 @@ "type": "object" }, "ManagedInstance": { - "description": "Next available tag: 12", + "description": "A Managed Instance resource.", "id": "ManagedInstance", "properties": { "currentAction": { @@ -27480,6 +27733,22 @@ }, "type": "object" }, + "SignedUrlKey": { + "description": "Represents a customer-supplied Signing Key used by Cloud CDN Signed URLs", + "id": "SignedUrlKey", + "properties": { + "keyName": { + "description": "Name of the key. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.", + "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?", + "type": "string" + }, + "keyValue": { + "description": "128-bit key value used for signing the URL. The key value must be a valid RFC 4648 Section 5 base64url encoded string.", + "type": "string" + } + }, + "type": "object" + }, "Snapshot": { "description": "A persistent disk snapshot resource. (== resource_for beta.snapshots ==) (== resource_for v1.snapshots ==)", "id": "Snapshot", @@ -27709,6 +27978,20 @@ }, "type": "object" }, + "SourceInstanceParams": { + "description": "A specification of the parameters to use when creating the instance template from a source instance.", + "id": "SourceInstanceParams", + "properties": { + "diskConfigs": { + "description": "Attached disks configuration. If not provided, defaults are applied: For boot disk and any other R/W disks, new custom images will be created from each disk. For read-only disks, they will be attached in read-only mode. Local SSD disks will be created as blank volumes.", + "items": { + "$ref": "DiskInstantiationConfig" + }, + "type": "array" + } + }, + "type": "object" + }, "SslCertificate": { "description": "An SslCertificate resource. This resource provides a mechanism to upload an SSL key and certificate to the load balancer to serve secure connections from the user. (== resource_for beta.sslCertificates ==) (== resource_for v1.sslCertificates ==)", "id": "SslCertificate", diff --git a/cluster-autoscaler/vendor/google.golang.org/api/compute/v1/compute-gen.go b/cluster-autoscaler/vendor/google.golang.org/api/compute/v1/compute-gen.go index 2a4ab9d74d..e65f125137 100644 --- a/cluster-autoscaler/vendor/google.golang.org/api/compute/v1/compute-gen.go +++ b/cluster-autoscaler/vendor/google.golang.org/api/compute/v1/compute-gen.go @@ -1413,6 +1413,7 @@ type Address struct { // Possible values: // "IN_USE" // "RESERVED" + // "RESERVING" Status string `json:"status,omitempty"` // Subnetwork: The URL of the subnetwork in which to reserve the @@ -3130,6 +3131,9 @@ type BackendBucket struct { // BucketName: Cloud Storage bucket name. BucketName string `json:"bucketName,omitempty"` + // CdnPolicy: Cloud CDN Coniguration for this BackendBucket. + CdnPolicy *BackendBucketCdnPolicy `json:"cdnPolicy,omitempty"` + // CreationTimestamp: [Output Only] Creation timestamp in RFC3339 text // format. CreationTimestamp string `json:"creationTimestamp,omitempty"` @@ -3187,6 +3191,48 @@ func (s *BackendBucket) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// BackendBucketCdnPolicy: Message containing Cloud CDN configuration +// for a backend bucket. +type BackendBucketCdnPolicy struct { + // SignedUrlCacheMaxAgeSec: Number of seconds up to which the response + // to a signed URL request will be cached in the CDN. After this time + // period, the Signed URL will be revalidated before being served. + // Defaults to 1hr (3600s). If this field is set, Cloud CDN will + // internally act as though all responses from this bucket had a + // ?Cache-Control: public, max-age=[TTL]? header, regardless of any + // existing Cache-Control header. The actual headers served in responses + // will not be altered. + SignedUrlCacheMaxAgeSec int64 `json:"signedUrlCacheMaxAgeSec,omitempty,string"` + + // SignedUrlKeyNames: [Output Only] Names of the keys currently + // configured for Cloud CDN Signed URL on this backend bucket. + SignedUrlKeyNames []string `json:"signedUrlKeyNames,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "SignedUrlCacheMaxAgeSec") to unconditionally include in API + // requests. By default, fields with empty values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "SignedUrlCacheMaxAgeSec") + // to include in API requests with the JSON null value. By default, + // fields with empty values are omitted from API requests. However, any + // field with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *BackendBucketCdnPolicy) MarshalJSON() ([]byte, error) { + type NoMethod BackendBucketCdnPolicy + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // BackendBucketList: Contains a list of BackendBucket resources. type BackendBucketList struct { // Id: [Output Only] Unique identifier for the resource; defined by the @@ -3676,6 +3722,20 @@ type BackendServiceCdnPolicy struct { // CacheKeyPolicy: The CacheKeyPolicy for this CdnPolicy. CacheKeyPolicy *CacheKeyPolicy `json:"cacheKeyPolicy,omitempty"` + // SignedUrlCacheMaxAgeSec: Number of seconds up to which the response + // to a signed URL request will be cached in the CDN. After this time + // period, the Signed URL will be revalidated before being served. + // Defaults to 1hr (3600s). If this field is set, Cloud CDN will + // internally act as though all responses from this backend had a + // ?Cache-Control: public, max-age=[TTL]? header, regardless of any + // existing Cache-Control header. The actual headers served in responses + // will not be altered. + SignedUrlCacheMaxAgeSec int64 `json:"signedUrlCacheMaxAgeSec,omitempty,string"` + + // SignedUrlKeyNames: [Output Only] Names of the keys currently + // configured for Cloud CDN Signed URL on this backend service. + SignedUrlKeyNames []string `json:"signedUrlKeyNames,omitempty"` + // ForceSendFields is a list of field names (e.g. "CacheKeyPolicy") to // unconditionally include in API requests. By default, fields with // empty values are omitted from API requests. However, any non-pointer, @@ -5232,6 +5292,71 @@ func (s *DiskAggregatedListWarningData) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// DiskInstantiationConfig: A specification of the desired way to +// instantiate a disk in the instance template when its created from a +// source instance. +type DiskInstantiationConfig struct { + // AutoDelete: Specifies whether the disk will be auto-deleted when the + // instance is deleted (but not when the disk is detached from the + // instance). + AutoDelete bool `json:"autoDelete,omitempty"` + + // CustomImage: The custom source image to be used to restore this disk + // when instantiating this instance template. + CustomImage string `json:"customImage,omitempty"` + + // DeviceName: Specifies the device name of the disk to which the + // configurations apply to. + DeviceName string `json:"deviceName,omitempty"` + + // InstantiateFrom: Specifies whether to include the disk and what image + // to use. Possible values are: + // - source-image: to use the same image that was used to create the + // source instance's corresponding disk. Applicable to the boot disk and + // additional read-write disks. + // - source-image-family: to use the same image family that was used to + // create the source instance's corresponding disk. Applicable to the + // boot disk and additional read-write disks. + // - custom-image: to use a user-provided image url for disk creation. + // Applicable to the boot disk and additional read-write disks. + // - attach-read-only: to attach a read-only disk. Applicable to + // read-only disks. + // - do-not-include: to exclude a disk from the template. Applicable to + // additional read-write disks, local SSDs, and read-only disks. + // + // Possible values: + // "ATTACH_READ_ONLY" + // "BLANK" + // "CUSTOM_IMAGE" + // "DEFAULT" + // "DO_NOT_INCLUDE" + // "SOURCE_IMAGE" + // "SOURCE_IMAGE_FAMILY" + InstantiateFrom string `json:"instantiateFrom,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AutoDelete") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AutoDelete") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *DiskInstantiationConfig) MarshalJSON() ([]byte, error) { + type NoMethod DiskInstantiationConfig + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // DiskList: A list of Disk resources. type DiskList struct { // Id: [Output Only] Unique identifier for the resource; defined by the @@ -11055,6 +11180,18 @@ type InstanceTemplate struct { // server defines this URL. SelfLink string `json:"selfLink,omitempty"` + // SourceInstance: The source instance used to create the template. You + // can provide this as a partial or full URL to the resource. For + // example, the following are valid values: + // - + // https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/instance + // - projects/project/zones/zone/instances/instance + SourceInstance string `json:"sourceInstance,omitempty"` + + // SourceInstanceParams: The source instance params to use to create + // this instance template. + SourceInstanceParams *SourceInstanceParams `json:"sourceInstanceParams,omitempty"` + // ServerResponse contains the HTTP response code and headers from the // server. googleapi.ServerResponse `json:"-"` @@ -13951,7 +14088,7 @@ func (s *MachineTypesScopedListWarningData) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } -// ManagedInstance: Next available tag: 12 +// ManagedInstance: A Managed Instance resource. type ManagedInstance struct { // CurrentAction: [Output Only] The current action that the managed // instance group has scheduled for the instance. Possible values: @@ -18797,6 +18934,44 @@ func (s *ServiceAccount) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// SignedUrlKey: Represents a customer-supplied Signing Key used by +// Cloud CDN Signed URLs +type SignedUrlKey struct { + // KeyName: Name of the key. The name must be 1-63 characters long, and + // comply with RFC1035. Specifically, the name must be 1-63 characters + // long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` + // which means the first character must be a lowercase letter, and all + // following characters must be a dash, lowercase letter, or digit, + // except the last character, which cannot be a dash. + KeyName string `json:"keyName,omitempty"` + + // KeyValue: 128-bit key value used for signing the URL. The key value + // must be a valid RFC 4648 Section 5 base64url encoded string. + KeyValue string `json:"keyValue,omitempty"` + + // ForceSendFields is a list of field names (e.g. "KeyName") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "KeyName") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *SignedUrlKey) MarshalJSON() ([]byte, error) { + type NoMethod SignedUrlKey + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // Snapshot: A persistent disk snapshot resource. (== resource_for // beta.snapshots ==) (== resource_for v1.snapshots ==) type Snapshot struct { @@ -19095,6 +19270,39 @@ func (s *SnapshotListWarningData) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// SourceInstanceParams: A specification of the parameters to use when +// creating the instance template from a source instance. +type SourceInstanceParams struct { + // DiskConfigs: Attached disks configuration. If not provided, defaults + // are applied: For boot disk and any other R/W disks, new custom images + // will be created from each disk. For read-only disks, they will be + // attached in read-only mode. Local SSD disks will be created as blank + // volumes. + DiskConfigs []*DiskInstantiationConfig `json:"diskConfigs,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DiskConfigs") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DiskConfigs") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *SourceInstanceParams) MarshalJSON() ([]byte, error) { + type NoMethod SourceInstanceParams + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // SslCertificate: An SslCertificate resource. This resource provides a // mechanism to upload an SSL key and certificate to the load balancer // to serve secure connections from the user. (== resource_for @@ -28056,6 +28264,175 @@ func (c *AutoscalersUpdateCall) Do(opts ...googleapi.CallOption) (*Operation, er } +// method id "compute.backendBuckets.addSignedUrlKey": + +type BackendBucketsAddSignedUrlKeyCall struct { + s *Service + project string + backendBucket string + signedurlkey *SignedUrlKey + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// AddSignedUrlKey: Adds the given Signed URL Key to the backend bucket. +func (r *BackendBucketsService) AddSignedUrlKey(project string, backendBucket string, signedurlkey *SignedUrlKey) *BackendBucketsAddSignedUrlKeyCall { + c := &BackendBucketsAddSignedUrlKeyCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.project = project + c.backendBucket = backendBucket + c.signedurlkey = signedurlkey + return c +} + +// RequestId sets the optional parameter "requestId": An optional +// request ID to identify requests. Specify a unique request ID so that +// if you must retry your request, the server will know to ignore the +// request if it has already been completed. +// +// For example, consider a situation where you make an initial request +// and the request times out. If you make the request again with the +// same request ID, the server can check if original operation with the +// same request ID was received, and if so, will ignore the second +// request. This prevents clients from accidentally creating duplicate +// commitments. +// +// The request ID must be a valid UUID with the exception that zero UUID +// is not supported (00000000-0000-0000-0000-000000000000). +func (c *BackendBucketsAddSignedUrlKeyCall) RequestId(requestId string) *BackendBucketsAddSignedUrlKeyCall { + c.urlParams_.Set("requestId", requestId) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *BackendBucketsAddSignedUrlKeyCall) Fields(s ...googleapi.Field) *BackendBucketsAddSignedUrlKeyCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *BackendBucketsAddSignedUrlKeyCall) Context(ctx context.Context) *BackendBucketsAddSignedUrlKeyCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *BackendBucketsAddSignedUrlKeyCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *BackendBucketsAddSignedUrlKeyCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.signedurlkey) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/global/backendBuckets/{backendBucket}/addSignedUrlKey") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "project": c.project, + "backendBucket": c.backendBucket, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "compute.backendBuckets.addSignedUrlKey" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *BackendBucketsAddSignedUrlKeyCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Adds the given Signed URL Key to the backend bucket.", + // "httpMethod": "POST", + // "id": "compute.backendBuckets.addSignedUrlKey", + // "parameterOrder": [ + // "project", + // "backendBucket" + // ], + // "parameters": { + // "backendBucket": { + // "description": "Name of the BackendBucket resource to which the Signed URL Key should be added. The name should conform to RFC1035.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "project": { + // "description": "Project ID for this request.", + // "location": "path", + // "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))", + // "required": true, + // "type": "string" + // }, + // "requestId": { + // "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).", + // "location": "query", + // "type": "string" + // } + // }, + // "path": "{project}/global/backendBuckets/{backendBucket}/addSignedUrlKey", + // "request": { + // "$ref": "SignedUrlKey" + // }, + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform", + // "https://www.googleapis.com/auth/compute" + // ] + // } + +} + // method id "compute.backendBuckets.delete": type BackendBucketsDeleteCall struct { @@ -28216,6 +28593,174 @@ func (c *BackendBucketsDeleteCall) Do(opts ...googleapi.CallOption) (*Operation, } +// method id "compute.backendBuckets.deleteSignedUrlKey": + +type BackendBucketsDeleteSignedUrlKeyCall struct { + s *Service + project string + backendBucket string + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// DeleteSignedUrlKey: Deletes the given Signed URL Key from the backend +// bucket. +func (r *BackendBucketsService) DeleteSignedUrlKey(project string, backendBucket string, keyName string) *BackendBucketsDeleteSignedUrlKeyCall { + c := &BackendBucketsDeleteSignedUrlKeyCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.project = project + c.backendBucket = backendBucket + c.urlParams_.Set("keyName", keyName) + return c +} + +// RequestId sets the optional parameter "requestId": An optional +// request ID to identify requests. Specify a unique request ID so that +// if you must retry your request, the server will know to ignore the +// request if it has already been completed. +// +// For example, consider a situation where you make an initial request +// and the request times out. If you make the request again with the +// same request ID, the server can check if original operation with the +// same request ID was received, and if so, will ignore the second +// request. This prevents clients from accidentally creating duplicate +// commitments. +// +// The request ID must be a valid UUID with the exception that zero UUID +// is not supported (00000000-0000-0000-0000-000000000000). +func (c *BackendBucketsDeleteSignedUrlKeyCall) RequestId(requestId string) *BackendBucketsDeleteSignedUrlKeyCall { + c.urlParams_.Set("requestId", requestId) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *BackendBucketsDeleteSignedUrlKeyCall) Fields(s ...googleapi.Field) *BackendBucketsDeleteSignedUrlKeyCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *BackendBucketsDeleteSignedUrlKeyCall) Context(ctx context.Context) *BackendBucketsDeleteSignedUrlKeyCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *BackendBucketsDeleteSignedUrlKeyCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *BackendBucketsDeleteSignedUrlKeyCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/global/backendBuckets/{backendBucket}/deleteSignedUrlKey") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "project": c.project, + "backendBucket": c.backendBucket, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "compute.backendBuckets.deleteSignedUrlKey" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *BackendBucketsDeleteSignedUrlKeyCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Deletes the given Signed URL Key from the backend bucket.", + // "httpMethod": "POST", + // "id": "compute.backendBuckets.deleteSignedUrlKey", + // "parameterOrder": [ + // "project", + // "backendBucket", + // "keyName" + // ], + // "parameters": { + // "backendBucket": { + // "description": "Name of the BackendBucket resource to which the Signed URL Key should be added. The name should conform to RFC1035.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "keyName": { + // "description": "The name of the Signed URL Key to delete.", + // "location": "query", + // "required": true, + // "type": "string" + // }, + // "project": { + // "description": "Project ID for this request.", + // "location": "path", + // "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))", + // "required": true, + // "type": "string" + // }, + // "requestId": { + // "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).", + // "location": "query", + // "type": "string" + // } + // }, + // "path": "{project}/global/backendBuckets/{backendBucket}/deleteSignedUrlKey", + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform", + // "https://www.googleapis.com/auth/compute" + // ] + // } + +} + // method id "compute.backendBuckets.get": type BackendBucketsGetCall struct { @@ -29119,6 +29664,176 @@ func (c *BackendBucketsUpdateCall) Do(opts ...googleapi.CallOption) (*Operation, } +// method id "compute.backendServices.addSignedUrlKey": + +type BackendServicesAddSignedUrlKeyCall struct { + s *Service + project string + backendService string + signedurlkey *SignedUrlKey + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// AddSignedUrlKey: Adds the given Signed URL Key to the specified +// backend service. +func (r *BackendServicesService) AddSignedUrlKey(project string, backendService string, signedurlkey *SignedUrlKey) *BackendServicesAddSignedUrlKeyCall { + c := &BackendServicesAddSignedUrlKeyCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.project = project + c.backendService = backendService + c.signedurlkey = signedurlkey + return c +} + +// RequestId sets the optional parameter "requestId": An optional +// request ID to identify requests. Specify a unique request ID so that +// if you must retry your request, the server will know to ignore the +// request if it has already been completed. +// +// For example, consider a situation where you make an initial request +// and the request times out. If you make the request again with the +// same request ID, the server can check if original operation with the +// same request ID was received, and if so, will ignore the second +// request. This prevents clients from accidentally creating duplicate +// commitments. +// +// The request ID must be a valid UUID with the exception that zero UUID +// is not supported (00000000-0000-0000-0000-000000000000). +func (c *BackendServicesAddSignedUrlKeyCall) RequestId(requestId string) *BackendServicesAddSignedUrlKeyCall { + c.urlParams_.Set("requestId", requestId) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *BackendServicesAddSignedUrlKeyCall) Fields(s ...googleapi.Field) *BackendServicesAddSignedUrlKeyCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *BackendServicesAddSignedUrlKeyCall) Context(ctx context.Context) *BackendServicesAddSignedUrlKeyCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *BackendServicesAddSignedUrlKeyCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *BackendServicesAddSignedUrlKeyCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.signedurlkey) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/global/backendServices/{backendService}/addSignedUrlKey") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "project": c.project, + "backendService": c.backendService, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "compute.backendServices.addSignedUrlKey" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *BackendServicesAddSignedUrlKeyCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Adds the given Signed URL Key to the specified backend service.", + // "httpMethod": "POST", + // "id": "compute.backendServices.addSignedUrlKey", + // "parameterOrder": [ + // "project", + // "backendService" + // ], + // "parameters": { + // "backendService": { + // "description": "Name of the BackendService resource to which the Signed URL Key should be added. The name should conform to RFC1035.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "project": { + // "description": "Project ID for this request.", + // "location": "path", + // "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))", + // "required": true, + // "type": "string" + // }, + // "requestId": { + // "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).", + // "location": "query", + // "type": "string" + // } + // }, + // "path": "{project}/global/backendServices/{backendService}/addSignedUrlKey", + // "request": { + // "$ref": "SignedUrlKey" + // }, + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform", + // "https://www.googleapis.com/auth/compute" + // ] + // } + +} + // method id "compute.backendServices.aggregatedList": type BackendServicesAggregatedListCall struct { @@ -29528,6 +30243,174 @@ func (c *BackendServicesDeleteCall) Do(opts ...googleapi.CallOption) (*Operation } +// method id "compute.backendServices.deleteSignedUrlKey": + +type BackendServicesDeleteSignedUrlKeyCall struct { + s *Service + project string + backendService string + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// DeleteSignedUrlKey: Deletes the given Signed URL Key from the +// specified backend service. +func (r *BackendServicesService) DeleteSignedUrlKey(project string, backendService string, keyName string) *BackendServicesDeleteSignedUrlKeyCall { + c := &BackendServicesDeleteSignedUrlKeyCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.project = project + c.backendService = backendService + c.urlParams_.Set("keyName", keyName) + return c +} + +// RequestId sets the optional parameter "requestId": An optional +// request ID to identify requests. Specify a unique request ID so that +// if you must retry your request, the server will know to ignore the +// request if it has already been completed. +// +// For example, consider a situation where you make an initial request +// and the request times out. If you make the request again with the +// same request ID, the server can check if original operation with the +// same request ID was received, and if so, will ignore the second +// request. This prevents clients from accidentally creating duplicate +// commitments. +// +// The request ID must be a valid UUID with the exception that zero UUID +// is not supported (00000000-0000-0000-0000-000000000000). +func (c *BackendServicesDeleteSignedUrlKeyCall) RequestId(requestId string) *BackendServicesDeleteSignedUrlKeyCall { + c.urlParams_.Set("requestId", requestId) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *BackendServicesDeleteSignedUrlKeyCall) Fields(s ...googleapi.Field) *BackendServicesDeleteSignedUrlKeyCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *BackendServicesDeleteSignedUrlKeyCall) Context(ctx context.Context) *BackendServicesDeleteSignedUrlKeyCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *BackendServicesDeleteSignedUrlKeyCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *BackendServicesDeleteSignedUrlKeyCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/global/backendServices/{backendService}/deleteSignedUrlKey") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "project": c.project, + "backendService": c.backendService, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "compute.backendServices.deleteSignedUrlKey" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *BackendServicesDeleteSignedUrlKeyCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Deletes the given Signed URL Key from the specified backend service.", + // "httpMethod": "POST", + // "id": "compute.backendServices.deleteSignedUrlKey", + // "parameterOrder": [ + // "project", + // "backendService", + // "keyName" + // ], + // "parameters": { + // "backendService": { + // "description": "Name of the BackendService resource to which the Signed URL Key should be added. The name should conform to RFC1035.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "keyName": { + // "description": "The name of the Signed URL Key to delete.", + // "location": "query", + // "required": true, + // "type": "string" + // }, + // "project": { + // "description": "Project ID for this request.", + // "location": "path", + // "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))", + // "required": true, + // "type": "string" + // }, + // "requestId": { + // "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).", + // "location": "query", + // "type": "string" + // } + // }, + // "path": "{project}/global/backendServices/{backendService}/deleteSignedUrlKey", + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform", + // "https://www.googleapis.com/auth/compute" + // ] + // } + +} + // method id "compute.backendServices.get": type BackendServicesGetCall struct { diff --git a/cluster-autoscaler/vendor/google.golang.org/api/container/v1/container-api.json b/cluster-autoscaler/vendor/google.golang.org/api/container/v1/container-api.json index a8631cee23..a7e01b0b1d 100644 --- a/cluster-autoscaler/vendor/google.golang.org/api/container/v1/container-api.json +++ b/cluster-autoscaler/vendor/google.golang.org/api/container/v1/container-api.json @@ -60,11 +60,6 @@ "location": "query", "type": "string" }, - "bearer_token": { - "description": "OAuth bearer token.", - "location": "query", - "type": "string" - }, "callback": { "description": "JSONP", "location": "query", @@ -85,12 +80,6 @@ "location": "query", "type": "string" }, - "pp": { - "default": "true", - "description": "Pretty-print response.", - "location": "query", - "type": "boolean" - }, "prettyPrint": { "default": "true", "description": "Returns response with indentations and line breaks.", @@ -2372,7 +2361,7 @@ } } }, - "revision": "20180504", + "revision": "20180607", "rootUrl": "https://container.googleapis.com/", "schemas": { "AcceleratorConfig": { diff --git a/cluster-autoscaler/vendor/google.golang.org/api/container/v1beta1/container-gen.go b/cluster-autoscaler/vendor/google.golang.org/api/container/v1beta1/container-gen.go index b295acfa0e..e1d4564b5b 100644 --- a/cluster-autoscaler/vendor/google.golang.org/api/container/v1beta1/container-gen.go +++ b/cluster-autoscaler/vendor/google.golang.org/api/container/v1beta1/container-gen.go @@ -7,7 +7,7 @@ // import "google.golang.org/api/container/v1beta1" // ... // containerService, err := container.New(oauthHttpClient) -package container // import "google.golang.org/api/container/v1beta1" +package container import ( "bytes" diff --git a/cluster-autoscaler/vendor/google.golang.org/api/googleapi/googleapi.go b/cluster-autoscaler/vendor/google.golang.org/api/googleapi/googleapi.go index bdb11c4ece..3d970ee11b 100644 --- a/cluster-autoscaler/vendor/google.golang.org/api/googleapi/googleapi.go +++ b/cluster-autoscaler/vendor/google.golang.org/api/googleapi/googleapi.go @@ -270,11 +270,20 @@ func ProcessMediaOptions(opts []MediaOption) *MediaOptions { func ResolveRelative(basestr, relstr string) string { u, _ := url.Parse(basestr) + afterColonPath := "" + if i := strings.IndexRune(relstr, ':'); i > 0 { + afterColonPath = relstr[i+1:] + relstr = relstr[:i] + } rel, _ := url.Parse(relstr) u = u.ResolveReference(rel) us := u.String() + if afterColonPath != "" { + us = fmt.Sprintf("%s:%s", us, afterColonPath) + } us = strings.Replace(us, "%7B", "{", -1) us = strings.Replace(us, "%7D", "}", -1) + us = strings.Replace(us, "%2A", "*", -1) return us } diff --git a/cluster-autoscaler/vendor/k8s.io/api/admission/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/api/admission/v1beta1/BUILD index fd69b91703..6344c22f90 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/admission/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/api/admission/v1beta1/BUILD @@ -10,24 +10,19 @@ go_library( "types_swagger_doc_generated.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/api/admission/v1beta1", importpath = "k8s.io/api/admission/v1beta1", visibility = ["//visibility:public"], deps = [ + "//staging/src/k8s.io/api/authentication/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", - "//vendor/k8s.io/api/authentication/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", ], ) -filegroup( - name = "go_default_library_protos", - srcs = ["generated.proto"], - visibility = ["//visibility:public"], -) - filegroup( name = "package-srcs", srcs = glob(["**"]), diff --git a/cluster-autoscaler/vendor/k8s.io/api/admission/v1beta1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/api/admission/v1beta1/zz_generated.deepcopy.go index e3bcc03a13..e28be152f7 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/admission/v1beta1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/api/admission/v1beta1/zz_generated.deepcopy.go @@ -51,12 +51,8 @@ func (in *AdmissionResponse) DeepCopyInto(out *AdmissionResponse) { *out = *in if in.Result != nil { in, out := &in.Result, &out.Result - if *in == nil { - *out = nil - } else { - *out = new(v1.Status) - (*in).DeepCopyInto(*out) - } + *out = new(v1.Status) + (*in).DeepCopyInto(*out) } if in.Patch != nil { in, out := &in.Patch, &out.Patch @@ -65,12 +61,8 @@ func (in *AdmissionResponse) DeepCopyInto(out *AdmissionResponse) { } if in.PatchType != nil { in, out := &in.PatchType, &out.PatchType - if *in == nil { - *out = nil - } else { - *out = new(PatchType) - **out = **in - } + *out = new(PatchType) + **out = **in } return } @@ -91,21 +83,13 @@ func (in *AdmissionReview) DeepCopyInto(out *AdmissionReview) { out.TypeMeta = in.TypeMeta if in.Request != nil { in, out := &in.Request, &out.Request - if *in == nil { - *out = nil - } else { - *out = new(AdmissionRequest) - (*in).DeepCopyInto(*out) - } + *out = new(AdmissionRequest) + (*in).DeepCopyInto(*out) } if in.Response != nil { in, out := &in.Response, &out.Response - if *in == nil { - *out = nil - } else { - *out = new(AdmissionResponse) - (*in).DeepCopyInto(*out) - } + *out = new(AdmissionResponse) + (*in).DeepCopyInto(*out) } return } diff --git a/cluster-autoscaler/vendor/k8s.io/api/admissionregistration/v1alpha1/BUILD b/cluster-autoscaler/vendor/k8s.io/api/admissionregistration/v1alpha1/BUILD index 417eab39ff..a16633e1f3 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/admissionregistration/v1alpha1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/api/admissionregistration/v1alpha1/BUILD @@ -15,12 +15,13 @@ go_library( "types_swagger_doc_generated.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/api/admissionregistration/v1alpha1", importpath = "k8s.io/api/admissionregistration/v1alpha1", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) @@ -36,9 +37,3 @@ filegroup( srcs = [":package-srcs"], tags = ["automanaged"], ) - -filegroup( - name = "go_default_library_protos", - srcs = ["generated.proto"], - visibility = ["//visibility:public"], -) diff --git a/cluster-autoscaler/vendor/k8s.io/api/admissionregistration/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/api/admissionregistration/v1beta1/BUILD index dbcfadd2bf..862c814fb7 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/admissionregistration/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/api/admissionregistration/v1beta1/BUILD @@ -15,12 +15,13 @@ go_library( "types_swagger_doc_generated.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/api/admissionregistration/v1beta1", importpath = "k8s.io/api/admissionregistration/v1beta1", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) @@ -36,9 +37,3 @@ filegroup( srcs = [":package-srcs"], tags = ["automanaged"], ) - -filegroup( - name = "go_default_library_protos", - srcs = ["generated.proto"], - visibility = ["//visibility:public"], -) diff --git a/cluster-autoscaler/vendor/k8s.io/api/admissionregistration/v1beta1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/api/admissionregistration/v1beta1/zz_generated.deepcopy.go index d8c1e4f625..b71a5e55d7 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/admissionregistration/v1beta1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/api/admissionregistration/v1beta1/zz_generated.deepcopy.go @@ -149,12 +149,8 @@ func (in *ServiceReference) DeepCopyInto(out *ServiceReference) { *out = *in if in.Path != nil { in, out := &in.Path, &out.Path - if *in == nil { - *out = nil - } else { - *out = new(string) - **out = **in - } + *out = new(string) + **out = **in } return } @@ -248,21 +244,13 @@ func (in *Webhook) DeepCopyInto(out *Webhook) { } if in.FailurePolicy != nil { in, out := &in.FailurePolicy, &out.FailurePolicy - if *in == nil { - *out = nil - } else { - *out = new(FailurePolicyType) - **out = **in - } + *out = new(FailurePolicyType) + **out = **in } if in.NamespaceSelector != nil { in, out := &in.NamespaceSelector, &out.NamespaceSelector - if *in == nil { - *out = nil - } else { - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) - } + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) } return } @@ -282,21 +270,13 @@ func (in *WebhookClientConfig) DeepCopyInto(out *WebhookClientConfig) { *out = *in if in.URL != nil { in, out := &in.URL, &out.URL - if *in == nil { - *out = nil - } else { - *out = new(string) - **out = **in - } + *out = new(string) + **out = **in } if in.Service != nil { in, out := &in.Service, &out.Service - if *in == nil { - *out = nil - } else { - *out = new(ServiceReference) - (*in).DeepCopyInto(*out) - } + *out = new(ServiceReference) + (*in).DeepCopyInto(*out) } if in.CABundle != nil { in, out := &in.CABundle, &out.CABundle diff --git a/cluster-autoscaler/vendor/k8s.io/api/apps/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/api/apps/v1/BUILD index 7902387f59..3d7a6bc7b4 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/apps/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/api/apps/v1/BUILD @@ -10,24 +10,19 @@ go_library( "types_swagger_doc_generated.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/api/apps/v1", importpath = "k8s.io/api/apps/v1", visibility = ["//visibility:public"], deps = [ + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", ], ) -filegroup( - name = "go_default_library_protos", - srcs = ["generated.proto"], - visibility = ["//visibility:public"], -) - filegroup( name = "package-srcs", srcs = glob(["**"]), diff --git a/cluster-autoscaler/vendor/k8s.io/api/apps/v1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/api/apps/v1/zz_generated.deepcopy.go index ccbb290615..885203fca9 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/apps/v1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/api/apps/v1/zz_generated.deepcopy.go @@ -21,8 +21,8 @@ limitations under the License. package v1 import ( - core_v1 "k8s.io/api/core/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtime "k8s.io/apimachinery/pkg/runtime" intstr "k8s.io/apimachinery/pkg/util/intstr" ) @@ -170,23 +170,15 @@ func (in *DaemonSetSpec) DeepCopyInto(out *DaemonSetSpec) { *out = *in if in.Selector != nil { in, out := &in.Selector, &out.Selector - if *in == nil { - *out = nil - } else { - *out = new(meta_v1.LabelSelector) - (*in).DeepCopyInto(*out) - } + *out = new(metav1.LabelSelector) + (*in).DeepCopyInto(*out) } in.Template.DeepCopyInto(&out.Template) in.UpdateStrategy.DeepCopyInto(&out.UpdateStrategy) if in.RevisionHistoryLimit != nil { in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } return } @@ -206,12 +198,8 @@ func (in *DaemonSetStatus) DeepCopyInto(out *DaemonSetStatus) { *out = *in if in.CollisionCount != nil { in, out := &in.CollisionCount, &out.CollisionCount - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.Conditions != nil { in, out := &in.Conditions, &out.Conditions @@ -238,12 +226,8 @@ func (in *DaemonSetUpdateStrategy) DeepCopyInto(out *DaemonSetUpdateStrategy) { *out = *in if in.RollingUpdate != nil { in, out := &in.RollingUpdate, &out.RollingUpdate - if *in == nil { - *out = nil - } else { - *out = new(RollingUpdateDaemonSet) - (*in).DeepCopyInto(*out) - } + *out = new(RollingUpdateDaemonSet) + (*in).DeepCopyInto(*out) } return } @@ -342,41 +326,25 @@ func (in *DeploymentSpec) DeepCopyInto(out *DeploymentSpec) { *out = *in if in.Replicas != nil { in, out := &in.Replicas, &out.Replicas - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.Selector != nil { in, out := &in.Selector, &out.Selector - if *in == nil { - *out = nil - } else { - *out = new(meta_v1.LabelSelector) - (*in).DeepCopyInto(*out) - } + *out = new(metav1.LabelSelector) + (*in).DeepCopyInto(*out) } in.Template.DeepCopyInto(&out.Template) in.Strategy.DeepCopyInto(&out.Strategy) if in.RevisionHistoryLimit != nil { in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.ProgressDeadlineSeconds != nil { in, out := &in.ProgressDeadlineSeconds, &out.ProgressDeadlineSeconds - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } return } @@ -403,12 +371,8 @@ func (in *DeploymentStatus) DeepCopyInto(out *DeploymentStatus) { } if in.CollisionCount != nil { in, out := &in.CollisionCount, &out.CollisionCount - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } return } @@ -428,12 +392,8 @@ func (in *DeploymentStrategy) DeepCopyInto(out *DeploymentStrategy) { *out = *in if in.RollingUpdate != nil { in, out := &in.RollingUpdate, &out.RollingUpdate - if *in == nil { - *out = nil - } else { - *out = new(RollingUpdateDeployment) - (*in).DeepCopyInto(*out) - } + *out = new(RollingUpdateDeployment) + (*in).DeepCopyInto(*out) } return } @@ -531,21 +491,13 @@ func (in *ReplicaSetSpec) DeepCopyInto(out *ReplicaSetSpec) { *out = *in if in.Replicas != nil { in, out := &in.Replicas, &out.Replicas - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.Selector != nil { in, out := &in.Selector, &out.Selector - if *in == nil { - *out = nil - } else { - *out = new(meta_v1.LabelSelector) - (*in).DeepCopyInto(*out) - } + *out = new(metav1.LabelSelector) + (*in).DeepCopyInto(*out) } in.Template.DeepCopyInto(&out.Template) return @@ -589,12 +541,8 @@ func (in *RollingUpdateDaemonSet) DeepCopyInto(out *RollingUpdateDaemonSet) { *out = *in if in.MaxUnavailable != nil { in, out := &in.MaxUnavailable, &out.MaxUnavailable - if *in == nil { - *out = nil - } else { - *out = new(intstr.IntOrString) - **out = **in - } + *out = new(intstr.IntOrString) + **out = **in } return } @@ -614,21 +562,13 @@ func (in *RollingUpdateDeployment) DeepCopyInto(out *RollingUpdateDeployment) { *out = *in if in.MaxUnavailable != nil { in, out := &in.MaxUnavailable, &out.MaxUnavailable - if *in == nil { - *out = nil - } else { - *out = new(intstr.IntOrString) - **out = **in - } + *out = new(intstr.IntOrString) + **out = **in } if in.MaxSurge != nil { in, out := &in.MaxSurge, &out.MaxSurge - if *in == nil { - *out = nil - } else { - *out = new(intstr.IntOrString) - **out = **in - } + *out = new(intstr.IntOrString) + **out = **in } return } @@ -648,12 +588,8 @@ func (in *RollingUpdateStatefulSetStrategy) DeepCopyInto(out *RollingUpdateState *out = *in if in.Partition != nil { in, out := &in.Partition, &out.Partition - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } return } @@ -751,26 +687,18 @@ func (in *StatefulSetSpec) DeepCopyInto(out *StatefulSetSpec) { *out = *in if in.Replicas != nil { in, out := &in.Replicas, &out.Replicas - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.Selector != nil { in, out := &in.Selector, &out.Selector - if *in == nil { - *out = nil - } else { - *out = new(meta_v1.LabelSelector) - (*in).DeepCopyInto(*out) - } + *out = new(metav1.LabelSelector) + (*in).DeepCopyInto(*out) } in.Template.DeepCopyInto(&out.Template) if in.VolumeClaimTemplates != nil { in, out := &in.VolumeClaimTemplates, &out.VolumeClaimTemplates - *out = make([]core_v1.PersistentVolumeClaim, len(*in)) + *out = make([]corev1.PersistentVolumeClaim, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } @@ -778,12 +706,8 @@ func (in *StatefulSetSpec) DeepCopyInto(out *StatefulSetSpec) { in.UpdateStrategy.DeepCopyInto(&out.UpdateStrategy) if in.RevisionHistoryLimit != nil { in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } return } @@ -803,12 +727,8 @@ func (in *StatefulSetStatus) DeepCopyInto(out *StatefulSetStatus) { *out = *in if in.CollisionCount != nil { in, out := &in.CollisionCount, &out.CollisionCount - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.Conditions != nil { in, out := &in.Conditions, &out.Conditions @@ -835,12 +755,8 @@ func (in *StatefulSetUpdateStrategy) DeepCopyInto(out *StatefulSetUpdateStrategy *out = *in if in.RollingUpdate != nil { in, out := &in.RollingUpdate, &out.RollingUpdate - if *in == nil { - *out = nil - } else { - *out = new(RollingUpdateStatefulSetStrategy) - (*in).DeepCopyInto(*out) - } + *out = new(RollingUpdateStatefulSetStrategy) + (*in).DeepCopyInto(*out) } return } diff --git a/cluster-autoscaler/vendor/k8s.io/api/apps/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/api/apps/v1beta1/BUILD index f40a41e3e2..edde970129 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/apps/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/api/apps/v1beta1/BUILD @@ -15,15 +15,16 @@ go_library( "types_swagger_doc_generated.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/api/apps/v1beta1", importpath = "k8s.io/api/apps/v1beta1", deps = [ + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", ], ) @@ -39,9 +40,3 @@ filegroup( srcs = [":package-srcs"], tags = ["automanaged"], ) - -filegroup( - name = "go_default_library_protos", - srcs = ["generated.proto"], - visibility = ["//visibility:public"], -) diff --git a/cluster-autoscaler/vendor/k8s.io/api/apps/v1beta1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/api/apps/v1beta1/zz_generated.deepcopy.go index dd37f8dd84..93892bfd0b 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/apps/v1beta1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/api/apps/v1beta1/zz_generated.deepcopy.go @@ -21,7 +21,7 @@ limitations under the License. package v1beta1 import ( - core_v1 "k8s.io/api/core/v1" + corev1 "k8s.io/api/core/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtime "k8s.io/apimachinery/pkg/runtime" intstr "k8s.io/apimachinery/pkg/util/intstr" @@ -204,50 +204,30 @@ func (in *DeploymentSpec) DeepCopyInto(out *DeploymentSpec) { *out = *in if in.Replicas != nil { in, out := &in.Replicas, &out.Replicas - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.Selector != nil { in, out := &in.Selector, &out.Selector - if *in == nil { - *out = nil - } else { - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) - } + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) } in.Template.DeepCopyInto(&out.Template) in.Strategy.DeepCopyInto(&out.Strategy) if in.RevisionHistoryLimit != nil { in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.RollbackTo != nil { in, out := &in.RollbackTo, &out.RollbackTo - if *in == nil { - *out = nil - } else { - *out = new(RollbackConfig) - **out = **in - } + *out = new(RollbackConfig) + **out = **in } if in.ProgressDeadlineSeconds != nil { in, out := &in.ProgressDeadlineSeconds, &out.ProgressDeadlineSeconds - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } return } @@ -274,12 +254,8 @@ func (in *DeploymentStatus) DeepCopyInto(out *DeploymentStatus) { } if in.CollisionCount != nil { in, out := &in.CollisionCount, &out.CollisionCount - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } return } @@ -299,12 +275,8 @@ func (in *DeploymentStrategy) DeepCopyInto(out *DeploymentStrategy) { *out = *in if in.RollingUpdate != nil { in, out := &in.RollingUpdate, &out.RollingUpdate - if *in == nil { - *out = nil - } else { - *out = new(RollingUpdateDeployment) - (*in).DeepCopyInto(*out) - } + *out = new(RollingUpdateDeployment) + (*in).DeepCopyInto(*out) } return } @@ -340,21 +312,13 @@ func (in *RollingUpdateDeployment) DeepCopyInto(out *RollingUpdateDeployment) { *out = *in if in.MaxUnavailable != nil { in, out := &in.MaxUnavailable, &out.MaxUnavailable - if *in == nil { - *out = nil - } else { - *out = new(intstr.IntOrString) - **out = **in - } + *out = new(intstr.IntOrString) + **out = **in } if in.MaxSurge != nil { in, out := &in.MaxSurge, &out.MaxSurge - if *in == nil { - *out = nil - } else { - *out = new(intstr.IntOrString) - **out = **in - } + *out = new(intstr.IntOrString) + **out = **in } return } @@ -374,12 +338,8 @@ func (in *RollingUpdateStatefulSetStrategy) DeepCopyInto(out *RollingUpdateState *out = *in if in.Partition != nil { in, out := &in.Partition, &out.Partition - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } return } @@ -544,26 +504,18 @@ func (in *StatefulSetSpec) DeepCopyInto(out *StatefulSetSpec) { *out = *in if in.Replicas != nil { in, out := &in.Replicas, &out.Replicas - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.Selector != nil { in, out := &in.Selector, &out.Selector - if *in == nil { - *out = nil - } else { - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) - } + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) } in.Template.DeepCopyInto(&out.Template) if in.VolumeClaimTemplates != nil { in, out := &in.VolumeClaimTemplates, &out.VolumeClaimTemplates - *out = make([]core_v1.PersistentVolumeClaim, len(*in)) + *out = make([]corev1.PersistentVolumeClaim, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } @@ -571,12 +523,8 @@ func (in *StatefulSetSpec) DeepCopyInto(out *StatefulSetSpec) { in.UpdateStrategy.DeepCopyInto(&out.UpdateStrategy) if in.RevisionHistoryLimit != nil { in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } return } @@ -596,21 +544,13 @@ func (in *StatefulSetStatus) DeepCopyInto(out *StatefulSetStatus) { *out = *in if in.ObservedGeneration != nil { in, out := &in.ObservedGeneration, &out.ObservedGeneration - if *in == nil { - *out = nil - } else { - *out = new(int64) - **out = **in - } + *out = new(int64) + **out = **in } if in.CollisionCount != nil { in, out := &in.CollisionCount, &out.CollisionCount - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.Conditions != nil { in, out := &in.Conditions, &out.Conditions @@ -637,12 +577,8 @@ func (in *StatefulSetUpdateStrategy) DeepCopyInto(out *StatefulSetUpdateStrategy *out = *in if in.RollingUpdate != nil { in, out := &in.RollingUpdate, &out.RollingUpdate - if *in == nil { - *out = nil - } else { - *out = new(RollingUpdateStatefulSetStrategy) - (*in).DeepCopyInto(*out) - } + *out = new(RollingUpdateStatefulSetStrategy) + (*in).DeepCopyInto(*out) } return } diff --git a/cluster-autoscaler/vendor/k8s.io/api/apps/v1beta2/BUILD b/cluster-autoscaler/vendor/k8s.io/api/apps/v1beta2/BUILD index c13a6ff578..39f66bfd2c 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/apps/v1beta2/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/api/apps/v1beta2/BUILD @@ -15,15 +15,16 @@ go_library( "types_swagger_doc_generated.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/api/apps/v1beta2", importpath = "k8s.io/api/apps/v1beta2", deps = [ + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", ], ) @@ -39,9 +40,3 @@ filegroup( srcs = [":package-srcs"], tags = ["automanaged"], ) - -filegroup( - name = "go_default_library_protos", - srcs = ["generated.proto"], - visibility = ["//visibility:public"], -) diff --git a/cluster-autoscaler/vendor/k8s.io/api/apps/v1beta2/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/api/apps/v1beta2/zz_generated.deepcopy.go index a3bd8afdc3..8a0bad22ea 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/apps/v1beta2/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/api/apps/v1beta2/zz_generated.deepcopy.go @@ -21,7 +21,7 @@ limitations under the License. package v1beta2 import ( - core_v1 "k8s.io/api/core/v1" + corev1 "k8s.io/api/core/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtime "k8s.io/apimachinery/pkg/runtime" intstr "k8s.io/apimachinery/pkg/util/intstr" @@ -170,23 +170,15 @@ func (in *DaemonSetSpec) DeepCopyInto(out *DaemonSetSpec) { *out = *in if in.Selector != nil { in, out := &in.Selector, &out.Selector - if *in == nil { - *out = nil - } else { - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) - } + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) } in.Template.DeepCopyInto(&out.Template) in.UpdateStrategy.DeepCopyInto(&out.UpdateStrategy) if in.RevisionHistoryLimit != nil { in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } return } @@ -206,12 +198,8 @@ func (in *DaemonSetStatus) DeepCopyInto(out *DaemonSetStatus) { *out = *in if in.CollisionCount != nil { in, out := &in.CollisionCount, &out.CollisionCount - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.Conditions != nil { in, out := &in.Conditions, &out.Conditions @@ -238,12 +226,8 @@ func (in *DaemonSetUpdateStrategy) DeepCopyInto(out *DaemonSetUpdateStrategy) { *out = *in if in.RollingUpdate != nil { in, out := &in.RollingUpdate, &out.RollingUpdate - if *in == nil { - *out = nil - } else { - *out = new(RollingUpdateDaemonSet) - (*in).DeepCopyInto(*out) - } + *out = new(RollingUpdateDaemonSet) + (*in).DeepCopyInto(*out) } return } @@ -342,41 +326,25 @@ func (in *DeploymentSpec) DeepCopyInto(out *DeploymentSpec) { *out = *in if in.Replicas != nil { in, out := &in.Replicas, &out.Replicas - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.Selector != nil { in, out := &in.Selector, &out.Selector - if *in == nil { - *out = nil - } else { - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) - } + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) } in.Template.DeepCopyInto(&out.Template) in.Strategy.DeepCopyInto(&out.Strategy) if in.RevisionHistoryLimit != nil { in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.ProgressDeadlineSeconds != nil { in, out := &in.ProgressDeadlineSeconds, &out.ProgressDeadlineSeconds - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } return } @@ -403,12 +371,8 @@ func (in *DeploymentStatus) DeepCopyInto(out *DeploymentStatus) { } if in.CollisionCount != nil { in, out := &in.CollisionCount, &out.CollisionCount - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } return } @@ -428,12 +392,8 @@ func (in *DeploymentStrategy) DeepCopyInto(out *DeploymentStrategy) { *out = *in if in.RollingUpdate != nil { in, out := &in.RollingUpdate, &out.RollingUpdate - if *in == nil { - *out = nil - } else { - *out = new(RollingUpdateDeployment) - (*in).DeepCopyInto(*out) - } + *out = new(RollingUpdateDeployment) + (*in).DeepCopyInto(*out) } return } @@ -531,21 +491,13 @@ func (in *ReplicaSetSpec) DeepCopyInto(out *ReplicaSetSpec) { *out = *in if in.Replicas != nil { in, out := &in.Replicas, &out.Replicas - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.Selector != nil { in, out := &in.Selector, &out.Selector - if *in == nil { - *out = nil - } else { - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) - } + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) } in.Template.DeepCopyInto(&out.Template) return @@ -589,12 +541,8 @@ func (in *RollingUpdateDaemonSet) DeepCopyInto(out *RollingUpdateDaemonSet) { *out = *in if in.MaxUnavailable != nil { in, out := &in.MaxUnavailable, &out.MaxUnavailable - if *in == nil { - *out = nil - } else { - *out = new(intstr.IntOrString) - **out = **in - } + *out = new(intstr.IntOrString) + **out = **in } return } @@ -614,21 +562,13 @@ func (in *RollingUpdateDeployment) DeepCopyInto(out *RollingUpdateDeployment) { *out = *in if in.MaxUnavailable != nil { in, out := &in.MaxUnavailable, &out.MaxUnavailable - if *in == nil { - *out = nil - } else { - *out = new(intstr.IntOrString) - **out = **in - } + *out = new(intstr.IntOrString) + **out = **in } if in.MaxSurge != nil { in, out := &in.MaxSurge, &out.MaxSurge - if *in == nil { - *out = nil - } else { - *out = new(intstr.IntOrString) - **out = **in - } + *out = new(intstr.IntOrString) + **out = **in } return } @@ -648,12 +588,8 @@ func (in *RollingUpdateStatefulSetStrategy) DeepCopyInto(out *RollingUpdateState *out = *in if in.Partition != nil { in, out := &in.Partition, &out.Partition - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } return } @@ -818,26 +754,18 @@ func (in *StatefulSetSpec) DeepCopyInto(out *StatefulSetSpec) { *out = *in if in.Replicas != nil { in, out := &in.Replicas, &out.Replicas - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.Selector != nil { in, out := &in.Selector, &out.Selector - if *in == nil { - *out = nil - } else { - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) - } + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) } in.Template.DeepCopyInto(&out.Template) if in.VolumeClaimTemplates != nil { in, out := &in.VolumeClaimTemplates, &out.VolumeClaimTemplates - *out = make([]core_v1.PersistentVolumeClaim, len(*in)) + *out = make([]corev1.PersistentVolumeClaim, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } @@ -845,12 +773,8 @@ func (in *StatefulSetSpec) DeepCopyInto(out *StatefulSetSpec) { in.UpdateStrategy.DeepCopyInto(&out.UpdateStrategy) if in.RevisionHistoryLimit != nil { in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } return } @@ -870,12 +794,8 @@ func (in *StatefulSetStatus) DeepCopyInto(out *StatefulSetStatus) { *out = *in if in.CollisionCount != nil { in, out := &in.CollisionCount, &out.CollisionCount - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.Conditions != nil { in, out := &in.Conditions, &out.Conditions @@ -902,12 +822,8 @@ func (in *StatefulSetUpdateStrategy) DeepCopyInto(out *StatefulSetUpdateStrategy *out = *in if in.RollingUpdate != nil { in, out := &in.RollingUpdate, &out.RollingUpdate - if *in == nil { - *out = nil - } else { - *out = new(RollingUpdateStatefulSetStrategy) - (*in).DeepCopyInto(*out) - } + *out = new(RollingUpdateStatefulSetStrategy) + (*in).DeepCopyInto(*out) } return } diff --git a/cluster-autoscaler/vendor/k8s.io/api/authentication/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/api/authentication/v1/BUILD index 26e557e469..de7f944090 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/authentication/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/api/authentication/v1/BUILD @@ -15,14 +15,15 @@ go_library( "types_swagger_doc_generated.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/api/authentication/v1", importpath = "k8s.io/api/authentication/v1", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", ], ) @@ -38,9 +39,3 @@ filegroup( srcs = [":package-srcs"], tags = ["automanaged"], ) - -filegroup( - name = "go_default_library_protos", - srcs = ["generated.proto"], - visibility = ["//visibility:public"], -) diff --git a/cluster-autoscaler/vendor/k8s.io/api/authentication/v1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/api/authentication/v1/zz_generated.deepcopy.go index 4b9b941053..f36c253b2e 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/authentication/v1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/api/authentication/v1/zz_generated.deepcopy.go @@ -98,21 +98,13 @@ func (in *TokenRequestSpec) DeepCopyInto(out *TokenRequestSpec) { } if in.ExpirationSeconds != nil { in, out := &in.ExpirationSeconds, &out.ExpirationSeconds - if *in == nil { - *out = nil - } else { - *out = new(int64) - **out = **in - } + *out = new(int64) + **out = **in } if in.BoundObjectRef != nil { in, out := &in.BoundObjectRef, &out.BoundObjectRef - if *in == nil { - *out = nil - } else { - *out = new(BoundObjectReference) - **out = **in - } + *out = new(BoundObjectReference) + **out = **in } return } @@ -217,12 +209,15 @@ func (in *UserInfo) DeepCopyInto(out *UserInfo) { in, out := &in.Extra, &out.Extra *out = make(map[string]ExtraValue, len(*in)) for key, val := range *in { + var outVal []string if val == nil { (*out)[key] = nil } else { - (*out)[key] = make([]string, len(val)) - copy((*out)[key], val) + in, out := &val, &outVal + *out = make(ExtraValue, len(*in)) + copy(*out, *in) } + (*out)[key] = outVal } } return diff --git a/cluster-autoscaler/vendor/k8s.io/api/authentication/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/api/authentication/v1beta1/BUILD index 998d793fef..2cd552a605 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/authentication/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/api/authentication/v1beta1/BUILD @@ -15,13 +15,14 @@ go_library( "types_swagger_doc_generated.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/api/authentication/v1beta1", importpath = "k8s.io/api/authentication/v1beta1", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) @@ -37,9 +38,3 @@ filegroup( srcs = [":package-srcs"], tags = ["automanaged"], ) - -filegroup( - name = "go_default_library_protos", - srcs = ["generated.proto"], - visibility = ["//visibility:public"], -) diff --git a/cluster-autoscaler/vendor/k8s.io/api/authentication/v1beta1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/api/authentication/v1beta1/zz_generated.deepcopy.go index bb552ff63c..3a5f6d5a93 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/authentication/v1beta1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/api/authentication/v1beta1/zz_generated.deepcopy.go @@ -117,12 +117,15 @@ func (in *UserInfo) DeepCopyInto(out *UserInfo) { in, out := &in.Extra, &out.Extra *out = make(map[string]ExtraValue, len(*in)) for key, val := range *in { + var outVal []string if val == nil { (*out)[key] = nil } else { - (*out)[key] = make([]string, len(val)) - copy((*out)[key], val) + in, out := &val, &outVal + *out = make(ExtraValue, len(*in)) + copy(*out, *in) } + (*out)[key] = outVal } } return diff --git a/cluster-autoscaler/vendor/k8s.io/api/authorization/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/api/authorization/v1/BUILD index af9e74a635..f4b46b0844 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/authorization/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/api/authorization/v1/BUILD @@ -15,13 +15,14 @@ go_library( "types_swagger_doc_generated.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/api/authorization/v1", importpath = "k8s.io/api/authorization/v1", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) @@ -37,9 +38,3 @@ filegroup( srcs = [":package-srcs"], tags = ["automanaged"], ) - -filegroup( - name = "go_default_library_protos", - srcs = ["generated.proto"], - visibility = ["//visibility:public"], -) diff --git a/cluster-autoscaler/vendor/k8s.io/api/authorization/v1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/api/authorization/v1/zz_generated.deepcopy.go index 999933d749..1d11b38b08 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/authorization/v1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/api/authorization/v1/zz_generated.deepcopy.go @@ -199,21 +199,13 @@ func (in *SelfSubjectAccessReviewSpec) DeepCopyInto(out *SelfSubjectAccessReview *out = *in if in.ResourceAttributes != nil { in, out := &in.ResourceAttributes, &out.ResourceAttributes - if *in == nil { - *out = nil - } else { - *out = new(ResourceAttributes) - **out = **in - } + *out = new(ResourceAttributes) + **out = **in } if in.NonResourceAttributes != nil { in, out := &in.NonResourceAttributes, &out.NonResourceAttributes - if *in == nil { - *out = nil - } else { - *out = new(NonResourceAttributes) - **out = **in - } + *out = new(NonResourceAttributes) + **out = **in } return } @@ -305,21 +297,13 @@ func (in *SubjectAccessReviewSpec) DeepCopyInto(out *SubjectAccessReviewSpec) { *out = *in if in.ResourceAttributes != nil { in, out := &in.ResourceAttributes, &out.ResourceAttributes - if *in == nil { - *out = nil - } else { - *out = new(ResourceAttributes) - **out = **in - } + *out = new(ResourceAttributes) + **out = **in } if in.NonResourceAttributes != nil { in, out := &in.NonResourceAttributes, &out.NonResourceAttributes - if *in == nil { - *out = nil - } else { - *out = new(NonResourceAttributes) - **out = **in - } + *out = new(NonResourceAttributes) + **out = **in } if in.Groups != nil { in, out := &in.Groups, &out.Groups @@ -330,12 +314,15 @@ func (in *SubjectAccessReviewSpec) DeepCopyInto(out *SubjectAccessReviewSpec) { in, out := &in.Extra, &out.Extra *out = make(map[string]ExtraValue, len(*in)) for key, val := range *in { + var outVal []string if val == nil { (*out)[key] = nil } else { - (*out)[key] = make([]string, len(val)) - copy((*out)[key], val) + in, out := &val, &outVal + *out = make(ExtraValue, len(*in)) + copy(*out, *in) } + (*out)[key] = outVal } } return diff --git a/cluster-autoscaler/vendor/k8s.io/api/authorization/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/api/authorization/v1beta1/BUILD index 06c953f2a9..15cba0e57a 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/authorization/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/api/authorization/v1beta1/BUILD @@ -15,13 +15,14 @@ go_library( "types_swagger_doc_generated.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/api/authorization/v1beta1", importpath = "k8s.io/api/authorization/v1beta1", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) @@ -37,9 +38,3 @@ filegroup( srcs = [":package-srcs"], tags = ["automanaged"], ) - -filegroup( - name = "go_default_library_protos", - srcs = ["generated.proto"], - visibility = ["//visibility:public"], -) diff --git a/cluster-autoscaler/vendor/k8s.io/api/authorization/v1beta1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/api/authorization/v1beta1/zz_generated.deepcopy.go index eb14973cdd..58b2dfe753 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/authorization/v1beta1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/api/authorization/v1beta1/zz_generated.deepcopy.go @@ -199,21 +199,13 @@ func (in *SelfSubjectAccessReviewSpec) DeepCopyInto(out *SelfSubjectAccessReview *out = *in if in.ResourceAttributes != nil { in, out := &in.ResourceAttributes, &out.ResourceAttributes - if *in == nil { - *out = nil - } else { - *out = new(ResourceAttributes) - **out = **in - } + *out = new(ResourceAttributes) + **out = **in } if in.NonResourceAttributes != nil { in, out := &in.NonResourceAttributes, &out.NonResourceAttributes - if *in == nil { - *out = nil - } else { - *out = new(NonResourceAttributes) - **out = **in - } + *out = new(NonResourceAttributes) + **out = **in } return } @@ -305,21 +297,13 @@ func (in *SubjectAccessReviewSpec) DeepCopyInto(out *SubjectAccessReviewSpec) { *out = *in if in.ResourceAttributes != nil { in, out := &in.ResourceAttributes, &out.ResourceAttributes - if *in == nil { - *out = nil - } else { - *out = new(ResourceAttributes) - **out = **in - } + *out = new(ResourceAttributes) + **out = **in } if in.NonResourceAttributes != nil { in, out := &in.NonResourceAttributes, &out.NonResourceAttributes - if *in == nil { - *out = nil - } else { - *out = new(NonResourceAttributes) - **out = **in - } + *out = new(NonResourceAttributes) + **out = **in } if in.Groups != nil { in, out := &in.Groups, &out.Groups @@ -330,12 +314,15 @@ func (in *SubjectAccessReviewSpec) DeepCopyInto(out *SubjectAccessReviewSpec) { in, out := &in.Extra, &out.Extra *out = make(map[string]ExtraValue, len(*in)) for key, val := range *in { + var outVal []string if val == nil { (*out)[key] = nil } else { - (*out)[key] = make([]string, len(val)) - copy((*out)[key], val) + in, out := &val, &outVal + *out = make(ExtraValue, len(*in)) + copy(*out, *in) } + (*out)[key] = outVal } } return diff --git a/cluster-autoscaler/vendor/k8s.io/api/autoscaling/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/api/autoscaling/v1/BUILD index ccf587be09..e0a645e164 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/autoscaling/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/api/autoscaling/v1/BUILD @@ -15,14 +15,15 @@ go_library( "types_swagger_doc_generated.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/api/autoscaling/v1", importpath = "k8s.io/api/autoscaling/v1", deps = [ + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) @@ -38,9 +39,3 @@ filegroup( srcs = [":package-srcs"], tags = ["automanaged"], ) - -filegroup( - name = "go_default_library_protos", - srcs = ["generated.proto"], - visibility = ["//visibility:public"], -) diff --git a/cluster-autoscaler/vendor/k8s.io/api/autoscaling/v1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/api/autoscaling/v1/zz_generated.deepcopy.go index ee9ac01dea..6bafc0887f 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/autoscaling/v1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/api/autoscaling/v1/zz_generated.deepcopy.go @@ -21,7 +21,7 @@ limitations under the License. package v1 import ( - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtime "k8s.io/apimachinery/pkg/runtime" ) @@ -46,30 +46,18 @@ func (in *ExternalMetricSource) DeepCopyInto(out *ExternalMetricSource) { *out = *in if in.MetricSelector != nil { in, out := &in.MetricSelector, &out.MetricSelector - if *in == nil { - *out = nil - } else { - *out = new(meta_v1.LabelSelector) - (*in).DeepCopyInto(*out) - } + *out = new(metav1.LabelSelector) + (*in).DeepCopyInto(*out) } if in.TargetValue != nil { in, out := &in.TargetValue, &out.TargetValue - if *in == nil { - *out = nil - } else { - x := (*in).DeepCopy() - *out = &x - } + x := (*in).DeepCopy() + *out = &x } if in.TargetAverageValue != nil { in, out := &in.TargetAverageValue, &out.TargetAverageValue - if *in == nil { - *out = nil - } else { - x := (*in).DeepCopy() - *out = &x - } + x := (*in).DeepCopy() + *out = &x } return } @@ -89,22 +77,14 @@ func (in *ExternalMetricStatus) DeepCopyInto(out *ExternalMetricStatus) { *out = *in if in.MetricSelector != nil { in, out := &in.MetricSelector, &out.MetricSelector - if *in == nil { - *out = nil - } else { - *out = new(meta_v1.LabelSelector) - (*in).DeepCopyInto(*out) - } + *out = new(metav1.LabelSelector) + (*in).DeepCopyInto(*out) } out.CurrentValue = in.CurrentValue.DeepCopy() if in.CurrentAverageValue != nil { in, out := &in.CurrentAverageValue, &out.CurrentAverageValue - if *in == nil { - *out = nil - } else { - x := (*in).DeepCopy() - *out = &x - } + x := (*in).DeepCopy() + *out = &x } return } @@ -203,21 +183,13 @@ func (in *HorizontalPodAutoscalerSpec) DeepCopyInto(out *HorizontalPodAutoscaler out.ScaleTargetRef = in.ScaleTargetRef if in.MinReplicas != nil { in, out := &in.MinReplicas, &out.MinReplicas - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.TargetCPUUtilizationPercentage != nil { in, out := &in.TargetCPUUtilizationPercentage, &out.TargetCPUUtilizationPercentage - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } return } @@ -237,29 +209,17 @@ func (in *HorizontalPodAutoscalerStatus) DeepCopyInto(out *HorizontalPodAutoscal *out = *in if in.ObservedGeneration != nil { in, out := &in.ObservedGeneration, &out.ObservedGeneration - if *in == nil { - *out = nil - } else { - *out = new(int64) - **out = **in - } + *out = new(int64) + **out = **in } if in.LastScaleTime != nil { in, out := &in.LastScaleTime, &out.LastScaleTime - if *in == nil { - *out = nil - } else { - *out = (*in).DeepCopy() - } + *out = (*in).DeepCopy() } if in.CurrentCPUUtilizationPercentage != nil { in, out := &in.CurrentCPUUtilizationPercentage, &out.CurrentCPUUtilizationPercentage - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } return } @@ -279,39 +239,23 @@ func (in *MetricSpec) DeepCopyInto(out *MetricSpec) { *out = *in if in.Object != nil { in, out := &in.Object, &out.Object - if *in == nil { - *out = nil - } else { - *out = new(ObjectMetricSource) - (*in).DeepCopyInto(*out) - } + *out = new(ObjectMetricSource) + (*in).DeepCopyInto(*out) } if in.Pods != nil { in, out := &in.Pods, &out.Pods - if *in == nil { - *out = nil - } else { - *out = new(PodsMetricSource) - (*in).DeepCopyInto(*out) - } + *out = new(PodsMetricSource) + (*in).DeepCopyInto(*out) } if in.Resource != nil { in, out := &in.Resource, &out.Resource - if *in == nil { - *out = nil - } else { - *out = new(ResourceMetricSource) - (*in).DeepCopyInto(*out) - } + *out = new(ResourceMetricSource) + (*in).DeepCopyInto(*out) } if in.External != nil { in, out := &in.External, &out.External - if *in == nil { - *out = nil - } else { - *out = new(ExternalMetricSource) - (*in).DeepCopyInto(*out) - } + *out = new(ExternalMetricSource) + (*in).DeepCopyInto(*out) } return } @@ -331,39 +275,23 @@ func (in *MetricStatus) DeepCopyInto(out *MetricStatus) { *out = *in if in.Object != nil { in, out := &in.Object, &out.Object - if *in == nil { - *out = nil - } else { - *out = new(ObjectMetricStatus) - (*in).DeepCopyInto(*out) - } + *out = new(ObjectMetricStatus) + (*in).DeepCopyInto(*out) } if in.Pods != nil { in, out := &in.Pods, &out.Pods - if *in == nil { - *out = nil - } else { - *out = new(PodsMetricStatus) - (*in).DeepCopyInto(*out) - } + *out = new(PodsMetricStatus) + (*in).DeepCopyInto(*out) } if in.Resource != nil { in, out := &in.Resource, &out.Resource - if *in == nil { - *out = nil - } else { - *out = new(ResourceMetricStatus) - (*in).DeepCopyInto(*out) - } + *out = new(ResourceMetricStatus) + (*in).DeepCopyInto(*out) } if in.External != nil { in, out := &in.External, &out.External - if *in == nil { - *out = nil - } else { - *out = new(ExternalMetricStatus) - (*in).DeepCopyInto(*out) - } + *out = new(ExternalMetricStatus) + (*in).DeepCopyInto(*out) } return } @@ -453,21 +381,13 @@ func (in *ResourceMetricSource) DeepCopyInto(out *ResourceMetricSource) { *out = *in if in.TargetAverageUtilization != nil { in, out := &in.TargetAverageUtilization, &out.TargetAverageUtilization - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.TargetAverageValue != nil { in, out := &in.TargetAverageValue, &out.TargetAverageValue - if *in == nil { - *out = nil - } else { - x := (*in).DeepCopy() - *out = &x - } + x := (*in).DeepCopy() + *out = &x } return } @@ -487,12 +407,8 @@ func (in *ResourceMetricStatus) DeepCopyInto(out *ResourceMetricStatus) { *out = *in if in.CurrentAverageUtilization != nil { in, out := &in.CurrentAverageUtilization, &out.CurrentAverageUtilization - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } out.CurrentAverageValue = in.CurrentAverageValue.DeepCopy() return diff --git a/cluster-autoscaler/vendor/k8s.io/api/autoscaling/v2beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/api/autoscaling/v2beta1/BUILD index 32fc333eb5..25fa970335 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/autoscaling/v2beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/api/autoscaling/v2beta1/BUILD @@ -15,14 +15,15 @@ go_library( "types_swagger_doc_generated.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/api/autoscaling/v2beta1", importpath = "k8s.io/api/autoscaling/v2beta1", deps = [ + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) @@ -38,9 +39,3 @@ filegroup( srcs = [":package-srcs"], tags = ["automanaged"], ) - -filegroup( - name = "go_default_library_protos", - srcs = ["generated.proto"], - visibility = ["//visibility:public"], -) diff --git a/cluster-autoscaler/vendor/k8s.io/api/autoscaling/v2beta1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/api/autoscaling/v2beta1/zz_generated.deepcopy.go index fd46bd8921..41da778fab 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/autoscaling/v2beta1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/api/autoscaling/v2beta1/zz_generated.deepcopy.go @@ -46,30 +46,18 @@ func (in *ExternalMetricSource) DeepCopyInto(out *ExternalMetricSource) { *out = *in if in.MetricSelector != nil { in, out := &in.MetricSelector, &out.MetricSelector - if *in == nil { - *out = nil - } else { - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) - } + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) } if in.TargetValue != nil { in, out := &in.TargetValue, &out.TargetValue - if *in == nil { - *out = nil - } else { - x := (*in).DeepCopy() - *out = &x - } + x := (*in).DeepCopy() + *out = &x } if in.TargetAverageValue != nil { in, out := &in.TargetAverageValue, &out.TargetAverageValue - if *in == nil { - *out = nil - } else { - x := (*in).DeepCopy() - *out = &x - } + x := (*in).DeepCopy() + *out = &x } return } @@ -89,22 +77,14 @@ func (in *ExternalMetricStatus) DeepCopyInto(out *ExternalMetricStatus) { *out = *in if in.MetricSelector != nil { in, out := &in.MetricSelector, &out.MetricSelector - if *in == nil { - *out = nil - } else { - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) - } + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) } out.CurrentValue = in.CurrentValue.DeepCopy() if in.CurrentAverageValue != nil { in, out := &in.CurrentAverageValue, &out.CurrentAverageValue - if *in == nil { - *out = nil - } else { - x := (*in).DeepCopy() - *out = &x - } + x := (*in).DeepCopy() + *out = &x } return } @@ -203,12 +183,8 @@ func (in *HorizontalPodAutoscalerSpec) DeepCopyInto(out *HorizontalPodAutoscaler out.ScaleTargetRef = in.ScaleTargetRef if in.MinReplicas != nil { in, out := &in.MinReplicas, &out.MinReplicas - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.Metrics != nil { in, out := &in.Metrics, &out.Metrics @@ -235,20 +211,12 @@ func (in *HorizontalPodAutoscalerStatus) DeepCopyInto(out *HorizontalPodAutoscal *out = *in if in.ObservedGeneration != nil { in, out := &in.ObservedGeneration, &out.ObservedGeneration - if *in == nil { - *out = nil - } else { - *out = new(int64) - **out = **in - } + *out = new(int64) + **out = **in } if in.LastScaleTime != nil { in, out := &in.LastScaleTime, &out.LastScaleTime - if *in == nil { - *out = nil - } else { - *out = (*in).DeepCopy() - } + *out = (*in).DeepCopy() } if in.CurrentMetrics != nil { in, out := &in.CurrentMetrics, &out.CurrentMetrics @@ -282,39 +250,23 @@ func (in *MetricSpec) DeepCopyInto(out *MetricSpec) { *out = *in if in.Object != nil { in, out := &in.Object, &out.Object - if *in == nil { - *out = nil - } else { - *out = new(ObjectMetricSource) - (*in).DeepCopyInto(*out) - } + *out = new(ObjectMetricSource) + (*in).DeepCopyInto(*out) } if in.Pods != nil { in, out := &in.Pods, &out.Pods - if *in == nil { - *out = nil - } else { - *out = new(PodsMetricSource) - (*in).DeepCopyInto(*out) - } + *out = new(PodsMetricSource) + (*in).DeepCopyInto(*out) } if in.Resource != nil { in, out := &in.Resource, &out.Resource - if *in == nil { - *out = nil - } else { - *out = new(ResourceMetricSource) - (*in).DeepCopyInto(*out) - } + *out = new(ResourceMetricSource) + (*in).DeepCopyInto(*out) } if in.External != nil { in, out := &in.External, &out.External - if *in == nil { - *out = nil - } else { - *out = new(ExternalMetricSource) - (*in).DeepCopyInto(*out) - } + *out = new(ExternalMetricSource) + (*in).DeepCopyInto(*out) } return } @@ -334,39 +286,23 @@ func (in *MetricStatus) DeepCopyInto(out *MetricStatus) { *out = *in if in.Object != nil { in, out := &in.Object, &out.Object - if *in == nil { - *out = nil - } else { - *out = new(ObjectMetricStatus) - (*in).DeepCopyInto(*out) - } + *out = new(ObjectMetricStatus) + (*in).DeepCopyInto(*out) } if in.Pods != nil { in, out := &in.Pods, &out.Pods - if *in == nil { - *out = nil - } else { - *out = new(PodsMetricStatus) - (*in).DeepCopyInto(*out) - } + *out = new(PodsMetricStatus) + (*in).DeepCopyInto(*out) } if in.Resource != nil { in, out := &in.Resource, &out.Resource - if *in == nil { - *out = nil - } else { - *out = new(ResourceMetricStatus) - (*in).DeepCopyInto(*out) - } + *out = new(ResourceMetricStatus) + (*in).DeepCopyInto(*out) } if in.External != nil { in, out := &in.External, &out.External - if *in == nil { - *out = nil - } else { - *out = new(ExternalMetricStatus) - (*in).DeepCopyInto(*out) - } + *out = new(ExternalMetricStatus) + (*in).DeepCopyInto(*out) } return } @@ -456,21 +392,13 @@ func (in *ResourceMetricSource) DeepCopyInto(out *ResourceMetricSource) { *out = *in if in.TargetAverageUtilization != nil { in, out := &in.TargetAverageUtilization, &out.TargetAverageUtilization - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.TargetAverageValue != nil { in, out := &in.TargetAverageValue, &out.TargetAverageValue - if *in == nil { - *out = nil - } else { - x := (*in).DeepCopy() - *out = &x - } + x := (*in).DeepCopy() + *out = &x } return } @@ -490,12 +418,8 @@ func (in *ResourceMetricStatus) DeepCopyInto(out *ResourceMetricStatus) { *out = *in if in.CurrentAverageUtilization != nil { in, out := &in.CurrentAverageUtilization, &out.CurrentAverageUtilization - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } out.CurrentAverageValue = in.CurrentAverageValue.DeepCopy() return diff --git a/cluster-autoscaler/vendor/k8s.io/api/batch/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/api/batch/v1/BUILD index a7ca7a2326..29e2d2a25c 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/batch/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/api/batch/v1/BUILD @@ -15,13 +15,14 @@ go_library( "types_swagger_doc_generated.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/api/batch/v1", importpath = "k8s.io/api/batch/v1", deps = [ + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) @@ -37,9 +38,3 @@ filegroup( srcs = [":package-srcs"], tags = ["automanaged"], ) - -filegroup( - name = "go_default_library_protos", - srcs = ["generated.proto"], - visibility = ["//visibility:public"], -) diff --git a/cluster-autoscaler/vendor/k8s.io/api/batch/v1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/api/batch/v1/zz_generated.deepcopy.go index 3e5250f378..d641cf3080 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/batch/v1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/api/batch/v1/zz_generated.deepcopy.go @@ -21,7 +21,7 @@ limitations under the License. package v1 import ( - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtime "k8s.io/apimachinery/pkg/runtime" ) @@ -109,57 +109,33 @@ func (in *JobSpec) DeepCopyInto(out *JobSpec) { *out = *in if in.Parallelism != nil { in, out := &in.Parallelism, &out.Parallelism - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.Completions != nil { in, out := &in.Completions, &out.Completions - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.ActiveDeadlineSeconds != nil { in, out := &in.ActiveDeadlineSeconds, &out.ActiveDeadlineSeconds - if *in == nil { - *out = nil - } else { - *out = new(int64) - **out = **in - } + *out = new(int64) + **out = **in } if in.BackoffLimit != nil { in, out := &in.BackoffLimit, &out.BackoffLimit - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.Selector != nil { in, out := &in.Selector, &out.Selector - if *in == nil { - *out = nil - } else { - *out = new(meta_v1.LabelSelector) - (*in).DeepCopyInto(*out) - } + *out = new(metav1.LabelSelector) + (*in).DeepCopyInto(*out) } if in.ManualSelector != nil { in, out := &in.ManualSelector, &out.ManualSelector - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } in.Template.DeepCopyInto(&out.Template) return @@ -187,19 +163,11 @@ func (in *JobStatus) DeepCopyInto(out *JobStatus) { } if in.StartTime != nil { in, out := &in.StartTime, &out.StartTime - if *in == nil { - *out = nil - } else { - *out = (*in).DeepCopy() - } + *out = (*in).DeepCopy() } if in.CompletionTime != nil { in, out := &in.CompletionTime, &out.CompletionTime - if *in == nil { - *out = nil - } else { - *out = (*in).DeepCopy() - } + *out = (*in).DeepCopy() } return } diff --git a/cluster-autoscaler/vendor/k8s.io/api/batch/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/api/batch/v1beta1/BUILD index 3f0197b9c6..be576c20a8 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/batch/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/api/batch/v1beta1/BUILD @@ -15,14 +15,15 @@ go_library( "types_swagger_doc_generated.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/api/batch/v1beta1", importpath = "k8s.io/api/batch/v1beta1", deps = [ + "//staging/src/k8s.io/api/batch/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", - "//vendor/k8s.io/api/batch/v1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) @@ -38,9 +39,3 @@ filegroup( srcs = [":package-srcs"], tags = ["automanaged"], ) - -filegroup( - name = "go_default_library_protos", - srcs = ["generated.proto"], - visibility = ["//visibility:public"], -) diff --git a/cluster-autoscaler/vendor/k8s.io/api/batch/v1beta1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/api/batch/v1beta1/zz_generated.deepcopy.go index a33f4ffcf3..1c8bc4478d 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/batch/v1beta1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/api/batch/v1beta1/zz_generated.deepcopy.go @@ -91,40 +91,24 @@ func (in *CronJobSpec) DeepCopyInto(out *CronJobSpec) { *out = *in if in.StartingDeadlineSeconds != nil { in, out := &in.StartingDeadlineSeconds, &out.StartingDeadlineSeconds - if *in == nil { - *out = nil - } else { - *out = new(int64) - **out = **in - } + *out = new(int64) + **out = **in } if in.Suspend != nil { in, out := &in.Suspend, &out.Suspend - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } in.JobTemplate.DeepCopyInto(&out.JobTemplate) if in.SuccessfulJobsHistoryLimit != nil { in, out := &in.SuccessfulJobsHistoryLimit, &out.SuccessfulJobsHistoryLimit - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.FailedJobsHistoryLimit != nil { in, out := &in.FailedJobsHistoryLimit, &out.FailedJobsHistoryLimit - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } return } @@ -149,11 +133,7 @@ func (in *CronJobStatus) DeepCopyInto(out *CronJobStatus) { } if in.LastScheduleTime != nil { in, out := &in.LastScheduleTime, &out.LastScheduleTime - if *in == nil { - *out = nil - } else { - *out = (*in).DeepCopy() - } + *out = (*in).DeepCopy() } return } diff --git a/cluster-autoscaler/vendor/k8s.io/api/batch/v2alpha1/BUILD b/cluster-autoscaler/vendor/k8s.io/api/batch/v2alpha1/BUILD index 0fc0ab57ac..6c70e67d08 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/batch/v2alpha1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/api/batch/v2alpha1/BUILD @@ -15,14 +15,15 @@ go_library( "types_swagger_doc_generated.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/api/batch/v2alpha1", importpath = "k8s.io/api/batch/v2alpha1", deps = [ + "//staging/src/k8s.io/api/batch/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", - "//vendor/k8s.io/api/batch/v1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) @@ -38,9 +39,3 @@ filegroup( srcs = [":package-srcs"], tags = ["automanaged"], ) - -filegroup( - name = "go_default_library_protos", - srcs = ["generated.proto"], - visibility = ["//visibility:public"], -) diff --git a/cluster-autoscaler/vendor/k8s.io/api/batch/v2alpha1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/api/batch/v2alpha1/zz_generated.deepcopy.go index bf0da8bf48..20d87e7e7f 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/batch/v2alpha1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/api/batch/v2alpha1/zz_generated.deepcopy.go @@ -91,40 +91,24 @@ func (in *CronJobSpec) DeepCopyInto(out *CronJobSpec) { *out = *in if in.StartingDeadlineSeconds != nil { in, out := &in.StartingDeadlineSeconds, &out.StartingDeadlineSeconds - if *in == nil { - *out = nil - } else { - *out = new(int64) - **out = **in - } + *out = new(int64) + **out = **in } if in.Suspend != nil { in, out := &in.Suspend, &out.Suspend - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } in.JobTemplate.DeepCopyInto(&out.JobTemplate) if in.SuccessfulJobsHistoryLimit != nil { in, out := &in.SuccessfulJobsHistoryLimit, &out.SuccessfulJobsHistoryLimit - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.FailedJobsHistoryLimit != nil { in, out := &in.FailedJobsHistoryLimit, &out.FailedJobsHistoryLimit - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } return } @@ -149,11 +133,7 @@ func (in *CronJobStatus) DeepCopyInto(out *CronJobStatus) { } if in.LastScheduleTime != nil { in, out := &in.LastScheduleTime, &out.LastScheduleTime - if *in == nil { - *out = nil - } else { - *out = (*in).DeepCopy() - } + *out = (*in).DeepCopy() } return } diff --git a/cluster-autoscaler/vendor/k8s.io/api/certificates/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/api/certificates/v1beta1/BUILD index 4c94dd0648..2d4532cffc 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/certificates/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/api/certificates/v1beta1/BUILD @@ -15,13 +15,14 @@ go_library( "types_swagger_doc_generated.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/api/certificates/v1beta1", importpath = "k8s.io/api/certificates/v1beta1", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) @@ -37,9 +38,3 @@ filegroup( srcs = [":package-srcs"], tags = ["automanaged"], ) - -filegroup( - name = "go_default_library_protos", - srcs = ["generated.proto"], - visibility = ["//visibility:public"], -) diff --git a/cluster-autoscaler/vendor/k8s.io/api/certificates/v1beta1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/api/certificates/v1beta1/zz_generated.deepcopy.go index ffd24c30fc..1b103f1553 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/certificates/v1beta1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/api/certificates/v1beta1/zz_generated.deepcopy.go @@ -124,12 +124,15 @@ func (in *CertificateSigningRequestSpec) DeepCopyInto(out *CertificateSigningReq in, out := &in.Extra, &out.Extra *out = make(map[string]ExtraValue, len(*in)) for key, val := range *in { + var outVal []string if val == nil { (*out)[key] = nil } else { - (*out)[key] = make([]string, len(val)) - copy((*out)[key], val) + in, out := &val, &outVal + *out = make(ExtraValue, len(*in)) + copy(*out, *in) } + (*out)[key] = outVal } } return diff --git a/cluster-autoscaler/vendor/k8s.io/api/coordination/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/api/coordination/v1beta1/BUILD new file mode 100644 index 0000000000..94ea9ca42e --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/api/coordination/v1beta1/BUILD @@ -0,0 +1,42 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +filegroup( + name = "go_default_library_protos", + srcs = ["generated.proto"], + visibility = ["//visibility:public"], +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "generated.pb.go", + "register.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.deepcopy.go", + ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/api/coordination/v1beta1", + importpath = "k8s.io/api/coordination/v1beta1", + visibility = ["//visibility:public"], + deps = [ + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], + visibility = ["//visibility:public"], +) diff --git a/cluster-autoscaler/vendor/k8s.io/api/coordination/v1beta1/doc.go b/cluster-autoscaler/vendor/k8s.io/api/coordination/v1beta1/doc.go new file mode 100644 index 0000000000..da5c8e128a --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/api/coordination/v1beta1/doc.go @@ -0,0 +1,21 @@ +/* +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. +*/ + +// +k8s:deepcopy-gen=package +// +k8s:openapi-gen=true + +// +groupName=coordination.k8s.io +package v1beta1 diff --git a/cluster-autoscaler/vendor/k8s.io/api/coordination/v1beta1/generated.pb.go b/cluster-autoscaler/vendor/k8s.io/api/coordination/v1beta1/generated.pb.go new file mode 100644 index 0000000000..a89fb63816 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/api/coordination/v1beta1/generated.pb.go @@ -0,0 +1,886 @@ +/* +Copyright The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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. +// source: k8s.io/kubernetes/vendor/k8s.io/api/coordination/v1beta1/generated.proto +// DO NOT EDIT! + +/* + Package v1beta1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/vendor/k8s.io/api/coordination/v1beta1/generated.proto + + It has these top-level messages: + Lease + LeaseList + LeaseSpec +*/ +package v1beta1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + +import strings "strings" +import reflect "reflect" + +import io "io" + +// 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.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +func (m *Lease) Reset() { *m = Lease{} } +func (*Lease) ProtoMessage() {} +func (*Lease) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *LeaseList) Reset() { *m = LeaseList{} } +func (*LeaseList) ProtoMessage() {} +func (*LeaseList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } + +func (m *LeaseSpec) Reset() { *m = LeaseSpec{} } +func (*LeaseSpec) ProtoMessage() {} +func (*LeaseSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} } + +func init() { + proto.RegisterType((*Lease)(nil), "k8s.io.api.coordination.v1beta1.Lease") + proto.RegisterType((*LeaseList)(nil), "k8s.io.api.coordination.v1beta1.LeaseList") + proto.RegisterType((*LeaseSpec)(nil), "k8s.io.api.coordination.v1beta1.LeaseSpec") +} +func (m *Lease) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Lease) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n1, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n1 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n2, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n2 + return i, nil +} + +func (m *LeaseList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *LeaseList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n3, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n3 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *LeaseSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *LeaseSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.HolderIdentity != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.HolderIdentity))) + i += copy(dAtA[i:], *m.HolderIdentity) + } + if m.LeaseDurationSeconds != nil { + dAtA[i] = 0x10 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.LeaseDurationSeconds)) + } + if m.AcquireTime != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.AcquireTime.Size())) + n4, err := m.AcquireTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n4 + } + if m.RenewTime != nil { + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.RenewTime.Size())) + n5, err := m.RenewTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n5 + } + if m.LeaseTransitions != nil { + dAtA[i] = 0x28 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.LeaseTransitions)) + } + return i, nil +} + +func encodeFixed64Generated(dAtA []byte, offset int, v uint64) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + dAtA[offset+4] = uint8(v >> 32) + dAtA[offset+5] = uint8(v >> 40) + dAtA[offset+6] = uint8(v >> 48) + dAtA[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(dAtA []byte, offset int, v uint32) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int { + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return offset + 1 +} +func (m *Lease) Size() (n int) { + 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 *LeaseList) Size() (n int) { + 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 *LeaseSpec) Size() (n int) { + var l int + _ = l + if m.HolderIdentity != nil { + l = len(*m.HolderIdentity) + n += 1 + l + sovGenerated(uint64(l)) + } + if m.LeaseDurationSeconds != nil { + n += 1 + sovGenerated(uint64(*m.LeaseDurationSeconds)) + } + if m.AcquireTime != nil { + l = m.AcquireTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.RenewTime != nil { + l = m.RenewTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.LeaseTransitions != nil { + n += 1 + sovGenerated(uint64(*m.LeaseTransitions)) + } + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *Lease) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Lease{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "LeaseSpec", "LeaseSpec", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *LeaseList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&LeaseList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "Lease", "Lease", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *LeaseSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&LeaseSpec{`, + `HolderIdentity:` + valueToStringGenerated(this.HolderIdentity) + `,`, + `LeaseDurationSeconds:` + valueToStringGenerated(this.LeaseDurationSeconds) + `,`, + `AcquireTime:` + strings.Replace(fmt.Sprintf("%v", this.AcquireTime), "MicroTime", "k8s_io_apimachinery_pkg_apis_meta_v1.MicroTime", 1) + `,`, + `RenewTime:` + strings.Replace(fmt.Sprintf("%v", this.RenewTime), "MicroTime", "k8s_io_apimachinery_pkg_apis_meta_v1.MicroTime", 1) + `,`, + `LeaseTransitions:` + valueToStringGenerated(this.LeaseTransitions) + `,`, + `}`, + }, "") + 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 *Lease) 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: Lease: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Lease: 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 > 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 > 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 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LeaseList) 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: LeaseList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LeaseList: 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 > 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 > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, Lease{}) + 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 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LeaseSpec) 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: LeaseSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LeaseSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field HolderIdentity", 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 > l { + return io.ErrUnexpectedEOF + } + s := string(dAtA[iNdEx:postIndex]) + m.HolderIdentity = &s + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field LeaseDurationSeconds", 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.LeaseDurationSeconds = &v + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AcquireTime", 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 > l { + return io.ErrUnexpectedEOF + } + if m.AcquireTime == nil { + m.AcquireTime = &k8s_io_apimachinery_pkg_apis_meta_v1.MicroTime{} + } + if err := m.AcquireTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + 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 > l { + return io.ErrUnexpectedEOF + } + if m.RenewTime == nil { + m.RenewTime = &k8s_io_apimachinery_pkg_apis_meta_v1.MicroTime{} + } + if err := m.RenewTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field LeaseTransitions", 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.LeaseTransitions = &v + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if 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 + 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 + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + 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 + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(dAtA[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +func init() { + proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/coordination/v1beta1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 582 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x92, 0x41, 0x4f, 0xd4, 0x40, + 0x14, 0xc7, 0xb7, 0xc0, 0x46, 0x76, 0x56, 0x90, 0x34, 0x1c, 0x9a, 0x3d, 0xb4, 0x64, 0x0f, 0x86, + 0x98, 0x30, 0x23, 0x68, 0x8c, 0xf1, 0xa4, 0x8d, 0x07, 0x88, 0x25, 0x26, 0x85, 0x93, 0xe1, 0xe0, + 0xb4, 0x7d, 0x76, 0xc7, 0xa5, 0x33, 0x75, 0x66, 0xba, 0xca, 0xcd, 0x8f, 0xe0, 0xd5, 0x2f, 0xa2, + 0x5f, 0x81, 0x23, 0x47, 0x4e, 0x8d, 0xd4, 0x2f, 0x62, 0x3a, 0x14, 0x0a, 0x2c, 0x84, 0x8d, 0xb7, + 0x9d, 0x79, 0xef, 0xf7, 0x7b, 0xff, 0x37, 0x5d, 0xb4, 0x3d, 0x7e, 0xa9, 0x30, 0x13, 0x64, 0x5c, + 0x44, 0x20, 0x39, 0x68, 0x50, 0x64, 0x02, 0x3c, 0x11, 0x92, 0x34, 0x05, 0x9a, 0x33, 0x12, 0x0b, + 0x21, 0x13, 0xc6, 0xa9, 0x66, 0x82, 0x93, 0xc9, 0x66, 0x04, 0x9a, 0x6e, 0x92, 0x14, 0x38, 0x48, + 0xaa, 0x21, 0xc1, 0xb9, 0x14, 0x5a, 0xd8, 0xde, 0x39, 0x80, 0x69, 0xce, 0xf0, 0x55, 0x00, 0x37, + 0xc0, 0x60, 0x23, 0x65, 0x7a, 0x54, 0x44, 0x38, 0x16, 0x19, 0x49, 0x45, 0x2a, 0x88, 0xe1, 0xa2, + 0xe2, 0x93, 0x39, 0x99, 0x83, 0xf9, 0x75, 0xee, 0x1b, 0x0c, 0xaf, 0x05, 0x90, 0x40, 0x26, 0x53, + 0x33, 0x07, 0xbb, 0x6d, 0x0f, 0x7c, 0xd3, 0xc0, 0x15, 0x13, 0x5c, 0x6d, 0xd0, 0x9c, 0x29, 0x90, + 0x13, 0x90, 0x24, 0x1f, 0xa7, 0x75, 0x4d, 0x5d, 0x6f, 0xb8, 0x6b, 0x85, 0xc1, 0xf3, 0x56, 0x97, + 0xd1, 0x78, 0xc4, 0x38, 0xc8, 0xa3, 0xd6, 0x91, 0x81, 0xa6, 0xb7, 0x85, 0x20, 0x77, 0x51, 0xb2, + 0xe0, 0x9a, 0x65, 0x30, 0x05, 0xbc, 0xb8, 0x0f, 0x50, 0xf1, 0x08, 0x32, 0x3a, 0xc5, 0x3d, 0xbb, + 0x8b, 0x2b, 0x34, 0x3b, 0x24, 0x8c, 0x6b, 0xa5, 0xe5, 0x4d, 0x68, 0xf8, 0xdb, 0x42, 0xdd, 0x00, + 0xa8, 0x02, 0xfb, 0x23, 0x5a, 0xac, 0x57, 0x48, 0xa8, 0xa6, 0x8e, 0xb5, 0x66, 0xad, 0xf7, 0xb7, + 0x9e, 0xe2, 0xf6, 0x9b, 0x5d, 0x1a, 0x71, 0x3e, 0x4e, 0xeb, 0x0b, 0x85, 0xeb, 0x6e, 0x3c, 0xd9, + 0xc4, 0xef, 0xa3, 0xcf, 0x10, 0xeb, 0x5d, 0xd0, 0xd4, 0xb7, 0x8f, 0x4b, 0xaf, 0x53, 0x95, 0x1e, + 0x6a, 0xef, 0xc2, 0x4b, 0xab, 0x1d, 0xa0, 0x05, 0x95, 0x43, 0xec, 0xcc, 0x19, 0xfb, 0x13, 0x7c, + 0xcf, 0x3f, 0x02, 0x9b, 0x5c, 0x7b, 0x39, 0xc4, 0xfe, 0xc3, 0xc6, 0xbb, 0x50, 0x9f, 0x42, 0x63, + 0x19, 0xfe, 0xb2, 0x50, 0xcf, 0x74, 0x04, 0x4c, 0x69, 0xfb, 0x60, 0x2a, 0x3d, 0x9e, 0x2d, 0x7d, + 0x4d, 0x9b, 0xec, 0x2b, 0xcd, 0x8c, 0xc5, 0x8b, 0x9b, 0x2b, 0xc9, 0xdf, 0xa1, 0x2e, 0xd3, 0x90, + 0x29, 0x67, 0x6e, 0x6d, 0x7e, 0xbd, 0xbf, 0xf5, 0x78, 0xb6, 0xe8, 0xfe, 0x52, 0xa3, 0xec, 0xee, + 0xd4, 0x70, 0x78, 0xee, 0x18, 0xfe, 0x9c, 0x6f, 0x82, 0xd7, 0xcb, 0xd8, 0xaf, 0xd0, 0xf2, 0x48, + 0x1c, 0x26, 0x20, 0x77, 0x12, 0xe0, 0x9a, 0xe9, 0x23, 0x13, 0xbf, 0xe7, 0xdb, 0x55, 0xe9, 0x2d, + 0x6f, 0x5f, 0xab, 0x84, 0x37, 0x3a, 0xed, 0x00, 0xad, 0x1e, 0xd6, 0xa2, 0xb7, 0x85, 0x34, 0xe3, + 0xf7, 0x20, 0x16, 0x3c, 0x51, 0xe6, 0x81, 0xbb, 0xbe, 0x53, 0x95, 0xde, 0x6a, 0x70, 0x4b, 0x3d, + 0xbc, 0x95, 0xb2, 0x23, 0xd4, 0xa7, 0xf1, 0x97, 0x82, 0x49, 0xd8, 0x67, 0x19, 0x38, 0xf3, 0xe6, + 0x15, 0xc9, 0x6c, 0xaf, 0xb8, 0xcb, 0x62, 0x29, 0x6a, 0xcc, 0x7f, 0x54, 0x95, 0x5e, 0xff, 0x4d, + 0xeb, 0x09, 0xaf, 0x4a, 0xed, 0x03, 0xd4, 0x93, 0xc0, 0xe1, 0xab, 0x99, 0xb0, 0xf0, 0x7f, 0x13, + 0x96, 0xaa, 0xd2, 0xeb, 0x85, 0x17, 0x96, 0xb0, 0x15, 0xda, 0xaf, 0xd1, 0x8a, 0xd9, 0x6c, 0x5f, + 0x52, 0xae, 0x58, 0xbd, 0x9b, 0x72, 0xba, 0xe6, 0x2d, 0x56, 0xab, 0xd2, 0x5b, 0x09, 0x6e, 0xd4, + 0xc2, 0xa9, 0x6e, 0x7f, 0xe3, 0xf8, 0xcc, 0xed, 0x9c, 0x9c, 0xb9, 0x9d, 0xd3, 0x33, 0xb7, 0xf3, + 0xbd, 0x72, 0xad, 0xe3, 0xca, 0xb5, 0x4e, 0x2a, 0xd7, 0x3a, 0xad, 0x5c, 0xeb, 0x4f, 0xe5, 0x5a, + 0x3f, 0xfe, 0xba, 0x9d, 0x0f, 0x0f, 0x9a, 0xcf, 0xfc, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x97, 0x5f, + 0x33, 0x89, 0x1f, 0x05, 0x00, 0x00, +} diff --git a/cluster-autoscaler/vendor/k8s.io/api/coordination/v1beta1/generated.proto b/cluster-autoscaler/vendor/k8s.io/api/coordination/v1beta1/generated.proto new file mode 100644 index 0000000000..b2c97025f2 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/api/coordination/v1beta1/generated.proto @@ -0,0 +1,83 @@ +/* +Copyright The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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.v1beta1; + +import "k8s.io/api/core/v1/generated.proto"; +import "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/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"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1beta1"; + +// Lease defines a lease concept. +message Lease { + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Specification of the Lease. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional LeaseSpec spec = 2; +} + +// LeaseList is a list of Lease objects. +message LeaseList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is a list of schema objects. + repeated Lease items = 2; +} + +// LeaseSpec is a specification of a Lease. +message LeaseSpec { + // holderIdentity contains the identity of the holder of a current lease. + // +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 + // 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; + + // 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; + + // leaseTransitions is the number of transitions of a lease between + // holders. + // +optional + optional int32 leaseTransitions = 5; +} + diff --git a/cluster-autoscaler/vendor/k8s.io/api/coordination/v1beta1/register.go b/cluster-autoscaler/vendor/k8s.io/api/coordination/v1beta1/register.go new file mode 100644 index 0000000000..85efaa64e7 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/api/coordination/v1beta1/register.go @@ -0,0 +1,53 @@ +/* +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 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 = "coordination.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 ( + // 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, + &Lease{}, + &LeaseList{}, + ) + + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/cluster-autoscaler/vendor/k8s.io/api/coordination/v1beta1/types.go b/cluster-autoscaler/vendor/k8s.io/api/coordination/v1beta1/types.go new file mode 100644 index 0000000000..846f728028 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/api/coordination/v1beta1/types.go @@ -0,0 +1,74 @@ +/* +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 v1beta1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// Lease defines a lease concept. +type Lease struct { + metav1.TypeMeta `json:",inline"` + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Specification of the Lease. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Spec LeaseSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` +} + +// LeaseSpec is a specification of a Lease. +type LeaseSpec struct { + // holderIdentity contains the identity of the holder of a current lease. + // +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 + // observed RenewTime. + // +optional + LeaseDurationSeconds *int32 `json:"leaseDurationSeconds,omitempty" protobuf:"varint,2,opt,name=leaseDurationSeconds"` + // acquireTime is a time when the current lease was acquired. + // +optional + AcquireTime *metav1.MicroTime `json:"acquireTime,omitempty" protobuf:"bytes,3,opt,name=acquireTime"` + // renewTime is a time when the current holder of a lease has last + // updated the lease. + // +optional + RenewTime *metav1.MicroTime `json:"renewTime,omitempty" protobuf:"bytes,4,opt,name=renewTime"` + // leaseTransitions is the number of transitions of a lease between + // holders. + // +optional + LeaseTransitions *int32 `json:"leaseTransitions,omitempty" protobuf:"varint,5,opt,name=leaseTransitions"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// LeaseList is a list of Lease objects. +type LeaseList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is a list of schema objects. + Items []Lease `json:"items" protobuf:"bytes,2,rep,name=items"` +} diff --git a/cluster-autoscaler/vendor/k8s.io/api/coordination/v1beta1/types_swagger_doc_generated.go b/cluster-autoscaler/vendor/k8s.io/api/coordination/v1beta1/types_swagger_doc_generated.go new file mode 100644 index 0000000000..4532d322ab --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/api/coordination/v1beta1/types_swagger_doc_generated.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. +*/ + +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-generated-swagger-docs.sh + +// AUTO-GENERATED FUNCTIONS START HERE. DO NOT EDIT. +var map_Lease = map[string]string{ + "": "Lease defines a lease concept.", + "metadata": "More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "Specification of the Lease. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", +} + +func (Lease) SwaggerDoc() map[string]string { + return map_Lease +} + +var map_LeaseList = map[string]string{ + "": "LeaseList is a list of Lease objects.", + "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "items": "Items is a list of schema objects.", +} + +func (LeaseList) SwaggerDoc() map[string]string { + return map_LeaseList +} + +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.", + "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.", +} + +func (LeaseSpec) SwaggerDoc() map[string]string { + return map_LeaseSpec +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/cluster-autoscaler/vendor/k8s.io/api/coordination/v1beta1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/api/coordination/v1beta1/zz_generated.deepcopy.go new file mode 100644 index 0000000000..a628ac19b5 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/api/coordination/v1beta1/zz_generated.deepcopy.go @@ -0,0 +1,124 @@ +// +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 ( + 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 *Lease) DeepCopyInto(out *Lease) { + *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 Lease. +func (in *Lease) DeepCopy() *Lease { + if in == nil { + return nil + } + out := new(Lease) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Lease) 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 *LeaseList) DeepCopyInto(out *LeaseList) { + *out = *in + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Lease, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LeaseList. +func (in *LeaseList) DeepCopy() *LeaseList { + if in == nil { + return nil + } + out := new(LeaseList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *LeaseList) 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 *LeaseSpec) DeepCopyInto(out *LeaseSpec) { + *out = *in + if in.HolderIdentity != nil { + in, out := &in.HolderIdentity, &out.HolderIdentity + *out = new(string) + **out = **in + } + if in.LeaseDurationSeconds != nil { + in, out := &in.LeaseDurationSeconds, &out.LeaseDurationSeconds + *out = new(int32) + **out = **in + } + if in.AcquireTime != nil { + in, out := &in.AcquireTime, &out.AcquireTime + *out = (*in).DeepCopy() + } + if in.RenewTime != nil { + in, out := &in.RenewTime, &out.RenewTime + *out = (*in).DeepCopy() + } + if in.LeaseTransitions != nil { + in, out := &in.LeaseTransitions, &out.LeaseTransitions + *out = new(int32) + **out = **in + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LeaseSpec. +func (in *LeaseSpec) DeepCopy() *LeaseSpec { + if in == nil { + return nil + } + out := new(LeaseSpec) + in.DeepCopyInto(out) + return out +} diff --git a/cluster-autoscaler/vendor/k8s.io/api/core/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/api/core/v1/BUILD index 369c7e4257..b4b965ad5f 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/core/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/api/core/v1/BUILD @@ -30,16 +30,17 @@ go_library( "types_swagger_doc_generated.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/api/core/v1", importpath = "k8s.io/api/core/v1", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", ], ) @@ -55,9 +56,3 @@ filegroup( srcs = [":package-srcs"], tags = ["automanaged"], ) - -filegroup( - name = "go_default_library_protos", - srcs = ["generated.proto"], - visibility = ["//visibility:public"], -) diff --git a/cluster-autoscaler/vendor/k8s.io/api/core/v1/generated.proto b/cluster-autoscaler/vendor/k8s.io/api/core/v1/generated.proto index b4d75069f7..f0029a8d8b 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/core/v1/generated.proto +++ b/cluster-autoscaler/vendor/k8s.io/api/core/v1/generated.proto @@ -188,7 +188,7 @@ message CSIPersistentVolumeSource { // 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. + // Ex. "ext4", "xfs", "ntfs". // +optional optional string fsType = 4; @@ -3733,6 +3733,7 @@ message ScaleIOPersistentVolumeSource { optional string storagePool = 6; // Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. + // Default is ThinProvisioned. // +optional optional string storageMode = 7; @@ -3742,7 +3743,8 @@ message ScaleIOPersistentVolumeSource { // 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. + // Ex. "ext4", "xfs", "ntfs". + // Default is "xfs" // +optional optional string fsType = 9; @@ -3777,6 +3779,7 @@ message ScaleIOVolumeSource { optional string storagePool = 6; // Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. + // Default is ThinProvisioned. // +optional optional string storageMode = 7; @@ -3786,7 +3789,8 @@ message ScaleIOVolumeSource { // 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. + // Ex. "ext4", "xfs", "ntfs". + // Default is "xfs". // +optional optional string fsType = 9; @@ -4509,7 +4513,7 @@ message VolumeMount { // mountPropagation determines how mounts are propagated from the host // to container and the other way around. - // When not set, MountPropagationHostToContainer is used. + // When not set, MountPropagationNone is used. // This field is beta in 1.10. // +optional optional string mountPropagation = 5; diff --git a/cluster-autoscaler/vendor/k8s.io/api/core/v1/types.go b/cluster-autoscaler/vendor/k8s.io/api/core/v1/types.go index b941e0ac2e..c877726099 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/core/v1/types.go +++ b/cluster-autoscaler/vendor/k8s.io/api/core/v1/types.go @@ -1339,6 +1339,7 @@ type ScaleIOVolumeSource struct { // +optional StoragePool string `json:"storagePool,omitempty" protobuf:"bytes,6,opt,name=storagePool"` // Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. + // Default is ThinProvisioned. // +optional StorageMode string `json:"storageMode,omitempty" protobuf:"bytes,7,opt,name=storageMode"` // The name of a volume already created in the ScaleIO system @@ -1346,7 +1347,8 @@ type ScaleIOVolumeSource struct { VolumeName string `json:"volumeName,omitempty" protobuf:"bytes,8,opt,name=volumeName"` // 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. + // Ex. "ext4", "xfs", "ntfs". + // Default is "xfs". // +optional FSType string `json:"fsType,omitempty" protobuf:"bytes,9,opt,name=fsType"` // Defaults to false (read/write). ReadOnly here will force @@ -1374,6 +1376,7 @@ type ScaleIOPersistentVolumeSource struct { // +optional StoragePool string `json:"storagePool,omitempty" protobuf:"bytes,6,opt,name=storagePool"` // Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. + // Default is ThinProvisioned. // +optional StorageMode string `json:"storageMode,omitempty" protobuf:"bytes,7,opt,name=storageMode"` // The name of a volume already created in the ScaleIO system @@ -1381,7 +1384,8 @@ type ScaleIOPersistentVolumeSource struct { VolumeName string `json:"volumeName,omitempty" protobuf:"bytes,8,opt,name=volumeName"` // 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. + // Ex. "ext4", "xfs", "ntfs". + // Default is "xfs" // +optional FSType string `json:"fsType,omitempty" protobuf:"bytes,9,opt,name=fsType"` // Defaults to false (read/write). ReadOnly here will force @@ -1607,7 +1611,7 @@ type CSIPersistentVolumeSource struct { // 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. + // Ex. "ext4", "xfs", "ntfs". // +optional FSType string `json:"fsType,omitempty" protobuf:"bytes,4,opt,name=fsType"` @@ -1682,7 +1686,7 @@ type VolumeMount struct { SubPath string `json:"subPath,omitempty" protobuf:"bytes,4,opt,name=subPath"` // mountPropagation determines how mounts are propagated from the host // to container and the other way around. - // When not set, MountPropagationHostToContainer is used. + // When not set, MountPropagationNone is used. // This field is beta in 1.10. // +optional MountPropagation *MountPropagationMode `json:"mountPropagation,omitempty" protobuf:"bytes,5,opt,name=mountPropagation,casttype=MountPropagationMode"` diff --git a/cluster-autoscaler/vendor/k8s.io/api/core/v1/types_swagger_doc_generated.go b/cluster-autoscaler/vendor/k8s.io/api/core/v1/types_swagger_doc_generated.go index 5b4e173db2..dcff6a1f47 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/core/v1/types_swagger_doc_generated.go +++ b/cluster-autoscaler/vendor/k8s.io/api/core/v1/types_swagger_doc_generated.go @@ -121,7 +121,7 @@ var map_CSIPersistentVolumeSource = map[string]string{ "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": "Optional: The value to pass to ControllerPublishVolumeRequest. Defaults to false (read/write).", - "fsType": "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.", + "fsType": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\".", "volumeAttributes": "Attributes of the volume to publish.", "controllerPublishSecretRef": "ControllerPublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI ControllerPublishVolume and ControllerUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secrets are passed.", "nodeStageSecretRef": "NodeStageSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodeStageVolume and NodeStageVolume and NodeUnstageVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secrets are passed.", @@ -1854,9 +1854,9 @@ var map_ScaleIOPersistentVolumeSource = map[string]string{ "sslEnabled": "Flag to enable/disable SSL communication with Gateway, default false", "protectionDomain": "The name of the ScaleIO Protection Domain for the configured storage.", "storagePool": "The ScaleIO Storage Pool associated with the protection domain.", - "storageMode": "Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.", + "storageMode": "Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.", "volumeName": "The name of a volume already created in the ScaleIO system that is associated with this volume source.", - "fsType": "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.", + "fsType": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Default is \"xfs\"", "readOnly": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", } @@ -1872,9 +1872,9 @@ var map_ScaleIOVolumeSource = map[string]string{ "sslEnabled": "Flag to enable/disable SSL communication with Gateway, default false", "protectionDomain": "The name of the ScaleIO Protection Domain for the configured storage.", "storagePool": "The ScaleIO Storage Pool associated with the protection domain.", - "storageMode": "Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.", + "storageMode": "Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.", "volumeName": "The name of a volume already created in the ScaleIO system that is associated with this volume source.", - "fsType": "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.", + "fsType": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Default is \"xfs\".", "readOnly": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", } @@ -2230,7 +2230,7 @@ var map_VolumeMount = map[string]string{ "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, MountPropagationHostToContainer is used. This field is beta in 1.10.", + "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.", } func (VolumeMount) SwaggerDoc() map[string]string { diff --git a/cluster-autoscaler/vendor/k8s.io/api/core/v1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/api/core/v1/zz_generated.deepcopy.go index 0501bbcb50..5add0a7ec2 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/core/v1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/api/core/v1/zz_generated.deepcopy.go @@ -21,7 +21,7 @@ limitations under the License. package v1 import ( - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtime "k8s.io/apimachinery/pkg/runtime" types "k8s.io/apimachinery/pkg/types" ) @@ -47,30 +47,18 @@ func (in *Affinity) DeepCopyInto(out *Affinity) { *out = *in if in.NodeAffinity != nil { in, out := &in.NodeAffinity, &out.NodeAffinity - if *in == nil { - *out = nil - } else { - *out = new(NodeAffinity) - (*in).DeepCopyInto(*out) - } + *out = new(NodeAffinity) + (*in).DeepCopyInto(*out) } if in.PodAffinity != nil { in, out := &in.PodAffinity, &out.PodAffinity - if *in == nil { - *out = nil - } else { - *out = new(PodAffinity) - (*in).DeepCopyInto(*out) - } + *out = new(PodAffinity) + (*in).DeepCopyInto(*out) } if in.PodAntiAffinity != nil { in, out := &in.PodAntiAffinity, &out.PodAntiAffinity - if *in == nil { - *out = nil - } else { - *out = new(PodAntiAffinity) - (*in).DeepCopyInto(*out) - } + *out = new(PodAntiAffinity) + (*in).DeepCopyInto(*out) } return } @@ -129,39 +117,23 @@ func (in *AzureDiskVolumeSource) DeepCopyInto(out *AzureDiskVolumeSource) { *out = *in if in.CachingMode != nil { in, out := &in.CachingMode, &out.CachingMode - if *in == nil { - *out = nil - } else { - *out = new(AzureDataDiskCachingMode) - **out = **in - } + *out = new(AzureDataDiskCachingMode) + **out = **in } if in.FSType != nil { in, out := &in.FSType, &out.FSType - if *in == nil { - *out = nil - } else { - *out = new(string) - **out = **in - } + *out = new(string) + **out = **in } if in.ReadOnly != nil { in, out := &in.ReadOnly, &out.ReadOnly - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } if in.Kind != nil { in, out := &in.Kind, &out.Kind - if *in == nil { - *out = nil - } else { - *out = new(AzureDataDiskKind) - **out = **in - } + *out = new(AzureDataDiskKind) + **out = **in } return } @@ -181,12 +153,8 @@ func (in *AzureFilePersistentVolumeSource) DeepCopyInto(out *AzureFilePersistent *out = *in if in.SecretNamespace != nil { in, out := &in.SecretNamespace, &out.SecretNamespace - if *in == nil { - *out = nil - } else { - *out = new(string) - **out = **in - } + *out = new(string) + **out = **in } return } @@ -256,30 +224,18 @@ func (in *CSIPersistentVolumeSource) DeepCopyInto(out *CSIPersistentVolumeSource } if in.ControllerPublishSecretRef != nil { in, out := &in.ControllerPublishSecretRef, &out.ControllerPublishSecretRef - if *in == nil { - *out = nil - } else { - *out = new(SecretReference) - **out = **in - } + *out = new(SecretReference) + **out = **in } if in.NodeStageSecretRef != nil { in, out := &in.NodeStageSecretRef, &out.NodeStageSecretRef - if *in == nil { - *out = nil - } else { - *out = new(SecretReference) - **out = **in - } + *out = new(SecretReference) + **out = **in } if in.NodePublishSecretRef != nil { in, out := &in.NodePublishSecretRef, &out.NodePublishSecretRef - if *in == nil { - *out = nil - } else { - *out = new(SecretReference) - **out = **in - } + *out = new(SecretReference) + **out = **in } return } @@ -330,12 +286,8 @@ func (in *CephFSPersistentVolumeSource) DeepCopyInto(out *CephFSPersistentVolume } if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - if *in == nil { - *out = nil - } else { - *out = new(SecretReference) - **out = **in - } + *out = new(SecretReference) + **out = **in } return } @@ -360,12 +312,8 @@ func (in *CephFSVolumeSource) DeepCopyInto(out *CephFSVolumeSource) { } if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - if *in == nil { - *out = nil - } else { - *out = new(LocalObjectReference) - **out = **in - } + *out = new(LocalObjectReference) + **out = **in } return } @@ -385,12 +333,8 @@ func (in *CinderPersistentVolumeSource) DeepCopyInto(out *CinderPersistentVolume *out = *in if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - if *in == nil { - *out = nil - } else { - *out = new(SecretReference) - **out = **in - } + *out = new(SecretReference) + **out = **in } return } @@ -410,12 +354,8 @@ func (in *CinderVolumeSource) DeepCopyInto(out *CinderVolumeSource) { *out = *in if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - if *in == nil { - *out = nil - } else { - *out = new(LocalObjectReference) - **out = **in - } + *out = new(LocalObjectReference) + **out = **in } return } @@ -435,12 +375,8 @@ func (in *ClientIPConfig) DeepCopyInto(out *ClientIPConfig) { *out = *in if in.TimeoutSeconds != nil { in, out := &in.TimeoutSeconds, &out.TimeoutSeconds - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } return } @@ -551,12 +487,15 @@ func (in *ConfigMap) DeepCopyInto(out *ConfigMap) { in, out := &in.BinaryData, &out.BinaryData *out = make(map[string][]byte, len(*in)) for key, val := range *in { + var outVal []byte if val == nil { (*out)[key] = nil } else { - (*out)[key] = make([]byte, len(val)) - copy((*out)[key], val) + in, out := &val, &outVal + *out = make([]byte, len(*in)) + copy(*out, *in) } + (*out)[key] = outVal } } return @@ -586,12 +525,8 @@ func (in *ConfigMapEnvSource) DeepCopyInto(out *ConfigMapEnvSource) { out.LocalObjectReference = in.LocalObjectReference if in.Optional != nil { in, out := &in.Optional, &out.Optional - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } return } @@ -612,12 +547,8 @@ func (in *ConfigMapKeySelector) DeepCopyInto(out *ConfigMapKeySelector) { out.LocalObjectReference = in.LocalObjectReference if in.Optional != nil { in, out := &in.Optional, &out.Optional - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } return } @@ -694,12 +625,8 @@ func (in *ConfigMapProjection) DeepCopyInto(out *ConfigMapProjection) { } if in.Optional != nil { in, out := &in.Optional, &out.Optional - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } return } @@ -727,21 +654,13 @@ func (in *ConfigMapVolumeSource) DeepCopyInto(out *ConfigMapVolumeSource) { } if in.DefaultMode != nil { in, out := &in.DefaultMode, &out.DefaultMode - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.Optional != nil { in, out := &in.Optional, &out.Optional - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } return } @@ -803,39 +722,23 @@ func (in *Container) DeepCopyInto(out *Container) { } if in.LivenessProbe != nil { in, out := &in.LivenessProbe, &out.LivenessProbe - if *in == nil { - *out = nil - } else { - *out = new(Probe) - (*in).DeepCopyInto(*out) - } + *out = new(Probe) + (*in).DeepCopyInto(*out) } if in.ReadinessProbe != nil { in, out := &in.ReadinessProbe, &out.ReadinessProbe - if *in == nil { - *out = nil - } else { - *out = new(Probe) - (*in).DeepCopyInto(*out) - } + *out = new(Probe) + (*in).DeepCopyInto(*out) } if in.Lifecycle != nil { in, out := &in.Lifecycle, &out.Lifecycle - if *in == nil { - *out = nil - } else { - *out = new(Lifecycle) - (*in).DeepCopyInto(*out) - } + *out = new(Lifecycle) + (*in).DeepCopyInto(*out) } if in.SecurityContext != nil { in, out := &in.SecurityContext, &out.SecurityContext - if *in == nil { - *out = nil - } else { - *out = new(SecurityContext) - (*in).DeepCopyInto(*out) - } + *out = new(SecurityContext) + (*in).DeepCopyInto(*out) } return } @@ -892,30 +795,18 @@ func (in *ContainerState) DeepCopyInto(out *ContainerState) { *out = *in if in.Waiting != nil { in, out := &in.Waiting, &out.Waiting - if *in == nil { - *out = nil - } else { - *out = new(ContainerStateWaiting) - **out = **in - } + *out = new(ContainerStateWaiting) + **out = **in } if in.Running != nil { in, out := &in.Running, &out.Running - if *in == nil { - *out = nil - } else { - *out = new(ContainerStateRunning) - (*in).DeepCopyInto(*out) - } + *out = new(ContainerStateRunning) + (*in).DeepCopyInto(*out) } if in.Terminated != nil { in, out := &in.Terminated, &out.Terminated - if *in == nil { - *out = nil - } else { - *out = new(ContainerStateTerminated) - (*in).DeepCopyInto(*out) - } + *out = new(ContainerStateTerminated) + (*in).DeepCopyInto(*out) } return } @@ -1043,30 +934,18 @@ func (in *DownwardAPIVolumeFile) DeepCopyInto(out *DownwardAPIVolumeFile) { *out = *in if in.FieldRef != nil { in, out := &in.FieldRef, &out.FieldRef - if *in == nil { - *out = nil - } else { - *out = new(ObjectFieldSelector) - **out = **in - } + *out = new(ObjectFieldSelector) + **out = **in } if in.ResourceFieldRef != nil { in, out := &in.ResourceFieldRef, &out.ResourceFieldRef - if *in == nil { - *out = nil - } else { - *out = new(ResourceFieldSelector) - (*in).DeepCopyInto(*out) - } + *out = new(ResourceFieldSelector) + (*in).DeepCopyInto(*out) } if in.Mode != nil { in, out := &in.Mode, &out.Mode - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } return } @@ -1093,12 +972,8 @@ func (in *DownwardAPIVolumeSource) DeepCopyInto(out *DownwardAPIVolumeSource) { } if in.DefaultMode != nil { in, out := &in.DefaultMode, &out.DefaultMode - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } return } @@ -1118,12 +993,8 @@ func (in *EmptyDirVolumeSource) DeepCopyInto(out *EmptyDirVolumeSource) { *out = *in if in.SizeLimit != nil { in, out := &in.SizeLimit, &out.SizeLimit - if *in == nil { - *out = nil - } else { - x := (*in).DeepCopy() - *out = &x - } + x := (*in).DeepCopy() + *out = &x } return } @@ -1143,21 +1014,13 @@ func (in *EndpointAddress) DeepCopyInto(out *EndpointAddress) { *out = *in if in.NodeName != nil { in, out := &in.NodeName, &out.NodeName - if *in == nil { - *out = nil - } else { - *out = new(string) - **out = **in - } + *out = new(string) + **out = **in } if in.TargetRef != nil { in, out := &in.TargetRef, &out.TargetRef - if *in == nil { - *out = nil - } else { - *out = new(ObjectReference) - **out = **in - } + *out = new(ObjectReference) + **out = **in } return } @@ -1294,21 +1157,13 @@ func (in *EnvFromSource) DeepCopyInto(out *EnvFromSource) { *out = *in if in.ConfigMapRef != nil { in, out := &in.ConfigMapRef, &out.ConfigMapRef - if *in == nil { - *out = nil - } else { - *out = new(ConfigMapEnvSource) - (*in).DeepCopyInto(*out) - } + *out = new(ConfigMapEnvSource) + (*in).DeepCopyInto(*out) } if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - if *in == nil { - *out = nil - } else { - *out = new(SecretEnvSource) - (*in).DeepCopyInto(*out) - } + *out = new(SecretEnvSource) + (*in).DeepCopyInto(*out) } return } @@ -1328,12 +1183,8 @@ func (in *EnvVar) DeepCopyInto(out *EnvVar) { *out = *in if in.ValueFrom != nil { in, out := &in.ValueFrom, &out.ValueFrom - if *in == nil { - *out = nil - } else { - *out = new(EnvVarSource) - (*in).DeepCopyInto(*out) - } + *out = new(EnvVarSource) + (*in).DeepCopyInto(*out) } return } @@ -1353,39 +1204,23 @@ func (in *EnvVarSource) DeepCopyInto(out *EnvVarSource) { *out = *in if in.FieldRef != nil { in, out := &in.FieldRef, &out.FieldRef - if *in == nil { - *out = nil - } else { - *out = new(ObjectFieldSelector) - **out = **in - } + *out = new(ObjectFieldSelector) + **out = **in } if in.ResourceFieldRef != nil { in, out := &in.ResourceFieldRef, &out.ResourceFieldRef - if *in == nil { - *out = nil - } else { - *out = new(ResourceFieldSelector) - (*in).DeepCopyInto(*out) - } + *out = new(ResourceFieldSelector) + (*in).DeepCopyInto(*out) } if in.ConfigMapKeyRef != nil { in, out := &in.ConfigMapKeyRef, &out.ConfigMapKeyRef - if *in == nil { - *out = nil - } else { - *out = new(ConfigMapKeySelector) - (*in).DeepCopyInto(*out) - } + *out = new(ConfigMapKeySelector) + (*in).DeepCopyInto(*out) } if in.SecretKeyRef != nil { in, out := &in.SecretKeyRef, &out.SecretKeyRef - if *in == nil { - *out = nil - } else { - *out = new(SecretKeySelector) - (*in).DeepCopyInto(*out) - } + *out = new(SecretKeySelector) + (*in).DeepCopyInto(*out) } return } @@ -1412,21 +1247,13 @@ func (in *Event) DeepCopyInto(out *Event) { in.EventTime.DeepCopyInto(&out.EventTime) if in.Series != nil { in, out := &in.Series, &out.Series - if *in == nil { - *out = nil - } else { - *out = new(EventSeries) - (*in).DeepCopyInto(*out) - } + *out = new(EventSeries) + (*in).DeepCopyInto(*out) } if in.Related != nil { in, out := &in.Related, &out.Related - if *in == nil { - *out = nil - } else { - *out = new(ObjectReference) - **out = **in - } + *out = new(ObjectReference) + **out = **in } return } @@ -1546,12 +1373,8 @@ func (in *FCVolumeSource) DeepCopyInto(out *FCVolumeSource) { } if in.Lun != nil { in, out := &in.Lun, &out.Lun - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.WWIDs != nil { in, out := &in.WWIDs, &out.WWIDs @@ -1576,12 +1399,8 @@ func (in *FlexPersistentVolumeSource) DeepCopyInto(out *FlexPersistentVolumeSour *out = *in if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - if *in == nil { - *out = nil - } else { - *out = new(SecretReference) - **out = **in - } + *out = new(SecretReference) + **out = **in } if in.Options != nil { in, out := &in.Options, &out.Options @@ -1608,12 +1427,8 @@ func (in *FlexVolumeSource) DeepCopyInto(out *FlexVolumeSource) { *out = *in if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - if *in == nil { - *out = nil - } else { - *out = new(LocalObjectReference) - **out = **in - } + *out = new(LocalObjectReference) + **out = **in } if in.Options != nil { in, out := &in.Options, &out.Options @@ -1742,30 +1557,18 @@ func (in *Handler) DeepCopyInto(out *Handler) { *out = *in if in.Exec != nil { in, out := &in.Exec, &out.Exec - if *in == nil { - *out = nil - } else { - *out = new(ExecAction) - (*in).DeepCopyInto(*out) - } + *out = new(ExecAction) + (*in).DeepCopyInto(*out) } if in.HTTPGet != nil { in, out := &in.HTTPGet, &out.HTTPGet - if *in == nil { - *out = nil - } else { - *out = new(HTTPGetAction) - (*in).DeepCopyInto(*out) - } + *out = new(HTTPGetAction) + (*in).DeepCopyInto(*out) } if in.TCPSocket != nil { in, out := &in.TCPSocket, &out.TCPSocket - if *in == nil { - *out = nil - } else { - *out = new(TCPSocketAction) - **out = **in - } + *out = new(TCPSocketAction) + **out = **in } return } @@ -1806,12 +1609,8 @@ func (in *HostPathVolumeSource) DeepCopyInto(out *HostPathVolumeSource) { *out = *in if in.Type != nil { in, out := &in.Type, &out.Type - if *in == nil { - *out = nil - } else { - *out = new(HostPathType) - **out = **in - } + *out = new(HostPathType) + **out = **in } return } @@ -1836,21 +1635,13 @@ func (in *ISCSIPersistentVolumeSource) DeepCopyInto(out *ISCSIPersistentVolumeSo } if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - if *in == nil { - *out = nil - } else { - *out = new(SecretReference) - **out = **in - } + *out = new(SecretReference) + **out = **in } if in.InitiatorName != nil { in, out := &in.InitiatorName, &out.InitiatorName - if *in == nil { - *out = nil - } else { - *out = new(string) - **out = **in - } + *out = new(string) + **out = **in } return } @@ -1875,21 +1666,13 @@ func (in *ISCSIVolumeSource) DeepCopyInto(out *ISCSIVolumeSource) { } if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - if *in == nil { - *out = nil - } else { - *out = new(LocalObjectReference) - **out = **in - } + *out = new(LocalObjectReference) + **out = **in } if in.InitiatorName != nil { in, out := &in.InitiatorName, &out.InitiatorName - if *in == nil { - *out = nil - } else { - *out = new(string) - **out = **in - } + *out = new(string) + **out = **in } return } @@ -1909,12 +1692,8 @@ func (in *KeyToPath) DeepCopyInto(out *KeyToPath) { *out = *in if in.Mode != nil { in, out := &in.Mode, &out.Mode - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } return } @@ -1934,21 +1713,13 @@ func (in *Lifecycle) DeepCopyInto(out *Lifecycle) { *out = *in if in.PostStart != nil { in, out := &in.PostStart, &out.PostStart - if *in == nil { - *out = nil - } else { - *out = new(Handler) - (*in).DeepCopyInto(*out) - } + *out = new(Handler) + (*in).DeepCopyInto(*out) } if in.PreStop != nil { in, out := &in.PreStop, &out.PreStop - if *in == nil { - *out = nil - } else { - *out = new(Handler) - (*in).DeepCopyInto(*out) - } + *out = new(Handler) + (*in).DeepCopyInto(*out) } return } @@ -2362,12 +2133,8 @@ func (in *NodeAffinity) DeepCopyInto(out *NodeAffinity) { *out = *in if in.RequiredDuringSchedulingIgnoredDuringExecution != nil { in, out := &in.RequiredDuringSchedulingIgnoredDuringExecution, &out.RequiredDuringSchedulingIgnoredDuringExecution - if *in == nil { - *out = nil - } else { - *out = new(NodeSelector) - (*in).DeepCopyInto(*out) - } + *out = new(NodeSelector) + (*in).DeepCopyInto(*out) } if in.PreferredDuringSchedulingIgnoredDuringExecution != nil { in, out := &in.PreferredDuringSchedulingIgnoredDuringExecution, &out.PreferredDuringSchedulingIgnoredDuringExecution @@ -2412,12 +2179,8 @@ func (in *NodeConfigSource) DeepCopyInto(out *NodeConfigSource) { *out = *in if in.ConfigMap != nil { in, out := &in.ConfigMap, &out.ConfigMap - if *in == nil { - *out = nil - } else { - *out = new(ConfigMapNodeConfigSource) - **out = **in - } + *out = new(ConfigMapNodeConfigSource) + **out = **in } return } @@ -2437,30 +2200,18 @@ func (in *NodeConfigStatus) DeepCopyInto(out *NodeConfigStatus) { *out = *in if in.Assigned != nil { in, out := &in.Assigned, &out.Assigned - if *in == nil { - *out = nil - } else { - *out = new(NodeConfigSource) - (*in).DeepCopyInto(*out) - } + *out = new(NodeConfigSource) + (*in).DeepCopyInto(*out) } if in.Active != nil { in, out := &in.Active, &out.Active - if *in == nil { - *out = nil - } else { - *out = new(NodeConfigSource) - (*in).DeepCopyInto(*out) - } + *out = new(NodeConfigSource) + (*in).DeepCopyInto(*out) } if in.LastKnownGood != nil { in, out := &in.LastKnownGood, &out.LastKnownGood - if *in == nil { - *out = nil - } else { - *out = new(NodeConfigSource) - (*in).DeepCopyInto(*out) - } + *out = new(NodeConfigSource) + (*in).DeepCopyInto(*out) } return } @@ -2659,12 +2410,8 @@ func (in *NodeSpec) DeepCopyInto(out *NodeSpec) { } if in.ConfigSource != nil { in, out := &in.ConfigSource, &out.ConfigSource - if *in == nil { - *out = nil - } else { - *out = new(NodeConfigSource) - (*in).DeepCopyInto(*out) - } + *out = new(NodeConfigSource) + (*in).DeepCopyInto(*out) } return } @@ -2729,12 +2476,8 @@ func (in *NodeStatus) DeepCopyInto(out *NodeStatus) { } if in.Config != nil { in, out := &in.Config, &out.Config - if *in == nil { - *out = nil - } else { - *out = new(NodeConfigStatus) - (*in).DeepCopyInto(*out) - } + *out = new(NodeConfigStatus) + (*in).DeepCopyInto(*out) } return } @@ -2922,31 +2665,19 @@ func (in *PersistentVolumeClaimSpec) DeepCopyInto(out *PersistentVolumeClaimSpec } if in.Selector != nil { in, out := &in.Selector, &out.Selector - if *in == nil { - *out = nil - } else { - *out = new(meta_v1.LabelSelector) - (*in).DeepCopyInto(*out) - } + *out = new(metav1.LabelSelector) + (*in).DeepCopyInto(*out) } in.Resources.DeepCopyInto(&out.Resources) if in.StorageClassName != nil { in, out := &in.StorageClassName, &out.StorageClassName - if *in == nil { - *out = nil - } else { - *out = new(string) - **out = **in - } + *out = new(string) + **out = **in } if in.VolumeMode != nil { in, out := &in.VolumeMode, &out.VolumeMode - if *in == nil { - *out = nil - } else { - *out = new(PersistentVolumeMode) - **out = **in - } + *out = new(PersistentVolumeMode) + **out = **in } return } @@ -3050,201 +2781,113 @@ func (in *PersistentVolumeSource) DeepCopyInto(out *PersistentVolumeSource) { *out = *in if in.GCEPersistentDisk != nil { in, out := &in.GCEPersistentDisk, &out.GCEPersistentDisk - if *in == nil { - *out = nil - } else { - *out = new(GCEPersistentDiskVolumeSource) - **out = **in - } + *out = new(GCEPersistentDiskVolumeSource) + **out = **in } if in.AWSElasticBlockStore != nil { in, out := &in.AWSElasticBlockStore, &out.AWSElasticBlockStore - if *in == nil { - *out = nil - } else { - *out = new(AWSElasticBlockStoreVolumeSource) - **out = **in - } + *out = new(AWSElasticBlockStoreVolumeSource) + **out = **in } if in.HostPath != nil { in, out := &in.HostPath, &out.HostPath - if *in == nil { - *out = nil - } else { - *out = new(HostPathVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(HostPathVolumeSource) + (*in).DeepCopyInto(*out) } if in.Glusterfs != nil { in, out := &in.Glusterfs, &out.Glusterfs - if *in == nil { - *out = nil - } else { - *out = new(GlusterfsVolumeSource) - **out = **in - } + *out = new(GlusterfsVolumeSource) + **out = **in } if in.NFS != nil { in, out := &in.NFS, &out.NFS - if *in == nil { - *out = nil - } else { - *out = new(NFSVolumeSource) - **out = **in - } + *out = new(NFSVolumeSource) + **out = **in } if in.RBD != nil { in, out := &in.RBD, &out.RBD - if *in == nil { - *out = nil - } else { - *out = new(RBDPersistentVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(RBDPersistentVolumeSource) + (*in).DeepCopyInto(*out) } if in.ISCSI != nil { in, out := &in.ISCSI, &out.ISCSI - if *in == nil { - *out = nil - } else { - *out = new(ISCSIPersistentVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(ISCSIPersistentVolumeSource) + (*in).DeepCopyInto(*out) } if in.Cinder != nil { in, out := &in.Cinder, &out.Cinder - if *in == nil { - *out = nil - } else { - *out = new(CinderPersistentVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(CinderPersistentVolumeSource) + (*in).DeepCopyInto(*out) } if in.CephFS != nil { in, out := &in.CephFS, &out.CephFS - if *in == nil { - *out = nil - } else { - *out = new(CephFSPersistentVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(CephFSPersistentVolumeSource) + (*in).DeepCopyInto(*out) } if in.FC != nil { in, out := &in.FC, &out.FC - if *in == nil { - *out = nil - } else { - *out = new(FCVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(FCVolumeSource) + (*in).DeepCopyInto(*out) } if in.Flocker != nil { in, out := &in.Flocker, &out.Flocker - if *in == nil { - *out = nil - } else { - *out = new(FlockerVolumeSource) - **out = **in - } + *out = new(FlockerVolumeSource) + **out = **in } if in.FlexVolume != nil { in, out := &in.FlexVolume, &out.FlexVolume - if *in == nil { - *out = nil - } else { - *out = new(FlexPersistentVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(FlexPersistentVolumeSource) + (*in).DeepCopyInto(*out) } if in.AzureFile != nil { in, out := &in.AzureFile, &out.AzureFile - if *in == nil { - *out = nil - } else { - *out = new(AzureFilePersistentVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(AzureFilePersistentVolumeSource) + (*in).DeepCopyInto(*out) } if in.VsphereVolume != nil { in, out := &in.VsphereVolume, &out.VsphereVolume - if *in == nil { - *out = nil - } else { - *out = new(VsphereVirtualDiskVolumeSource) - **out = **in - } + *out = new(VsphereVirtualDiskVolumeSource) + **out = **in } if in.Quobyte != nil { in, out := &in.Quobyte, &out.Quobyte - if *in == nil { - *out = nil - } else { - *out = new(QuobyteVolumeSource) - **out = **in - } + *out = new(QuobyteVolumeSource) + **out = **in } if in.AzureDisk != nil { in, out := &in.AzureDisk, &out.AzureDisk - if *in == nil { - *out = nil - } else { - *out = new(AzureDiskVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(AzureDiskVolumeSource) + (*in).DeepCopyInto(*out) } if in.PhotonPersistentDisk != nil { in, out := &in.PhotonPersistentDisk, &out.PhotonPersistentDisk - if *in == nil { - *out = nil - } else { - *out = new(PhotonPersistentDiskVolumeSource) - **out = **in - } + *out = new(PhotonPersistentDiskVolumeSource) + **out = **in } if in.PortworxVolume != nil { in, out := &in.PortworxVolume, &out.PortworxVolume - if *in == nil { - *out = nil - } else { - *out = new(PortworxVolumeSource) - **out = **in - } + *out = new(PortworxVolumeSource) + **out = **in } if in.ScaleIO != nil { in, out := &in.ScaleIO, &out.ScaleIO - if *in == nil { - *out = nil - } else { - *out = new(ScaleIOPersistentVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(ScaleIOPersistentVolumeSource) + (*in).DeepCopyInto(*out) } if in.Local != nil { in, out := &in.Local, &out.Local - if *in == nil { - *out = nil - } else { - *out = new(LocalVolumeSource) - **out = **in - } + *out = new(LocalVolumeSource) + **out = **in } if in.StorageOS != nil { in, out := &in.StorageOS, &out.StorageOS - if *in == nil { - *out = nil - } else { - *out = new(StorageOSPersistentVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(StorageOSPersistentVolumeSource) + (*in).DeepCopyInto(*out) } if in.CSI != nil { in, out := &in.CSI, &out.CSI - if *in == nil { - *out = nil - } else { - *out = new(CSIPersistentVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(CSIPersistentVolumeSource) + (*in).DeepCopyInto(*out) } return } @@ -3277,12 +2920,8 @@ func (in *PersistentVolumeSpec) DeepCopyInto(out *PersistentVolumeSpec) { } if in.ClaimRef != nil { in, out := &in.ClaimRef, &out.ClaimRef - if *in == nil { - *out = nil - } else { - *out = new(ObjectReference) - **out = **in - } + *out = new(ObjectReference) + **out = **in } if in.MountOptions != nil { in, out := &in.MountOptions, &out.MountOptions @@ -3291,21 +2930,13 @@ func (in *PersistentVolumeSpec) DeepCopyInto(out *PersistentVolumeSpec) { } if in.VolumeMode != nil { in, out := &in.VolumeMode, &out.VolumeMode - if *in == nil { - *out = nil - } else { - *out = new(PersistentVolumeMode) - **out = **in - } + *out = new(PersistentVolumeMode) + **out = **in } if in.NodeAffinity != nil { in, out := &in.NodeAffinity, &out.NodeAffinity - if *in == nil { - *out = nil - } else { - *out = new(VolumeNodeAffinity) - (*in).DeepCopyInto(*out) - } + *out = new(VolumeNodeAffinity) + (*in).DeepCopyInto(*out) } return } @@ -3415,12 +3046,8 @@ func (in *PodAffinityTerm) DeepCopyInto(out *PodAffinityTerm) { *out = *in if in.LabelSelector != nil { in, out := &in.LabelSelector, &out.LabelSelector - if *in == nil { - *out = nil - } else { - *out = new(meta_v1.LabelSelector) - (*in).DeepCopyInto(*out) - } + *out = new(metav1.LabelSelector) + (*in).DeepCopyInto(*out) } if in.Namespaces != nil { in, out := &in.Namespaces, &out.Namespaces @@ -3551,12 +3178,8 @@ func (in *PodDNSConfigOption) DeepCopyInto(out *PodDNSConfigOption) { *out = *in if in.Value != nil { in, out := &in.Value, &out.Value - if *in == nil { - *out = nil - } else { - *out = new(string) - **out = **in - } + *out = new(string) + **out = **in } return } @@ -3640,38 +3263,22 @@ func (in *PodLogOptions) DeepCopyInto(out *PodLogOptions) { out.TypeMeta = in.TypeMeta if in.SinceSeconds != nil { in, out := &in.SinceSeconds, &out.SinceSeconds - if *in == nil { - *out = nil - } else { - *out = new(int64) - **out = **in - } + *out = new(int64) + **out = **in } if in.SinceTime != nil { in, out := &in.SinceTime, &out.SinceTime - if *in == nil { - *out = nil - } else { - *out = (*in).DeepCopy() - } + *out = (*in).DeepCopy() } if in.TailLines != nil { in, out := &in.TailLines, &out.TailLines - if *in == nil { - *out = nil - } else { - *out = new(int64) - **out = **in - } + *out = new(int64) + **out = **in } if in.LimitBytes != nil { in, out := &in.LimitBytes, &out.LimitBytes - if *in == nil { - *out = nil - } else { - *out = new(int64) - **out = **in - } + *out = new(int64) + **out = **in } return } @@ -3770,39 +3377,23 @@ func (in *PodSecurityContext) DeepCopyInto(out *PodSecurityContext) { *out = *in if in.SELinuxOptions != nil { in, out := &in.SELinuxOptions, &out.SELinuxOptions - if *in == nil { - *out = nil - } else { - *out = new(SELinuxOptions) - **out = **in - } + *out = new(SELinuxOptions) + **out = **in } if in.RunAsUser != nil { in, out := &in.RunAsUser, &out.RunAsUser - if *in == nil { - *out = nil - } else { - *out = new(int64) - **out = **in - } + *out = new(int64) + **out = **in } if in.RunAsGroup != nil { in, out := &in.RunAsGroup, &out.RunAsGroup - if *in == nil { - *out = nil - } else { - *out = new(int64) - **out = **in - } + *out = new(int64) + **out = **in } if in.RunAsNonRoot != nil { in, out := &in.RunAsNonRoot, &out.RunAsNonRoot - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } if in.SupplementalGroups != nil { in, out := &in.SupplementalGroups, &out.SupplementalGroups @@ -3811,12 +3402,8 @@ func (in *PodSecurityContext) DeepCopyInto(out *PodSecurityContext) { } if in.FSGroup != nil { in, out := &in.FSGroup, &out.FSGroup - if *in == nil { - *out = nil - } else { - *out = new(int64) - **out = **in - } + *out = new(int64) + **out = **in } if in.Sysctls != nil { in, out := &in.Sysctls, &out.Sysctls @@ -3841,12 +3428,8 @@ func (in *PodSignature) DeepCopyInto(out *PodSignature) { *out = *in if in.PodController != nil { in, out := &in.PodController, &out.PodController - if *in == nil { - *out = nil - } else { - *out = new(meta_v1.OwnerReference) - (*in).DeepCopyInto(*out) - } + *out = new(metav1.OwnerReference) + (*in).DeepCopyInto(*out) } return } @@ -3887,21 +3470,13 @@ func (in *PodSpec) DeepCopyInto(out *PodSpec) { } if in.TerminationGracePeriodSeconds != nil { in, out := &in.TerminationGracePeriodSeconds, &out.TerminationGracePeriodSeconds - if *in == nil { - *out = nil - } else { - *out = new(int64) - **out = **in - } + *out = new(int64) + **out = **in } if in.ActiveDeadlineSeconds != nil { in, out := &in.ActiveDeadlineSeconds, &out.ActiveDeadlineSeconds - if *in == nil { - *out = nil - } else { - *out = new(int64) - **out = **in - } + *out = new(int64) + **out = **in } if in.NodeSelector != nil { in, out := &in.NodeSelector, &out.NodeSelector @@ -3912,30 +3487,18 @@ func (in *PodSpec) DeepCopyInto(out *PodSpec) { } if in.AutomountServiceAccountToken != nil { in, out := &in.AutomountServiceAccountToken, &out.AutomountServiceAccountToken - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } if in.ShareProcessNamespace != nil { in, out := &in.ShareProcessNamespace, &out.ShareProcessNamespace - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } if in.SecurityContext != nil { in, out := &in.SecurityContext, &out.SecurityContext - if *in == nil { - *out = nil - } else { - *out = new(PodSecurityContext) - (*in).DeepCopyInto(*out) - } + *out = new(PodSecurityContext) + (*in).DeepCopyInto(*out) } if in.ImagePullSecrets != nil { in, out := &in.ImagePullSecrets, &out.ImagePullSecrets @@ -3944,12 +3507,8 @@ func (in *PodSpec) DeepCopyInto(out *PodSpec) { } if in.Affinity != nil { in, out := &in.Affinity, &out.Affinity - if *in == nil { - *out = nil - } else { - *out = new(Affinity) - (*in).DeepCopyInto(*out) - } + *out = new(Affinity) + (*in).DeepCopyInto(*out) } if in.Tolerations != nil { in, out := &in.Tolerations, &out.Tolerations @@ -3967,21 +3526,13 @@ func (in *PodSpec) DeepCopyInto(out *PodSpec) { } if in.Priority != nil { in, out := &in.Priority, &out.Priority - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.DNSConfig != nil { in, out := &in.DNSConfig, &out.DNSConfig - if *in == nil { - *out = nil - } else { - *out = new(PodDNSConfig) - (*in).DeepCopyInto(*out) - } + *out = new(PodDNSConfig) + (*in).DeepCopyInto(*out) } if in.ReadinessGates != nil { in, out := &in.ReadinessGates, &out.ReadinessGates @@ -4013,11 +3564,7 @@ func (in *PodStatus) DeepCopyInto(out *PodStatus) { } if in.StartTime != nil { in, out := &in.StartTime, &out.StartTime - if *in == nil { - *out = nil - } else { - *out = (*in).DeepCopy() - } + *out = (*in).DeepCopy() } if in.InitContainerStatuses != nil { in, out := &in.InitContainerStatuses, &out.InitContainerStatuses @@ -4172,12 +3719,8 @@ func (in *Preconditions) DeepCopyInto(out *Preconditions) { *out = *in if in.UID != nil { in, out := &in.UID, &out.UID - if *in == nil { - *out = nil - } else { - *out = new(types.UID) - **out = **in - } + *out = new(types.UID) + **out = **in } return } @@ -4256,12 +3799,8 @@ func (in *ProjectedVolumeSource) DeepCopyInto(out *ProjectedVolumeSource) { } if in.DefaultMode != nil { in, out := &in.DefaultMode, &out.DefaultMode - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } return } @@ -4302,12 +3841,8 @@ func (in *RBDPersistentVolumeSource) DeepCopyInto(out *RBDPersistentVolumeSource } if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - if *in == nil { - *out = nil - } else { - *out = new(SecretReference) - **out = **in - } + *out = new(SecretReference) + **out = **in } return } @@ -4332,12 +3867,8 @@ func (in *RBDVolumeSource) DeepCopyInto(out *RBDVolumeSource) { } if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - if *in == nil { - *out = nil - } else { - *out = new(LocalObjectReference) - **out = **in - } + *out = new(LocalObjectReference) + **out = **in } return } @@ -4466,12 +3997,8 @@ func (in *ReplicationControllerSpec) DeepCopyInto(out *ReplicationControllerSpec *out = *in if in.Replicas != nil { in, out := &in.Replicas, &out.Replicas - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.Selector != nil { in, out := &in.Selector, &out.Selector @@ -4482,12 +4009,8 @@ func (in *ReplicationControllerSpec) DeepCopyInto(out *ReplicationControllerSpec } if in.Template != nil { in, out := &in.Template, &out.Template - if *in == nil { - *out = nil - } else { - *out = new(PodTemplateSpec) - (*in).DeepCopyInto(*out) - } + *out = new(PodTemplateSpec) + (*in).DeepCopyInto(*out) } return } @@ -4642,12 +4165,8 @@ func (in *ResourceQuotaSpec) DeepCopyInto(out *ResourceQuotaSpec) { } if in.ScopeSelector != nil { in, out := &in.ScopeSelector, &out.ScopeSelector - if *in == nil { - *out = nil - } else { - *out = new(ScopeSelector) - (*in).DeepCopyInto(*out) - } + *out = new(ScopeSelector) + (*in).DeepCopyInto(*out) } return } @@ -4743,12 +4262,8 @@ func (in *ScaleIOPersistentVolumeSource) DeepCopyInto(out *ScaleIOPersistentVolu *out = *in if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - if *in == nil { - *out = nil - } else { - *out = new(SecretReference) - **out = **in - } + *out = new(SecretReference) + **out = **in } return } @@ -4768,12 +4283,8 @@ func (in *ScaleIOVolumeSource) DeepCopyInto(out *ScaleIOVolumeSource) { *out = *in if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - if *in == nil { - *out = nil - } else { - *out = new(LocalObjectReference) - **out = **in - } + *out = new(LocalObjectReference) + **out = **in } return } @@ -4841,12 +4352,15 @@ func (in *Secret) DeepCopyInto(out *Secret) { in, out := &in.Data, &out.Data *out = make(map[string][]byte, len(*in)) for key, val := range *in { + var outVal []byte if val == nil { (*out)[key] = nil } else { - (*out)[key] = make([]byte, len(val)) - copy((*out)[key], val) + in, out := &val, &outVal + *out = make([]byte, len(*in)) + copy(*out, *in) } + (*out)[key] = outVal } } if in.StringData != nil { @@ -4883,12 +4397,8 @@ func (in *SecretEnvSource) DeepCopyInto(out *SecretEnvSource) { out.LocalObjectReference = in.LocalObjectReference if in.Optional != nil { in, out := &in.Optional, &out.Optional - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } return } @@ -4909,12 +4419,8 @@ func (in *SecretKeySelector) DeepCopyInto(out *SecretKeySelector) { out.LocalObjectReference = in.LocalObjectReference if in.Optional != nil { in, out := &in.Optional, &out.Optional - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } return } @@ -4975,12 +4481,8 @@ func (in *SecretProjection) DeepCopyInto(out *SecretProjection) { } if in.Optional != nil { in, out := &in.Optional, &out.Optional - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } return } @@ -5023,21 +4525,13 @@ func (in *SecretVolumeSource) DeepCopyInto(out *SecretVolumeSource) { } if in.DefaultMode != nil { in, out := &in.DefaultMode, &out.DefaultMode - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.Optional != nil { in, out := &in.Optional, &out.Optional - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } return } @@ -5057,75 +4551,43 @@ func (in *SecurityContext) DeepCopyInto(out *SecurityContext) { *out = *in if in.Capabilities != nil { in, out := &in.Capabilities, &out.Capabilities - if *in == nil { - *out = nil - } else { - *out = new(Capabilities) - (*in).DeepCopyInto(*out) - } + *out = new(Capabilities) + (*in).DeepCopyInto(*out) } if in.Privileged != nil { in, out := &in.Privileged, &out.Privileged - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } if in.SELinuxOptions != nil { in, out := &in.SELinuxOptions, &out.SELinuxOptions - if *in == nil { - *out = nil - } else { - *out = new(SELinuxOptions) - **out = **in - } + *out = new(SELinuxOptions) + **out = **in } if in.RunAsUser != nil { in, out := &in.RunAsUser, &out.RunAsUser - if *in == nil { - *out = nil - } else { - *out = new(int64) - **out = **in - } + *out = new(int64) + **out = **in } if in.RunAsGroup != nil { in, out := &in.RunAsGroup, &out.RunAsGroup - if *in == nil { - *out = nil - } else { - *out = new(int64) - **out = **in - } + *out = new(int64) + **out = **in } if in.RunAsNonRoot != nil { in, out := &in.RunAsNonRoot, &out.RunAsNonRoot - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } if in.ReadOnlyRootFilesystem != nil { in, out := &in.ReadOnlyRootFilesystem, &out.ReadOnlyRootFilesystem - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } if in.AllowPrivilegeEscalation != nil { in, out := &in.AllowPrivilegeEscalation, &out.AllowPrivilegeEscalation - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } return } @@ -5211,12 +4673,8 @@ func (in *ServiceAccount) DeepCopyInto(out *ServiceAccount) { } if in.AutomountServiceAccountToken != nil { in, out := &in.AutomountServiceAccountToken, &out.AutomountServiceAccountToken - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } return } @@ -5277,12 +4735,8 @@ func (in *ServiceAccountTokenProjection) DeepCopyInto(out *ServiceAccountTokenPr *out = *in if in.ExpirationSeconds != nil { in, out := &in.ExpirationSeconds, &out.ExpirationSeconds - if *in == nil { - *out = nil - } else { - *out = new(int64) - **out = **in - } + *out = new(int64) + **out = **in } return } @@ -5399,12 +4853,8 @@ func (in *ServiceSpec) DeepCopyInto(out *ServiceSpec) { } if in.SessionAffinityConfig != nil { in, out := &in.SessionAffinityConfig, &out.SessionAffinityConfig - if *in == nil { - *out = nil - } else { - *out = new(SessionAffinityConfig) - (*in).DeepCopyInto(*out) - } + *out = new(SessionAffinityConfig) + (*in).DeepCopyInto(*out) } return } @@ -5441,12 +4891,8 @@ func (in *SessionAffinityConfig) DeepCopyInto(out *SessionAffinityConfig) { *out = *in if in.ClientIP != nil { in, out := &in.ClientIP, &out.ClientIP - if *in == nil { - *out = nil - } else { - *out = new(ClientIPConfig) - (*in).DeepCopyInto(*out) - } + *out = new(ClientIPConfig) + (*in).DeepCopyInto(*out) } return } @@ -5466,12 +4912,8 @@ func (in *StorageOSPersistentVolumeSource) DeepCopyInto(out *StorageOSPersistent *out = *in if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - if *in == nil { - *out = nil - } else { - *out = new(ObjectReference) - **out = **in - } + *out = new(ObjectReference) + **out = **in } return } @@ -5491,12 +4933,8 @@ func (in *StorageOSVolumeSource) DeepCopyInto(out *StorageOSVolumeSource) { *out = *in if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - if *in == nil { - *out = nil - } else { - *out = new(LocalObjectReference) - **out = **in - } + *out = new(LocalObjectReference) + **out = **in } return } @@ -5549,11 +4987,7 @@ func (in *Taint) DeepCopyInto(out *Taint) { *out = *in if in.TimeAdded != nil { in, out := &in.TimeAdded, &out.TimeAdded - if *in == nil { - *out = nil - } else { - *out = (*in).DeepCopy() - } + *out = (*in).DeepCopy() } return } @@ -5573,12 +5007,8 @@ func (in *Toleration) DeepCopyInto(out *Toleration) { *out = *in if in.TolerationSeconds != nil { in, out := &in.TolerationSeconds, &out.TolerationSeconds - if *in == nil { - *out = nil - } else { - *out = new(int64) - **out = **in - } + *out = new(int64) + **out = **in } return } @@ -5675,12 +5105,8 @@ func (in *VolumeMount) DeepCopyInto(out *VolumeMount) { *out = *in if in.MountPropagation != nil { in, out := &in.MountPropagation, &out.MountPropagation - if *in == nil { - *out = nil - } else { - *out = new(MountPropagationMode) - **out = **in - } + *out = new(MountPropagationMode) + **out = **in } return } @@ -5700,12 +5126,8 @@ func (in *VolumeNodeAffinity) DeepCopyInto(out *VolumeNodeAffinity) { *out = *in if in.Required != nil { in, out := &in.Required, &out.Required - if *in == nil { - *out = nil - } else { - *out = new(NodeSelector) - (*in).DeepCopyInto(*out) - } + *out = new(NodeSelector) + (*in).DeepCopyInto(*out) } return } @@ -5725,39 +5147,23 @@ func (in *VolumeProjection) DeepCopyInto(out *VolumeProjection) { *out = *in if in.Secret != nil { in, out := &in.Secret, &out.Secret - if *in == nil { - *out = nil - } else { - *out = new(SecretProjection) - (*in).DeepCopyInto(*out) - } + *out = new(SecretProjection) + (*in).DeepCopyInto(*out) } if in.DownwardAPI != nil { in, out := &in.DownwardAPI, &out.DownwardAPI - if *in == nil { - *out = nil - } else { - *out = new(DownwardAPIProjection) - (*in).DeepCopyInto(*out) - } + *out = new(DownwardAPIProjection) + (*in).DeepCopyInto(*out) } if in.ConfigMap != nil { in, out := &in.ConfigMap, &out.ConfigMap - if *in == nil { - *out = nil - } else { - *out = new(ConfigMapProjection) - (*in).DeepCopyInto(*out) - } + *out = new(ConfigMapProjection) + (*in).DeepCopyInto(*out) } if in.ServiceAccountToken != nil { in, out := &in.ServiceAccountToken, &out.ServiceAccountToken - if *in == nil { - *out = nil - } else { - *out = new(ServiceAccountTokenProjection) - (*in).DeepCopyInto(*out) - } + *out = new(ServiceAccountTokenProjection) + (*in).DeepCopyInto(*out) } return } @@ -5777,246 +5183,138 @@ func (in *VolumeSource) DeepCopyInto(out *VolumeSource) { *out = *in if in.HostPath != nil { in, out := &in.HostPath, &out.HostPath - if *in == nil { - *out = nil - } else { - *out = new(HostPathVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(HostPathVolumeSource) + (*in).DeepCopyInto(*out) } if in.EmptyDir != nil { in, out := &in.EmptyDir, &out.EmptyDir - if *in == nil { - *out = nil - } else { - *out = new(EmptyDirVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(EmptyDirVolumeSource) + (*in).DeepCopyInto(*out) } if in.GCEPersistentDisk != nil { in, out := &in.GCEPersistentDisk, &out.GCEPersistentDisk - if *in == nil { - *out = nil - } else { - *out = new(GCEPersistentDiskVolumeSource) - **out = **in - } + *out = new(GCEPersistentDiskVolumeSource) + **out = **in } if in.AWSElasticBlockStore != nil { in, out := &in.AWSElasticBlockStore, &out.AWSElasticBlockStore - if *in == nil { - *out = nil - } else { - *out = new(AWSElasticBlockStoreVolumeSource) - **out = **in - } + *out = new(AWSElasticBlockStoreVolumeSource) + **out = **in } if in.GitRepo != nil { in, out := &in.GitRepo, &out.GitRepo - if *in == nil { - *out = nil - } else { - *out = new(GitRepoVolumeSource) - **out = **in - } + *out = new(GitRepoVolumeSource) + **out = **in } if in.Secret != nil { in, out := &in.Secret, &out.Secret - if *in == nil { - *out = nil - } else { - *out = new(SecretVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(SecretVolumeSource) + (*in).DeepCopyInto(*out) } if in.NFS != nil { in, out := &in.NFS, &out.NFS - if *in == nil { - *out = nil - } else { - *out = new(NFSVolumeSource) - **out = **in - } + *out = new(NFSVolumeSource) + **out = **in } if in.ISCSI != nil { in, out := &in.ISCSI, &out.ISCSI - if *in == nil { - *out = nil - } else { - *out = new(ISCSIVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(ISCSIVolumeSource) + (*in).DeepCopyInto(*out) } if in.Glusterfs != nil { in, out := &in.Glusterfs, &out.Glusterfs - if *in == nil { - *out = nil - } else { - *out = new(GlusterfsVolumeSource) - **out = **in - } + *out = new(GlusterfsVolumeSource) + **out = **in } if in.PersistentVolumeClaim != nil { in, out := &in.PersistentVolumeClaim, &out.PersistentVolumeClaim - if *in == nil { - *out = nil - } else { - *out = new(PersistentVolumeClaimVolumeSource) - **out = **in - } + *out = new(PersistentVolumeClaimVolumeSource) + **out = **in } if in.RBD != nil { in, out := &in.RBD, &out.RBD - if *in == nil { - *out = nil - } else { - *out = new(RBDVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(RBDVolumeSource) + (*in).DeepCopyInto(*out) } if in.FlexVolume != nil { in, out := &in.FlexVolume, &out.FlexVolume - if *in == nil { - *out = nil - } else { - *out = new(FlexVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(FlexVolumeSource) + (*in).DeepCopyInto(*out) } if in.Cinder != nil { in, out := &in.Cinder, &out.Cinder - if *in == nil { - *out = nil - } else { - *out = new(CinderVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(CinderVolumeSource) + (*in).DeepCopyInto(*out) } if in.CephFS != nil { in, out := &in.CephFS, &out.CephFS - if *in == nil { - *out = nil - } else { - *out = new(CephFSVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(CephFSVolumeSource) + (*in).DeepCopyInto(*out) } if in.Flocker != nil { in, out := &in.Flocker, &out.Flocker - if *in == nil { - *out = nil - } else { - *out = new(FlockerVolumeSource) - **out = **in - } + *out = new(FlockerVolumeSource) + **out = **in } if in.DownwardAPI != nil { in, out := &in.DownwardAPI, &out.DownwardAPI - if *in == nil { - *out = nil - } else { - *out = new(DownwardAPIVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(DownwardAPIVolumeSource) + (*in).DeepCopyInto(*out) } if in.FC != nil { in, out := &in.FC, &out.FC - if *in == nil { - *out = nil - } else { - *out = new(FCVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(FCVolumeSource) + (*in).DeepCopyInto(*out) } if in.AzureFile != nil { in, out := &in.AzureFile, &out.AzureFile - if *in == nil { - *out = nil - } else { - *out = new(AzureFileVolumeSource) - **out = **in - } + *out = new(AzureFileVolumeSource) + **out = **in } if in.ConfigMap != nil { in, out := &in.ConfigMap, &out.ConfigMap - if *in == nil { - *out = nil - } else { - *out = new(ConfigMapVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(ConfigMapVolumeSource) + (*in).DeepCopyInto(*out) } if in.VsphereVolume != nil { in, out := &in.VsphereVolume, &out.VsphereVolume - if *in == nil { - *out = nil - } else { - *out = new(VsphereVirtualDiskVolumeSource) - **out = **in - } + *out = new(VsphereVirtualDiskVolumeSource) + **out = **in } if in.Quobyte != nil { in, out := &in.Quobyte, &out.Quobyte - if *in == nil { - *out = nil - } else { - *out = new(QuobyteVolumeSource) - **out = **in - } + *out = new(QuobyteVolumeSource) + **out = **in } if in.AzureDisk != nil { in, out := &in.AzureDisk, &out.AzureDisk - if *in == nil { - *out = nil - } else { - *out = new(AzureDiskVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(AzureDiskVolumeSource) + (*in).DeepCopyInto(*out) } if in.PhotonPersistentDisk != nil { in, out := &in.PhotonPersistentDisk, &out.PhotonPersistentDisk - if *in == nil { - *out = nil - } else { - *out = new(PhotonPersistentDiskVolumeSource) - **out = **in - } + *out = new(PhotonPersistentDiskVolumeSource) + **out = **in } if in.Projected != nil { in, out := &in.Projected, &out.Projected - if *in == nil { - *out = nil - } else { - *out = new(ProjectedVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(ProjectedVolumeSource) + (*in).DeepCopyInto(*out) } if in.PortworxVolume != nil { in, out := &in.PortworxVolume, &out.PortworxVolume - if *in == nil { - *out = nil - } else { - *out = new(PortworxVolumeSource) - **out = **in - } + *out = new(PortworxVolumeSource) + **out = **in } if in.ScaleIO != nil { in, out := &in.ScaleIO, &out.ScaleIO - if *in == nil { - *out = nil - } else { - *out = new(ScaleIOVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(ScaleIOVolumeSource) + (*in).DeepCopyInto(*out) } if in.StorageOS != nil { in, out := &in.StorageOS, &out.StorageOS - if *in == nil { - *out = nil - } else { - *out = new(StorageOSVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(StorageOSVolumeSource) + (*in).DeepCopyInto(*out) } return } diff --git a/cluster-autoscaler/vendor/k8s.io/api/events/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/api/events/v1beta1/BUILD index 851874e78c..dd6e9170b4 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/events/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/api/events/v1beta1/BUILD @@ -1,11 +1,5 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") -filegroup( - name = "go_default_library_protos", - srcs = ["generated.proto"], - visibility = ["//visibility:public"], -) - go_library( name = "go_default_library", srcs = [ @@ -16,14 +10,15 @@ go_library( "types_swagger_doc_generated.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/api/events/v1beta1", importpath = "k8s.io/api/events/v1beta1", visibility = ["//visibility:public"], deps = [ + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/api/events/v1beta1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/api/events/v1beta1/zz_generated.deepcopy.go index 9652044b3b..e52e142c60 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/events/v1beta1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/api/events/v1beta1/zz_generated.deepcopy.go @@ -33,22 +33,14 @@ func (in *Event) DeepCopyInto(out *Event) { in.EventTime.DeepCopyInto(&out.EventTime) if in.Series != nil { in, out := &in.Series, &out.Series - if *in == nil { - *out = nil - } else { - *out = new(EventSeries) - (*in).DeepCopyInto(*out) - } + *out = new(EventSeries) + (*in).DeepCopyInto(*out) } out.Regarding = in.Regarding if in.Related != nil { in, out := &in.Related, &out.Related - if *in == nil { - *out = nil - } else { - *out = new(v1.ObjectReference) - **out = **in - } + *out = new(v1.ObjectReference) + **out = **in } out.DeprecatedSource = in.DeprecatedSource in.DeprecatedFirstTimestamp.DeepCopyInto(&out.DeprecatedFirstTimestamp) diff --git a/cluster-autoscaler/vendor/k8s.io/api/extensions/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/api/extensions/v1beta1/BUILD index 360ad999c9..57da4b778f 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/extensions/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/api/extensions/v1beta1/BUILD @@ -15,17 +15,18 @@ go_library( "types_swagger_doc_generated.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/api/extensions/v1beta1", importpath = "k8s.io/api/extensions/v1beta1", deps = [ + "//staging/src/k8s.io/api/apps/v1beta1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", - "//vendor/k8s.io/api/apps/v1beta1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", ], ) @@ -41,9 +42,3 @@ filegroup( srcs = [":package-srcs"], tags = ["automanaged"], ) - -filegroup( - name = "go_default_library_protos", - srcs = ["generated.proto"], - visibility = ["//visibility:public"], -) diff --git a/cluster-autoscaler/vendor/k8s.io/api/extensions/v1beta1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/api/extensions/v1beta1/zz_generated.deepcopy.go index 8ec2b1ff7c..0e94ab1fb4 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/extensions/v1beta1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/api/extensions/v1beta1/zz_generated.deepcopy.go @@ -21,7 +21,7 @@ limitations under the License. package v1beta1 import ( - core_v1 "k8s.io/api/core/v1" + corev1 "k8s.io/api/core/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtime "k8s.io/apimachinery/pkg/runtime" intstr "k8s.io/apimachinery/pkg/util/intstr" @@ -222,23 +222,15 @@ func (in *DaemonSetSpec) DeepCopyInto(out *DaemonSetSpec) { *out = *in if in.Selector != nil { in, out := &in.Selector, &out.Selector - if *in == nil { - *out = nil - } else { - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) - } + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) } in.Template.DeepCopyInto(&out.Template) in.UpdateStrategy.DeepCopyInto(&out.UpdateStrategy) if in.RevisionHistoryLimit != nil { in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } return } @@ -258,12 +250,8 @@ func (in *DaemonSetStatus) DeepCopyInto(out *DaemonSetStatus) { *out = *in if in.CollisionCount != nil { in, out := &in.CollisionCount, &out.CollisionCount - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.Conditions != nil { in, out := &in.Conditions, &out.Conditions @@ -290,12 +278,8 @@ func (in *DaemonSetUpdateStrategy) DeepCopyInto(out *DaemonSetUpdateStrategy) { *out = *in if in.RollingUpdate != nil { in, out := &in.RollingUpdate, &out.RollingUpdate - if *in == nil { - *out = nil - } else { - *out = new(RollingUpdateDaemonSet) - (*in).DeepCopyInto(*out) - } + *out = new(RollingUpdateDaemonSet) + (*in).DeepCopyInto(*out) } return } @@ -427,50 +411,30 @@ func (in *DeploymentSpec) DeepCopyInto(out *DeploymentSpec) { *out = *in if in.Replicas != nil { in, out := &in.Replicas, &out.Replicas - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.Selector != nil { in, out := &in.Selector, &out.Selector - if *in == nil { - *out = nil - } else { - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) - } + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) } in.Template.DeepCopyInto(&out.Template) in.Strategy.DeepCopyInto(&out.Strategy) if in.RevisionHistoryLimit != nil { in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.RollbackTo != nil { in, out := &in.RollbackTo, &out.RollbackTo - if *in == nil { - *out = nil - } else { - *out = new(RollbackConfig) - **out = **in - } + *out = new(RollbackConfig) + **out = **in } if in.ProgressDeadlineSeconds != nil { in, out := &in.ProgressDeadlineSeconds, &out.ProgressDeadlineSeconds - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } return } @@ -497,12 +461,8 @@ func (in *DeploymentStatus) DeepCopyInto(out *DeploymentStatus) { } if in.CollisionCount != nil { in, out := &in.CollisionCount, &out.CollisionCount - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } return } @@ -522,12 +482,8 @@ func (in *DeploymentStrategy) DeepCopyInto(out *DeploymentStrategy) { *out = *in if in.RollingUpdate != nil { in, out := &in.RollingUpdate, &out.RollingUpdate - if *in == nil { - *out = nil - } else { - *out = new(RollingUpdateDeployment) - (*in).DeepCopyInto(*out) - } + *out = new(RollingUpdateDeployment) + (*in).DeepCopyInto(*out) } return } @@ -754,12 +710,8 @@ func (in *IngressRuleValue) DeepCopyInto(out *IngressRuleValue) { *out = *in if in.HTTP != nil { in, out := &in.HTTP, &out.HTTP - if *in == nil { - *out = nil - } else { - *out = new(HTTPIngressRuleValue) - (*in).DeepCopyInto(*out) - } + *out = new(HTTPIngressRuleValue) + (*in).DeepCopyInto(*out) } return } @@ -779,12 +731,8 @@ func (in *IngressSpec) DeepCopyInto(out *IngressSpec) { *out = *in if in.Backend != nil { in, out := &in.Backend, &out.Backend - if *in == nil { - *out = nil - } else { - *out = new(IngressBackend) - **out = **in - } + *out = new(IngressBackend) + **out = **in } if in.TLS != nil { in, out := &in.TLS, &out.TLS @@ -976,30 +924,18 @@ func (in *NetworkPolicyPeer) DeepCopyInto(out *NetworkPolicyPeer) { *out = *in if in.PodSelector != nil { in, out := &in.PodSelector, &out.PodSelector - if *in == nil { - *out = nil - } else { - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) - } + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) } if in.NamespaceSelector != nil { in, out := &in.NamespaceSelector, &out.NamespaceSelector - if *in == nil { - *out = nil - } else { - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) - } + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) } if in.IPBlock != nil { in, out := &in.IPBlock, &out.IPBlock - if *in == nil { - *out = nil - } else { - *out = new(IPBlock) - (*in).DeepCopyInto(*out) - } + *out = new(IPBlock) + (*in).DeepCopyInto(*out) } return } @@ -1019,21 +955,13 @@ func (in *NetworkPolicyPort) DeepCopyInto(out *NetworkPolicyPort) { *out = *in if in.Protocol != nil { in, out := &in.Protocol, &out.Protocol - if *in == nil { - *out = nil - } else { - *out = new(core_v1.Protocol) - **out = **in - } + *out = new(corev1.Protocol) + **out = **in } if in.Port != nil { in, out := &in.Port, &out.Port - if *in == nil { - *out = nil - } else { - *out = new(intstr.IntOrString) - **out = **in - } + *out = new(intstr.IntOrString) + **out = **in } return } @@ -1149,17 +1077,17 @@ func (in *PodSecurityPolicySpec) DeepCopyInto(out *PodSecurityPolicySpec) { *out = *in if in.DefaultAddCapabilities != nil { in, out := &in.DefaultAddCapabilities, &out.DefaultAddCapabilities - *out = make([]core_v1.Capability, len(*in)) + *out = make([]corev1.Capability, len(*in)) copy(*out, *in) } if in.RequiredDropCapabilities != nil { in, out := &in.RequiredDropCapabilities, &out.RequiredDropCapabilities - *out = make([]core_v1.Capability, len(*in)) + *out = make([]corev1.Capability, len(*in)) copy(*out, *in) } if in.AllowedCapabilities != nil { in, out := &in.AllowedCapabilities, &out.AllowedCapabilities - *out = make([]core_v1.Capability, len(*in)) + *out = make([]corev1.Capability, len(*in)) copy(*out, *in) } if in.Volumes != nil { @@ -1178,21 +1106,13 @@ func (in *PodSecurityPolicySpec) DeepCopyInto(out *PodSecurityPolicySpec) { in.FSGroup.DeepCopyInto(&out.FSGroup) if in.DefaultAllowPrivilegeEscalation != nil { in, out := &in.DefaultAllowPrivilegeEscalation, &out.DefaultAllowPrivilegeEscalation - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } if in.AllowPrivilegeEscalation != nil { in, out := &in.AllowPrivilegeEscalation, &out.AllowPrivilegeEscalation - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } if in.AllowedHostPaths != nil { in, out := &in.AllowedHostPaths, &out.AllowedHostPaths @@ -1310,21 +1230,13 @@ func (in *ReplicaSetSpec) DeepCopyInto(out *ReplicaSetSpec) { *out = *in if in.Replicas != nil { in, out := &in.Replicas, &out.Replicas - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.Selector != nil { in, out := &in.Selector, &out.Selector - if *in == nil { - *out = nil - } else { - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) - } + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) } in.Template.DeepCopyInto(&out.Template) return @@ -1409,12 +1321,8 @@ func (in *RollingUpdateDaemonSet) DeepCopyInto(out *RollingUpdateDaemonSet) { *out = *in if in.MaxUnavailable != nil { in, out := &in.MaxUnavailable, &out.MaxUnavailable - if *in == nil { - *out = nil - } else { - *out = new(intstr.IntOrString) - **out = **in - } + *out = new(intstr.IntOrString) + **out = **in } return } @@ -1434,21 +1342,13 @@ func (in *RollingUpdateDeployment) DeepCopyInto(out *RollingUpdateDeployment) { *out = *in if in.MaxUnavailable != nil { in, out := &in.MaxUnavailable, &out.MaxUnavailable - if *in == nil { - *out = nil - } else { - *out = new(intstr.IntOrString) - **out = **in - } + *out = new(intstr.IntOrString) + **out = **in } if in.MaxSurge != nil { in, out := &in.MaxSurge, &out.MaxSurge - if *in == nil { - *out = nil - } else { - *out = new(intstr.IntOrString) - **out = **in - } + *out = new(intstr.IntOrString) + **out = **in } return } @@ -1489,12 +1389,8 @@ func (in *SELinuxStrategyOptions) DeepCopyInto(out *SELinuxStrategyOptions) { *out = *in if in.SELinuxOptions != nil { in, out := &in.SELinuxOptions, &out.SELinuxOptions - if *in == nil { - *out = nil - } else { - *out = new(core_v1.SELinuxOptions) - **out = **in - } + *out = new(corev1.SELinuxOptions) + **out = **in } return } diff --git a/cluster-autoscaler/vendor/k8s.io/api/imagepolicy/v1alpha1/BUILD b/cluster-autoscaler/vendor/k8s.io/api/imagepolicy/v1alpha1/BUILD index 455205f7ad..80da701e80 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/imagepolicy/v1alpha1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/api/imagepolicy/v1alpha1/BUILD @@ -15,13 +15,14 @@ go_library( "types_swagger_doc_generated.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/api/imagepolicy/v1alpha1", importpath = "k8s.io/api/imagepolicy/v1alpha1", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) @@ -37,9 +38,3 @@ filegroup( srcs = [":package-srcs"], tags = ["automanaged"], ) - -filegroup( - name = "go_default_library_protos", - srcs = ["generated.proto"], - visibility = ["//visibility:public"], -) diff --git a/cluster-autoscaler/vendor/k8s.io/api/networking/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/api/networking/v1/BUILD index beb3afcaf7..4064c41e8f 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/networking/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/api/networking/v1/BUILD @@ -15,14 +15,15 @@ go_library( "types_swagger_doc_generated.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/api/networking/v1", importpath = "k8s.io/api/networking/v1", deps = [ + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", ], ) @@ -38,9 +39,3 @@ filegroup( srcs = [":package-srcs"], tags = ["automanaged"], ) - -filegroup( - name = "go_default_library_protos", - srcs = ["generated.proto"], - visibility = ["//visibility:public"], -) diff --git a/cluster-autoscaler/vendor/k8s.io/api/networking/v1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/api/networking/v1/zz_generated.deepcopy.go index 0037638a8d..d1e4e88451 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/networking/v1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/api/networking/v1/zz_generated.deepcopy.go @@ -21,8 +21,8 @@ limitations under the License. package v1 import ( - core_v1 "k8s.io/api/core/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtime "k8s.io/apimachinery/pkg/runtime" intstr "k8s.io/apimachinery/pkg/util/intstr" ) @@ -173,30 +173,18 @@ func (in *NetworkPolicyPeer) DeepCopyInto(out *NetworkPolicyPeer) { *out = *in if in.PodSelector != nil { in, out := &in.PodSelector, &out.PodSelector - if *in == nil { - *out = nil - } else { - *out = new(meta_v1.LabelSelector) - (*in).DeepCopyInto(*out) - } + *out = new(metav1.LabelSelector) + (*in).DeepCopyInto(*out) } if in.NamespaceSelector != nil { in, out := &in.NamespaceSelector, &out.NamespaceSelector - if *in == nil { - *out = nil - } else { - *out = new(meta_v1.LabelSelector) - (*in).DeepCopyInto(*out) - } + *out = new(metav1.LabelSelector) + (*in).DeepCopyInto(*out) } if in.IPBlock != nil { in, out := &in.IPBlock, &out.IPBlock - if *in == nil { - *out = nil - } else { - *out = new(IPBlock) - (*in).DeepCopyInto(*out) - } + *out = new(IPBlock) + (*in).DeepCopyInto(*out) } return } @@ -216,21 +204,13 @@ func (in *NetworkPolicyPort) DeepCopyInto(out *NetworkPolicyPort) { *out = *in if in.Protocol != nil { in, out := &in.Protocol, &out.Protocol - if *in == nil { - *out = nil - } else { - *out = new(core_v1.Protocol) - **out = **in - } + *out = new(corev1.Protocol) + **out = **in } if in.Port != nil { in, out := &in.Port, &out.Port - if *in == nil { - *out = nil - } else { - *out = new(intstr.IntOrString) - **out = **in - } + *out = new(intstr.IntOrString) + **out = **in } return } diff --git a/cluster-autoscaler/vendor/k8s.io/api/policy/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/api/policy/v1beta1/BUILD index d55d68e5d7..15947b15e6 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/policy/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/api/policy/v1beta1/BUILD @@ -15,15 +15,16 @@ go_library( "types_swagger_doc_generated.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/api/policy/v1beta1", importpath = "k8s.io/api/policy/v1beta1", deps = [ + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", ], ) @@ -39,9 +40,3 @@ filegroup( srcs = [":package-srcs"], tags = ["automanaged"], ) - -filegroup( - name = "go_default_library_protos", - srcs = ["generated.proto"], - visibility = ["//visibility:public"], -) diff --git a/cluster-autoscaler/vendor/k8s.io/api/policy/v1beta1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/api/policy/v1beta1/zz_generated.deepcopy.go index 1980bd1611..96e350967b 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/policy/v1beta1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/api/policy/v1beta1/zz_generated.deepcopy.go @@ -21,7 +21,7 @@ limitations under the License. package v1beta1 import ( - core_v1 "k8s.io/api/core/v1" + corev1 "k8s.io/api/core/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtime "k8s.io/apimachinery/pkg/runtime" intstr "k8s.io/apimachinery/pkg/util/intstr" @@ -66,12 +66,8 @@ func (in *Eviction) DeepCopyInto(out *Eviction) { in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) if in.DeleteOptions != nil { in, out := &in.DeleteOptions, &out.DeleteOptions - if *in == nil { - *out = nil - } else { - *out = new(v1.DeleteOptions) - (*in).DeepCopyInto(*out) - } + *out = new(v1.DeleteOptions) + (*in).DeepCopyInto(*out) } return } @@ -213,30 +209,18 @@ func (in *PodDisruptionBudgetSpec) DeepCopyInto(out *PodDisruptionBudgetSpec) { *out = *in if in.MinAvailable != nil { in, out := &in.MinAvailable, &out.MinAvailable - if *in == nil { - *out = nil - } else { - *out = new(intstr.IntOrString) - **out = **in - } + *out = new(intstr.IntOrString) + **out = **in } if in.Selector != nil { in, out := &in.Selector, &out.Selector - if *in == nil { - *out = nil - } else { - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) - } + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) } if in.MaxUnavailable != nil { in, out := &in.MaxUnavailable, &out.MaxUnavailable - if *in == nil { - *out = nil - } else { - *out = new(intstr.IntOrString) - **out = **in - } + *out = new(intstr.IntOrString) + **out = **in } return } @@ -339,17 +323,17 @@ func (in *PodSecurityPolicySpec) DeepCopyInto(out *PodSecurityPolicySpec) { *out = *in if in.DefaultAddCapabilities != nil { in, out := &in.DefaultAddCapabilities, &out.DefaultAddCapabilities - *out = make([]core_v1.Capability, len(*in)) + *out = make([]corev1.Capability, len(*in)) copy(*out, *in) } if in.RequiredDropCapabilities != nil { in, out := &in.RequiredDropCapabilities, &out.RequiredDropCapabilities - *out = make([]core_v1.Capability, len(*in)) + *out = make([]corev1.Capability, len(*in)) copy(*out, *in) } if in.AllowedCapabilities != nil { in, out := &in.AllowedCapabilities, &out.AllowedCapabilities - *out = make([]core_v1.Capability, len(*in)) + *out = make([]corev1.Capability, len(*in)) copy(*out, *in) } if in.Volumes != nil { @@ -368,21 +352,13 @@ func (in *PodSecurityPolicySpec) DeepCopyInto(out *PodSecurityPolicySpec) { in.FSGroup.DeepCopyInto(&out.FSGroup) if in.DefaultAllowPrivilegeEscalation != nil { in, out := &in.DefaultAllowPrivilegeEscalation, &out.DefaultAllowPrivilegeEscalation - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } if in.AllowPrivilegeEscalation != nil { in, out := &in.AllowPrivilegeEscalation, &out.AllowPrivilegeEscalation - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } if in.AllowedHostPaths != nil { in, out := &in.AllowedHostPaths, &out.AllowedHostPaths @@ -443,12 +419,8 @@ func (in *SELinuxStrategyOptions) DeepCopyInto(out *SELinuxStrategyOptions) { *out = *in if in.SELinuxOptions != nil { in, out := &in.SELinuxOptions, &out.SELinuxOptions - if *in == nil { - *out = nil - } else { - *out = new(core_v1.SELinuxOptions) - **out = **in - } + *out = new(corev1.SELinuxOptions) + **out = **in } return } diff --git a/cluster-autoscaler/vendor/k8s.io/api/rbac/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/api/rbac/v1/BUILD index 539afb7ae8..8b8094de00 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/rbac/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/api/rbac/v1/BUILD @@ -15,12 +15,13 @@ go_library( "types_swagger_doc_generated.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/api/rbac/v1", importpath = "k8s.io/api/rbac/v1", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) @@ -36,9 +37,3 @@ filegroup( srcs = [":package-srcs"], tags = ["automanaged"], ) - -filegroup( - name = "go_default_library_protos", - srcs = ["generated.proto"], - visibility = ["//visibility:public"], -) diff --git a/cluster-autoscaler/vendor/k8s.io/api/rbac/v1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/api/rbac/v1/zz_generated.deepcopy.go index be1592f77e..07eb321eab 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/rbac/v1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/api/rbac/v1/zz_generated.deepcopy.go @@ -21,7 +21,7 @@ limitations under the License. package v1 import ( - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtime "k8s.io/apimachinery/pkg/runtime" ) @@ -30,7 +30,7 @@ func (in *AggregationRule) DeepCopyInto(out *AggregationRule) { *out = *in if in.ClusterRoleSelectors != nil { in, out := &in.ClusterRoleSelectors, &out.ClusterRoleSelectors - *out = make([]meta_v1.LabelSelector, len(*in)) + *out = make([]metav1.LabelSelector, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } @@ -62,12 +62,8 @@ func (in *ClusterRole) DeepCopyInto(out *ClusterRole) { } if in.AggregationRule != nil { in, out := &in.AggregationRule, &out.AggregationRule - if *in == nil { - *out = nil - } else { - *out = new(AggregationRule) - (*in).DeepCopyInto(*out) - } + *out = new(AggregationRule) + (*in).DeepCopyInto(*out) } return } diff --git a/cluster-autoscaler/vendor/k8s.io/api/rbac/v1alpha1/BUILD b/cluster-autoscaler/vendor/k8s.io/api/rbac/v1alpha1/BUILD index 68d7cdfbb1..6c36134c5e 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/rbac/v1alpha1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/api/rbac/v1alpha1/BUILD @@ -15,12 +15,13 @@ go_library( "types_swagger_doc_generated.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/api/rbac/v1alpha1", importpath = "k8s.io/api/rbac/v1alpha1", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) @@ -36,9 +37,3 @@ filegroup( srcs = [":package-srcs"], tags = ["automanaged"], ) - -filegroup( - name = "go_default_library_protos", - srcs = ["generated.proto"], - visibility = ["//visibility:public"], -) diff --git a/cluster-autoscaler/vendor/k8s.io/api/rbac/v1alpha1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/api/rbac/v1alpha1/zz_generated.deepcopy.go index 1d29acff34..97f63331ea 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/rbac/v1alpha1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/api/rbac/v1alpha1/zz_generated.deepcopy.go @@ -62,12 +62,8 @@ func (in *ClusterRole) DeepCopyInto(out *ClusterRole) { } if in.AggregationRule != nil { in, out := &in.AggregationRule, &out.AggregationRule - if *in == nil { - *out = nil - } else { - *out = new(AggregationRule) - (*in).DeepCopyInto(*out) - } + *out = new(AggregationRule) + (*in).DeepCopyInto(*out) } return } diff --git a/cluster-autoscaler/vendor/k8s.io/api/rbac/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/api/rbac/v1beta1/BUILD index c9aa763f41..48e27564bb 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/rbac/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/api/rbac/v1beta1/BUILD @@ -15,12 +15,13 @@ go_library( "types_swagger_doc_generated.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/api/rbac/v1beta1", importpath = "k8s.io/api/rbac/v1beta1", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) @@ -36,9 +37,3 @@ filegroup( srcs = [":package-srcs"], tags = ["automanaged"], ) - -filegroup( - name = "go_default_library_protos", - srcs = ["generated.proto"], - visibility = ["//visibility:public"], -) diff --git a/cluster-autoscaler/vendor/k8s.io/api/rbac/v1beta1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/api/rbac/v1beta1/zz_generated.deepcopy.go index 86fadd1708..c085c90b12 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/rbac/v1beta1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/api/rbac/v1beta1/zz_generated.deepcopy.go @@ -62,12 +62,8 @@ func (in *ClusterRole) DeepCopyInto(out *ClusterRole) { } if in.AggregationRule != nil { in, out := &in.AggregationRule, &out.AggregationRule - if *in == nil { - *out = nil - } else { - *out = new(AggregationRule) - (*in).DeepCopyInto(*out) - } + *out = new(AggregationRule) + (*in).DeepCopyInto(*out) } return } diff --git a/cluster-autoscaler/vendor/k8s.io/api/scheduling/v1alpha1/BUILD b/cluster-autoscaler/vendor/k8s.io/api/scheduling/v1alpha1/BUILD index c8c1976647..bcea964b4c 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/scheduling/v1alpha1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/api/scheduling/v1alpha1/BUILD @@ -15,12 +15,13 @@ go_library( "types_swagger_doc_generated.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/api/scheduling/v1alpha1", importpath = "k8s.io/api/scheduling/v1alpha1", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) @@ -36,9 +37,3 @@ filegroup( srcs = [":package-srcs"], tags = ["automanaged"], ) - -filegroup( - name = "go_default_library_protos", - srcs = ["generated.proto"], - visibility = ["//visibility:public"], -) diff --git a/cluster-autoscaler/vendor/k8s.io/api/scheduling/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/api/scheduling/v1beta1/BUILD index 5dc69ac1ee..148494529e 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/scheduling/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/api/scheduling/v1beta1/BUILD @@ -15,12 +15,13 @@ go_library( "types_swagger_doc_generated.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/api/scheduling/v1beta1", importpath = "k8s.io/api/scheduling/v1beta1", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) @@ -36,9 +37,3 @@ filegroup( srcs = [":package-srcs"], tags = ["automanaged"], ) - -filegroup( - name = "go_default_library_protos", - srcs = ["generated.proto"], - visibility = ["//visibility:public"], -) diff --git a/cluster-autoscaler/vendor/k8s.io/api/settings/v1alpha1/BUILD b/cluster-autoscaler/vendor/k8s.io/api/settings/v1alpha1/BUILD index d7457427df..16e48959bd 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/settings/v1alpha1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/api/settings/v1alpha1/BUILD @@ -15,13 +15,14 @@ go_library( "types_swagger_doc_generated.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/api/settings/v1alpha1", importpath = "k8s.io/api/settings/v1alpha1", deps = [ + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) @@ -37,9 +38,3 @@ filegroup( srcs = [":package-srcs"], tags = ["automanaged"], ) - -filegroup( - name = "go_default_library_protos", - srcs = ["generated.proto"], - visibility = ["//visibility:public"], -) diff --git a/cluster-autoscaler/vendor/k8s.io/api/storage/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/api/storage/v1/BUILD index 50a09f0eba..918cbfa695 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/storage/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/api/storage/v1/BUILD @@ -10,24 +10,19 @@ go_library( "types_swagger_doc_generated.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/api/storage/v1", importpath = "k8s.io/api/storage/v1", visibility = ["//visibility:public"], deps = [ + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) -filegroup( - name = "go_default_library_protos", - srcs = ["generated.proto"], - visibility = ["//visibility:public"], -) - filegroup( name = "package-srcs", srcs = glob(["**"]), diff --git a/cluster-autoscaler/vendor/k8s.io/api/storage/v1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/api/storage/v1/zz_generated.deepcopy.go index a1050134c0..0e850dc34f 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/storage/v1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/api/storage/v1/zz_generated.deepcopy.go @@ -21,7 +21,7 @@ limitations under the License. package v1 import ( - core_v1 "k8s.io/api/core/v1" + corev1 "k8s.io/api/core/v1" runtime "k8s.io/apimachinery/pkg/runtime" ) @@ -39,12 +39,8 @@ func (in *StorageClass) DeepCopyInto(out *StorageClass) { } if in.ReclaimPolicy != nil { in, out := &in.ReclaimPolicy, &out.ReclaimPolicy - if *in == nil { - *out = nil - } else { - *out = new(core_v1.PersistentVolumeReclaimPolicy) - **out = **in - } + *out = new(corev1.PersistentVolumeReclaimPolicy) + **out = **in } if in.MountOptions != nil { in, out := &in.MountOptions, &out.MountOptions @@ -53,25 +49,17 @@ func (in *StorageClass) DeepCopyInto(out *StorageClass) { } if in.AllowVolumeExpansion != nil { in, out := &in.AllowVolumeExpansion, &out.AllowVolumeExpansion - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } if in.VolumeBindingMode != nil { in, out := &in.VolumeBindingMode, &out.VolumeBindingMode - if *in == nil { - *out = nil - } else { - *out = new(VolumeBindingMode) - **out = **in - } + *out = new(VolumeBindingMode) + **out = **in } if in.AllowedTopologies != nil { in, out := &in.AllowedTopologies, &out.AllowedTopologies - *out = make([]core_v1.TopologySelectorTerm, len(*in)) + *out = make([]corev1.TopologySelectorTerm, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } diff --git a/cluster-autoscaler/vendor/k8s.io/api/storage/v1alpha1/BUILD b/cluster-autoscaler/vendor/k8s.io/api/storage/v1alpha1/BUILD index 98342a4262..612e08b551 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/storage/v1alpha1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/api/storage/v1alpha1/BUILD @@ -1,11 +1,5 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") -filegroup( - name = "go_default_library_protos", - srcs = ["generated.proto"], - visibility = ["//visibility:public"], -) - go_library( name = "go_default_library", srcs = [ @@ -16,14 +10,15 @@ go_library( "types_swagger_doc_generated.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/api/storage/v1alpha1", importpath = "k8s.io/api/storage/v1alpha1", visibility = ["//visibility:public"], deps = [ + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/api/storage/v1alpha1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/api/storage/v1alpha1/zz_generated.deepcopy.go index d1a53755b1..e27c6ff3fa 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/storage/v1alpha1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/api/storage/v1alpha1/zz_generated.deepcopy.go @@ -90,12 +90,8 @@ func (in *VolumeAttachmentSource) DeepCopyInto(out *VolumeAttachmentSource) { *out = *in if in.PersistentVolumeName != nil { in, out := &in.PersistentVolumeName, &out.PersistentVolumeName - if *in == nil { - *out = nil - } else { - *out = new(string) - **out = **in - } + *out = new(string) + **out = **in } return } @@ -139,21 +135,13 @@ func (in *VolumeAttachmentStatus) DeepCopyInto(out *VolumeAttachmentStatus) { } if in.AttachError != nil { in, out := &in.AttachError, &out.AttachError - if *in == nil { - *out = nil - } else { - *out = new(VolumeError) - (*in).DeepCopyInto(*out) - } + *out = new(VolumeError) + (*in).DeepCopyInto(*out) } if in.DetachError != nil { in, out := &in.DetachError, &out.DetachError - if *in == nil { - *out = nil - } else { - *out = new(VolumeError) - (*in).DeepCopyInto(*out) - } + *out = new(VolumeError) + (*in).DeepCopyInto(*out) } return } diff --git a/cluster-autoscaler/vendor/k8s.io/api/storage/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/api/storage/v1beta1/BUILD index e659e9de01..f0669b64e7 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/storage/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/api/storage/v1beta1/BUILD @@ -10,24 +10,19 @@ go_library( "types_swagger_doc_generated.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/api/storage/v1beta1", importpath = "k8s.io/api/storage/v1beta1", visibility = ["//visibility:public"], deps = [ + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) -filegroup( - name = "go_default_library_protos", - srcs = ["generated.proto"], - visibility = ["//visibility:public"], -) - filegroup( name = "package-srcs", srcs = glob(["**"]), diff --git a/cluster-autoscaler/vendor/k8s.io/api/storage/v1beta1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/api/storage/v1beta1/zz_generated.deepcopy.go index 7c7c8fde5d..8096dba9be 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/storage/v1beta1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/api/storage/v1beta1/zz_generated.deepcopy.go @@ -39,12 +39,8 @@ func (in *StorageClass) DeepCopyInto(out *StorageClass) { } if in.ReclaimPolicy != nil { in, out := &in.ReclaimPolicy, &out.ReclaimPolicy - if *in == nil { - *out = nil - } else { - *out = new(v1.PersistentVolumeReclaimPolicy) - **out = **in - } + *out = new(v1.PersistentVolumeReclaimPolicy) + **out = **in } if in.MountOptions != nil { in, out := &in.MountOptions, &out.MountOptions @@ -53,21 +49,13 @@ func (in *StorageClass) DeepCopyInto(out *StorageClass) { } if in.AllowVolumeExpansion != nil { in, out := &in.AllowVolumeExpansion, &out.AllowVolumeExpansion - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } if in.VolumeBindingMode != nil { in, out := &in.VolumeBindingMode, &out.VolumeBindingMode - if *in == nil { - *out = nil - } else { - *out = new(VolumeBindingMode) - **out = **in - } + *out = new(VolumeBindingMode) + **out = **in } if in.AllowedTopologies != nil { in, out := &in.AllowedTopologies, &out.AllowedTopologies @@ -196,12 +184,8 @@ func (in *VolumeAttachmentSource) DeepCopyInto(out *VolumeAttachmentSource) { *out = *in if in.PersistentVolumeName != nil { in, out := &in.PersistentVolumeName, &out.PersistentVolumeName - if *in == nil { - *out = nil - } else { - *out = new(string) - **out = **in - } + *out = new(string) + **out = **in } return } @@ -245,21 +229,13 @@ func (in *VolumeAttachmentStatus) DeepCopyInto(out *VolumeAttachmentStatus) { } if in.AttachError != nil { in, out := &in.AttachError, &out.AttachError - if *in == nil { - *out = nil - } else { - *out = new(VolumeError) - (*in).DeepCopyInto(*out) - } + *out = new(VolumeError) + (*in).DeepCopyInto(*out) } if in.DetachError != nil { in, out := &in.DetachError, &out.DetachError - if *in == nil { - *out = nil - } else { - *out = new(VolumeError) - (*in).DeepCopyInto(*out) - } + *out = new(VolumeError) + (*in).DeepCopyInto(*out) } return } diff --git a/cluster-autoscaler/vendor/k8s.io/apiextensions-apiserver/pkg/features/BUILD b/cluster-autoscaler/vendor/k8s.io/apiextensions-apiserver/pkg/features/BUILD index c6438cb40c..b2df8744d1 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiextensions-apiserver/pkg/features/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiextensions-apiserver/pkg/features/BUILD @@ -8,8 +8,9 @@ load( go_library( name = "go_default_library", srcs = ["kube_features.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiextensions-apiserver/pkg/features", importpath = "k8s.io/apiextensions-apiserver/pkg/features", - deps = ["//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library"], + deps = ["//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library"], ) filegroup( diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/equality/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/equality/BUILD index 75051f35b0..d526b508ac 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/equality/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/equality/BUILD @@ -8,13 +8,14 @@ load( go_library( name = "go_default_library", srcs = ["semantic.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/api/equality", importpath = "k8s.io/apimachinery/pkg/api/equality", deps = [ - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/errors/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/errors/BUILD index 785e9d8a6d..865a64fc58 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/errors/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/errors/BUILD @@ -11,10 +11,10 @@ go_test( srcs = ["errors_test.go"], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", ], ) @@ -24,12 +24,13 @@ go_library( "doc.go", "errors.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/api/errors", importpath = "k8s.io/apimachinery/pkg/api/errors", deps = [ - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/meta/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/meta/BUILD index 987eb1c06a..938ba9b5b7 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/meta/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/meta/BUILD @@ -16,11 +16,11 @@ go_test( ], embed = [":go_default_library"], deps = [ + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library", "//vendor/github.com/google/gofuzz:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", ], ) @@ -38,17 +38,18 @@ go_library( "priority.go", "restmapper.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/api/meta", importpath = "k8s.io/apimachinery/pkg/api/meta", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/resource/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/resource/BUILD index 7d2c84c92c..eb1ba72a55 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/resource/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/resource/BUILD @@ -11,6 +11,7 @@ go_test( srcs = [ "amount_test.go", "math_test.go", + "quantity_example_test.go", "quantity_proto_test.go", "quantity_test.go", "scale_int_test.go", @@ -34,6 +35,7 @@ go_library( "suffix.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/api/resource", importpath = "k8s.io/apimachinery/pkg/api/resource", deps = [ "//vendor/github.com/gogo/protobuf/proto:go_default_library", @@ -41,12 +43,6 @@ go_library( ], ) -go_test( - name = "go_default_xtest", - srcs = ["quantity_example_test.go"], - deps = ["//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library"], -) - filegroup( name = "package-srcs", srcs = glob(["**"]), @@ -59,9 +55,3 @@ filegroup( srcs = [":package-srcs"], tags = ["automanaged"], ) - -filegroup( - name = "go_default_library_protos", - srcs = ["generated.proto"], - visibility = ["//visibility:public"], -) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/resource/generated.proto b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/resource/generated.proto index 31a46a6d30..9b2c41f7e0 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/resource/generated.proto +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/resource/generated.proto @@ -67,11 +67,6 @@ option go_package = "resource"; // 1.5 will be serialized as "1500m" // 1.5Gi will be serialized as "1536Mi" // -// NOTE: We reserve the right to amend this canonical format, perhaps to -// allow 1.5 to be canonical. -// TODO: Remove above disclaimer after all bikeshedding about format is over, -// or after March 2015. -// // Note that the quantity will NEVER be internally represented by a // floating point number. That is the whole point of this exercise. // diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/resource/quantity.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/resource/quantity.go index c3cd139607..b155a62a45 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/resource/quantity.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/resource/quantity.go @@ -21,7 +21,6 @@ import ( "errors" "fmt" "math/big" - "regexp" "strconv" "strings" @@ -69,11 +68,6 @@ import ( // 1.5 will be serialized as "1500m" // 1.5Gi will be serialized as "1536Mi" // -// NOTE: We reserve the right to amend this canonical format, perhaps to -// allow 1.5 to be canonical. -// TODO: Remove above disclaimer after all bikeshedding about format is over, -// or after March 2015. -// // Note that the quantity will NEVER be internally represented by a // floating point number. That is the whole point of this exercise. // @@ -142,9 +136,6 @@ const ( ) var ( - // splitRE is used to get the various parts of a number. - splitRE = regexp.MustCompile(splitREString) - // Errors that could happen while parsing a string. ErrFormatWrong = errors.New("quantities must match the regular expression '" + splitREString + "'") ErrNumeric = errors.New("unable to parse numeric part of quantity") @@ -506,7 +497,7 @@ func (q *Quantity) Sign() int { return q.i.Sign() } -// AsScaled returns the current value, rounded up to the provided scale, and returns +// AsScale returns the current value, rounded up to the provided scale, and returns // false if the scale resulted in a loss of precision. func (q *Quantity) AsScale(scale Scale) (CanonicalValue, bool) { if q.d.Dec != nil { diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/validation/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/validation/BUILD index 2c6a0aa3d9..a1942396d8 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/validation/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/validation/BUILD @@ -11,8 +11,8 @@ go_test( srcs = ["objectmeta_test.go"], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", ], ) @@ -23,16 +23,17 @@ go_library( "generic.go", "objectmeta.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/api/validation", importpath = "k8s.io/apimachinery/pkg/api/validation", deps = [ - "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/validation:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/validation/path/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/validation/path/BUILD index ddc17e79e3..0bd49a4841 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/validation/path/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/validation/path/BUILD @@ -15,6 +15,7 @@ go_test( go_library( name = "go_default_library", srcs = ["name.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/api/validation/path", importpath = "k8s.io/apimachinery/pkg/api/validation/path", ) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/BUILD index edb9a6ac6a..e26604f356 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/BUILD @@ -14,10 +14,10 @@ go_test( ], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/apimachinery/pkg/api/testing/roundtrip:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/fuzzer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/testing/roundtrip:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/fuzzer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library", ], ) @@ -31,17 +31,18 @@ go_library( "zz_generated.conversion.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion", importpath = "k8s.io/apimachinery/pkg/apis/meta/internalversion", deps = [ - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/register.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/register.go index 4bde90b3ff..1d8878b784 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/register.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/register.go @@ -57,7 +57,7 @@ func addToGroupVersion(scheme *runtime.Scheme, groupVersion schema.GroupVersion) if err := scheme.AddIgnoredConversionType(&metav1.TypeMeta{}, &metav1.TypeMeta{}); err != nil { return err } - scheme.AddConversionFuncs( + err := scheme.AddConversionFuncs( metav1.Convert_string_To_labels_Selector, metav1.Convert_labels_Selector_To_string, @@ -70,6 +70,9 @@ func addToGroupVersion(scheme *runtime.Scheme, groupVersion schema.GroupVersion) Convert_internalversion_ListOptions_To_v1_ListOptions, Convert_v1_ListOptions_To_internalversion_ListOptions, ) + if err != nil { + return err + } // ListOptions is the only options struct which needs conversion (it exposes labels and fields // as selectors for convenience). The other types have only a single representation today. scheme.AddKnownTypes(SchemeGroupVersion, @@ -77,6 +80,8 @@ func addToGroupVersion(scheme *runtime.Scheme, groupVersion schema.GroupVersion) &metav1.GetOptions{}, &metav1.ExportOptions{}, &metav1.DeleteOptions{}, + &metav1.CreateOptions{}, + &metav1.UpdateOptions{}, ) scheme.AddKnownTypes(SchemeGroupVersion, &metav1beta1.Table{}, @@ -91,7 +96,10 @@ func addToGroupVersion(scheme *runtime.Scheme, groupVersion schema.GroupVersion) &metav1beta1.PartialObjectMetadataList{}, ) // Allow delete options to be decoded across all version in this scheme (we may want to be more clever than this) - scheme.AddUnversionedTypes(SchemeGroupVersion, &metav1.DeleteOptions{}) + scheme.AddUnversionedTypes(SchemeGroupVersion, + &metav1.DeleteOptions{}, + &metav1.CreateOptions{}, + &metav1.UpdateOptions{}) metav1.AddToGroupVersion(scheme, metav1.SchemeGroupVersion) return nil } diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/zz_generated.deepcopy.go index 77bd9a6b43..81d85e96e7 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/zz_generated.deepcopy.go @@ -33,9 +33,7 @@ func (in *List) DeepCopyInto(out *List) { in, out := &in.Items, &out.Items *out = make([]runtime.Object, len(*in)) for i := range *in { - if (*in)[i] == nil { - (*out)[i] = nil - } else { + if (*in)[i] != nil { (*out)[i] = (*in)[i].DeepCopyObject() } } @@ -65,24 +63,16 @@ func (in *List) DeepCopyObject() runtime.Object { func (in *ListOptions) DeepCopyInto(out *ListOptions) { *out = *in out.TypeMeta = in.TypeMeta - if in.LabelSelector == nil { - out.LabelSelector = nil - } else { + if in.LabelSelector != nil { out.LabelSelector = in.LabelSelector.DeepCopySelector() } - if in.FieldSelector == nil { - out.FieldSelector = nil - } else { + if in.FieldSelector != nil { out.FieldSelector = in.FieldSelector.DeepCopySelector() } if in.TimeoutSeconds != nil { in, out := &in.TimeoutSeconds, &out.TimeoutSeconds - if *in == nil { - *out = nil - } else { - *out = new(int64) - **out = **in - } + *out = new(int64) + **out = **in } return } diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/BUILD index 186db1871e..8b02313678 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/BUILD @@ -10,6 +10,7 @@ go_test( name = "go_default_test", srcs = [ "controller_ref_test.go", + "conversion_test.go", "duration_test.go", "group_version_test.go", "helpers_test.go", @@ -20,10 +21,11 @@ go_test( ], embed = [":go_default_library"], deps = [ + "//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer/json:go_default_library", "//vendor/github.com/ghodss/yaml:go_default_library", - "//vendor/github.com/json-iterator/go:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) @@ -50,21 +52,23 @@ go_library( "zz_generated.deepcopy.go", "zz_generated.defaults.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/apis/meta/v1", importpath = "k8s.io/apimachinery/pkg/apis/meta/v1", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/selection:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", "//vendor/github.com/google/gofuzz:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/selection:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", ], ) @@ -84,18 +88,3 @@ filegroup( ], tags = ["automanaged"], ) - -filegroup( - name = "go_default_library_protos", - srcs = ["generated.proto"], - visibility = ["//visibility:public"], -) - -go_test( - name = "go_default_xtest", - srcs = ["conversion_test.go"], - deps = [ - "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - ], -) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.pb.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.pb.go index febace5005..7375b727af 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.pb.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.pb.go @@ -30,6 +30,7 @@ limitations under the License. APIResource APIResourceList APIVersions + CreateOptions DeleteOptions Duration ExportOptions @@ -60,6 +61,7 @@ limitations under the License. Time Timestamp TypeMeta + UpdateOptions Verbs WatchEvent */ @@ -113,139 +115,147 @@ func (m *APIVersions) Reset() { *m = APIVersions{} } func (*APIVersions) ProtoMessage() {} func (*APIVersions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} } +func (m *CreateOptions) Reset() { *m = CreateOptions{} } +func (*CreateOptions) ProtoMessage() {} +func (*CreateOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{5} } + func (m *DeleteOptions) Reset() { *m = DeleteOptions{} } func (*DeleteOptions) ProtoMessage() {} -func (*DeleteOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{5} } +func (*DeleteOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{6} } func (m *Duration) Reset() { *m = Duration{} } func (*Duration) ProtoMessage() {} -func (*Duration) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{6} } +func (*Duration) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{7} } func (m *ExportOptions) Reset() { *m = ExportOptions{} } func (*ExportOptions) ProtoMessage() {} -func (*ExportOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{7} } +func (*ExportOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{8} } func (m *GetOptions) Reset() { *m = GetOptions{} } func (*GetOptions) ProtoMessage() {} -func (*GetOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{8} } +func (*GetOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{9} } func (m *GroupKind) Reset() { *m = GroupKind{} } func (*GroupKind) ProtoMessage() {} -func (*GroupKind) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{9} } +func (*GroupKind) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{10} } func (m *GroupResource) Reset() { *m = GroupResource{} } func (*GroupResource) ProtoMessage() {} -func (*GroupResource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{10} } +func (*GroupResource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{11} } func (m *GroupVersion) Reset() { *m = GroupVersion{} } func (*GroupVersion) ProtoMessage() {} -func (*GroupVersion) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{11} } +func (*GroupVersion) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{12} } func (m *GroupVersionForDiscovery) Reset() { *m = GroupVersionForDiscovery{} } func (*GroupVersionForDiscovery) ProtoMessage() {} func (*GroupVersionForDiscovery) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{12} + return fileDescriptorGenerated, []int{13} } func (m *GroupVersionKind) Reset() { *m = GroupVersionKind{} } func (*GroupVersionKind) ProtoMessage() {} -func (*GroupVersionKind) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{13} } +func (*GroupVersionKind) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{14} } func (m *GroupVersionResource) Reset() { *m = GroupVersionResource{} } func (*GroupVersionResource) ProtoMessage() {} -func (*GroupVersionResource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{14} } +func (*GroupVersionResource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{15} } func (m *Initializer) Reset() { *m = Initializer{} } func (*Initializer) ProtoMessage() {} -func (*Initializer) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{15} } +func (*Initializer) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{16} } func (m *Initializers) Reset() { *m = Initializers{} } func (*Initializers) ProtoMessage() {} -func (*Initializers) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{16} } +func (*Initializers) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{17} } func (m *LabelSelector) Reset() { *m = LabelSelector{} } func (*LabelSelector) ProtoMessage() {} -func (*LabelSelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{17} } +func (*LabelSelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{18} } func (m *LabelSelectorRequirement) Reset() { *m = LabelSelectorRequirement{} } func (*LabelSelectorRequirement) ProtoMessage() {} func (*LabelSelectorRequirement) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{18} + return fileDescriptorGenerated, []int{19} } func (m *List) Reset() { *m = List{} } func (*List) ProtoMessage() {} -func (*List) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{19} } +func (*List) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{20} } func (m *ListMeta) Reset() { *m = ListMeta{} } func (*ListMeta) ProtoMessage() {} -func (*ListMeta) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{20} } +func (*ListMeta) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{21} } func (m *ListOptions) Reset() { *m = ListOptions{} } func (*ListOptions) ProtoMessage() {} -func (*ListOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{21} } +func (*ListOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{22} } func (m *MicroTime) Reset() { *m = MicroTime{} } func (*MicroTime) ProtoMessage() {} -func (*MicroTime) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{22} } +func (*MicroTime) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{23} } func (m *ObjectMeta) Reset() { *m = ObjectMeta{} } func (*ObjectMeta) ProtoMessage() {} -func (*ObjectMeta) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{23} } +func (*ObjectMeta) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{24} } func (m *OwnerReference) Reset() { *m = OwnerReference{} } func (*OwnerReference) ProtoMessage() {} -func (*OwnerReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{24} } +func (*OwnerReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{25} } func (m *Patch) Reset() { *m = Patch{} } func (*Patch) ProtoMessage() {} -func (*Patch) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{25} } +func (*Patch) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{26} } func (m *Preconditions) Reset() { *m = Preconditions{} } func (*Preconditions) ProtoMessage() {} -func (*Preconditions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{26} } +func (*Preconditions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{27} } func (m *RootPaths) Reset() { *m = RootPaths{} } func (*RootPaths) ProtoMessage() {} -func (*RootPaths) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{27} } +func (*RootPaths) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{28} } func (m *ServerAddressByClientCIDR) Reset() { *m = ServerAddressByClientCIDR{} } func (*ServerAddressByClientCIDR) ProtoMessage() {} func (*ServerAddressByClientCIDR) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{28} + return fileDescriptorGenerated, []int{29} } func (m *Status) Reset() { *m = Status{} } func (*Status) ProtoMessage() {} -func (*Status) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{29} } +func (*Status) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{30} } func (m *StatusCause) Reset() { *m = StatusCause{} } func (*StatusCause) ProtoMessage() {} -func (*StatusCause) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{30} } +func (*StatusCause) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{31} } func (m *StatusDetails) Reset() { *m = StatusDetails{} } func (*StatusDetails) ProtoMessage() {} -func (*StatusDetails) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{31} } +func (*StatusDetails) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{32} } func (m *Time) Reset() { *m = Time{} } func (*Time) ProtoMessage() {} -func (*Time) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{32} } +func (*Time) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{33} } func (m *Timestamp) Reset() { *m = Timestamp{} } func (*Timestamp) ProtoMessage() {} -func (*Timestamp) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{33} } +func (*Timestamp) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{34} } func (m *TypeMeta) Reset() { *m = TypeMeta{} } func (*TypeMeta) ProtoMessage() {} -func (*TypeMeta) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{34} } +func (*TypeMeta) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{35} } + +func (m *UpdateOptions) Reset() { *m = UpdateOptions{} } +func (*UpdateOptions) ProtoMessage() {} +func (*UpdateOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{36} } func (m *Verbs) Reset() { *m = Verbs{} } func (*Verbs) ProtoMessage() {} -func (*Verbs) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{35} } +func (*Verbs) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{37} } func (m *WatchEvent) Reset() { *m = WatchEvent{} } func (*WatchEvent) ProtoMessage() {} -func (*WatchEvent) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{36} } +func (*WatchEvent) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{38} } func init() { proto.RegisterType((*APIGroup)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.APIGroup") @@ -253,6 +263,7 @@ func init() { proto.RegisterType((*APIResource)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.APIResource") proto.RegisterType((*APIResourceList)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.APIResourceList") proto.RegisterType((*APIVersions)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.APIVersions") + 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((*ExportOptions)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.ExportOptions") @@ -283,6 +294,7 @@ func init() { proto.RegisterType((*Time)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.Time") proto.RegisterType((*Timestamp)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.Timestamp") proto.RegisterType((*TypeMeta)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.TypeMeta") + proto.RegisterType((*UpdateOptions)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.UpdateOptions") proto.RegisterType((*Verbs)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.Verbs") proto.RegisterType((*WatchEvent)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.WatchEvent") } @@ -535,6 +547,47 @@ func (m *APIVersions) MarshalTo(dAtA []byte) (int, error) { return i, nil } +func (m *CreateOptions) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CreateOptions) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.DryRun) > 0 { + for _, s := range m.DryRun { + dAtA[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + dAtA[i] = 0x10 + i++ + if m.IncludeUninitialized { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + return i, nil +} + func (m *DeleteOptions) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -581,6 +634,21 @@ func (m *DeleteOptions) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintGenerated(dAtA, i, uint64(len(*m.PropagationPolicy))) i += copy(dAtA[i:], *m.PropagationPolicy) } + if len(m.DryRun) > 0 { + for _, s := range m.DryRun { + dAtA[i] = 0x2a + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } return i, nil } @@ -1604,6 +1672,39 @@ func (m *TypeMeta) MarshalTo(dAtA []byte) (int, error) { return i, nil } +func (m *UpdateOptions) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *UpdateOptions) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.DryRun) > 0 { + for _, s := range m.DryRun { + dAtA[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + return i, nil +} + func (m Verbs) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -1793,6 +1894,19 @@ func (m *APIVersions) Size() (n int) { return n } +func (m *CreateOptions) Size() (n int) { + var l int + _ = l + if len(m.DryRun) > 0 { + for _, s := range m.DryRun { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + n += 2 + return n +} + func (m *DeleteOptions) Size() (n int) { var l int _ = l @@ -1810,6 +1924,12 @@ func (m *DeleteOptions) Size() (n int) { l = len(*m.PropagationPolicy) n += 1 + l + sovGenerated(uint64(l)) } + if len(m.DryRun) > 0 { + for _, s := range m.DryRun { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } return n } @@ -2197,6 +2317,18 @@ func (m *TypeMeta) Size() (n int) { return n } +func (m *UpdateOptions) Size() (n int) { + var l int + _ = l + if len(m.DryRun) > 0 { + for _, s := range m.DryRun { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + func (m Verbs) Size() (n int) { var l int _ = l @@ -2284,6 +2416,17 @@ func (this *APIResourceList) String() string { }, "") return s } +func (this *CreateOptions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CreateOptions{`, + `DryRun:` + fmt.Sprintf("%v", this.DryRun) + `,`, + `IncludeUninitialized:` + fmt.Sprintf("%v", this.IncludeUninitialized) + `,`, + `}`, + }, "") + return s +} func (this *DeleteOptions) String() string { if this == nil { return "nil" @@ -2293,6 +2436,7 @@ func (this *DeleteOptions) String() string { `Preconditions:` + strings.Replace(fmt.Sprintf("%v", this.Preconditions), "Preconditions", "Preconditions", 1) + `,`, `OrphanDependents:` + valueToStringGenerated(this.OrphanDependents) + `,`, `PropagationPolicy:` + valueToStringGenerated(this.PropagationPolicy) + `,`, + `DryRun:` + fmt.Sprintf("%v", this.DryRun) + `,`, `}`, }, "") return s @@ -2598,6 +2742,16 @@ func (this *TypeMeta) String() string { }, "") return s } +func (this *UpdateOptions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&UpdateOptions{`, + `DryRun:` + fmt.Sprintf("%v", this.DryRun) + `,`, + `}`, + }, "") + return s +} func (this *WatchEvent) String() string { if this == nil { return "nil" @@ -3395,6 +3549,105 @@ func (m *APIVersions) Unmarshal(dAtA []byte) error { } return nil } +func (m *CreateOptions) 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: CreateOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CreateOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DryRun", 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 > l { + return io.ErrUnexpectedEOF + } + m.DryRun = append(m.DryRun, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field IncludeUninitialized", 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.IncludeUninitialized = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *DeleteOptions) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -3528,6 +3781,35 @@ func (m *DeleteOptions) Unmarshal(dAtA []byte) error { s := DeletionPropagation(dAtA[iNdEx:postIndex]) m.PropagationPolicy = &s iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DryRun", 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 > l { + return io.ErrUnexpectedEOF + } + m.DryRun = append(m.DryRun, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -7506,6 +7788,85 @@ func (m *TypeMeta) Unmarshal(dAtA []byte) error { } return nil } +func (m *UpdateOptions) 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: UpdateOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: UpdateOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DryRun", 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 > l { + return io.ErrUnexpectedEOF + } + m.DryRun = append(m.DryRun, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *Verbs) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -7804,158 +8165,160 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 2435 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x59, 0x4d, 0x6c, 0x23, 0x49, - 0x15, 0x4e, 0xdb, 0xb1, 0x63, 0x3f, 0xc7, 0xf9, 0xa9, 0xcd, 0x80, 0x37, 0x02, 0x3b, 0xdb, 0x8b, - 0x56, 0x59, 0x98, 0xb5, 0x49, 0x16, 0x56, 0xc3, 0x00, 0x03, 0xe9, 0x38, 0x33, 0x8a, 0x76, 0x32, - 0x63, 0x55, 0x76, 0x06, 0x31, 0x8c, 0x10, 0x9d, 0x76, 0xc5, 0x69, 0xd2, 0xee, 0xf6, 0x56, 0x95, - 0x33, 0x09, 0x1c, 0xd8, 0x03, 0x48, 0x1c, 0x10, 0x9a, 0x23, 0x27, 0xb4, 0x23, 0xb8, 0x70, 0xe5, - 0xc4, 0x05, 0x4e, 0x48, 0xcc, 0x71, 0x24, 0x2e, 0x7b, 0x40, 0xd6, 0x8e, 0xf7, 0xc0, 0x09, 0x71, - 0xcf, 0x09, 0x55, 0x75, 0xf5, 0x9f, 0x1d, 0x4f, 0xda, 0x3b, 0x0b, 0xe2, 0x14, 0xf7, 0xfb, 0xf9, - 0xde, 0xab, 0x57, 0xaf, 0x5e, 0xbd, 0x7a, 0x81, 0xbd, 0xe3, 0x6b, 0xac, 0x6e, 0x7b, 0x8d, 0xe3, - 0xfe, 0x01, 0xa1, 0x2e, 0xe1, 0x84, 0x35, 0x4e, 0x88, 0xdb, 0xf6, 0x68, 0x43, 0x31, 0xcc, 0x9e, - 0xdd, 0x35, 0xad, 0x23, 0xdb, 0x25, 0xf4, 0xac, 0xd1, 0x3b, 0xee, 0x08, 0x02, 0x6b, 0x74, 0x09, - 0x37, 0x1b, 0x27, 0x1b, 0x8d, 0x0e, 0x71, 0x09, 0x35, 0x39, 0x69, 0xd7, 0x7b, 0xd4, 0xe3, 0x1e, - 0xfa, 0x92, 0xaf, 0x55, 0x8f, 0x6b, 0xd5, 0x7b, 0xc7, 0x1d, 0x41, 0x60, 0x75, 0xa1, 0x55, 0x3f, - 0xd9, 0x58, 0x7d, 0xab, 0x63, 0xf3, 0xa3, 0xfe, 0x41, 0xdd, 0xf2, 0xba, 0x8d, 0x8e, 0xd7, 0xf1, - 0x1a, 0x52, 0xf9, 0xa0, 0x7f, 0x28, 0xbf, 0xe4, 0x87, 0xfc, 0xe5, 0x83, 0xae, 0x4e, 0x74, 0x85, - 0xf6, 0x5d, 0x6e, 0x77, 0xc9, 0xa8, 0x17, 0xab, 0xef, 0x5c, 0xa6, 0xc0, 0xac, 0x23, 0xd2, 0x35, - 0xc7, 0xf4, 0xde, 0x9e, 0xa4, 0xd7, 0xe7, 0xb6, 0xd3, 0xb0, 0x5d, 0xce, 0x38, 0x1d, 0x55, 0xd2, - 0xff, 0x96, 0x85, 0xc2, 0x56, 0x6b, 0xf7, 0x16, 0xf5, 0xfa, 0x3d, 0xb4, 0x06, 0xb3, 0xae, 0xd9, - 0x25, 0x15, 0x6d, 0x4d, 0x5b, 0x2f, 0x1a, 0xf3, 0x4f, 0x07, 0xb5, 0x99, 0xe1, 0xa0, 0x36, 0x7b, - 0xc7, 0xec, 0x12, 0x2c, 0x39, 0xc8, 0x81, 0xc2, 0x09, 0xa1, 0xcc, 0xf6, 0x5c, 0x56, 0xc9, 0xac, - 0x65, 0xd7, 0x4b, 0x9b, 0x37, 0xea, 0x69, 0x82, 0x56, 0x97, 0x06, 0xee, 0xfb, 0xaa, 0x37, 0x3d, - 0xda, 0xb4, 0x99, 0xe5, 0x9d, 0x10, 0x7a, 0x66, 0x2c, 0x29, 0x2b, 0x05, 0xc5, 0x64, 0x38, 0xb4, - 0x80, 0x7e, 0xae, 0xc1, 0x52, 0x8f, 0x92, 0x43, 0x42, 0x29, 0x69, 0x2b, 0x7e, 0x25, 0xbb, 0xa6, - 0x7d, 0x06, 0x66, 0x2b, 0xca, 0xec, 0x52, 0x6b, 0x04, 0x1f, 0x8f, 0x59, 0x44, 0xbf, 0xd3, 0x60, - 0x95, 0x11, 0x7a, 0x42, 0xe8, 0x56, 0xbb, 0x4d, 0x09, 0x63, 0xc6, 0xd9, 0xb6, 0x63, 0x13, 0x97, - 0x6f, 0xef, 0x36, 0x31, 0xab, 0xcc, 0xca, 0x38, 0x7c, 0x27, 0x9d, 0x43, 0xfb, 0x93, 0x70, 0x0c, - 0x5d, 0x79, 0xb4, 0x3a, 0x51, 0x84, 0xe1, 0x17, 0xb8, 0xa1, 0x1f, 0xc2, 0x7c, 0xb0, 0x91, 0xb7, - 0x6d, 0xc6, 0xd1, 0x7d, 0xc8, 0x77, 0xc4, 0x07, 0xab, 0x68, 0xd2, 0xc1, 0x7a, 0x3a, 0x07, 0x03, - 0x0c, 0x63, 0x41, 0xf9, 0x93, 0x97, 0x9f, 0x0c, 0x2b, 0x34, 0xfd, 0xcf, 0x59, 0x28, 0x6d, 0xb5, - 0x76, 0x31, 0x61, 0x5e, 0x9f, 0x5a, 0x24, 0x45, 0xd2, 0x6c, 0x02, 0x88, 0xbf, 0xac, 0x67, 0x5a, - 0xa4, 0x5d, 0xc9, 0xac, 0x69, 0xeb, 0x05, 0x03, 0x29, 0x39, 0xb8, 0x13, 0x72, 0x70, 0x4c, 0x4a, - 0xa0, 0x1e, 0xdb, 0x6e, 0x5b, 0xee, 0x76, 0x0c, 0xf5, 0x5d, 0xdb, 0x6d, 0x63, 0xc9, 0x41, 0xb7, - 0x21, 0x77, 0x42, 0xe8, 0x81, 0x88, 0xbf, 0x48, 0x88, 0xaf, 0xa4, 0x5b, 0xde, 0x7d, 0xa1, 0x62, - 0x14, 0x87, 0x83, 0x5a, 0x4e, 0xfe, 0xc4, 0x3e, 0x08, 0xaa, 0x03, 0xb0, 0x23, 0x8f, 0x72, 0xe9, - 0x4e, 0x25, 0xb7, 0x96, 0x5d, 0x2f, 0x1a, 0x0b, 0xc2, 0xbf, 0xfd, 0x90, 0x8a, 0x63, 0x12, 0xe8, - 0x1a, 0xcc, 0x33, 0xdb, 0xed, 0xf4, 0x1d, 0x93, 0x0a, 0x42, 0x25, 0x2f, 0xfd, 0x5c, 0x51, 0x7e, - 0xce, 0xef, 0xc7, 0x78, 0x38, 0x21, 0x29, 0x2c, 0x59, 0x26, 0x27, 0x1d, 0x8f, 0xda, 0x84, 0x55, - 0xe6, 0x22, 0x4b, 0xdb, 0x21, 0x15, 0xc7, 0x24, 0xd0, 0xeb, 0x90, 0x93, 0x91, 0xaf, 0x14, 0xa4, - 0x89, 0xb2, 0x32, 0x91, 0x93, 0xdb, 0x82, 0x7d, 0x1e, 0x7a, 0x13, 0xe6, 0xd4, 0xa9, 0xa9, 0x14, - 0xa5, 0xd8, 0xa2, 0x12, 0x9b, 0x0b, 0xd2, 0x3a, 0xe0, 0xeb, 0x7f, 0xd4, 0x60, 0x31, 0xb6, 0x7f, - 0x32, 0x57, 0xae, 0xc1, 0x7c, 0x27, 0x76, 0x52, 0xd4, 0x5e, 0x86, 0xab, 0x89, 0x9f, 0x22, 0x9c, - 0x90, 0x44, 0x04, 0x8a, 0x54, 0x21, 0x05, 0x15, 0x61, 0x23, 0x75, 0xa2, 0x05, 0x3e, 0x44, 0x96, - 0x62, 0x44, 0x86, 0x23, 0x64, 0xfd, 0x9f, 0x9a, 0x4c, 0xba, 0xa0, 0x46, 0xa0, 0xf5, 0x58, 0x1d, - 0xd2, 0x64, 0x08, 0xe7, 0x27, 0xd4, 0x90, 0x4b, 0x0e, 0x6f, 0xe6, 0xff, 0xe2, 0xf0, 0x5e, 0x2f, - 0xfc, 0xe6, 0xc3, 0xda, 0xcc, 0x07, 0xff, 0x58, 0x9b, 0xd1, 0x3f, 0xc9, 0x40, 0xb9, 0x49, 0x1c, - 0xc2, 0xc9, 0xdd, 0x1e, 0x97, 0x2b, 0xb8, 0x09, 0xa8, 0x43, 0x4d, 0x8b, 0xb4, 0x08, 0xb5, 0xbd, - 0xf6, 0x3e, 0xb1, 0x3c, 0xb7, 0xcd, 0xe4, 0x16, 0x65, 0x8d, 0xcf, 0x0d, 0x07, 0x35, 0x74, 0x6b, - 0x8c, 0x8b, 0x2f, 0xd0, 0x40, 0x0e, 0x94, 0x7b, 0x54, 0xfe, 0xb6, 0xb9, 0x2a, 0xe0, 0xe2, 0xe0, - 0xbc, 0x9d, 0x6e, 0xed, 0xad, 0xb8, 0xaa, 0xb1, 0x3c, 0x1c, 0xd4, 0xca, 0x09, 0x12, 0x4e, 0x82, - 0xa3, 0xef, 0xc2, 0x92, 0x47, 0x7b, 0x47, 0xa6, 0xdb, 0x24, 0x3d, 0xe2, 0xb6, 0x89, 0xcb, 0x99, - 0x3c, 0xcc, 0x05, 0x63, 0x45, 0x94, 0xdd, 0xbb, 0x23, 0x3c, 0x3c, 0x26, 0x8d, 0x1e, 0xc0, 0x72, - 0x8f, 0x7a, 0x3d, 0xb3, 0x63, 0x0a, 0xc4, 0x96, 0xe7, 0xd8, 0xd6, 0x99, 0x3c, 0xec, 0x45, 0xe3, - 0xea, 0x70, 0x50, 0x5b, 0x6e, 0x8d, 0x32, 0xcf, 0x07, 0xb5, 0x57, 0x64, 0xe8, 0x04, 0x25, 0x62, - 0xe2, 0x71, 0x18, 0x7d, 0x17, 0x0a, 0xcd, 0x3e, 0x95, 0x14, 0xf4, 0x6d, 0x28, 0xb4, 0xd5, 0x6f, - 0x15, 0xd5, 0xd7, 0x82, 0x3b, 0x29, 0x90, 0x39, 0x1f, 0xd4, 0xca, 0xe2, 0xea, 0xad, 0x07, 0x04, - 0x1c, 0xaa, 0xe8, 0x0f, 0xa1, 0xbc, 0x73, 0xda, 0xf3, 0x28, 0x0f, 0xf6, 0xeb, 0x0d, 0xc8, 0x13, - 0x49, 0x90, 0x68, 0x85, 0xa8, 0x90, 0xfa, 0x62, 0x58, 0x71, 0xc5, 0xc1, 0x26, 0xa7, 0xa6, 0xc5, - 0x55, 0x45, 0x0c, 0x0f, 0xf6, 0x8e, 0x20, 0x62, 0x9f, 0xa7, 0x3f, 0xd1, 0x00, 0x6e, 0x91, 0x10, - 0x7b, 0x0b, 0x16, 0x83, 0x43, 0x91, 0x3c, 0xab, 0x9f, 0x57, 0xda, 0x8b, 0x38, 0xc9, 0xc6, 0xa3, - 0xf2, 0xa8, 0x05, 0x2b, 0xb6, 0x6b, 0x39, 0xfd, 0x36, 0xb9, 0xe7, 0xda, 0xae, 0xcd, 0x6d, 0xd3, - 0xb1, 0x7f, 0x12, 0xd6, 0xe5, 0x2f, 0x28, 0x9c, 0x95, 0xdd, 0x0b, 0x64, 0xf0, 0x85, 0x9a, 0xfa, - 0x43, 0x28, 0xca, 0x0a, 0x21, 0x8a, 0x73, 0x54, 0xae, 0xb4, 0x17, 0x94, 0xab, 0xa0, 0xba, 0x67, - 0x26, 0x55, 0xf7, 0xd8, 0x81, 0x70, 0xa0, 0xec, 0xeb, 0x06, 0x17, 0x4e, 0x2a, 0x0b, 0x57, 0xa1, - 0x10, 0x2c, 0x5c, 0x59, 0x09, 0x1b, 0x8d, 0x00, 0x08, 0x87, 0x12, 0x31, 0x6b, 0x47, 0x90, 0xa8, - 0x76, 0xe9, 0x8c, 0xc5, 0xaa, 0x6f, 0xe6, 0xc5, 0xd5, 0x37, 0x66, 0xe9, 0x67, 0x50, 0x99, 0xd4, - 0x9d, 0xbc, 0x44, 0x3d, 0x4e, 0xef, 0x8a, 0xfe, 0x6b, 0x0d, 0x96, 0xe2, 0x48, 0xe9, 0xb7, 0x2f, - 0xbd, 0x91, 0xcb, 0xef, 0xf1, 0x58, 0x44, 0x7e, 0xab, 0xc1, 0x4a, 0x62, 0x69, 0x53, 0xed, 0xf8, - 0x14, 0x4e, 0xc5, 0x93, 0x23, 0x3b, 0x45, 0x72, 0x34, 0xa0, 0xb4, 0x1b, 0xe6, 0x3d, 0xbd, 0xbc, - 0xf3, 0xd1, 0xff, 0xa2, 0xc1, 0x7c, 0x4c, 0x83, 0xa1, 0x87, 0x30, 0x27, 0xea, 0x9b, 0xed, 0x76, - 0x54, 0x57, 0x96, 0xf2, 0xb2, 0x8c, 0x81, 0x44, 0xeb, 0x6a, 0xf9, 0x48, 0x38, 0x80, 0x44, 0x2d, - 0xc8, 0x53, 0xc2, 0xfa, 0x0e, 0x57, 0xa5, 0xfd, 0x6a, 0xca, 0x6b, 0x8d, 0x9b, 0xbc, 0xcf, 0x0c, - 0x10, 0x35, 0x0a, 0x4b, 0x7d, 0xac, 0x70, 0xf4, 0xbf, 0x67, 0xa0, 0x7c, 0xdb, 0x3c, 0x20, 0xce, - 0x3e, 0x71, 0x88, 0xc5, 0x3d, 0x8a, 0x7e, 0x0a, 0xa5, 0xae, 0xc9, 0xad, 0x23, 0x49, 0x0d, 0x7a, - 0xcb, 0x66, 0x3a, 0x43, 0x09, 0xa4, 0xfa, 0x5e, 0x04, 0xb3, 0xe3, 0x72, 0x7a, 0x66, 0xbc, 0xa2, - 0x16, 0x56, 0x8a, 0x71, 0x70, 0xdc, 0x9a, 0x7c, 0x10, 0xc8, 0xef, 0x9d, 0xd3, 0x9e, 0xb8, 0x44, - 0xa7, 0x7f, 0x87, 0x24, 0x5c, 0xc0, 0xe4, 0xfd, 0xbe, 0x4d, 0x49, 0x97, 0xb8, 0x3c, 0x7a, 0x10, - 0xec, 0x8d, 0xe0, 0xe3, 0x31, 0x8b, 0xab, 0x37, 0x60, 0x69, 0xd4, 0x79, 0xb4, 0x04, 0xd9, 0x63, - 0x72, 0xe6, 0xe7, 0x02, 0x16, 0x3f, 0xd1, 0x0a, 0xe4, 0x4e, 0x4c, 0xa7, 0xaf, 0xea, 0x0f, 0xf6, - 0x3f, 0xae, 0x67, 0xae, 0x69, 0xfa, 0xef, 0x35, 0xa8, 0x4c, 0x72, 0x04, 0x7d, 0x31, 0x06, 0x64, - 0x94, 0x94, 0x57, 0xd9, 0x77, 0xc9, 0x99, 0x8f, 0xba, 0x03, 0x05, 0xaf, 0x27, 0x9e, 0x70, 0x1e, - 0x55, 0x79, 0xfe, 0x66, 0x90, 0xbb, 0x77, 0x15, 0xfd, 0x7c, 0x50, 0xbb, 0x92, 0x80, 0x0f, 0x18, - 0x38, 0x54, 0x45, 0x3a, 0xe4, 0xa5, 0x3f, 0xe2, 0x52, 0x16, 0xed, 0x93, 0xdc, 0xfc, 0xfb, 0x92, - 0x82, 0x15, 0x47, 0xff, 0x93, 0x06, 0xb3, 0xb2, 0x3d, 0x7c, 0x08, 0x05, 0x11, 0xbf, 0xb6, 0xc9, - 0x4d, 0xe9, 0x57, 0xea, 0xc7, 0x84, 0xd0, 0xde, 0x23, 0xdc, 0x8c, 0xce, 0x57, 0x40, 0xc1, 0x21, - 0x22, 0xc2, 0x90, 0xb3, 0x39, 0xe9, 0x06, 0x1b, 0xf9, 0xd6, 0x44, 0x68, 0xf5, 0xfe, 0xad, 0x63, - 0xf3, 0xd1, 0xce, 0x29, 0x27, 0xae, 0xd8, 0x8c, 0xa8, 0x18, 0xec, 0x0a, 0x0c, 0xec, 0x43, 0xe9, - 0x7f, 0xd0, 0x20, 0x34, 0x25, 0x8e, 0x3b, 0x23, 0xce, 0xe1, 0x6d, 0xdb, 0x3d, 0x56, 0x61, 0x0d, - 0xdd, 0xd9, 0x57, 0x74, 0x1c, 0x4a, 0x5c, 0x74, 0xc5, 0x66, 0xa6, 0xbc, 0x62, 0xaf, 0x42, 0xc1, - 0xf2, 0x5c, 0x6e, 0xbb, 0xfd, 0xb1, 0xfa, 0xb2, 0xad, 0xe8, 0x38, 0x94, 0xd0, 0x9f, 0x65, 0xa1, - 0x24, 0x7c, 0x0d, 0xee, 0xf8, 0x6f, 0x42, 0xd9, 0x89, 0xef, 0x9e, 0xf2, 0xf9, 0x8a, 0x82, 0x48, - 0x9e, 0x47, 0x9c, 0x94, 0x15, 0xca, 0x87, 0x36, 0x71, 0xda, 0xa1, 0x72, 0x26, 0xa9, 0x7c, 0x33, - 0xce, 0xc4, 0x49, 0x59, 0x51, 0x67, 0x1f, 0x89, 0xbc, 0x56, 0x8d, 0x5a, 0x18, 0xda, 0xef, 0x09, - 0x22, 0xf6, 0x79, 0x17, 0xc5, 0x67, 0x76, 0xca, 0xf8, 0x5c, 0x87, 0x05, 0xb1, 0x91, 0x5e, 0x9f, - 0x07, 0xdd, 0x6c, 0x4e, 0xf6, 0x5d, 0x68, 0x38, 0xa8, 0x2d, 0xbc, 0x97, 0xe0, 0xe0, 0x11, 0xc9, - 0x89, 0xed, 0x4b, 0xfe, 0xd3, 0xb6, 0x2f, 0x62, 0xd5, 0x8e, 0xdd, 0xb5, 0x79, 0x65, 0x4e, 0x3a, - 0x11, 0xae, 0xfa, 0xb6, 0x20, 0x62, 0x9f, 0x97, 0xd8, 0xd2, 0xc2, 0xa5, 0x5b, 0xfa, 0x3e, 0x14, - 0xf7, 0x6c, 0x8b, 0x7a, 0x62, 0x2d, 0xe2, 0x62, 0x62, 0x89, 0xa6, 0x3d, 0x2c, 0xe0, 0xc1, 0x1a, - 0x03, 0xbe, 0x70, 0xc5, 0x35, 0x5d, 0xcf, 0x6f, 0xcd, 0x73, 0x91, 0x2b, 0x77, 0x04, 0x11, 0xfb, - 0xbc, 0xeb, 0x2b, 0xe2, 0x3e, 0xfa, 0xe5, 0x93, 0xda, 0xcc, 0xe3, 0x27, 0xb5, 0x99, 0x0f, 0x9f, - 0xa8, 0xbb, 0xe9, 0x5f, 0x00, 0x70, 0xf7, 0xe0, 0xc7, 0xc4, 0xf2, 0x73, 0xfe, 0xf2, 0x57, 0xb9, - 0xe8, 0x31, 0xd4, 0x30, 0x48, 0xbe, 0x60, 0x33, 0x23, 0x3d, 0x46, 0x8c, 0x87, 0x13, 0x92, 0xa8, - 0x01, 0xc5, 0xf0, 0xa5, 0xae, 0xf2, 0x7b, 0x59, 0xa9, 0x15, 0xc3, 0xe7, 0x3c, 0x8e, 0x64, 0x12, - 0x07, 0x70, 0xf6, 0xd2, 0x03, 0x68, 0x40, 0xb6, 0x6f, 0xb7, 0x65, 0x4a, 0x14, 0x8d, 0xaf, 0x06, - 0x05, 0xf0, 0xde, 0x6e, 0xf3, 0x7c, 0x50, 0x7b, 0x6d, 0xd2, 0x8c, 0x8b, 0x9f, 0xf5, 0x08, 0xab, - 0xdf, 0xdb, 0x6d, 0x62, 0xa1, 0x7c, 0x51, 0x92, 0xe6, 0xa7, 0x4c, 0xd2, 0x4d, 0x00, 0xb5, 0x6a, - 0xa1, 0xed, 0xe7, 0x46, 0x38, 0xb5, 0xb8, 0x15, 0x72, 0x70, 0x4c, 0x0a, 0x31, 0x58, 0xb6, 0x28, - 0x91, 0xbf, 0xc5, 0xd6, 0x33, 0x6e, 0x76, 0xfd, 0x77, 0x7b, 0x69, 0xf3, 0xcb, 0xe9, 0x2a, 0xa6, - 0x50, 0x33, 0x5e, 0x55, 0x66, 0x96, 0xb7, 0x47, 0xc1, 0xf0, 0x38, 0x3e, 0xf2, 0x60, 0xb9, 0xad, - 0x5e, 0x3d, 0x91, 0xd1, 0xe2, 0xd4, 0x46, 0xaf, 0x08, 0x83, 0xcd, 0x51, 0x20, 0x3c, 0x8e, 0x8d, - 0x7e, 0x08, 0xab, 0x01, 0x71, 0xfc, 0xe9, 0x59, 0x01, 0x19, 0xa9, 0xaa, 0x78, 0x0c, 0x37, 0x27, - 0x4a, 0xe1, 0x17, 0x20, 0xa0, 0x36, 0xe4, 0x1d, 0xbf, 0xbb, 0x28, 0xc9, 0x1b, 0xe1, 0x5b, 0xe9, - 0x56, 0x11, 0x65, 0x7f, 0x3d, 0xde, 0x55, 0x84, 0xcf, 0x2f, 0xd5, 0x50, 0x28, 0x6c, 0x74, 0x0a, - 0x25, 0xd3, 0x75, 0x3d, 0x6e, 0xfa, 0x8f, 0xe1, 0x79, 0x69, 0x6a, 0x6b, 0x6a, 0x53, 0x5b, 0x11, - 0xc6, 0x48, 0x17, 0x13, 0xe3, 0xe0, 0xb8, 0x29, 0xf4, 0x08, 0x16, 0xbd, 0x47, 0x2e, 0xa1, 0x98, - 0x1c, 0x12, 0x4a, 0x5c, 0x8b, 0xb0, 0x4a, 0x59, 0x5a, 0xff, 0x5a, 0x4a, 0xeb, 0x09, 0xe5, 0x28, - 0xa5, 0x93, 0x74, 0x86, 0x47, 0xad, 0xa0, 0x3a, 0xc0, 0xa1, 0xed, 0xaa, 0x5e, 0xb4, 0xb2, 0x10, - 0x8d, 0x9e, 0x6e, 0x86, 0x54, 0x1c, 0x93, 0x40, 0x5f, 0x87, 0x92, 0xe5, 0xf4, 0x19, 0x27, 0xfe, - 0x8c, 0x6b, 0x51, 0x9e, 0xa0, 0x70, 0x7d, 0xdb, 0x11, 0x0b, 0xc7, 0xe5, 0xd0, 0x11, 0xcc, 0xdb, - 0xb1, 0xa6, 0xb7, 0xb2, 0x24, 0x73, 0x71, 0x73, 0xea, 0x4e, 0x97, 0x19, 0x4b, 0xa2, 0x12, 0xc5, - 0x29, 0x38, 0x81, 0xbc, 0xfa, 0x0d, 0x28, 0x7d, 0xca, 0x1e, 0x4c, 0xf4, 0x70, 0xa3, 0x5b, 0x37, - 0x55, 0x0f, 0xf7, 0xd7, 0x0c, 0x2c, 0x24, 0x03, 0x1e, 0xbe, 0x75, 0xb4, 0x89, 0x33, 0xcb, 0xa0, - 0x2a, 0x67, 0x27, 0x56, 0x65, 0x55, 0xfc, 0x66, 0x5f, 0xa6, 0xf8, 0x6d, 0x02, 0x98, 0x3d, 0x3b, - 0xa8, 0x7b, 0x7e, 0x1d, 0x0d, 0x2b, 0x57, 0x34, 0x45, 0xc3, 0x31, 0x29, 0x39, 0x95, 0xf4, 0x5c, - 0x4e, 0x3d, 0xc7, 0x21, 0x54, 0x5d, 0xa6, 0xfe, 0x54, 0x32, 0xa4, 0xe2, 0x98, 0x04, 0xba, 0x09, - 0xe8, 0xc0, 0xf1, 0xac, 0x63, 0x19, 0x82, 0xe0, 0x9c, 0xcb, 0x2a, 0x59, 0xf0, 0x87, 0x52, 0xc6, - 0x18, 0x17, 0x5f, 0xa0, 0xa1, 0xcf, 0x41, 0xae, 0x25, 0xda, 0x0a, 0xfd, 0x2e, 0x24, 0xe7, 0x49, - 0xe8, 0x86, 0x1f, 0x09, 0x2d, 0x1c, 0xf8, 0x4c, 0x17, 0x05, 0xfd, 0x2a, 0x14, 0xb1, 0xe7, 0xf1, - 0x96, 0xc9, 0x8f, 0x18, 0xaa, 0x41, 0xae, 0x27, 0x7e, 0xa8, 0x61, 0xa1, 0x9c, 0xff, 0x4a, 0x0e, - 0xf6, 0xe9, 0xfa, 0xaf, 0x34, 0x78, 0x75, 0xe2, 0xec, 0x4e, 0x44, 0xd4, 0x0a, 0xbf, 0x94, 0x4b, - 0x61, 0x44, 0x23, 0x39, 0x1c, 0x93, 0x12, 0x9d, 0x58, 0x62, 0xe0, 0x37, 0xda, 0x89, 0x25, 0xac, - 0xe1, 0xa4, 0xac, 0xfe, 0xef, 0x0c, 0xe4, 0xfd, 0x67, 0xd9, 0x7f, 0xb9, 0xf9, 0x7e, 0x03, 0xf2, - 0x4c, 0xda, 0x51, 0xee, 0x85, 0xd5, 0xd2, 0xb7, 0x8e, 0x15, 0x57, 0x34, 0x31, 0x5d, 0xc2, 0x98, - 0xd9, 0x09, 0x92, 0x37, 0x6c, 0x62, 0xf6, 0x7c, 0x32, 0x0e, 0xf8, 0xe8, 0x1d, 0xf1, 0x0a, 0x35, - 0x59, 0xd8, 0x17, 0x56, 0x03, 0x48, 0x2c, 0xa9, 0xe7, 0x83, 0xda, 0xbc, 0x02, 0x97, 0xdf, 0x58, - 0x49, 0xa3, 0x07, 0x30, 0xd7, 0x26, 0xdc, 0xb4, 0x1d, 0xbf, 0x1d, 0x4c, 0x3d, 0x99, 0xf4, 0xc1, - 0x9a, 0xbe, 0xaa, 0x51, 0x12, 0x3e, 0xa9, 0x0f, 0x1c, 0x00, 0x8a, 0x83, 0x67, 0x79, 0x6d, 0x7f, - 0x4c, 0x9f, 0x8b, 0x0e, 0xde, 0xb6, 0xd7, 0x26, 0x58, 0x72, 0xf4, 0xc7, 0x1a, 0x94, 0x7c, 0xa4, - 0x6d, 0xb3, 0xcf, 0x08, 0xda, 0x08, 0x57, 0xe1, 0x6f, 0x77, 0x70, 0x27, 0xcf, 0xbe, 0x77, 0xd6, - 0x23, 0xe7, 0x83, 0x5a, 0x51, 0x8a, 0x89, 0x8f, 0x70, 0x01, 0xb1, 0x18, 0x65, 0x2e, 0x89, 0xd1, - 0xeb, 0x90, 0x93, 0xad, 0xb7, 0x0a, 0x66, 0xd8, 0xe8, 0xc9, 0xf6, 0x1c, 0xfb, 0x3c, 0xfd, 0xe3, - 0x0c, 0x94, 0x13, 0x8b, 0x4b, 0xd1, 0xd5, 0x85, 0xa3, 0x92, 0x4c, 0x8a, 0xf1, 0xdb, 0xe4, 0x7f, - 0xae, 0x7c, 0x1f, 0xf2, 0x96, 0x58, 0x5f, 0xf0, 0xdf, 0xad, 0x8d, 0x69, 0xb6, 0x42, 0x46, 0x26, - 0xca, 0x24, 0xf9, 0xc9, 0xb0, 0x02, 0x44, 0xb7, 0x60, 0x99, 0x12, 0x4e, 0xcf, 0xb6, 0x0e, 0x39, - 0xa1, 0xf1, 0xfe, 0x3f, 0x17, 0xf5, 0x3d, 0x78, 0x54, 0x00, 0x8f, 0xeb, 0x04, 0xa5, 0x32, 0xff, - 0x12, 0xa5, 0x52, 0x77, 0x60, 0xf6, 0x7f, 0xd8, 0xa3, 0xff, 0x00, 0x8a, 0x51, 0x17, 0xf5, 0x19, - 0x9b, 0xd4, 0x7f, 0x04, 0x05, 0x91, 0x8d, 0x41, 0xf7, 0x7f, 0xc9, 0x4d, 0x94, 0xbc, 0x23, 0x32, - 0x69, 0xee, 0x08, 0x7d, 0x13, 0xfc, 0xff, 0x99, 0x89, 0x6a, 0xea, 0xbf, 0xd8, 0x63, 0xd5, 0x34, - 0xfe, 0xfc, 0x8e, 0x8d, 0xcc, 0x7e, 0xa1, 0x01, 0xc8, 0xe7, 0xe3, 0xce, 0x09, 0x71, 0xb9, 0x70, - 0x4c, 0xec, 0xc0, 0xa8, 0x63, 0xf2, 0x18, 0x49, 0x0e, 0xba, 0x07, 0x79, 0x4f, 0x76, 0x57, 0x6a, - 0x86, 0x35, 0xe5, 0x38, 0x20, 0xcc, 0x3a, 0xbf, 0x45, 0xc3, 0x0a, 0xcc, 0x58, 0x7f, 0xfa, 0xbc, - 0x3a, 0xf3, 0xec, 0x79, 0x75, 0xe6, 0xa3, 0xe7, 0xd5, 0x99, 0x0f, 0x86, 0x55, 0xed, 0xe9, 0xb0, - 0xaa, 0x3d, 0x1b, 0x56, 0xb5, 0x8f, 0x86, 0x55, 0xed, 0xe3, 0x61, 0x55, 0x7b, 0xfc, 0x49, 0x75, - 0xe6, 0x41, 0xe6, 0x64, 0xe3, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x6c, 0xc5, 0x28, 0xb2, 0x54, - 0x20, 0x00, 0x00, + // 2473 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x19, 0x4d, 0x6c, 0x5b, 0x49, + 0x39, 0xcf, 0x8e, 0x1d, 0xfb, 0x73, 0x9c, 0x9f, 0xd9, 0x14, 0xbc, 0x11, 0xc4, 0xd9, 0xb7, 0x68, + 0x95, 0x85, 0xae, 0x4d, 0x52, 0x58, 0x95, 0x02, 0x85, 0x38, 0x4e, 0xab, 0x68, 0x9b, 0xd6, 0x9a, + 0x6c, 0x8b, 0x28, 0x15, 0xe2, 0xe5, 0xbd, 0x89, 0xf3, 0xc8, 0xf3, 0x7b, 0xde, 0x99, 0x71, 0x5a, + 0xc3, 0x81, 0x3d, 0x80, 0xe0, 0x80, 0x50, 0x8f, 0x9c, 0xd0, 0x56, 0x70, 0xe1, 0xca, 0x89, 0x0b, + 0x9c, 0x90, 0xe8, 0xb1, 0x12, 0x97, 0x3d, 0x20, 0x6b, 0x6b, 0x0e, 0x9c, 0x10, 0xf7, 0x9c, 0xd0, + 0xcc, 0x9b, 0xf7, 0x67, 0xc7, 0xcd, 0xf3, 0x76, 0x17, 0xed, 0xc9, 0x9e, 0xef, 0x7f, 0xbe, 0xf9, + 0xe6, 0xfb, 0xbe, 0xf9, 0x1e, 0xec, 0x9f, 0x5c, 0x65, 0x35, 0xdb, 0xab, 0x9f, 0xf4, 0x0e, 0x09, + 0x75, 0x09, 0x27, 0xac, 0x7e, 0x4a, 0x5c, 0xcb, 0xa3, 0x75, 0x85, 0x30, 0xba, 0x76, 0xc7, 0x30, + 0x8f, 0x6d, 0x97, 0xd0, 0x7e, 0xbd, 0x7b, 0xd2, 0x16, 0x00, 0x56, 0xef, 0x10, 0x6e, 0xd4, 0x4f, + 0x37, 0xeb, 0x6d, 0xe2, 0x12, 0x6a, 0x70, 0x62, 0xd5, 0xba, 0xd4, 0xe3, 0x1e, 0xfa, 0x92, 0xcf, + 0x55, 0x8b, 0x73, 0xd5, 0xba, 0x27, 0x6d, 0x01, 0x60, 0x35, 0xc1, 0x55, 0x3b, 0xdd, 0x5c, 0x7d, + 0xab, 0x6d, 0xf3, 0xe3, 0xde, 0x61, 0xcd, 0xf4, 0x3a, 0xf5, 0xb6, 0xd7, 0xf6, 0xea, 0x92, 0xf9, + 0xb0, 0x77, 0x24, 0x57, 0x72, 0x21, 0xff, 0xf9, 0x42, 0x57, 0x27, 0x9a, 0x42, 0x7b, 0x2e, 0xb7, + 0x3b, 0x64, 0xd4, 0x8a, 0xd5, 0xb7, 0x2f, 0x62, 0x60, 0xe6, 0x31, 0xe9, 0x18, 0x63, 0x7c, 0x57, + 0x26, 0xf1, 0xf5, 0xb8, 0xed, 0xd4, 0x6d, 0x97, 0x33, 0x4e, 0x47, 0x99, 0xf4, 0xbf, 0x67, 0xa1, + 0xb0, 0xdd, 0xda, 0xbb, 0x49, 0xbd, 0x5e, 0x17, 0xad, 0xc3, 0xac, 0x6b, 0x74, 0x48, 0x45, 0x5b, + 0xd7, 0x36, 0x8a, 0x8d, 0xf9, 0xa7, 0x83, 0xea, 0xcc, 0x70, 0x50, 0x9d, 0xbd, 0x6d, 0x74, 0x08, + 0x96, 0x18, 0xe4, 0x40, 0xe1, 0x94, 0x50, 0x66, 0x7b, 0x2e, 0xab, 0x64, 0xd6, 0xb3, 0x1b, 0xa5, + 0xad, 0xeb, 0xb5, 0x34, 0x4e, 0xab, 0x49, 0x05, 0xf7, 0x7c, 0xd6, 0x1b, 0x1e, 0x6d, 0xda, 0xcc, + 0xf4, 0x4e, 0x09, 0xed, 0x37, 0x96, 0x94, 0x96, 0x82, 0x42, 0x32, 0x1c, 0x6a, 0x40, 0x3f, 0xd7, + 0x60, 0xa9, 0x4b, 0xc9, 0x11, 0xa1, 0x94, 0x58, 0x0a, 0x5f, 0xc9, 0xae, 0x6b, 0x9f, 0x80, 0xda, + 0x8a, 0x52, 0xbb, 0xd4, 0x1a, 0x91, 0x8f, 0xc7, 0x34, 0xa2, 0xdf, 0x6b, 0xb0, 0xca, 0x08, 0x3d, + 0x25, 0x74, 0xdb, 0xb2, 0x28, 0x61, 0xac, 0xd1, 0xdf, 0x71, 0x6c, 0xe2, 0xf2, 0x9d, 0xbd, 0x26, + 0x66, 0x95, 0x59, 0xe9, 0x87, 0xef, 0xa4, 0x33, 0xe8, 0x60, 0x92, 0x9c, 0x86, 0xae, 0x2c, 0x5a, + 0x9d, 0x48, 0xc2, 0xf0, 0x0b, 0xcc, 0xd0, 0x8f, 0x60, 0x3e, 0x38, 0xc8, 0x5b, 0x36, 0xe3, 0xe8, + 0x1e, 0xe4, 0xdb, 0x62, 0xc1, 0x2a, 0x9a, 0x34, 0xb0, 0x96, 0xce, 0xc0, 0x40, 0x46, 0x63, 0x41, + 0xd9, 0x93, 0x97, 0x4b, 0x86, 0x95, 0x34, 0xfd, 0x2f, 0x59, 0x28, 0x6d, 0xb7, 0xf6, 0x30, 0x61, + 0x5e, 0x8f, 0x9a, 0x24, 0x45, 0xd0, 0x6c, 0x01, 0x88, 0x5f, 0xd6, 0x35, 0x4c, 0x62, 0x55, 0x32, + 0xeb, 0xda, 0x46, 0xa1, 0x81, 0x14, 0x1d, 0xdc, 0x0e, 0x31, 0x38, 0x46, 0x25, 0xa4, 0x9e, 0xd8, + 0xae, 0x25, 0x4f, 0x3b, 0x26, 0xf5, 0x1d, 0xdb, 0xb5, 0xb0, 0xc4, 0xa0, 0x5b, 0x90, 0x3b, 0x25, + 0xf4, 0x50, 0xf8, 0x5f, 0x04, 0xc4, 0x57, 0xd2, 0x6d, 0xef, 0x9e, 0x60, 0x69, 0x14, 0x87, 0x83, + 0x6a, 0x4e, 0xfe, 0xc5, 0xbe, 0x10, 0x54, 0x03, 0x60, 0xc7, 0x1e, 0xe5, 0xd2, 0x9c, 0x4a, 0x6e, + 0x3d, 0xbb, 0x51, 0x6c, 0x2c, 0x08, 0xfb, 0x0e, 0x42, 0x28, 0x8e, 0x51, 0xa0, 0xab, 0x30, 0xcf, + 0x6c, 0xb7, 0xdd, 0x73, 0x0c, 0x2a, 0x00, 0x95, 0xbc, 0xb4, 0x73, 0x45, 0xd9, 0x39, 0x7f, 0x10, + 0xc3, 0xe1, 0x04, 0xa5, 0xd0, 0x64, 0x1a, 0x9c, 0xb4, 0x3d, 0x6a, 0x13, 0x56, 0x99, 0x8b, 0x34, + 0xed, 0x84, 0x50, 0x1c, 0xa3, 0x40, 0xaf, 0x43, 0x4e, 0x7a, 0xbe, 0x52, 0x90, 0x2a, 0xca, 0x4a, + 0x45, 0x4e, 0x1e, 0x0b, 0xf6, 0x71, 0xe8, 0x4d, 0x98, 0x53, 0xb7, 0xa6, 0x52, 0x94, 0x64, 0x8b, + 0x8a, 0x6c, 0x2e, 0x08, 0xeb, 0x00, 0xaf, 0xff, 0x49, 0x83, 0xc5, 0xd8, 0xf9, 0xc9, 0x58, 0xb9, + 0x0a, 0xf3, 0xed, 0xd8, 0x4d, 0x51, 0x67, 0x19, 0xee, 0x26, 0x7e, 0x8b, 0x70, 0x82, 0x12, 0x11, + 0x28, 0x52, 0x25, 0x29, 0xc8, 0x08, 0x9b, 0xa9, 0x03, 0x2d, 0xb0, 0x21, 0xd2, 0x14, 0x03, 0x32, + 0x1c, 0x49, 0xd6, 0xff, 0xad, 0xc9, 0xa0, 0x0b, 0x72, 0x04, 0xda, 0x88, 0xe5, 0x21, 0x4d, 0xba, + 0x70, 0x7e, 0x42, 0x0e, 0xb9, 0xe0, 0xf2, 0x66, 0x3e, 0x13, 0x97, 0xf7, 0x5a, 0xe1, 0xb7, 0x1f, + 0x54, 0x67, 0xde, 0xff, 0xe7, 0xfa, 0x8c, 0xfe, 0x0b, 0x0d, 0xca, 0x3b, 0x94, 0x18, 0x9c, 0xdc, + 0xe9, 0x72, 0xb9, 0x03, 0x1d, 0xf2, 0x16, 0xed, 0xe3, 0x9e, 0xab, 0x76, 0x0a, 0xe2, 0x52, 0x36, + 0x25, 0x04, 0x2b, 0x0c, 0x6a, 0xc1, 0x8a, 0xed, 0x9a, 0x4e, 0xcf, 0x22, 0x77, 0x5d, 0xdb, 0xb5, + 0xb9, 0x6d, 0x38, 0xf6, 0x4f, 0xc2, 0xcb, 0xf6, 0x05, 0x65, 0xdd, 0xca, 0xde, 0x39, 0x34, 0xf8, + 0x5c, 0x4e, 0xfd, 0x97, 0x59, 0x28, 0x37, 0x89, 0x43, 0x22, 0x3b, 0x6e, 0x00, 0x6a, 0x53, 0xc3, + 0x24, 0x2d, 0x42, 0x6d, 0xcf, 0x3a, 0x20, 0xa6, 0xe7, 0x5a, 0x4c, 0x86, 0x4a, 0xb6, 0xf1, 0xb9, + 0xe1, 0xa0, 0x8a, 0x6e, 0x8e, 0x61, 0xf1, 0x39, 0x1c, 0xc8, 0x81, 0x72, 0x97, 0xca, 0xff, 0x36, + 0x57, 0x85, 0x44, 0x5c, 0xe0, 0x2b, 0xe9, 0xce, 0xa0, 0x15, 0x67, 0x6d, 0x2c, 0x0f, 0x07, 0xd5, + 0x72, 0x02, 0x84, 0x93, 0xc2, 0xd1, 0x77, 0x61, 0xc9, 0xa3, 0xdd, 0x63, 0xc3, 0x6d, 0x92, 0x2e, + 0x71, 0x2d, 0xe2, 0x72, 0x26, 0x93, 0x4a, 0xa1, 0xb1, 0x22, 0xd2, 0xff, 0x9d, 0x11, 0x1c, 0x1e, + 0xa3, 0x46, 0xf7, 0x61, 0xb9, 0x4b, 0xbd, 0xae, 0xd1, 0x36, 0x84, 0xc4, 0x96, 0xe7, 0xd8, 0x66, + 0x5f, 0x26, 0x9d, 0x62, 0xe3, 0xf2, 0x70, 0x50, 0x5d, 0x6e, 0x8d, 0x22, 0xcf, 0x06, 0xd5, 0x57, + 0xa4, 0xeb, 0x04, 0x24, 0x42, 0xe2, 0x71, 0x31, 0xb1, 0xb3, 0xcd, 0x4d, 0x3a, 0x5b, 0x7d, 0x0f, + 0x0a, 0xcd, 0x1e, 0x95, 0x5c, 0xe8, 0xdb, 0x50, 0xb0, 0xd4, 0x7f, 0xe5, 0xf9, 0xd7, 0x82, 0xfa, + 0x19, 0xd0, 0x9c, 0x0d, 0xaa, 0x65, 0xd1, 0x26, 0xd4, 0x02, 0x00, 0x0e, 0x59, 0xf4, 0x07, 0x50, + 0xde, 0x7d, 0xd4, 0xf5, 0x28, 0x0f, 0xce, 0xf4, 0x0d, 0xc8, 0x13, 0x09, 0x90, 0xd2, 0x0a, 0x51, + 0xd2, 0xf7, 0xc9, 0xb0, 0xc2, 0x8a, 0x24, 0x44, 0x1e, 0x19, 0x26, 0x57, 0x01, 0x15, 0x26, 0xa1, + 0x5d, 0x01, 0xc4, 0x3e, 0x4e, 0x7f, 0xa2, 0x01, 0xdc, 0x24, 0xa1, 0xec, 0x6d, 0x58, 0x0c, 0x2e, + 0x70, 0x32, 0xaf, 0x7c, 0x5e, 0x71, 0x2f, 0xe2, 0x24, 0x1a, 0x8f, 0xd2, 0x7f, 0x0a, 0x61, 0xfd, + 0x00, 0x8a, 0x32, 0x9b, 0x89, 0x42, 0x12, 0xa5, 0x56, 0xed, 0x05, 0xa9, 0x35, 0xa8, 0x44, 0x99, + 0x49, 0x95, 0x28, 0x76, 0x79, 0x1d, 0x28, 0xfb, 0xbc, 0x41, 0x71, 0x4c, 0xa5, 0xe1, 0x32, 0x14, + 0x82, 0x8d, 0x2b, 0x2d, 0x61, 0x53, 0x14, 0x08, 0xc2, 0x21, 0x45, 0x4c, 0xdb, 0x31, 0x24, 0x32, + 0x73, 0x3a, 0x65, 0xb1, 0x4a, 0x91, 0x79, 0x71, 0xa5, 0x88, 0x69, 0xfa, 0x19, 0x54, 0x26, 0x75, + 0x52, 0x2f, 0x51, 0x3b, 0xd2, 0x9b, 0xa2, 0xff, 0x46, 0x83, 0xa5, 0xb8, 0xa4, 0xf4, 0xc7, 0x97, + 0x5e, 0xc9, 0xc5, 0x3d, 0x47, 0xcc, 0x23, 0xbf, 0xd3, 0x60, 0x25, 0xb1, 0xb5, 0xa9, 0x4e, 0x7c, + 0x0a, 0xa3, 0xe2, 0xc1, 0x91, 0x9d, 0x22, 0x38, 0xea, 0x50, 0xda, 0x0b, 0xe3, 0x9e, 0x5e, 0xdc, + 0xa5, 0xe9, 0x7f, 0xd5, 0x60, 0x3e, 0xc6, 0xc1, 0xd0, 0x03, 0x98, 0x13, 0x39, 0xd0, 0x76, 0xdb, + 0xaa, 0x83, 0x4c, 0x59, 0xd8, 0x63, 0x42, 0xa2, 0x7d, 0xb5, 0x7c, 0x49, 0x38, 0x10, 0x89, 0x5a, + 0x90, 0xa7, 0x84, 0xf5, 0x1c, 0xae, 0xd2, 0xff, 0xe5, 0x94, 0x25, 0x98, 0x1b, 0xbc, 0xc7, 0xfc, + 0x3c, 0x89, 0x25, 0x3f, 0x56, 0x72, 0xf4, 0x7f, 0x64, 0xa0, 0x7c, 0xcb, 0x38, 0x24, 0xce, 0x01, + 0x71, 0x88, 0xc9, 0x3d, 0x8a, 0x7e, 0x0a, 0xa5, 0x8e, 0xc1, 0xcd, 0x63, 0x09, 0x0d, 0xfa, 0xe0, + 0x66, 0x3a, 0x45, 0x09, 0x49, 0xb5, 0xfd, 0x48, 0xcc, 0xae, 0xcb, 0x69, 0xbf, 0xf1, 0x8a, 0xda, + 0x58, 0x29, 0x86, 0xc1, 0x71, 0x6d, 0xf2, 0xf1, 0x22, 0xd7, 0xbb, 0x8f, 0xba, 0xa2, 0xe0, 0x4f, + 0xff, 0x66, 0x4a, 0x98, 0x80, 0xc9, 0x7b, 0x3d, 0x9b, 0x92, 0x0e, 0x71, 0x79, 0xf4, 0x78, 0xd9, + 0x1f, 0x91, 0x8f, 0xc7, 0x34, 0xae, 0x5e, 0x87, 0xa5, 0x51, 0xe3, 0xd1, 0x12, 0x64, 0x4f, 0x48, + 0xdf, 0x8f, 0x05, 0x2c, 0xfe, 0xa2, 0x15, 0xc8, 0x9d, 0x1a, 0x4e, 0x4f, 0xe5, 0x1f, 0xec, 0x2f, + 0xae, 0x65, 0xae, 0x6a, 0xfa, 0x1f, 0x34, 0xa8, 0x4c, 0x32, 0x04, 0x7d, 0x31, 0x26, 0xa8, 0x51, + 0x52, 0x56, 0x65, 0xdf, 0x21, 0x7d, 0x5f, 0xea, 0x2e, 0x14, 0xbc, 0xae, 0x78, 0x6e, 0x7a, 0x54, + 0xc5, 0xf9, 0x9b, 0x41, 0xec, 0xde, 0x51, 0xf0, 0xb3, 0x41, 0xf5, 0x52, 0x42, 0x7c, 0x80, 0xc0, + 0x21, 0xab, 0x28, 0x92, 0xd2, 0x1e, 0x51, 0xb8, 0xc3, 0x22, 0x79, 0x4f, 0x42, 0xb0, 0xc2, 0xe8, + 0x7f, 0xd6, 0x60, 0x56, 0xb6, 0xb2, 0x0f, 0xa0, 0x20, 0xfc, 0x67, 0x19, 0xdc, 0x90, 0x76, 0xa5, + 0x7e, 0xf8, 0x08, 0xee, 0x7d, 0xc2, 0x8d, 0xe8, 0x7e, 0x05, 0x10, 0x1c, 0x4a, 0x44, 0x18, 0x72, + 0x36, 0x27, 0x9d, 0xe0, 0x20, 0xdf, 0x9a, 0x28, 0x5a, 0xbd, 0xd5, 0x6b, 0xd8, 0x78, 0xb8, 0xfb, + 0x88, 0x13, 0x57, 0x1c, 0x46, 0x94, 0x0c, 0xf6, 0x84, 0x0c, 0xec, 0x8b, 0xd2, 0xff, 0xa8, 0x41, + 0xa8, 0x4a, 0x5c, 0x77, 0x46, 0x9c, 0xa3, 0x5b, 0xb6, 0x7b, 0xa2, 0xdc, 0x1a, 0x9a, 0x73, 0xa0, + 0xe0, 0x38, 0xa4, 0x38, 0xaf, 0xc4, 0x66, 0xa6, 0x2c, 0xb1, 0x97, 0xa1, 0x60, 0x7a, 0x2e, 0xb7, + 0xdd, 0xde, 0x58, 0x7e, 0xd9, 0x51, 0x70, 0x1c, 0x52, 0xe8, 0xcf, 0xb2, 0x50, 0x12, 0xb6, 0x06, + 0x35, 0xfe, 0x9b, 0x50, 0x76, 0xe2, 0xa7, 0xa7, 0x6c, 0xbe, 0xa4, 0x44, 0x24, 0xef, 0x23, 0x4e, + 0xd2, 0x0a, 0xe6, 0x23, 0x9b, 0x38, 0x56, 0xc8, 0x9c, 0x49, 0x32, 0xdf, 0x88, 0x23, 0x71, 0x92, + 0x56, 0xe4, 0xd9, 0x87, 0x22, 0xae, 0x55, 0x33, 0x17, 0xba, 0xf6, 0x7b, 0x02, 0x88, 0x7d, 0xdc, + 0x79, 0xfe, 0x99, 0x9d, 0xd2, 0x3f, 0xd7, 0x60, 0x41, 0x1c, 0xa4, 0xd7, 0xe3, 0x41, 0xc7, 0x9b, + 0x93, 0x7d, 0x17, 0x1a, 0x0e, 0xaa, 0x0b, 0xef, 0x26, 0x30, 0x78, 0x84, 0x72, 0x62, 0xfb, 0x92, + 0xff, 0xb8, 0xed, 0x8b, 0xd8, 0xb5, 0x63, 0x77, 0x6c, 0x5e, 0x99, 0x93, 0x46, 0x84, 0xbb, 0xbe, + 0x25, 0x80, 0xd8, 0xc7, 0x25, 0x8e, 0xb4, 0x70, 0xe1, 0x91, 0xbe, 0x07, 0xc5, 0x7d, 0xdb, 0xa4, + 0x9e, 0xd8, 0x8b, 0x28, 0x4c, 0x2c, 0xd1, 0xd8, 0x87, 0x09, 0x3c, 0xd8, 0x63, 0x80, 0x17, 0xa6, + 0xb8, 0x86, 0xeb, 0xf9, 0xed, 0x7b, 0x2e, 0x32, 0xe5, 0xb6, 0x00, 0x62, 0x1f, 0x77, 0x6d, 0x45, + 0xd4, 0xa3, 0x5f, 0x3d, 0xa9, 0xce, 0x3c, 0x7e, 0x52, 0x9d, 0xf9, 0xe0, 0x89, 0xaa, 0x4d, 0xff, + 0x01, 0x80, 0x3b, 0x87, 0x3f, 0x26, 0xa6, 0x1f, 0xf3, 0x17, 0x4f, 0x10, 0x44, 0x8f, 0xa1, 0x06, + 0x57, 0xf2, 0xb5, 0x9d, 0x19, 0xe9, 0x31, 0x62, 0x38, 0x9c, 0xa0, 0x44, 0x75, 0x28, 0x86, 0x53, + 0x05, 0x15, 0xdf, 0xcb, 0x8a, 0xad, 0x18, 0x8e, 0x1e, 0x70, 0x44, 0x93, 0xb8, 0x80, 0xb3, 0x17, + 0x5e, 0xc0, 0x06, 0x64, 0x7b, 0xb6, 0x25, 0x43, 0xa2, 0xd8, 0xf8, 0x6a, 0x90, 0x00, 0xef, 0xee, + 0x35, 0xcf, 0x06, 0xd5, 0xd7, 0x26, 0xcd, 0xe3, 0x78, 0xbf, 0x4b, 0x58, 0xed, 0xee, 0x5e, 0x13, + 0x0b, 0xe6, 0xf3, 0x82, 0x34, 0x3f, 0x65, 0x90, 0x6e, 0x01, 0xa8, 0x5d, 0x0b, 0x6e, 0x3f, 0x36, + 0xc2, 0x09, 0xcb, 0xcd, 0x10, 0x83, 0x63, 0x54, 0x88, 0xc1, 0xb2, 0x29, 0xde, 0x99, 0xb6, 0xe7, + 0x8a, 0xa3, 0x67, 0xdc, 0xe8, 0xf8, 0x33, 0x86, 0xd2, 0xd6, 0x97, 0xd3, 0x65, 0x4c, 0xc1, 0xd6, + 0x78, 0x55, 0xa9, 0x59, 0xde, 0x19, 0x15, 0x86, 0xc7, 0xe5, 0x23, 0x0f, 0x96, 0x2d, 0xf5, 0x32, + 0x8a, 0x94, 0x16, 0xa7, 0x56, 0x7a, 0x49, 0x28, 0x6c, 0x8e, 0x0a, 0xc2, 0xe3, 0xb2, 0xd1, 0x0f, + 0x61, 0x35, 0x00, 0x8e, 0x3f, 0x4f, 0x2b, 0x20, 0x3d, 0xb5, 0x26, 0x1e, 0xee, 0xcd, 0x89, 0x54, + 0xf8, 0x05, 0x12, 0x90, 0x05, 0x79, 0xc7, 0xef, 0x2e, 0x4a, 0xb2, 0x22, 0x7c, 0x2b, 0xdd, 0x2e, + 0xa2, 0xe8, 0xaf, 0xc5, 0xbb, 0x8a, 0xf0, 0xf9, 0xa5, 0x1a, 0x0a, 0x25, 0x1b, 0x3d, 0x82, 0x92, + 0xe1, 0xba, 0x1e, 0x37, 0xfc, 0x07, 0xf3, 0xbc, 0x54, 0xb5, 0x3d, 0xb5, 0xaa, 0xed, 0x48, 0xc6, + 0x48, 0x17, 0x13, 0xc3, 0xe0, 0xb8, 0x2a, 0xf4, 0x10, 0x16, 0xbd, 0x87, 0x2e, 0xa1, 0x98, 0x1c, + 0x11, 0x4a, 0x5c, 0x93, 0xb0, 0x4a, 0x59, 0x6a, 0xff, 0x5a, 0x4a, 0xed, 0x09, 0xe6, 0x28, 0xa4, + 0x93, 0x70, 0x86, 0x47, 0xb5, 0xa0, 0x1a, 0xc0, 0x91, 0xed, 0xaa, 0x5e, 0xb4, 0xb2, 0x10, 0x8d, + 0xc9, 0x6e, 0x84, 0x50, 0x1c, 0xa3, 0x40, 0x5f, 0x87, 0x92, 0xe9, 0xf4, 0x18, 0x27, 0xfe, 0x3c, + 0x6e, 0x51, 0xde, 0xa0, 0x70, 0x7f, 0x3b, 0x11, 0x0a, 0xc7, 0xe9, 0xd0, 0x31, 0xcc, 0xdb, 0xb1, + 0xa6, 0xb7, 0xb2, 0x24, 0x63, 0x71, 0x6b, 0xea, 0x4e, 0x97, 0x35, 0x96, 0x44, 0x26, 0x8a, 0x43, + 0x70, 0x42, 0xf2, 0xea, 0x37, 0xa0, 0xf4, 0x31, 0x7b, 0x30, 0xd1, 0xc3, 0x8d, 0x1e, 0xdd, 0x54, + 0x3d, 0xdc, 0xdf, 0x32, 0xb0, 0x90, 0x74, 0x78, 0xf8, 0xd6, 0xd1, 0x26, 0xce, 0x57, 0x83, 0xac, + 0x9c, 0x9d, 0x98, 0x95, 0x55, 0xf2, 0x9b, 0x7d, 0x99, 0xe4, 0xb7, 0x05, 0x60, 0x74, 0xed, 0x20, + 0xef, 0xf9, 0x79, 0x34, 0xcc, 0x5c, 0xd1, 0xc4, 0x0f, 0xc7, 0xa8, 0xe4, 0x04, 0xd5, 0x73, 0x39, + 0xf5, 0x1c, 0x87, 0x50, 0x55, 0x4c, 0xfd, 0x09, 0x6a, 0x08, 0xc5, 0x31, 0x0a, 0x74, 0x03, 0xd0, + 0xa1, 0xe3, 0x99, 0x27, 0xd2, 0x05, 0xc1, 0x3d, 0x97, 0x59, 0xb2, 0xe0, 0x0f, 0xae, 0x1a, 0x63, + 0x58, 0x7c, 0x0e, 0x87, 0x3e, 0x07, 0xb9, 0x96, 0x68, 0x2b, 0xf4, 0x3b, 0x90, 0x9c, 0x39, 0xa1, + 0xeb, 0xbe, 0x27, 0xb4, 0x70, 0x28, 0x34, 0x9d, 0x17, 0xf4, 0xcb, 0x50, 0xc4, 0x9e, 0xc7, 0x5b, + 0x06, 0x3f, 0x66, 0xa8, 0x0a, 0xb9, 0xae, 0xf8, 0xa3, 0xc6, 0x7d, 0x72, 0x56, 0x2d, 0x31, 0xd8, + 0x87, 0xeb, 0xbf, 0xd6, 0xe0, 0xd5, 0x89, 0x73, 0x46, 0xe1, 0x51, 0x33, 0x5c, 0x29, 0x93, 0x42, + 0x8f, 0x46, 0x74, 0x38, 0x46, 0x25, 0x3a, 0xb1, 0xc4, 0x70, 0x72, 0xb4, 0x13, 0x4b, 0x68, 0xc3, + 0x49, 0x5a, 0xfd, 0xbf, 0x19, 0xc8, 0xfb, 0xcf, 0xb2, 0x4f, 0xb9, 0xf9, 0x7e, 0x03, 0xf2, 0x4c, + 0xea, 0x51, 0xe6, 0x85, 0xd9, 0xd2, 0xd7, 0x8e, 0x15, 0x56, 0x34, 0x31, 0x1d, 0xc2, 0x98, 0xd1, + 0x0e, 0x82, 0x37, 0x6c, 0x62, 0xf6, 0x7d, 0x30, 0x0e, 0xf0, 0xe8, 0x6d, 0xf1, 0x0a, 0x35, 0x58, + 0xd8, 0x17, 0xae, 0x05, 0x22, 0xb1, 0x84, 0x9e, 0x0d, 0xaa, 0xf3, 0x4a, 0xb8, 0x5c, 0x63, 0x45, + 0x8d, 0xee, 0xc3, 0x9c, 0x45, 0xb8, 0x61, 0x3b, 0x7e, 0x3b, 0x98, 0x7a, 0x7a, 0xe9, 0x0b, 0x6b, + 0xfa, 0xac, 0x8d, 0x92, 0xb0, 0x49, 0x2d, 0x70, 0x20, 0x50, 0x5c, 0x3c, 0xd3, 0xb3, 0xfc, 0x4f, + 0x0a, 0xb9, 0xe8, 0xe2, 0xed, 0x78, 0x16, 0xc1, 0x12, 0xa3, 0x3f, 0xd6, 0xa0, 0xe4, 0x4b, 0xda, + 0x31, 0x7a, 0x8c, 0xa0, 0xcd, 0x70, 0x17, 0xfe, 0x71, 0x07, 0x35, 0x79, 0xf6, 0xdd, 0x7e, 0x97, + 0x9c, 0x0d, 0xaa, 0x45, 0x49, 0x26, 0x16, 0xe1, 0x06, 0x62, 0x3e, 0xca, 0x5c, 0xe0, 0xa3, 0xd7, + 0x21, 0x27, 0x5b, 0x6f, 0xe5, 0xcc, 0xb0, 0xd1, 0x93, 0xed, 0x39, 0xf6, 0x71, 0xfa, 0x47, 0x19, + 0x28, 0x27, 0x36, 0x97, 0xa2, 0xab, 0x0b, 0x47, 0x25, 0x99, 0x14, 0xe3, 0xb7, 0xc9, 0x1f, 0x82, + 0xbe, 0x0f, 0x79, 0x53, 0xec, 0x2f, 0xf8, 0x12, 0xb7, 0x39, 0xcd, 0x51, 0x48, 0xcf, 0x44, 0x91, + 0x24, 0x97, 0x0c, 0x2b, 0x81, 0xe8, 0x26, 0x2c, 0x53, 0xc2, 0x69, 0x7f, 0xfb, 0x88, 0x13, 0x1a, + 0xef, 0xff, 0x73, 0x51, 0xdf, 0x83, 0x47, 0x09, 0xf0, 0x38, 0x4f, 0x90, 0x2a, 0xf3, 0x2f, 0x91, + 0x2a, 0x75, 0x07, 0x66, 0xff, 0x8f, 0x3d, 0xfa, 0x0f, 0xa0, 0x18, 0x75, 0x51, 0x9f, 0xb0, 0x4a, + 0xfd, 0x47, 0x50, 0x10, 0xd1, 0x18, 0x74, 0xff, 0x17, 0x54, 0xa2, 0x64, 0x8d, 0xc8, 0xa4, 0xa9, + 0x11, 0xfa, 0x15, 0x28, 0xdf, 0xed, 0x5a, 0xd3, 0x7d, 0x45, 0xd1, 0xb7, 0xc0, 0xff, 0x28, 0x28, + 0x52, 0xb0, 0xff, 0xcc, 0x8f, 0xa5, 0xe0, 0xf8, 0x9b, 0x3d, 0xf9, 0xbd, 0x06, 0xe4, 0x9b, 0x73, + 0xf7, 0x94, 0xb8, 0x5c, 0xec, 0x46, 0x1c, 0xdb, 0xe8, 0x6e, 0xe4, 0xdd, 0x93, 0x18, 0x74, 0x17, + 0xf2, 0x9e, 0x6c, 0xc9, 0xd4, 0xe0, 0x6b, 0xca, 0x19, 0x42, 0x18, 0xaa, 0x7e, 0x5f, 0x87, 0x95, + 0xb0, 0xc6, 0xc6, 0xd3, 0xe7, 0x6b, 0x33, 0xcf, 0x9e, 0xaf, 0xcd, 0x7c, 0xf8, 0x7c, 0x6d, 0xe6, + 0xfd, 0xe1, 0x9a, 0xf6, 0x74, 0xb8, 0xa6, 0x3d, 0x1b, 0xae, 0x69, 0x1f, 0x0e, 0xd7, 0xb4, 0x8f, + 0x86, 0x6b, 0xda, 0xe3, 0x7f, 0xad, 0xcd, 0xdc, 0xcf, 0x9c, 0x6e, 0xfe, 0x2f, 0x00, 0x00, 0xff, + 0xff, 0x51, 0xd4, 0x56, 0x7a, 0x35, 0x21, 0x00, 0x00, } diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto index 4baf44f3de..59fe4aa924 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto @@ -125,6 +125,20 @@ message APIVersions { repeated ServerAddressByClientCIDR serverAddressByClientCIDRs = 2; } +// CreateOptions may be provided when creating an API object. +message CreateOptions { + // When present, indicates that modifications should not be + // persisted. An invalid or unrecognized dryRun directive will + // result in a BadRequest response and no further processing of + // the request. + // +optional + repeated string dryRun = 1; + + // If IncludeUninitialized is specified, the object may be + // returned without completing initialization. + optional bool includeUninitialized = 2; +} + // DeleteOptions may be provided when deleting an API object. message DeleteOptions { // The duration in seconds before the object should be deleted. Value must be non-negative integer. @@ -156,6 +170,13 @@ message DeleteOptions { // foreground. // +optional optional string propagationPolicy = 4; + + // When present, indicates that modifications should not be + // persisted. An invalid or unrecognized dryRun directive will + // result in a BadRequest response and no further processing of + // the request. + // +optional + repeated string dryRun = 5; } // Duration is a wrapper around time.Duration which supports correct @@ -811,6 +832,16 @@ message TypeMeta { optional string apiVersion = 2; } +// UpdateOptions may be provided when updating an API object. +message UpdateOptions { + // When present, indicates that modifications should not be + // persisted. An invalid or unrecognized dryRun directive will + // result in a BadRequest response and no further processing of + // the request. + // +optional + repeated string dryRun = 1; +} + // Verbs masks the value so protobuf can generate // // +protobuf.nullable=true diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/meta.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/meta.go index c13fe4af8e..ee1447541f 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/meta.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/meta.go @@ -162,55 +162,9 @@ func (meta *ObjectMeta) GetInitializers() *Initializers { return m func (meta *ObjectMeta) SetInitializers(initializers *Initializers) { meta.Initializers = initializers } func (meta *ObjectMeta) GetFinalizers() []string { return meta.Finalizers } func (meta *ObjectMeta) SetFinalizers(finalizers []string) { meta.Finalizers = finalizers } - -func (meta *ObjectMeta) GetOwnerReferences() []OwnerReference { - if meta.OwnerReferences == nil { - return nil - } - ret := make([]OwnerReference, len(meta.OwnerReferences)) - for i := 0; i < len(meta.OwnerReferences); i++ { - ret[i].Kind = meta.OwnerReferences[i].Kind - ret[i].Name = meta.OwnerReferences[i].Name - ret[i].UID = meta.OwnerReferences[i].UID - ret[i].APIVersion = meta.OwnerReferences[i].APIVersion - if meta.OwnerReferences[i].Controller != nil { - value := *meta.OwnerReferences[i].Controller - ret[i].Controller = &value - } - if meta.OwnerReferences[i].BlockOwnerDeletion != nil { - value := *meta.OwnerReferences[i].BlockOwnerDeletion - ret[i].BlockOwnerDeletion = &value - } - } - return ret -} - +func (meta *ObjectMeta) GetOwnerReferences() []OwnerReference { return meta.OwnerReferences } func (meta *ObjectMeta) SetOwnerReferences(references []OwnerReference) { - if references == nil { - meta.OwnerReferences = nil - return - } - newReferences := make([]OwnerReference, len(references)) - for i := 0; i < len(references); i++ { - newReferences[i].Kind = references[i].Kind - newReferences[i].Name = references[i].Name - newReferences[i].UID = references[i].UID - newReferences[i].APIVersion = references[i].APIVersion - if references[i].Controller != nil { - value := *references[i].Controller - newReferences[i].Controller = &value - } - if references[i].BlockOwnerDeletion != nil { - value := *references[i].BlockOwnerDeletion - newReferences[i].BlockOwnerDeletion = &value - } - } - meta.OwnerReferences = newReferences -} - -func (meta *ObjectMeta) GetClusterName() string { - return meta.ClusterName -} -func (meta *ObjectMeta) SetClusterName(clusterName string) { - meta.ClusterName = clusterName + meta.OwnerReferences = references } +func (meta *ObjectMeta) GetClusterName() string { return meta.ClusterName } +func (meta *ObjectMeta) SetClusterName(clusterName string) { meta.ClusterName = clusterName } diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/register.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/register.go index b300d37015..e80bc93b04 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/register.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/register.go @@ -19,6 +19,7 @@ package v1 import ( "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" + utilruntime "k8s.io/apimachinery/pkg/util/runtime" ) // GroupName is the group name for this API. @@ -52,14 +53,15 @@ func AddToGroupVersion(scheme *runtime.Scheme, groupVersion schema.GroupVersion) &ExportOptions{}, &GetOptions{}, &DeleteOptions{}, + &CreateOptions{}, + &UpdateOptions{}, ) - scheme.AddConversionFuncs( + utilruntime.Must(scheme.AddConversionFuncs( Convert_versioned_Event_to_watch_Event, Convert_versioned_InternalEvent_to_versioned_Event, Convert_watch_Event_to_versioned_Event, Convert_versioned_Event_to_versioned_InternalEvent, - ) - + )) // Register Unversioned types under their own special group scheme.AddUnversionedTypes(Unversioned, &Status{}, @@ -70,8 +72,8 @@ func AddToGroupVersion(scheme *runtime.Scheme, groupVersion schema.GroupVersion) ) // register manually. This usually goes through the SchemeBuilder, which we cannot use here. - AddConversionFuncs(scheme) - RegisterDefaults(scheme) + utilruntime.Must(AddConversionFuncs(scheme)) + utilruntime.Must(RegisterDefaults(scheme)) } // scheme is the registry for the common types that adhere to the meta v1 API spec. @@ -86,8 +88,10 @@ func init() { &ExportOptions{}, &GetOptions{}, &DeleteOptions{}, + &CreateOptions{}, + &UpdateOptions{}, ) // register manually. This usually goes through the SchemeBuilder, which we cannot use here. - RegisterDefaults(scheme) + utilruntime.Must(RegisterDefaults(scheme)) } diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types.go index e93df18461..91a7c8bb43 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types.go @@ -453,6 +453,45 @@ type DeleteOptions struct { // foreground. // +optional PropagationPolicy *DeletionPropagation `json:"propagationPolicy,omitempty" protobuf:"varint,4,opt,name=propagationPolicy"` + + // When present, indicates that modifications should not be + // persisted. An invalid or unrecognized dryRun directive will + // result in a BadRequest response and no further processing of + // the request. + // +optional + DryRun []string `json:"dryRun,omitempty" protobuf:"bytes,5,rep,name=dryRun"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// CreateOptions may be provided when creating an API object. +type CreateOptions struct { + TypeMeta `json:",inline"` + + // When present, indicates that modifications should not be + // persisted. An invalid or unrecognized dryRun directive will + // result in a BadRequest response and no further processing of + // the request. + // +optional + DryRun []string `json:"dryRun,omitempty" protobuf:"bytes,1,rep,name=dryRun"` + + // If IncludeUninitialized is specified, the object may be + // returned without completing initialization. + IncludeUninitialized bool `json:"includeUninitialized,omitempty" protobuf:"varint,2,opt,name=includeUninitialized"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// UpdateOptions may be provided when updating an API object. +type UpdateOptions struct { + TypeMeta `json:",inline"` + + // When present, indicates that modifications should not be + // persisted. An invalid or unrecognized dryRun directive will + // result in a BadRequest response and no further processing of + // the request. + // +optional + DryRun []string `json:"dryRun,omitempty" protobuf:"bytes,1,rep,name=dryRun"` } // Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out. diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types_swagger_doc_generated.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types_swagger_doc_generated.go index f91d8a81f3..ce65aed1eb 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types_swagger_doc_generated.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types_swagger_doc_generated.go @@ -85,12 +85,23 @@ func (APIVersions) SwaggerDoc() map[string]string { return map_APIVersions } +var map_CreateOptions = map[string]string{ + "": "CreateOptions may be provided when creating an API object.", + "dryRun": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in a BadRequest response and no further processing of the request.", + "includeUninitialized": "If IncludeUninitialized is specified, the object may be returned without completing initialization.", +} + +func (CreateOptions) SwaggerDoc() map[string]string { + return map_CreateOptions +} + var map_DeleteOptions = map[string]string{ "": "DeleteOptions may be provided when deleting an API object.", "gracePeriodSeconds": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", "preconditions": "Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned.", "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 a BadRequest response and no further processing of the request.", } func (DeleteOptions) SwaggerDoc() map[string]string { @@ -327,4 +338,13 @@ func (TypeMeta) SwaggerDoc() map[string]string { return map_TypeMeta } +var map_UpdateOptions = map[string]string{ + "": "UpdateOptions may be provided when updating an API object.", + "dryRun": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in a BadRequest response and no further processing of the request.", +} + +func (UpdateOptions) SwaggerDoc() map[string]string { + return map_UpdateOptions +} + // AUTO-GENERATED FUNCTIONS END HERE diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/BUILD index 2dba6fdb73..f5b2d8557d 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/BUILD @@ -15,9 +15,9 @@ go_test( ], embed = [":go_default_library"], deps = [ + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", "//vendor/github.com/stretchr/testify/require:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", ], ) @@ -29,14 +29,15 @@ go_library( "unstructured_list.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured", importpath = "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured", deps = [ - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/json:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/json:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructuredscheme/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructuredscheme/BUILD index 7021cdae12..00f077d260 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructuredscheme/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructuredscheme/BUILD @@ -3,15 +3,16 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( name = "go_default_library", srcs = ["scheme.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructuredscheme", importpath = "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructuredscheme", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/json:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer/json:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer/versioning:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation/BUILD index b7dbe0ad99..bccaaa0a92 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation/BUILD @@ -10,17 +10,18 @@ go_test( name = "go_default_test", srcs = ["validation_test.go"], embed = [":go_default_library"], - deps = ["//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library"], + deps = ["//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library"], ) go_library( name = "go_default_library", srcs = ["validation.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation", importpath = "k8s.io/apimachinery/pkg/apis/meta/v1/validation", deps = [ - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.deepcopy.go index 98dfea0958..10845993e2 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.deepcopy.go @@ -191,45 +191,64 @@ func (in *APIVersions) DeepCopyObject() runtime.Object { return nil } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CreateOptions) DeepCopyInto(out *CreateOptions) { + *out = *in + out.TypeMeta = in.TypeMeta + if in.DryRun != nil { + in, out := &in.DryRun, &out.DryRun + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CreateOptions. +func (in *CreateOptions) DeepCopy() *CreateOptions { + if in == nil { + return nil + } + out := new(CreateOptions) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *CreateOptions) 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 *DeleteOptions) DeepCopyInto(out *DeleteOptions) { *out = *in out.TypeMeta = in.TypeMeta if in.GracePeriodSeconds != nil { in, out := &in.GracePeriodSeconds, &out.GracePeriodSeconds - if *in == nil { - *out = nil - } else { - *out = new(int64) - **out = **in - } + *out = new(int64) + **out = **in } if in.Preconditions != nil { in, out := &in.Preconditions, &out.Preconditions - if *in == nil { - *out = nil - } else { - *out = new(Preconditions) - (*in).DeepCopyInto(*out) - } + *out = new(Preconditions) + (*in).DeepCopyInto(*out) } if in.OrphanDependents != nil { in, out := &in.OrphanDependents, &out.OrphanDependents - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } if in.PropagationPolicy != nil { in, out := &in.PropagationPolicy, &out.PropagationPolicy - if *in == nil { - *out = nil - } else { - *out = new(DeletionPropagation) - **out = **in - } + *out = new(DeletionPropagation) + **out = **in + } + if in.DryRun != nil { + in, out := &in.DryRun, &out.DryRun + *out = make([]string, len(*in)) + copy(*out, *in) } return } @@ -440,12 +459,8 @@ func (in *Initializers) DeepCopyInto(out *Initializers) { } if in.Result != nil { in, out := &in.Result, &out.Result - if *in == nil { - *out = nil - } else { - *out = new(Status) - (*in).DeepCopyInto(*out) - } + *out = new(Status) + (*in).DeepCopyInto(*out) } return } @@ -463,9 +478,7 @@ func (in *Initializers) DeepCopy() *Initializers { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *InternalEvent) DeepCopyInto(out *InternalEvent) { *out = *in - if in.Object == nil { - out.Object = nil - } else { + if in.Object != nil { out.Object = in.Object.DeepCopyObject() } return @@ -587,12 +600,8 @@ func (in *ListOptions) DeepCopyInto(out *ListOptions) { out.TypeMeta = in.TypeMeta if in.TimeoutSeconds != nil { in, out := &in.TimeoutSeconds, &out.TimeoutSeconds - if *in == nil { - *out = nil - } else { - *out = new(int64) - **out = **in - } + *out = new(int64) + **out = **in } return } @@ -631,20 +640,12 @@ func (in *ObjectMeta) DeepCopyInto(out *ObjectMeta) { in.CreationTimestamp.DeepCopyInto(&out.CreationTimestamp) if in.DeletionTimestamp != nil { in, out := &in.DeletionTimestamp, &out.DeletionTimestamp - if *in == nil { - *out = nil - } else { - *out = (*in).DeepCopy() - } + *out = (*in).DeepCopy() } if in.DeletionGracePeriodSeconds != nil { in, out := &in.DeletionGracePeriodSeconds, &out.DeletionGracePeriodSeconds - if *in == nil { - *out = nil - } else { - *out = new(int64) - **out = **in - } + *out = new(int64) + **out = **in } if in.Labels != nil { in, out := &in.Labels, &out.Labels @@ -669,12 +670,8 @@ func (in *ObjectMeta) DeepCopyInto(out *ObjectMeta) { } if in.Initializers != nil { in, out := &in.Initializers, &out.Initializers - if *in == nil { - *out = nil - } else { - *out = new(Initializers) - (*in).DeepCopyInto(*out) - } + *out = new(Initializers) + (*in).DeepCopyInto(*out) } if in.Finalizers != nil { in, out := &in.Finalizers, &out.Finalizers @@ -699,21 +696,13 @@ func (in *OwnerReference) DeepCopyInto(out *OwnerReference) { *out = *in if in.Controller != nil { in, out := &in.Controller, &out.Controller - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } if in.BlockOwnerDeletion != nil { in, out := &in.BlockOwnerDeletion, &out.BlockOwnerDeletion - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } return } @@ -749,12 +738,8 @@ func (in *Preconditions) DeepCopyInto(out *Preconditions) { *out = *in if in.UID != nil { in, out := &in.UID, &out.UID - if *in == nil { - *out = nil - } else { - *out = new(types.UID) - **out = **in - } + *out = new(types.UID) + **out = **in } return } @@ -813,12 +798,8 @@ func (in *Status) DeepCopyInto(out *Status) { out.ListMeta = in.ListMeta if in.Details != nil { in, out := &in.Details, &out.Details - if *in == nil { - *out = nil - } else { - *out = new(StatusDetails) - (*in).DeepCopyInto(*out) - } + *out = new(StatusDetails) + (*in).DeepCopyInto(*out) } return } @@ -904,6 +885,36 @@ func (in *Timestamp) DeepCopy() *Timestamp { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UpdateOptions) DeepCopyInto(out *UpdateOptions) { + *out = *in + out.TypeMeta = in.TypeMeta + if in.DryRun != nil { + in, out := &in.DryRun, &out.DryRun + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UpdateOptions. +func (in *UpdateOptions) DeepCopy() *UpdateOptions { + if in == nil { + return nil + } + out := new(UpdateOptions) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *UpdateOptions) 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 Verbs) DeepCopyInto(out *Verbs) { { diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/BUILD index 05f33c5b42..9c8415aeda 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/BUILD @@ -1,11 +1,5 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") -filegroup( - name = "go_default_library_protos", - srcs = ["generated.proto"], - visibility = ["//visibility:public"], -) - go_library( name = "go_default_library", srcs = [ @@ -19,14 +13,15 @@ go_library( "zz_generated.deepcopy.go", "zz_generated.defaults.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1", importpath = "k8s.io/apimachinery/pkg/apis/meta/v1beta1", visibility = ["//visibility:public"], deps = [ + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/zz_generated.deepcopy.go index 2e79a131fa..b77db1b150 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/zz_generated.deepcopy.go @@ -58,11 +58,10 @@ func (in *PartialObjectMetadataList) DeepCopyInto(out *PartialObjectMetadataList in, out := &in.Items, &out.Items *out = make([]*PartialObjectMetadata, len(*in)) for i := range *in { - if (*in)[i] == nil { - (*out)[i] = nil - } else { - (*out)[i] = new(PartialObjectMetadata) - (*in)[i].DeepCopyInto((*out)[i]) + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(PartialObjectMetadata) + (*in).DeepCopyInto(*out) } } } diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/conversion/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/conversion/BUILD index 0d2cee7294..29a2adee0d 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/conversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/conversion/BUILD @@ -14,9 +14,9 @@ go_test( ], embed = [":go_default_library"], deps = [ + "//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library", "//vendor/github.com/google/gofuzz:go_default_library", "//vendor/github.com/spf13/pflag:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", ], ) @@ -28,8 +28,9 @@ go_library( "doc.go", "helper.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/conversion", importpath = "k8s.io/apimachinery/pkg/conversion", - deps = ["//vendor/k8s.io/apimachinery/third_party/forked/golang/reflect:go_default_library"], + deps = ["//staging/src/k8s.io/apimachinery/third_party/forked/golang/reflect:go_default_library"], ) filegroup( diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/conversion/queryparams/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/conversion/queryparams/BUILD index 81bacef706..e9fa8bc64b 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/conversion/queryparams/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/conversion/queryparams/BUILD @@ -12,16 +12,17 @@ go_library( "convert.go", "doc.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/conversion/queryparams", importpath = "k8s.io/apimachinery/pkg/conversion/queryparams", ) go_test( - name = "go_default_xtest", + name = "go_default_test", srcs = ["convert_test.go"], + embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion/queryparams:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/fields/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/fields/BUILD index 383448e0fb..19207bca98 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/fields/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/fields/BUILD @@ -23,8 +23,9 @@ go_library( "requirements.go", "selector.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/fields", importpath = "k8s.io/apimachinery/pkg/fields", - deps = ["//vendor/k8s.io/apimachinery/pkg/selection:go_default_library"], + deps = ["//staging/src/k8s.io/apimachinery/pkg/selection:go_default_library"], ) filegroup( diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/labels/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/labels/BUILD index a78764f72e..14666aec8e 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/labels/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/labels/BUILD @@ -14,8 +14,8 @@ go_test( ], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/apimachinery/pkg/selection:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/selection:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", ], ) @@ -27,12 +27,13 @@ go_library( "selector.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/labels", importpath = "k8s.io/apimachinery/pkg/labels", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/selection:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/selection:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/BUILD index a2c2eb308a..3c07e15953 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/BUILD @@ -9,13 +9,27 @@ load( go_test( name = "go_default_test", srcs = [ + "conversion_test.go", + "converter_test.go", + "embedded_test.go", + "extension_test.go", "local_scheme_test.go", + "scheme_test.go", "swagger_doc_generator_test.go", ], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/testing:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/json:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//vendor/github.com/stretchr/testify/assert:go_default_library", + "//vendor/github.com/stretchr/testify/require:go_default_library", ], ) @@ -41,43 +55,19 @@ go_library( "types_proto.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/runtime", importpath = "k8s.io/apimachinery/pkg/runtime", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion/queryparams:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/json:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/naming:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion/queryparams:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/json:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - ], -) - -go_test( - name = "go_default_xtest", - srcs = [ - "conversion_test.go", - "converter_test.go", - "embedded_test.go", - "extension_test.go", - "scheme_test.go", - ], - deps = [ - "//vendor/github.com/google/gofuzz:go_default_library", - "//vendor/github.com/spf13/pflag:go_default_library", - "//vendor/github.com/stretchr/testify/assert:go_default_library", - "//vendor/github.com/stretchr/testify/require:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/testing:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/json:go_default_library", ], ) @@ -98,9 +88,3 @@ filegroup( ], tags = ["automanaged"], ) - -filegroup( - name = "go_default_library_protos", - srcs = ["generated.proto"], - visibility = ["//visibility:public"], -) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/codec.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/codec.go index 10dc12cca9..6b859b2889 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/codec.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/codec.go @@ -76,24 +76,6 @@ func EncodeOrDie(e Encoder, obj Object) string { return string(bytes) } -// DefaultingSerializer invokes defaulting after decoding. -type DefaultingSerializer struct { - Defaulter ObjectDefaulter - Decoder Decoder - // Encoder is optional to allow this type to be used as both a Decoder and an Encoder - Encoder -} - -// Decode performs a decode and then allows the defaulter to act on the provided object. -func (d DefaultingSerializer) Decode(data []byte, defaultGVK *schema.GroupVersionKind, into Object) (Object, *schema.GroupVersionKind, error) { - obj, gvk, err := d.Decoder.Decode(data, defaultGVK, into) - if err != nil { - return obj, gvk, err - } - d.Defaulter.Default(obj) - return obj, gvk, nil -} - // UseOrCreateObject returns obj if the canonical ObjectKind returned by the provided typer matches gvk, or // invokes the ObjectCreator to instantiate a new gvk. Returns an error if the typer cannot find the object. func UseOrCreateObject(t ObjectTyper, c ObjectCreater, gvk schema.GroupVersionKind, obj Object) (Object, error) { diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/conversion.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/conversion.go index afe4fab15e..6cc832080a 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/conversion.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/conversion.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// Defines conversions between generic types and structs to map query strings +// Package runtime defines conversions between generic types and structs to map query strings // to struct objects. package runtime @@ -27,7 +27,7 @@ import ( "k8s.io/apimachinery/pkg/conversion" ) -// DefaultFieldSelectorConversion auto-accepts metav1 values for name and namespace. +// DefaultMetaV1FieldSelectorConversion auto-accepts metav1 values for name and namespace. // A cluster scoped resource specifying namespace empty works fine and specifying a particular // namespace will return no results, as expected. func DefaultMetaV1FieldSelectorConversion(label, value string) (string, string, error) { diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/doc.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/doc.go index a9d084d9fb..7bdc70a2f7 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/doc.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/doc.go @@ -41,5 +41,4 @@ limitations under the License. // // As a bonus, a few common types useful from all api objects and versions // are provided in types.go. - package runtime diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/embedded.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/embedded.go index 2cdac9e141..db11eb8bcf 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/embedded.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/embedded.go @@ -31,7 +31,7 @@ type encodable struct { func (e encodable) GetObjectKind() schema.ObjectKind { return e.obj.GetObjectKind() } func (e encodable) DeepCopyObject() Object { - var out encodable = e + out := e out.obj = e.obj.DeepCopyObject() copy(out.versions, e.versions) return out @@ -46,14 +46,14 @@ func NewEncodable(e Encoder, obj Object, versions ...schema.GroupVersion) Object return encodable{e, obj, versions} } -func (re encodable) UnmarshalJSON(in []byte) error { +func (e encodable) UnmarshalJSON(in []byte) error { return errors.New("runtime.encodable cannot be unmarshalled from JSON") } // Marshal may get called on pointers or values, so implement MarshalJSON on value. // http://stackoverflow.com/questions/21390979/custom-marshaljson-never-gets-called-in-go -func (re encodable) MarshalJSON() ([]byte, error) { - return Encode(re.E, re.obj) +func (e encodable) MarshalJSON() ([]byte, error) { + return Encode(e.E, e.obj) } // NewEncodableList creates an object that will be encoded with the provided codec on demand. @@ -70,28 +70,28 @@ func NewEncodableList(e Encoder, objects []Object, versions ...schema.GroupVersi return out } -func (re *Unknown) UnmarshalJSON(in []byte) error { - if re == nil { +func (e *Unknown) UnmarshalJSON(in []byte) error { + if e == nil { return errors.New("runtime.Unknown: UnmarshalJSON on nil pointer") } - re.TypeMeta = TypeMeta{} - re.Raw = append(re.Raw[0:0], in...) - re.ContentEncoding = "" - re.ContentType = ContentTypeJSON + e.TypeMeta = TypeMeta{} + e.Raw = append(e.Raw[0:0], in...) + e.ContentEncoding = "" + e.ContentType = ContentTypeJSON return nil } // Marshal may get called on pointers or values, so implement MarshalJSON on value. // http://stackoverflow.com/questions/21390979/custom-marshaljson-never-gets-called-in-go -func (re Unknown) MarshalJSON() ([]byte, error) { +func (e Unknown) MarshalJSON() ([]byte, error) { // If ContentType is unset, we assume this is JSON. - if re.ContentType != "" && re.ContentType != ContentTypeJSON { + if e.ContentType != "" && e.ContentType != ContentTypeJSON { return nil, errors.New("runtime.Unknown: MarshalJSON on non-json data") } - if re.Raw == nil { + if e.Raw == nil { return []byte("null"), nil } - return re.Raw, nil + return e.Raw, nil } func Convert_runtime_Object_To_runtime_RawExtension(in *Object, out *RawExtension, s conversion.Scope) error { diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/error.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/error.go index 7787966021..322b0313df 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/error.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/error.go @@ -24,46 +24,47 @@ import ( ) type notRegisteredErr struct { - gvk schema.GroupVersionKind - target GroupVersioner - t reflect.Type + schemeName string + gvk schema.GroupVersionKind + target GroupVersioner + t reflect.Type } -func NewNotRegisteredErrForKind(gvk schema.GroupVersionKind) error { - return ¬RegisteredErr{gvk: gvk} +func NewNotRegisteredErrForKind(schemeName string, gvk schema.GroupVersionKind) error { + return ¬RegisteredErr{schemeName: schemeName, gvk: gvk} } -func NewNotRegisteredErrForType(t reflect.Type) error { - return ¬RegisteredErr{t: t} +func NewNotRegisteredErrForType(schemeName string, t reflect.Type) error { + return ¬RegisteredErr{schemeName: schemeName, t: t} } -func NewNotRegisteredErrForTarget(t reflect.Type, target GroupVersioner) error { - return ¬RegisteredErr{t: t, target: target} +func NewNotRegisteredErrForTarget(schemeName string, t reflect.Type, target GroupVersioner) error { + return ¬RegisteredErr{schemeName: schemeName, t: t, target: target} } -func NewNotRegisteredGVKErrForTarget(gvk schema.GroupVersionKind, target GroupVersioner) error { - return ¬RegisteredErr{gvk: gvk, target: target} +func NewNotRegisteredGVKErrForTarget(schemeName string, gvk schema.GroupVersionKind, target GroupVersioner) error { + return ¬RegisteredErr{schemeName: schemeName, gvk: gvk, target: target} } func (k *notRegisteredErr) Error() string { if k.t != nil && k.target != nil { - return fmt.Sprintf("%v is not suitable for converting to %q", k.t, k.target) + return fmt.Sprintf("%v is not suitable for converting to %q in scheme %q", k.t, k.target, k.schemeName) } nullGVK := schema.GroupVersionKind{} if k.gvk != nullGVK && k.target != nil { - return fmt.Sprintf("%q is not suitable for converting to %q", k.gvk.GroupVersion(), k.target) + return fmt.Sprintf("%q is not suitable for converting to %q in scheme %q", k.gvk.GroupVersion(), k.target, k.schemeName) } if k.t != nil { - return fmt.Sprintf("no kind is registered for the type %v", k.t) + return fmt.Sprintf("no kind is registered for the type %v in scheme %q", k.t, k.schemeName) } if len(k.gvk.Kind) == 0 { - return fmt.Sprintf("no version %q has been registered", k.gvk.GroupVersion()) + return fmt.Sprintf("no version %q has been registered in scheme %q", k.gvk.GroupVersion(), k.schemeName) } if k.gvk.Version == APIVersionInternal { - return fmt.Sprintf("no kind %q is registered for the internal version of group %q", k.gvk.Kind, k.gvk.Group) + return fmt.Sprintf("no kind %q is registered for the internal version of group %q in scheme %q", k.gvk.Kind, k.gvk.Group, k.schemeName) } - return fmt.Sprintf("no kind %q is registered for version %q", k.gvk.Kind, k.gvk.GroupVersion()) + return fmt.Sprintf("no kind %q is registered for version %q in scheme %q", k.gvk.Kind, k.gvk.GroupVersion(), k.schemeName) } // IsNotRegisteredError returns true if the error indicates the provided diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/extension.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/extension.go index 737e2e9ff5..9056397fa5 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/extension.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/extension.go @@ -32,7 +32,7 @@ func (re *RawExtension) UnmarshalJSON(in []byte) error { return nil } -// Marshal may get called on pointers or values, so implement MarshalJSON on value. +// MarshalJSON may get called on pointers or values, so implement MarshalJSON on value. // http://stackoverflow.com/questions/21390979/custom-marshaljson-never-gets-called-in-go func (re RawExtension) MarshalJSON() ([]byte, error) { if re.Raw == nil { diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/helper.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/helper.go index a6c1a8d34d..33f11eb10d 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/helper.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/helper.go @@ -87,7 +87,7 @@ func Field(v reflect.Value, fieldName string, dest interface{}) error { return fmt.Errorf("couldn't assign/convert %v to %v", field.Type(), destValue.Type()) } -// fieldPtr puts the address of fieldName, which must be a member of v, +// FieldPtr puts the address of fieldName, which must be a member of v, // into dest, which must be an address of a variable to which this field's // address can be assigned. func FieldPtr(v reflect.Value, fieldName string, dest interface{}) error { diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/interfaces.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/interfaces.go index ba48e6146e..699ff13e04 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/interfaces.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/interfaces.go @@ -39,14 +39,14 @@ type GroupVersioner interface { KindForGroupVersionKinds(kinds []schema.GroupVersionKind) (target schema.GroupVersionKind, ok bool) } -// Encoders write objects to a serialized form +// Encoder writes objects to a serialized form type Encoder interface { // Encode writes an object to a stream. Implementations may return errors if the versions are // incompatible, or if no conversion is defined. Encode(obj Object, w io.Writer) error } -// Decoders attempt to load an object from data. +// Decoder attempts to load an object from data. type Decoder interface { // Decode attempts to deserialize the provided data using either the innate typing of the scheme or the // default kind, group, and version provided. It returns a decoded object as well as the kind, group, and @@ -185,7 +185,7 @@ type ObjectConvertor interface { // This method is similar to Convert() but handles specific details of choosing the correct // output version. ConvertToVersion(in Object, gv GroupVersioner) (out Object, err error) - ConvertFieldLabel(version, kind, label, value string) (string, string, error) + ConvertFieldLabel(gvk schema.GroupVersionKind, label, value string) (string, string, error) } // ObjectTyper contains methods for extracting the APIVersion and Kind @@ -224,7 +224,7 @@ type SelfLinker interface { Namespace(obj Object) (string, error) } -// All API types registered with Scheme must support the Object interface. Since objects in a scheme are +// Object interface must be supported by all API types registered with Scheme. Since objects in a scheme are // expected to be serialized to the wire, the interface an Object must provide to the Scheme allows // serializers to set the kind, version, and group the object is represented as. An Object may choose // to return a no-op ObjectKindAccessor in cases where it is not expected to be serialized. diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/schema/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/schema/BUILD index e819772181..497caf6958 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/schema/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/schema/BUILD @@ -19,6 +19,7 @@ go_library( "group_version.go", "interfaces.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/runtime/schema", importpath = "k8s.io/apimachinery/pkg/runtime/schema", deps = ["//vendor/github.com/gogo/protobuf/proto:go_default_library"], ) @@ -35,9 +36,3 @@ filegroup( srcs = [":package-srcs"], tags = ["automanaged"], ) - -filegroup( - name = "go_default_library_protos", - srcs = ["generated.proto"], - visibility = ["//visibility:public"], -) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/schema/group_version.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/schema/group_version.go index da642fa73f..5f02961d32 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/schema/group_version.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/schema/group_version.go @@ -85,11 +85,10 @@ func ParseGroupKind(gk string) GroupKind { // ParseGroupResource turns "resource.group" string into a GroupResource struct. Empty strings are allowed // for each field. func ParseGroupResource(gr string) GroupResource { - if i := strings.Index(gr, "."); i == -1 { - return GroupResource{Resource: gr} - } else { + if i := strings.Index(gr, "."); i >= 0 { return GroupResource{Group: gr[i+1:], Resource: gr[:i]} } + return GroupResource{Resource: gr} } // GroupVersionResource unambiguously identifies a resource. It doesn't anonymously include GroupVersion diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/scheme.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/scheme.go index 59163d7771..66431e7593 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/scheme.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/scheme.go @@ -20,11 +20,12 @@ import ( "fmt" "net/url" "reflect" - "strings" "k8s.io/apimachinery/pkg/conversion" "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/util/naming" + utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/util/sets" ) @@ -62,7 +63,7 @@ type Scheme struct { // Map from version and resource to the corresponding func to convert // resource field labels in that version to internal version. - fieldLabelConversionFuncs map[string]map[string]FieldLabelConversionFunc + fieldLabelConversionFuncs map[schema.GroupVersionKind]FieldLabelConversionFunc // defaulterFuncs is an array of interfaces to be called with an object to provide defaulting // the provided object must be a pointer. @@ -78,9 +79,13 @@ type Scheme struct { // observedVersions keeps track of the order we've seen versions during type registration observedVersions []schema.GroupVersion + + // schemeName is the name of this scheme. If you don't specify a name, the stack of the NewScheme caller will be used. + // This is useful for error reporting to indicate the origin of the scheme. + schemeName string } -// Function to convert a field selector to internal representation. +// FieldLabelConversionFunc converts a field selector to internal representation. type FieldLabelConversionFunc func(label, value string) (internalLabel, internalValue string, err error) // NewScheme creates a new Scheme. This scheme is pluggable by default. @@ -90,24 +95,19 @@ func NewScheme() *Scheme { typeToGVK: map[reflect.Type][]schema.GroupVersionKind{}, unversionedTypes: map[reflect.Type]schema.GroupVersionKind{}, unversionedKinds: map[string]reflect.Type{}, - fieldLabelConversionFuncs: map[string]map[string]FieldLabelConversionFunc{}, + fieldLabelConversionFuncs: map[schema.GroupVersionKind]FieldLabelConversionFunc{}, defaulterFuncs: map[reflect.Type]func(interface{}){}, versionPriority: map[string][]string{}, + schemeName: naming.GetNameFromCallsite(internalPackages...), } s.converter = conversion.NewConverter(s.nameFunc) - s.AddConversionFuncs(DefaultEmbeddedConversions()...) + utilruntime.Must(s.AddConversionFuncs(DefaultEmbeddedConversions()...)) // Enable map[string][]string conversions by default - if err := s.AddConversionFuncs(DefaultStringConversions...); err != nil { - panic(err) - } - if err := s.RegisterInputDefaults(&map[string][]string{}, JSONKeyMapper, conversion.AllowDifferentFieldTypeNames|conversion.IgnoreMissingFields); err != nil { - panic(err) - } - if err := s.RegisterInputDefaults(&url.Values{}, JSONKeyMapper, conversion.AllowDifferentFieldTypeNames|conversion.IgnoreMissingFields); err != nil { - panic(err) - } + utilruntime.Must(s.AddConversionFuncs(DefaultStringConversions...)) + utilruntime.Must(s.RegisterInputDefaults(&map[string][]string{}, JSONKeyMapper, conversion.AllowDifferentFieldTypeNames|conversion.IgnoreMissingFields)) + utilruntime.Must(s.RegisterInputDefaults(&url.Values{}, JSONKeyMapper, conversion.AllowDifferentFieldTypeNames|conversion.IgnoreMissingFields)) return s } @@ -255,7 +255,7 @@ func (s *Scheme) ObjectKinds(obj Object) ([]schema.GroupVersionKind, bool, error gvks, ok := s.typeToGVK[t] if !ok { - return nil, false, NewNotRegisteredErrForType(t) + return nil, false, NewNotRegisteredErrForType(s.schemeName, t) } _, unversionedType := s.unversionedTypes[t] @@ -293,7 +293,7 @@ func (s *Scheme) New(kind schema.GroupVersionKind) (Object, error) { if t, exists := s.unversionedKinds[kind.Kind]; exists { return reflect.New(t).Interface().(Object), nil } - return nil, NewNotRegisteredErrForKind(kind) + return nil, NewNotRegisteredErrForKind(s.schemeName, kind) } // AddGenericConversionFunc adds a function that accepts the ConversionFunc call pattern @@ -368,12 +368,8 @@ func (s *Scheme) AddGeneratedConversionFuncs(conversionFuncs ...interface{}) err // AddFieldLabelConversionFunc adds a conversion function to convert field selectors // of the given kind from the given version to internal version representation. -func (s *Scheme) AddFieldLabelConversionFunc(version, kind string, conversionFunc FieldLabelConversionFunc) error { - if s.fieldLabelConversionFuncs[version] == nil { - s.fieldLabelConversionFuncs[version] = map[string]FieldLabelConversionFunc{} - } - - s.fieldLabelConversionFuncs[version][kind] = conversionFunc +func (s *Scheme) AddFieldLabelConversionFunc(gvk schema.GroupVersionKind, conversionFunc FieldLabelConversionFunc) error { + s.fieldLabelConversionFuncs[gvk] = conversionFunc return nil } @@ -393,7 +389,7 @@ func (s *Scheme) RegisterInputDefaults(in interface{}, fn conversion.FieldMappin return s.converter.RegisterInputDefaults(in, fn, defaultFlags) } -// AddTypeDefaultingFuncs registers a function that is passed a pointer to an +// AddTypeDefaultingFunc registers a function that is passed a pointer to an // object and can default fields on the object. These functions will be invoked // when Default() is called. The function will never be called unless the // defaulted object matches srcType. If this function is invoked twice with the @@ -486,11 +482,8 @@ func (s *Scheme) Convert(in, out interface{}, context interface{}) error { // ConvertFieldLabel alters the given field label and value for an kind field selector from // versioned representation to an unversioned one or returns an error. -func (s *Scheme) ConvertFieldLabel(version, kind, label, value string) (string, string, error) { - if s.fieldLabelConversionFuncs[version] == nil { - return DefaultMetaV1FieldSelectorConversion(label, value) - } - conversionFunc, ok := s.fieldLabelConversionFuncs[version][kind] +func (s *Scheme) ConvertFieldLabel(gvk schema.GroupVersionKind, label, value string) (string, string, error) { + conversionFunc, ok := s.fieldLabelConversionFuncs[gvk] if !ok { return DefaultMetaV1FieldSelectorConversion(label, value) } @@ -541,7 +534,7 @@ func (s *Scheme) convertToVersion(copy bool, in Object, target GroupVersioner) ( kinds, ok := s.typeToGVK[t] if !ok || len(kinds) == 0 { - return nil, NewNotRegisteredErrForType(t) + return nil, NewNotRegisteredErrForType(s.schemeName, t) } gvk, ok := target.KindForGroupVersionKinds(kinds) @@ -554,7 +547,7 @@ func (s *Scheme) convertToVersion(copy bool, in Object, target GroupVersioner) ( } return copyAndSetTargetKind(copy, in, unversionedKind) } - return nil, NewNotRegisteredErrForTarget(t, target) + return nil, NewNotRegisteredErrForTarget(s.schemeName, t, target) } // target wants to use the existing type, set kind and return (no conversion necessary) @@ -764,3 +757,11 @@ func (s *Scheme) addObservedVersion(version schema.GroupVersion) { s.observedVersions = append(s.observedVersions, version) } + +func (s *Scheme) Name() string { + return s.schemeName +} + +// internalPackages are packages that ignored when creating a default reflector name. These packages are in the common +// call chains to NewReflector, so they'd be low entropy names for reflectors +var internalPackages = []string{"k8s.io/apimachinery/pkg/runtime/scheme.go"} diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/serializer/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/serializer/BUILD index 663050b225..05764c34b7 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/serializer/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/serializer/BUILD @@ -14,16 +14,16 @@ go_test( ], embed = [":go_default_library"], deps = [ + "//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer/testing:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library", "//vendor/github.com/ghodss/yaml:go_default_library", "//vendor/github.com/google/gofuzz:go_default_library", "//vendor/github.com/spf13/pflag:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/testing:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", ], ) @@ -34,14 +34,15 @@ go_library( "negotiated_codec.go", "protobuf_extension.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/runtime/serializer", importpath = "k8s.io/apimachinery/pkg/runtime/serializer", deps = [ - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/json:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/protobuf:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer/json:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer/protobuf:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer/recognizer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer/versioning:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/BUILD index 7be13ed471..4857211b34 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/BUILD @@ -8,8 +8,16 @@ load( go_test( name = "go_default_test", - srcs = ["meta_test.go"], + srcs = [ + "json_test.go", + "meta_test.go", + ], embed = [":go_default_library"], + deps = [ + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library", + ], ) go_library( @@ -18,26 +26,17 @@ go_library( "json.go", "meta.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json", importpath = "k8s.io/apimachinery/pkg/runtime/serializer/json", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer/recognizer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/framer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/yaml:go_default_library", "//vendor/github.com/ghodss/yaml:go_default_library", "//vendor/github.com/json-iterator/go:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/framer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/yaml:go_default_library", - ], -) - -go_test( - name = "go_default_xtest", - srcs = ["json_test.go"], - deps = [ - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/json:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", + "//vendor/github.com/modern-go/reflect2:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/json.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/json.go index f7738d116c..382c4858e7 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/json.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/json.go @@ -24,6 +24,7 @@ import ( "github.com/ghodss/yaml" jsoniter "github.com/json-iterator/go" + "github.com/modern-go/reflect2" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" @@ -68,31 +69,62 @@ type Serializer struct { var _ runtime.Serializer = &Serializer{} var _ recognizer.RecognizingDecoder = &Serializer{} -func init() { - // Force jsoniter to decode number to interface{} via ints, if possible. - decodeNumberAsInt64IfPossible := func(ptr unsafe.Pointer, iter *jsoniter.Iterator) { - switch iter.WhatIsNext() { - case jsoniter.NumberValue: - var number json.Number - iter.ReadVal(&number) - i64, err := strconv.ParseInt(string(number), 10, 64) - if err == nil { - *(*interface{})(ptr) = i64 - return - } - f64, err := strconv.ParseFloat(string(number), 64) - if err == nil { - *(*interface{})(ptr) = f64 - return - } - // Not much we can do here. - default: - *(*interface{})(ptr) = iter.Read() - } - } - jsoniter.RegisterTypeDecoderFunc("interface {}", decodeNumberAsInt64IfPossible) +type customNumberExtension struct { + jsoniter.DummyExtension } +func (cne *customNumberExtension) CreateDecoder(typ reflect2.Type) jsoniter.ValDecoder { + if typ.String() == "interface {}" { + return customNumberDecoder{} + } + return nil +} + +type customNumberDecoder struct { +} + +func (customNumberDecoder) Decode(ptr unsafe.Pointer, iter *jsoniter.Iterator) { + switch iter.WhatIsNext() { + case jsoniter.NumberValue: + var number jsoniter.Number + iter.ReadVal(&number) + i64, err := strconv.ParseInt(string(number), 10, 64) + if err == nil { + *(*interface{})(ptr) = i64 + return + } + f64, err := strconv.ParseFloat(string(number), 64) + if err == nil { + *(*interface{})(ptr) = f64 + return + } + iter.ReportError("DecodeNumber", err.Error()) + default: + *(*interface{})(ptr) = iter.Read() + } +} + +// CaseSensitiveJsonIterator returns a jsoniterator API that's configured to be +// case-sensitive when unmarshalling, and otherwise compatible with +// the encoding/json standard library. +func CaseSensitiveJsonIterator() jsoniter.API { + config := jsoniter.Config{ + EscapeHTML: true, + SortMapKeys: true, + ValidateJsonRawMessage: true, + CaseSensitive: true, + }.Froze() + // Force jsoniter to decode number to interface{} via int64/float64, if possible. + config.RegisterExtension(&customNumberExtension{}) + return config +} + +// Private copy of jsoniter to try to shield against possible mutations +// from outside. Still does not protect from package level jsoniter.Register*() functions - someone calling them +// in some other library will mess with every usage of the jsoniter library in the whole program. +// See https://github.com/json-iterator/go/issues/265 +var caseSensitiveJsonIterator = CaseSensitiveJsonIterator() + // gvkWithDefaults returns group kind and version defaulting from provided default func gvkWithDefaults(actual, defaultGVK schema.GroupVersionKind) schema.GroupVersionKind { if len(actual.Kind) == 0 { @@ -157,7 +189,7 @@ func (s *Serializer) Decode(originalData []byte, gvk *schema.GroupVersionKind, i types, _, err := s.typer.ObjectKinds(into) switch { case runtime.IsNotRegisteredError(err), isUnstructured: - if err := jsoniter.ConfigCompatibleWithStandardLibrary.Unmarshal(data, into); err != nil { + if err := caseSensitiveJsonIterator.Unmarshal(data, into); err != nil { return nil, actual, err } return into, actual, nil @@ -181,7 +213,7 @@ func (s *Serializer) Decode(originalData []byte, gvk *schema.GroupVersionKind, i return nil, actual, err } - if err := jsoniter.ConfigCompatibleWithStandardLibrary.Unmarshal(data, obj); err != nil { + if err := caseSensitiveJsonIterator.Unmarshal(data, obj); err != nil { return nil, actual, err } return obj, actual, nil @@ -190,7 +222,7 @@ func (s *Serializer) Decode(originalData []byte, gvk *schema.GroupVersionKind, i // Encode serializes the provided object to the given writer. func (s *Serializer) Encode(obj runtime.Object, w io.Writer) error { if s.yaml { - json, err := jsoniter.ConfigCompatibleWithStandardLibrary.Marshal(obj) + json, err := caseSensitiveJsonIterator.Marshal(obj) if err != nil { return err } @@ -203,7 +235,7 @@ func (s *Serializer) Encode(obj runtime.Object, w io.Writer) error { } if s.pretty { - data, err := jsoniter.ConfigCompatibleWithStandardLibrary.MarshalIndent(obj, "", " ") + data, err := caseSensitiveJsonIterator.MarshalIndent(obj, "", " ") if err != nil { return err } @@ -241,7 +273,7 @@ func (jsonFramer) NewFrameReader(r io.ReadCloser) io.ReadCloser { return framer.NewJSONFramedReader(r) } -// Framer is the default JSON framing behavior, with newlines delimiting individual objects. +// YAMLFramer is the default JSON framing behavior, with newlines delimiting individual objects. var YAMLFramer = yamlFramer{} type yamlFramer struct{} diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/serializer/protobuf/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/serializer/protobuf/BUILD index 3eb91d8626..ae1e06cc57 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/serializer/protobuf/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/serializer/protobuf/BUILD @@ -11,13 +11,14 @@ go_library( "doc.go", "protobuf.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/runtime/serializer/protobuf", importpath = "k8s.io/apimachinery/pkg/runtime/serializer/protobuf", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer/recognizer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/framer:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/framer:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer/BUILD index de54abb3d2..1e923aeceb 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer/BUILD @@ -8,10 +8,11 @@ load( go_library( name = "go_default_library", srcs = ["recognizer.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer", importpath = "k8s.io/apimachinery/pkg/runtime/serializer/recognizer", deps = [ - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming/BUILD index e0589fef78..3456344476 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming/BUILD @@ -11,19 +11,20 @@ go_test( srcs = ["streaming_test.go"], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/framer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/framer:go_default_library", ], ) go_library( name = "go_default_library", srcs = ["streaming.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming", importpath = "k8s.io/apimachinery/pkg/runtime/serializer/streaming", deps = [ - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning/BUILD index 95aa6d961d..785dc5fcfe 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning/BUILD @@ -11,20 +11,21 @@ go_test( srcs = ["versioning_test.go"], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library", ], ) go_library( name = "go_default_library", srcs = ["versioning.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning", importpath = "k8s.io/apimachinery/pkg/runtime/serializer/versioning", deps = [ - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning/versioning.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning/versioning.go index 7716cc4217..a5ae3ac4bb 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning/versioning.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning/versioning.go @@ -24,18 +24,6 @@ import ( "k8s.io/apimachinery/pkg/runtime/schema" ) -// NewCodecForScheme is a convenience method for callers that are using a scheme. -func NewCodecForScheme( - // TODO: I should be a scheme interface? - scheme *runtime.Scheme, - encoder runtime.Encoder, - decoder runtime.Decoder, - encodeVersion runtime.GroupVersioner, - decodeVersion runtime.GroupVersioner, -) runtime.Codec { - return NewCodec(encoder, decoder, runtime.UnsafeObjectConvertor(scheme), scheme, scheme, nil, encodeVersion, decodeVersion) -} - // NewDefaultingCodecForScheme is a convenience method for callers that are using a scheme. func NewDefaultingCodecForScheme( // TODO: I should be a scheme interface? @@ -45,7 +33,7 @@ func NewDefaultingCodecForScheme( encodeVersion runtime.GroupVersioner, decodeVersion runtime.GroupVersioner, ) runtime.Codec { - return NewCodec(encoder, decoder, runtime.UnsafeObjectConvertor(scheme), scheme, scheme, scheme, encodeVersion, decodeVersion) + return NewCodec(encoder, decoder, runtime.UnsafeObjectConvertor(scheme), scheme, scheme, scheme, encodeVersion, decodeVersion, scheme.Name()) } // NewCodec takes objects in their internal versions and converts them to external versions before @@ -60,6 +48,7 @@ func NewCodec( defaulter runtime.ObjectDefaulter, encodeVersion runtime.GroupVersioner, decodeVersion runtime.GroupVersioner, + originalSchemeName string, ) runtime.Codec { internal := &codec{ encoder: encoder, @@ -71,6 +60,8 @@ func NewCodec( encodeVersion: encodeVersion, decodeVersion: decodeVersion, + + originalSchemeName: originalSchemeName, } return internal } @@ -85,6 +76,9 @@ type codec struct { encodeVersion runtime.GroupVersioner decodeVersion runtime.GroupVersioner + + // originalSchemeName is optional, but when filled in it holds the name of the scheme from which this codec originates + originalSchemeName string } // Decode attempts a decode of the object, then tries to convert it to the internal version. If into is provided and the decoding is @@ -182,7 +176,7 @@ func (c *codec) Encode(obj runtime.Object, w io.Writer) error { } targetGVK, ok := c.encodeVersion.KindForGroupVersionKinds([]schema.GroupVersionKind{objGVK}) if !ok { - return runtime.NewNotRegisteredGVKErrForTarget(objGVK, c.encodeVersion) + return runtime.NewNotRegisteredGVKErrForTarget(c.originalSchemeName, objGVK, c.encodeVersion) } if targetGVK == objGVK { return c.encoder.Encode(obj, w) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/zz_generated.deepcopy.go index 167de61049..8b9182f359 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/zz_generated.deepcopy.go @@ -28,9 +28,7 @@ func (in *RawExtension) DeepCopyInto(out *RawExtension) { *out = make([]byte, len(*in)) copy(*out, *in) } - if in.Object == nil { - out.Object = nil - } else { + if in.Object != nil { out.Object = in.Object.DeepCopyObject() } return @@ -83,9 +81,7 @@ func (in *VersionedObjects) DeepCopyInto(out *VersionedObjects) { in, out := &in.Objects, &out.Objects *out = make([]Object, len(*in)) for i := range *in { - if (*in)[i] == nil { - (*out)[i] = nil - } else { + if (*in)[i] != nil { (*out)[i] = (*in)[i].DeepCopyObject() } } diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/selection/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/selection/BUILD index 3790df9af2..ebb68728a8 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/selection/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/selection/BUILD @@ -8,6 +8,7 @@ load( go_library( name = "go_default_library", srcs = ["operator.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/selection", importpath = "k8s.io/apimachinery/pkg/selection", ) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/types/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/types/BUILD index 3db635c8a3..ad08cd8fa6 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/types/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/types/BUILD @@ -14,6 +14,7 @@ go_library( "patch.go", "uid.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/types", importpath = "k8s.io/apimachinery/pkg/types", ) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/cache/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/cache/BUILD index 2fcbae3682..06a7cfa200 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/cache/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/cache/BUILD @@ -14,8 +14,8 @@ go_test( ], embed = [":go_default_library"], deps = [ + "//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library", "//vendor/github.com/golang/groupcache/lru:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", ], ) @@ -25,6 +25,7 @@ go_library( "cache.go", "lruexpirecache.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/cache", importpath = "k8s.io/apimachinery/pkg/util/cache", deps = ["//vendor/github.com/hashicorp/golang-lru:go_default_library"], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/clock/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/clock/BUILD index a9f6be4719..8aee67d9c9 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/clock/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/clock/BUILD @@ -15,6 +15,7 @@ go_test( go_library( name = "go_default_library", srcs = ["clock.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/clock", importpath = "k8s.io/apimachinery/pkg/util/clock", ) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/diff/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/diff/BUILD index 3cd03b4357..0089ba8482 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/diff/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/diff/BUILD @@ -15,10 +15,11 @@ go_test( go_library( name = "go_default_library", srcs = ["diff.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/diff", importpath = "k8s.io/apimachinery/pkg/util/diff", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", "//vendor/github.com/davecgh/go-spew/spew:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/diff/diff.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/diff/diff.go index bce95baf1c..06042617ea 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/diff/diff.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/diff/diff.go @@ -108,6 +108,14 @@ func limit(aObj, bObj interface{}, max int) (string, string) { elidedASuffix := "" elidedBSuffix := "" a, b := fmt.Sprintf("%#v", aObj), fmt.Sprintf("%#v", bObj) + + if aObj != nil && bObj != nil { + if aType, bType := fmt.Sprintf("%T", aObj), fmt.Sprintf("%T", bObj); aType != bType { + a = fmt.Sprintf("%s (%s)", a, aType) + b = fmt.Sprintf("%s (%s)", b, bType) + } + } + for { switch { case len(a) > max && len(a) > 4 && len(b) > 4 && a[:4] == b[:4]: diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/duration/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/duration/BUILD index 6b9e7880ec..98f515dadb 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/duration/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/duration/BUILD @@ -1,8 +1,9 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library") +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") go_library( name = "go_default_library", srcs = ["duration.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/duration", importpath = "k8s.io/apimachinery/pkg/util/duration", visibility = ["//visibility:public"], ) @@ -20,3 +21,9 @@ filegroup( tags = ["automanaged"], visibility = ["//visibility:public"], ) + +go_test( + name = "go_default_test", + srcs = ["duration_test.go"], + embed = [":go_default_library"], +) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/duration/duration.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/duration/duration.go index 00404c6cdd..0b88ab6c1f 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/duration/duration.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/duration/duration.go @@ -41,3 +41,37 @@ func ShortHumanDuration(d time.Duration) string { } return fmt.Sprintf("%dy", int(d.Hours()/24/365)) } + +// HumanDuration returns a succint representation of the provided duration +// with limited precision for consumption by humans. It provides ~2-3 significant +// figures of duration. +func HumanDuration(d time.Duration) string { + // Allow deviation no more than 2 seconds(excluded) to tolerate machine time + // inconsistence, it can be considered as almost now. + if seconds := int(d.Seconds()); seconds < -1 { + return fmt.Sprintf("") + } else if seconds < 0 { + return fmt.Sprintf("0s") + } else if seconds < 60*2 { + return fmt.Sprintf("%ds", seconds) + } + minutes := int(d / time.Minute) + if minutes < 10 { + return fmt.Sprintf("%dm%ds", minutes, int(d/time.Second)%60) + } else if minutes < 60*3 { + return fmt.Sprintf("%dm", minutes) + } + hours := int(d / time.Hour) + if hours < 8 { + return fmt.Sprintf("%dh%dm", hours, int(d/time.Minute)%60) + } else if hours < 48 { + return fmt.Sprintf("%dh", hours) + } else if hours < 24*8 { + return fmt.Sprintf("%dd%dh", hours/24, hours%24) + } else if hours < 24*365*2 { + return fmt.Sprintf("%dd", hours/24) + } else if hours < 24*365*8 { + return fmt.Sprintf("%dy%dd", hours/24/365, (hours/24)%365) + } + return fmt.Sprintf("%dy", int(hours/24/365)) +} diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/errors/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/errors/BUILD index fa2b74a2c8..c1de3109a4 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/errors/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/errors/BUILD @@ -18,6 +18,7 @@ go_library( "doc.go", "errors.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/errors", importpath = "k8s.io/apimachinery/pkg/util/errors", ) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/framer/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/framer/BUILD index 3a323b1139..e72505b98d 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/framer/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/framer/BUILD @@ -15,6 +15,7 @@ go_test( go_library( name = "go_default_library", srcs = ["framer.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/framer", importpath = "k8s.io/apimachinery/pkg/util/framer", ) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/httpstream/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/httpstream/BUILD index 5d45073efd..fa8e3f8d1a 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/httpstream/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/httpstream/BUILD @@ -18,6 +18,7 @@ go_library( "doc.go", "httpstream.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/httpstream", importpath = "k8s.io/apimachinery/pkg/util/httpstream", ) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/BUILD index 75d6ec0d14..9721de4000 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/BUILD @@ -15,8 +15,8 @@ go_test( ], embed = [":go_default_library"], deps = [ + "//staging/src/k8s.io/apimachinery/pkg/util/httpstream:go_default_library", "//vendor/github.com/elazarl/goproxy:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/httpstream:go_default_library", ], ) @@ -27,18 +27,19 @@ go_library( "roundtripper.go", "upgrade.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy", importpath = "k8s.io/apimachinery/pkg/util/httpstream/spdy", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/httpstream:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/third_party/forked/golang/netutil:go_default_library", "//vendor/github.com/docker/spdystream:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/httpstream:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/third_party/forked/golang/netutil:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/intstr/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/intstr/BUILD index 73e62bcde8..3e4b9eb71e 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/intstr/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/intstr/BUILD @@ -19,6 +19,7 @@ go_library( "generated.pb.go", "intstr.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/intstr", importpath = "k8s.io/apimachinery/pkg/util/intstr", deps = [ "//vendor/github.com/gogo/protobuf/proto:go_default_library", @@ -39,9 +40,3 @@ filegroup( srcs = [":package-srcs"], tags = ["automanaged"], ) - -filegroup( - name = "go_default_library_protos", - srcs = ["generated.proto"], - visibility = ["//visibility:public"], -) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/json/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/json/BUILD index c42821fc88..d8ac6ce41a 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/json/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/json/BUILD @@ -9,6 +9,7 @@ load( go_library( name = "go_default_library", srcs = ["json.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/json", importpath = "k8s.io/apimachinery/pkg/util/json", ) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/mergepatch/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/mergepatch/BUILD index 0ddf97d1db..1ed8649a9e 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/mergepatch/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/mergepatch/BUILD @@ -18,6 +18,7 @@ go_library( "errors.go", "util.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/mergepatch", importpath = "k8s.io/apimachinery/pkg/util/mergepatch", deps = [ "//vendor/github.com/davecgh/go-spew/spew:go_default_library", diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/mergepatch/util.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/mergepatch/util.go index 9261290a76..d09a939be3 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/mergepatch/util.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/mergepatch/util.go @@ -125,7 +125,7 @@ func HasConflicts(left, right interface{}) (bool, error) { default: return true, nil } - case string, float64, bool, int, int64, nil: + case string, float64, bool, int64, nil: return !reflect.DeepEqual(left, right), nil default: return true, fmt.Errorf("unknown type: %v", reflect.TypeOf(left)) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/naming/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/naming/BUILD new file mode 100644 index 0000000000..d9046784cc --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/naming/BUILD @@ -0,0 +1,29 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "go_default_library", + srcs = ["from_stack.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/naming", + importpath = "k8s.io/apimachinery/pkg/util/naming", + visibility = ["//visibility:public"], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], + visibility = ["//visibility:public"], +) + +go_test( + name = "go_default_test", + srcs = ["from_stack_test.go"], + embed = [":go_default_library"], +) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/naming/from_stack.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/naming/from_stack.go new file mode 100644 index 0000000000..2965d5a8bc --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/naming/from_stack.go @@ -0,0 +1,93 @@ +/* +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 naming + +import ( + "fmt" + "regexp" + goruntime "runtime" + "runtime/debug" + "strconv" + "strings" +) + +// GetNameFromCallsite walks back through the call stack until we find a caller from outside of the ignoredPackages +// it returns back a shortpath/filename:line to aid in identification of this reflector when it starts logging +func GetNameFromCallsite(ignoredPackages ...string) string { + name := "????" + const maxStack = 10 + for i := 1; i < maxStack; i++ { + _, file, line, ok := goruntime.Caller(i) + if !ok { + file, line, ok = extractStackCreator() + if !ok { + break + } + i += maxStack + } + if hasPackage(file, append(ignoredPackages, "/runtime/asm_")) { + continue + } + + file = trimPackagePrefix(file) + name = fmt.Sprintf("%s:%d", file, line) + break + } + return name +} + +// hasPackage returns true if the file is in one of the ignored packages. +func hasPackage(file string, ignoredPackages []string) bool { + for _, ignoredPackage := range ignoredPackages { + if strings.Contains(file, ignoredPackage) { + return true + } + } + return false +} + +// trimPackagePrefix reduces duplicate values off the front of a package name. +func trimPackagePrefix(file string) string { + if l := strings.LastIndex(file, "/vendor/"); l >= 0 { + return file[l+len("/vendor/"):] + } + if l := strings.LastIndex(file, "/src/"); l >= 0 { + return file[l+5:] + } + if l := strings.LastIndex(file, "/pkg/"); l >= 0 { + return file[l+1:] + } + return file +} + +var stackCreator = regexp.MustCompile(`(?m)^created by (.*)\n\s+(.*):(\d+) \+0x[[:xdigit:]]+$`) + +// extractStackCreator retrieves the goroutine file and line that launched this stack. Returns false +// if the creator cannot be located. +// TODO: Go does not expose this via runtime https://github.com/golang/go/issues/11440 +func extractStackCreator() (string, int, bool) { + stack := debug.Stack() + matches := stackCreator.FindStringSubmatch(string(stack)) + if matches == nil || len(matches) != 4 { + return "", 0, false + } + line, err := strconv.Atoi(matches[3]) + if err != nil { + return "", 0, false + } + return matches[2], line, true +} diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/net/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/net/BUILD index 9d0fffb11f..00fba56be9 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/net/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/net/BUILD @@ -28,11 +28,12 @@ go_library( "port_split.go", "util.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/net", importpath = "k8s.io/apimachinery/pkg/util/net", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/golang.org/x/net/http2:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/net/http.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/net/http.go index 7ea2df2261..8abbdea825 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/net/http.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/net/http.go @@ -91,7 +91,8 @@ func SetOldTransportDefaults(t *http.Transport) *http.Transport { // ProxierWithNoProxyCIDR allows CIDR rules in NO_PROXY t.Proxy = NewProxierWithNoProxyCIDR(http.ProxyFromEnvironment) } - if t.DialContext == nil { + // If no custom dialer is set, use the default context dialer + if t.DialContext == nil && t.Dial == nil { t.DialContext = defaultTransport.DialContext } if t.TLSHandshakeTimeout == 0 { @@ -129,7 +130,18 @@ func DialerFor(transport http.RoundTripper) (DialFunc, error) { switch transport := transport.(type) { case *http.Transport: - return transport.DialContext, nil + // transport.DialContext takes precedence over transport.Dial + if transport.DialContext != nil { + return transport.DialContext, nil + } + // adapt transport.Dial to the DialWithContext signature + if transport.Dial != nil { + return func(ctx context.Context, net, addr string) (net.Conn, error) { + return transport.Dial(net, addr) + }, nil + } + // otherwise return nil + return nil, nil case RoundTripperWrapper: return DialerFor(transport.WrappedRoundTripper()) default: @@ -167,10 +179,8 @@ func FormatURL(scheme string, host string, port int, path string) *url.URL { } func GetHTTPClient(req *http.Request) string { - if userAgent, ok := req.Header["User-Agent"]; ok { - if len(userAgent) > 0 { - return userAgent[0] - } + if ua := req.UserAgent(); len(ua) != 0 { + return ua } return "unknown" } diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/proxy/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/proxy/BUILD index 69e9734cff..bd1b0cc23d 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/proxy/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/proxy/BUILD @@ -15,12 +15,12 @@ go_test( ], embed = [":go_default_library"], deps = [ + "//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/httpstream:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", "//vendor/github.com/stretchr/testify/require:go_default_library", "//vendor/golang.org/x/net/websocket:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/httpstream:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", ], ) @@ -32,18 +32,19 @@ go_library( "transport.go", "upgradeaware.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/proxy", importpath = "k8s.io/apimachinery/pkg/util/proxy", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/httpstream:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/third_party/forked/golang/netutil:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/mxk/go-flowrate/flowrate:go_default_library", "//vendor/golang.org/x/net/html:go_default_library", "//vendor/golang.org/x/net/html/atom:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/httpstream:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/third_party/forked/golang/netutil:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/rand/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/rand/BUILD index 27126ab598..46e73b0369 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/rand/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/rand/BUILD @@ -15,6 +15,7 @@ go_test( go_library( name = "go_default_library", srcs = ["rand.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/rand", importpath = "k8s.io/apimachinery/pkg/util/rand", ) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/remotecommand/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/remotecommand/BUILD index 9919ad54a6..2997f51a10 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/remotecommand/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/remotecommand/BUILD @@ -8,8 +8,9 @@ load( go_library( name = "go_default_library", srcs = ["constants.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/remotecommand", importpath = "k8s.io/apimachinery/pkg/util/remotecommand", - deps = ["//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library"], + deps = ["//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library"], ) filegroup( diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/runtime/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/runtime/BUILD index 6407b8bd26..6bdeeb3d24 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/runtime/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/runtime/BUILD @@ -15,6 +15,7 @@ go_test( go_library( name = "go_default_library", srcs = ["runtime.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/runtime", importpath = "k8s.io/apimachinery/pkg/util/runtime", deps = ["//vendor/github.com/golang/glog:go_default_library"], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/sets/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/sets/BUILD index aaccd789b4..76ef726380 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/sets/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/sets/BUILD @@ -17,9 +17,11 @@ go_library( "int64.go", "string.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/sets", importpath = "k8s.io/apimachinery/pkg/util/sets", ) +# This rule makes all sorts of terrible assumptions that it's running inside k8s.io/kubernetes, even though it's part of k8s.io/apimachinery. :\ go_genrule( name = "set-gen", srcs = [ @@ -35,13 +37,13 @@ go_genrule( ], cmd = """ $(location //vendor/k8s.io/code-generator/cmd/set-gen) \ - --input-dirs ./vendor/k8s.io/apimachinery/pkg/util/sets/types \ + --input-dirs k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/sets/types \ --output-base $$(dirname $$(dirname $(location :byte.go))) \ --go-header-file $(location //hack/boilerplate:boilerplate.generatego.txt) \ --output-package sets """, go_deps = [ - "//vendor/k8s.io/apimachinery/pkg/util/sets/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets/types:go_default_library", ], tools = [ "//vendor/k8s.io/code-generator/cmd/set-gen", diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/strategicpatch/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/strategicpatch/BUILD index 2d6088929e..e0a947ece3 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/strategicpatch/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/strategicpatch/BUILD @@ -15,13 +15,13 @@ go_test( ], embed = [":go_default_library"], deps = [ + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/json:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/mergepatch:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/strategicpatch/testing:go_default_library", "//vendor/github.com/davecgh/go-spew/spew:go_default_library", "//vendor/github.com/ghodss/yaml:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/json:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/mergepatch:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/strategicpatch/testing:go_default_library", ], ) @@ -33,12 +33,13 @@ go_library( "patch.go", "types.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/strategicpatch", importpath = "k8s.io/apimachinery/pkg/util/strategicpatch", deps = [ - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/json:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/mergepatch:go_default_library", - "//vendor/k8s.io/apimachinery/third_party/forked/golang/json:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/json:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/mergepatch:go_default_library", + "//staging/src/k8s.io/apimachinery/third_party/forked/golang/json:go_default_library", "//vendor/k8s.io/kube-openapi/pkg/util/proto:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/strategicpatch/OWNERS b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/strategicpatch/OWNERS index 8e8d9fce8e..dbbe0de4ca 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/strategicpatch/OWNERS +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/strategicpatch/OWNERS @@ -1,5 +1,6 @@ approvers: - pwittrock +- mengqiy reviewers: - mengqiy - apelisse diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/strategicpatch/patch.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/strategicpatch/patch.go index 6be328f74a..ddf998172c 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/strategicpatch/patch.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/strategicpatch/patch.go @@ -1876,7 +1876,7 @@ func mergingMapFieldsHaveConflicts( return true, nil } return slicesHaveConflicts(leftType, rightType, schema, fieldPatchStrategy, fieldPatchMergeKey) - case string, float64, bool, int, int64, nil: + case string, float64, bool, int64, nil: return !reflect.DeepEqual(left, right), nil default: return true, fmt.Errorf("unknown type: %v", reflect.TypeOf(left)) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/uuid/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/uuid/BUILD index 786d8fbe39..662d9f5d70 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/uuid/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/uuid/BUILD @@ -8,10 +8,11 @@ load( go_library( name = "go_default_library", srcs = ["uuid.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/uuid", importpath = "k8s.io/apimachinery/pkg/util/uuid", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//vendor/github.com/pborman/uuid:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/validation/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/validation/BUILD index db599cbb7a..a28ee93e0b 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/validation/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/validation/BUILD @@ -10,14 +10,15 @@ go_test( name = "go_default_test", srcs = ["validation_test.go"], embed = [":go_default_library"], - deps = ["//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library"], + deps = ["//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library"], ) go_library( name = "go_default_library", srcs = ["validation.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/validation", importpath = "k8s.io/apimachinery/pkg/util/validation", - deps = ["//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library"], + deps = ["//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library"], ) filegroup( diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/validation/field/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/validation/field/BUILD index fc59dd81cd..ee8d60c09c 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/validation/field/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/validation/field/BUILD @@ -21,10 +21,11 @@ go_library( "errors.go", "path.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/validation/field", importpath = "k8s.io/apimachinery/pkg/util/validation/field", deps = [ - "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/validation/field/errors.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/validation/field/errors.go index 31705dee38..4767fd1dda 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/validation/field/errors.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/validation/field/errors.go @@ -48,7 +48,7 @@ func (v *Error) ErrorBody() string { var s string switch v.Type { case ErrorTypeRequired, ErrorTypeForbidden, ErrorTypeTooLong, ErrorTypeInternal: - s = fmt.Sprintf("%s", v.Type) + s = v.Type.String() default: value := v.BadValue valueType := reflect.TypeOf(value) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/wait/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/wait/BUILD index c062f3818d..7f24e92431 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/wait/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/wait/BUILD @@ -10,7 +10,7 @@ go_test( name = "go_default_test", srcs = ["wait_test.go"], embed = [":go_default_library"], - deps = ["//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library"], + deps = ["//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library"], ) go_library( @@ -19,8 +19,9 @@ go_library( "doc.go", "wait.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/wait", importpath = "k8s.io/apimachinery/pkg/util/wait", - deps = ["//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library"], + deps = ["//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library"], ) filegroup( diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go index a25e924654..ca61168cd4 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go @@ -230,13 +230,13 @@ func pollInternal(wait WaitFunc, condition ConditionFunc) error { // PollImmediate tries a condition func until it returns true, an error, or the timeout // is reached. // -// Poll always checks 'condition' before waiting for the interval. 'condition' +// PollImmediate always checks 'condition' before waiting for the interval. 'condition' // will always be invoked at least once. // // Some intervals may be missed if the condition takes too long or the time // window is too short. // -// If you want to Poll something forever, see PollInfinite. +// If you want to immediately Poll something forever, see PollImmediateInfinite. func PollImmediate(interval, timeout time.Duration, condition ConditionFunc) error { return pollImmediateInternal(poller(interval, timeout), condition) } diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/yaml/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/yaml/BUILD index 596ea292a9..64fa65e756 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/yaml/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/yaml/BUILD @@ -15,6 +15,7 @@ go_test( go_library( name = "go_default_library", srcs = ["decoder.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/yaml", importpath = "k8s.io/apimachinery/pkg/util/yaml", deps = [ "//vendor/github.com/ghodss/yaml:go_default_library", diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/version/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/version/BUILD index fc803ec6f3..95435cb72f 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/version/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/version/BUILD @@ -13,6 +13,7 @@ go_library( "helpers.go", "types.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/version", importpath = "k8s.io/apimachinery/pkg/version", ) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/watch/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/watch/BUILD index 3106af8f1f..4599a926c1 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/watch/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/watch/BUILD @@ -17,41 +17,32 @@ go_library( "watch.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/watch", importpath = "k8s.io/apimachinery/pkg/watch", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - ], -) - -go_test( - name = "go_default_xtest", - srcs = [ - "filter_test.go", - "mux_test.go", - "streamwatcher_test.go", - "watch_test.go", - ], - deps = [ - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", ], ) go_test( name = "go_default_test", - srcs = ["until_test.go"], + srcs = [ + "filter_test.go", + "mux_test.go", + "streamwatcher_test.go", + "until_test.go", + "watch_test.go", + ], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/watch/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/watch/zz_generated.deepcopy.go index 0d266ffb66..71ef4da334 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/watch/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/watch/zz_generated.deepcopy.go @@ -23,9 +23,7 @@ package watch // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Event) DeepCopyInto(out *Event) { *out = *in - if in.Object == nil { - out.Object = nil - } else { + if in.Object != nil { out.Object = in.Object.DeepCopyObject() } return diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/third_party/forked/golang/json/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/third_party/forked/golang/json/BUILD index 7ece664d06..6dc06d4e30 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/third_party/forked/golang/json/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/third_party/forked/golang/json/BUILD @@ -9,6 +9,7 @@ load( go_library( name = "go_default_library", srcs = ["fields.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/third_party/forked/golang/json", importpath = "k8s.io/apimachinery/third_party/forked/golang/json", ) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/third_party/forked/golang/netutil/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/third_party/forked/golang/netutil/BUILD index 1df290578f..acc180d5cc 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/third_party/forked/golang/netutil/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/third_party/forked/golang/netutil/BUILD @@ -8,6 +8,7 @@ load( go_library( name = "go_default_library", srcs = ["addr.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/third_party/forked/golang/netutil", importpath = "k8s.io/apimachinery/third_party/forked/golang/netutil", ) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect/BUILD b/cluster-autoscaler/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect/BUILD index 22c8ec0494..0af6d87dbb 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect/BUILD @@ -15,6 +15,7 @@ go_test( go_library( name = "go_default_library", srcs = ["deep_equal.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect", importpath = "k8s.io/apimachinery/third_party/forked/golang/reflect", ) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/admission/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/admission/BUILD index dd4f256411..ee2b37e1d5 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/admission/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/admission/BUILD @@ -18,15 +18,15 @@ go_test( ], embed = [":go_default_library"], deps = [ + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/json:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/apis/apiserver:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/apis/apiserver/v1alpha1:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/apis/audit:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", "//vendor/github.com/stretchr/testify/require:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/json:go_default_library", - "//vendor/k8s.io/apiserver/pkg/apis/apiserver:go_default_library", - "//vendor/k8s.io/apiserver/pkg/apis/apiserver/v1alpha1:go_default_library", - "//vendor/k8s.io/apiserver/pkg/apis/audit:go_default_library", ], ) @@ -43,23 +43,24 @@ go_library( "interfaces.go", "plugins.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/admission", importpath = "k8s.io/apiserver/pkg/admission", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/apis/apiserver:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/apis/apiserver/v1alpha1:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/apis/audit:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/audit:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/user:go_default_library", "//vendor/github.com/ghodss/yaml:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation:go_default_library", - "//vendor/k8s.io/apiserver/pkg/apis/apiserver:go_default_library", - "//vendor/k8s.io/apiserver/pkg/apis/apiserver/v1alpha1:go_default_library", - "//vendor/k8s.io/apiserver/pkg/apis/audit:go_default_library", - "//vendor/k8s.io/apiserver/pkg/audit:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/apiserver/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/apiserver/BUILD index d8956d72be..2ddf6d459e 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/apiserver/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/apiserver/BUILD @@ -13,11 +13,12 @@ go_library( "types.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/apis/apiserver", importpath = "k8s.io/apiserver/pkg/apis/apiserver", deps = [ - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/apiserver/v1alpha1/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/apiserver/v1alpha1/BUILD index 3075c3bbec..97fac2eaa3 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/apiserver/v1alpha1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/apiserver/v1alpha1/BUILD @@ -15,13 +15,14 @@ go_library( "zz_generated.deepcopy.go", "zz_generated.defaults.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/apis/apiserver/v1alpha1", importpath = "k8s.io/apiserver/pkg/apis/apiserver/v1alpha1", deps = [ - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apiserver/pkg/apis/apiserver:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/apis/apiserver:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/apiserver/v1alpha1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/apiserver/v1alpha1/zz_generated.deepcopy.go index d7ff897dbf..24151bbd22 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/apiserver/v1alpha1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/apiserver/v1alpha1/zz_generated.deepcopy.go @@ -61,12 +61,8 @@ func (in *AdmissionPluginConfiguration) DeepCopyInto(out *AdmissionPluginConfigu *out = *in if in.Configuration != nil { in, out := &in.Configuration, &out.Configuration - if *in == nil { - *out = nil - } else { - *out = new(runtime.Unknown) - (*in).DeepCopyInto(*out) - } + *out = new(runtime.Unknown) + (*in).DeepCopyInto(*out) } return } diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/apiserver/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/apiserver/zz_generated.deepcopy.go index 475eb28611..542ef977b6 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/apiserver/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/apiserver/zz_generated.deepcopy.go @@ -61,12 +61,8 @@ func (in *AdmissionPluginConfiguration) DeepCopyInto(out *AdmissionPluginConfigu *out = *in if in.Configuration != nil { in, out := &in.Configuration, &out.Configuration - if *in == nil { - *out = nil - } else { - *out = new(runtime.Unknown) - (*in).DeepCopyInto(*out) - } + *out = new(runtime.Unknown) + (*in).DeepCopyInto(*out) } return } diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/BUILD index 2388d79f8c..0ca943b237 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/BUILD @@ -14,12 +14,13 @@ go_library( "types.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/apis/audit", importpath = "k8s.io/apiserver/pkg/apis/audit", deps = [ - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/types.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/types.go index d72505d10b..7785b11814 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/types.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/types.go @@ -99,6 +99,10 @@ type Event struct { // Source IPs, from where the request originated and intermediate proxies. // +optional SourceIPs []string + // UserAgent records the user agent string reported by the client. + // Note that the UserAgent is provided by the client, and must not be trusted. + // +optional + UserAgent string // Object reference this request is targeted at. // Does not apply for List-type requests, or non-resource requests. // +optional diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1alpha1/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1alpha1/BUILD index b6729cdf93..69e1faf1b1 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1alpha1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1alpha1/BUILD @@ -18,17 +18,18 @@ go_library( "zz_generated.deepcopy.go", "zz_generated.defaults.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/apis/audit/v1alpha1", importpath = "k8s.io/apiserver/pkg/apis/audit/v1alpha1", deps = [ + "//staging/src/k8s.io/api/authentication/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/apis/audit:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", - "//vendor/k8s.io/api/authentication/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apiserver/pkg/apis/audit:go_default_library", ], ) @@ -45,20 +46,14 @@ filegroup( tags = ["automanaged"], ) -filegroup( - name = "go_default_library_protos", - srcs = ["generated.proto"], - visibility = ["//visibility:public"], -) - go_test( name = "go_default_test", srcs = ["conversion_test.go"], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apiserver/pkg/apis/audit:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/apis/audit:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1alpha1/generated.pb.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1alpha1/generated.pb.go index d5494d35c3..1dfd3d3927 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1alpha1/generated.pb.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1alpha1/generated.pb.go @@ -266,6 +266,12 @@ func (m *Event) MarshalTo(dAtA []byte) (int, error) { i += copy(dAtA[i:], v) } } + dAtA[i] = 0x92 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.UserAgent))) + i += copy(dAtA[i:], m.UserAgent) return i, nil } @@ -704,6 +710,8 @@ func (m *Event) Size() (n int) { n += mapEntrySize + 2 + sovGenerated(uint64(mapEntrySize)) } } + l = len(m.UserAgent) + n += 2 + l + sovGenerated(uint64(l)) return n } @@ -890,6 +898,7 @@ func (this *Event) String() string { `RequestReceivedTimestamp:` + strings.Replace(strings.Replace(this.RequestReceivedTimestamp.String(), "MicroTime", "k8s_io_apimachinery_pkg_apis_meta_v1.MicroTime", 1), `&`, ``, 1) + `,`, `StageTimestamp:` + strings.Replace(strings.Replace(this.StageTimestamp.String(), "MicroTime", "k8s_io_apimachinery_pkg_apis_meta_v1.MicroTime", 1), `&`, ``, 1) + `,`, `Annotations:` + mapStringForAnnotations + `,`, + `UserAgent:` + fmt.Sprintf("%v", this.UserAgent) + `,`, `}`, }, "") return s @@ -1615,6 +1624,35 @@ func (m *Event) Unmarshal(dAtA []byte) error { m.Annotations[mapkey] = mapvalue } iNdEx = postIndex + case 18: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UserAgent", 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 > l { + return io.ErrUnexpectedEOF + } + m.UserAgent = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -2782,84 +2820,85 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 1258 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0xcf, 0x6f, 0x1b, 0xc5, - 0x17, 0xcf, 0xd6, 0x71, 0x63, 0x8f, 0x1b, 0xc7, 0x99, 0x56, 0xdf, 0xae, 0x72, 0xb0, 0xfd, 0x35, - 0x12, 0xb2, 0x20, 0xec, 0x26, 0x21, 0xd0, 0x80, 0x04, 0x22, 0x56, 0x2b, 0xb0, 0x94, 0x86, 0x30, - 0x89, 0x2b, 0xf1, 0xe3, 0xc0, 0xda, 0x7e, 0xb1, 0x17, 0xdb, 0xbb, 0xcb, 0xcc, 0xac, 0xab, 0xdc, - 0x38, 0x70, 0x45, 0xe2, 0xce, 0x1f, 0x53, 0x71, 0xcb, 0xb1, 0xc7, 0x9e, 0x2c, 0x62, 0xfe, 0x8b, - 0x1c, 0x2a, 0x34, 0xb3, 0xb3, 0x3b, 0x6b, 0xa7, 0x16, 0x0e, 0x87, 0xde, 0x76, 0xde, 0xfb, 0xbc, - 0xcf, 0x7b, 0xf3, 0xf6, 0xfd, 0x18, 0xf4, 0xcd, 0xe0, 0x80, 0x59, 0xae, 0x6f, 0x0f, 0xc2, 0x36, - 0x50, 0x0f, 0x38, 0x30, 0x7b, 0x0c, 0x5e, 0xd7, 0xa7, 0xb6, 0x52, 0x38, 0x81, 0xcb, 0x80, 0x8e, - 0x81, 0xda, 0xc1, 0xa0, 0x27, 0x4f, 0xb6, 0x13, 0x76, 0x5d, 0x6e, 0x8f, 0x77, 0x9d, 0x61, 0xd0, - 0x77, 0x76, 0xed, 0x1e, 0x78, 0x40, 0x1d, 0x0e, 0x5d, 0x2b, 0xa0, 0x3e, 0xf7, 0x71, 0x3d, 0xb2, - 0xb4, 0x12, 0x4b, 0x2b, 0x18, 0xf4, 0xe4, 0xc9, 0x92, 0x96, 0x56, 0x6c, 0xb9, 0xf5, 0x41, 0xcf, - 0xe5, 0xfd, 0xb0, 0x6d, 0x75, 0xfc, 0x91, 0xdd, 0xf3, 0x7b, 0xbe, 0x2d, 0x09, 0xda, 0xe1, 0xb9, - 0x3c, 0xc9, 0x83, 0xfc, 0x8a, 0x88, 0xb7, 0xb6, 0x75, 0x48, 0xb6, 0x13, 0xf2, 0x3e, 0x78, 0xdc, - 0xed, 0x38, 0xdc, 0xf5, 0x3d, 0x7b, 0x7c, 0x23, 0x8c, 0xad, 0x7d, 0x8d, 0x1e, 0x39, 0x9d, 0xbe, - 0xeb, 0x01, 0xbd, 0xd0, 0x77, 0x18, 0x01, 0x77, 0xde, 0x64, 0x65, 0x2f, 0xb2, 0xa2, 0xa1, 0xc7, - 0xdd, 0x11, 0xdc, 0x30, 0xf8, 0xf8, 0xdf, 0x0c, 0x58, 0xa7, 0x0f, 0x23, 0xe7, 0x86, 0xdd, 0x87, - 0x8b, 0xec, 0x42, 0xee, 0x0e, 0x6d, 0xd7, 0xe3, 0x8c, 0xd3, 0x79, 0xa3, 0xda, 0xeb, 0x02, 0xca, - 0x3e, 0x19, 0x83, 0xc7, 0xf1, 0x8f, 0x28, 0x27, 0xae, 0xd0, 0x75, 0xb8, 0x63, 0x1a, 0x55, 0xa3, - 0x5e, 0xd8, 0xdb, 0xb1, 0x74, 0xde, 0x13, 0x46, 0x9d, 0x7a, 0x81, 0xb6, 0xc6, 0xbb, 0xd6, 0xd7, - 0xed, 0x9f, 0xa0, 0xc3, 0x9f, 0x02, 0x77, 0x1a, 0xf8, 0x72, 0x52, 0x59, 0x99, 0x4e, 0x2a, 0x48, - 0xcb, 0x48, 0xc2, 0x8a, 0xb7, 0x51, 0x76, 0x08, 0x63, 0x18, 0x9a, 0x77, 0xaa, 0x46, 0x3d, 0xdf, - 0xf8, 0x9f, 0x02, 0x67, 0x8f, 0x84, 0xf0, 0x3a, 0xfe, 0x20, 0x11, 0x08, 0x7f, 0x8f, 0xf2, 0xe2, - 0xb6, 0x8c, 0x3b, 0xa3, 0xc0, 0xcc, 0xc8, 0x80, 0xde, 0x5b, 0x2e, 0xa0, 0x33, 0x77, 0x04, 0x8d, - 0x4d, 0xc5, 0x9e, 0x3f, 0x8b, 0x49, 0x88, 0xe6, 0xc3, 0xc7, 0x68, 0x4d, 0x56, 0x4e, 0xf3, 0xb1, - 0xb9, 0x2a, 0x83, 0xd9, 0x57, 0xf0, 0xb5, 0xc3, 0x48, 0x7c, 0x3d, 0xa9, 0xfc, 0x7f, 0x51, 0x3e, - 0xf9, 0x45, 0x00, 0xcc, 0x6a, 0x35, 0x1f, 0x93, 0x98, 0x44, 0x5c, 0x8d, 0x71, 0xa7, 0x07, 0x66, - 0x76, 0xf6, 0x6a, 0xa7, 0x42, 0x78, 0x1d, 0x7f, 0x90, 0x08, 0x84, 0xf7, 0x10, 0xa2, 0xf0, 0x73, - 0x08, 0x8c, 0xb7, 0x48, 0xd3, 0xbc, 0x2b, 0x4d, 0x92, 0xd4, 0x91, 0x44, 0x43, 0x52, 0x28, 0x5c, - 0x45, 0xab, 0x63, 0xa0, 0x6d, 0x73, 0x4d, 0xa2, 0xef, 0x29, 0xf4, 0xea, 0x33, 0xa0, 0x6d, 0x22, - 0x35, 0xf8, 0x2b, 0xb4, 0x1a, 0x32, 0xa0, 0x66, 0x4e, 0xe6, 0xea, 0xdd, 0x54, 0xae, 0xac, 0xd9, - 0xda, 0x16, 0x39, 0x6a, 0x31, 0xa0, 0x4d, 0xef, 0xdc, 0xd7, 0x4c, 0x42, 0x42, 0x24, 0x03, 0xee, - 0xa3, 0x92, 0x3b, 0x0a, 0x80, 0x32, 0xdf, 0x13, 0xa5, 0x22, 0x34, 0x66, 0xfe, 0x56, 0xac, 0x0f, - 0xa6, 0x93, 0x4a, 0xa9, 0x39, 0xc7, 0x41, 0x6e, 0xb0, 0xe2, 0xf7, 0x51, 0x9e, 0xf9, 0x21, 0xed, - 0x40, 0xf3, 0x84, 0x99, 0xa8, 0x9a, 0xa9, 0xe7, 0x1b, 0xeb, 0xe2, 0xa7, 0x9d, 0xc6, 0x42, 0xa2, - 0xf5, 0xf8, 0x1c, 0xe5, 0x7d, 0x59, 0x57, 0x04, 0xce, 0xcd, 0x82, 0x8c, 0xe7, 0x13, 0x6b, 0xd9, - 0xd1, 0xa0, 0xca, 0x94, 0xc0, 0x39, 0x50, 0xf0, 0x3a, 0x10, 0xf9, 0x49, 0x84, 0x44, 0x53, 0xe3, - 0x3e, 0x2a, 0x52, 0x60, 0x81, 0xef, 0x31, 0x38, 0xe5, 0x0e, 0x0f, 0x99, 0x79, 0x4f, 0x3a, 0xdb, - 0x5e, 0xae, 0xfc, 0x22, 0x9b, 0x06, 0x9e, 0x4e, 0x2a, 0x45, 0x32, 0xc3, 0x43, 0xe6, 0x78, 0xb1, - 0x83, 0xd6, 0xd5, 0x2f, 0x8e, 0x02, 0x31, 0xd7, 0xa5, 0xa3, 0xfa, 0x42, 0x47, 0x6a, 0x04, 0x58, - 0x2d, 0x6f, 0xe0, 0xf9, 0xcf, 0xbd, 0xc6, 0xe6, 0x74, 0x52, 0x59, 0x27, 0x69, 0x0a, 0x32, 0xcb, - 0x88, 0xbb, 0xfa, 0x32, 0xca, 0x47, 0xf1, 0x96, 0x3e, 0x66, 0x2e, 0xa2, 0x9c, 0xcc, 0x71, 0xe2, - 0xdf, 0x0c, 0x64, 0x2a, 0xbf, 0x04, 0x3a, 0xe0, 0x8e, 0xa1, 0x9b, 0xf4, 0x9d, 0xb9, 0x21, 0x1d, - 0xda, 0xcb, 0x65, 0xef, 0xa9, 0xdb, 0xa1, 0xbe, 0xec, 0xe0, 0xaa, 0xaa, 0x4c, 0x93, 0x2c, 0x20, - 0x26, 0x0b, 0x5d, 0x62, 0x1f, 0x15, 0x65, 0xab, 0xe9, 0x20, 0x4a, 0xff, 0x2d, 0x88, 0xb8, 0x93, - 0x8b, 0xa7, 0x33, 0x74, 0x64, 0x8e, 0x1e, 0x3f, 0x47, 0x05, 0xc7, 0xf3, 0x7c, 0x2e, 0x5b, 0x81, - 0x99, 0x9b, 0xd5, 0x4c, 0xbd, 0xb0, 0xf7, 0xc5, 0xf2, 0xd5, 0x29, 0x67, 0xb0, 0x75, 0xa8, 0x29, - 0x9e, 0x78, 0x9c, 0x5e, 0x34, 0xee, 0x2b, 0xf7, 0x85, 0x94, 0x86, 0xa4, 0x3d, 0x6d, 0x7d, 0x8e, - 0x4a, 0xf3, 0x56, 0xb8, 0x84, 0x32, 0x03, 0xb8, 0x90, 0x53, 0x3c, 0x4f, 0xc4, 0x27, 0x7e, 0x80, - 0xb2, 0x63, 0x67, 0x18, 0x42, 0x34, 0x7a, 0x49, 0x74, 0xf8, 0xf4, 0xce, 0x81, 0x51, 0x7b, 0x61, - 0xa0, 0xbc, 0x74, 0x7e, 0xe4, 0x32, 0x8e, 0x7f, 0xb8, 0xb1, 0x04, 0xac, 0xe5, 0x32, 0x26, 0xac, - 0xe5, 0x0a, 0x28, 0xa9, 0x88, 0x73, 0xb1, 0x24, 0xb5, 0x00, 0xce, 0x50, 0xd6, 0xe5, 0x30, 0x62, - 0xe6, 0x1d, 0x99, 0x1e, 0xfb, 0x96, 0xe9, 0x69, 0xac, 0xc7, 0x63, 0xb5, 0x29, 0x58, 0x48, 0x44, - 0x56, 0xfb, 0xc3, 0x40, 0xc5, 0x2f, 0xa9, 0x1f, 0x06, 0x04, 0xa2, 0x59, 0xc1, 0xf0, 0x3b, 0x28, - 0xdb, 0x13, 0x92, 0x28, 0x05, 0xda, 0x2e, 0x82, 0x45, 0x3a, 0x31, 0x7b, 0x68, 0x6c, 0x21, 0x23, - 0x52, 0xb3, 0x27, 0xa1, 0x21, 0x5a, 0x8f, 0x1f, 0x89, 0x4e, 0x8d, 0x0e, 0xc7, 0xce, 0x08, 0x98, - 0x99, 0x91, 0x06, 0xaa, 0xff, 0x52, 0x0a, 0x32, 0x8b, 0xab, 0xfd, 0x9a, 0x41, 0x1b, 0x73, 0xa3, - 0x07, 0x6f, 0xa3, 0x5c, 0x0c, 0x52, 0x11, 0x26, 0x59, 0x8b, 0xb9, 0x48, 0x82, 0xc0, 0x36, 0xca, - 0x7b, 0x82, 0x2a, 0x70, 0x3a, 0xea, 0xff, 0xe9, 0xe5, 0x76, 0x1c, 0x2b, 0x88, 0xc6, 0x88, 0x55, - 0x21, 0x0e, 0x72, 0x69, 0xa6, 0x56, 0x85, 0xc0, 0x12, 0xa9, 0xc1, 0x0d, 0x94, 0x09, 0xdd, 0xae, - 0x5a, 0x7d, 0x3b, 0x0a, 0x90, 0x69, 0x2d, 0xbb, 0xf6, 0x84, 0xb1, 0x58, 0x62, 0x4e, 0xe0, 0x3e, - 0x03, 0xca, 0x5c, 0xdf, 0x53, 0x7b, 0x2f, 0x59, 0x62, 0x87, 0x27, 0x4d, 0xa5, 0x21, 0x29, 0x14, - 0x3e, 0x44, 0x1b, 0xf1, 0xb5, 0x62, 0xc3, 0x68, 0xfb, 0x3d, 0x54, 0x86, 0x1b, 0x64, 0x56, 0x4d, - 0xe6, 0xf1, 0xf8, 0x23, 0x54, 0x60, 0x61, 0x3b, 0x49, 0x5f, 0xb4, 0x0e, 0x93, 0x36, 0x39, 0xd5, - 0x2a, 0x92, 0xc6, 0xd5, 0x5e, 0x1b, 0xe8, 0xee, 0x89, 0x3f, 0x74, 0x3b, 0x17, 0x6f, 0xe1, 0xa1, - 0xf3, 0x2d, 0xca, 0xd2, 0x70, 0x08, 0x71, 0x9d, 0xef, 0x2f, 0x5f, 0xe7, 0x51, 0x88, 0x24, 0x1c, - 0x82, 0x2e, 0x5a, 0x71, 0x62, 0x24, 0x62, 0xc4, 0x8f, 0x10, 0xf2, 0x47, 0x2e, 0x97, 0xd3, 0x28, - 0x2e, 0xc2, 0x87, 0x32, 0x90, 0x44, 0xaa, 0x9f, 0x1b, 0x29, 0x68, 0xed, 0x4f, 0x03, 0xa1, 0x88, - 0xfd, 0x2d, 0x34, 0x7a, 0x6b, 0xb6, 0xd1, 0x77, 0x6e, 0x9b, 0x80, 0x05, 0x9d, 0xfe, 0x22, 0x13, - 0xdf, 0x41, 0xe4, 0x44, 0xbf, 0x27, 0x8d, 0x65, 0xde, 0x93, 0x15, 0x94, 0x15, 0x8f, 0x9b, 0xb8, - 0xd5, 0xf3, 0x02, 0x29, 0xde, 0x20, 0x8c, 0x44, 0x72, 0x6c, 0x21, 0x24, 0x3e, 0xe4, 0x8c, 0x88, - 0x53, 0x5b, 0x14, 0xa9, 0x6d, 0x25, 0x52, 0x92, 0x42, 0x08, 0x42, 0xf1, 0xee, 0x62, 0xe6, 0xaa, - 0x26, 0x14, 0xcf, 0x31, 0x46, 0x22, 0x39, 0x76, 0xd3, 0x03, 0x26, 0x2b, 0x33, 0x71, 0xb0, 0x7c, - 0x26, 0x66, 0x47, 0x9a, 0x6e, 0xf9, 0x37, 0x8e, 0x27, 0x0b, 0xa1, 0xa4, 0xff, 0x99, 0x79, 0x57, - 0xc7, 0x9e, 0x0c, 0x08, 0x46, 0x52, 0x08, 0xfc, 0x19, 0xda, 0xf0, 0x7c, 0x2f, 0xa6, 0x6a, 0x91, - 0x23, 0x66, 0xae, 0x49, 0xa3, 0xfb, 0xa2, 0x09, 0x8f, 0x67, 0x55, 0x64, 0x1e, 0x3b, 0x57, 0x85, - 0xb9, 0xa5, 0xab, 0xb0, 0x61, 0x5d, 0x5e, 0x95, 0x57, 0x5e, 0x5e, 0x95, 0x57, 0x5e, 0x5d, 0x95, - 0x57, 0x7e, 0x99, 0x96, 0x8d, 0xcb, 0x69, 0xd9, 0x78, 0x39, 0x2d, 0x1b, 0xaf, 0xa6, 0x65, 0xe3, - 0xaf, 0x69, 0xd9, 0xf8, 0xfd, 0xef, 0xf2, 0xca, 0x77, 0xb9, 0x38, 0x09, 0xff, 0x04, 0x00, 0x00, - 0xff, 0xff, 0x3e, 0x3d, 0x28, 0x0e, 0x4d, 0x0e, 0x00, 0x00, + // 1278 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0x4d, 0x6f, 0x23, 0x45, + 0x13, 0xce, 0xac, 0xe3, 0x8d, 0xdd, 0xde, 0x38, 0x4e, 0xef, 0xea, 0xdd, 0x51, 0x0e, 0xb6, 0x5f, + 0x23, 0x21, 0x0b, 0xc2, 0x4c, 0x12, 0x02, 0x1b, 0x90, 0x40, 0xc4, 0xda, 0x15, 0x58, 0xca, 0x86, + 0xd0, 0x89, 0x57, 0xe2, 0xe3, 0xc0, 0xd8, 0xae, 0xd8, 0x83, 0xed, 0x9e, 0xa1, 0xbb, 0xc7, 0xab, + 0xdc, 0x38, 0x70, 0x45, 0xe2, 0xce, 0x8f, 0xe0, 0x27, 0xac, 0xb8, 0xe5, 0xb8, 0xc7, 0x3d, 0x59, + 0xc4, 0xfc, 0x8b, 0x1c, 0x10, 0xea, 0x9e, 0x8f, 0x1e, 0x3b, 0x6b, 0xe1, 0x70, 0xd8, 0xdb, 0x74, + 0xd5, 0x53, 0x4f, 0x55, 0xd7, 0xd4, 0x47, 0xa3, 0xaf, 0x06, 0x07, 0xdc, 0x72, 0x3d, 0x7b, 0x10, + 0xb4, 0x81, 0x51, 0x10, 0xc0, 0xed, 0x31, 0xd0, 0xae, 0xc7, 0xec, 0x48, 0xe1, 0xf8, 0x2e, 0x07, + 0x36, 0x06, 0x66, 0xfb, 0x83, 0x9e, 0x3a, 0xd9, 0x4e, 0xd0, 0x75, 0x85, 0x3d, 0xde, 0x75, 0x86, + 0x7e, 0xdf, 0xd9, 0xb5, 0x7b, 0x40, 0x81, 0x39, 0x02, 0xba, 0x96, 0xcf, 0x3c, 0xe1, 0xe1, 0x7a, + 0x68, 0x69, 0x25, 0x96, 0x96, 0x3f, 0xe8, 0xa9, 0x93, 0xa5, 0x2c, 0xad, 0xd8, 0x72, 0xeb, 0xbd, + 0x9e, 0x2b, 0xfa, 0x41, 0xdb, 0xea, 0x78, 0x23, 0xbb, 0xe7, 0xf5, 0x3c, 0x5b, 0x11, 0xb4, 0x83, + 0x73, 0x75, 0x52, 0x07, 0xf5, 0x15, 0x12, 0x6f, 0x6d, 0xeb, 0x90, 0x6c, 0x27, 0x10, 0x7d, 0xa0, + 0xc2, 0xed, 0x38, 0xc2, 0xf5, 0xa8, 0x3d, 0xbe, 0x11, 0xc6, 0xd6, 0xbe, 0x46, 0x8f, 0x9c, 0x4e, + 0xdf, 0xa5, 0xc0, 0x2e, 0xf4, 0x1d, 0x46, 0x20, 0x9c, 0xd7, 0x59, 0xd9, 0x8b, 0xac, 0x58, 0x40, + 0x85, 0x3b, 0x82, 0x1b, 0x06, 0x1f, 0xfe, 0x9b, 0x01, 0xef, 0xf4, 0x61, 0xe4, 0xdc, 0xb0, 0x7b, + 0x7f, 0x91, 0x5d, 0x20, 0xdc, 0xa1, 0xed, 0x52, 0xc1, 0x05, 0x9b, 0x37, 0xaa, 0xfd, 0x7e, 0x0f, + 0x65, 0x9f, 0x8c, 0x81, 0x0a, 0xfc, 0x3d, 0xca, 0xc9, 0x2b, 0x74, 0x1d, 0xe1, 0x98, 0x46, 0xd5, + 0xa8, 0x17, 0xf6, 0x76, 0x2c, 0x9d, 0xf7, 0x84, 0x51, 0xa7, 0x5e, 0xa2, 0xad, 0xf1, 0xae, 0xf5, + 0x65, 0xfb, 0x07, 0xe8, 0x88, 0xa7, 0x20, 0x9c, 0x06, 0xbe, 0x9c, 0x54, 0x56, 0xa6, 0x93, 0x0a, + 0xd2, 0x32, 0x92, 0xb0, 0xe2, 0x6d, 0x94, 0x1d, 0xc2, 0x18, 0x86, 0xe6, 0x9d, 0xaa, 0x51, 0xcf, + 0x37, 0xfe, 0x17, 0x81, 0xb3, 0x47, 0x52, 0x78, 0x1d, 0x7f, 0x90, 0x10, 0x84, 0xbf, 0x45, 0x79, + 0x79, 0x5b, 0x2e, 0x9c, 0x91, 0x6f, 0x66, 0x54, 0x40, 0xef, 0x2c, 0x17, 0xd0, 0x99, 0x3b, 0x82, + 0xc6, 0x66, 0xc4, 0x9e, 0x3f, 0x8b, 0x49, 0x88, 0xe6, 0xc3, 0xc7, 0x68, 0x4d, 0x55, 0x4e, 0xf3, + 0xb1, 0xb9, 0xaa, 0x82, 0xd9, 0x8f, 0xe0, 0x6b, 0x87, 0xa1, 0xf8, 0x7a, 0x52, 0xf9, 0xff, 0xa2, + 0x7c, 0x8a, 0x0b, 0x1f, 0xb8, 0xd5, 0x6a, 0x3e, 0x26, 0x31, 0x89, 0xbc, 0x1a, 0x17, 0x4e, 0x0f, + 0xcc, 0xec, 0xec, 0xd5, 0x4e, 0xa5, 0xf0, 0x3a, 0xfe, 0x20, 0x21, 0x08, 0xef, 0x21, 0xc4, 0xe0, + 0xc7, 0x00, 0xb8, 0x68, 0x91, 0xa6, 0x79, 0x57, 0x99, 0x24, 0xa9, 0x23, 0x89, 0x86, 0xa4, 0x50, + 0xb8, 0x8a, 0x56, 0xc7, 0xc0, 0xda, 0xe6, 0x9a, 0x42, 0xdf, 0x8b, 0xd0, 0xab, 0xcf, 0x80, 0xb5, + 0x89, 0xd2, 0xe0, 0x2f, 0xd0, 0x6a, 0xc0, 0x81, 0x99, 0x39, 0x95, 0xab, 0xb7, 0x53, 0xb9, 0xb2, + 0x66, 0x6b, 0x5b, 0xe6, 0xa8, 0xc5, 0x81, 0x35, 0xe9, 0xb9, 0xa7, 0x99, 0xa4, 0x84, 0x28, 0x06, + 0xdc, 0x47, 0x25, 0x77, 0xe4, 0x03, 0xe3, 0x1e, 0x95, 0xa5, 0x22, 0x35, 0x66, 0xfe, 0x56, 0xac, + 0x0f, 0xa6, 0x93, 0x4a, 0xa9, 0x39, 0xc7, 0x41, 0x6e, 0xb0, 0xe2, 0x77, 0x51, 0x9e, 0x7b, 0x01, + 0xeb, 0x40, 0xf3, 0x84, 0x9b, 0xa8, 0x9a, 0xa9, 0xe7, 0x1b, 0xeb, 0xf2, 0xa7, 0x9d, 0xc6, 0x42, + 0xa2, 0xf5, 0xf8, 0x1c, 0xe5, 0x3d, 0x55, 0x57, 0x04, 0xce, 0xcd, 0x82, 0x8a, 0xe7, 0x23, 0x6b, + 0xd9, 0xd1, 0x10, 0x95, 0x29, 0x81, 0x73, 0x60, 0x40, 0x3b, 0x10, 0xfa, 0x49, 0x84, 0x44, 0x53, + 0xe3, 0x3e, 0x2a, 0x32, 0xe0, 0xbe, 0x47, 0x39, 0x9c, 0x0a, 0x47, 0x04, 0xdc, 0xbc, 0xa7, 0x9c, + 0x6d, 0x2f, 0x57, 0x7e, 0xa1, 0x4d, 0x03, 0x4f, 0x27, 0x95, 0x22, 0x99, 0xe1, 0x21, 0x73, 0xbc, + 0xd8, 0x41, 0xeb, 0xd1, 0x2f, 0x0e, 0x03, 0x31, 0xd7, 0x95, 0xa3, 0xfa, 0x42, 0x47, 0xd1, 0x08, + 0xb0, 0x5a, 0x74, 0x40, 0xbd, 0xe7, 0xb4, 0xb1, 0x39, 0x9d, 0x54, 0xd6, 0x49, 0x9a, 0x82, 0xcc, + 0x32, 0xe2, 0xae, 0xbe, 0x4c, 0xe4, 0xa3, 0x78, 0x4b, 0x1f, 0x33, 0x17, 0x89, 0x9c, 0xcc, 0x71, + 0xe2, 0x5f, 0x0c, 0x64, 0x46, 0x7e, 0x09, 0x74, 0xc0, 0x1d, 0x43, 0x37, 0xe9, 0x3b, 0x73, 0x43, + 0x39, 0xb4, 0x97, 0xcb, 0xde, 0x53, 0xb7, 0xc3, 0x3c, 0xd5, 0xc1, 0xd5, 0xa8, 0x32, 0x4d, 0xb2, + 0x80, 0x98, 0x2c, 0x74, 0x89, 0x3d, 0x54, 0x54, 0xad, 0xa6, 0x83, 0x28, 0xfd, 0xb7, 0x20, 0xe2, + 0x4e, 0x2e, 0x9e, 0xce, 0xd0, 0x91, 0x39, 0x7a, 0xfc, 0x1c, 0x15, 0x1c, 0x4a, 0x3d, 0xa1, 0x5a, + 0x81, 0x9b, 0x9b, 0xd5, 0x4c, 0xbd, 0xb0, 0xf7, 0xd9, 0xf2, 0xd5, 0xa9, 0x66, 0xb0, 0x75, 0xa8, + 0x29, 0x9e, 0x50, 0xc1, 0x2e, 0x1a, 0xf7, 0x23, 0xf7, 0x85, 0x94, 0x86, 0xa4, 0x3d, 0x61, 0x1b, + 0xe5, 0x65, 0xcf, 0x1e, 0xf6, 0x80, 0x0a, 0x13, 0xab, 0xe1, 0x90, 0x8c, 0xbe, 0x56, 0xac, 0x20, + 0x1a, 0xb3, 0xf5, 0x29, 0x2a, 0xcd, 0xbb, 0xc1, 0x25, 0x94, 0x19, 0xc0, 0x85, 0x1a, 0xfb, 0x79, + 0x22, 0x3f, 0xf1, 0x03, 0x94, 0x1d, 0x3b, 0xc3, 0x00, 0xc2, 0x59, 0x4d, 0xc2, 0xc3, 0xc7, 0x77, + 0x0e, 0x8c, 0xda, 0x0b, 0x03, 0xe5, 0x55, 0xb4, 0x47, 0x2e, 0x17, 0xf8, 0xbb, 0x1b, 0x5b, 0xc3, + 0x5a, 0x2e, 0xc5, 0xd2, 0x5a, 0xed, 0x8c, 0x52, 0x14, 0x6d, 0x2e, 0x96, 0xa4, 0x36, 0xc6, 0x19, + 0xca, 0xba, 0x02, 0x46, 0xdc, 0xbc, 0xa3, 0xf2, 0x69, 0xdf, 0x32, 0x9f, 0x8d, 0xf5, 0x78, 0x0e, + 0x37, 0x25, 0x0b, 0x09, 0xc9, 0x6a, 0xbf, 0x19, 0xa8, 0xf8, 0x39, 0xf3, 0x02, 0x9f, 0x40, 0x38, + 0x5c, 0x38, 0x7e, 0x0b, 0x65, 0x7b, 0x52, 0x12, 0xa6, 0x40, 0xdb, 0x85, 0xb0, 0x50, 0x27, 0x87, + 0x15, 0x8b, 0x2d, 0x54, 0x44, 0xd1, 0xb0, 0x4a, 0x68, 0x88, 0xd6, 0xe3, 0x47, 0xb2, 0xb5, 0xc3, + 0xc3, 0xb1, 0x33, 0x02, 0x6e, 0x66, 0x94, 0x41, 0xd4, 0xb0, 0x29, 0x05, 0x99, 0xc5, 0xd5, 0x7e, + 0xce, 0xa0, 0x8d, 0xb9, 0x59, 0x85, 0xb7, 0x51, 0x2e, 0x06, 0x45, 0x11, 0x26, 0x59, 0x8b, 0xb9, + 0x48, 0x82, 0x90, 0x25, 0x41, 0x25, 0x95, 0xef, 0x74, 0xa2, 0xff, 0xa7, 0x4b, 0xe2, 0x38, 0x56, + 0x10, 0x8d, 0x91, 0xbb, 0x45, 0x1e, 0xd4, 0x96, 0x4d, 0xed, 0x16, 0x89, 0x25, 0x4a, 0x83, 0x1b, + 0x28, 0x13, 0xb8, 0xdd, 0x68, 0x57, 0xee, 0x44, 0x80, 0x4c, 0x6b, 0xd9, 0x3d, 0x29, 0x8d, 0xe5, + 0xd6, 0x73, 0x7c, 0xf7, 0x19, 0x30, 0xee, 0x7a, 0x34, 0x5a, 0x94, 0xc9, 0xd6, 0x3b, 0x3c, 0x69, + 0x46, 0x1a, 0x92, 0x42, 0xe1, 0x43, 0xb4, 0x11, 0x5f, 0x2b, 0x36, 0x0c, 0xd7, 0xe5, 0xc3, 0xc8, + 0x70, 0x83, 0xcc, 0xaa, 0xc9, 0x3c, 0x1e, 0x7f, 0x80, 0x0a, 0x3c, 0x68, 0x27, 0xe9, 0x0b, 0xf7, + 0x67, 0xd2, 0x57, 0xa7, 0x5a, 0x45, 0xd2, 0xb8, 0xda, 0xdf, 0x06, 0xba, 0x7b, 0xe2, 0x0d, 0xdd, + 0xce, 0xc5, 0x1b, 0x78, 0x19, 0x7d, 0x8d, 0xb2, 0x2c, 0x18, 0x42, 0x5c, 0xe7, 0xfb, 0xcb, 0xd7, + 0x79, 0x18, 0x22, 0x09, 0x86, 0xa0, 0x8b, 0x56, 0x9e, 0x38, 0x09, 0x19, 0xf1, 0x23, 0x84, 0xbc, + 0x91, 0x2b, 0xd4, 0xf8, 0x8a, 0x8b, 0xf0, 0xa1, 0x0a, 0x24, 0x91, 0xea, 0xf7, 0x49, 0x0a, 0x5a, + 0xfb, 0xc3, 0x40, 0x28, 0x64, 0x7f, 0x03, 0x8d, 0xde, 0x9a, 0x6d, 0xf4, 0x9d, 0xdb, 0x26, 0x60, + 0x41, 0xa7, 0xbf, 0xc8, 0xc4, 0x77, 0x90, 0x39, 0xd1, 0x0f, 0x50, 0x63, 0x99, 0x07, 0x68, 0x05, + 0x65, 0xe5, 0xd4, 0x8c, 0x5b, 0x3d, 0x2f, 0x91, 0x72, 0xa2, 0x72, 0x12, 0xca, 0xb1, 0x85, 0x90, + 0xfc, 0x50, 0x33, 0x22, 0x4e, 0x6d, 0x51, 0xa6, 0xb6, 0x95, 0x48, 0x49, 0x0a, 0x21, 0x09, 0xe5, + 0x43, 0x8d, 0x9b, 0xab, 0x9a, 0x50, 0xbe, 0xdf, 0x38, 0x09, 0xe5, 0xd8, 0x4d, 0x0f, 0x98, 0xac, + 0xca, 0xc4, 0xc1, 0xf2, 0x99, 0x98, 0x1d, 0x69, 0xba, 0xe5, 0x5f, 0x3b, 0x9e, 0x2c, 0x84, 0x92, + 0xfe, 0xe7, 0xe6, 0x5d, 0x1d, 0x7b, 0x32, 0x20, 0x38, 0x49, 0x21, 0xf0, 0x27, 0x68, 0x83, 0x7a, + 0x34, 0xa6, 0x6a, 0x91, 0x23, 0x6e, 0xae, 0x29, 0xa3, 0xfb, 0xb2, 0x09, 0x8f, 0x67, 0x55, 0x64, + 0x1e, 0x3b, 0x57, 0x85, 0xb9, 0xa5, 0xab, 0xb0, 0x61, 0x5d, 0x5e, 0x95, 0x57, 0x5e, 0x5e, 0x95, + 0x57, 0x5e, 0x5d, 0x95, 0x57, 0x7e, 0x9a, 0x96, 0x8d, 0xcb, 0x69, 0xd9, 0x78, 0x39, 0x2d, 0x1b, + 0xaf, 0xa6, 0x65, 0xe3, 0xcf, 0x69, 0xd9, 0xf8, 0xf5, 0xaf, 0xf2, 0xca, 0x37, 0xb9, 0x38, 0x09, + 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0x58, 0x26, 0x49, 0x92, 0x7e, 0x0e, 0x00, 0x00, } diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1alpha1/generated.proto b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1alpha1/generated.proto index 279c5c80b2..b3f3692e2a 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1alpha1/generated.proto +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1alpha1/generated.proto @@ -66,6 +66,11 @@ message Event { // +optional repeated string sourceIPs = 10; + // UserAgent records the user agent string reported by the client. + // Note that the UserAgent is provided by the client, and must not be trusted. + // +optional + optional string userAgent = 18; + // Object reference this request is targeted at. // Does not apply for List-type requests, or non-resource requests. // +optional diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1alpha1/types.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1alpha1/types.go index 7e8af12b87..3fc4637620 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1alpha1/types.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1alpha1/types.go @@ -105,6 +105,10 @@ type Event struct { // Source IPs, from where the request originated and intermediate proxies. // +optional SourceIPs []string `json:"sourceIPs,omitempty" protobuf:"bytes,10,rep,name=sourceIPs"` + // UserAgent records the user agent string reported by the client. + // Note that the UserAgent is provided by the client, and must not be trusted. + // +optional + UserAgent string `json:"userAgent,omitempty" protobuf:"bytes,18,opt,name=userAgent"` // Object reference this request is targeted at. // Does not apply for List-type requests, or non-resource requests. // +optional diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1alpha1/zz_generated.conversion.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1alpha1/zz_generated.conversion.go index 4421bb6b9b..c7b60063f6 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1alpha1/zz_generated.conversion.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1alpha1/zz_generated.conversion.go @@ -23,7 +23,7 @@ package v1alpha1 import ( unsafe "unsafe" - authentication_v1 "k8s.io/api/authentication/v1" + authenticationv1 "k8s.io/api/authentication/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" conversion "k8s.io/apimachinery/pkg/conversion" runtime "k8s.io/apimachinery/pkg/runtime" @@ -70,6 +70,7 @@ func autoConvert_v1alpha1_Event_To_audit_Event(in *Event, out *audit.Event, s co } out.ImpersonatedUser = (*audit.UserInfo)(unsafe.Pointer(in.ImpersonatedUser)) out.SourceIPs = *(*[]string)(unsafe.Pointer(&in.SourceIPs)) + out.UserAgent = in.UserAgent if in.ObjectRef != nil { in, out := &in.ObjectRef, &out.ObjectRef *out = new(audit.ObjectReference) @@ -98,8 +99,9 @@ func autoConvert_audit_Event_To_v1alpha1_Event(in *audit.Event, out *Event, s co if err := s.Convert(&in.User, &out.User, 0); err != nil { return err } - out.ImpersonatedUser = (*authentication_v1.UserInfo)(unsafe.Pointer(in.ImpersonatedUser)) + out.ImpersonatedUser = (*authenticationv1.UserInfo)(unsafe.Pointer(in.ImpersonatedUser)) out.SourceIPs = *(*[]string)(unsafe.Pointer(&in.SourceIPs)) + out.UserAgent = in.UserAgent if in.ObjectRef != nil { in, out := &in.ObjectRef, &out.ObjectRef *out = new(ObjectReference) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1alpha1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1alpha1/zz_generated.deepcopy.go index b59717231a..1926b62052 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1alpha1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1alpha1/zz_generated.deepcopy.go @@ -22,7 +22,7 @@ package v1alpha1 import ( v1 "k8s.io/api/authentication/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtime "k8s.io/apimachinery/pkg/runtime" ) @@ -35,12 +35,8 @@ func (in *Event) DeepCopyInto(out *Event) { in.User.DeepCopyInto(&out.User) if in.ImpersonatedUser != nil { in, out := &in.ImpersonatedUser, &out.ImpersonatedUser - if *in == nil { - *out = nil - } else { - *out = new(v1.UserInfo) - (*in).DeepCopyInto(*out) - } + *out = new(v1.UserInfo) + (*in).DeepCopyInto(*out) } if in.SourceIPs != nil { in, out := &in.SourceIPs, &out.SourceIPs @@ -49,39 +45,23 @@ func (in *Event) DeepCopyInto(out *Event) { } if in.ObjectRef != nil { in, out := &in.ObjectRef, &out.ObjectRef - if *in == nil { - *out = nil - } else { - *out = new(ObjectReference) - **out = **in - } + *out = new(ObjectReference) + **out = **in } if in.ResponseStatus != nil { in, out := &in.ResponseStatus, &out.ResponseStatus - if *in == nil { - *out = nil - } else { - *out = new(meta_v1.Status) - (*in).DeepCopyInto(*out) - } + *out = new(metav1.Status) + (*in).DeepCopyInto(*out) } if in.RequestObject != nil { in, out := &in.RequestObject, &out.RequestObject - if *in == nil { - *out = nil - } else { - *out = new(runtime.Unknown) - (*in).DeepCopyInto(*out) - } + *out = new(runtime.Unknown) + (*in).DeepCopyInto(*out) } if in.ResponseObject != nil { in, out := &in.ResponseObject, &out.ResponseObject - if *in == nil { - *out = nil - } else { - *out = new(runtime.Unknown) - (*in).DeepCopyInto(*out) - } + *out = new(runtime.Unknown) + (*in).DeepCopyInto(*out) } in.RequestReceivedTimestamp.DeepCopyInto(&out.RequestReceivedTimestamp) in.StageTimestamp.DeepCopyInto(&out.StageTimestamp) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1beta1/BUILD index 6088e4aa68..2ed1779476 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1beta1/BUILD @@ -18,17 +18,18 @@ go_library( "zz_generated.deepcopy.go", "zz_generated.defaults.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/apis/audit/v1beta1", importpath = "k8s.io/apiserver/pkg/apis/audit/v1beta1", deps = [ + "//staging/src/k8s.io/api/authentication/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/apis/audit:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", - "//vendor/k8s.io/api/authentication/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apiserver/pkg/apis/audit:go_default_library", ], ) @@ -46,20 +47,14 @@ filegroup( visibility = ["//visibility:public"], ) -filegroup( - name = "go_default_library_protos", - srcs = ["generated.proto"], - visibility = ["//visibility:public"], -) - go_test( name = "go_default_test", srcs = ["conversion_test.go"], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apiserver/pkg/apis/audit:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/apis/audit:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1beta1/generated.pb.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1beta1/generated.pb.go index 7ac6951fb9..946f696900 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1beta1/generated.pb.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1beta1/generated.pb.go @@ -266,6 +266,12 @@ func (m *Event) MarshalTo(dAtA []byte) (int, error) { i += copy(dAtA[i:], v) } } + dAtA[i] = 0x92 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.UserAgent))) + i += copy(dAtA[i:], m.UserAgent) return i, nil } @@ -708,6 +714,8 @@ func (m *Event) Size() (n int) { n += mapEntrySize + 2 + sovGenerated(uint64(mapEntrySize)) } } + l = len(m.UserAgent) + n += 2 + l + sovGenerated(uint64(l)) return n } @@ -896,6 +904,7 @@ func (this *Event) String() string { `RequestReceivedTimestamp:` + strings.Replace(strings.Replace(this.RequestReceivedTimestamp.String(), "MicroTime", "k8s_io_apimachinery_pkg_apis_meta_v1.MicroTime", 1), `&`, ``, 1) + `,`, `StageTimestamp:` + strings.Replace(strings.Replace(this.StageTimestamp.String(), "MicroTime", "k8s_io_apimachinery_pkg_apis_meta_v1.MicroTime", 1), `&`, ``, 1) + `,`, `Annotations:` + mapStringForAnnotations + `,`, + `UserAgent:` + fmt.Sprintf("%v", this.UserAgent) + `,`, `}`, }, "") return s @@ -1622,6 +1631,35 @@ func (m *Event) Unmarshal(dAtA []byte) error { m.Annotations[mapkey] = mapvalue } iNdEx = postIndex + case 18: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UserAgent", 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 > l { + return io.ErrUnexpectedEOF + } + m.UserAgent = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -2818,86 +2856,87 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 1283 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0x41, 0x6f, 0x1b, 0x45, - 0x14, 0xce, 0xd6, 0x71, 0x63, 0x8f, 0x1b, 0xc7, 0x9d, 0x56, 0x74, 0x95, 0x83, 0x6d, 0x8c, 0x04, - 0x11, 0xa4, 0xbb, 0x6d, 0x5a, 0x48, 0x84, 0x04, 0x28, 0x56, 0x2b, 0xb0, 0x94, 0x86, 0x68, 0x1c, - 0x57, 0x08, 0x38, 0xb0, 0xb6, 0x5f, 0xec, 0xc5, 0xf6, 0xee, 0x32, 0x33, 0x6b, 0x94, 0x1b, 0x7f, - 0x00, 0x89, 0x3b, 0xff, 0x82, 0x1f, 0x50, 0x71, 0xcc, 0xb1, 0xc7, 0x9e, 0x2c, 0x62, 0xfe, 0x45, - 0x04, 0x12, 0x9a, 0xd9, 0xd9, 0x9d, 0xb5, 0x5d, 0xab, 0x0e, 0x87, 0xde, 0x66, 0xde, 0xfb, 0xbe, - 0xef, 0xbd, 0x79, 0x33, 0xf3, 0x66, 0xd0, 0xc9, 0xe0, 0x80, 0x59, 0xae, 0x6f, 0x0f, 0xc2, 0x36, - 0x50, 0x0f, 0x38, 0x30, 0x7b, 0x0c, 0x5e, 0xd7, 0xa7, 0xb6, 0x72, 0x38, 0x81, 0xcb, 0x80, 0x8e, - 0x81, 0xda, 0xc1, 0xa0, 0x27, 0x67, 0xb6, 0x13, 0x76, 0x5d, 0x6e, 0x8f, 0x1f, 0xb6, 0x81, 0x3b, - 0x0f, 0xed, 0x1e, 0x78, 0x40, 0x1d, 0x0e, 0x5d, 0x2b, 0xa0, 0x3e, 0xf7, 0xf1, 0x07, 0x11, 0xd1, - 0x4a, 0x88, 0x56, 0x30, 0xe8, 0xc9, 0x99, 0x25, 0x89, 0x96, 0x22, 0x6e, 0xdf, 0xef, 0xb9, 0xbc, - 0x1f, 0xb6, 0xad, 0x8e, 0x3f, 0xb2, 0x7b, 0x7e, 0xcf, 0xb7, 0x25, 0xbf, 0x1d, 0x9e, 0xc9, 0x99, - 0x9c, 0xc8, 0x51, 0xa4, 0xbb, 0xbd, 0xab, 0x13, 0xb2, 0x9d, 0x90, 0xf7, 0xc1, 0xe3, 0x6e, 0xc7, - 0xe1, 0xae, 0xef, 0xd9, 0xe3, 0x85, 0x2c, 0xb6, 0x1f, 0x6b, 0xf4, 0xc8, 0xe9, 0xf4, 0x5d, 0x0f, - 0xe8, 0xb9, 0x5e, 0xc1, 0x08, 0xb8, 0xf3, 0x3a, 0x96, 0xbd, 0x8c, 0x45, 0x43, 0x8f, 0xbb, 0x23, - 0x58, 0x20, 0x7c, 0xf2, 0x26, 0x02, 0xeb, 0xf4, 0x61, 0xe4, 0x2c, 0xf0, 0x1e, 0x2d, 0xe3, 0x85, - 0xdc, 0x1d, 0xda, 0xae, 0xc7, 0x19, 0xa7, 0x0b, 0xa4, 0x83, 0x37, 0x6f, 0x89, 0x33, 0x0c, 0xfa, - 0x8b, 0x7b, 0x52, 0xfb, 0xa7, 0x80, 0xb2, 0x4f, 0xc7, 0xe0, 0x71, 0xfc, 0x03, 0xca, 0x89, 0xc5, - 0x77, 0x1d, 0xee, 0x98, 0x46, 0xd5, 0xd8, 0x29, 0xec, 0x3d, 0xb0, 0xf4, 0x86, 0x25, 0xb9, 0xe8, - 0x3d, 0x13, 0x68, 0x6b, 0xfc, 0xd0, 0xfa, 0xba, 0xfd, 0x23, 0x74, 0xf8, 0x33, 0xe0, 0x4e, 0x1d, - 0x5f, 0x4c, 0x2a, 0x6b, 0xd3, 0x49, 0x05, 0x69, 0x1b, 0x49, 0x54, 0xf1, 0x2e, 0xca, 0x0e, 0x61, - 0x0c, 0x43, 0xf3, 0x46, 0xd5, 0xd8, 0xc9, 0xd7, 0xdf, 0x51, 0xe0, 0xec, 0x91, 0x30, 0x5e, 0xc5, - 0x03, 0x12, 0x81, 0xf0, 0x77, 0x28, 0x2f, 0xea, 0xc4, 0xb8, 0x33, 0x0a, 0xcc, 0x8c, 0x4c, 0xe8, - 0xc3, 0xd5, 0x12, 0x3a, 0x75, 0x47, 0x50, 0xbf, 0xad, 0xd4, 0xf3, 0xa7, 0xb1, 0x08, 0xd1, 0x7a, - 0xf8, 0x18, 0x6d, 0xc8, 0xc2, 0x34, 0x9e, 0x98, 0xeb, 0x32, 0x99, 0xc7, 0x0a, 0xbe, 0x71, 0x18, - 0x99, 0xaf, 0x26, 0x95, 0x77, 0x97, 0xed, 0x04, 0x3f, 0x0f, 0x80, 0x59, 0xad, 0xc6, 0x13, 0x12, - 0x8b, 0x88, 0xa5, 0x31, 0xee, 0xf4, 0xc0, 0xcc, 0xce, 0x2e, 0xad, 0x29, 0x8c, 0x57, 0xf1, 0x80, - 0x44, 0x20, 0xbc, 0x87, 0x10, 0x85, 0x9f, 0x42, 0x60, 0xbc, 0x45, 0x1a, 0xe6, 0x4d, 0x49, 0x49, - 0x4a, 0x47, 0x12, 0x0f, 0x49, 0xa1, 0x70, 0x15, 0xad, 0x8f, 0x81, 0xb6, 0xcd, 0x0d, 0x89, 0xbe, - 0xa5, 0xd0, 0xeb, 0xcf, 0x81, 0xb6, 0x89, 0xf4, 0xe0, 0xaf, 0xd0, 0x7a, 0xc8, 0x80, 0x9a, 0x39, - 0x59, 0xab, 0xf7, 0x53, 0xb5, 0xb2, 0x66, 0x6f, 0x85, 0xa8, 0x51, 0x8b, 0x01, 0x6d, 0x78, 0x67, - 0xbe, 0x56, 0x12, 0x16, 0x22, 0x15, 0x70, 0x1f, 0x95, 0xdc, 0x51, 0x00, 0x94, 0xf9, 0x9e, 0x38, - 0x2a, 0xc2, 0x63, 0xe6, 0xaf, 0xa5, 0x7a, 0x77, 0x3a, 0xa9, 0x94, 0x1a, 0x73, 0x1a, 0x64, 0x41, - 0x15, 0x7f, 0x84, 0xf2, 0xcc, 0x0f, 0x69, 0x07, 0x1a, 0x27, 0xcc, 0x44, 0xd5, 0xcc, 0x4e, 0xbe, - 0xbe, 0x29, 0x36, 0xad, 0x19, 0x1b, 0x89, 0xf6, 0x63, 0x40, 0x79, 0x5f, 0x9e, 0x2b, 0x02, 0x67, - 0x66, 0x41, 0xe6, 0x73, 0x60, 0xad, 0xd8, 0x53, 0xd4, 0x29, 0x25, 0x70, 0x06, 0x14, 0xbc, 0x0e, - 0x44, 0x61, 0x12, 0x23, 0xd1, 0xca, 0xb8, 0x8f, 0x8a, 0x14, 0x58, 0xe0, 0x7b, 0x0c, 0x9a, 0xdc, - 0xe1, 0x21, 0x33, 0x6f, 0xc9, 0x58, 0xbb, 0xab, 0x9d, 0xbe, 0x88, 0x53, 0xc7, 0xd3, 0x49, 0xa5, - 0x48, 0x66, 0x74, 0xc8, 0x9c, 0x2e, 0x76, 0xd0, 0xa6, 0xda, 0xe1, 0x28, 0x11, 0x73, 0x53, 0x06, - 0xda, 0x59, 0x1a, 0x48, 0xf5, 0x0e, 0xab, 0xe5, 0x0d, 0x3c, 0xff, 0x67, 0xaf, 0x7e, 0x7b, 0x3a, - 0xa9, 0x6c, 0x92, 0xb4, 0x04, 0x99, 0x55, 0xc4, 0x5d, 0xbd, 0x18, 0x15, 0xa3, 0x78, 0xcd, 0x18, - 0x33, 0x0b, 0x51, 0x41, 0xe6, 0x34, 0xf1, 0xaf, 0x06, 0x32, 0x55, 0x5c, 0x02, 0x1d, 0x70, 0xc7, - 0xd0, 0x4d, 0xae, 0x9d, 0xb9, 0x25, 0x03, 0xda, 0xab, 0x55, 0xef, 0x99, 0xdb, 0xa1, 0xbe, 0xbc, - 0xc0, 0x55, 0x75, 0x30, 0x4d, 0xb2, 0x44, 0x98, 0x2c, 0x0d, 0x89, 0x7d, 0x54, 0x94, 0x37, 0x4d, - 0x27, 0x51, 0xfa, 0x7f, 0x49, 0xc4, 0x17, 0xb9, 0xd8, 0x9c, 0x91, 0x23, 0x73, 0xf2, 0x78, 0x8c, - 0x0a, 0x8e, 0xe7, 0xf9, 0x5c, 0xde, 0x04, 0x66, 0xde, 0xae, 0x66, 0x76, 0x0a, 0x7b, 0x5f, 0xac, - 0x7c, 0x38, 0x65, 0x07, 0xb6, 0x0e, 0xb5, 0xc2, 0x53, 0x8f, 0xd3, 0xf3, 0xfa, 0x1d, 0x15, 0xbd, - 0x90, 0xf2, 0x90, 0x74, 0xa0, 0xed, 0xcf, 0x51, 0x69, 0x9e, 0x85, 0x4b, 0x28, 0x33, 0x80, 0x73, - 0xd9, 0xc3, 0xf3, 0x44, 0x0c, 0xf1, 0x5d, 0x94, 0x1d, 0x3b, 0xc3, 0x10, 0xa2, 0xc6, 0x4b, 0xa2, - 0xc9, 0xa7, 0x37, 0x0e, 0x8c, 0xda, 0x0b, 0x03, 0xe5, 0x65, 0xf0, 0x23, 0x97, 0x71, 0xfc, 0xfd, - 0xc2, 0x13, 0x60, 0xad, 0x56, 0x30, 0xc1, 0x96, 0x0f, 0x40, 0x49, 0x65, 0x9c, 0x8b, 0x2d, 0xa9, - 0xf6, 0xdf, 0x44, 0x59, 0x97, 0xc3, 0x88, 0x99, 0x37, 0x64, 0x75, 0xac, 0xeb, 0x55, 0xa7, 0xbe, - 0x19, 0xf7, 0xd4, 0x86, 0x10, 0x21, 0x91, 0x56, 0xed, 0x77, 0x03, 0x15, 0xbf, 0xa4, 0x7e, 0x18, - 0x10, 0x88, 0x1a, 0x05, 0xc3, 0xef, 0xa1, 0x6c, 0x4f, 0x58, 0xa2, 0x0a, 0x68, 0x5e, 0x04, 0x8b, - 0x7c, 0xa2, 0xf1, 0xd0, 0x98, 0x21, 0x13, 0x52, 0x8d, 0x27, 0x91, 0x21, 0xda, 0x8f, 0xf7, 0xc5, - 0x3d, 0x8d, 0x26, 0xc7, 0xce, 0x08, 0x98, 0x99, 0x91, 0x04, 0x75, 0xfb, 0x52, 0x0e, 0x32, 0x8b, - 0xab, 0xfd, 0x91, 0x41, 0x5b, 0x73, 0x8d, 0x07, 0xef, 0xa2, 0x5c, 0x0c, 0x52, 0x19, 0x26, 0x45, - 0x8b, 0xb5, 0x48, 0x82, 0xc0, 0x36, 0xca, 0x7b, 0x42, 0x2a, 0x70, 0x3a, 0x6a, 0xfb, 0xf4, 0xcb, - 0x76, 0x1c, 0x3b, 0x88, 0xc6, 0x88, 0x77, 0x42, 0x4c, 0xe4, 0x8b, 0x99, 0x7a, 0x27, 0x04, 0x96, - 0x48, 0x0f, 0xae, 0xa3, 0x4c, 0xe8, 0x76, 0xd5, 0xbb, 0xf7, 0x40, 0x01, 0x32, 0xad, 0x55, 0xdf, - 0x3c, 0x41, 0x16, 0x8b, 0x70, 0x02, 0x57, 0x56, 0x54, 0x3d, 0x79, 0xc9, 0x22, 0x0e, 0x4f, 0x1a, - 0x51, 0xa5, 0x13, 0x84, 0x78, 0xef, 0x9c, 0xc0, 0x7d, 0x0e, 0x94, 0xb9, 0xbe, 0x37, 0xff, 0xde, - 0x1d, 0x9e, 0x34, 0x94, 0x87, 0xa4, 0x50, 0xf8, 0x10, 0x6d, 0xc5, 0x45, 0x88, 0x89, 0xd1, 0xd3, - 0x77, 0x4f, 0x11, 0xb7, 0xc8, 0xac, 0x9b, 0xcc, 0xe3, 0xf1, 0xc7, 0xa8, 0xc0, 0xc2, 0x76, 0x52, - 0xec, 0x9c, 0xa4, 0x27, 0x77, 0xaa, 0xa9, 0x5d, 0x24, 0x8d, 0xab, 0xfd, 0x6b, 0xa0, 0x9b, 0x27, - 0xfe, 0xd0, 0xed, 0x9c, 0xbf, 0x85, 0x3f, 0xd1, 0x37, 0x28, 0x4b, 0xc3, 0x21, 0xc4, 0x97, 0xe2, - 0xd1, 0xca, 0x97, 0x22, 0xca, 0x90, 0x84, 0x43, 0xd0, 0x27, 0x5c, 0xcc, 0x18, 0x89, 0x04, 0xf1, - 0x3e, 0x42, 0xfe, 0xc8, 0xe5, 0xb2, 0x71, 0xc5, 0x27, 0xf6, 0x9e, 0xcc, 0x23, 0xb1, 0xea, 0x8f, - 0x49, 0x0a, 0x5a, 0xfb, 0xd3, 0x40, 0x28, 0x52, 0x7f, 0x0b, 0x4d, 0xe1, 0x74, 0xb6, 0x29, 0xd8, - 0xd7, 0x5c, 0xff, 0x92, 0xae, 0xf0, 0x22, 0x13, 0x2f, 0x41, 0x94, 0x44, 0x7f, 0x3c, 0x8d, 0x55, - 0x3e, 0x9e, 0x15, 0x94, 0x15, 0xbf, 0xa0, 0xb8, 0x2d, 0xe4, 0x05, 0x52, 0x7c, 0x56, 0x18, 0x89, - 0xec, 0xd8, 0x42, 0x48, 0x0c, 0xe4, 0xd9, 0x8e, 0x2b, 0x5b, 0x14, 0x95, 0x6d, 0x25, 0x56, 0x92, - 0x42, 0x08, 0x41, 0xf1, 0x41, 0x63, 0xe6, 0xba, 0x16, 0x14, 0xff, 0x36, 0x46, 0x22, 0x3b, 0xee, - 0xa7, 0x9b, 0x51, 0x56, 0x16, 0x62, 0x7f, 0xe5, 0x42, 0xcc, 0x76, 0x3f, 0xdd, 0x1d, 0x5e, 0xdb, - 0xc9, 0x2c, 0x84, 0x92, 0x56, 0xc1, 0xcc, 0x9b, 0x3a, 0xf5, 0xa4, 0x97, 0x30, 0x92, 0x42, 0xe0, - 0xcf, 0xd0, 0x96, 0xe7, 0x7b, 0xb1, 0x54, 0x8b, 0x1c, 0x31, 0x73, 0x43, 0x92, 0xee, 0x88, 0x1b, - 0x78, 0x3c, 0xeb, 0x22, 0xf3, 0xd8, 0xb9, 0x33, 0x98, 0x5b, 0xf9, 0x0c, 0xd6, 0xef, 0x5f, 0x5c, - 0x96, 0xd7, 0x5e, 0x5e, 0x96, 0xd7, 0x5e, 0x5d, 0x96, 0xd7, 0x7e, 0x99, 0x96, 0x8d, 0x8b, 0x69, - 0xd9, 0x78, 0x39, 0x2d, 0x1b, 0xaf, 0xa6, 0x65, 0xe3, 0xaf, 0x69, 0xd9, 0xf8, 0xed, 0xef, 0xf2, - 0xda, 0xb7, 0x1b, 0xaa, 0x06, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0x5e, 0xf6, 0x8d, 0xaa, 0xac, - 0x0e, 0x00, 0x00, + // 1303 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0x4f, 0x6f, 0x1b, 0x45, + 0x14, 0xcf, 0xd6, 0x71, 0x13, 0x4f, 0x1a, 0xc7, 0x9d, 0x56, 0x74, 0x95, 0x83, 0x6d, 0x8c, 0x04, + 0x11, 0xa4, 0xbb, 0xfd, 0x07, 0x8d, 0x90, 0x00, 0xd9, 0x6a, 0x05, 0x96, 0xda, 0x10, 0x8d, 0xeb, + 0x0a, 0x01, 0x07, 0xd6, 0xf6, 0x8b, 0xbd, 0xd8, 0x9e, 0x5d, 0x66, 0x66, 0x8d, 0x72, 0xe3, 0x0b, + 0x20, 0x71, 0xe7, 0x33, 0x70, 0xe1, 0x03, 0x54, 0x1c, 0x7b, 0xec, 0xb1, 0x27, 0x8b, 0x9a, 0x6f, + 0x11, 0x09, 0x09, 0xcd, 0xec, 0xec, 0xce, 0xda, 0xae, 0x55, 0x87, 0x43, 0x6f, 0x3b, 0xf3, 0x7e, + 0xef, 0xf7, 0xde, 0xbc, 0x79, 0xef, 0x37, 0x8b, 0x4e, 0x86, 0x47, 0xdc, 0xf1, 0x03, 0x77, 0x18, + 0x75, 0x80, 0x51, 0x10, 0xc0, 0xdd, 0x09, 0xd0, 0x5e, 0xc0, 0x5c, 0x6d, 0xf0, 0x42, 0x9f, 0x03, + 0x9b, 0x00, 0x73, 0xc3, 0x61, 0x5f, 0xad, 0x5c, 0x2f, 0xea, 0xf9, 0xc2, 0x9d, 0xdc, 0xee, 0x80, + 0xf0, 0x6e, 0xbb, 0x7d, 0xa0, 0xc0, 0x3c, 0x01, 0x3d, 0x27, 0x64, 0x81, 0x08, 0xf0, 0x07, 0xb1, + 0xa3, 0x93, 0x3a, 0x3a, 0xe1, 0xb0, 0xaf, 0x56, 0x8e, 0x72, 0x74, 0xb4, 0xe3, 0xfe, 0xcd, 0xbe, + 0x2f, 0x06, 0x51, 0xc7, 0xe9, 0x06, 0x63, 0xb7, 0x1f, 0xf4, 0x03, 0x57, 0xf9, 0x77, 0xa2, 0x53, + 0xb5, 0x52, 0x0b, 0xf5, 0x15, 0xf3, 0xee, 0x1f, 0x9a, 0x84, 0x5c, 0x2f, 0x12, 0x03, 0xa0, 0xc2, + 0xef, 0x7a, 0xc2, 0x0f, 0xa8, 0x3b, 0x59, 0xca, 0x62, 0xff, 0x9e, 0x41, 0x8f, 0xbd, 0xee, 0xc0, + 0xa7, 0xc0, 0xce, 0xcc, 0x09, 0xc6, 0x20, 0xbc, 0xd7, 0x79, 0xb9, 0xab, 0xbc, 0x58, 0x44, 0x85, + 0x3f, 0x86, 0x25, 0x87, 0x4f, 0xde, 0xe4, 0xc0, 0xbb, 0x03, 0x18, 0x7b, 0x4b, 0x7e, 0x77, 0x57, + 0xf9, 0x45, 0xc2, 0x1f, 0xb9, 0x3e, 0x15, 0x5c, 0xb0, 0x25, 0xa7, 0xa3, 0x37, 0x5f, 0x89, 0x37, + 0x0a, 0x07, 0xcb, 0x77, 0x52, 0xfb, 0xe3, 0x0a, 0xca, 0x3f, 0x9c, 0x00, 0x15, 0xf8, 0x07, 0xb4, + 0x2d, 0x0f, 0xdf, 0xf3, 0x84, 0x67, 0x5b, 0x55, 0xeb, 0x60, 0xe7, 0xce, 0x2d, 0xc7, 0x5c, 0x58, + 0x9a, 0x8b, 0xb9, 0x33, 0x89, 0x76, 0x26, 0xb7, 0x9d, 0xaf, 0x3b, 0x3f, 0x42, 0x57, 0x3c, 0x06, + 0xe1, 0x35, 0xf0, 0xf3, 0x69, 0x65, 0x63, 0x36, 0xad, 0x20, 0xb3, 0x47, 0x52, 0x56, 0x7c, 0x88, + 0xf2, 0x23, 0x98, 0xc0, 0xc8, 0xbe, 0x54, 0xb5, 0x0e, 0x0a, 0x8d, 0x77, 0x34, 0x38, 0xff, 0x48, + 0x6e, 0x9e, 0x27, 0x1f, 0x24, 0x06, 0xe1, 0xef, 0x50, 0x41, 0xd6, 0x89, 0x0b, 0x6f, 0x1c, 0xda, + 0x39, 0x95, 0xd0, 0x87, 0xeb, 0x25, 0xf4, 0xc4, 0x1f, 0x43, 0xe3, 0xaa, 0x66, 0x2f, 0x3c, 0x49, + 0x48, 0x88, 0xe1, 0xc3, 0xc7, 0x68, 0x4b, 0x15, 0xa6, 0xf9, 0xc0, 0xde, 0x54, 0xc9, 0xdc, 0xd3, + 0xf0, 0xad, 0x7a, 0xbc, 0x7d, 0x3e, 0xad, 0xbc, 0xbb, 0xea, 0x26, 0xc4, 0x59, 0x08, 0xdc, 0x69, + 0x37, 0x1f, 0x90, 0x84, 0x44, 0x1e, 0x8d, 0x0b, 0xaf, 0x0f, 0x76, 0x7e, 0xfe, 0x68, 0x2d, 0xb9, + 0x79, 0x9e, 0x7c, 0x90, 0x18, 0x84, 0xef, 0x20, 0xc4, 0xe0, 0xa7, 0x08, 0xb8, 0x68, 0x93, 0xa6, + 0x7d, 0x59, 0xb9, 0xa4, 0xa5, 0x23, 0xa9, 0x85, 0x64, 0x50, 0xb8, 0x8a, 0x36, 0x27, 0xc0, 0x3a, + 0xf6, 0x96, 0x42, 0x5f, 0xd1, 0xe8, 0xcd, 0xa7, 0xc0, 0x3a, 0x44, 0x59, 0xf0, 0x57, 0x68, 0x33, + 0xe2, 0xc0, 0xec, 0x6d, 0x55, 0xab, 0xf7, 0x33, 0xb5, 0x72, 0xe6, 0xa7, 0x42, 0xd6, 0xa8, 0xcd, + 0x81, 0x35, 0xe9, 0x69, 0x60, 0x98, 0xe4, 0x0e, 0x51, 0x0c, 0x78, 0x80, 0x4a, 0xfe, 0x38, 0x04, + 0xc6, 0x03, 0x2a, 0x5b, 0x45, 0x5a, 0xec, 0xc2, 0x85, 0x58, 0xaf, 0xcf, 0xa6, 0x95, 0x52, 0x73, + 0x81, 0x83, 0x2c, 0xb1, 0xe2, 0x8f, 0x50, 0x81, 0x07, 0x11, 0xeb, 0x42, 0xf3, 0x84, 0xdb, 0xa8, + 0x9a, 0x3b, 0x28, 0x34, 0x76, 0xe5, 0xa5, 0xb5, 0x92, 0x4d, 0x62, 0xec, 0x18, 0x50, 0x21, 0x50, + 0x7d, 0x45, 0xe0, 0xd4, 0xde, 0x51, 0xf9, 0x1c, 0x39, 0x6b, 0x6a, 0x8a, 0xee, 0x52, 0x02, 0xa7, + 0xc0, 0x80, 0x76, 0x21, 0x0e, 0x93, 0x6e, 0x12, 0xc3, 0x8c, 0x07, 0xa8, 0xc8, 0x80, 0x87, 0x01, + 0xe5, 0xd0, 0x12, 0x9e, 0x88, 0xb8, 0x7d, 0x45, 0xc5, 0x3a, 0x5c, 0xaf, 0xfb, 0x62, 0x9f, 0x06, + 0x9e, 0x4d, 0x2b, 0x45, 0x32, 0xc7, 0x43, 0x16, 0x78, 0xb1, 0x87, 0x76, 0xf5, 0x0d, 0xc7, 0x89, + 0xd8, 0xbb, 0x2a, 0xd0, 0xc1, 0xca, 0x40, 0x5a, 0x3b, 0x9c, 0x36, 0x1d, 0xd2, 0xe0, 0x67, 0xda, + 0xb8, 0x3a, 0x9b, 0x56, 0x76, 0x49, 0x96, 0x82, 0xcc, 0x33, 0xe2, 0x9e, 0x39, 0x8c, 0x8e, 0x51, + 0xbc, 0x60, 0x8c, 0xb9, 0x83, 0xe8, 0x20, 0x0b, 0x9c, 0xf8, 0x57, 0x0b, 0xd9, 0x3a, 0x2e, 0x81, + 0x2e, 0xf8, 0x13, 0xe8, 0xa5, 0x63, 0x67, 0xef, 0xa9, 0x80, 0xee, 0x7a, 0xd5, 0x7b, 0xec, 0x77, + 0x59, 0xa0, 0x06, 0xb8, 0xaa, 0x1b, 0xd3, 0x26, 0x2b, 0x88, 0xc9, 0xca, 0x90, 0x38, 0x40, 0x45, + 0x35, 0x69, 0x26, 0x89, 0xd2, 0xff, 0x4b, 0x22, 0x19, 0xe4, 0x62, 0x6b, 0x8e, 0x8e, 0x2c, 0xd0, + 0xe3, 0x09, 0xda, 0xf1, 0x28, 0x0d, 0x84, 0x9a, 0x04, 0x6e, 0x5f, 0xad, 0xe6, 0x0e, 0x76, 0xee, + 0x7c, 0xb1, 0x76, 0x73, 0x2a, 0x05, 0x76, 0xea, 0x86, 0xe1, 0x21, 0x15, 0xec, 0xac, 0x71, 0x4d, + 0x47, 0xdf, 0xc9, 0x58, 0x48, 0x36, 0x10, 0x76, 0x51, 0x41, 0x4e, 0x6c, 0xbd, 0x0f, 0x54, 0xd8, + 0x58, 0x49, 0x43, 0x2a, 0x7c, 0xed, 0xc4, 0x40, 0x0c, 0x66, 0xff, 0x73, 0x54, 0x5a, 0x0c, 0x83, + 0x4b, 0x28, 0x37, 0x84, 0x33, 0x25, 0xfa, 0x05, 0x22, 0x3f, 0xf1, 0x75, 0x94, 0x9f, 0x78, 0xa3, + 0x08, 0x62, 0xa5, 0x26, 0xf1, 0xe2, 0xd3, 0x4b, 0x47, 0x56, 0xed, 0x99, 0x85, 0x0a, 0x2a, 0xdb, + 0x47, 0x3e, 0x17, 0xf8, 0xfb, 0xa5, 0x37, 0xc3, 0x59, 0xaf, 0xc2, 0xd2, 0x5b, 0xbd, 0x18, 0x25, + 0x9d, 0xed, 0x76, 0xb2, 0x93, 0x79, 0x2f, 0x5a, 0x28, 0xef, 0x0b, 0x18, 0x73, 0xfb, 0x92, 0x2a, + 0xa7, 0x73, 0xb1, 0x72, 0x36, 0x76, 0x13, 0x11, 0x6e, 0x4a, 0x12, 0x12, 0x73, 0xd5, 0x7e, 0xb7, + 0x50, 0xf1, 0x4b, 0x16, 0x44, 0x21, 0x81, 0x58, 0x59, 0x38, 0x7e, 0x0f, 0xe5, 0xfb, 0x72, 0x27, + 0xae, 0x80, 0xf1, 0x8b, 0x61, 0xb1, 0x4d, 0x2a, 0x15, 0x4b, 0x3c, 0x54, 0x42, 0x5a, 0xa9, 0x52, + 0x1a, 0x62, 0xec, 0xf8, 0xbe, 0x1c, 0xec, 0x78, 0x71, 0xec, 0x8d, 0x81, 0xdb, 0x39, 0xe5, 0xa0, + 0xc7, 0x35, 0x63, 0x20, 0xf3, 0xb8, 0xda, 0x9f, 0x39, 0xb4, 0xb7, 0xa0, 0x54, 0xf8, 0x10, 0x6d, + 0x27, 0x20, 0x9d, 0x61, 0x5a, 0xb4, 0x84, 0x8b, 0xa4, 0x08, 0xd9, 0x11, 0x54, 0x52, 0x85, 0x5e, + 0x57, 0x5f, 0x9f, 0xe9, 0x88, 0xe3, 0xc4, 0x40, 0x0c, 0x46, 0x3e, 0x2c, 0x72, 0xa1, 0x9e, 0xd8, + 0xcc, 0xc3, 0x22, 0xb1, 0x44, 0x59, 0x70, 0x03, 0xe5, 0x22, 0xbf, 0xa7, 0x1f, 0xca, 0x5b, 0x1a, + 0x90, 0x6b, 0xaf, 0xfb, 0x48, 0x4a, 0x67, 0x79, 0x08, 0x2f, 0xf4, 0x55, 0x45, 0xf5, 0x1b, 0x99, + 0x1e, 0xa2, 0x7e, 0xd2, 0x8c, 0x2b, 0x9d, 0x22, 0xe4, 0x03, 0xe9, 0x85, 0xfe, 0x53, 0x60, 0xdc, + 0x0f, 0xe8, 0xe2, 0x03, 0x59, 0x3f, 0x69, 0x6a, 0x0b, 0xc9, 0xa0, 0x70, 0x1d, 0xed, 0x25, 0x45, + 0x48, 0x1c, 0xe3, 0xb7, 0xf2, 0x86, 0x76, 0xdc, 0x23, 0xf3, 0x66, 0xb2, 0x88, 0xc7, 0x1f, 0xa3, + 0x1d, 0x1e, 0x75, 0xd2, 0x62, 0x6f, 0x2b, 0xf7, 0x74, 0x08, 0x5b, 0xc6, 0x44, 0xb2, 0xb8, 0xda, + 0xbf, 0x16, 0xba, 0x7c, 0x12, 0x8c, 0xfc, 0xee, 0xd9, 0x5b, 0xf8, 0x89, 0xfa, 0x06, 0xe5, 0x59, + 0x34, 0x82, 0x64, 0x28, 0xee, 0xae, 0x3d, 0x14, 0x71, 0x86, 0x24, 0x1a, 0x81, 0xe9, 0x70, 0xb9, + 0xe2, 0x24, 0x26, 0xc4, 0xf7, 0x11, 0x0a, 0xc6, 0xbe, 0x50, 0x4a, 0x97, 0x74, 0xec, 0x0d, 0x95, + 0x47, 0xba, 0x6b, 0xfe, 0x64, 0x32, 0xd0, 0xda, 0x5f, 0x16, 0x42, 0x31, 0xfb, 0x5b, 0x10, 0x85, + 0x27, 0xf3, 0xa2, 0xe0, 0x5e, 0xf0, 0xfc, 0x2b, 0x54, 0xe1, 0x59, 0x2e, 0x39, 0x82, 0x2c, 0x89, + 0xf9, 0x53, 0xb5, 0xd6, 0xf9, 0x53, 0xad, 0xa0, 0xbc, 0x14, 0xd8, 0x44, 0x16, 0x0a, 0x12, 0x29, + 0xc5, 0x97, 0x93, 0x78, 0x1f, 0x3b, 0x08, 0xc9, 0x0f, 0xd5, 0xdb, 0x49, 0x65, 0x8b, 0xb2, 0xb2, + 0xed, 0x74, 0x97, 0x64, 0x10, 0x92, 0x50, 0xfe, 0xd1, 0x71, 0x7b, 0xd3, 0x10, 0xca, 0x1f, 0x3d, + 0x4e, 0xe2, 0x7d, 0x3c, 0xc8, 0x8a, 0x51, 0x5e, 0x15, 0xe2, 0xfe, 0xda, 0x85, 0x98, 0x57, 0x3f, + 0xa3, 0x0e, 0xaf, 0x55, 0x32, 0x07, 0xa1, 0x54, 0x2a, 0xb8, 0x7d, 0xd9, 0xa4, 0x9e, 0x6a, 0x09, + 0x27, 0x19, 0x04, 0xfe, 0x0c, 0xed, 0xd1, 0x80, 0x26, 0x54, 0x6d, 0xf2, 0x88, 0xdb, 0x5b, 0xca, + 0xe9, 0x9a, 0x9c, 0xc0, 0xe3, 0x79, 0x13, 0x59, 0xc4, 0x2e, 0xf4, 0xe0, 0xf6, 0xda, 0x3d, 0xd8, + 0xb8, 0xf9, 0xfc, 0x55, 0x79, 0xe3, 0xc5, 0xab, 0xf2, 0xc6, 0xcb, 0x57, 0xe5, 0x8d, 0x5f, 0x66, + 0x65, 0xeb, 0xf9, 0xac, 0x6c, 0xbd, 0x98, 0x95, 0xad, 0x97, 0xb3, 0xb2, 0xf5, 0xf7, 0xac, 0x6c, + 0xfd, 0xf6, 0x4f, 0x79, 0xe3, 0xdb, 0x2d, 0x5d, 0x83, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x3c, + 0x5a, 0xb6, 0x6f, 0xdd, 0x0e, 0x00, 0x00, } diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1beta1/generated.proto b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1beta1/generated.proto index 40deceadee..efea140b0d 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1beta1/generated.proto +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1beta1/generated.proto @@ -70,6 +70,11 @@ message Event { // +optional repeated string sourceIPs = 10; + // UserAgent records the user agent string reported by the client. + // Note that the UserAgent is provided by the client, and must not be trusted. + // +optional + optional string userAgent = 18; + // Object reference this request is targeted at. // Does not apply for List-type requests, or non-resource requests. // +optional diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1beta1/types.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1beta1/types.go index 0c3299b4ac..42b9900964 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1beta1/types.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1beta1/types.go @@ -101,6 +101,10 @@ type Event struct { // Source IPs, from where the request originated and intermediate proxies. // +optional SourceIPs []string `json:"sourceIPs,omitempty" protobuf:"bytes,10,rep,name=sourceIPs"` + // UserAgent records the user agent string reported by the client. + // Note that the UserAgent is provided by the client, and must not be trusted. + // +optional + UserAgent string `json:"userAgent,omitempty" protobuf:"bytes,18,opt,name=userAgent"` // Object reference this request is targeted at. // Does not apply for List-type requests, or non-resource requests. // +optional diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1beta1/zz_generated.conversion.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1beta1/zz_generated.conversion.go index 6df889a6b9..9f6f448c15 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1beta1/zz_generated.conversion.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1beta1/zz_generated.conversion.go @@ -23,7 +23,7 @@ package v1beta1 import ( unsafe "unsafe" - authentication_v1 "k8s.io/api/authentication/v1" + authenticationv1 "k8s.io/api/authentication/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" conversion "k8s.io/apimachinery/pkg/conversion" runtime "k8s.io/apimachinery/pkg/runtime" @@ -70,6 +70,7 @@ func autoConvert_v1beta1_Event_To_audit_Event(in *Event, out *audit.Event, s con } out.ImpersonatedUser = (*audit.UserInfo)(unsafe.Pointer(in.ImpersonatedUser)) out.SourceIPs = *(*[]string)(unsafe.Pointer(&in.SourceIPs)) + out.UserAgent = in.UserAgent out.ObjectRef = (*audit.ObjectReference)(unsafe.Pointer(in.ObjectRef)) out.ResponseStatus = (*v1.Status)(unsafe.Pointer(in.ResponseStatus)) out.RequestObject = (*runtime.Unknown)(unsafe.Pointer(in.RequestObject)) @@ -90,8 +91,9 @@ func autoConvert_audit_Event_To_v1beta1_Event(in *audit.Event, out *Event, s con if err := s.Convert(&in.User, &out.User, 0); err != nil { return err } - out.ImpersonatedUser = (*authentication_v1.UserInfo)(unsafe.Pointer(in.ImpersonatedUser)) + out.ImpersonatedUser = (*authenticationv1.UserInfo)(unsafe.Pointer(in.ImpersonatedUser)) out.SourceIPs = *(*[]string)(unsafe.Pointer(&in.SourceIPs)) + out.UserAgent = in.UserAgent out.ObjectRef = (*ObjectReference)(unsafe.Pointer(in.ObjectRef)) out.ResponseStatus = (*v1.Status)(unsafe.Pointer(in.ResponseStatus)) out.RequestObject = (*runtime.Unknown)(unsafe.Pointer(in.RequestObject)) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1beta1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1beta1/zz_generated.deepcopy.go index 5ed9a99dba..e8f7adffd8 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1beta1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/v1beta1/zz_generated.deepcopy.go @@ -22,7 +22,7 @@ package v1beta1 import ( v1 "k8s.io/api/authentication/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtime "k8s.io/apimachinery/pkg/runtime" ) @@ -35,12 +35,8 @@ func (in *Event) DeepCopyInto(out *Event) { in.User.DeepCopyInto(&out.User) if in.ImpersonatedUser != nil { in, out := &in.ImpersonatedUser, &out.ImpersonatedUser - if *in == nil { - *out = nil - } else { - *out = new(v1.UserInfo) - (*in).DeepCopyInto(*out) - } + *out = new(v1.UserInfo) + (*in).DeepCopyInto(*out) } if in.SourceIPs != nil { in, out := &in.SourceIPs, &out.SourceIPs @@ -49,39 +45,23 @@ func (in *Event) DeepCopyInto(out *Event) { } if in.ObjectRef != nil { in, out := &in.ObjectRef, &out.ObjectRef - if *in == nil { - *out = nil - } else { - *out = new(ObjectReference) - **out = **in - } + *out = new(ObjectReference) + **out = **in } if in.ResponseStatus != nil { in, out := &in.ResponseStatus, &out.ResponseStatus - if *in == nil { - *out = nil - } else { - *out = new(meta_v1.Status) - (*in).DeepCopyInto(*out) - } + *out = new(metav1.Status) + (*in).DeepCopyInto(*out) } if in.RequestObject != nil { in, out := &in.RequestObject, &out.RequestObject - if *in == nil { - *out = nil - } else { - *out = new(runtime.Unknown) - (*in).DeepCopyInto(*out) - } + *out = new(runtime.Unknown) + (*in).DeepCopyInto(*out) } if in.ResponseObject != nil { in, out := &in.ResponseObject, &out.ResponseObject - if *in == nil { - *out = nil - } else { - *out = new(runtime.Unknown) - (*in).DeepCopyInto(*out) - } + *out = new(runtime.Unknown) + (*in).DeepCopyInto(*out) } in.RequestReceivedTimestamp.DeepCopyInto(&out.RequestReceivedTimestamp) in.StageTimestamp.DeepCopyInto(&out.StageTimestamp) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/zz_generated.deepcopy.go index f0f672257a..70093df22f 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/audit/zz_generated.deepcopy.go @@ -32,12 +32,8 @@ func (in *Event) DeepCopyInto(out *Event) { in.User.DeepCopyInto(&out.User) if in.ImpersonatedUser != nil { in, out := &in.ImpersonatedUser, &out.ImpersonatedUser - if *in == nil { - *out = nil - } else { - *out = new(UserInfo) - (*in).DeepCopyInto(*out) - } + *out = new(UserInfo) + (*in).DeepCopyInto(*out) } if in.SourceIPs != nil { in, out := &in.SourceIPs, &out.SourceIPs @@ -46,39 +42,23 @@ func (in *Event) DeepCopyInto(out *Event) { } if in.ObjectRef != nil { in, out := &in.ObjectRef, &out.ObjectRef - if *in == nil { - *out = nil - } else { - *out = new(ObjectReference) - **out = **in - } + *out = new(ObjectReference) + **out = **in } if in.ResponseStatus != nil { in, out := &in.ResponseStatus, &out.ResponseStatus - if *in == nil { - *out = nil - } else { - *out = new(v1.Status) - (*in).DeepCopyInto(*out) - } + *out = new(v1.Status) + (*in).DeepCopyInto(*out) } if in.RequestObject != nil { in, out := &in.RequestObject, &out.RequestObject - if *in == nil { - *out = nil - } else { - *out = new(runtime.Unknown) - (*in).DeepCopyInto(*out) - } + *out = new(runtime.Unknown) + (*in).DeepCopyInto(*out) } if in.ResponseObject != nil { in, out := &in.ResponseObject, &out.ResponseObject - if *in == nil { - *out = nil - } else { - *out = new(runtime.Unknown) - (*in).DeepCopyInto(*out) - } + *out = new(runtime.Unknown) + (*in).DeepCopyInto(*out) } in.RequestReceivedTimestamp.DeepCopyInto(&out.RequestReceivedTimestamp) in.StageTimestamp.DeepCopyInto(&out.StageTimestamp) @@ -341,12 +321,15 @@ func (in *UserInfo) DeepCopyInto(out *UserInfo) { in, out := &in.Extra, &out.Extra *out = make(map[string]ExtraValue, len(*in)) for key, val := range *in { + var outVal []string if val == nil { (*out)[key] = nil } else { - (*out)[key] = make([]string, len(val)) - copy((*out)[key], val) + in, out := &val, &outVal + *out = make(ExtraValue, len(*in)) + copy(*out, *in) } + (*out)[key] = outVal } } return diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/audit/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/audit/BUILD index bb477b602e..8d966fe06a 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/audit/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/audit/BUILD @@ -16,23 +16,25 @@ go_library( "types.go", "union.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/audit", importpath = "k8s.io/apiserver/pkg/audit", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/apis/audit:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/apis/audit/v1alpha1:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/apis/audit/v1beta1:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/user:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authorization/authorizer:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/pborman/uuid:go_default_library", "//vendor/github.com/prometheus/client_golang/prometheus:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", - "//vendor/k8s.io/apiserver/pkg/apis/audit:go_default_library", - "//vendor/k8s.io/apiserver/pkg/apis/audit/v1alpha1:go_default_library", - "//vendor/k8s.io/apiserver/pkg/apis/audit/v1beta1:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authorization/authorizer:go_default_library", ], ) @@ -44,9 +46,9 @@ go_test( ], embed = [":go_default_library"], deps = [ + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/apis/audit:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apiserver/pkg/apis/audit:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/audit/request.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/audit/request.go index 25d6c33eba..9593b6c8ab 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/audit/request.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/audit/request.go @@ -37,15 +37,20 @@ import ( "k8s.io/apiserver/pkg/authorization/authorizer" ) +const ( + maxUserAgentLength = 1024 + userAgentTruncateSuffix = "...TRUNCATED" +) + func NewEventFromRequest(req *http.Request, level auditinternal.Level, attribs authorizer.Attributes) (*auditinternal.Event, error) { ev := &auditinternal.Event{ RequestReceivedTimestamp: metav1.NewMicroTime(time.Now()), Verb: attribs.GetVerb(), RequestURI: req.URL.RequestURI(), + UserAgent: maybeTruncateUserAgent(req), + Level: level, } - ev.Level = level - // prefer the id from the headers. If not available, create a new one. // TODO(audit): do we want to forbid the header for non-front-proxy users? ids := req.Header.Get(auditinternal.HeaderAuditID) @@ -233,3 +238,13 @@ func LogAnnotations(ae *auditinternal.Event, annotations map[string]string) { LogAnnotation(ae, key, value) } } + +// truncate User-Agent if too long, otherwise return it directly. +func maybeTruncateUserAgent(req *http.Request) string { + ua := req.UserAgent() + if len(ua) > maxUserAgentLength { + ua = ua[:maxUserAgentLength] + userAgentTruncateSuffix + } + + return ua +} diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/audit/scheme.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/audit/scheme.go index 61c32f5264..330b8a7f11 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/audit/scheme.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/audit/scheme.go @@ -22,6 +22,7 @@ import ( "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/serializer" + utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apiserver/pkg/apis/audit/v1alpha1" "k8s.io/apiserver/pkg/apis/audit/v1beta1" ) @@ -31,6 +32,6 @@ var Codecs = serializer.NewCodecFactory(Scheme) func init() { v1.AddToGroupVersion(Scheme, schema.GroupVersion{Version: "v1"}) - v1alpha1.AddToScheme(Scheme) - v1beta1.AddToScheme(Scheme) + utilruntime.Must(v1alpha1.AddToScheme(Scheme)) + utilruntime.Must(v1beta1.AddToScheme(Scheme)) } diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/authenticator/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/authenticator/BUILD index 268bb29f1a..4a2741d9db 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/authenticator/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/authenticator/BUILD @@ -8,8 +8,9 @@ load( go_library( name = "go_default_library", srcs = ["interfaces.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/authentication/authenticator", importpath = "k8s.io/apiserver/pkg/authentication/authenticator", - deps = ["//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library"], + deps = ["//staging/src/k8s.io/apiserver/pkg/authentication/user:go_default_library"], ) filegroup( diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/authenticatorfactory/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/authenticatorfactory/BUILD index 7782bf5d34..750e8b4eae 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/authenticatorfactory/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/authenticatorfactory/BUILD @@ -12,22 +12,23 @@ go_library( "loopback.go", "requestheader.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/authentication/authenticatorfactory", importpath = "k8s.io/apiserver/pkg/authentication/authenticatorfactory", deps = [ + "//staging/src/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/group:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/request/anonymous:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/request/bearertoken:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/request/headerrequest:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/request/union:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/request/websocket:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/request/x509:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/token/tokenfile:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/user:go_default_library", + "//staging/src/k8s.io/apiserver/plugin/pkg/authenticator/token/webhook:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/authentication/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/util/cert:go_default_library", "//vendor/github.com/go-openapi/spec:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/group:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/request/anonymous:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/request/bearertoken:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/request/headerrequest:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/request/union:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/request/websocket:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/request/x509:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/token/tokenfile:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library", - "//vendor/k8s.io/apiserver/plugin/pkg/authenticator/token/webhook:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/util/cert:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/group/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/group/BUILD index e84022f3b4..2b28ba406d 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/group/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/group/BUILD @@ -14,8 +14,8 @@ go_test( ], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/user:go_default_library", ], ) @@ -26,10 +26,11 @@ go_library( "group_adder.go", "token_group_adder.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/authentication/group", importpath = "k8s.io/apiserver/pkg/authentication/group", deps = [ - "//vendor/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/user:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/request/anonymous/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/request/anonymous/BUILD index 79738848a9..329b92ecc5 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/request/anonymous/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/request/anonymous/BUILD @@ -11,19 +11,20 @@ go_test( srcs = ["anonymous_test.go"], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/user:go_default_library", ], ) go_library( name = "go_default_library", srcs = ["anonymous.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/authentication/request/anonymous", importpath = "k8s.io/apiserver/pkg/authentication/request/anonymous", deps = [ - "//vendor/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/user:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/request/bearertoken/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/request/bearertoken/BUILD index 1443815cdf..b88082fbbd 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/request/bearertoken/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/request/bearertoken/BUILD @@ -11,18 +11,19 @@ go_test( srcs = ["bearertoken_test.go"], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/user:go_default_library", ], ) go_library( name = "go_default_library", srcs = ["bearertoken.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/authentication/request/bearertoken", importpath = "k8s.io/apiserver/pkg/authentication/request/bearertoken", deps = [ - "//vendor/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/user:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/request/headerrequest/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/request/headerrequest/BUILD index a5511a3881..cc9e53ea10 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/request/headerrequest/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/request/headerrequest/BUILD @@ -10,19 +10,20 @@ go_test( name = "go_default_test", srcs = ["requestheader_test.go"], embed = [":go_default_library"], - deps = ["//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library"], + deps = ["//staging/src/k8s.io/apiserver/pkg/authentication/user:go_default_library"], ) go_library( name = "go_default_library", srcs = ["requestheader.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/authentication/request/headerrequest", importpath = "k8s.io/apiserver/pkg/authentication/request/headerrequest", deps = [ - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/request/x509:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library", - "//vendor/k8s.io/client-go/util/cert:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/request/x509:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/user:go_default_library", + "//staging/src/k8s.io/client-go/util/cert:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/request/union/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/request/union/BUILD index ec4e17c897..75e741dec7 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/request/union/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/request/union/BUILD @@ -10,17 +10,18 @@ go_test( name = "go_default_test", srcs = ["unionauth_test.go"], embed = [":go_default_library"], - deps = ["//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library"], + deps = ["//staging/src/k8s.io/apiserver/pkg/authentication/user:go_default_library"], ) go_library( name = "go_default_library", srcs = ["union.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/authentication/request/union", importpath = "k8s.io/apiserver/pkg/authentication/request/union", deps = [ - "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/user:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/request/websocket/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/request/websocket/BUILD index f5b5003510..dbfbb8337e 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/request/websocket/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/request/websocket/BUILD @@ -9,11 +9,12 @@ load( go_library( name = "go_default_library", srcs = ["protocol.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/authentication/request/websocket", importpath = "k8s.io/apiserver/pkg/authentication/request/websocket", deps = [ - "//vendor/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/wsstream:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/user:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/wsstream:go_default_library", ], ) @@ -22,8 +23,8 @@ go_test( srcs = ["protocol_test.go"], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/user:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/request/x509/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/request/x509/BUILD index 45d1bda2e4..815cdbbc89 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/request/x509/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/request/x509/BUILD @@ -17,9 +17,9 @@ go_test( ], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/user:go_default_library", ], ) @@ -29,14 +29,15 @@ go_library( "doc.go", "x509.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/authentication/request/x509", importpath = "k8s.io/apiserver/pkg/authentication/request/x509", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/user:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/prometheus/client_golang/prometheus:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/request/x509/x509.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/request/x509/x509.go index 708a89e9ea..c98d7ff681 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/request/x509/x509.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/request/x509/x509.go @@ -19,7 +19,6 @@ package x509 import ( "crypto/x509" "crypto/x509/pkix" - "encoding/asn1" "fmt" "net/http" "time" @@ -191,25 +190,3 @@ var CommonNameUserConversion = UserConversionFunc(func(chain []*x509.Certificate Groups: chain[0].Subject.Organization, }, true, nil }) - -// DNSNameUserConversion builds user info from a certificate chain using the first DNSName on the certificate -var DNSNameUserConversion = UserConversionFunc(func(chain []*x509.Certificate) (user.Info, bool, error) { - if len(chain[0].DNSNames) == 0 { - return nil, false, nil - } - return &user.DefaultInfo{Name: chain[0].DNSNames[0]}, true, nil -}) - -// EmailAddressUserConversion builds user info from a certificate chain using the first EmailAddress on the certificate -var EmailAddressUserConversion = UserConversionFunc(func(chain []*x509.Certificate) (user.Info, bool, error) { - var emailAddressOID asn1.ObjectIdentifier = []int{1, 2, 840, 113549, 1, 9, 1} - if len(chain[0].EmailAddresses) == 0 { - for _, name := range chain[0].Subject.Names { - if name.Type.Equal(emailAddressOID) { - return &user.DefaultInfo{Name: name.Value.(string)}, true, nil - } - } - return nil, false, nil - } - return &user.DefaultInfo{Name: chain[0].EmailAddresses[0]}, true, nil -}) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/serviceaccount/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/serviceaccount/BUILD index 3a60436e4f..5fdc43113c 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/serviceaccount/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/serviceaccount/BUILD @@ -15,8 +15,9 @@ go_test( go_library( name = "go_default_library", srcs = ["util.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/authentication/serviceaccount", importpath = "k8s.io/apiserver/pkg/authentication/serviceaccount", - deps = ["//vendor/k8s.io/apimachinery/pkg/api/validation:go_default_library"], + deps = ["//staging/src/k8s.io/apimachinery/pkg/api/validation:go_default_library"], ) filegroup( diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/token/tokenfile/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/token/tokenfile/BUILD index dfa4368889..00b19d4806 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/token/tokenfile/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/token/tokenfile/BUILD @@ -10,16 +10,17 @@ go_test( name = "go_default_test", srcs = ["tokenfile_test.go"], embed = [":go_default_library"], - deps = ["//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library"], + deps = ["//staging/src/k8s.io/apiserver/pkg/authentication/user:go_default_library"], ) go_library( name = "go_default_library", srcs = ["tokenfile.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/authentication/token/tokenfile", importpath = "k8s.io/apiserver/pkg/authentication/token/tokenfile", deps = [ + "//staging/src/k8s.io/apiserver/pkg/authentication/user:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/user/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/user/BUILD index f22095c254..cd8109d727 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/user/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authentication/user/BUILD @@ -11,6 +11,7 @@ go_library( "doc.go", "user.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/authentication/user", importpath = "k8s.io/apiserver/pkg/authentication/user", ) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authorization/authorizer/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authorization/authorizer/BUILD index 2a7508f4d2..6360ac7e5d 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authorization/authorizer/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authorization/authorizer/BUILD @@ -11,8 +11,9 @@ go_library( "interfaces.go", "rule.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/authorization/authorizer", importpath = "k8s.io/apiserver/pkg/authorization/authorizer", - deps = ["//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library"], + deps = ["//staging/src/k8s.io/apiserver/pkg/authentication/user:go_default_library"], ) filegroup( diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authorization/authorizerfactory/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authorization/authorizerfactory/BUILD index d40a88c5a1..b16931a0f4 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authorization/authorizerfactory/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/authorization/authorizerfactory/BUILD @@ -11,8 +11,8 @@ go_test( srcs = ["builtin_test.go"], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authorization/authorizer:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/user:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authorization/authorizer:go_default_library", ], ) @@ -22,12 +22,13 @@ go_library( "builtin.go", "delegating.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/authorization/authorizerfactory", importpath = "k8s.io/apiserver/pkg/authorization/authorizerfactory", deps = [ - "//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authorization/authorizer:go_default_library", - "//vendor/k8s.io/apiserver/plugin/pkg/authorizer/webhook:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/user:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authorization/authorizer:go_default_library", + "//staging/src/k8s.io/apiserver/plugin/pkg/authorizer/webhook:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/authorization/v1beta1:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/handlers/negotiation/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/handlers/negotiation/BUILD index 828e556d5c..a3f78ce935 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/handlers/negotiation/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/handlers/negotiation/BUILD @@ -11,8 +11,8 @@ go_test( srcs = ["negotiate_test.go"], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", ], ) @@ -23,12 +23,13 @@ go_library( "errors.go", "negotiate.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/endpoints/handlers/negotiation", importpath = "k8s.io/apiserver/pkg/endpoints/handlers/negotiation", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/bitbucket.org/ww/goautoneg:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/handlers/responsewriters/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/handlers/responsewriters/BUILD index a8505eb93f..17033d5e8b 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/handlers/responsewriters/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/handlers/responsewriters/BUILD @@ -14,14 +14,14 @@ go_test( ], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authorization/authorizer:go_default_library", - "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/user:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authorization/authorizer:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/endpoints/request:go_default_library", ], ) @@ -33,22 +33,23 @@ go_library( "status.go", "writers.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/endpoints/handlers/responsewriters", importpath = "k8s.io/apiserver/pkg/endpoints/handlers/responsewriters", deps = [ - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", - "//vendor/k8s.io/apiserver/pkg/audit:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authorization/authorizer:go_default_library", - "//vendor/k8s.io/apiserver/pkg/endpoints/handlers/negotiation:go_default_library", - "//vendor/k8s.io/apiserver/pkg/endpoints/metrics:go_default_library", - "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", - "//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library", - "//vendor/k8s.io/apiserver/pkg/storage:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/flushwriter:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/wsstream:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/audit:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authorization/authorizer:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/endpoints/handlers/negotiation:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/endpoints/metrics:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/endpoints/request:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/registry/rest:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/storage:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/flushwriter:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/wsstream:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/metrics/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/metrics/BUILD index 6aef95e2dc..ea44cdc05e 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/metrics/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/metrics/BUILD @@ -15,12 +15,13 @@ go_test( go_library( name = "go_default_library", srcs = ["metrics.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/endpoints/metrics", importpath = "k8s.io/apiserver/pkg/endpoints/metrics", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/endpoints/request:go_default_library", "//vendor/github.com/emicklei/go-restful:go_default_library", "//vendor/github.com/prometheus/client_golang/prometheus:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", - "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/metrics/metrics.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/metrics/metrics.go index 516452e160..ae16d43bb1 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/metrics/metrics.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/metrics/metrics.go @@ -163,9 +163,9 @@ func Record(req *http.Request, requestInfo *request.RequestInfo, contentType str } scope := CleanScope(requestInfo) if requestInfo.IsResourceRequest { - MonitorRequest(req, strings.ToUpper(requestInfo.Verb), requestInfo.Resource, requestInfo.Subresource, contentType, scope, code, responseSizeInBytes, elapsed) + MonitorRequest(req, strings.ToUpper(requestInfo.Verb), requestInfo.Resource, requestInfo.Subresource, scope, contentType, code, responseSizeInBytes, elapsed) } else { - MonitorRequest(req, strings.ToUpper(requestInfo.Verb), "", requestInfo.Path, contentType, scope, code, responseSizeInBytes, elapsed) + MonitorRequest(req, strings.ToUpper(requestInfo.Verb), "", requestInfo.Path, scope, contentType, code, responseSizeInBytes, elapsed) } } diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/request/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/request/BUILD index 03f1db7103..5e84006a1c 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/request/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/request/BUILD @@ -14,9 +14,9 @@ go_test( ], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/user:go_default_library", ], ) @@ -27,15 +27,16 @@ go_library( "doc.go", "requestinfo.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/endpoints/request", importpath = "k8s.io/apiserver/pkg/endpoints/request", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/api/validation/path:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/apis/audit:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/user:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/validation/path:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apiserver/pkg/apis/audit:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/features/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/features/BUILD index 1d45a428ec..711a89f466 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/features/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/features/BUILD @@ -8,8 +8,9 @@ load( go_library( name = "go_default_library", srcs = ["kube_features.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/features", importpath = "k8s.io/apiserver/pkg/features", - deps = ["//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library"], + deps = ["//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library"], ) filegroup( diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/registry/rest/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/registry/rest/BUILD index 14459c4a1c..d74a0469ff 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/registry/rest/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/registry/rest/BUILD @@ -11,10 +11,10 @@ go_test( srcs = ["meta_test.go"], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apiserver/pkg/apis/example:go_default_library", - "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/apis/example:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/endpoints/request:go_default_library", ], ) @@ -31,26 +31,27 @@ go_library( "update.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/registry/rest", importpath = "k8s.io/apiserver/pkg/registry/rest", deps = [ - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/validation:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/validation/path:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/uuid:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/apiserver/pkg/admission:go_default_library", - "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", - "//vendor/k8s.io/apiserver/pkg/features:go_default_library", - "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/validation:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/validation/path:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/validation:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/admission:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/endpoints/request:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/features:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/storage/names:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/registry/rest/rest.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/registry/rest/rest.go index d84146fecf..d3d1b2f8bc 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/registry/rest/rest.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/registry/rest/rest.go @@ -178,7 +178,7 @@ type Creater interface { // Create creates a new version of a resource. If includeUninitialized is set, the object may be returned // without completing initialization. - Create(ctx context.Context, obj runtime.Object, createValidation ValidateObjectFunc, includeUninitialized bool) (runtime.Object, error) + Create(ctx context.Context, obj runtime.Object, createValidation ValidateObjectFunc, options *metav1.CreateOptions) (runtime.Object, error) } // NamedCreater is an object that can create an instance of a RESTful object using a name parameter. @@ -191,7 +191,7 @@ type NamedCreater interface { // This is needed for create operations on subresources which include the name of the parent // resource in the path. If includeUninitialized is set, the object may be returned without // completing initialization. - Create(ctx context.Context, name string, obj runtime.Object, createValidation ValidateObjectFunc, includeUninitialized bool) (runtime.Object, error) + Create(ctx context.Context, name string, obj runtime.Object, createValidation ValidateObjectFunc, options *metav1.CreateOptions) (runtime.Object, error) } // UpdatedObjectInfo provides information about an updated object to an Updater. @@ -236,14 +236,14 @@ type Updater interface { // Update finds a resource in the storage and updates it. Some implementations // may allow updates creates the object - they should set the created boolean // to true. - Update(ctx context.Context, name string, objInfo UpdatedObjectInfo, createValidation ValidateObjectFunc, updateValidation ValidateObjectUpdateFunc) (runtime.Object, bool, error) + Update(ctx context.Context, name string, objInfo UpdatedObjectInfo, createValidation ValidateObjectFunc, updateValidation ValidateObjectUpdateFunc, forceAllowCreate bool, options *metav1.UpdateOptions) (runtime.Object, bool, error) } // CreaterUpdater is a storage object that must support both create and update. // Go prevents embedded interfaces that implement the same method. type CreaterUpdater interface { Creater - Update(ctx context.Context, name string, objInfo UpdatedObjectInfo, createValidation ValidateObjectFunc, updateValidation ValidateObjectUpdateFunc) (runtime.Object, bool, error) + Update(ctx context.Context, name string, objInfo UpdatedObjectInfo, createValidation ValidateObjectFunc, updateValidation ValidateObjectUpdateFunc, forceAllowCreate bool, options *metav1.UpdateOptions) (runtime.Object, bool, error) } // CreaterUpdater must satisfy the Updater interface. diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/registry/rest/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/registry/rest/zz_generated.deepcopy.go index 1ddd119737..ef8c371ba0 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/registry/rest/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/registry/rest/zz_generated.deepcopy.go @@ -27,9 +27,7 @@ import ( // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ConnectRequest) DeepCopyInto(out *ConnectRequest) { *out = *in - if in.Options == nil { - out.Options = nil - } else { + if in.Options != nil { out.Options = in.Options.DeepCopyObject() } return diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/healthz/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/healthz/BUILD index f4ccb49650..aab24c34ef 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/healthz/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/healthz/BUILD @@ -18,8 +18,12 @@ go_library( "doc.go", "healthz.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/server/healthz", importpath = "k8s.io/apiserver/pkg/server/healthz", - deps = ["//vendor/github.com/golang/glog:go_default_library"], + deps = [ + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//vendor/github.com/golang/glog:go_default_library", + ], ) filegroup( diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/healthz/healthz.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/healthz/healthz.go index 224f1eda2c..24fafcefa0 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/healthz/healthz.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/healthz/healthz.go @@ -22,8 +22,12 @@ import ( "net/http" "strings" "sync" + "sync/atomic" + "time" "github.com/golang/glog" + + "k8s.io/apimachinery/pkg/util/wait" ) // HealthzChecker is a named healthz checker. @@ -56,6 +60,34 @@ func (ping) Check(_ *http.Request) error { return nil } +// LogHealthz returns true if logging is not blocked +var LogHealthz HealthzChecker = &log{} + +type log struct { + startOnce sync.Once + lastVerified atomic.Value +} + +func (l *log) Name() string { + return "log" +} + +func (l *log) Check(_ *http.Request) error { + l.startOnce.Do(func() { + l.lastVerified.Store(time.Now()) + go wait.Forever(func() { + glog.Flush() + l.lastVerified.Store(time.Now()) + }, time.Minute) + }) + + lastVerified := l.lastVerified.Load().(time.Time) + if time.Since(lastVerified) < (2 * time.Minute) { + return nil + } + return fmt.Errorf("logging blocked") +} + // NamedCheck returns a healthz checker for the given name and function. func NamedCheck(name string, check func(r *http.Request) error) HealthzChecker { return &healthzCheck{name, check} diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/httplog/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/httplog/BUILD index 3a620708a1..22d299ba55 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/httplog/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/httplog/BUILD @@ -18,6 +18,7 @@ go_library( "doc.go", "httplog.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/server/httplog", importpath = "k8s.io/apiserver/pkg/server/httplog", deps = ["//vendor/github.com/golang/glog:go_default_library"], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/httplog/httplog.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/httplog/httplog.go index ee8e05f107..f8a8a5307a 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/httplog/httplog.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/httplog/httplog.go @@ -100,14 +100,11 @@ func NewLogged(req *http.Request, w *http.ResponseWriter) *respLogger { // then a passthroughLogger will be created which will log to stdout immediately // when Addf is called. func LogOf(req *http.Request, w http.ResponseWriter) logger { - if _, exists := w.(*respLogger); !exists { - pl := &passthroughLogger{} - return pl - } if rl, ok := w.(*respLogger); ok { return rl } - panic("Unable to find or create the logger!") + + return &passthroughLogger{} } // Unlogged returns the original ResponseWriter, or w if it is not our inserted logger. @@ -148,9 +145,9 @@ func (rl *respLogger) Log() { latency := time.Since(rl.startTime) if glog.V(3) { if !rl.hijacked { - glog.InfoDepth(1, fmt.Sprintf("%s %s: (%v) %v%v%v [%s %s]", rl.req.Method, rl.req.RequestURI, latency, rl.status, rl.statusStack, rl.addedInfo, rl.req.Header["User-Agent"], rl.req.RemoteAddr)) + glog.InfoDepth(1, fmt.Sprintf("%s %s: (%v) %v%v%v [%s %s]", rl.req.Method, rl.req.RequestURI, latency, rl.status, rl.statusStack, rl.addedInfo, rl.req.UserAgent(), rl.req.RemoteAddr)) } else { - glog.InfoDepth(1, fmt.Sprintf("%s %s: (%v) hijacked [%s %s]", rl.req.Method, rl.req.RequestURI, latency, rl.req.Header["User-Agent"], rl.req.RemoteAddr)) + glog.InfoDepth(1, fmt.Sprintf("%s %s: (%v) hijacked [%s %s]", rl.req.Method, rl.req.RequestURI, latency, rl.req.UserAgent(), rl.req.RemoteAddr)) } } } diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/mux/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/mux/BUILD index 5cc9e13d26..e60551c82d 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/mux/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/mux/BUILD @@ -19,11 +19,12 @@ go_library( "doc.go", "pathrecorder.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/server/mux", importpath = "k8s.io/apiserver/pkg/server/mux", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/routes/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/routes/BUILD index 9dd3839564..f4d56f9e30 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/routes/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/routes/BUILD @@ -18,21 +18,22 @@ go_library( "swaggerui.go", "version.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/server/routes", importpath = "k8s.io/apiserver/pkg/server/routes", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/version:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/endpoints/handlers/responsewriters:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/endpoints/metrics:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/server/mux:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/server/routes/data/swagger:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/storage/etcd/metrics:go_default_library", "//vendor/github.com/elazarl/go-bindata-assetfs:go_default_library", "//vendor/github.com/emicklei/go-restful:go_default_library", "//vendor/github.com/emicklei/go-restful-swagger12:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/prometheus/client_golang/prometheus:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/version:go_default_library", - "//vendor/k8s.io/apiserver/pkg/endpoints/handlers/responsewriters:go_default_library", - "//vendor/k8s.io/apiserver/pkg/endpoints/metrics:go_default_library", - "//vendor/k8s.io/apiserver/pkg/server/mux:go_default_library", - "//vendor/k8s.io/apiserver/pkg/server/routes/data/swagger:go_default_library", - "//vendor/k8s.io/apiserver/pkg/storage/etcd/metrics:go_default_library", "//vendor/k8s.io/kube-openapi/pkg/common:go_default_library", "//vendor/k8s.io/kube-openapi/pkg/handler:go_default_library", ], diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/routes/data/swagger/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/routes/data/swagger/BUILD index f715802fad..3c6ff78d33 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/routes/data/swagger/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/routes/data/swagger/BUILD @@ -8,6 +8,7 @@ load( go_library( name = "go_default_library", srcs = ["datafile.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/server/routes/data/swagger", importpath = "k8s.io/apiserver/pkg/server/routes/data/swagger", ) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/BUILD index 1218c46440..4ed7f4bea1 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/BUILD @@ -9,64 +9,38 @@ load( go_test( name = "go_default_test", srcs = [ - "cacher_whitebox_test.go", "selection_predicate_test.go", - "time_budget_test.go", "util_test.go", - "watch_cache_test.go", ], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) go_library( name = "go_default_library", srcs = [ - "cacher.go", "doc.go", "errors.go", "interfaces.go", "selection_predicate.go", - "time_budget.go", "util.go", - "watch_cache.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/storage", importpath = "k8s.io/apiserver/pkg/storage", deps = [ - "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/validation/path:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/apiserver/pkg/features:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/trace:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/validation/path:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", ], ) @@ -81,6 +55,7 @@ filegroup( name = "all-srcs", srcs = [ ":package-srcs", + "//staging/src/k8s.io/apiserver/pkg/storage/cacher:all-srcs", "//staging/src/k8s.io/apiserver/pkg/storage/errors:all-srcs", "//staging/src/k8s.io/apiserver/pkg/storage/etcd:all-srcs", "//staging/src/k8s.io/apiserver/pkg/storage/etcd3:all-srcs", diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/cacher.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/cacher.go deleted file mode 100644 index ab4ab04f3a..0000000000 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/cacher.go +++ /dev/null @@ -1,989 +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 storage - -import ( - "context" - "fmt" - "net/http" - "reflect" - "sync" - "time" - - "github.com/golang/glog" - - "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/fields" - "k8s.io/apimachinery/pkg/labels" - "k8s.io/apimachinery/pkg/runtime" - utilruntime "k8s.io/apimachinery/pkg/util/runtime" - "k8s.io/apimachinery/pkg/util/wait" - "k8s.io/apimachinery/pkg/watch" - "k8s.io/apiserver/pkg/features" - utilfeature "k8s.io/apiserver/pkg/util/feature" - utiltrace "k8s.io/apiserver/pkg/util/trace" - "k8s.io/client-go/tools/cache" -) - -// CacherConfig contains the configuration for a given Cache. -type CacherConfig struct { - // Maximum size of the history cached in memory. - CacheCapacity int - - // An underlying storage.Interface. - Storage Interface - - // An underlying storage.Versioner. - Versioner Versioner - - // The Cache will be caching objects of a given Type and assumes that they - // are all stored under ResourcePrefix directory in the underlying database. - Type interface{} - ResourcePrefix string - - // KeyFunc is used to get a key in the underlying storage for a given object. - KeyFunc func(runtime.Object) (string, error) - - // GetAttrsFunc is used to get object labels, fields, and the uninitialized bool - GetAttrsFunc func(runtime.Object) (label labels.Set, field fields.Set, uninitialized bool, err error) - - // TriggerPublisherFunc is used for optimizing amount of watchers that - // needs to process an incoming event. - TriggerPublisherFunc TriggerPublisherFunc - - // NewList is a function that creates new empty object storing a list of - // objects of type Type. - NewListFunc func() runtime.Object - - Codec runtime.Codec -} - -type watchersMap map[int]*cacheWatcher - -func (wm watchersMap) addWatcher(w *cacheWatcher, number int) { - wm[number] = w -} - -func (wm watchersMap) deleteWatcher(number int) { - delete(wm, number) -} - -func (wm watchersMap) terminateAll() { - for key, watcher := range wm { - delete(wm, key) - watcher.stop() - } -} - -type indexedWatchers struct { - allWatchers watchersMap - valueWatchers map[string]watchersMap -} - -func (i *indexedWatchers) addWatcher(w *cacheWatcher, number int, value string, supported bool) { - if supported { - if _, ok := i.valueWatchers[value]; !ok { - i.valueWatchers[value] = watchersMap{} - } - i.valueWatchers[value].addWatcher(w, number) - } else { - i.allWatchers.addWatcher(w, number) - } -} - -func (i *indexedWatchers) deleteWatcher(number int, value string, supported bool) { - if supported { - i.valueWatchers[value].deleteWatcher(number) - if len(i.valueWatchers[value]) == 0 { - delete(i.valueWatchers, value) - } - } else { - i.allWatchers.deleteWatcher(number) - } -} - -func (i *indexedWatchers) terminateAll(objectType reflect.Type) { - if len(i.allWatchers) > 0 || len(i.valueWatchers) > 0 { - glog.Warningf("Terminating all watchers from cacher %v", objectType) - } - i.allWatchers.terminateAll() - for index, watchers := range i.valueWatchers { - watchers.terminateAll() - delete(i.valueWatchers, index) - } -} - -type filterWithAttrsFunc func(key string, l labels.Set, f fields.Set, uninitialized bool) bool - -// Cacher is responsible for serving WATCH and LIST requests for a given -// resource from its internal cache and updating its cache in the background -// based on the underlying storage contents. -// Cacher implements storage.Interface (although most of the calls are just -// delegated to the underlying storage). -type Cacher struct { - // HighWaterMarks for performance debugging. - // Important: Since HighWaterMark is using sync/atomic, it has to be at the top of the struct due to a bug on 32-bit platforms - // See: https://golang.org/pkg/sync/atomic/ for more information - incomingHWM HighWaterMark - // Incoming events that should be dispatched to watchers. - incoming chan watchCacheEvent - - sync.RWMutex - - // Before accessing the cacher's cache, wait for the ready to be ok. - // This is necessary to prevent users from accessing structures that are - // uninitialized or are being repopulated right now. - // ready needs to be set to false when the cacher is paused or stopped. - // ready needs to be set to true when the cacher is ready to use after - // initialization. - ready *ready - - // Underlying storage.Interface. - storage Interface - - // Expected type of objects in the underlying cache. - objectType reflect.Type - - // "sliding window" of recent changes of objects and the current state. - watchCache *watchCache - reflector *cache.Reflector - - // Versioner is used to handle resource versions. - versioner Versioner - - // triggerFunc is used for optimizing amount of watchers that needs to process - // an incoming event. - triggerFunc TriggerPublisherFunc - // watchers is mapping from the value of trigger function that a - // watcher is interested into the watchers - watcherIdx int - watchers indexedWatchers - - // Defines a time budget that can be spend on waiting for not-ready watchers - // while dispatching event before shutting them down. - dispatchTimeoutBudget *timeBudget - - // Handling graceful termination. - stopLock sync.RWMutex - stopped bool - stopCh chan struct{} - stopWg sync.WaitGroup -} - -// Create a new Cacher responsible for servicing WATCH and LIST requests from -// its internal cache and updating its cache in the background based on the -// given configuration. -func NewCacherFromConfig(config CacherConfig) *Cacher { - watchCache := newWatchCache(config.CacheCapacity, config.KeyFunc, config.GetAttrsFunc) - listerWatcher := newCacherListerWatcher(config.Storage, config.ResourcePrefix, config.NewListFunc) - reflectorName := "storage/cacher.go:" + config.ResourcePrefix - - // Give this error when it is constructed rather than when you get the - // first watch item, because it's much easier to track down that way. - if obj, ok := config.Type.(runtime.Object); ok { - if err := runtime.CheckCodec(config.Codec, obj); err != nil { - panic("storage codec doesn't seem to match given type: " + err.Error()) - } - } - - stopCh := make(chan struct{}) - cacher := &Cacher{ - ready: newReady(), - storage: config.Storage, - objectType: reflect.TypeOf(config.Type), - watchCache: watchCache, - reflector: cache.NewNamedReflector(reflectorName, listerWatcher, config.Type, watchCache, 0), - versioner: config.Versioner, - triggerFunc: config.TriggerPublisherFunc, - watcherIdx: 0, - watchers: indexedWatchers{ - allWatchers: make(map[int]*cacheWatcher), - valueWatchers: make(map[string]watchersMap), - }, - // TODO: Figure out the correct value for the buffer size. - incoming: make(chan watchCacheEvent, 100), - dispatchTimeoutBudget: newTimeBudget(stopCh), - // We need to (potentially) stop both: - // - wait.Until go-routine - // - reflector.ListAndWatch - // and there are no guarantees on the order that they will stop. - // So we will be simply closing the channel, and synchronizing on the WaitGroup. - stopCh: stopCh, - } - watchCache.SetOnEvent(cacher.processEvent) - go cacher.dispatchEvents() - - cacher.stopWg.Add(1) - go func() { - defer cacher.stopWg.Done() - wait.Until( - func() { - if !cacher.isStopped() { - cacher.startCaching(stopCh) - } - }, time.Second, stopCh, - ) - }() - return cacher -} - -func (c *Cacher) startCaching(stopChannel <-chan struct{}) { - // The 'usable' lock is always 'RLock'able when it is safe to use the cache. - // It is safe to use the cache after a successful list until a disconnection. - // We start with usable (write) locked. The below OnReplace function will - // unlock it after a successful list. The below defer will then re-lock - // it when this function exits (always due to disconnection), only if - // we actually got a successful list. This cycle will repeat as needed. - successfulList := false - c.watchCache.SetOnReplace(func() { - successfulList = true - c.ready.set(true) - }) - defer func() { - if successfulList { - c.ready.set(false) - } - }() - - c.terminateAllWatchers() - // Note that since onReplace may be not called due to errors, we explicitly - // need to retry it on errors under lock. - // Also note that startCaching is called in a loop, so there's no need - // to have another loop here. - if err := c.reflector.ListAndWatch(stopChannel); err != nil { - glog.Errorf("unexpected ListAndWatch error: %v", err) - } -} - -// Implements storage.Interface. -func (c *Cacher) Versioner() Versioner { - return c.storage.Versioner() -} - -// Implements storage.Interface. -func (c *Cacher) Create(ctx context.Context, key string, obj, out runtime.Object, ttl uint64) error { - return c.storage.Create(ctx, key, obj, out, ttl) -} - -// Implements storage.Interface. -func (c *Cacher) Delete(ctx context.Context, key string, out runtime.Object, preconditions *Preconditions) error { - return c.storage.Delete(ctx, key, out, preconditions) -} - -// Implements storage.Interface. -func (c *Cacher) Watch(ctx context.Context, key string, resourceVersion string, pred SelectionPredicate) (watch.Interface, error) { - watchRV, err := c.versioner.ParseWatchResourceVersion(resourceVersion) - if err != nil { - return nil, err - } - - c.ready.wait() - - // We explicitly use thread unsafe version and do locking ourself to ensure that - // no new events will be processed in the meantime. The watchCache will be unlocked - // on return from this function. - // Note that we cannot do it under Cacher lock, to avoid a deadlock, since the - // underlying watchCache is calling processEvent under its lock. - c.watchCache.RLock() - defer c.watchCache.RUnlock() - initEvents, err := c.watchCache.GetAllEventsSinceThreadUnsafe(watchRV) - if err != nil { - // To match the uncached watch implementation, once we have passed authn/authz/admission, - // and successfully parsed a resource version, other errors must fail with a watch event of type ERROR, - // rather than a directly returned error. - return newErrWatcher(err), nil - } - - triggerValue, triggerSupported := "", false - // TODO: Currently we assume that in a given Cacher object, any that is - // passed here is aware of exactly the same trigger (at most one). - // Thus, either 0 or 1 values will be returned. - if matchValues := pred.MatcherIndex(); len(matchValues) > 0 { - triggerValue, triggerSupported = matchValues[0].Value, true - } - - // If there is triggerFunc defined, but triggerSupported is false, - // we can't narrow the amount of events significantly at this point. - // - // That said, currently triggerFunc is defined only for Pods and Nodes, - // and there is only constant number of watchers for which triggerSupported - // is false (excluding those issues explicitly by users). - // Thus, to reduce the risk of those watchers blocking all watchers of a - // given resource in the system, we increase the sizes of buffers for them. - chanSize := 10 - if c.triggerFunc != nil && !triggerSupported { - // TODO: We should tune this value and ideally make it dependent on the - // number of objects of a given type and/or their churn. - chanSize = 1000 - } - - c.Lock() - defer c.Unlock() - forget := forgetWatcher(c, c.watcherIdx, triggerValue, triggerSupported) - watcher := newCacheWatcher(watchRV, chanSize, initEvents, filterWithAttrsFunction(key, pred), forget, c.versioner) - - c.watchers.addWatcher(watcher, c.watcherIdx, triggerValue, triggerSupported) - c.watcherIdx++ - return watcher, nil -} - -// Implements storage.Interface. -func (c *Cacher) WatchList(ctx context.Context, key string, resourceVersion string, pred SelectionPredicate) (watch.Interface, error) { - return c.Watch(ctx, key, resourceVersion, pred) -} - -// Implements storage.Interface. -func (c *Cacher) Get(ctx context.Context, key string, resourceVersion string, objPtr runtime.Object, ignoreNotFound bool) error { - if resourceVersion == "" { - // If resourceVersion is not specified, serve it from underlying - // storage (for backward compatibility). - return c.storage.Get(ctx, key, resourceVersion, objPtr, ignoreNotFound) - } - - // If resourceVersion is specified, serve it from cache. - // It's guaranteed that the returned value is at least that - // fresh as the given resourceVersion. - getRV, err := c.versioner.ParseListResourceVersion(resourceVersion) - if err != nil { - return err - } - - if getRV == 0 && !c.ready.check() { - // If Cacher is not yet initialized and we don't require any specific - // minimal resource version, simply forward the request to storage. - return c.storage.Get(ctx, key, resourceVersion, objPtr, ignoreNotFound) - } - - // Do not create a trace - it's not for free and there are tons - // of Get requests. We can add it if it will be really needed. - c.ready.wait() - - objVal, err := conversion.EnforcePtr(objPtr) - if err != nil { - return err - } - - obj, exists, readResourceVersion, err := c.watchCache.WaitUntilFreshAndGet(getRV, key, nil) - if err != nil { - return err - } - - if exists { - elem, ok := obj.(*storeElement) - if !ok { - return fmt.Errorf("non *storeElement returned from storage: %v", obj) - } - objVal.Set(reflect.ValueOf(elem.Object).Elem()) - } else { - objVal.Set(reflect.Zero(objVal.Type())) - if !ignoreNotFound { - return NewKeyNotFoundError(key, int64(readResourceVersion)) - } - } - return nil -} - -// Implements storage.Interface. -func (c *Cacher) GetToList(ctx context.Context, key string, resourceVersion string, pred SelectionPredicate, listObj runtime.Object) error { - pagingEnabled := utilfeature.DefaultFeatureGate.Enabled(features.APIListChunking) - if resourceVersion == "" || (pagingEnabled && (len(pred.Continue) > 0 || pred.Limit > 0)) { - // If resourceVersion is not specified, serve it from underlying - // storage (for backward compatibility). If a continuation or limit is - // requested, serve it from the underlying storage as well. - return c.storage.GetToList(ctx, key, resourceVersion, pred, listObj) - } - - // If resourceVersion is specified, serve it from cache. - // It's guaranteed that the returned value is at least that - // fresh as the given resourceVersion. - listRV, err := c.versioner.ParseListResourceVersion(resourceVersion) - if err != nil { - return err - } - - if listRV == 0 && !c.ready.check() { - // If Cacher is not yet initialized and we don't require any specific - // minimal resource version, simply forward the request to storage. - return c.storage.GetToList(ctx, key, resourceVersion, pred, listObj) - } - - trace := utiltrace.New(fmt.Sprintf("cacher %v: List", c.objectType.String())) - defer trace.LogIfLong(500 * time.Millisecond) - - c.ready.wait() - trace.Step("Ready") - - // List elements with at least 'listRV' from cache. - listPtr, err := meta.GetItemsPtr(listObj) - if err != nil { - return err - } - listVal, err := conversion.EnforcePtr(listPtr) - if err != nil || listVal.Kind() != reflect.Slice { - return fmt.Errorf("need a pointer to slice, got %v", listVal.Kind()) - } - filter := filterWithAttrsFunction(key, pred) - - obj, exists, readResourceVersion, err := c.watchCache.WaitUntilFreshAndGet(listRV, key, trace) - if err != nil { - return err - } - trace.Step("Got from cache") - - if exists { - elem, ok := obj.(*storeElement) - if !ok { - return fmt.Errorf("non *storeElement returned from storage: %v", obj) - } - if filter(elem.Key, elem.Labels, elem.Fields, elem.Uninitialized) { - listVal.Set(reflect.Append(listVal, reflect.ValueOf(elem.Object).Elem())) - } - } - if c.versioner != nil { - if err := c.versioner.UpdateList(listObj, readResourceVersion, ""); err != nil { - return err - } - } - return nil -} - -// Implements storage.Interface. -func (c *Cacher) List(ctx context.Context, key string, resourceVersion string, pred SelectionPredicate, listObj runtime.Object) error { - pagingEnabled := utilfeature.DefaultFeatureGate.Enabled(features.APIListChunking) - hasContinuation := pagingEnabled && len(pred.Continue) > 0 - hasLimit := pagingEnabled && pred.Limit > 0 && resourceVersion != "0" - if resourceVersion == "" || hasContinuation || hasLimit { - // If resourceVersion is not specified, serve it from underlying - // storage (for backward compatibility). If a continuation is - // requested, serve it from the underlying storage as well. - // Limits are only sent to storage when resourceVersion is non-zero - // since the watch cache isn't able to perform continuations, and - // limits are ignored when resource version is zero. - return c.storage.List(ctx, key, resourceVersion, pred, listObj) - } - - // If resourceVersion is specified, serve it from cache. - // It's guaranteed that the returned value is at least that - // fresh as the given resourceVersion. - listRV, err := c.versioner.ParseListResourceVersion(resourceVersion) - if err != nil { - return err - } - - if listRV == 0 && !c.ready.check() { - // If Cacher is not yet initialized and we don't require any specific - // minimal resource version, simply forward the request to storage. - return c.storage.List(ctx, key, resourceVersion, pred, listObj) - } - - trace := utiltrace.New(fmt.Sprintf("cacher %v: List", c.objectType.String())) - defer trace.LogIfLong(500 * time.Millisecond) - - c.ready.wait() - trace.Step("Ready") - - // List elements with at least 'listRV' from cache. - listPtr, err := meta.GetItemsPtr(listObj) - if err != nil { - return err - } - listVal, err := conversion.EnforcePtr(listPtr) - if err != nil || listVal.Kind() != reflect.Slice { - return fmt.Errorf("need a pointer to slice, got %v", listVal.Kind()) - } - filter := filterWithAttrsFunction(key, pred) - - objs, readResourceVersion, err := c.watchCache.WaitUntilFreshAndList(listRV, trace) - if err != nil { - return err - } - trace.Step(fmt.Sprintf("Listed %d items from cache", len(objs))) - if len(objs) > listVal.Cap() && pred.Label.Empty() && pred.Field.Empty() { - // Resize the slice appropriately, since we already know that none - // of the elements will be filtered out. - listVal.Set(reflect.MakeSlice(reflect.SliceOf(c.objectType.Elem()), 0, len(objs))) - trace.Step("Resized result") - } - for _, obj := range objs { - elem, ok := obj.(*storeElement) - if !ok { - return fmt.Errorf("non *storeElement returned from storage: %v", obj) - } - if filter(elem.Key, elem.Labels, elem.Fields, elem.Uninitialized) { - listVal.Set(reflect.Append(listVal, reflect.ValueOf(elem.Object).Elem())) - } - } - trace.Step(fmt.Sprintf("Filtered %d items", listVal.Len())) - if c.versioner != nil { - if err := c.versioner.UpdateList(listObj, readResourceVersion, ""); err != nil { - return err - } - } - return nil -} - -// Implements storage.Interface. -func (c *Cacher) GuaranteedUpdate( - ctx context.Context, key string, ptrToType runtime.Object, ignoreNotFound bool, - preconditions *Preconditions, tryUpdate UpdateFunc, _ ...runtime.Object) error { - // Ignore the suggestion and try to pass down the current version of the object - // read from cache. - if elem, exists, err := c.watchCache.GetByKey(key); err != nil { - glog.Errorf("GetByKey returned error: %v", err) - } else if exists { - currObj := elem.(*storeElement).Object.DeepCopyObject() - return c.storage.GuaranteedUpdate(ctx, key, ptrToType, ignoreNotFound, preconditions, tryUpdate, currObj) - } - // If we couldn't get the object, fallback to no-suggestion. - return c.storage.GuaranteedUpdate(ctx, key, ptrToType, ignoreNotFound, preconditions, tryUpdate) -} - -func (c *Cacher) Count(pathPrefix string) (int64, error) { - return c.storage.Count(pathPrefix) -} - -func (c *Cacher) triggerValues(event *watchCacheEvent) ([]string, bool) { - // TODO: Currently we assume that in a given Cacher object, its - // is aware of exactly the same trigger (at most one). Thus calling: - // c.triggerFunc() - // can return only 0 or 1 values. - // That means, that triggerValues itself may return up to 2 different values. - if c.triggerFunc == nil { - return nil, false - } - result := make([]string, 0, 2) - matchValues := c.triggerFunc(event.Object) - if len(matchValues) > 0 { - result = append(result, matchValues[0].Value) - } - if event.PrevObject == nil { - return result, len(result) > 0 - } - prevMatchValues := c.triggerFunc(event.PrevObject) - if len(prevMatchValues) > 0 { - if len(result) == 0 || result[0] != prevMatchValues[0].Value { - result = append(result, prevMatchValues[0].Value) - } - } - return result, len(result) > 0 -} - -func (c *Cacher) processEvent(event *watchCacheEvent) { - if curLen := int64(len(c.incoming)); c.incomingHWM.Update(curLen) { - // Monitor if this gets backed up, and how much. - glog.V(1).Infof("cacher (%v): %v objects queued in incoming channel.", c.objectType.String(), curLen) - } - c.incoming <- *event -} - -func (c *Cacher) dispatchEvents() { - for { - select { - case event, ok := <-c.incoming: - if !ok { - return - } - c.dispatchEvent(&event) - case <-c.stopCh: - return - } - } -} - -func (c *Cacher) dispatchEvent(event *watchCacheEvent) { - triggerValues, supported := c.triggerValues(event) - - c.Lock() - defer c.Unlock() - // Iterate over "allWatchers" no matter what the trigger function is. - for _, watcher := range c.watchers.allWatchers { - watcher.add(event, c.dispatchTimeoutBudget) - } - if supported { - // Iterate over watchers interested in the given values of the trigger. - for _, triggerValue := range triggerValues { - for _, watcher := range c.watchers.valueWatchers[triggerValue] { - watcher.add(event, c.dispatchTimeoutBudget) - } - } - } else { - // supported equal to false generally means that trigger function - // is not defined (or not aware of any indexes). In this case, - // watchers filters should generally also don't generate any - // trigger values, but can cause problems in case of some - // misconfiguration. Thus we paranoidly leave this branch. - - // Iterate over watchers interested in exact values for all values. - for _, watchers := range c.watchers.valueWatchers { - for _, watcher := range watchers { - watcher.add(event, c.dispatchTimeoutBudget) - } - } - } -} - -func (c *Cacher) terminateAllWatchers() { - c.Lock() - defer c.Unlock() - c.watchers.terminateAll(c.objectType) -} - -func (c *Cacher) isStopped() bool { - c.stopLock.RLock() - defer c.stopLock.RUnlock() - return c.stopped -} - -func (c *Cacher) Stop() { - // avoid stopping twice (note: cachers are shared with subresources) - if c.isStopped() { - return - } - c.stopLock.Lock() - if c.stopped { - c.stopLock.Unlock() - return - } - c.stopped = true - c.stopLock.Unlock() - close(c.stopCh) - c.stopWg.Wait() -} - -func forgetWatcher(c *Cacher, index int, triggerValue string, triggerSupported bool) func(bool) { - return func(lock bool) { - if lock { - c.Lock() - defer c.Unlock() - } else { - // false is currently passed only if we are forcing watcher to close due - // to its unresponsiveness and blocking other watchers. - // TODO: Get this information in cleaner way. - glog.V(1).Infof("Forcing watcher close due to unresponsiveness: %v", c.objectType.String()) - } - // It's possible that the watcher is already not in the structure (e.g. in case of - // simultaneous Stop() and terminateAllWatchers(), but it doesn't break anything. - c.watchers.deleteWatcher(index, triggerValue, triggerSupported) - } -} - -func filterWithAttrsFunction(key string, p SelectionPredicate) filterWithAttrsFunc { - filterFunc := func(objKey string, label labels.Set, field fields.Set, uninitialized bool) bool { - if !hasPathPrefix(objKey, key) { - return false - } - return p.MatchesObjectAttributes(label, field, uninitialized) - } - return filterFunc -} - -// Returns resource version to which the underlying cache is synced. -func (c *Cacher) LastSyncResourceVersion() (uint64, error) { - c.ready.wait() - - resourceVersion := c.reflector.LastSyncResourceVersion() - return c.versioner.ParseListResourceVersion(resourceVersion) -} - -// cacherListerWatcher opaques storage.Interface to expose cache.ListerWatcher. -type cacherListerWatcher struct { - storage Interface - resourcePrefix string - newListFunc func() runtime.Object -} - -func newCacherListerWatcher(storage Interface, resourcePrefix string, newListFunc func() runtime.Object) cache.ListerWatcher { - return &cacherListerWatcher{ - storage: storage, - resourcePrefix: resourcePrefix, - newListFunc: newListFunc, - } -} - -// Implements cache.ListerWatcher interface. -func (lw *cacherListerWatcher) List(options metav1.ListOptions) (runtime.Object, error) { - list := lw.newListFunc() - if err := lw.storage.List(context.TODO(), lw.resourcePrefix, "", Everything, list); err != nil { - return nil, err - } - return list, nil -} - -// Implements cache.ListerWatcher interface. -func (lw *cacherListerWatcher) Watch(options metav1.ListOptions) (watch.Interface, error) { - return lw.storage.WatchList(context.TODO(), lw.resourcePrefix, options.ResourceVersion, Everything) -} - -// errWatcher implements watch.Interface to return a single error -type errWatcher struct { - result chan watch.Event -} - -func newErrWatcher(err error) *errWatcher { - // Create an error event - errEvent := watch.Event{Type: watch.Error} - switch err := err.(type) { - case runtime.Object: - errEvent.Object = err - case *errors.StatusError: - errEvent.Object = &err.ErrStatus - default: - errEvent.Object = &metav1.Status{ - Status: metav1.StatusFailure, - Message: err.Error(), - Reason: metav1.StatusReasonInternalError, - Code: http.StatusInternalServerError, - } - } - - // Create a watcher with room for a single event, populate it, and close the channel - watcher := &errWatcher{result: make(chan watch.Event, 1)} - watcher.result <- errEvent - close(watcher.result) - - return watcher -} - -// Implements watch.Interface. -func (c *errWatcher) ResultChan() <-chan watch.Event { - return c.result -} - -// Implements watch.Interface. -func (c *errWatcher) Stop() { - // no-op -} - -// cachWatcher implements watch.Interface -type cacheWatcher struct { - sync.Mutex - input chan *watchCacheEvent - result chan watch.Event - done chan struct{} - filter filterWithAttrsFunc - stopped bool - forget func(bool) - versioner Versioner -} - -func newCacheWatcher(resourceVersion uint64, chanSize int, initEvents []*watchCacheEvent, filter filterWithAttrsFunc, forget func(bool), versioner Versioner) *cacheWatcher { - watcher := &cacheWatcher{ - input: make(chan *watchCacheEvent, chanSize), - result: make(chan watch.Event, chanSize), - done: make(chan struct{}), - filter: filter, - stopped: false, - forget: forget, - versioner: versioner, - } - go watcher.process(initEvents, resourceVersion) - return watcher -} - -// Implements watch.Interface. -func (c *cacheWatcher) ResultChan() <-chan watch.Event { - return c.result -} - -// Implements watch.Interface. -func (c *cacheWatcher) Stop() { - c.forget(true) - c.stop() -} - -func (c *cacheWatcher) stop() { - c.Lock() - defer c.Unlock() - if !c.stopped { - c.stopped = true - close(c.done) - close(c.input) - } -} - -var timerPool sync.Pool - -func (c *cacheWatcher) add(event *watchCacheEvent, budget *timeBudget) { - // Try to send the event immediately, without blocking. - select { - case c.input <- event: - return - default: - } - - // OK, block sending, but only for up to . - // cacheWatcher.add is called very often, so arrange - // to reuse timers instead of constantly allocating. - startTime := time.Now() - timeout := budget.takeAvailable() - - t, ok := timerPool.Get().(*time.Timer) - if ok { - t.Reset(timeout) - } else { - t = time.NewTimer(timeout) - } - defer timerPool.Put(t) - - select { - case c.input <- event: - stopped := t.Stop() - if !stopped { - // Consume triggered (but not yet received) timer event - // so that future reuse does not get a spurious timeout. - <-t.C - } - case <-t.C: - // This means that we couldn't send event to that watcher. - // Since we don't want to block on it infinitely, - // we simply terminate it. - c.forget(false) - c.stop() - } - - budget.returnUnused(timeout - time.Since(startTime)) -} - -// NOTE: sendWatchCacheEvent is assumed to not modify !!! -func (c *cacheWatcher) sendWatchCacheEvent(event *watchCacheEvent) { - curObjPasses := event.Type != watch.Deleted && c.filter(event.Key, event.ObjLabels, event.ObjFields, event.ObjUninitialized) - oldObjPasses := false - if event.PrevObject != nil { - oldObjPasses = c.filter(event.Key, event.PrevObjLabels, event.PrevObjFields, event.PrevObjUninitialized) - } - if !curObjPasses && !oldObjPasses { - // Watcher is not interested in that object. - return - } - - var watchEvent watch.Event - switch { - case curObjPasses && !oldObjPasses: - watchEvent = watch.Event{Type: watch.Added, Object: event.Object.DeepCopyObject()} - case curObjPasses && oldObjPasses: - watchEvent = watch.Event{Type: watch.Modified, Object: event.Object.DeepCopyObject()} - case !curObjPasses && oldObjPasses: - // return a delete event with the previous object content, but with the event's resource version - oldObj := event.PrevObject.DeepCopyObject() - if err := c.versioner.UpdateObject(oldObj, event.ResourceVersion); err != nil { - utilruntime.HandleError(fmt.Errorf("failure to version api object (%d) %#v: %v", event.ResourceVersion, oldObj, err)) - } - watchEvent = watch.Event{Type: watch.Deleted, Object: oldObj} - } - - // We need to ensure that if we put event X to the c.result, all - // previous events were already put into it before, no matter whether - // c.done is close or not. - // Thus we cannot simply select from c.done and c.result and this - // would give us non-determinism. - // At the same time, we don't want to block infinitely on putting - // to c.result, when c.done is already closed. - - // This ensures that with c.done already close, we at most once go - // into the next select after this. With that, no matter which - // statement we choose there, we will deliver only consecutive - // events. - select { - case <-c.done: - return - default: - } - - select { - case c.result <- watchEvent: - case <-c.done: - } -} - -func (c *cacheWatcher) process(initEvents []*watchCacheEvent, resourceVersion uint64) { - defer utilruntime.HandleCrash() - - // Check how long we are processing initEvents. - // As long as these are not processed, we are not processing - // any incoming events, so if it takes long, we may actually - // block all watchers for some time. - // TODO: From the logs it seems that there happens processing - // times even up to 1s which is very long. However, this doesn't - // depend that much on the number of initEvents. E.g. from the - // 2000-node Kubemark run we have logs like this, e.g.: - // ... processing 13862 initEvents took 66.808689ms - // ... processing 14040 initEvents took 993.532539ms - // We should understand what is blocking us in those cases (e.g. - // is it lack of CPU, network, or sth else) and potentially - // consider increase size of result buffer in those cases. - const initProcessThreshold = 500 * time.Millisecond - startTime := time.Now() - for _, event := range initEvents { - c.sendWatchCacheEvent(event) - } - processingTime := time.Since(startTime) - if processingTime > initProcessThreshold { - objType := "" - if len(initEvents) > 0 { - objType = reflect.TypeOf(initEvents[0].Object).String() - } - glog.V(2).Infof("processing %d initEvents of %s took %v", len(initEvents), objType, processingTime) - } - - defer close(c.result) - defer c.Stop() - for { - event, ok := <-c.input - if !ok { - return - } - // only send events newer than resourceVersion - if event.ResourceVersion > resourceVersion { - c.sendWatchCacheEvent(event) - } - } -} - -type ready struct { - ok bool - c *sync.Cond -} - -func newReady() *ready { - return &ready{c: sync.NewCond(&sync.Mutex{})} -} - -func (r *ready) wait() { - r.c.L.Lock() - for !r.ok { - r.c.Wait() - } - r.c.L.Unlock() -} - -// TODO: Make check() function more sophisticated, in particular -// allow it to behave as "waitWithTimeout". -func (r *ready) check() bool { - r.c.L.Lock() - defer r.c.L.Unlock() - return r.ok -} - -func (r *ready) set(ok bool) { - r.c.L.Lock() - defer r.c.L.Unlock() - r.ok = ok - r.c.Broadcast() -} diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/errors.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/errors.go index a4d134ac99..f73d47aedc 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/errors.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/errors.go @@ -166,5 +166,5 @@ func NewInternalError(reason string) InternalError { } func NewInternalErrorf(format string, a ...interface{}) InternalError { - return InternalError{fmt.Sprintf(format, a)} + return InternalError{fmt.Sprintf(format, a...)} } diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/etcd/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/etcd/BUILD index ccdf63e5cc..986628cf59 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/etcd/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/etcd/BUILD @@ -15,25 +15,26 @@ go_test( ], embed = [":go_default_library"], deps = [ + "//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/testing:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/apis/example:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/apis/example/v1:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/storage:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/storage/etcd/etcdtest:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/storage/etcd/testing:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/storage/testing:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/storage/tests:go_default_library", "//vendor/github.com/coreos/etcd/client:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/testing:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/apiserver/pkg/apis/example:go_default_library", - "//vendor/k8s.io/apiserver/pkg/apis/example/v1:go_default_library", - "//vendor/k8s.io/apiserver/pkg/storage:go_default_library", - "//vendor/k8s.io/apiserver/pkg/storage/etcd/etcdtest:go_default_library", - "//vendor/k8s.io/apiserver/pkg/storage/etcd/testing:go_default_library", - "//vendor/k8s.io/apiserver/pkg/storage/testing:go_default_library", - "//vendor/k8s.io/apiserver/pkg/storage/tests:go_default_library", + "//vendor/github.com/stretchr/testify/require:go_default_library", ], ) @@ -45,22 +46,23 @@ go_library( "etcd_helper.go", "etcd_watcher.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/storage/etcd", importpath = "k8s.io/apiserver/pkg/storage/etcd", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/cache:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/storage:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/storage/etcd/metrics:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/storage/etcd/util:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/trace:go_default_library", "//vendor/github.com/coreos/etcd/client:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/cache:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/apiserver/pkg/storage:go_default_library", - "//vendor/k8s.io/apiserver/pkg/storage/etcd/metrics:go_default_library", - "//vendor/k8s.io/apiserver/pkg/storage/etcd/util:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/trace:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/etcd/api_object_versioner.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/etcd/api_object_versioner.go index 5534f9fa23..471a3313df 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/etcd/api_object_versioner.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/etcd/api_object_versioner.go @@ -82,11 +82,11 @@ func (a APIObjectVersioner) ObjectResourceVersion(obj runtime.Object) (uint64, e return strconv.ParseUint(version, 10, 64) } -// ParseWatchResourceVersion takes a resource version argument and converts it to -// the etcd version we should pass to helper.Watch(). Because resourceVersion is +// ParseResourceVersion takes a resource version argument and converts it to +// the etcd version. For watch we should pass to helper.Watch(). Because resourceVersion is // an opaque value, the default watch behavior for non-zero watch is to watch // the next value (if you pass "1", you will see updates from "2" onwards). -func (a APIObjectVersioner) ParseWatchResourceVersion(resourceVersion string) (uint64, error) { +func (a APIObjectVersioner) ParseResourceVersion(resourceVersion string) (uint64, error) { if resourceVersion == "" || resourceVersion == "0" { return 0, nil } @@ -101,25 +101,6 @@ func (a APIObjectVersioner) ParseWatchResourceVersion(resourceVersion string) (u return version, nil } -// ParseListResourceVersion takes a resource version argument and converts it to -// the etcd version. -// TODO: reevaluate whether it is really clearer to have both this and the -// Watch version of this function, since they perform the same logic. -func (a APIObjectVersioner) ParseListResourceVersion(resourceVersion string) (uint64, error) { - if resourceVersion == "" { - return 0, nil - } - version, err := strconv.ParseUint(resourceVersion, 10, 64) - if err != nil { - return 0, storage.NewInvalidError(field.ErrorList{ - // Validation errors are supposed to return version-specific field - // paths, but this is probably close enough. - field.Invalid(field.NewPath("resourceVersion"), resourceVersion, err.Error()), - }) - } - return version, nil -} - // APIObjectVersioner implements Versioner var Versioner storage.Versioner = APIObjectVersioner{} diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/etcd/etcd_helper.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/etcd/etcd_helper.go index 2fe2bbada2..0906a18175 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/etcd/etcd_helper.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/etcd/etcd_helper.go @@ -231,7 +231,7 @@ func (h *etcdHelper) Watch(ctx context.Context, key string, resourceVersion stri if ctx == nil { glog.Errorf("Context is nil") } - watchRV, err := h.versioner.ParseWatchResourceVersion(resourceVersion) + watchRV, err := h.versioner.ParseResourceVersion(resourceVersion) if err != nil { return nil, err } @@ -246,7 +246,7 @@ func (h *etcdHelper) WatchList(ctx context.Context, key string, resourceVersion if ctx == nil { glog.Errorf("Context is nil") } - watchRV, err := h.versioner.ParseWatchResourceVersion(resourceVersion) + watchRV, err := h.versioner.ParseResourceVersion(resourceVersion) if err != nil { return nil, err } diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/etcd/etcd_watcher.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/etcd/etcd_watcher.go index 21ffc42e57..d3a2e3c53a 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/etcd/etcd_watcher.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/etcd/etcd_watcher.go @@ -22,7 +22,6 @@ import ( "net/http" "reflect" "sync" - "time" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" @@ -100,9 +99,6 @@ type etcdWatcher struct { cache etcdCache } -// watchWaitDuration is the amount of time to wait for an error from watch. -const watchWaitDuration = 100 * time.Millisecond - // newEtcdWatcher returns a new etcdWatcher; if list is true, watch sub-nodes. // The versioner must be able to handle the objects that transform creates. func newEtcdWatcher(list bool, quorum bool, include includeFunc, pred storage.SelectionPredicate, diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/etcd/metrics/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/etcd/metrics/BUILD index f4edcf221b..807c63e1f4 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/etcd/metrics/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/etcd/metrics/BUILD @@ -8,6 +8,7 @@ load( go_library( name = "go_default_library", srcs = ["metrics.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/storage/etcd/metrics", importpath = "k8s.io/apiserver/pkg/storage/etcd/metrics", deps = ["//vendor/github.com/prometheus/client_golang/prometheus:go_default_library"], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/etcd/util/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/etcd/util/BUILD index a0ad4fc56d..131664d32a 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/etcd/util/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/etcd/util/BUILD @@ -22,6 +22,7 @@ go_library( "doc.go", "etcd_util.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/storage/etcd/util", importpath = "k8s.io/apiserver/pkg/storage/etcd/util", deps = ["//vendor/github.com/coreos/etcd/client:go_default_library"], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/interfaces.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/interfaces.go index 227ab2b8ec..ed1a78887e 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/interfaces.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/interfaces.go @@ -49,16 +49,12 @@ type Versioner interface { // Should return an error if the specified object does not have a persistable version. ObjectResourceVersion(obj runtime.Object) (uint64, error) - // ParseWatchResourceVersion takes a resource version argument and - // converts it to the storage backend we should pass to helper.Watch(). + // ParseResourceVersion takes a resource version argument and + // converts it to the storage backend. For watch we should pass to helper.Watch(). // Because resourceVersion is an opaque value, the default watch // behavior for non-zero watch is to watch the next value (if you pass // "1", you will see updates from "2" onwards). - ParseWatchResourceVersion(resourceVersion string) (uint64, error) - // ParseListResourceVersion takes a resource version argument and - // converts it to the storage backend version. Appropriate for - // everything that's not intended as an argument for watch. - ParseListResourceVersion(resourceVersion string) (uint64, error) + ParseResourceVersion(resourceVersion string) (uint64, error) } // ResponseMeta contains information about the database metadata that is associated with diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/names/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/names/BUILD index 0accf5b7b0..6a2bd25d28 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/names/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/names/BUILD @@ -15,8 +15,9 @@ go_test( go_library( name = "go_default_library", srcs = ["generate.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/storage/names", importpath = "k8s.io/apiserver/pkg/storage/names", - deps = ["//vendor/k8s.io/apimachinery/pkg/util/rand:go_default_library"], + deps = ["//staging/src/k8s.io/apimachinery/pkg/util/rand:go_default_library"], ) filegroup( diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/time_budget.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/time_budget.go deleted file mode 100644 index e619ec6605..0000000000 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/time_budget.go +++ /dev/null @@ -1,95 +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 storage - -import ( - "sync" - "time" -) - -const ( - refreshPerSecond = 50 * time.Millisecond - maxBudget = 100 * time.Millisecond -) - -// timeBudget implements a budget of time that you can use and is -// periodically being refreshed. The pattern to use it is: -// budget := newTimeBudget(...) -// ... -// timeout := budget.takeAvailable() -// // Now you can spend at most timeout on doing stuff -// ... -// // If you didn't use all timeout, return what you didn't use -// budget.returnUnused() -// -// NOTE: It's not recommended to be used concurrently from multiple threads - -// if first user takes the whole timeout, the second one will get 0 timeout -// even though the first one may return something later. -type timeBudget struct { - sync.Mutex - budget time.Duration - - refresh time.Duration - maxBudget time.Duration -} - -func newTimeBudget(stopCh <-chan struct{}) *timeBudget { - result := &timeBudget{ - budget: time.Duration(0), - refresh: refreshPerSecond, - maxBudget: maxBudget, - } - go result.periodicallyRefresh(stopCh) - return result -} - -func (t *timeBudget) periodicallyRefresh(stopCh <-chan struct{}) { - ticker := time.NewTicker(time.Second) - defer ticker.Stop() - for { - select { - case <-ticker.C: - t.Lock() - if t.budget = t.budget + t.refresh; t.budget > t.maxBudget { - t.budget = t.maxBudget - } - t.Unlock() - case <-stopCh: - return - } - } -} - -func (t *timeBudget) takeAvailable() time.Duration { - t.Lock() - defer t.Unlock() - result := t.budget - t.budget = time.Duration(0) - return result -} - -func (t *timeBudget) returnUnused(unused time.Duration) { - t.Lock() - defer t.Unlock() - if unused < 0 { - // We used more than allowed. - return - } - if t.budget = t.budget + unused; t.budget > t.maxBudget { - t.budget = t.maxBudget - } -} diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/util.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/util.go index 9d437d0622..8c571b1c83 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/util.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/util.go @@ -18,7 +18,6 @@ package storage import ( "fmt" - "strings" "sync/atomic" "k8s.io/apimachinery/pkg/api/meta" @@ -72,31 +71,6 @@ func NoNamespaceKeyFunc(prefix string, obj runtime.Object) (string, error) { return prefix + "/" + name, nil } -// hasPathPrefix returns true if the string matches pathPrefix exactly, or if is prefixed with pathPrefix at a path segment boundary -func hasPathPrefix(s, pathPrefix string) bool { - // Short circuit if s doesn't contain the prefix at all - if !strings.HasPrefix(s, pathPrefix) { - return false - } - - pathPrefixLength := len(pathPrefix) - - if len(s) == pathPrefixLength { - // Exact match - return true - } - if strings.HasSuffix(pathPrefix, "/") { - // pathPrefix already ensured a path segment boundary - return true - } - if s[pathPrefixLength:pathPrefixLength+1] == "/" { - // The next character in s is a path segment boundary - // Check this instead of normalizing pathPrefix to avoid allocating on every call - return true - } - return false -} - // HighWaterMark is a thread-safe object for tracking the maximum value seen // for some quantity. type HighWaterMark int64 diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/watch_cache.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/watch_cache.go deleted file mode 100644 index 373e74eeda..0000000000 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/watch_cache.go +++ /dev/null @@ -1,484 +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 storage - -import ( - "fmt" - "sort" - "strconv" - "sync" - "time" - - "k8s.io/apimachinery/pkg/api/errors" - "k8s.io/apimachinery/pkg/api/meta" - "k8s.io/apimachinery/pkg/fields" - "k8s.io/apimachinery/pkg/labels" - "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/util/clock" - "k8s.io/apimachinery/pkg/watch" - utiltrace "k8s.io/apiserver/pkg/util/trace" - "k8s.io/client-go/tools/cache" -) - -const ( - // blockTimeout determines how long we're willing to block the request - // to wait for a given resource version to be propagated to cache, - // before terminating request and returning Timeout error with retry - // after suggestion. - blockTimeout = 3 * time.Second -) - -// watchCacheEvent is a single "watch event" that is send to users of -// watchCache. Additionally to a typical "watch.Event" it contains -// the previous value of the object to enable proper filtering in the -// upper layers. -type watchCacheEvent struct { - Type watch.EventType - Object runtime.Object - ObjLabels labels.Set - ObjFields fields.Set - ObjUninitialized bool - PrevObject runtime.Object - PrevObjLabels labels.Set - PrevObjFields fields.Set - PrevObjUninitialized bool - Key string - ResourceVersion uint64 -} - -// Computing a key of an object is generally non-trivial (it performs -// e.g. validation underneath). Similarly computing object fields and -// labels. To avoid computing them multiple times (to serve the event -// in different List/Watch requests), in the underlying store we are -// keeping structs (key, object, labels, fields, uninitialized). -type storeElement struct { - Key string - Object runtime.Object - Labels labels.Set - Fields fields.Set - Uninitialized bool -} - -func storeElementKey(obj interface{}) (string, error) { - elem, ok := obj.(*storeElement) - if !ok { - return "", fmt.Errorf("not a storeElement: %v", obj) - } - return elem.Key, nil -} - -// watchCacheElement is a single "watch event" stored in a cache. -// It contains the resource version of the object and the object -// itself. -type watchCacheElement struct { - resourceVersion uint64 - watchCacheEvent *watchCacheEvent -} - -// watchCache implements a Store interface. -// However, it depends on the elements implementing runtime.Object interface. -// -// watchCache is a "sliding window" (with a limited capacity) of objects -// observed from a watch. -type watchCache struct { - sync.RWMutex - - // Condition on which lists are waiting for the fresh enough - // resource version. - cond *sync.Cond - - // Maximum size of history window. - capacity int - - // keyFunc is used to get a key in the underlying storage for a given object. - keyFunc func(runtime.Object) (string, error) - - // getAttrsFunc is used to get labels and fields of an object. - getAttrsFunc func(runtime.Object) (labels.Set, fields.Set, bool, error) - - // cache is used a cyclic buffer - its first element (with the smallest - // resourceVersion) is defined by startIndex, its last element is defined - // by endIndex (if cache is full it will be startIndex + capacity). - // Both startIndex and endIndex can be greater than buffer capacity - - // you should always apply modulo capacity to get an index in cache array. - cache []watchCacheElement - startIndex int - endIndex int - - // store will effectively support LIST operation from the "end of cache - // history" i.e. from the moment just after the newest cached watched event. - // It is necessary to effectively allow clients to start watching at now. - // NOTE: We assume that is thread-safe. - store cache.Store - - // ResourceVersion up to which the watchCache is propagated. - resourceVersion uint64 - - // This handler is run at the end of every successful Replace() method. - onReplace func() - - // This handler is run at the end of every Add/Update/Delete method - // and additionally gets the previous value of the object. - onEvent func(*watchCacheEvent) - - // for testing timeouts. - clock clock.Clock -} - -func newWatchCache( - capacity int, - keyFunc func(runtime.Object) (string, error), - getAttrsFunc func(runtime.Object) (labels.Set, fields.Set, bool, error)) *watchCache { - wc := &watchCache{ - capacity: capacity, - keyFunc: keyFunc, - getAttrsFunc: getAttrsFunc, - cache: make([]watchCacheElement, capacity), - startIndex: 0, - endIndex: 0, - store: cache.NewStore(storeElementKey), - resourceVersion: 0, - clock: clock.RealClock{}, - } - wc.cond = sync.NewCond(wc.RLocker()) - return wc -} - -// Add takes runtime.Object as an argument. -func (w *watchCache) Add(obj interface{}) error { - object, resourceVersion, err := objectToVersionedRuntimeObject(obj) - if err != nil { - return err - } - event := watch.Event{Type: watch.Added, Object: object} - - f := func(elem *storeElement) error { return w.store.Add(elem) } - return w.processEvent(event, resourceVersion, f) -} - -// Update takes runtime.Object as an argument. -func (w *watchCache) Update(obj interface{}) error { - object, resourceVersion, err := objectToVersionedRuntimeObject(obj) - if err != nil { - return err - } - event := watch.Event{Type: watch.Modified, Object: object} - - f := func(elem *storeElement) error { return w.store.Update(elem) } - return w.processEvent(event, resourceVersion, f) -} - -// Delete takes runtime.Object as an argument. -func (w *watchCache) Delete(obj interface{}) error { - object, resourceVersion, err := objectToVersionedRuntimeObject(obj) - if err != nil { - return err - } - event := watch.Event{Type: watch.Deleted, Object: object} - - f := func(elem *storeElement) error { return w.store.Delete(elem) } - return w.processEvent(event, resourceVersion, f) -} - -func objectToVersionedRuntimeObject(obj interface{}) (runtime.Object, uint64, error) { - object, ok := obj.(runtime.Object) - if !ok { - return nil, 0, fmt.Errorf("obj does not implement runtime.Object interface: %v", obj) - } - meta, err := meta.Accessor(object) - if err != nil { - return nil, 0, err - } - resourceVersion, err := parseResourceVersion(meta.GetResourceVersion()) - if err != nil { - return nil, 0, err - } - return object, resourceVersion, nil -} - -func parseResourceVersion(resourceVersion string) (uint64, error) { - if resourceVersion == "" { - return 0, nil - } - // Use bitsize being the size of int on the machine. - return strconv.ParseUint(resourceVersion, 10, 0) -} - -func (w *watchCache) processEvent(event watch.Event, resourceVersion uint64, updateFunc func(*storeElement) error) error { - key, err := w.keyFunc(event.Object) - if err != nil { - return fmt.Errorf("couldn't compute key: %v", err) - } - elem := &storeElement{Key: key, Object: event.Object} - elem.Labels, elem.Fields, elem.Uninitialized, err = w.getAttrsFunc(event.Object) - if err != nil { - return err - } - - watchCacheEvent := &watchCacheEvent{ - Type: event.Type, - Object: elem.Object, - ObjLabels: elem.Labels, - ObjFields: elem.Fields, - ObjUninitialized: elem.Uninitialized, - Key: key, - ResourceVersion: resourceVersion, - } - - // TODO: We should consider moving this lock below after the watchCacheEvent - // is created. In such situation, the only problematic scenario is Replace( - // happening after getting object from store and before acquiring a lock. - // Maybe introduce another lock for this purpose. - w.Lock() - defer w.Unlock() - previous, exists, err := w.store.Get(elem) - if err != nil { - return err - } - if exists { - previousElem := previous.(*storeElement) - watchCacheEvent.PrevObject = previousElem.Object - watchCacheEvent.PrevObjLabels = previousElem.Labels - watchCacheEvent.PrevObjFields = previousElem.Fields - watchCacheEvent.PrevObjUninitialized = previousElem.Uninitialized - } - - if w.onEvent != nil { - w.onEvent(watchCacheEvent) - } - w.updateCache(resourceVersion, watchCacheEvent) - w.resourceVersion = resourceVersion - w.cond.Broadcast() - return updateFunc(elem) -} - -// Assumes that lock is already held for write. -func (w *watchCache) updateCache(resourceVersion uint64, event *watchCacheEvent) { - if w.endIndex == w.startIndex+w.capacity { - // Cache is full - remove the oldest element. - w.startIndex++ - } - w.cache[w.endIndex%w.capacity] = watchCacheElement{resourceVersion, event} - w.endIndex++ -} - -// List returns list of pointers to objects. -func (w *watchCache) List() []interface{} { - return w.store.List() -} - -// waitUntilFreshAndBlock waits until cache is at least as fresh as given . -// NOTE: This function acquired lock and doesn't release it. -// You HAVE TO explicitly call w.RUnlock() after this function. -func (w *watchCache) waitUntilFreshAndBlock(resourceVersion uint64, trace *utiltrace.Trace) error { - startTime := w.clock.Now() - go func() { - // Wake us up when the time limit has expired. The docs - // promise that time.After (well, NewTimer, which it calls) - // will wait *at least* the duration given. Since this go - // routine starts sometime after we record the start time, and - // it will wake up the loop below sometime after the broadcast, - // we don't need to worry about waking it up before the time - // has expired accidentally. - <-w.clock.After(blockTimeout) - w.cond.Broadcast() - }() - - w.RLock() - if trace != nil { - trace.Step("watchCache locked acquired") - } - for w.resourceVersion < resourceVersion { - if w.clock.Since(startTime) >= blockTimeout { - // Timeout with retry after 1 second. - return errors.NewTimeoutError(fmt.Sprintf("Too large resource version: %v, current: %v", resourceVersion, w.resourceVersion), 1) - } - w.cond.Wait() - } - if trace != nil { - trace.Step("watchCache fresh enough") - } - return nil -} - -// WaitUntilFreshAndList returns list of pointers to objects. -func (w *watchCache) WaitUntilFreshAndList(resourceVersion uint64, trace *utiltrace.Trace) ([]interface{}, uint64, error) { - err := w.waitUntilFreshAndBlock(resourceVersion, trace) - defer w.RUnlock() - if err != nil { - return nil, 0, err - } - return w.store.List(), w.resourceVersion, nil -} - -// WaitUntilFreshAndGet returns a pointers to object. -func (w *watchCache) WaitUntilFreshAndGet(resourceVersion uint64, key string, trace *utiltrace.Trace) (interface{}, bool, uint64, error) { - err := w.waitUntilFreshAndBlock(resourceVersion, trace) - defer w.RUnlock() - if err != nil { - return nil, false, 0, err - } - value, exists, err := w.store.GetByKey(key) - return value, exists, w.resourceVersion, err -} - -func (w *watchCache) ListKeys() []string { - return w.store.ListKeys() -} - -// Get takes runtime.Object as a parameter. However, it returns -// pointer to . -func (w *watchCache) Get(obj interface{}) (interface{}, bool, error) { - object, ok := obj.(runtime.Object) - if !ok { - return nil, false, fmt.Errorf("obj does not implement runtime.Object interface: %v", obj) - } - key, err := w.keyFunc(object) - if err != nil { - return nil, false, fmt.Errorf("couldn't compute key: %v", err) - } - - return w.store.Get(&storeElement{Key: key, Object: object}) -} - -// GetByKey returns pointer to . -func (w *watchCache) GetByKey(key string) (interface{}, bool, error) { - return w.store.GetByKey(key) -} - -// Replace takes slice of runtime.Object as a parameter. -func (w *watchCache) Replace(objs []interface{}, resourceVersion string) error { - version, err := parseResourceVersion(resourceVersion) - if err != nil { - return err - } - - toReplace := make([]interface{}, 0, len(objs)) - for _, obj := range objs { - object, ok := obj.(runtime.Object) - if !ok { - return fmt.Errorf("didn't get runtime.Object for replace: %#v", obj) - } - key, err := w.keyFunc(object) - if err != nil { - return fmt.Errorf("couldn't compute key: %v", err) - } - objLabels, objFields, objUninitialized, err := w.getAttrsFunc(object) - if err != nil { - return err - } - toReplace = append(toReplace, &storeElement{ - Key: key, - Object: object, - Labels: objLabels, - Fields: objFields, - Uninitialized: objUninitialized, - }) - } - - w.Lock() - defer w.Unlock() - - w.startIndex = 0 - w.endIndex = 0 - if err := w.store.Replace(toReplace, resourceVersion); err != nil { - return err - } - w.resourceVersion = version - if w.onReplace != nil { - w.onReplace() - } - w.cond.Broadcast() - return nil -} - -func (w *watchCache) SetOnReplace(onReplace func()) { - w.Lock() - defer w.Unlock() - w.onReplace = onReplace -} - -func (w *watchCache) SetOnEvent(onEvent func(*watchCacheEvent)) { - w.Lock() - defer w.Unlock() - w.onEvent = onEvent -} - -func (w *watchCache) GetAllEventsSinceThreadUnsafe(resourceVersion uint64) ([]*watchCacheEvent, error) { - size := w.endIndex - w.startIndex - // if we have no watch events in our cache, the oldest one we can successfully deliver to a watcher - // is the *next* event we'll receive, which will be at least one greater than our current resourceVersion - oldest := w.resourceVersion + 1 - if size > 0 { - oldest = w.cache[w.startIndex%w.capacity].resourceVersion - } - if resourceVersion == 0 { - // resourceVersion = 0 means that we don't require any specific starting point - // and we would like to start watching from ~now. - // However, to keep backward compatibility, we additionally need to return the - // current state and only then start watching from that point. - // - // TODO: In v2 api, we should stop returning the current state - #13969. - allItems := w.store.List() - result := make([]*watchCacheEvent, len(allItems)) - for i, item := range allItems { - elem, ok := item.(*storeElement) - if !ok { - return nil, fmt.Errorf("not a storeElement: %v", elem) - } - objLabels, objFields, objUninitialized, err := w.getAttrsFunc(elem.Object) - if err != nil { - return nil, err - } - result[i] = &watchCacheEvent{ - Type: watch.Added, - Object: elem.Object, - ObjLabels: objLabels, - ObjFields: objFields, - ObjUninitialized: objUninitialized, - Key: elem.Key, - ResourceVersion: w.resourceVersion, - } - } - return result, nil - } - if resourceVersion < oldest-1 { - return nil, errors.NewGone(fmt.Sprintf("too old resource version: %d (%d)", resourceVersion, oldest-1)) - } - - // Binary search the smallest index at which resourceVersion is greater than the given one. - f := func(i int) bool { - return w.cache[(w.startIndex+i)%w.capacity].resourceVersion > resourceVersion - } - first := sort.Search(size, f) - result := make([]*watchCacheEvent, size-first) - for i := 0; i < size-first; i++ { - result[i] = w.cache[(w.startIndex+first+i)%w.capacity].watchCacheEvent - } - return result, nil -} - -func (w *watchCache) GetAllEventsSince(resourceVersion uint64) ([]*watchCacheEvent, error) { - w.RLock() - defer w.RUnlock() - return w.GetAllEventsSinceThreadUnsafe(resourceVersion) -} - -func (w *watchCache) Resync() error { - // Nothing to do - return nil -} diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/feature/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/feature/BUILD index 157aa49e6c..c2e48e2eb2 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/feature/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/feature/BUILD @@ -16,6 +16,7 @@ go_test( go_library( name = "go_default_library", srcs = ["feature_gate.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/util/feature", importpath = "k8s.io/apiserver/pkg/util/feature", deps = [ "//vendor/github.com/golang/glog:go_default_library", diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/feature/feature_gate.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/feature/feature_gate.go index fe35adc664..6b051a235a 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/feature/feature_gate.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/feature/feature_gate.go @@ -191,7 +191,7 @@ func (f *featureGate) Set(value string) error { f.known.Store(known) f.enabled.Store(enabled) - glog.Infof("feature gates: %v", enabled) + glog.V(1).Infof("feature gates: %v", enabled) return nil } @@ -227,7 +227,7 @@ func (f *featureGate) SetFromMap(m map[string]bool) error { f.known.Store(known) f.enabled.Store(enabled) - glog.Infof("feature gates: %v", f.enabled) + glog.V(1).Infof("feature gates: %v", f.enabled) return nil } diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flag/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flag/BUILD index 1883510d56..31898df513 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flag/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flag/BUILD @@ -36,11 +36,12 @@ go_library( "string_flag.go", "tristate.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/util/flag", importpath = "k8s.io/apiserver/pkg/util/flag", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/spf13/pflag:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flushwriter/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flushwriter/BUILD index 2ca558aac8..28090f0a34 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flushwriter/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flushwriter/BUILD @@ -18,6 +18,7 @@ go_library( "doc.go", "writer.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/util/flushwriter", importpath = "k8s.io/apiserver/pkg/util/flushwriter", ) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/logs/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/logs/BUILD index 069bb5aba8..1e5cf49750 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/logs/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/logs/BUILD @@ -8,11 +8,12 @@ load( go_library( name = "go_default_library", srcs = ["logs.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/util/logs", importpath = "k8s.io/apiserver/pkg/util/logs", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/spf13/pflag:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/trace/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/trace/BUILD index 5d37bb003c..2e94b1d0d4 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/trace/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/trace/BUILD @@ -8,6 +8,7 @@ load( go_library( name = "go_default_library", srcs = ["trace.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/util/trace", importpath = "k8s.io/apiserver/pkg/util/trace", deps = ["//vendor/github.com/golang/glog:go_default_library"], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/webhook/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/webhook/BUILD index c96af1f9c1..0eb7f2cd67 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/webhook/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/webhook/BUILD @@ -9,16 +9,17 @@ load( go_library( name = "go_default_library", srcs = ["webhook.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/util/webhook", importpath = "k8s.io/apiserver/pkg/util/webhook", deps = [ - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/tools/clientcmd:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/tools/clientcmd:go_default_library", ], ) @@ -30,12 +31,12 @@ go_test( ], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/tools/clientcmd/api/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/tools/clientcmd/api/v1:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/wsstream/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/wsstream/BUILD index 3d1c90f612..269af15e5c 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/wsstream/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/wsstream/BUILD @@ -23,11 +23,12 @@ go_library( "doc.go", "stream.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/util/wsstream", importpath = "k8s.io/apiserver/pkg/util/wsstream", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/golang.org/x/net/websocket:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/plugin/pkg/authenticator/token/webhook/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/plugin/pkg/authenticator/token/webhook/BUILD index 4cd60e841a..707440d17c 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/plugin/pkg/authenticator/token/webhook/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/plugin/pkg/authenticator/token/webhook/BUILD @@ -14,29 +14,30 @@ go_test( ], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/api/authentication/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library", - "//vendor/k8s.io/client-go/tools/clientcmd/api/v1:go_default_library", + "//staging/src/k8s.io/api/authentication/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/user:go_default_library", + "//staging/src/k8s.io/client-go/tools/clientcmd/api/v1:go_default_library", ], ) go_library( name = "go_default_library", srcs = ["webhook.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/plugin/pkg/authenticator/token/webhook", importpath = "k8s.io/apiserver/plugin/pkg/authenticator/token/webhook", deps = [ + "//staging/src/k8s.io/api/authentication/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/cache:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/user:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/webhook:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/authentication/v1beta1:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/authentication/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/cache:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/webhook:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/plugin/pkg/authorizer/webhook/BUILD b/cluster-autoscaler/vendor/k8s.io/apiserver/plugin/pkg/authorizer/webhook/BUILD index a1099d8e40..59a23decbb 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/plugin/pkg/authorizer/webhook/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/plugin/pkg/authorizer/webhook/BUILD @@ -14,30 +14,31 @@ go_test( ], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/api/authorization/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authorization/authorizer:go_default_library", - "//vendor/k8s.io/client-go/tools/clientcmd/api/v1:go_default_library", + "//staging/src/k8s.io/api/authorization/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/user:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authorization/authorizer:go_default_library", + "//staging/src/k8s.io/client-go/tools/clientcmd/api/v1:go_default_library", ], ) go_library( name = "go_default_library", srcs = ["webhook.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/plugin/pkg/authorizer/webhook", importpath = "k8s.io/apiserver/plugin/pkg/authorizer/webhook", deps = [ + "//staging/src/k8s.io/api/authorization/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/cache:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/user:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authorization/authorizer:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/webhook:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/authorization/v1beta1:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/authorization/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/cache:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authorization/authorizer:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/webhook:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/discovery/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/discovery/BUILD index bf66795e54..1ddb339a4f 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/discovery/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/discovery/BUILD @@ -11,44 +11,29 @@ go_library( srcs = [ "cached_discovery.go", "discovery_client.go", + "doc.go", "helper.go", "round_tripper.go", - "unstructured.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/discovery", importpath = "k8s.io/client-go/discovery", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/version:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/golang/protobuf/proto:go_default_library", "//vendor/github.com/googleapis/gnostic/OpenAPIv2:go_default_library", "//vendor/github.com/gregjones/httpcache:go_default_library", "//vendor/github.com/gregjones/httpcache/diskcache:go_default_library", "//vendor/github.com/peterbourgon/diskv:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/version:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - ], -) - -go_test( - name = "go_default_xtest", - srcs = ["helper_blackbox_test.go"], - deps = [ - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/client-go/discovery:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/rest/fake:go_default_library", ], ) @@ -74,20 +59,24 @@ go_test( srcs = [ "cached_discovery_test.go", "discovery_client_test.go", + "helper_blackbox_test.go", "round_tripper_test.go", ], embed = [":go_default_library"], deps = [ + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/version:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/rest/fake:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", "//vendor/github.com/googleapis/gnostic/OpenAPIv2:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/version:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/rest/fake:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/discovery/doc.go b/cluster-autoscaler/vendor/k8s.io/client-go/discovery/doc.go new file mode 100644 index 0000000000..76495588ef --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/client-go/discovery/doc.go @@ -0,0 +1,19 @@ +/* +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 discovery provides ways to discover server-supported +// API groups, versions and resources. +package discovery diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/discovery/fake/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/discovery/fake/BUILD index 5b50832a80..840aeb37dd 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/discovery/fake/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/discovery/fake/BUILD @@ -9,15 +9,16 @@ load( go_library( name = "go_default_library", srcs = ["discovery.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/discovery/fake", importpath = "k8s.io/client-go/discovery/fake", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/version:go_default_library", + "//staging/src/k8s.io/client-go/pkg/version:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", "//vendor/github.com/googleapis/gnostic/OpenAPIv2:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/version:go_default_library", - "//vendor/k8s.io/client-go/pkg/version:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", ], ) @@ -35,11 +36,11 @@ filegroup( ) go_test( - name = "go_default_xtest", + name = "go_default_test", srcs = ["discovery_test.go"], + embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/apimachinery/pkg/version:go_default_library", - "//vendor/k8s.io/client-go/discovery/fake:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/version:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/discovery/round_tripper.go b/cluster-autoscaler/vendor/k8s.io/client-go/discovery/round_tripper.go index 2e352b888f..a195d2a2a0 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/discovery/round_tripper.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/discovery/round_tripper.go @@ -14,7 +14,6 @@ See the License for the specific language governing permissions and limitations under the License. */ -// Package transport provides a round tripper capable of caching HTTP responses. package discovery import ( diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/discovery/unstructured.go b/cluster-autoscaler/vendor/k8s.io/client-go/discovery/unstructured.go deleted file mode 100644 index 81913a4142..0000000000 --- a/cluster-autoscaler/vendor/k8s.io/client-go/discovery/unstructured.go +++ /dev/null @@ -1,81 +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 discovery - -import ( - "reflect" - - "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/runtime/schema" -) - -// UnstructuredObjectTyper provides a runtime.ObjectTyper implementation for -// runtime.Unstructured object based on discovery information. -type UnstructuredObjectTyper struct { - typers []runtime.ObjectTyper -} - -// NewUnstructuredObjectTyper returns a runtime.ObjectTyper for -// unstructured objects based on discovery information. It accepts a list of fallback typers -// for handling objects that are not runtime.Unstructured. It does not delegate the Recognizes -// check, only ObjectKinds. -// TODO this only works for the apiextensions server and doesn't recognize any types. Move to point of use. -func NewUnstructuredObjectTyper(typers ...runtime.ObjectTyper) *UnstructuredObjectTyper { - dot := &UnstructuredObjectTyper{ - typers: typers, - } - return dot -} - -// ObjectKinds returns a slice of one element with the group,version,kind of the -// provided object, or an error if the object is not runtime.Unstructured or -// has no group,version,kind information. unversionedType will always be false -// because runtime.Unstructured object should always have group,version,kind -// information set. -func (d *UnstructuredObjectTyper) ObjectKinds(obj runtime.Object) (gvks []schema.GroupVersionKind, unversionedType bool, err error) { - if _, ok := obj.(runtime.Unstructured); ok { - gvk := obj.GetObjectKind().GroupVersionKind() - if len(gvk.Kind) == 0 { - return nil, false, runtime.NewMissingKindErr("object has no kind field ") - } - if len(gvk.Version) == 0 { - return nil, false, runtime.NewMissingVersionErr("object has no apiVersion field") - } - return []schema.GroupVersionKind{gvk}, false, nil - } - var lastErr error - for _, typer := range d.typers { - gvks, unversioned, err := typer.ObjectKinds(obj) - if err != nil { - lastErr = err - continue - } - return gvks, unversioned, nil - } - if lastErr == nil { - lastErr = runtime.NewNotRegisteredErrForType(reflect.TypeOf(obj)) - } - return nil, false, lastErr -} - -// Recognizes returns true if the provided group,version,kind was in the -// discovery information. -func (d *UnstructuredObjectTyper) Recognizes(gvk schema.GroupVersionKind) bool { - return false -} - -var _ runtime.ObjectTyper = &UnstructuredObjectTyper{} diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/dynamic/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/dynamic/BUILD index 90b9ab3011..97598fb563 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/dynamic/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/dynamic/BUILD @@ -11,15 +11,15 @@ go_test( srcs = ["client_test.go"], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/rest/watch:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer/streaming:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/rest/watch:go_default_library", ], ) @@ -30,20 +30,21 @@ go_library( "scheme.go", "simple.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/dynamic", importpath = "k8s.io/client-go/dynamic", deps = [ - "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/json:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer/json:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer/streaming:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer/versioning:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/BUILD index 6514fa417b..d134632bb0 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/BUILD @@ -11,53 +11,56 @@ go_library( "factory.go", "generic.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers", importpath = "k8s.io/client-go/informers", deps = [ - "//vendor/k8s.io/api/admissionregistration/v1alpha1:go_default_library", - "//vendor/k8s.io/api/admissionregistration/v1beta1:go_default_library", - "//vendor/k8s.io/api/apps/v1:go_default_library", - "//vendor/k8s.io/api/apps/v1beta1:go_default_library", - "//vendor/k8s.io/api/apps/v1beta2:go_default_library", - "//vendor/k8s.io/api/autoscaling/v1:go_default_library", - "//vendor/k8s.io/api/autoscaling/v2beta1:go_default_library", - "//vendor/k8s.io/api/batch/v1:go_default_library", - "//vendor/k8s.io/api/batch/v1beta1:go_default_library", - "//vendor/k8s.io/api/batch/v2alpha1:go_default_library", - "//vendor/k8s.io/api/certificates/v1beta1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/events/v1beta1:go_default_library", - "//vendor/k8s.io/api/extensions/v1beta1:go_default_library", - "//vendor/k8s.io/api/networking/v1:go_default_library", - "//vendor/k8s.io/api/policy/v1beta1:go_default_library", - "//vendor/k8s.io/api/rbac/v1:go_default_library", - "//vendor/k8s.io/api/rbac/v1alpha1:go_default_library", - "//vendor/k8s.io/api/rbac/v1beta1:go_default_library", - "//vendor/k8s.io/api/scheduling/v1alpha1:go_default_library", - "//vendor/k8s.io/api/scheduling/v1beta1:go_default_library", - "//vendor/k8s.io/api/settings/v1alpha1:go_default_library", - "//vendor/k8s.io/api/storage/v1:go_default_library", - "//vendor/k8s.io/api/storage/v1alpha1:go_default_library", - "//vendor/k8s.io/api/storage/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/client-go/informers/admissionregistration:go_default_library", - "//vendor/k8s.io/client-go/informers/apps:go_default_library", - "//vendor/k8s.io/client-go/informers/autoscaling:go_default_library", - "//vendor/k8s.io/client-go/informers/batch:go_default_library", - "//vendor/k8s.io/client-go/informers/certificates:go_default_library", - "//vendor/k8s.io/client-go/informers/core:go_default_library", - "//vendor/k8s.io/client-go/informers/events:go_default_library", - "//vendor/k8s.io/client-go/informers/extensions:go_default_library", - "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", - "//vendor/k8s.io/client-go/informers/networking:go_default_library", - "//vendor/k8s.io/client-go/informers/policy:go_default_library", - "//vendor/k8s.io/client-go/informers/rbac:go_default_library", - "//vendor/k8s.io/client-go/informers/scheduling:go_default_library", - "//vendor/k8s.io/client-go/informers/settings:go_default_library", - "//vendor/k8s.io/client-go/informers/storage:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/admissionregistration/v1alpha1:go_default_library", + "//staging/src/k8s.io/api/admissionregistration/v1beta1:go_default_library", + "//staging/src/k8s.io/api/apps/v1:go_default_library", + "//staging/src/k8s.io/api/apps/v1beta1:go_default_library", + "//staging/src/k8s.io/api/apps/v1beta2:go_default_library", + "//staging/src/k8s.io/api/autoscaling/v1:go_default_library", + "//staging/src/k8s.io/api/autoscaling/v2beta1:go_default_library", + "//staging/src/k8s.io/api/batch/v1:go_default_library", + "//staging/src/k8s.io/api/batch/v1beta1:go_default_library", + "//staging/src/k8s.io/api/batch/v2alpha1:go_default_library", + "//staging/src/k8s.io/api/certificates/v1beta1:go_default_library", + "//staging/src/k8s.io/api/coordination/v1beta1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/events/v1beta1:go_default_library", + "//staging/src/k8s.io/api/extensions/v1beta1:go_default_library", + "//staging/src/k8s.io/api/networking/v1:go_default_library", + "//staging/src/k8s.io/api/policy/v1beta1:go_default_library", + "//staging/src/k8s.io/api/rbac/v1:go_default_library", + "//staging/src/k8s.io/api/rbac/v1alpha1:go_default_library", + "//staging/src/k8s.io/api/rbac/v1beta1:go_default_library", + "//staging/src/k8s.io/api/scheduling/v1alpha1:go_default_library", + "//staging/src/k8s.io/api/scheduling/v1beta1:go_default_library", + "//staging/src/k8s.io/api/settings/v1alpha1:go_default_library", + "//staging/src/k8s.io/api/storage/v1:go_default_library", + "//staging/src/k8s.io/api/storage/v1alpha1:go_default_library", + "//staging/src/k8s.io/api/storage/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/client-go/informers/admissionregistration:go_default_library", + "//staging/src/k8s.io/client-go/informers/apps:go_default_library", + "//staging/src/k8s.io/client-go/informers/autoscaling:go_default_library", + "//staging/src/k8s.io/client-go/informers/batch:go_default_library", + "//staging/src/k8s.io/client-go/informers/certificates:go_default_library", + "//staging/src/k8s.io/client-go/informers/coordination:go_default_library", + "//staging/src/k8s.io/client-go/informers/core:go_default_library", + "//staging/src/k8s.io/client-go/informers/events:go_default_library", + "//staging/src/k8s.io/client-go/informers/extensions:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/informers/networking:go_default_library", + "//staging/src/k8s.io/client-go/informers/policy:go_default_library", + "//staging/src/k8s.io/client-go/informers/rbac:go_default_library", + "//staging/src/k8s.io/client-go/informers/scheduling:go_default_library", + "//staging/src/k8s.io/client-go/informers/settings:go_default_library", + "//staging/src/k8s.io/client-go/informers/storage:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) @@ -77,6 +80,7 @@ filegroup( "//staging/src/k8s.io/client-go/informers/autoscaling:all-srcs", "//staging/src/k8s.io/client-go/informers/batch:all-srcs", "//staging/src/k8s.io/client-go/informers/certificates:all-srcs", + "//staging/src/k8s.io/client-go/informers/coordination:all-srcs", "//staging/src/k8s.io/client-go/informers/core:all-srcs", "//staging/src/k8s.io/client-go/informers/events:all-srcs", "//staging/src/k8s.io/client-go/informers/extensions:all-srcs", diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/admissionregistration/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/admissionregistration/BUILD index 6f93c10a26..133a747864 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/admissionregistration/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/admissionregistration/BUILD @@ -8,11 +8,12 @@ load( go_library( name = "go_default_library", srcs = ["interface.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/admissionregistration", importpath = "k8s.io/client-go/informers/admissionregistration", deps = [ - "//vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1:go_default_library", - "//vendor/k8s.io/client-go/informers/admissionregistration/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/informers/admissionregistration/v1alpha1:go_default_library", + "//staging/src/k8s.io/client-go/informers/admissionregistration/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/BUILD index 7292f8ca2f..cc6eb8d2d2 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/BUILD @@ -6,17 +6,18 @@ go_library( "initializerconfiguration.go", "interface.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1", importpath = "k8s.io/client-go/informers/admissionregistration/v1alpha1", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/api/admissionregistration/v1alpha1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/admissionregistration/v1alpha1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/listers/admissionregistration/v1alpha1:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/initializerconfiguration.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/initializerconfiguration.go index 463ca00e78..4cfaae5bdc 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/initializerconfiguration.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/initializerconfiguration.go @@ -21,7 +21,7 @@ package v1alpha1 import ( time "time" - admissionregistration_v1alpha1 "k8s.io/api/admissionregistration/v1alpha1" + admissionregistrationv1alpha1 "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" @@ -69,7 +69,7 @@ func NewFilteredInitializerConfigurationInformer(client kubernetes.Interface, re return client.AdmissionregistrationV1alpha1().InitializerConfigurations().Watch(options) }, }, - &admissionregistration_v1alpha1.InitializerConfiguration{}, + &admissionregistrationv1alpha1.InitializerConfiguration{}, resyncPeriod, indexers, ) @@ -80,7 +80,7 @@ func (f *initializerConfigurationInformer) defaultInformer(client kubernetes.Int } func (f *initializerConfigurationInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&admissionregistration_v1alpha1.InitializerConfiguration{}, f.defaultInformer) + return f.factory.InformerFor(&admissionregistrationv1alpha1.InitializerConfiguration{}, f.defaultInformer) } func (f *initializerConfigurationInformer) Lister() v1alpha1.InitializerConfigurationLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/admissionregistration/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/admissionregistration/v1beta1/BUILD index e66e6eb440..82ddc15535 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/admissionregistration/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/admissionregistration/v1beta1/BUILD @@ -7,17 +7,18 @@ go_library( "mutatingwebhookconfiguration.go", "validatingwebhookconfiguration.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/admissionregistration/v1beta1", importpath = "k8s.io/client-go/informers/admissionregistration/v1beta1", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/api/admissionregistration/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/listers/admissionregistration/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/admissionregistration/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/listers/admissionregistration/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/admissionregistration/v1beta1/mutatingwebhookconfiguration.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/admissionregistration/v1beta1/mutatingwebhookconfiguration.go index 58f065de2b..a06c406c2c 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/admissionregistration/v1beta1/mutatingwebhookconfiguration.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/admissionregistration/v1beta1/mutatingwebhookconfiguration.go @@ -21,7 +21,7 @@ package v1beta1 import ( time "time" - admissionregistration_v1beta1 "k8s.io/api/admissionregistration/v1beta1" + admissionregistrationv1beta1 "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" @@ -69,7 +69,7 @@ func NewFilteredMutatingWebhookConfigurationInformer(client kubernetes.Interface return client.AdmissionregistrationV1beta1().MutatingWebhookConfigurations().Watch(options) }, }, - &admissionregistration_v1beta1.MutatingWebhookConfiguration{}, + &admissionregistrationv1beta1.MutatingWebhookConfiguration{}, resyncPeriod, indexers, ) @@ -80,7 +80,7 @@ func (f *mutatingWebhookConfigurationInformer) defaultInformer(client kubernetes } func (f *mutatingWebhookConfigurationInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&admissionregistration_v1beta1.MutatingWebhookConfiguration{}, f.defaultInformer) + return f.factory.InformerFor(&admissionregistrationv1beta1.MutatingWebhookConfiguration{}, f.defaultInformer) } func (f *mutatingWebhookConfigurationInformer) Lister() v1beta1.MutatingWebhookConfigurationLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/admissionregistration/v1beta1/validatingwebhookconfiguration.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/admissionregistration/v1beta1/validatingwebhookconfiguration.go index bfa89cef55..3b7fafd29c 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/admissionregistration/v1beta1/validatingwebhookconfiguration.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/admissionregistration/v1beta1/validatingwebhookconfiguration.go @@ -21,7 +21,7 @@ package v1beta1 import ( time "time" - admissionregistration_v1beta1 "k8s.io/api/admissionregistration/v1beta1" + admissionregistrationv1beta1 "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" @@ -69,7 +69,7 @@ func NewFilteredValidatingWebhookConfigurationInformer(client kubernetes.Interfa return client.AdmissionregistrationV1beta1().ValidatingWebhookConfigurations().Watch(options) }, }, - &admissionregistration_v1beta1.ValidatingWebhookConfiguration{}, + &admissionregistrationv1beta1.ValidatingWebhookConfiguration{}, resyncPeriod, indexers, ) @@ -80,7 +80,7 @@ func (f *validatingWebhookConfigurationInformer) defaultInformer(client kubernet } func (f *validatingWebhookConfigurationInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&admissionregistration_v1beta1.ValidatingWebhookConfiguration{}, f.defaultInformer) + return f.factory.InformerFor(&admissionregistrationv1beta1.ValidatingWebhookConfiguration{}, f.defaultInformer) } func (f *validatingWebhookConfigurationInformer) Lister() v1beta1.ValidatingWebhookConfigurationLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/BUILD index 80615b108e..55e563d0fb 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/BUILD @@ -8,12 +8,13 @@ load( go_library( name = "go_default_library", srcs = ["interface.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/apps", importpath = "k8s.io/client-go/informers/apps", deps = [ - "//vendor/k8s.io/client-go/informers/apps/v1:go_default_library", - "//vendor/k8s.io/client-go/informers/apps/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/informers/apps/v1beta2:go_default_library", - "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/informers/apps/v1:go_default_library", + "//staging/src/k8s.io/client-go/informers/apps/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/informers/apps/v1beta2:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1/BUILD index 233e26101d..31aca7c503 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1/BUILD @@ -10,17 +10,18 @@ go_library( "replicaset.go", "statefulset.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/apps/v1", importpath = "k8s.io/client-go/informers/apps/v1", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/api/apps/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/listers/apps/v1:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/apps/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/listers/apps/v1:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1/controllerrevision.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1/controllerrevision.go index 58bf42146c..2f69e0df01 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1/controllerrevision.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1/controllerrevision.go @@ -21,8 +21,8 @@ package v1 import ( time "time" - apps_v1 "k8s.io/api/apps/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + appsv1 "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" @@ -57,20 +57,20 @@ func NewControllerRevisionInformer(client kubernetes.Interface, namespace string func NewFilteredControllerRevisionInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { return cache.NewSharedIndexInformer( &cache.ListWatch{ - ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.AppsV1().ControllerRevisions(namespace).List(options) }, - WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.AppsV1().ControllerRevisions(namespace).Watch(options) }, }, - &apps_v1.ControllerRevision{}, + &appsv1.ControllerRevision{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *controllerRevisionInformer) defaultInformer(client kubernetes.Interface } func (f *controllerRevisionInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&apps_v1.ControllerRevision{}, f.defaultInformer) + return f.factory.InformerFor(&appsv1.ControllerRevision{}, f.defaultInformer) } func (f *controllerRevisionInformer) Lister() v1.ControllerRevisionLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1/daemonset.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1/daemonset.go index 14d890ba3b..db649ccbf2 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1/daemonset.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1/daemonset.go @@ -21,8 +21,8 @@ package v1 import ( time "time" - apps_v1 "k8s.io/api/apps/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + appsv1 "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" @@ -57,20 +57,20 @@ func NewDaemonSetInformer(client kubernetes.Interface, namespace string, resyncP func NewFilteredDaemonSetInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { return cache.NewSharedIndexInformer( &cache.ListWatch{ - ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.AppsV1().DaemonSets(namespace).List(options) }, - WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.AppsV1().DaemonSets(namespace).Watch(options) }, }, - &apps_v1.DaemonSet{}, + &appsv1.DaemonSet{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *daemonSetInformer) defaultInformer(client kubernetes.Interface, resyncP } func (f *daemonSetInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&apps_v1.DaemonSet{}, f.defaultInformer) + return f.factory.InformerFor(&appsv1.DaemonSet{}, f.defaultInformer) } func (f *daemonSetInformer) Lister() v1.DaemonSetLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1/deployment.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1/deployment.go index dd8587508d..71cd002733 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1/deployment.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1/deployment.go @@ -21,8 +21,8 @@ package v1 import ( time "time" - apps_v1 "k8s.io/api/apps/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + appsv1 "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" @@ -57,20 +57,20 @@ func NewDeploymentInformer(client kubernetes.Interface, namespace string, resync func NewFilteredDeploymentInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { return cache.NewSharedIndexInformer( &cache.ListWatch{ - ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.AppsV1().Deployments(namespace).List(options) }, - WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.AppsV1().Deployments(namespace).Watch(options) }, }, - &apps_v1.Deployment{}, + &appsv1.Deployment{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *deploymentInformer) defaultInformer(client kubernetes.Interface, resync } func (f *deploymentInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&apps_v1.Deployment{}, f.defaultInformer) + return f.factory.InformerFor(&appsv1.Deployment{}, f.defaultInformer) } func (f *deploymentInformer) Lister() v1.DeploymentLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1/replicaset.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1/replicaset.go index b1ab1ebe73..6ee7a0537e 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1/replicaset.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1/replicaset.go @@ -21,8 +21,8 @@ package v1 import ( time "time" - apps_v1 "k8s.io/api/apps/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + appsv1 "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" @@ -57,20 +57,20 @@ func NewReplicaSetInformer(client kubernetes.Interface, namespace string, resync func NewFilteredReplicaSetInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { return cache.NewSharedIndexInformer( &cache.ListWatch{ - ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.AppsV1().ReplicaSets(namespace).List(options) }, - WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.AppsV1().ReplicaSets(namespace).Watch(options) }, }, - &apps_v1.ReplicaSet{}, + &appsv1.ReplicaSet{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *replicaSetInformer) defaultInformer(client kubernetes.Interface, resync } func (f *replicaSetInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&apps_v1.ReplicaSet{}, f.defaultInformer) + return f.factory.InformerFor(&appsv1.ReplicaSet{}, f.defaultInformer) } func (f *replicaSetInformer) Lister() v1.ReplicaSetLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1/statefulset.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1/statefulset.go index f488e3b98f..385e653660 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1/statefulset.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1/statefulset.go @@ -21,8 +21,8 @@ package v1 import ( time "time" - apps_v1 "k8s.io/api/apps/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + appsv1 "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" @@ -57,20 +57,20 @@ func NewStatefulSetInformer(client kubernetes.Interface, namespace string, resyn func NewFilteredStatefulSetInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { return cache.NewSharedIndexInformer( &cache.ListWatch{ - ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.AppsV1().StatefulSets(namespace).List(options) }, - WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.AppsV1().StatefulSets(namespace).Watch(options) }, }, - &apps_v1.StatefulSet{}, + &appsv1.StatefulSet{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *statefulSetInformer) defaultInformer(client kubernetes.Interface, resyn } func (f *statefulSetInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&apps_v1.StatefulSet{}, f.defaultInformer) + return f.factory.InformerFor(&appsv1.StatefulSet{}, f.defaultInformer) } func (f *statefulSetInformer) Lister() v1.StatefulSetLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1beta1/BUILD index 80ca939e1a..cd5220b3e1 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1beta1/BUILD @@ -13,16 +13,17 @@ go_library( "interface.go", "statefulset.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/apps/v1beta1", importpath = "k8s.io/client-go/informers/apps/v1beta1", deps = [ - "//vendor/k8s.io/api/apps/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/listers/apps/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/apps/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/listers/apps/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1beta1/controllerrevision.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1beta1/controllerrevision.go index 4283d3822e..c7d3e30e04 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1beta1/controllerrevision.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1beta1/controllerrevision.go @@ -21,7 +21,7 @@ package v1beta1 import ( time "time" - apps_v1beta1 "k8s.io/api/apps/v1beta1" + appsv1beta1 "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" @@ -70,7 +70,7 @@ func NewFilteredControllerRevisionInformer(client kubernetes.Interface, namespac return client.AppsV1beta1().ControllerRevisions(namespace).Watch(options) }, }, - &apps_v1beta1.ControllerRevision{}, + &appsv1beta1.ControllerRevision{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *controllerRevisionInformer) defaultInformer(client kubernetes.Interface } func (f *controllerRevisionInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&apps_v1beta1.ControllerRevision{}, f.defaultInformer) + return f.factory.InformerFor(&appsv1beta1.ControllerRevision{}, f.defaultInformer) } func (f *controllerRevisionInformer) Lister() v1beta1.ControllerRevisionLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1beta1/deployment.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1beta1/deployment.go index 1e7620beb5..03bafca6ba 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1beta1/deployment.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1beta1/deployment.go @@ -21,7 +21,7 @@ package v1beta1 import ( time "time" - apps_v1beta1 "k8s.io/api/apps/v1beta1" + appsv1beta1 "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" @@ -70,7 +70,7 @@ func NewFilteredDeploymentInformer(client kubernetes.Interface, namespace string return client.AppsV1beta1().Deployments(namespace).Watch(options) }, }, - &apps_v1beta1.Deployment{}, + &appsv1beta1.Deployment{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *deploymentInformer) defaultInformer(client kubernetes.Interface, resync } func (f *deploymentInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&apps_v1beta1.Deployment{}, f.defaultInformer) + return f.factory.InformerFor(&appsv1beta1.Deployment{}, f.defaultInformer) } func (f *deploymentInformer) Lister() v1beta1.DeploymentLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1beta1/statefulset.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1beta1/statefulset.go index 94fd0f93c6..e4d1b46fa6 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1beta1/statefulset.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1beta1/statefulset.go @@ -21,7 +21,7 @@ package v1beta1 import ( time "time" - apps_v1beta1 "k8s.io/api/apps/v1beta1" + appsv1beta1 "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" @@ -70,7 +70,7 @@ func NewFilteredStatefulSetInformer(client kubernetes.Interface, namespace strin return client.AppsV1beta1().StatefulSets(namespace).Watch(options) }, }, - &apps_v1beta1.StatefulSet{}, + &appsv1beta1.StatefulSet{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *statefulSetInformer) defaultInformer(client kubernetes.Interface, resyn } func (f *statefulSetInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&apps_v1beta1.StatefulSet{}, f.defaultInformer) + return f.factory.InformerFor(&appsv1beta1.StatefulSet{}, f.defaultInformer) } func (f *statefulSetInformer) Lister() v1beta1.StatefulSetLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1beta2/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1beta2/BUILD index 5b0137bb26..ce5d9adcaa 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1beta2/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1beta2/BUILD @@ -15,16 +15,17 @@ go_library( "replicaset.go", "statefulset.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/apps/v1beta2", importpath = "k8s.io/client-go/informers/apps/v1beta2", deps = [ - "//vendor/k8s.io/api/apps/v1beta2:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/listers/apps/v1beta2:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/apps/v1beta2:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/listers/apps/v1beta2:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1beta2/controllerrevision.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1beta2/controllerrevision.go index 28e241b180..975e81077e 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1beta2/controllerrevision.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1beta2/controllerrevision.go @@ -21,7 +21,7 @@ package v1beta2 import ( time "time" - apps_v1beta2 "k8s.io/api/apps/v1beta2" + appsv1beta2 "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" @@ -70,7 +70,7 @@ func NewFilteredControllerRevisionInformer(client kubernetes.Interface, namespac return client.AppsV1beta2().ControllerRevisions(namespace).Watch(options) }, }, - &apps_v1beta2.ControllerRevision{}, + &appsv1beta2.ControllerRevision{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *controllerRevisionInformer) defaultInformer(client kubernetes.Interface } func (f *controllerRevisionInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&apps_v1beta2.ControllerRevision{}, f.defaultInformer) + return f.factory.InformerFor(&appsv1beta2.ControllerRevision{}, f.defaultInformer) } func (f *controllerRevisionInformer) Lister() v1beta2.ControllerRevisionLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1beta2/daemonset.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1beta2/daemonset.go index bb25a19455..99f17fa6c4 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1beta2/daemonset.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1beta2/daemonset.go @@ -21,7 +21,7 @@ package v1beta2 import ( time "time" - apps_v1beta2 "k8s.io/api/apps/v1beta2" + appsv1beta2 "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" @@ -70,7 +70,7 @@ func NewFilteredDaemonSetInformer(client kubernetes.Interface, namespace string, return client.AppsV1beta2().DaemonSets(namespace).Watch(options) }, }, - &apps_v1beta2.DaemonSet{}, + &appsv1beta2.DaemonSet{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *daemonSetInformer) defaultInformer(client kubernetes.Interface, resyncP } func (f *daemonSetInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&apps_v1beta2.DaemonSet{}, f.defaultInformer) + return f.factory.InformerFor(&appsv1beta2.DaemonSet{}, f.defaultInformer) } func (f *daemonSetInformer) Lister() v1beta2.DaemonSetLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1beta2/deployment.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1beta2/deployment.go index 457ca30a1b..b25da82bde 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1beta2/deployment.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1beta2/deployment.go @@ -21,7 +21,7 @@ package v1beta2 import ( time "time" - apps_v1beta2 "k8s.io/api/apps/v1beta2" + appsv1beta2 "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" @@ -70,7 +70,7 @@ func NewFilteredDeploymentInformer(client kubernetes.Interface, namespace string return client.AppsV1beta2().Deployments(namespace).Watch(options) }, }, - &apps_v1beta2.Deployment{}, + &appsv1beta2.Deployment{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *deploymentInformer) defaultInformer(client kubernetes.Interface, resync } func (f *deploymentInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&apps_v1beta2.Deployment{}, f.defaultInformer) + return f.factory.InformerFor(&appsv1beta2.Deployment{}, f.defaultInformer) } func (f *deploymentInformer) Lister() v1beta2.DeploymentLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1beta2/replicaset.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1beta2/replicaset.go index 1558c14162..6ce7fcfd0d 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1beta2/replicaset.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1beta2/replicaset.go @@ -21,7 +21,7 @@ package v1beta2 import ( time "time" - apps_v1beta2 "k8s.io/api/apps/v1beta2" + appsv1beta2 "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" @@ -70,7 +70,7 @@ func NewFilteredReplicaSetInformer(client kubernetes.Interface, namespace string return client.AppsV1beta2().ReplicaSets(namespace).Watch(options) }, }, - &apps_v1beta2.ReplicaSet{}, + &appsv1beta2.ReplicaSet{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *replicaSetInformer) defaultInformer(client kubernetes.Interface, resync } func (f *replicaSetInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&apps_v1beta2.ReplicaSet{}, f.defaultInformer) + return f.factory.InformerFor(&appsv1beta2.ReplicaSet{}, f.defaultInformer) } func (f *replicaSetInformer) Lister() v1beta2.ReplicaSetLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1beta2/statefulset.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1beta2/statefulset.go index ae929d6566..e77bb2f8fd 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1beta2/statefulset.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/apps/v1beta2/statefulset.go @@ -21,7 +21,7 @@ package v1beta2 import ( time "time" - apps_v1beta2 "k8s.io/api/apps/v1beta2" + appsv1beta2 "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" @@ -70,7 +70,7 @@ func NewFilteredStatefulSetInformer(client kubernetes.Interface, namespace strin return client.AppsV1beta2().StatefulSets(namespace).Watch(options) }, }, - &apps_v1beta2.StatefulSet{}, + &appsv1beta2.StatefulSet{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *statefulSetInformer) defaultInformer(client kubernetes.Interface, resyn } func (f *statefulSetInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&apps_v1beta2.StatefulSet{}, f.defaultInformer) + return f.factory.InformerFor(&appsv1beta2.StatefulSet{}, f.defaultInformer) } func (f *statefulSetInformer) Lister() v1beta2.StatefulSetLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/autoscaling/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/autoscaling/BUILD index 7ad9e975e8..b9d272f350 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/autoscaling/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/autoscaling/BUILD @@ -3,12 +3,13 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( name = "go_default_library", srcs = ["interface.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/autoscaling", importpath = "k8s.io/client-go/informers/autoscaling", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/client-go/informers/autoscaling/v1:go_default_library", - "//vendor/k8s.io/client-go/informers/autoscaling/v2beta1:go_default_library", - "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/informers/autoscaling/v1:go_default_library", + "//staging/src/k8s.io/client-go/informers/autoscaling/v2beta1:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/autoscaling/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/autoscaling/v1/BUILD index 5c3ba46bc9..4a8e4d7fe0 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/autoscaling/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/autoscaling/v1/BUILD @@ -6,17 +6,18 @@ go_library( "horizontalpodautoscaler.go", "interface.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/autoscaling/v1", importpath = "k8s.io/client-go/informers/autoscaling/v1", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/api/autoscaling/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/listers/autoscaling/v1:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/autoscaling/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/listers/autoscaling/v1:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/autoscaling/v1/horizontalpodautoscaler.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/autoscaling/v1/horizontalpodautoscaler.go index 71991b7f5a..205e4ecd79 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/autoscaling/v1/horizontalpodautoscaler.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/autoscaling/v1/horizontalpodautoscaler.go @@ -21,8 +21,8 @@ package v1 import ( time "time" - autoscaling_v1 "k8s.io/api/autoscaling/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + autoscalingv1 "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" @@ -57,20 +57,20 @@ func NewHorizontalPodAutoscalerInformer(client kubernetes.Interface, namespace s func NewFilteredHorizontalPodAutoscalerInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { return cache.NewSharedIndexInformer( &cache.ListWatch{ - ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.AutoscalingV1().HorizontalPodAutoscalers(namespace).List(options) }, - WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.AutoscalingV1().HorizontalPodAutoscalers(namespace).Watch(options) }, }, - &autoscaling_v1.HorizontalPodAutoscaler{}, + &autoscalingv1.HorizontalPodAutoscaler{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *horizontalPodAutoscalerInformer) defaultInformer(client kubernetes.Inte } func (f *horizontalPodAutoscalerInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&autoscaling_v1.HorizontalPodAutoscaler{}, f.defaultInformer) + return f.factory.InformerFor(&autoscalingv1.HorizontalPodAutoscaler{}, f.defaultInformer) } func (f *horizontalPodAutoscalerInformer) Lister() v1.HorizontalPodAutoscalerLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/autoscaling/v2beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/autoscaling/v2beta1/BUILD index 3439a4ed2b..5780004190 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/autoscaling/v2beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/autoscaling/v2beta1/BUILD @@ -6,17 +6,18 @@ go_library( "horizontalpodautoscaler.go", "interface.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/autoscaling/v2beta1", importpath = "k8s.io/client-go/informers/autoscaling/v2beta1", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/api/autoscaling/v2beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/listers/autoscaling/v2beta1:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/autoscaling/v2beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/listers/autoscaling/v2beta1:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/autoscaling/v2beta1/horizontalpodautoscaler.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/autoscaling/v2beta1/horizontalpodautoscaler.go index 1546eb9b5f..4627c5a0b5 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/autoscaling/v2beta1/horizontalpodautoscaler.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/autoscaling/v2beta1/horizontalpodautoscaler.go @@ -21,7 +21,7 @@ package v2beta1 import ( time "time" - autoscaling_v2beta1 "k8s.io/api/autoscaling/v2beta1" + autoscalingv2beta1 "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" @@ -70,7 +70,7 @@ func NewFilteredHorizontalPodAutoscalerInformer(client kubernetes.Interface, nam return client.AutoscalingV2beta1().HorizontalPodAutoscalers(namespace).Watch(options) }, }, - &autoscaling_v2beta1.HorizontalPodAutoscaler{}, + &autoscalingv2beta1.HorizontalPodAutoscaler{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *horizontalPodAutoscalerInformer) defaultInformer(client kubernetes.Inte } func (f *horizontalPodAutoscalerInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&autoscaling_v2beta1.HorizontalPodAutoscaler{}, f.defaultInformer) + return f.factory.InformerFor(&autoscalingv2beta1.HorizontalPodAutoscaler{}, f.defaultInformer) } func (f *horizontalPodAutoscalerInformer) Lister() v2beta1.HorizontalPodAutoscalerLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/batch/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/batch/BUILD index 9199107c7e..3d461ecacd 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/batch/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/batch/BUILD @@ -8,12 +8,13 @@ load( go_library( name = "go_default_library", srcs = ["interface.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/batch", importpath = "k8s.io/client-go/informers/batch", deps = [ - "//vendor/k8s.io/client-go/informers/batch/v1:go_default_library", - "//vendor/k8s.io/client-go/informers/batch/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/informers/batch/v2alpha1:go_default_library", - "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/informers/batch/v1:go_default_library", + "//staging/src/k8s.io/client-go/informers/batch/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/informers/batch/v2alpha1:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/batch/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/batch/v1/BUILD index ed48254884..64b28c5452 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/batch/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/batch/v1/BUILD @@ -11,16 +11,17 @@ go_library( "interface.go", "job.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/batch/v1", importpath = "k8s.io/client-go/informers/batch/v1", deps = [ - "//vendor/k8s.io/api/batch/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/listers/batch/v1:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/batch/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/listers/batch/v1:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/batch/v1/job.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/batch/v1/job.go index 6be8a025e2..30d41104ad 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/batch/v1/job.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/batch/v1/job.go @@ -21,8 +21,8 @@ package v1 import ( time "time" - batch_v1 "k8s.io/api/batch/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + batchv1 "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" @@ -57,20 +57,20 @@ func NewJobInformer(client kubernetes.Interface, namespace string, resyncPeriod func NewFilteredJobInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { return cache.NewSharedIndexInformer( &cache.ListWatch{ - ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.BatchV1().Jobs(namespace).List(options) }, - WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.BatchV1().Jobs(namespace).Watch(options) }, }, - &batch_v1.Job{}, + &batchv1.Job{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *jobInformer) defaultInformer(client kubernetes.Interface, resyncPeriod } func (f *jobInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&batch_v1.Job{}, f.defaultInformer) + return f.factory.InformerFor(&batchv1.Job{}, f.defaultInformer) } func (f *jobInformer) Lister() v1.JobLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/batch/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/batch/v1beta1/BUILD index 20f4ac3c48..b7bde8807d 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/batch/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/batch/v1beta1/BUILD @@ -11,16 +11,17 @@ go_library( "cronjob.go", "interface.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/batch/v1beta1", importpath = "k8s.io/client-go/informers/batch/v1beta1", deps = [ - "//vendor/k8s.io/api/batch/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/listers/batch/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/batch/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/listers/batch/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/batch/v1beta1/cronjob.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/batch/v1beta1/cronjob.go index 3ace601098..0b7598e0f8 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/batch/v1beta1/cronjob.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/batch/v1beta1/cronjob.go @@ -21,7 +21,7 @@ package v1beta1 import ( time "time" - batch_v1beta1 "k8s.io/api/batch/v1beta1" + batchv1beta1 "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" @@ -70,7 +70,7 @@ func NewFilteredCronJobInformer(client kubernetes.Interface, namespace string, r return client.BatchV1beta1().CronJobs(namespace).Watch(options) }, }, - &batch_v1beta1.CronJob{}, + &batchv1beta1.CronJob{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *cronJobInformer) defaultInformer(client kubernetes.Interface, resyncPer } func (f *cronJobInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&batch_v1beta1.CronJob{}, f.defaultInformer) + return f.factory.InformerFor(&batchv1beta1.CronJob{}, f.defaultInformer) } func (f *cronJobInformer) Lister() v1beta1.CronJobLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/batch/v2alpha1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/batch/v2alpha1/BUILD index 4684ca4b49..0ff45d9e0e 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/batch/v2alpha1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/batch/v2alpha1/BUILD @@ -11,16 +11,17 @@ go_library( "cronjob.go", "interface.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/batch/v2alpha1", importpath = "k8s.io/client-go/informers/batch/v2alpha1", deps = [ - "//vendor/k8s.io/api/batch/v2alpha1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/listers/batch/v2alpha1:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/batch/v2alpha1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/listers/batch/v2alpha1:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/batch/v2alpha1/cronjob.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/batch/v2alpha1/cronjob.go index 6608e46142..20cf7d498d 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/batch/v2alpha1/cronjob.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/batch/v2alpha1/cronjob.go @@ -21,7 +21,7 @@ package v2alpha1 import ( time "time" - batch_v2alpha1 "k8s.io/api/batch/v2alpha1" + batchv2alpha1 "k8s.io/api/batch/v2alpha1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtime "k8s.io/apimachinery/pkg/runtime" watch "k8s.io/apimachinery/pkg/watch" @@ -70,7 +70,7 @@ func NewFilteredCronJobInformer(client kubernetes.Interface, namespace string, r return client.BatchV2alpha1().CronJobs(namespace).Watch(options) }, }, - &batch_v2alpha1.CronJob{}, + &batchv2alpha1.CronJob{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *cronJobInformer) defaultInformer(client kubernetes.Interface, resyncPer } func (f *cronJobInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&batch_v2alpha1.CronJob{}, f.defaultInformer) + return f.factory.InformerFor(&batchv2alpha1.CronJob{}, f.defaultInformer) } func (f *cronJobInformer) Lister() v2alpha1.CronJobLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/certificates/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/certificates/BUILD index bbe39da8b7..291f56a0f0 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/certificates/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/certificates/BUILD @@ -8,10 +8,11 @@ load( go_library( name = "go_default_library", srcs = ["interface.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/certificates", importpath = "k8s.io/client-go/informers/certificates", deps = [ - "//vendor/k8s.io/client-go/informers/certificates/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/informers/certificates/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/certificates/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/certificates/v1beta1/BUILD index d8ada3891e..3f464ec0e3 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/certificates/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/certificates/v1beta1/BUILD @@ -11,16 +11,17 @@ go_library( "certificatesigningrequest.go", "interface.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/certificates/v1beta1", importpath = "k8s.io/client-go/informers/certificates/v1beta1", deps = [ - "//vendor/k8s.io/api/certificates/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/listers/certificates/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/certificates/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/listers/certificates/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/certificates/v1beta1/certificatesigningrequest.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/certificates/v1beta1/certificatesigningrequest.go index b442ff7882..6472d20e29 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/certificates/v1beta1/certificatesigningrequest.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/certificates/v1beta1/certificatesigningrequest.go @@ -21,7 +21,7 @@ package v1beta1 import ( time "time" - certificates_v1beta1 "k8s.io/api/certificates/v1beta1" + certificatesv1beta1 "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" @@ -69,7 +69,7 @@ func NewFilteredCertificateSigningRequestInformer(client kubernetes.Interface, r return client.CertificatesV1beta1().CertificateSigningRequests().Watch(options) }, }, - &certificates_v1beta1.CertificateSigningRequest{}, + &certificatesv1beta1.CertificateSigningRequest{}, resyncPeriod, indexers, ) @@ -80,7 +80,7 @@ func (f *certificateSigningRequestInformer) defaultInformer(client kubernetes.In } func (f *certificateSigningRequestInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&certificates_v1beta1.CertificateSigningRequest{}, f.defaultInformer) + return f.factory.InformerFor(&certificatesv1beta1.CertificateSigningRequest{}, f.defaultInformer) } func (f *certificateSigningRequestInformer) Lister() v1beta1.CertificateSigningRequestLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/coordination/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/coordination/BUILD new file mode 100644 index 0000000000..014cb3e098 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/coordination/BUILD @@ -0,0 +1,30 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = ["interface.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/coordination", + importpath = "k8s.io/client-go/informers/coordination", + visibility = ["//visibility:public"], + deps = [ + "//staging/src/k8s.io/client-go/informers/coordination/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [ + ":package-srcs", + "//staging/src/k8s.io/client-go/informers/coordination/v1beta1:all-srcs", + ], + tags = ["automanaged"], + visibility = ["//visibility:public"], +) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/coordination/interface.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/coordination/interface.go new file mode 100644 index 0000000000..8e541d80d4 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/coordination/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 coordination + +import ( + v1beta1 "k8s.io/client-go/informers/coordination/v1beta1" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" +) + +// Interface provides access to each of this group's versions. +type Interface interface { + // V1beta1 provides access to shared informers for resources in V1beta1. + V1beta1() v1beta1.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} +} + +// V1beta1 returns a new v1beta1.Interface. +func (g *group) V1beta1() v1beta1.Interface { + return v1beta1.New(g.factory, g.namespace, g.tweakListOptions) +} diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/coordination/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/coordination/v1beta1/BUILD new file mode 100644 index 0000000000..22d27614f1 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/coordination/v1beta1/BUILD @@ -0,0 +1,36 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = [ + "interface.go", + "lease.go", + ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/coordination/v1beta1", + importpath = "k8s.io/client-go/informers/coordination/v1beta1", + visibility = ["//visibility:public"], + deps = [ + "//staging/src/k8s.io/api/coordination/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/listers/coordination/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], + visibility = ["//visibility:public"], +) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/coordination/v1beta1/interface.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/coordination/v1beta1/interface.go new file mode 100644 index 0000000000..360266206c --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/coordination/v1beta1/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 v1beta1 + +import ( + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" +) + +// Interface provides access to all the informers in this group version. +type Interface interface { + // Leases returns a LeaseInformer. + Leases() LeaseInformer +} + +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} +} + +// Leases returns a LeaseInformer. +func (v *version) Leases() LeaseInformer { + return &leaseInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions} +} diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/coordination/v1beta1/lease.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/coordination/v1beta1/lease.go new file mode 100644 index 0000000000..bb59be13e1 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/coordination/v1beta1/lease.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 ( + time "time" + + coordinationv1beta1 "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" + cache "k8s.io/client-go/tools/cache" +) + +// LeaseInformer provides access to a shared informer and lister for +// Leases. +type LeaseInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1beta1.LeaseLister +} + +type leaseInformer struct { + factory internalinterfaces.SharedInformerFactory + tweakListOptions internalinterfaces.TweakListOptionsFunc + namespace string +} + +// NewLeaseInformer constructs a new informer for Lease 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 NewLeaseInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer { + return NewFilteredLeaseInformer(client, namespace, resyncPeriod, indexers, nil) +} + +// NewFilteredLeaseInformer constructs a new informer for Lease 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 NewFilteredLeaseInformer(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.CoordinationV1beta1().Leases(namespace).List(options) + }, + WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { + if tweakListOptions != nil { + tweakListOptions(&options) + } + return client.CoordinationV1beta1().Leases(namespace).Watch(options) + }, + }, + &coordinationv1beta1.Lease{}, + resyncPeriod, + indexers, + ) +} + +func (f *leaseInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + return NewFilteredLeaseInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions) +} + +func (f *leaseInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&coordinationv1beta1.Lease{}, f.defaultInformer) +} + +func (f *leaseInformer) Lister() v1beta1.LeaseLister { + return v1beta1.NewLeaseLister(f.Informer().GetIndexer()) +} diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/BUILD index 6945899090..d72514d944 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/BUILD @@ -8,10 +8,11 @@ load( go_library( name = "go_default_library", srcs = ["interface.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/core", importpath = "k8s.io/client-go/informers/core", deps = [ - "//vendor/k8s.io/client-go/informers/core/v1:go_default_library", - "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/informers/core/v1:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/BUILD index 1d459c5db7..6fb6c75f7e 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/BUILD @@ -26,16 +26,17 @@ go_library( "service.go", "serviceaccount.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/core/v1", importpath = "k8s.io/client-go/informers/core/v1", deps = [ - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/listers/core/v1:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/listers/core/v1:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/componentstatus.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/componentstatus.go index cc60d480f4..a5ae6fc496 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/componentstatus.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/componentstatus.go @@ -21,8 +21,8 @@ package v1 import ( time "time" - core_v1 "k8s.io/api/core/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + corev1 "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" @@ -56,20 +56,20 @@ func NewComponentStatusInformer(client kubernetes.Interface, resyncPeriod time.D func NewFilteredComponentStatusInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { return cache.NewSharedIndexInformer( &cache.ListWatch{ - ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.CoreV1().ComponentStatuses().List(options) }, - WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.CoreV1().ComponentStatuses().Watch(options) }, }, - &core_v1.ComponentStatus{}, + &corev1.ComponentStatus{}, resyncPeriod, indexers, ) @@ -80,7 +80,7 @@ func (f *componentStatusInformer) defaultInformer(client kubernetes.Interface, r } func (f *componentStatusInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&core_v1.ComponentStatus{}, f.defaultInformer) + return f.factory.InformerFor(&corev1.ComponentStatus{}, f.defaultInformer) } func (f *componentStatusInformer) Lister() v1.ComponentStatusLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/configmap.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/configmap.go index ebd86c2d8e..48cb1a48e4 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/configmap.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/configmap.go @@ -21,8 +21,8 @@ package v1 import ( time "time" - core_v1 "k8s.io/api/core/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + corev1 "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" @@ -57,20 +57,20 @@ func NewConfigMapInformer(client kubernetes.Interface, namespace string, resyncP func NewFilteredConfigMapInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { return cache.NewSharedIndexInformer( &cache.ListWatch{ - ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.CoreV1().ConfigMaps(namespace).List(options) }, - WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.CoreV1().ConfigMaps(namespace).Watch(options) }, }, - &core_v1.ConfigMap{}, + &corev1.ConfigMap{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *configMapInformer) defaultInformer(client kubernetes.Interface, resyncP } func (f *configMapInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&core_v1.ConfigMap{}, f.defaultInformer) + return f.factory.InformerFor(&corev1.ConfigMap{}, f.defaultInformer) } func (f *configMapInformer) Lister() v1.ConfigMapLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/endpoints.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/endpoints.go index b7362d0808..77fa8cf8a0 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/endpoints.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/endpoints.go @@ -21,8 +21,8 @@ package v1 import ( time "time" - core_v1 "k8s.io/api/core/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + corev1 "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" @@ -57,20 +57,20 @@ func NewEndpointsInformer(client kubernetes.Interface, namespace string, resyncP func NewFilteredEndpointsInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { return cache.NewSharedIndexInformer( &cache.ListWatch{ - ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.CoreV1().Endpoints(namespace).List(options) }, - WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.CoreV1().Endpoints(namespace).Watch(options) }, }, - &core_v1.Endpoints{}, + &corev1.Endpoints{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *endpointsInformer) defaultInformer(client kubernetes.Interface, resyncP } func (f *endpointsInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&core_v1.Endpoints{}, f.defaultInformer) + return f.factory.InformerFor(&corev1.Endpoints{}, f.defaultInformer) } func (f *endpointsInformer) Lister() v1.EndpointsLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/event.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/event.go index 905db2dba8..52f4911c1d 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/event.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/event.go @@ -21,8 +21,8 @@ package v1 import ( time "time" - core_v1 "k8s.io/api/core/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + corev1 "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" @@ -57,20 +57,20 @@ func NewEventInformer(client kubernetes.Interface, namespace string, resyncPerio func NewFilteredEventInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { return cache.NewSharedIndexInformer( &cache.ListWatch{ - ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.CoreV1().Events(namespace).List(options) }, - WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.CoreV1().Events(namespace).Watch(options) }, }, - &core_v1.Event{}, + &corev1.Event{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *eventInformer) defaultInformer(client kubernetes.Interface, resyncPerio } func (f *eventInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&core_v1.Event{}, f.defaultInformer) + return f.factory.InformerFor(&corev1.Event{}, f.defaultInformer) } func (f *eventInformer) Lister() v1.EventLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/limitrange.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/limitrange.go index 39d0340df5..7499e1869d 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/limitrange.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/limitrange.go @@ -21,8 +21,8 @@ package v1 import ( time "time" - core_v1 "k8s.io/api/core/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + corev1 "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" @@ -57,20 +57,20 @@ func NewLimitRangeInformer(client kubernetes.Interface, namespace string, resync func NewFilteredLimitRangeInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { return cache.NewSharedIndexInformer( &cache.ListWatch{ - ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.CoreV1().LimitRanges(namespace).List(options) }, - WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.CoreV1().LimitRanges(namespace).Watch(options) }, }, - &core_v1.LimitRange{}, + &corev1.LimitRange{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *limitRangeInformer) defaultInformer(client kubernetes.Interface, resync } func (f *limitRangeInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&core_v1.LimitRange{}, f.defaultInformer) + return f.factory.InformerFor(&corev1.LimitRange{}, f.defaultInformer) } func (f *limitRangeInformer) Lister() v1.LimitRangeLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/namespace.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/namespace.go index 5830c88f5f..57a073355a 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/namespace.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/namespace.go @@ -21,8 +21,8 @@ package v1 import ( time "time" - core_v1 "k8s.io/api/core/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + corev1 "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" @@ -56,20 +56,20 @@ func NewNamespaceInformer(client kubernetes.Interface, resyncPeriod time.Duratio func NewFilteredNamespaceInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { return cache.NewSharedIndexInformer( &cache.ListWatch{ - ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.CoreV1().Namespaces().List(options) }, - WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.CoreV1().Namespaces().Watch(options) }, }, - &core_v1.Namespace{}, + &corev1.Namespace{}, resyncPeriod, indexers, ) @@ -80,7 +80,7 @@ func (f *namespaceInformer) defaultInformer(client kubernetes.Interface, resyncP } func (f *namespaceInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&core_v1.Namespace{}, f.defaultInformer) + return f.factory.InformerFor(&corev1.Namespace{}, f.defaultInformer) } func (f *namespaceInformer) Lister() v1.NamespaceLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/node.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/node.go index 202cb3b7bf..d9b85f83c2 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/node.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/node.go @@ -21,8 +21,8 @@ package v1 import ( time "time" - core_v1 "k8s.io/api/core/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + corev1 "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" @@ -56,20 +56,20 @@ func NewNodeInformer(client kubernetes.Interface, resyncPeriod time.Duration, in func NewFilteredNodeInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { return cache.NewSharedIndexInformer( &cache.ListWatch{ - ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.CoreV1().Nodes().List(options) }, - WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.CoreV1().Nodes().Watch(options) }, }, - &core_v1.Node{}, + &corev1.Node{}, resyncPeriod, indexers, ) @@ -80,7 +80,7 @@ func (f *nodeInformer) defaultInformer(client kubernetes.Interface, resyncPeriod } func (f *nodeInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&core_v1.Node{}, f.defaultInformer) + return f.factory.InformerFor(&corev1.Node{}, f.defaultInformer) } func (f *nodeInformer) Lister() v1.NodeLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/persistentvolume.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/persistentvolume.go index 3f9af92a38..a50bcfc663 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/persistentvolume.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/persistentvolume.go @@ -21,8 +21,8 @@ package v1 import ( time "time" - core_v1 "k8s.io/api/core/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + corev1 "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" @@ -56,20 +56,20 @@ func NewPersistentVolumeInformer(client kubernetes.Interface, resyncPeriod time. func NewFilteredPersistentVolumeInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { return cache.NewSharedIndexInformer( &cache.ListWatch{ - ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.CoreV1().PersistentVolumes().List(options) }, - WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.CoreV1().PersistentVolumes().Watch(options) }, }, - &core_v1.PersistentVolume{}, + &corev1.PersistentVolume{}, resyncPeriod, indexers, ) @@ -80,7 +80,7 @@ func (f *persistentVolumeInformer) defaultInformer(client kubernetes.Interface, } func (f *persistentVolumeInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&core_v1.PersistentVolume{}, f.defaultInformer) + return f.factory.InformerFor(&corev1.PersistentVolume{}, f.defaultInformer) } func (f *persistentVolumeInformer) Lister() v1.PersistentVolumeLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/persistentvolumeclaim.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/persistentvolumeclaim.go index b4946e8492..3fb5e5f6cc 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/persistentvolumeclaim.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/persistentvolumeclaim.go @@ -21,8 +21,8 @@ package v1 import ( time "time" - core_v1 "k8s.io/api/core/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + corev1 "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" @@ -57,20 +57,20 @@ func NewPersistentVolumeClaimInformer(client kubernetes.Interface, namespace str func NewFilteredPersistentVolumeClaimInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { return cache.NewSharedIndexInformer( &cache.ListWatch{ - ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.CoreV1().PersistentVolumeClaims(namespace).List(options) }, - WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.CoreV1().PersistentVolumeClaims(namespace).Watch(options) }, }, - &core_v1.PersistentVolumeClaim{}, + &corev1.PersistentVolumeClaim{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *persistentVolumeClaimInformer) defaultInformer(client kubernetes.Interf } func (f *persistentVolumeClaimInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&core_v1.PersistentVolumeClaim{}, f.defaultInformer) + return f.factory.InformerFor(&corev1.PersistentVolumeClaim{}, f.defaultInformer) } func (f *persistentVolumeClaimInformer) Lister() v1.PersistentVolumeClaimLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/pod.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/pod.go index e964d5812e..57aadd9458 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/pod.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/pod.go @@ -21,8 +21,8 @@ package v1 import ( time "time" - core_v1 "k8s.io/api/core/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + corev1 "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" @@ -57,20 +57,20 @@ func NewPodInformer(client kubernetes.Interface, namespace string, resyncPeriod func NewFilteredPodInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { return cache.NewSharedIndexInformer( &cache.ListWatch{ - ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.CoreV1().Pods(namespace).List(options) }, - WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.CoreV1().Pods(namespace).Watch(options) }, }, - &core_v1.Pod{}, + &corev1.Pod{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *podInformer) defaultInformer(client kubernetes.Interface, resyncPeriod } func (f *podInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&core_v1.Pod{}, f.defaultInformer) + return f.factory.InformerFor(&corev1.Pod{}, f.defaultInformer) } func (f *podInformer) Lister() v1.PodLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/podtemplate.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/podtemplate.go index 542fd032e4..ff47094fb8 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/podtemplate.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/podtemplate.go @@ -21,8 +21,8 @@ package v1 import ( time "time" - core_v1 "k8s.io/api/core/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + corev1 "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" @@ -57,20 +57,20 @@ func NewPodTemplateInformer(client kubernetes.Interface, namespace string, resyn func NewFilteredPodTemplateInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { return cache.NewSharedIndexInformer( &cache.ListWatch{ - ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.CoreV1().PodTemplates(namespace).List(options) }, - WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.CoreV1().PodTemplates(namespace).Watch(options) }, }, - &core_v1.PodTemplate{}, + &corev1.PodTemplate{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *podTemplateInformer) defaultInformer(client kubernetes.Interface, resyn } func (f *podTemplateInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&core_v1.PodTemplate{}, f.defaultInformer) + return f.factory.InformerFor(&corev1.PodTemplate{}, f.defaultInformer) } func (f *podTemplateInformer) Lister() v1.PodTemplateLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/replicationcontroller.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/replicationcontroller.go index c5c009b075..903fe3fbad 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/replicationcontroller.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/replicationcontroller.go @@ -21,8 +21,8 @@ package v1 import ( time "time" - core_v1 "k8s.io/api/core/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + corev1 "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" @@ -57,20 +57,20 @@ func NewReplicationControllerInformer(client kubernetes.Interface, namespace str func NewFilteredReplicationControllerInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { return cache.NewSharedIndexInformer( &cache.ListWatch{ - ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.CoreV1().ReplicationControllers(namespace).List(options) }, - WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.CoreV1().ReplicationControllers(namespace).Watch(options) }, }, - &core_v1.ReplicationController{}, + &corev1.ReplicationController{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *replicationControllerInformer) defaultInformer(client kubernetes.Interf } func (f *replicationControllerInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&core_v1.ReplicationController{}, f.defaultInformer) + return f.factory.InformerFor(&corev1.ReplicationController{}, f.defaultInformer) } func (f *replicationControllerInformer) Lister() v1.ReplicationControllerLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/resourcequota.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/resourcequota.go index 85ea9098b0..27ae53ccb4 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/resourcequota.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/resourcequota.go @@ -21,8 +21,8 @@ package v1 import ( time "time" - core_v1 "k8s.io/api/core/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + corev1 "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" @@ -57,20 +57,20 @@ func NewResourceQuotaInformer(client kubernetes.Interface, namespace string, res func NewFilteredResourceQuotaInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { return cache.NewSharedIndexInformer( &cache.ListWatch{ - ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.CoreV1().ResourceQuotas(namespace).List(options) }, - WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.CoreV1().ResourceQuotas(namespace).Watch(options) }, }, - &core_v1.ResourceQuota{}, + &corev1.ResourceQuota{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *resourceQuotaInformer) defaultInformer(client kubernetes.Interface, res } func (f *resourceQuotaInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&core_v1.ResourceQuota{}, f.defaultInformer) + return f.factory.InformerFor(&corev1.ResourceQuota{}, f.defaultInformer) } func (f *resourceQuotaInformer) Lister() v1.ResourceQuotaLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/secret.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/secret.go index 6c0c5a8471..e13776b2b1 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/secret.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/secret.go @@ -21,8 +21,8 @@ package v1 import ( time "time" - core_v1 "k8s.io/api/core/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + corev1 "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" @@ -57,20 +57,20 @@ func NewSecretInformer(client kubernetes.Interface, namespace string, resyncPeri func NewFilteredSecretInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { return cache.NewSharedIndexInformer( &cache.ListWatch{ - ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.CoreV1().Secrets(namespace).List(options) }, - WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.CoreV1().Secrets(namespace).Watch(options) }, }, - &core_v1.Secret{}, + &corev1.Secret{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *secretInformer) defaultInformer(client kubernetes.Interface, resyncPeri } func (f *secretInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&core_v1.Secret{}, f.defaultInformer) + return f.factory.InformerFor(&corev1.Secret{}, f.defaultInformer) } func (f *secretInformer) Lister() v1.SecretLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/service.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/service.go index c2bb802504..1c758668c4 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/service.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/service.go @@ -21,8 +21,8 @@ package v1 import ( time "time" - core_v1 "k8s.io/api/core/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + corev1 "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" @@ -57,20 +57,20 @@ func NewServiceInformer(client kubernetes.Interface, namespace string, resyncPer func NewFilteredServiceInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { return cache.NewSharedIndexInformer( &cache.ListWatch{ - ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.CoreV1().Services(namespace).List(options) }, - WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.CoreV1().Services(namespace).Watch(options) }, }, - &core_v1.Service{}, + &corev1.Service{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *serviceInformer) defaultInformer(client kubernetes.Interface, resyncPer } func (f *serviceInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&core_v1.Service{}, f.defaultInformer) + return f.factory.InformerFor(&corev1.Service{}, f.defaultInformer) } func (f *serviceInformer) Lister() v1.ServiceLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/serviceaccount.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/serviceaccount.go index 2d0b94a63c..c701b8f1e6 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/serviceaccount.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/core/v1/serviceaccount.go @@ -21,8 +21,8 @@ package v1 import ( time "time" - core_v1 "k8s.io/api/core/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + corev1 "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" @@ -57,20 +57,20 @@ func NewServiceAccountInformer(client kubernetes.Interface, namespace string, re func NewFilteredServiceAccountInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { return cache.NewSharedIndexInformer( &cache.ListWatch{ - ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.CoreV1().ServiceAccounts(namespace).List(options) }, - WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.CoreV1().ServiceAccounts(namespace).Watch(options) }, }, - &core_v1.ServiceAccount{}, + &corev1.ServiceAccount{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *serviceAccountInformer) defaultInformer(client kubernetes.Interface, re } func (f *serviceAccountInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&core_v1.ServiceAccount{}, f.defaultInformer) + return f.factory.InformerFor(&corev1.ServiceAccount{}, f.defaultInformer) } func (f *serviceAccountInformer) Lister() v1.ServiceAccountLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/events/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/events/BUILD index cf87d7c56d..54d4d1413a 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/events/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/events/BUILD @@ -3,11 +3,12 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( name = "go_default_library", srcs = ["interface.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/events", importpath = "k8s.io/client-go/informers/events", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/client-go/informers/events/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/informers/events/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/events/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/events/v1beta1/BUILD index 7f398d3ef3..0bf60bd756 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/events/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/events/v1beta1/BUILD @@ -6,17 +6,18 @@ go_library( "event.go", "interface.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/events/v1beta1", importpath = "k8s.io/client-go/informers/events/v1beta1", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/api/events/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/listers/events/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/events/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/listers/events/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/events/v1beta1/event.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/events/v1beta1/event.go index cb757c5bca..0ac6fa2827 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/events/v1beta1/event.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/events/v1beta1/event.go @@ -21,7 +21,7 @@ package v1beta1 import ( time "time" - events_v1beta1 "k8s.io/api/events/v1beta1" + eventsv1beta1 "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" @@ -70,7 +70,7 @@ func NewFilteredEventInformer(client kubernetes.Interface, namespace string, res return client.EventsV1beta1().Events(namespace).Watch(options) }, }, - &events_v1beta1.Event{}, + &eventsv1beta1.Event{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *eventInformer) defaultInformer(client kubernetes.Interface, resyncPerio } func (f *eventInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&events_v1beta1.Event{}, f.defaultInformer) + return f.factory.InformerFor(&eventsv1beta1.Event{}, f.defaultInformer) } func (f *eventInformer) Lister() v1beta1.EventLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/extensions/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/extensions/BUILD index 070358e205..d75a2ae950 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/extensions/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/extensions/BUILD @@ -8,10 +8,11 @@ load( go_library( name = "go_default_library", srcs = ["interface.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/extensions", importpath = "k8s.io/client-go/informers/extensions", deps = [ - "//vendor/k8s.io/client-go/informers/extensions/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/informers/extensions/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/extensions/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/extensions/v1beta1/BUILD index 7f11d7bdf7..ac71d05585 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/extensions/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/extensions/v1beta1/BUILD @@ -15,16 +15,17 @@ go_library( "podsecuritypolicy.go", "replicaset.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/extensions/v1beta1", importpath = "k8s.io/client-go/informers/extensions/v1beta1", deps = [ - "//vendor/k8s.io/api/extensions/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/listers/extensions/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/extensions/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/listers/extensions/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/extensions/v1beta1/daemonset.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/extensions/v1beta1/daemonset.go index 3064384b2d..80e84eba80 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/extensions/v1beta1/daemonset.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/extensions/v1beta1/daemonset.go @@ -21,7 +21,7 @@ package v1beta1 import ( time "time" - extensions_v1beta1 "k8s.io/api/extensions/v1beta1" + extensionsv1beta1 "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" @@ -70,7 +70,7 @@ func NewFilteredDaemonSetInformer(client kubernetes.Interface, namespace string, return client.ExtensionsV1beta1().DaemonSets(namespace).Watch(options) }, }, - &extensions_v1beta1.DaemonSet{}, + &extensionsv1beta1.DaemonSet{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *daemonSetInformer) defaultInformer(client kubernetes.Interface, resyncP } func (f *daemonSetInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&extensions_v1beta1.DaemonSet{}, f.defaultInformer) + return f.factory.InformerFor(&extensionsv1beta1.DaemonSet{}, f.defaultInformer) } func (f *daemonSetInformer) Lister() v1beta1.DaemonSetLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/extensions/v1beta1/deployment.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/extensions/v1beta1/deployment.go index a6b8b68e6f..cef4b8150f 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/extensions/v1beta1/deployment.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/extensions/v1beta1/deployment.go @@ -21,7 +21,7 @@ package v1beta1 import ( time "time" - extensions_v1beta1 "k8s.io/api/extensions/v1beta1" + extensionsv1beta1 "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" @@ -70,7 +70,7 @@ func NewFilteredDeploymentInformer(client kubernetes.Interface, namespace string return client.ExtensionsV1beta1().Deployments(namespace).Watch(options) }, }, - &extensions_v1beta1.Deployment{}, + &extensionsv1beta1.Deployment{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *deploymentInformer) defaultInformer(client kubernetes.Interface, resync } func (f *deploymentInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&extensions_v1beta1.Deployment{}, f.defaultInformer) + return f.factory.InformerFor(&extensionsv1beta1.Deployment{}, f.defaultInformer) } func (f *deploymentInformer) Lister() v1beta1.DeploymentLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/extensions/v1beta1/ingress.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/extensions/v1beta1/ingress.go index ec8147c191..72a88f3138 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/extensions/v1beta1/ingress.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/extensions/v1beta1/ingress.go @@ -21,7 +21,7 @@ package v1beta1 import ( time "time" - extensions_v1beta1 "k8s.io/api/extensions/v1beta1" + extensionsv1beta1 "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" @@ -70,7 +70,7 @@ func NewFilteredIngressInformer(client kubernetes.Interface, namespace string, r return client.ExtensionsV1beta1().Ingresses(namespace).Watch(options) }, }, - &extensions_v1beta1.Ingress{}, + &extensionsv1beta1.Ingress{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *ingressInformer) defaultInformer(client kubernetes.Interface, resyncPer } func (f *ingressInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&extensions_v1beta1.Ingress{}, f.defaultInformer) + return f.factory.InformerFor(&extensionsv1beta1.Ingress{}, f.defaultInformer) } func (f *ingressInformer) Lister() v1beta1.IngressLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/extensions/v1beta1/podsecuritypolicy.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/extensions/v1beta1/podsecuritypolicy.go index 15414d8ed9..6f91e54582 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/extensions/v1beta1/podsecuritypolicy.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/extensions/v1beta1/podsecuritypolicy.go @@ -21,7 +21,7 @@ package v1beta1 import ( time "time" - extensions_v1beta1 "k8s.io/api/extensions/v1beta1" + extensionsv1beta1 "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" @@ -69,7 +69,7 @@ func NewFilteredPodSecurityPolicyInformer(client kubernetes.Interface, resyncPer return client.ExtensionsV1beta1().PodSecurityPolicies().Watch(options) }, }, - &extensions_v1beta1.PodSecurityPolicy{}, + &extensionsv1beta1.PodSecurityPolicy{}, resyncPeriod, indexers, ) @@ -80,7 +80,7 @@ func (f *podSecurityPolicyInformer) defaultInformer(client kubernetes.Interface, } func (f *podSecurityPolicyInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&extensions_v1beta1.PodSecurityPolicy{}, f.defaultInformer) + return f.factory.InformerFor(&extensionsv1beta1.PodSecurityPolicy{}, f.defaultInformer) } func (f *podSecurityPolicyInformer) Lister() v1beta1.PodSecurityPolicyLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/extensions/v1beta1/replicaset.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/extensions/v1beta1/replicaset.go index a63d769e5d..e8847aa2cf 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/extensions/v1beta1/replicaset.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/extensions/v1beta1/replicaset.go @@ -21,7 +21,7 @@ package v1beta1 import ( time "time" - extensions_v1beta1 "k8s.io/api/extensions/v1beta1" + extensionsv1beta1 "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" @@ -70,7 +70,7 @@ func NewFilteredReplicaSetInformer(client kubernetes.Interface, namespace string return client.ExtensionsV1beta1().ReplicaSets(namespace).Watch(options) }, }, - &extensions_v1beta1.ReplicaSet{}, + &extensionsv1beta1.ReplicaSet{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *replicaSetInformer) defaultInformer(client kubernetes.Interface, resync } func (f *replicaSetInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&extensions_v1beta1.ReplicaSet{}, f.defaultInformer) + return f.factory.InformerFor(&extensionsv1beta1.ReplicaSet{}, f.defaultInformer) } func (f *replicaSetInformer) Lister() v1beta1.ReplicaSetLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/factory.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/factory.go index 902195d6ca..7ae22ee2c8 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/factory.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/factory.go @@ -31,6 +31,7 @@ import ( autoscaling "k8s.io/client-go/informers/autoscaling" batch "k8s.io/client-go/informers/batch" certificates "k8s.io/client-go/informers/certificates" + coordination "k8s.io/client-go/informers/coordination" core "k8s.io/client-go/informers/core" events "k8s.io/client-go/informers/events" extensions "k8s.io/client-go/informers/extensions" @@ -190,6 +191,7 @@ type SharedInformerFactory interface { Autoscaling() autoscaling.Interface Batch() batch.Interface Certificates() certificates.Interface + Coordination() coordination.Interface Core() core.Interface Events() events.Interface Extensions() extensions.Interface @@ -221,6 +223,10 @@ func (f *sharedInformerFactory) Certificates() certificates.Interface { return certificates.New(f, f.namespace, f.tweakListOptions) } +func (f *sharedInformerFactory) Coordination() coordination.Interface { + return coordination.New(f, f.namespace, f.tweakListOptions) +} + func (f *sharedInformerFactory) Core() core.Interface { return core.New(f, f.namespace, f.tweakListOptions) } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/generic.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/generic.go index 08c43906f3..5e6ee1c23d 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/generic.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/generic.go @@ -24,28 +24,29 @@ import ( v1alpha1 "k8s.io/api/admissionregistration/v1alpha1" v1beta1 "k8s.io/api/admissionregistration/v1beta1" v1 "k8s.io/api/apps/v1" - apps_v1beta1 "k8s.io/api/apps/v1beta1" + appsv1beta1 "k8s.io/api/apps/v1beta1" v1beta2 "k8s.io/api/apps/v1beta2" - autoscaling_v1 "k8s.io/api/autoscaling/v1" + autoscalingv1 "k8s.io/api/autoscaling/v1" v2beta1 "k8s.io/api/autoscaling/v2beta1" - batch_v1 "k8s.io/api/batch/v1" - batch_v1beta1 "k8s.io/api/batch/v1beta1" + batchv1 "k8s.io/api/batch/v1" + batchv1beta1 "k8s.io/api/batch/v1beta1" v2alpha1 "k8s.io/api/batch/v2alpha1" - certificates_v1beta1 "k8s.io/api/certificates/v1beta1" - core_v1 "k8s.io/api/core/v1" - events_v1beta1 "k8s.io/api/events/v1beta1" - extensions_v1beta1 "k8s.io/api/extensions/v1beta1" - networking_v1 "k8s.io/api/networking/v1" - policy_v1beta1 "k8s.io/api/policy/v1beta1" - rbac_v1 "k8s.io/api/rbac/v1" - rbac_v1alpha1 "k8s.io/api/rbac/v1alpha1" - rbac_v1beta1 "k8s.io/api/rbac/v1beta1" - scheduling_v1alpha1 "k8s.io/api/scheduling/v1alpha1" - scheduling_v1beta1 "k8s.io/api/scheduling/v1beta1" - settings_v1alpha1 "k8s.io/api/settings/v1alpha1" - storage_v1 "k8s.io/api/storage/v1" - storage_v1alpha1 "k8s.io/api/storage/v1alpha1" - storage_v1beta1 "k8s.io/api/storage/v1beta1" + certificatesv1beta1 "k8s.io/api/certificates/v1beta1" + coordinationv1beta1 "k8s.io/api/coordination/v1beta1" + corev1 "k8s.io/api/core/v1" + eventsv1beta1 "k8s.io/api/events/v1beta1" + extensionsv1beta1 "k8s.io/api/extensions/v1beta1" + networkingv1 "k8s.io/api/networking/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" + schedulingv1alpha1 "k8s.io/api/scheduling/v1alpha1" + schedulingv1beta1 "k8s.io/api/scheduling/v1beta1" + settingsv1alpha1 "k8s.io/api/settings/v1alpha1" + storagev1 "k8s.io/api/storage/v1" + storagev1alpha1 "k8s.io/api/storage/v1alpha1" + storagev1beta1 "k8s.io/api/storage/v1beta1" schema "k8s.io/apimachinery/pkg/runtime/schema" cache "k8s.io/client-go/tools/cache" ) @@ -99,11 +100,11 @@ func (f *sharedInformerFactory) ForResource(resource schema.GroupVersionResource return &genericInformer{resource: resource.GroupResource(), informer: f.Apps().V1().StatefulSets().Informer()}, nil // Group=apps, Version=v1beta1 - case apps_v1beta1.SchemeGroupVersion.WithResource("controllerrevisions"): + case appsv1beta1.SchemeGroupVersion.WithResource("controllerrevisions"): return &genericInformer{resource: resource.GroupResource(), informer: f.Apps().V1beta1().ControllerRevisions().Informer()}, nil - case apps_v1beta1.SchemeGroupVersion.WithResource("deployments"): + case appsv1beta1.SchemeGroupVersion.WithResource("deployments"): return &genericInformer{resource: resource.GroupResource(), informer: f.Apps().V1beta1().Deployments().Informer()}, nil - case apps_v1beta1.SchemeGroupVersion.WithResource("statefulsets"): + case appsv1beta1.SchemeGroupVersion.WithResource("statefulsets"): return &genericInformer{resource: resource.GroupResource(), informer: f.Apps().V1beta1().StatefulSets().Informer()}, nil // Group=apps, Version=v1beta2 @@ -119,7 +120,7 @@ func (f *sharedInformerFactory) ForResource(resource schema.GroupVersionResource return &genericInformer{resource: resource.GroupResource(), informer: f.Apps().V1beta2().StatefulSets().Informer()}, nil // Group=autoscaling, Version=v1 - case autoscaling_v1.SchemeGroupVersion.WithResource("horizontalpodautoscalers"): + case autoscalingv1.SchemeGroupVersion.WithResource("horizontalpodautoscalers"): return &genericInformer{resource: resource.GroupResource(), informer: f.Autoscaling().V1().HorizontalPodAutoscalers().Informer()}, nil // Group=autoscaling, Version=v2beta1 @@ -127,11 +128,11 @@ func (f *sharedInformerFactory) ForResource(resource schema.GroupVersionResource return &genericInformer{resource: resource.GroupResource(), informer: f.Autoscaling().V2beta1().HorizontalPodAutoscalers().Informer()}, nil // Group=batch, Version=v1 - case batch_v1.SchemeGroupVersion.WithResource("jobs"): + case batchv1.SchemeGroupVersion.WithResource("jobs"): return &genericInformer{resource: resource.GroupResource(), informer: f.Batch().V1().Jobs().Informer()}, nil // Group=batch, Version=v1beta1 - case batch_v1beta1.SchemeGroupVersion.WithResource("cronjobs"): + case batchv1beta1.SchemeGroupVersion.WithResource("cronjobs"): return &genericInformer{resource: resource.GroupResource(), informer: f.Batch().V1beta1().CronJobs().Informer()}, nil // Group=batch, Version=v2alpha1 @@ -139,123 +140,127 @@ func (f *sharedInformerFactory) ForResource(resource schema.GroupVersionResource return &genericInformer{resource: resource.GroupResource(), informer: f.Batch().V2alpha1().CronJobs().Informer()}, nil // Group=certificates.k8s.io, Version=v1beta1 - case certificates_v1beta1.SchemeGroupVersion.WithResource("certificatesigningrequests"): + case certificatesv1beta1.SchemeGroupVersion.WithResource("certificatesigningrequests"): return &genericInformer{resource: resource.GroupResource(), informer: f.Certificates().V1beta1().CertificateSigningRequests().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 + // Group=core, Version=v1 - case core_v1.SchemeGroupVersion.WithResource("componentstatuses"): + case corev1.SchemeGroupVersion.WithResource("componentstatuses"): return &genericInformer{resource: resource.GroupResource(), informer: f.Core().V1().ComponentStatuses().Informer()}, nil - case core_v1.SchemeGroupVersion.WithResource("configmaps"): + case corev1.SchemeGroupVersion.WithResource("configmaps"): return &genericInformer{resource: resource.GroupResource(), informer: f.Core().V1().ConfigMaps().Informer()}, nil - case core_v1.SchemeGroupVersion.WithResource("endpoints"): + case corev1.SchemeGroupVersion.WithResource("endpoints"): return &genericInformer{resource: resource.GroupResource(), informer: f.Core().V1().Endpoints().Informer()}, nil - case core_v1.SchemeGroupVersion.WithResource("events"): + case corev1.SchemeGroupVersion.WithResource("events"): return &genericInformer{resource: resource.GroupResource(), informer: f.Core().V1().Events().Informer()}, nil - case core_v1.SchemeGroupVersion.WithResource("limitranges"): + case corev1.SchemeGroupVersion.WithResource("limitranges"): return &genericInformer{resource: resource.GroupResource(), informer: f.Core().V1().LimitRanges().Informer()}, nil - case core_v1.SchemeGroupVersion.WithResource("namespaces"): + case corev1.SchemeGroupVersion.WithResource("namespaces"): return &genericInformer{resource: resource.GroupResource(), informer: f.Core().V1().Namespaces().Informer()}, nil - case core_v1.SchemeGroupVersion.WithResource("nodes"): + case corev1.SchemeGroupVersion.WithResource("nodes"): return &genericInformer{resource: resource.GroupResource(), informer: f.Core().V1().Nodes().Informer()}, nil - case core_v1.SchemeGroupVersion.WithResource("persistentvolumes"): + case corev1.SchemeGroupVersion.WithResource("persistentvolumes"): return &genericInformer{resource: resource.GroupResource(), informer: f.Core().V1().PersistentVolumes().Informer()}, nil - case core_v1.SchemeGroupVersion.WithResource("persistentvolumeclaims"): + case corev1.SchemeGroupVersion.WithResource("persistentvolumeclaims"): return &genericInformer{resource: resource.GroupResource(), informer: f.Core().V1().PersistentVolumeClaims().Informer()}, nil - case core_v1.SchemeGroupVersion.WithResource("pods"): + case corev1.SchemeGroupVersion.WithResource("pods"): return &genericInformer{resource: resource.GroupResource(), informer: f.Core().V1().Pods().Informer()}, nil - case core_v1.SchemeGroupVersion.WithResource("podtemplates"): + case corev1.SchemeGroupVersion.WithResource("podtemplates"): return &genericInformer{resource: resource.GroupResource(), informer: f.Core().V1().PodTemplates().Informer()}, nil - case core_v1.SchemeGroupVersion.WithResource("replicationcontrollers"): + case corev1.SchemeGroupVersion.WithResource("replicationcontrollers"): return &genericInformer{resource: resource.GroupResource(), informer: f.Core().V1().ReplicationControllers().Informer()}, nil - case core_v1.SchemeGroupVersion.WithResource("resourcequotas"): + case corev1.SchemeGroupVersion.WithResource("resourcequotas"): return &genericInformer{resource: resource.GroupResource(), informer: f.Core().V1().ResourceQuotas().Informer()}, nil - case core_v1.SchemeGroupVersion.WithResource("secrets"): + case corev1.SchemeGroupVersion.WithResource("secrets"): return &genericInformer{resource: resource.GroupResource(), informer: f.Core().V1().Secrets().Informer()}, nil - case core_v1.SchemeGroupVersion.WithResource("services"): + case corev1.SchemeGroupVersion.WithResource("services"): return &genericInformer{resource: resource.GroupResource(), informer: f.Core().V1().Services().Informer()}, nil - case core_v1.SchemeGroupVersion.WithResource("serviceaccounts"): + case corev1.SchemeGroupVersion.WithResource("serviceaccounts"): return &genericInformer{resource: resource.GroupResource(), informer: f.Core().V1().ServiceAccounts().Informer()}, nil // Group=events.k8s.io, Version=v1beta1 - case events_v1beta1.SchemeGroupVersion.WithResource("events"): + case eventsv1beta1.SchemeGroupVersion.WithResource("events"): return &genericInformer{resource: resource.GroupResource(), informer: f.Events().V1beta1().Events().Informer()}, nil // Group=extensions, Version=v1beta1 - case extensions_v1beta1.SchemeGroupVersion.WithResource("daemonsets"): + case extensionsv1beta1.SchemeGroupVersion.WithResource("daemonsets"): return &genericInformer{resource: resource.GroupResource(), informer: f.Extensions().V1beta1().DaemonSets().Informer()}, nil - case extensions_v1beta1.SchemeGroupVersion.WithResource("deployments"): + case extensionsv1beta1.SchemeGroupVersion.WithResource("deployments"): return &genericInformer{resource: resource.GroupResource(), informer: f.Extensions().V1beta1().Deployments().Informer()}, nil - case extensions_v1beta1.SchemeGroupVersion.WithResource("ingresses"): + case extensionsv1beta1.SchemeGroupVersion.WithResource("ingresses"): return &genericInformer{resource: resource.GroupResource(), informer: f.Extensions().V1beta1().Ingresses().Informer()}, nil - case extensions_v1beta1.SchemeGroupVersion.WithResource("podsecuritypolicies"): + case extensionsv1beta1.SchemeGroupVersion.WithResource("podsecuritypolicies"): return &genericInformer{resource: resource.GroupResource(), informer: f.Extensions().V1beta1().PodSecurityPolicies().Informer()}, nil - case extensions_v1beta1.SchemeGroupVersion.WithResource("replicasets"): + case extensionsv1beta1.SchemeGroupVersion.WithResource("replicasets"): return &genericInformer{resource: resource.GroupResource(), informer: f.Extensions().V1beta1().ReplicaSets().Informer()}, nil // Group=networking.k8s.io, Version=v1 - case networking_v1.SchemeGroupVersion.WithResource("networkpolicies"): + case networkingv1.SchemeGroupVersion.WithResource("networkpolicies"): return &genericInformer{resource: resource.GroupResource(), informer: f.Networking().V1().NetworkPolicies().Informer()}, nil // Group=policy, Version=v1beta1 - case policy_v1beta1.SchemeGroupVersion.WithResource("poddisruptionbudgets"): + case policyv1beta1.SchemeGroupVersion.WithResource("poddisruptionbudgets"): return &genericInformer{resource: resource.GroupResource(), informer: f.Policy().V1beta1().PodDisruptionBudgets().Informer()}, nil - case policy_v1beta1.SchemeGroupVersion.WithResource("podsecuritypolicies"): + case policyv1beta1.SchemeGroupVersion.WithResource("podsecuritypolicies"): return &genericInformer{resource: resource.GroupResource(), informer: f.Policy().V1beta1().PodSecurityPolicies().Informer()}, nil // Group=rbac.authorization.k8s.io, Version=v1 - case rbac_v1.SchemeGroupVersion.WithResource("clusterroles"): + case rbacv1.SchemeGroupVersion.WithResource("clusterroles"): return &genericInformer{resource: resource.GroupResource(), informer: f.Rbac().V1().ClusterRoles().Informer()}, nil - case rbac_v1.SchemeGroupVersion.WithResource("clusterrolebindings"): + case rbacv1.SchemeGroupVersion.WithResource("clusterrolebindings"): return &genericInformer{resource: resource.GroupResource(), informer: f.Rbac().V1().ClusterRoleBindings().Informer()}, nil - case rbac_v1.SchemeGroupVersion.WithResource("roles"): + case rbacv1.SchemeGroupVersion.WithResource("roles"): return &genericInformer{resource: resource.GroupResource(), informer: f.Rbac().V1().Roles().Informer()}, nil - case rbac_v1.SchemeGroupVersion.WithResource("rolebindings"): + case rbacv1.SchemeGroupVersion.WithResource("rolebindings"): return &genericInformer{resource: resource.GroupResource(), informer: f.Rbac().V1().RoleBindings().Informer()}, nil // Group=rbac.authorization.k8s.io, Version=v1alpha1 - case rbac_v1alpha1.SchemeGroupVersion.WithResource("clusterroles"): + case rbacv1alpha1.SchemeGroupVersion.WithResource("clusterroles"): return &genericInformer{resource: resource.GroupResource(), informer: f.Rbac().V1alpha1().ClusterRoles().Informer()}, nil - case rbac_v1alpha1.SchemeGroupVersion.WithResource("clusterrolebindings"): + case rbacv1alpha1.SchemeGroupVersion.WithResource("clusterrolebindings"): return &genericInformer{resource: resource.GroupResource(), informer: f.Rbac().V1alpha1().ClusterRoleBindings().Informer()}, nil - case rbac_v1alpha1.SchemeGroupVersion.WithResource("roles"): + case rbacv1alpha1.SchemeGroupVersion.WithResource("roles"): return &genericInformer{resource: resource.GroupResource(), informer: f.Rbac().V1alpha1().Roles().Informer()}, nil - case rbac_v1alpha1.SchemeGroupVersion.WithResource("rolebindings"): + case rbacv1alpha1.SchemeGroupVersion.WithResource("rolebindings"): return &genericInformer{resource: resource.GroupResource(), informer: f.Rbac().V1alpha1().RoleBindings().Informer()}, nil // Group=rbac.authorization.k8s.io, Version=v1beta1 - case rbac_v1beta1.SchemeGroupVersion.WithResource("clusterroles"): + case rbacv1beta1.SchemeGroupVersion.WithResource("clusterroles"): return &genericInformer{resource: resource.GroupResource(), informer: f.Rbac().V1beta1().ClusterRoles().Informer()}, nil - case rbac_v1beta1.SchemeGroupVersion.WithResource("clusterrolebindings"): + case rbacv1beta1.SchemeGroupVersion.WithResource("clusterrolebindings"): return &genericInformer{resource: resource.GroupResource(), informer: f.Rbac().V1beta1().ClusterRoleBindings().Informer()}, nil - case rbac_v1beta1.SchemeGroupVersion.WithResource("roles"): + case rbacv1beta1.SchemeGroupVersion.WithResource("roles"): return &genericInformer{resource: resource.GroupResource(), informer: f.Rbac().V1beta1().Roles().Informer()}, nil - case rbac_v1beta1.SchemeGroupVersion.WithResource("rolebindings"): + case rbacv1beta1.SchemeGroupVersion.WithResource("rolebindings"): return &genericInformer{resource: resource.GroupResource(), informer: f.Rbac().V1beta1().RoleBindings().Informer()}, nil // Group=scheduling.k8s.io, Version=v1alpha1 - case scheduling_v1alpha1.SchemeGroupVersion.WithResource("priorityclasses"): + case schedulingv1alpha1.SchemeGroupVersion.WithResource("priorityclasses"): return &genericInformer{resource: resource.GroupResource(), informer: f.Scheduling().V1alpha1().PriorityClasses().Informer()}, nil // Group=scheduling.k8s.io, Version=v1beta1 - case scheduling_v1beta1.SchemeGroupVersion.WithResource("priorityclasses"): + case schedulingv1beta1.SchemeGroupVersion.WithResource("priorityclasses"): return &genericInformer{resource: resource.GroupResource(), informer: f.Scheduling().V1beta1().PriorityClasses().Informer()}, nil // Group=settings.k8s.io, Version=v1alpha1 - case settings_v1alpha1.SchemeGroupVersion.WithResource("podpresets"): + case settingsv1alpha1.SchemeGroupVersion.WithResource("podpresets"): return &genericInformer{resource: resource.GroupResource(), informer: f.Settings().V1alpha1().PodPresets().Informer()}, nil // Group=storage.k8s.io, Version=v1 - case storage_v1.SchemeGroupVersion.WithResource("storageclasses"): + case storagev1.SchemeGroupVersion.WithResource("storageclasses"): return &genericInformer{resource: resource.GroupResource(), informer: f.Storage().V1().StorageClasses().Informer()}, nil // Group=storage.k8s.io, Version=v1alpha1 - case storage_v1alpha1.SchemeGroupVersion.WithResource("volumeattachments"): + case storagev1alpha1.SchemeGroupVersion.WithResource("volumeattachments"): return &genericInformer{resource: resource.GroupResource(), informer: f.Storage().V1alpha1().VolumeAttachments().Informer()}, nil // Group=storage.k8s.io, Version=v1beta1 - case storage_v1beta1.SchemeGroupVersion.WithResource("storageclasses"): + case storagev1beta1.SchemeGroupVersion.WithResource("storageclasses"): return &genericInformer{resource: resource.GroupResource(), informer: f.Storage().V1beta1().StorageClasses().Informer()}, nil - case storage_v1beta1.SchemeGroupVersion.WithResource("volumeattachments"): + case storagev1beta1.SchemeGroupVersion.WithResource("volumeattachments"): return &genericInformer{resource: resource.GroupResource(), informer: f.Storage().V1beta1().VolumeAttachments().Informer()}, nil } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/internalinterfaces/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/internalinterfaces/BUILD index 5b20c78f76..fb724889c0 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/internalinterfaces/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/internalinterfaces/BUILD @@ -8,12 +8,13 @@ load( go_library( name = "go_default_library", srcs = ["factory_interfaces.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/internalinterfaces", importpath = "k8s.io/client-go/informers/internalinterfaces", deps = [ - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/networking/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/networking/BUILD index 3219e7d02b..719db0c061 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/networking/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/networking/BUILD @@ -8,10 +8,11 @@ load( go_library( name = "go_default_library", srcs = ["interface.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/networking", importpath = "k8s.io/client-go/informers/networking", deps = [ - "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", - "//vendor/k8s.io/client-go/informers/networking/v1:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/informers/networking/v1:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/networking/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/networking/v1/BUILD index dc6f32696c..ee914bb573 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/networking/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/networking/v1/BUILD @@ -11,16 +11,17 @@ go_library( "interface.go", "networkpolicy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/networking/v1", importpath = "k8s.io/client-go/informers/networking/v1", deps = [ - "//vendor/k8s.io/api/networking/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/listers/networking/v1:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/networking/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/listers/networking/v1:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/networking/v1/networkpolicy.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/networking/v1/networkpolicy.go index 51e0bdf194..c2255c0dfd 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/networking/v1/networkpolicy.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/networking/v1/networkpolicy.go @@ -21,8 +21,8 @@ package v1 import ( time "time" - networking_v1 "k8s.io/api/networking/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + networkingv1 "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" @@ -57,20 +57,20 @@ func NewNetworkPolicyInformer(client kubernetes.Interface, namespace string, res func NewFilteredNetworkPolicyInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { return cache.NewSharedIndexInformer( &cache.ListWatch{ - ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.NetworkingV1().NetworkPolicies(namespace).List(options) }, - WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.NetworkingV1().NetworkPolicies(namespace).Watch(options) }, }, - &networking_v1.NetworkPolicy{}, + &networkingv1.NetworkPolicy{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *networkPolicyInformer) defaultInformer(client kubernetes.Interface, res } func (f *networkPolicyInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&networking_v1.NetworkPolicy{}, f.defaultInformer) + return f.factory.InformerFor(&networkingv1.NetworkPolicy{}, f.defaultInformer) } func (f *networkPolicyInformer) Lister() v1.NetworkPolicyLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/policy/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/policy/BUILD index 882d54d5ef..0e7dbd04f0 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/policy/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/policy/BUILD @@ -8,10 +8,11 @@ load( go_library( name = "go_default_library", srcs = ["interface.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/policy", importpath = "k8s.io/client-go/informers/policy", deps = [ - "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", - "//vendor/k8s.io/client-go/informers/policy/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/informers/policy/v1beta1:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/policy/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/policy/v1beta1/BUILD index 547a0a397c..8ebf954c24 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/policy/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/policy/v1beta1/BUILD @@ -12,16 +12,17 @@ go_library( "poddisruptionbudget.go", "podsecuritypolicy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/policy/v1beta1", importpath = "k8s.io/client-go/informers/policy/v1beta1", deps = [ - "//vendor/k8s.io/api/policy/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/listers/policy/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/policy/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/listers/policy/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/policy/v1beta1/poddisruptionbudget.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/policy/v1beta1/poddisruptionbudget.go index d305e617b7..dce61f7f18 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/policy/v1beta1/poddisruptionbudget.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/policy/v1beta1/poddisruptionbudget.go @@ -21,7 +21,7 @@ package v1beta1 import ( time "time" - policy_v1beta1 "k8s.io/api/policy/v1beta1" + policyv1beta1 "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" @@ -70,7 +70,7 @@ func NewFilteredPodDisruptionBudgetInformer(client kubernetes.Interface, namespa return client.PolicyV1beta1().PodDisruptionBudgets(namespace).Watch(options) }, }, - &policy_v1beta1.PodDisruptionBudget{}, + &policyv1beta1.PodDisruptionBudget{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *podDisruptionBudgetInformer) defaultInformer(client kubernetes.Interfac } func (f *podDisruptionBudgetInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&policy_v1beta1.PodDisruptionBudget{}, f.defaultInformer) + return f.factory.InformerFor(&policyv1beta1.PodDisruptionBudget{}, f.defaultInformer) } func (f *podDisruptionBudgetInformer) Lister() v1beta1.PodDisruptionBudgetLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/policy/v1beta1/podsecuritypolicy.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/policy/v1beta1/podsecuritypolicy.go index 12a16acde9..7ce5684fb0 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/policy/v1beta1/podsecuritypolicy.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/policy/v1beta1/podsecuritypolicy.go @@ -21,7 +21,7 @@ package v1beta1 import ( time "time" - policy_v1beta1 "k8s.io/api/policy/v1beta1" + policyv1beta1 "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" @@ -69,7 +69,7 @@ func NewFilteredPodSecurityPolicyInformer(client kubernetes.Interface, resyncPer return client.PolicyV1beta1().PodSecurityPolicies().Watch(options) }, }, - &policy_v1beta1.PodSecurityPolicy{}, + &policyv1beta1.PodSecurityPolicy{}, resyncPeriod, indexers, ) @@ -80,7 +80,7 @@ func (f *podSecurityPolicyInformer) defaultInformer(client kubernetes.Interface, } func (f *podSecurityPolicyInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&policy_v1beta1.PodSecurityPolicy{}, f.defaultInformer) + return f.factory.InformerFor(&policyv1beta1.PodSecurityPolicy{}, f.defaultInformer) } func (f *podSecurityPolicyInformer) Lister() v1beta1.PodSecurityPolicyLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/BUILD index e2afef9346..a1f4c26d30 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/BUILD @@ -8,12 +8,13 @@ load( go_library( name = "go_default_library", srcs = ["interface.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/rbac", importpath = "k8s.io/client-go/informers/rbac", deps = [ - "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", - "//vendor/k8s.io/client-go/informers/rbac/v1:go_default_library", - "//vendor/k8s.io/client-go/informers/rbac/v1alpha1:go_default_library", - "//vendor/k8s.io/client-go/informers/rbac/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/informers/rbac/v1:go_default_library", + "//staging/src/k8s.io/client-go/informers/rbac/v1alpha1:go_default_library", + "//staging/src/k8s.io/client-go/informers/rbac/v1beta1:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1/BUILD index 4278890e87..a40e459b6a 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1/BUILD @@ -14,16 +14,17 @@ go_library( "role.go", "rolebinding.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/rbac/v1", importpath = "k8s.io/client-go/informers/rbac/v1", deps = [ - "//vendor/k8s.io/api/rbac/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/listers/rbac/v1:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/rbac/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/listers/rbac/v1:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1/clusterrole.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1/clusterrole.go index d5e10cadd5..b8096e6bca 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1/clusterrole.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1/clusterrole.go @@ -21,8 +21,8 @@ package v1 import ( time "time" - rbac_v1 "k8s.io/api/rbac/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + rbacv1 "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" @@ -56,20 +56,20 @@ func NewClusterRoleInformer(client kubernetes.Interface, resyncPeriod time.Durat func NewFilteredClusterRoleInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { return cache.NewSharedIndexInformer( &cache.ListWatch{ - ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.RbacV1().ClusterRoles().List(options) }, - WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.RbacV1().ClusterRoles().Watch(options) }, }, - &rbac_v1.ClusterRole{}, + &rbacv1.ClusterRole{}, resyncPeriod, indexers, ) @@ -80,7 +80,7 @@ func (f *clusterRoleInformer) defaultInformer(client kubernetes.Interface, resyn } func (f *clusterRoleInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&rbac_v1.ClusterRole{}, f.defaultInformer) + return f.factory.InformerFor(&rbacv1.ClusterRole{}, f.defaultInformer) } func (f *clusterRoleInformer) Lister() v1.ClusterRoleLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1/clusterrolebinding.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1/clusterrolebinding.go index 027d11b609..5ef3407c4c 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1/clusterrolebinding.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1/clusterrolebinding.go @@ -21,8 +21,8 @@ package v1 import ( time "time" - rbac_v1 "k8s.io/api/rbac/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + rbacv1 "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" @@ -56,20 +56,20 @@ func NewClusterRoleBindingInformer(client kubernetes.Interface, resyncPeriod tim func NewFilteredClusterRoleBindingInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { return cache.NewSharedIndexInformer( &cache.ListWatch{ - ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.RbacV1().ClusterRoleBindings().List(options) }, - WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.RbacV1().ClusterRoleBindings().Watch(options) }, }, - &rbac_v1.ClusterRoleBinding{}, + &rbacv1.ClusterRoleBinding{}, resyncPeriod, indexers, ) @@ -80,7 +80,7 @@ func (f *clusterRoleBindingInformer) defaultInformer(client kubernetes.Interface } func (f *clusterRoleBindingInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&rbac_v1.ClusterRoleBinding{}, f.defaultInformer) + return f.factory.InformerFor(&rbacv1.ClusterRoleBinding{}, f.defaultInformer) } func (f *clusterRoleBindingInformer) Lister() v1.ClusterRoleBindingLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1/role.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1/role.go index 9c9f4f84b0..2d98874e5d 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1/role.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1/role.go @@ -21,8 +21,8 @@ package v1 import ( time "time" - rbac_v1 "k8s.io/api/rbac/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + rbacv1 "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" @@ -57,20 +57,20 @@ func NewRoleInformer(client kubernetes.Interface, namespace string, resyncPeriod func NewFilteredRoleInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { return cache.NewSharedIndexInformer( &cache.ListWatch{ - ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.RbacV1().Roles(namespace).List(options) }, - WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.RbacV1().Roles(namespace).Watch(options) }, }, - &rbac_v1.Role{}, + &rbacv1.Role{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *roleInformer) defaultInformer(client kubernetes.Interface, resyncPeriod } func (f *roleInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&rbac_v1.Role{}, f.defaultInformer) + return f.factory.InformerFor(&rbacv1.Role{}, f.defaultInformer) } func (f *roleInformer) Lister() v1.RoleLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1/rolebinding.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1/rolebinding.go index 73cd3056d3..a97107de1a 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1/rolebinding.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1/rolebinding.go @@ -21,8 +21,8 @@ package v1 import ( time "time" - rbac_v1 "k8s.io/api/rbac/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + rbacv1 "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" @@ -57,20 +57,20 @@ func NewRoleBindingInformer(client kubernetes.Interface, namespace string, resyn func NewFilteredRoleBindingInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { return cache.NewSharedIndexInformer( &cache.ListWatch{ - ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.RbacV1().RoleBindings(namespace).List(options) }, - WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.RbacV1().RoleBindings(namespace).Watch(options) }, }, - &rbac_v1.RoleBinding{}, + &rbacv1.RoleBinding{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *roleBindingInformer) defaultInformer(client kubernetes.Interface, resyn } func (f *roleBindingInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&rbac_v1.RoleBinding{}, f.defaultInformer) + return f.factory.InformerFor(&rbacv1.RoleBinding{}, f.defaultInformer) } func (f *roleBindingInformer) Lister() v1.RoleBindingLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1alpha1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1alpha1/BUILD index 345e10c6fe..85f76b4728 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1alpha1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1alpha1/BUILD @@ -14,16 +14,17 @@ go_library( "role.go", "rolebinding.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/rbac/v1alpha1", importpath = "k8s.io/client-go/informers/rbac/v1alpha1", deps = [ - "//vendor/k8s.io/api/rbac/v1alpha1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/listers/rbac/v1alpha1:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/rbac/v1alpha1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/listers/rbac/v1alpha1:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1alpha1/clusterrole.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1alpha1/clusterrole.go index 76aa466cdf..58c9c41259 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1alpha1/clusterrole.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1alpha1/clusterrole.go @@ -21,7 +21,7 @@ package v1alpha1 import ( time "time" - rbac_v1alpha1 "k8s.io/api/rbac/v1alpha1" + rbacv1alpha1 "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" @@ -69,7 +69,7 @@ func NewFilteredClusterRoleInformer(client kubernetes.Interface, resyncPeriod ti return client.RbacV1alpha1().ClusterRoles().Watch(options) }, }, - &rbac_v1alpha1.ClusterRole{}, + &rbacv1alpha1.ClusterRole{}, resyncPeriod, indexers, ) @@ -80,7 +80,7 @@ func (f *clusterRoleInformer) defaultInformer(client kubernetes.Interface, resyn } func (f *clusterRoleInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&rbac_v1alpha1.ClusterRole{}, f.defaultInformer) + return f.factory.InformerFor(&rbacv1alpha1.ClusterRole{}, f.defaultInformer) } func (f *clusterRoleInformer) Lister() v1alpha1.ClusterRoleLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1alpha1/clusterrolebinding.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1alpha1/clusterrolebinding.go index 851eb39dcc..759c716bf8 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1alpha1/clusterrolebinding.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1alpha1/clusterrolebinding.go @@ -21,7 +21,7 @@ package v1alpha1 import ( time "time" - rbac_v1alpha1 "k8s.io/api/rbac/v1alpha1" + rbacv1alpha1 "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" @@ -69,7 +69,7 @@ func NewFilteredClusterRoleBindingInformer(client kubernetes.Interface, resyncPe return client.RbacV1alpha1().ClusterRoleBindings().Watch(options) }, }, - &rbac_v1alpha1.ClusterRoleBinding{}, + &rbacv1alpha1.ClusterRoleBinding{}, resyncPeriod, indexers, ) @@ -80,7 +80,7 @@ func (f *clusterRoleBindingInformer) defaultInformer(client kubernetes.Interface } func (f *clusterRoleBindingInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&rbac_v1alpha1.ClusterRoleBinding{}, f.defaultInformer) + return f.factory.InformerFor(&rbacv1alpha1.ClusterRoleBinding{}, f.defaultInformer) } func (f *clusterRoleBindingInformer) Lister() v1alpha1.ClusterRoleBindingLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1alpha1/role.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1alpha1/role.go index be847445e0..1d1f99f064 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1alpha1/role.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1alpha1/role.go @@ -21,7 +21,7 @@ package v1alpha1 import ( time "time" - rbac_v1alpha1 "k8s.io/api/rbac/v1alpha1" + rbacv1alpha1 "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" @@ -70,7 +70,7 @@ func NewFilteredRoleInformer(client kubernetes.Interface, namespace string, resy return client.RbacV1alpha1().Roles(namespace).Watch(options) }, }, - &rbac_v1alpha1.Role{}, + &rbacv1alpha1.Role{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *roleInformer) defaultInformer(client kubernetes.Interface, resyncPeriod } func (f *roleInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&rbac_v1alpha1.Role{}, f.defaultInformer) + return f.factory.InformerFor(&rbacv1alpha1.Role{}, f.defaultInformer) } func (f *roleInformer) Lister() v1alpha1.RoleLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1alpha1/rolebinding.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1alpha1/rolebinding.go index 20e7159e3b..9fcb01d3ab 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1alpha1/rolebinding.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1alpha1/rolebinding.go @@ -21,7 +21,7 @@ package v1alpha1 import ( time "time" - rbac_v1alpha1 "k8s.io/api/rbac/v1alpha1" + rbacv1alpha1 "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" @@ -70,7 +70,7 @@ func NewFilteredRoleBindingInformer(client kubernetes.Interface, namespace strin return client.RbacV1alpha1().RoleBindings(namespace).Watch(options) }, }, - &rbac_v1alpha1.RoleBinding{}, + &rbacv1alpha1.RoleBinding{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *roleBindingInformer) defaultInformer(client kubernetes.Interface, resyn } func (f *roleBindingInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&rbac_v1alpha1.RoleBinding{}, f.defaultInformer) + return f.factory.InformerFor(&rbacv1alpha1.RoleBinding{}, f.defaultInformer) } func (f *roleBindingInformer) Lister() v1alpha1.RoleBindingLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1beta1/BUILD index 0ed73f4ec6..c1c47efb2b 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1beta1/BUILD @@ -14,16 +14,17 @@ go_library( "role.go", "rolebinding.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/rbac/v1beta1", importpath = "k8s.io/client-go/informers/rbac/v1beta1", deps = [ - "//vendor/k8s.io/api/rbac/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/listers/rbac/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/rbac/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/listers/rbac/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1beta1/clusterrole.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1beta1/clusterrole.go index d79c75c9bd..b82c1c740a 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1beta1/clusterrole.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1beta1/clusterrole.go @@ -21,7 +21,7 @@ package v1beta1 import ( time "time" - rbac_v1beta1 "k8s.io/api/rbac/v1beta1" + rbacv1beta1 "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" @@ -69,7 +69,7 @@ func NewFilteredClusterRoleInformer(client kubernetes.Interface, resyncPeriod ti return client.RbacV1beta1().ClusterRoles().Watch(options) }, }, - &rbac_v1beta1.ClusterRole{}, + &rbacv1beta1.ClusterRole{}, resyncPeriod, indexers, ) @@ -80,7 +80,7 @@ func (f *clusterRoleInformer) defaultInformer(client kubernetes.Interface, resyn } func (f *clusterRoleInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&rbac_v1beta1.ClusterRole{}, f.defaultInformer) + return f.factory.InformerFor(&rbacv1beta1.ClusterRole{}, f.defaultInformer) } func (f *clusterRoleInformer) Lister() v1beta1.ClusterRoleLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1beta1/clusterrolebinding.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1beta1/clusterrolebinding.go index f6b64816bd..d662e7f563 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1beta1/clusterrolebinding.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1beta1/clusterrolebinding.go @@ -21,7 +21,7 @@ package v1beta1 import ( time "time" - rbac_v1beta1 "k8s.io/api/rbac/v1beta1" + rbacv1beta1 "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" @@ -69,7 +69,7 @@ func NewFilteredClusterRoleBindingInformer(client kubernetes.Interface, resyncPe return client.RbacV1beta1().ClusterRoleBindings().Watch(options) }, }, - &rbac_v1beta1.ClusterRoleBinding{}, + &rbacv1beta1.ClusterRoleBinding{}, resyncPeriod, indexers, ) @@ -80,7 +80,7 @@ func (f *clusterRoleBindingInformer) defaultInformer(client kubernetes.Interface } func (f *clusterRoleBindingInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&rbac_v1beta1.ClusterRoleBinding{}, f.defaultInformer) + return f.factory.InformerFor(&rbacv1beta1.ClusterRoleBinding{}, f.defaultInformer) } func (f *clusterRoleBindingInformer) Lister() v1beta1.ClusterRoleBindingLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1beta1/role.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1beta1/role.go index fc1c56879c..b885beb272 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1beta1/role.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1beta1/role.go @@ -21,7 +21,7 @@ package v1beta1 import ( time "time" - rbac_v1beta1 "k8s.io/api/rbac/v1beta1" + rbacv1beta1 "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" @@ -70,7 +70,7 @@ func NewFilteredRoleInformer(client kubernetes.Interface, namespace string, resy return client.RbacV1beta1().Roles(namespace).Watch(options) }, }, - &rbac_v1beta1.Role{}, + &rbacv1beta1.Role{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *roleInformer) defaultInformer(client kubernetes.Interface, resyncPeriod } func (f *roleInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&rbac_v1beta1.Role{}, f.defaultInformer) + return f.factory.InformerFor(&rbacv1beta1.Role{}, f.defaultInformer) } func (f *roleInformer) Lister() v1beta1.RoleLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1beta1/rolebinding.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1beta1/rolebinding.go index 9bbf702005..63d9d7264e 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1beta1/rolebinding.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/rbac/v1beta1/rolebinding.go @@ -21,7 +21,7 @@ package v1beta1 import ( time "time" - rbac_v1beta1 "k8s.io/api/rbac/v1beta1" + rbacv1beta1 "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" @@ -70,7 +70,7 @@ func NewFilteredRoleBindingInformer(client kubernetes.Interface, namespace strin return client.RbacV1beta1().RoleBindings(namespace).Watch(options) }, }, - &rbac_v1beta1.RoleBinding{}, + &rbacv1beta1.RoleBinding{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *roleBindingInformer) defaultInformer(client kubernetes.Interface, resyn } func (f *roleBindingInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&rbac_v1beta1.RoleBinding{}, f.defaultInformer) + return f.factory.InformerFor(&rbacv1beta1.RoleBinding{}, f.defaultInformer) } func (f *roleBindingInformer) Lister() v1beta1.RoleBindingLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/scheduling/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/scheduling/BUILD index 81c38c9145..9695dc4359 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/scheduling/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/scheduling/BUILD @@ -8,11 +8,12 @@ load( go_library( name = "go_default_library", srcs = ["interface.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/scheduling", importpath = "k8s.io/client-go/informers/scheduling", deps = [ - "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", - "//vendor/k8s.io/client-go/informers/scheduling/v1alpha1:go_default_library", - "//vendor/k8s.io/client-go/informers/scheduling/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/informers/scheduling/v1alpha1:go_default_library", + "//staging/src/k8s.io/client-go/informers/scheduling/v1beta1:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/scheduling/v1alpha1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/scheduling/v1alpha1/BUILD index b168cda49a..163945b4b4 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/scheduling/v1alpha1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/scheduling/v1alpha1/BUILD @@ -11,16 +11,17 @@ go_library( "interface.go", "priorityclass.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/scheduling/v1alpha1", importpath = "k8s.io/client-go/informers/scheduling/v1alpha1", deps = [ - "//vendor/k8s.io/api/scheduling/v1alpha1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/listers/scheduling/v1alpha1:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/scheduling/v1alpha1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/listers/scheduling/v1alpha1:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/scheduling/v1alpha1/priorityclass.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/scheduling/v1alpha1/priorityclass.go index 481df04991..cd90dd7654 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/scheduling/v1alpha1/priorityclass.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/scheduling/v1alpha1/priorityclass.go @@ -21,7 +21,7 @@ package v1alpha1 import ( time "time" - scheduling_v1alpha1 "k8s.io/api/scheduling/v1alpha1" + schedulingv1alpha1 "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" @@ -69,7 +69,7 @@ func NewFilteredPriorityClassInformer(client kubernetes.Interface, resyncPeriod return client.SchedulingV1alpha1().PriorityClasses().Watch(options) }, }, - &scheduling_v1alpha1.PriorityClass{}, + &schedulingv1alpha1.PriorityClass{}, resyncPeriod, indexers, ) @@ -80,7 +80,7 @@ func (f *priorityClassInformer) defaultInformer(client kubernetes.Interface, res } func (f *priorityClassInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&scheduling_v1alpha1.PriorityClass{}, f.defaultInformer) + return f.factory.InformerFor(&schedulingv1alpha1.PriorityClass{}, f.defaultInformer) } func (f *priorityClassInformer) Lister() v1alpha1.PriorityClassLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/scheduling/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/scheduling/v1beta1/BUILD index dec0410f44..b6ffaa41a8 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/scheduling/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/scheduling/v1beta1/BUILD @@ -6,17 +6,18 @@ go_library( "interface.go", "priorityclass.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/scheduling/v1beta1", importpath = "k8s.io/client-go/informers/scheduling/v1beta1", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/api/scheduling/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/listers/scheduling/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/scheduling/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/listers/scheduling/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/scheduling/v1beta1/priorityclass.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/scheduling/v1beta1/priorityclass.go index ff61e58deb..3c7d90938f 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/scheduling/v1beta1/priorityclass.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/scheduling/v1beta1/priorityclass.go @@ -21,7 +21,7 @@ package v1beta1 import ( time "time" - scheduling_v1beta1 "k8s.io/api/scheduling/v1beta1" + schedulingv1beta1 "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" @@ -69,7 +69,7 @@ func NewFilteredPriorityClassInformer(client kubernetes.Interface, resyncPeriod return client.SchedulingV1beta1().PriorityClasses().Watch(options) }, }, - &scheduling_v1beta1.PriorityClass{}, + &schedulingv1beta1.PriorityClass{}, resyncPeriod, indexers, ) @@ -80,7 +80,7 @@ func (f *priorityClassInformer) defaultInformer(client kubernetes.Interface, res } func (f *priorityClassInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&scheduling_v1beta1.PriorityClass{}, f.defaultInformer) + return f.factory.InformerFor(&schedulingv1beta1.PriorityClass{}, f.defaultInformer) } func (f *priorityClassInformer) Lister() v1beta1.PriorityClassLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/settings/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/settings/BUILD index 5dc3cfd147..39b0533d1a 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/settings/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/settings/BUILD @@ -8,10 +8,11 @@ load( go_library( name = "go_default_library", srcs = ["interface.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/settings", importpath = "k8s.io/client-go/informers/settings", deps = [ - "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", - "//vendor/k8s.io/client-go/informers/settings/v1alpha1:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/informers/settings/v1alpha1:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/settings/v1alpha1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/settings/v1alpha1/BUILD index fd24549e84..2d437be935 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/settings/v1alpha1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/settings/v1alpha1/BUILD @@ -11,16 +11,17 @@ go_library( "interface.go", "podpreset.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/settings/v1alpha1", importpath = "k8s.io/client-go/informers/settings/v1alpha1", deps = [ - "//vendor/k8s.io/api/settings/v1alpha1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/listers/settings/v1alpha1:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/settings/v1alpha1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/listers/settings/v1alpha1:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/settings/v1alpha1/podpreset.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/settings/v1alpha1/podpreset.go index c4596c828b..33fcf2359e 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/settings/v1alpha1/podpreset.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/settings/v1alpha1/podpreset.go @@ -21,7 +21,7 @@ package v1alpha1 import ( time "time" - settings_v1alpha1 "k8s.io/api/settings/v1alpha1" + settingsv1alpha1 "k8s.io/api/settings/v1alpha1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtime "k8s.io/apimachinery/pkg/runtime" watch "k8s.io/apimachinery/pkg/watch" @@ -70,7 +70,7 @@ func NewFilteredPodPresetInformer(client kubernetes.Interface, namespace string, return client.SettingsV1alpha1().PodPresets(namespace).Watch(options) }, }, - &settings_v1alpha1.PodPreset{}, + &settingsv1alpha1.PodPreset{}, resyncPeriod, indexers, ) @@ -81,7 +81,7 @@ func (f *podPresetInformer) defaultInformer(client kubernetes.Interface, resyncP } func (f *podPresetInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&settings_v1alpha1.PodPreset{}, f.defaultInformer) + return f.factory.InformerFor(&settingsv1alpha1.PodPreset{}, f.defaultInformer) } func (f *podPresetInformer) Lister() v1alpha1.PodPresetLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/storage/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/storage/BUILD index 56e9e18502..4f6cacf03d 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/storage/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/storage/BUILD @@ -8,12 +8,13 @@ load( go_library( name = "go_default_library", srcs = ["interface.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/storage", importpath = "k8s.io/client-go/informers/storage", deps = [ - "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", - "//vendor/k8s.io/client-go/informers/storage/v1:go_default_library", - "//vendor/k8s.io/client-go/informers/storage/v1alpha1:go_default_library", - "//vendor/k8s.io/client-go/informers/storage/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/informers/storage/v1:go_default_library", + "//staging/src/k8s.io/client-go/informers/storage/v1alpha1:go_default_library", + "//staging/src/k8s.io/client-go/informers/storage/v1beta1:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/storage/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/storage/v1/BUILD index 29c0b883d0..4e3f9966ab 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/storage/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/storage/v1/BUILD @@ -11,16 +11,17 @@ go_library( "interface.go", "storageclass.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/storage/v1", importpath = "k8s.io/client-go/informers/storage/v1", deps = [ - "//vendor/k8s.io/api/storage/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/listers/storage/v1:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/storage/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/listers/storage/v1:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/storage/v1/storageclass.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/storage/v1/storageclass.go index ae90b53b4d..b4609b4d2f 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/storage/v1/storageclass.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/storage/v1/storageclass.go @@ -21,8 +21,8 @@ package v1 import ( time "time" - storage_v1 "k8s.io/api/storage/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + storagev1 "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" @@ -56,20 +56,20 @@ func NewStorageClassInformer(client kubernetes.Interface, resyncPeriod time.Dura func NewFilteredStorageClassInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { return cache.NewSharedIndexInformer( &cache.ListWatch{ - ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.StorageV1().StorageClasses().List(options) }, - WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { if tweakListOptions != nil { tweakListOptions(&options) } return client.StorageV1().StorageClasses().Watch(options) }, }, - &storage_v1.StorageClass{}, + &storagev1.StorageClass{}, resyncPeriod, indexers, ) @@ -80,7 +80,7 @@ func (f *storageClassInformer) defaultInformer(client kubernetes.Interface, resy } func (f *storageClassInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&storage_v1.StorageClass{}, f.defaultInformer) + return f.factory.InformerFor(&storagev1.StorageClass{}, f.defaultInformer) } func (f *storageClassInformer) Lister() v1.StorageClassLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/storage/v1alpha1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/storage/v1alpha1/BUILD index 1871ff4962..3373147dbd 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/storage/v1alpha1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/storage/v1alpha1/BUILD @@ -6,17 +6,18 @@ go_library( "interface.go", "volumeattachment.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/storage/v1alpha1", importpath = "k8s.io/client-go/informers/storage/v1alpha1", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/api/storage/v1alpha1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/listers/storage/v1alpha1:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/storage/v1alpha1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/listers/storage/v1alpha1:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/storage/v1alpha1/volumeattachment.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/storage/v1alpha1/volumeattachment.go index 01c4685826..e169c8a29c 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/storage/v1alpha1/volumeattachment.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/storage/v1alpha1/volumeattachment.go @@ -21,7 +21,7 @@ package v1alpha1 import ( time "time" - storage_v1alpha1 "k8s.io/api/storage/v1alpha1" + storagev1alpha1 "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" @@ -69,7 +69,7 @@ func NewFilteredVolumeAttachmentInformer(client kubernetes.Interface, resyncPeri return client.StorageV1alpha1().VolumeAttachments().Watch(options) }, }, - &storage_v1alpha1.VolumeAttachment{}, + &storagev1alpha1.VolumeAttachment{}, resyncPeriod, indexers, ) @@ -80,7 +80,7 @@ func (f *volumeAttachmentInformer) defaultInformer(client kubernetes.Interface, } func (f *volumeAttachmentInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&storage_v1alpha1.VolumeAttachment{}, f.defaultInformer) + return f.factory.InformerFor(&storagev1alpha1.VolumeAttachment{}, f.defaultInformer) } func (f *volumeAttachmentInformer) Lister() v1alpha1.VolumeAttachmentLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/storage/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/informers/storage/v1beta1/BUILD index 64aae51654..72df059003 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/storage/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/storage/v1beta1/BUILD @@ -12,16 +12,17 @@ go_library( "storageclass.go", "volumeattachment.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/informers/storage/v1beta1", importpath = "k8s.io/client-go/informers/storage/v1beta1", deps = [ - "//vendor/k8s.io/api/storage/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/listers/storage/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/storage/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/listers/storage/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/storage/v1beta1/storageclass.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/storage/v1beta1/storageclass.go index 1c2f3490c2..ed898a77b8 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/storage/v1beta1/storageclass.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/storage/v1beta1/storageclass.go @@ -21,7 +21,7 @@ package v1beta1 import ( time "time" - storage_v1beta1 "k8s.io/api/storage/v1beta1" + storagev1beta1 "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" @@ -69,7 +69,7 @@ func NewFilteredStorageClassInformer(client kubernetes.Interface, resyncPeriod t return client.StorageV1beta1().StorageClasses().Watch(options) }, }, - &storage_v1beta1.StorageClass{}, + &storagev1beta1.StorageClass{}, resyncPeriod, indexers, ) @@ -80,7 +80,7 @@ func (f *storageClassInformer) defaultInformer(client kubernetes.Interface, resy } func (f *storageClassInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&storage_v1beta1.StorageClass{}, f.defaultInformer) + return f.factory.InformerFor(&storagev1beta1.StorageClass{}, f.defaultInformer) } func (f *storageClassInformer) Lister() v1beta1.StorageClassLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/storage/v1beta1/volumeattachment.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/storage/v1beta1/volumeattachment.go index 63fa12f0e9..c75fc06b15 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/storage/v1beta1/volumeattachment.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/storage/v1beta1/volumeattachment.go @@ -21,7 +21,7 @@ package v1beta1 import ( time "time" - storage_v1beta1 "k8s.io/api/storage/v1beta1" + storagev1beta1 "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" @@ -69,7 +69,7 @@ func NewFilteredVolumeAttachmentInformer(client kubernetes.Interface, resyncPeri return client.StorageV1beta1().VolumeAttachments().Watch(options) }, }, - &storage_v1beta1.VolumeAttachment{}, + &storagev1beta1.VolumeAttachment{}, resyncPeriod, indexers, ) @@ -80,7 +80,7 @@ func (f *volumeAttachmentInformer) defaultInformer(client kubernetes.Interface, } func (f *volumeAttachmentInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&storage_v1beta1.VolumeAttachment{}, f.defaultInformer) + return f.factory.InformerFor(&storagev1beta1.VolumeAttachment{}, f.defaultInformer) } func (f *volumeAttachmentInformer) Lister() v1beta1.VolumeAttachmentLister { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/BUILD index 73f5a9b0e7..8fa50b4de2 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/BUILD @@ -12,40 +12,42 @@ go_library( "doc.go", "import.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes", importpath = "k8s.io/client-go/kubernetes", deps = [ - "//vendor/k8s.io/client-go/discovery:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/apps/v1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/authentication/v1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/authorization/v1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/batch/v1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/networking/v1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/rbac/v1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/storage/v1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/util/flowcontrol:go_default_library", + "//staging/src/k8s.io/client-go/discovery:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/apps/v1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/apps/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/apps/v1beta2:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/authentication/v1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/authentication/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/authorization/v1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/authorization/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/autoscaling/v1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/batch/v1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/batch/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/batch/v2alpha1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/certificates/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/coordination/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/events/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/extensions/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/networking/v1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/policy/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/rbac/v1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/rbac/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/settings/v1alpha1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/storage/v1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/storage/v1alpha1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/storage/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/util/flowcontrol:go_default_library", ], ) @@ -77,6 +79,7 @@ filegroup( "//staging/src/k8s.io/client-go/kubernetes/typed/batch/v1beta1:all-srcs", "//staging/src/k8s.io/client-go/kubernetes/typed/batch/v2alpha1:all-srcs", "//staging/src/k8s.io/client-go/kubernetes/typed/certificates/v1beta1:all-srcs", + "//staging/src/k8s.io/client-go/kubernetes/typed/coordination/v1beta1:all-srcs", "//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:all-srcs", "//staging/src/k8s.io/client-go/kubernetes/typed/events/v1beta1:all-srcs", "//staging/src/k8s.io/client-go/kubernetes/typed/extensions/v1beta1:all-srcs", diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/clientset.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/clientset.go index 9d0eace46a..c0416fc3ed 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/clientset.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/clientset.go @@ -35,6 +35,7 @@ import ( batchv1beta1 "k8s.io/client-go/kubernetes/typed/batch/v1beta1" batchv2alpha1 "k8s.io/client-go/kubernetes/typed/batch/v2alpha1" certificatesv1beta1 "k8s.io/client-go/kubernetes/typed/certificates/v1beta1" + coordinationv1beta1 "k8s.io/client-go/kubernetes/typed/coordination/v1beta1" corev1 "k8s.io/client-go/kubernetes/typed/core/v1" eventsv1beta1 "k8s.io/client-go/kubernetes/typed/events/v1beta1" extensionsv1beta1 "k8s.io/client-go/kubernetes/typed/extensions/v1beta1" @@ -84,6 +85,9 @@ type Interface interface { CertificatesV1beta1() certificatesv1beta1.CertificatesV1beta1Interface // Deprecated: please explicitly pick a version if possible. Certificates() certificatesv1beta1.CertificatesV1beta1Interface + CoordinationV1beta1() coordinationv1beta1.CoordinationV1beta1Interface + // Deprecated: please explicitly pick a version if possible. + Coordination() coordinationv1beta1.CoordinationV1beta1Interface CoreV1() corev1.CoreV1Interface // Deprecated: please explicitly pick a version if possible. Core() corev1.CoreV1Interface @@ -137,6 +141,7 @@ type Clientset struct { batchV1beta1 *batchv1beta1.BatchV1beta1Client batchV2alpha1 *batchv2alpha1.BatchV2alpha1Client certificatesV1beta1 *certificatesv1beta1.CertificatesV1beta1Client + coordinationV1beta1 *coordinationv1beta1.CoordinationV1beta1Client coreV1 *corev1.CoreV1Client eventsV1beta1 *eventsv1beta1.EventsV1beta1Client extensionsV1beta1 *extensionsv1beta1.ExtensionsV1beta1Client @@ -270,6 +275,17 @@ func (c *Clientset) Certificates() certificatesv1beta1.CertificatesV1beta1Interf return c.certificatesV1beta1 } +// CoordinationV1beta1 retrieves the CoordinationV1beta1Client +func (c *Clientset) CoordinationV1beta1() coordinationv1beta1.CoordinationV1beta1Interface { + return c.coordinationV1beta1 +} + +// Deprecated: Coordination retrieves the default version of CoordinationClient. +// Please explicitly pick a version. +func (c *Clientset) Coordination() coordinationv1beta1.CoordinationV1beta1Interface { + return c.coordinationV1beta1 +} + // CoreV1 retrieves the CoreV1Client func (c *Clientset) CoreV1() corev1.CoreV1Interface { return c.coreV1 @@ -470,6 +486,10 @@ func NewForConfig(c *rest.Config) (*Clientset, error) { if err != nil { return nil, err } + cs.coordinationV1beta1, err = coordinationv1beta1.NewForConfig(&configShallowCopy) + if err != nil { + return nil, err + } cs.coreV1, err = corev1.NewForConfig(&configShallowCopy) if err != nil { return nil, err @@ -553,6 +573,7 @@ func NewForConfigOrDie(c *rest.Config) *Clientset { cs.batchV1beta1 = batchv1beta1.NewForConfigOrDie(c) cs.batchV2alpha1 = batchv2alpha1.NewForConfigOrDie(c) cs.certificatesV1beta1 = certificatesv1beta1.NewForConfigOrDie(c) + cs.coordinationV1beta1 = coordinationv1beta1.NewForConfigOrDie(c) cs.coreV1 = corev1.NewForConfigOrDie(c) cs.eventsV1beta1 = eventsv1beta1.NewForConfigOrDie(c) cs.extensionsV1beta1 = extensionsv1beta1.NewForConfigOrDie(c) @@ -590,6 +611,7 @@ func New(c rest.Interface) *Clientset { cs.batchV1beta1 = batchv1beta1.New(c) cs.batchV2alpha1 = batchv2alpha1.New(c) cs.certificatesV1beta1 = certificatesv1beta1.New(c) + cs.coordinationV1beta1 = coordinationv1beta1.New(c) cs.coreV1 = corev1.New(c) cs.eventsV1beta1 = eventsv1beta1.New(c) cs.extensionsV1beta1 = extensionsv1beta1.New(c) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/fake/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/fake/BUILD index 941115b5a5..a5f9385bba 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/fake/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/fake/BUILD @@ -12,104 +12,109 @@ go_library( "doc.go", "register.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/fake", importpath = "k8s.io/client-go/kubernetes/fake", deps = [ - "//vendor/k8s.io/api/admissionregistration/v1alpha1:go_default_library", - "//vendor/k8s.io/api/admissionregistration/v1beta1:go_default_library", - "//vendor/k8s.io/api/apps/v1:go_default_library", - "//vendor/k8s.io/api/apps/v1beta1:go_default_library", - "//vendor/k8s.io/api/apps/v1beta2:go_default_library", - "//vendor/k8s.io/api/authentication/v1:go_default_library", - "//vendor/k8s.io/api/authentication/v1beta1:go_default_library", - "//vendor/k8s.io/api/authorization/v1:go_default_library", - "//vendor/k8s.io/api/authorization/v1beta1:go_default_library", - "//vendor/k8s.io/api/autoscaling/v1:go_default_library", - "//vendor/k8s.io/api/autoscaling/v2beta1:go_default_library", - "//vendor/k8s.io/api/batch/v1:go_default_library", - "//vendor/k8s.io/api/batch/v1beta1:go_default_library", - "//vendor/k8s.io/api/batch/v2alpha1:go_default_library", - "//vendor/k8s.io/api/certificates/v1beta1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/events/v1beta1:go_default_library", - "//vendor/k8s.io/api/extensions/v1beta1:go_default_library", - "//vendor/k8s.io/api/networking/v1:go_default_library", - "//vendor/k8s.io/api/policy/v1beta1:go_default_library", - "//vendor/k8s.io/api/rbac/v1:go_default_library", - "//vendor/k8s.io/api/rbac/v1alpha1:go_default_library", - "//vendor/k8s.io/api/rbac/v1beta1:go_default_library", - "//vendor/k8s.io/api/scheduling/v1alpha1:go_default_library", - "//vendor/k8s.io/api/scheduling/v1beta1:go_default_library", - "//vendor/k8s.io/api/settings/v1alpha1:go_default_library", - "//vendor/k8s.io/api/storage/v1:go_default_library", - "//vendor/k8s.io/api/storage/v1alpha1:go_default_library", - "//vendor/k8s.io/api/storage/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/discovery:go_default_library", - "//vendor/k8s.io/client-go/discovery/fake:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/apps/v1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/authentication/v1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/authorization/v1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/fake:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/batch/v1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/fake:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/fake:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/networking/v1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/rbac/v1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/fake:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/fake:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/storage/v1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", + "//staging/src/k8s.io/api/admissionregistration/v1alpha1:go_default_library", + "//staging/src/k8s.io/api/admissionregistration/v1beta1:go_default_library", + "//staging/src/k8s.io/api/apps/v1:go_default_library", + "//staging/src/k8s.io/api/apps/v1beta1:go_default_library", + "//staging/src/k8s.io/api/apps/v1beta2:go_default_library", + "//staging/src/k8s.io/api/authentication/v1:go_default_library", + "//staging/src/k8s.io/api/authentication/v1beta1:go_default_library", + "//staging/src/k8s.io/api/authorization/v1:go_default_library", + "//staging/src/k8s.io/api/authorization/v1beta1:go_default_library", + "//staging/src/k8s.io/api/autoscaling/v1:go_default_library", + "//staging/src/k8s.io/api/autoscaling/v2beta1:go_default_library", + "//staging/src/k8s.io/api/batch/v1:go_default_library", + "//staging/src/k8s.io/api/batch/v1beta1:go_default_library", + "//staging/src/k8s.io/api/batch/v2alpha1:go_default_library", + "//staging/src/k8s.io/api/certificates/v1beta1:go_default_library", + "//staging/src/k8s.io/api/coordination/v1beta1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/events/v1beta1:go_default_library", + "//staging/src/k8s.io/api/extensions/v1beta1:go_default_library", + "//staging/src/k8s.io/api/networking/v1:go_default_library", + "//staging/src/k8s.io/api/policy/v1beta1:go_default_library", + "//staging/src/k8s.io/api/rbac/v1:go_default_library", + "//staging/src/k8s.io/api/rbac/v1alpha1:go_default_library", + "//staging/src/k8s.io/api/rbac/v1beta1:go_default_library", + "//staging/src/k8s.io/api/scheduling/v1alpha1:go_default_library", + "//staging/src/k8s.io/api/scheduling/v1beta1:go_default_library", + "//staging/src/k8s.io/api/settings/v1alpha1:go_default_library", + "//staging/src/k8s.io/api/storage/v1:go_default_library", + "//staging/src/k8s.io/api/storage/v1alpha1:go_default_library", + "//staging/src/k8s.io/api/storage/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/discovery:go_default_library", + "//staging/src/k8s.io/client-go/discovery/fake:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/apps/v1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/apps/v1/fake:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/apps/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/apps/v1beta2:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/authentication/v1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/authentication/v1/fake:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/authentication/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/authorization/v1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/authorization/v1/fake:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/authorization/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/autoscaling/v1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/fake:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/batch/v1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/batch/v1/fake:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/batch/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/batch/v1beta1/fake:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/batch/v2alpha1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/certificates/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/coordination/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/core/v1/fake:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/events/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/events/v1beta1/fake:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/extensions/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/networking/v1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/networking/v1/fake:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/policy/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/rbac/v1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/rbac/v1/fake:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/rbac/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/fake:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/fake:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/settings/v1alpha1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/storage/v1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/storage/v1/fake:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/storage/v1alpha1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/storage/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/fake/clientset_generated.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/fake/clientset_generated.go index b764b21b65..720b98925f 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/fake/clientset_generated.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/fake/clientset_generated.go @@ -54,6 +54,8 @@ import ( fakebatchv2alpha1 "k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake" certificatesv1beta1 "k8s.io/client-go/kubernetes/typed/certificates/v1beta1" fakecertificatesv1beta1 "k8s.io/client-go/kubernetes/typed/certificates/v1beta1/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" fakecorev1 "k8s.io/client-go/kubernetes/typed/core/v1/fake" eventsv1beta1 "k8s.io/client-go/kubernetes/typed/events/v1beta1" @@ -237,6 +239,16 @@ func (c *Clientset) Certificates() certificatesv1beta1.CertificatesV1beta1Interf return &fakecertificatesv1beta1.FakeCertificatesV1beta1{Fake: &c.Fake} } +// CoordinationV1beta1 retrieves the CoordinationV1beta1Client +func (c *Clientset) CoordinationV1beta1() coordinationv1beta1.CoordinationV1beta1Interface { + return &fakecoordinationv1beta1.FakeCoordinationV1beta1{Fake: &c.Fake} +} + +// Coordination retrieves the CoordinationV1beta1Client +func (c *Clientset) Coordination() coordinationv1beta1.CoordinationV1beta1Interface { + return &fakecoordinationv1beta1.FakeCoordinationV1beta1{Fake: &c.Fake} +} + // CoreV1 retrieves the CoreV1Client func (c *Clientset) CoreV1() corev1.CoreV1Interface { return &fakecorev1.FakeCoreV1{Fake: &c.Fake} diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/fake/register.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/fake/register.go index 88e168fa6b..a39e7e59b7 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/fake/register.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/fake/register.go @@ -34,6 +34,7 @@ import ( batchv1beta1 "k8s.io/api/batch/v1beta1" batchv2alpha1 "k8s.io/api/batch/v2alpha1" certificatesv1beta1 "k8s.io/api/certificates/v1beta1" + coordinationv1beta1 "k8s.io/api/coordination/v1beta1" corev1 "k8s.io/api/core/v1" eventsv1beta1 "k8s.io/api/events/v1beta1" extensionsv1beta1 "k8s.io/api/extensions/v1beta1" @@ -52,15 +53,43 @@ import ( runtime "k8s.io/apimachinery/pkg/runtime" schema "k8s.io/apimachinery/pkg/runtime/schema" serializer "k8s.io/apimachinery/pkg/runtime/serializer" + utilruntime "k8s.io/apimachinery/pkg/util/runtime" ) var scheme = runtime.NewScheme() var codecs = serializer.NewCodecFactory(scheme) var parameterCodec = runtime.NewParameterCodec(scheme) - -func init() { - v1.AddToGroupVersion(scheme, schema.GroupVersion{Version: "v1"}) - AddToScheme(scheme) +var localSchemeBuilder = runtime.SchemeBuilder{ + admissionregistrationv1alpha1.AddToScheme, + admissionregistrationv1beta1.AddToScheme, + appsv1beta1.AddToScheme, + appsv1beta2.AddToScheme, + appsv1.AddToScheme, + authenticationv1.AddToScheme, + authenticationv1beta1.AddToScheme, + authorizationv1.AddToScheme, + authorizationv1beta1.AddToScheme, + autoscalingv1.AddToScheme, + autoscalingv2beta1.AddToScheme, + batchv1.AddToScheme, + batchv1beta1.AddToScheme, + batchv2alpha1.AddToScheme, + certificatesv1beta1.AddToScheme, + coordinationv1beta1.AddToScheme, + corev1.AddToScheme, + eventsv1beta1.AddToScheme, + extensionsv1beta1.AddToScheme, + networkingv1.AddToScheme, + policyv1beta1.AddToScheme, + rbacv1.AddToScheme, + rbacv1beta1.AddToScheme, + rbacv1alpha1.AddToScheme, + schedulingv1alpha1.AddToScheme, + schedulingv1beta1.AddToScheme, + settingsv1alpha1.AddToScheme, + storagev1beta1.AddToScheme, + storagev1.AddToScheme, + storagev1alpha1.AddToScheme, } // AddToScheme adds all types of this clientset into the given scheme. This allows composition @@ -73,38 +102,13 @@ func init() { // ) // // kclientset, _ := kubernetes.NewForConfig(c) -// aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme) +// _ = aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme) // // After this, RawExtensions in Kubernetes types will serialize kube-aggregator types // correctly. -func AddToScheme(scheme *runtime.Scheme) { - admissionregistrationv1alpha1.AddToScheme(scheme) - admissionregistrationv1beta1.AddToScheme(scheme) - appsv1beta1.AddToScheme(scheme) - appsv1beta2.AddToScheme(scheme) - appsv1.AddToScheme(scheme) - authenticationv1.AddToScheme(scheme) - authenticationv1beta1.AddToScheme(scheme) - authorizationv1.AddToScheme(scheme) - authorizationv1beta1.AddToScheme(scheme) - autoscalingv1.AddToScheme(scheme) - autoscalingv2beta1.AddToScheme(scheme) - batchv1.AddToScheme(scheme) - batchv1beta1.AddToScheme(scheme) - batchv2alpha1.AddToScheme(scheme) - certificatesv1beta1.AddToScheme(scheme) - corev1.AddToScheme(scheme) - eventsv1beta1.AddToScheme(scheme) - extensionsv1beta1.AddToScheme(scheme) - networkingv1.AddToScheme(scheme) - policyv1beta1.AddToScheme(scheme) - rbacv1.AddToScheme(scheme) - rbacv1beta1.AddToScheme(scheme) - rbacv1alpha1.AddToScheme(scheme) - schedulingv1alpha1.AddToScheme(scheme) - schedulingv1beta1.AddToScheme(scheme) - settingsv1alpha1.AddToScheme(scheme) - storagev1beta1.AddToScheme(scheme) - storagev1.AddToScheme(scheme) - storagev1alpha1.AddToScheme(scheme) +var AddToScheme = localSchemeBuilder.AddToScheme + +func init() { + v1.AddToGroupVersion(scheme, schema.GroupVersion{Version: "v1"}) + utilruntime.Must(AddToScheme(scheme)) } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/scheme/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/scheme/BUILD index 55ae1310bf..bee8cd71a5 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/scheme/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/scheme/BUILD @@ -11,41 +11,44 @@ go_library( "doc.go", "register.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/scheme", importpath = "k8s.io/client-go/kubernetes/scheme", deps = [ - "//vendor/k8s.io/api/admissionregistration/v1alpha1:go_default_library", - "//vendor/k8s.io/api/admissionregistration/v1beta1:go_default_library", - "//vendor/k8s.io/api/apps/v1:go_default_library", - "//vendor/k8s.io/api/apps/v1beta1:go_default_library", - "//vendor/k8s.io/api/apps/v1beta2:go_default_library", - "//vendor/k8s.io/api/authentication/v1:go_default_library", - "//vendor/k8s.io/api/authentication/v1beta1:go_default_library", - "//vendor/k8s.io/api/authorization/v1:go_default_library", - "//vendor/k8s.io/api/authorization/v1beta1:go_default_library", - "//vendor/k8s.io/api/autoscaling/v1:go_default_library", - "//vendor/k8s.io/api/autoscaling/v2beta1:go_default_library", - "//vendor/k8s.io/api/batch/v1:go_default_library", - "//vendor/k8s.io/api/batch/v1beta1:go_default_library", - "//vendor/k8s.io/api/batch/v2alpha1:go_default_library", - "//vendor/k8s.io/api/certificates/v1beta1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/events/v1beta1:go_default_library", - "//vendor/k8s.io/api/extensions/v1beta1:go_default_library", - "//vendor/k8s.io/api/networking/v1:go_default_library", - "//vendor/k8s.io/api/policy/v1beta1:go_default_library", - "//vendor/k8s.io/api/rbac/v1:go_default_library", - "//vendor/k8s.io/api/rbac/v1alpha1:go_default_library", - "//vendor/k8s.io/api/rbac/v1beta1:go_default_library", - "//vendor/k8s.io/api/scheduling/v1alpha1:go_default_library", - "//vendor/k8s.io/api/scheduling/v1beta1:go_default_library", - "//vendor/k8s.io/api/settings/v1alpha1:go_default_library", - "//vendor/k8s.io/api/storage/v1:go_default_library", - "//vendor/k8s.io/api/storage/v1alpha1:go_default_library", - "//vendor/k8s.io/api/storage/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/api/admissionregistration/v1alpha1:go_default_library", + "//staging/src/k8s.io/api/admissionregistration/v1beta1:go_default_library", + "//staging/src/k8s.io/api/apps/v1:go_default_library", + "//staging/src/k8s.io/api/apps/v1beta1:go_default_library", + "//staging/src/k8s.io/api/apps/v1beta2:go_default_library", + "//staging/src/k8s.io/api/authentication/v1:go_default_library", + "//staging/src/k8s.io/api/authentication/v1beta1:go_default_library", + "//staging/src/k8s.io/api/authorization/v1:go_default_library", + "//staging/src/k8s.io/api/authorization/v1beta1:go_default_library", + "//staging/src/k8s.io/api/autoscaling/v1:go_default_library", + "//staging/src/k8s.io/api/autoscaling/v2beta1:go_default_library", + "//staging/src/k8s.io/api/batch/v1:go_default_library", + "//staging/src/k8s.io/api/batch/v1beta1:go_default_library", + "//staging/src/k8s.io/api/batch/v2alpha1:go_default_library", + "//staging/src/k8s.io/api/certificates/v1beta1:go_default_library", + "//staging/src/k8s.io/api/coordination/v1beta1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/events/v1beta1:go_default_library", + "//staging/src/k8s.io/api/extensions/v1beta1:go_default_library", + "//staging/src/k8s.io/api/networking/v1:go_default_library", + "//staging/src/k8s.io/api/policy/v1beta1:go_default_library", + "//staging/src/k8s.io/api/rbac/v1:go_default_library", + "//staging/src/k8s.io/api/rbac/v1alpha1:go_default_library", + "//staging/src/k8s.io/api/rbac/v1beta1:go_default_library", + "//staging/src/k8s.io/api/scheduling/v1alpha1:go_default_library", + "//staging/src/k8s.io/api/scheduling/v1beta1:go_default_library", + "//staging/src/k8s.io/api/settings/v1alpha1:go_default_library", + "//staging/src/k8s.io/api/storage/v1:go_default_library", + "//staging/src/k8s.io/api/storage/v1alpha1:go_default_library", + "//staging/src/k8s.io/api/storage/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/scheme/register.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/scheme/register.go index 86584cf83c..78d1d83998 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/scheme/register.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/scheme/register.go @@ -34,6 +34,7 @@ import ( batchv1beta1 "k8s.io/api/batch/v1beta1" batchv2alpha1 "k8s.io/api/batch/v2alpha1" certificatesv1beta1 "k8s.io/api/certificates/v1beta1" + coordinationv1beta1 "k8s.io/api/coordination/v1beta1" corev1 "k8s.io/api/core/v1" eventsv1beta1 "k8s.io/api/events/v1beta1" extensionsv1beta1 "k8s.io/api/extensions/v1beta1" @@ -52,15 +53,43 @@ import ( runtime "k8s.io/apimachinery/pkg/runtime" schema "k8s.io/apimachinery/pkg/runtime/schema" serializer "k8s.io/apimachinery/pkg/runtime/serializer" + utilruntime "k8s.io/apimachinery/pkg/util/runtime" ) var Scheme = runtime.NewScheme() var Codecs = serializer.NewCodecFactory(Scheme) var ParameterCodec = runtime.NewParameterCodec(Scheme) - -func init() { - v1.AddToGroupVersion(Scheme, schema.GroupVersion{Version: "v1"}) - AddToScheme(Scheme) +var localSchemeBuilder = runtime.SchemeBuilder{ + admissionregistrationv1alpha1.AddToScheme, + admissionregistrationv1beta1.AddToScheme, + appsv1beta1.AddToScheme, + appsv1beta2.AddToScheme, + appsv1.AddToScheme, + authenticationv1.AddToScheme, + authenticationv1beta1.AddToScheme, + authorizationv1.AddToScheme, + authorizationv1beta1.AddToScheme, + autoscalingv1.AddToScheme, + autoscalingv2beta1.AddToScheme, + batchv1.AddToScheme, + batchv1beta1.AddToScheme, + batchv2alpha1.AddToScheme, + certificatesv1beta1.AddToScheme, + coordinationv1beta1.AddToScheme, + corev1.AddToScheme, + eventsv1beta1.AddToScheme, + extensionsv1beta1.AddToScheme, + networkingv1.AddToScheme, + policyv1beta1.AddToScheme, + rbacv1.AddToScheme, + rbacv1beta1.AddToScheme, + rbacv1alpha1.AddToScheme, + schedulingv1alpha1.AddToScheme, + schedulingv1beta1.AddToScheme, + settingsv1alpha1.AddToScheme, + storagev1beta1.AddToScheme, + storagev1.AddToScheme, + storagev1alpha1.AddToScheme, } // AddToScheme adds all types of this clientset into the given scheme. This allows composition @@ -73,38 +102,13 @@ func init() { // ) // // kclientset, _ := kubernetes.NewForConfig(c) -// aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme) +// _ = aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme) // // After this, RawExtensions in Kubernetes types will serialize kube-aggregator types // correctly. -func AddToScheme(scheme *runtime.Scheme) { - admissionregistrationv1alpha1.AddToScheme(scheme) - admissionregistrationv1beta1.AddToScheme(scheme) - appsv1beta1.AddToScheme(scheme) - appsv1beta2.AddToScheme(scheme) - appsv1.AddToScheme(scheme) - authenticationv1.AddToScheme(scheme) - authenticationv1beta1.AddToScheme(scheme) - authorizationv1.AddToScheme(scheme) - authorizationv1beta1.AddToScheme(scheme) - autoscalingv1.AddToScheme(scheme) - autoscalingv2beta1.AddToScheme(scheme) - batchv1.AddToScheme(scheme) - batchv1beta1.AddToScheme(scheme) - batchv2alpha1.AddToScheme(scheme) - certificatesv1beta1.AddToScheme(scheme) - corev1.AddToScheme(scheme) - eventsv1beta1.AddToScheme(scheme) - extensionsv1beta1.AddToScheme(scheme) - networkingv1.AddToScheme(scheme) - policyv1beta1.AddToScheme(scheme) - rbacv1.AddToScheme(scheme) - rbacv1beta1.AddToScheme(scheme) - rbacv1alpha1.AddToScheme(scheme) - schedulingv1alpha1.AddToScheme(scheme) - schedulingv1beta1.AddToScheme(scheme) - settingsv1alpha1.AddToScheme(scheme) - storagev1beta1.AddToScheme(scheme) - storagev1.AddToScheme(scheme) - storagev1alpha1.AddToScheme(scheme) +var AddToScheme = localSchemeBuilder.AddToScheme + +func init() { + v1.AddToGroupVersion(Scheme, schema.GroupVersion{Version: "v1"}) + utilruntime.Must(AddToScheme(Scheme)) } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/BUILD index 6ad245311e..8a8cc81468 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/BUILD @@ -8,16 +8,17 @@ go_library( "generated_expansion.go", "initializerconfiguration.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1", importpath = "k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/api/admissionregistration/v1alpha1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/api/admissionregistration/v1alpha1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/BUILD index a70c2bef0d..34ad1ad6f3 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/BUILD @@ -7,18 +7,19 @@ go_library( "fake_admissionregistration_client.go", "fake_initializerconfiguration.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake", importpath = "k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/api/admissionregistration/v1alpha1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", + "//staging/src/k8s.io/api/admissionregistration/v1alpha1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/BUILD index 197f738eba..0fbeccb5f9 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/BUILD @@ -9,16 +9,17 @@ go_library( "mutatingwebhookconfiguration.go", "validatingwebhookconfiguration.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1", importpath = "k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/api/admissionregistration/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/api/admissionregistration/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake/BUILD index 4e615188d1..432084731e 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake/BUILD @@ -8,18 +8,19 @@ go_library( "fake_mutatingwebhookconfiguration.go", "fake_validatingwebhookconfiguration.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake", importpath = "k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/api/admissionregistration/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", + "//staging/src/k8s.io/api/admissionregistration/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/BUILD index 5d77a94df2..17bd3fad4d 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/BUILD @@ -12,16 +12,17 @@ go_library( "replicaset.go", "statefulset.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/apps/v1", importpath = "k8s.io/client-go/kubernetes/typed/apps/v1", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/api/apps/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/api/apps/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/controllerrevision.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/controllerrevision.go index ac9d627906..1ddaa1a71b 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/controllerrevision.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/controllerrevision.go @@ -20,7 +20,7 @@ package v1 import ( v1 "k8s.io/api/apps/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" scheme "k8s.io/client-go/kubernetes/scheme" @@ -37,11 +37,11 @@ type ControllerRevisionsGetter interface { type ControllerRevisionInterface interface { Create(*v1.ControllerRevision) (*v1.ControllerRevision, error) Update(*v1.ControllerRevision) (*v1.ControllerRevision, error) - Delete(name string, options *meta_v1.DeleteOptions) error - DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error - Get(name string, options meta_v1.GetOptions) (*v1.ControllerRevision, error) - List(opts meta_v1.ListOptions) (*v1.ControllerRevisionList, error) - Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Delete(name string, options *metav1.DeleteOptions) error + DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error + Get(name string, options metav1.GetOptions) (*v1.ControllerRevision, error) + List(opts metav1.ListOptions) (*v1.ControllerRevisionList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.ControllerRevision, err error) ControllerRevisionExpansion } @@ -61,7 +61,7 @@ func newControllerRevisions(c *AppsV1Client, namespace string) *controllerRevisi } // Get takes name of the controllerRevision, and returns the corresponding controllerRevision object, and an error if there is any. -func (c *controllerRevisions) Get(name string, options meta_v1.GetOptions) (result *v1.ControllerRevision, err error) { +func (c *controllerRevisions) Get(name string, options metav1.GetOptions) (result *v1.ControllerRevision, err error) { result = &v1.ControllerRevision{} err = c.client.Get(). Namespace(c.ns). @@ -74,7 +74,7 @@ func (c *controllerRevisions) Get(name string, options meta_v1.GetOptions) (resu } // List takes label and field selectors, and returns the list of ControllerRevisions that match those selectors. -func (c *controllerRevisions) List(opts meta_v1.ListOptions) (result *v1.ControllerRevisionList, err error) { +func (c *controllerRevisions) List(opts metav1.ListOptions) (result *v1.ControllerRevisionList, err error) { result = &v1.ControllerRevisionList{} err = c.client.Get(). Namespace(c.ns). @@ -86,7 +86,7 @@ func (c *controllerRevisions) List(opts meta_v1.ListOptions) (result *v1.Control } // Watch returns a watch.Interface that watches the requested controllerRevisions. -func (c *controllerRevisions) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { +func (c *controllerRevisions) Watch(opts metav1.ListOptions) (watch.Interface, error) { opts.Watch = true return c.client.Get(). Namespace(c.ns). @@ -121,7 +121,7 @@ func (c *controllerRevisions) Update(controllerRevision *v1.ControllerRevision) } // Delete takes name of the controllerRevision and deletes it. Returns an error if one occurs. -func (c *controllerRevisions) Delete(name string, options *meta_v1.DeleteOptions) error { +func (c *controllerRevisions) Delete(name string, options *metav1.DeleteOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("controllerrevisions"). @@ -132,7 +132,7 @@ func (c *controllerRevisions) Delete(name string, options *meta_v1.DeleteOptions } // DeleteCollection deletes a collection of objects. -func (c *controllerRevisions) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { +func (c *controllerRevisions) DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("controllerrevisions"). diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/daemonset.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/daemonset.go index b50ac2557b..03a8706984 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/daemonset.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/daemonset.go @@ -20,7 +20,7 @@ package v1 import ( v1 "k8s.io/api/apps/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" scheme "k8s.io/client-go/kubernetes/scheme" @@ -38,11 +38,11 @@ type DaemonSetInterface interface { Create(*v1.DaemonSet) (*v1.DaemonSet, error) Update(*v1.DaemonSet) (*v1.DaemonSet, error) UpdateStatus(*v1.DaemonSet) (*v1.DaemonSet, error) - Delete(name string, options *meta_v1.DeleteOptions) error - DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error - Get(name string, options meta_v1.GetOptions) (*v1.DaemonSet, error) - List(opts meta_v1.ListOptions) (*v1.DaemonSetList, error) - Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Delete(name string, options *metav1.DeleteOptions) error + DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error + Get(name string, options metav1.GetOptions) (*v1.DaemonSet, error) + List(opts metav1.ListOptions) (*v1.DaemonSetList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.DaemonSet, err error) DaemonSetExpansion } @@ -62,7 +62,7 @@ func newDaemonSets(c *AppsV1Client, namespace string) *daemonSets { } // Get takes name of the daemonSet, and returns the corresponding daemonSet object, and an error if there is any. -func (c *daemonSets) Get(name string, options meta_v1.GetOptions) (result *v1.DaemonSet, err error) { +func (c *daemonSets) Get(name string, options metav1.GetOptions) (result *v1.DaemonSet, err error) { result = &v1.DaemonSet{} err = c.client.Get(). Namespace(c.ns). @@ -75,7 +75,7 @@ func (c *daemonSets) Get(name string, options meta_v1.GetOptions) (result *v1.Da } // List takes label and field selectors, and returns the list of DaemonSets that match those selectors. -func (c *daemonSets) List(opts meta_v1.ListOptions) (result *v1.DaemonSetList, err error) { +func (c *daemonSets) List(opts metav1.ListOptions) (result *v1.DaemonSetList, err error) { result = &v1.DaemonSetList{} err = c.client.Get(). Namespace(c.ns). @@ -87,7 +87,7 @@ func (c *daemonSets) List(opts meta_v1.ListOptions) (result *v1.DaemonSetList, e } // Watch returns a watch.Interface that watches the requested daemonSets. -func (c *daemonSets) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { +func (c *daemonSets) Watch(opts metav1.ListOptions) (watch.Interface, error) { opts.Watch = true return c.client.Get(). Namespace(c.ns). @@ -138,7 +138,7 @@ func (c *daemonSets) UpdateStatus(daemonSet *v1.DaemonSet) (result *v1.DaemonSet } // Delete takes name of the daemonSet and deletes it. Returns an error if one occurs. -func (c *daemonSets) Delete(name string, options *meta_v1.DeleteOptions) error { +func (c *daemonSets) Delete(name string, options *metav1.DeleteOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("daemonsets"). @@ -149,7 +149,7 @@ func (c *daemonSets) Delete(name string, options *meta_v1.DeleteOptions) error { } // DeleteCollection deletes a collection of objects. -func (c *daemonSets) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { +func (c *daemonSets) DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("daemonsets"). diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/deployment.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/deployment.go index e2b1b18866..73d46f8bb6 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/deployment.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/deployment.go @@ -20,7 +20,7 @@ package v1 import ( v1 "k8s.io/api/apps/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" scheme "k8s.io/client-go/kubernetes/scheme" @@ -38,11 +38,11 @@ type DeploymentInterface interface { Create(*v1.Deployment) (*v1.Deployment, error) Update(*v1.Deployment) (*v1.Deployment, error) UpdateStatus(*v1.Deployment) (*v1.Deployment, error) - Delete(name string, options *meta_v1.DeleteOptions) error - DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error - Get(name string, options meta_v1.GetOptions) (*v1.Deployment, error) - List(opts meta_v1.ListOptions) (*v1.DeploymentList, error) - Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Delete(name string, options *metav1.DeleteOptions) error + DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error + Get(name string, options metav1.GetOptions) (*v1.Deployment, error) + List(opts metav1.ListOptions) (*v1.DeploymentList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Deployment, err error) DeploymentExpansion } @@ -62,7 +62,7 @@ func newDeployments(c *AppsV1Client, namespace string) *deployments { } // Get takes name of the deployment, and returns the corresponding deployment object, and an error if there is any. -func (c *deployments) Get(name string, options meta_v1.GetOptions) (result *v1.Deployment, err error) { +func (c *deployments) Get(name string, options metav1.GetOptions) (result *v1.Deployment, err error) { result = &v1.Deployment{} err = c.client.Get(). Namespace(c.ns). @@ -75,7 +75,7 @@ func (c *deployments) Get(name string, options meta_v1.GetOptions) (result *v1.D } // List takes label and field selectors, and returns the list of Deployments that match those selectors. -func (c *deployments) List(opts meta_v1.ListOptions) (result *v1.DeploymentList, err error) { +func (c *deployments) List(opts metav1.ListOptions) (result *v1.DeploymentList, err error) { result = &v1.DeploymentList{} err = c.client.Get(). Namespace(c.ns). @@ -87,7 +87,7 @@ func (c *deployments) List(opts meta_v1.ListOptions) (result *v1.DeploymentList, } // Watch returns a watch.Interface that watches the requested deployments. -func (c *deployments) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { +func (c *deployments) Watch(opts metav1.ListOptions) (watch.Interface, error) { opts.Watch = true return c.client.Get(). Namespace(c.ns). @@ -138,7 +138,7 @@ func (c *deployments) UpdateStatus(deployment *v1.Deployment) (result *v1.Deploy } // Delete takes name of the deployment and deletes it. Returns an error if one occurs. -func (c *deployments) Delete(name string, options *meta_v1.DeleteOptions) error { +func (c *deployments) Delete(name string, options *metav1.DeleteOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("deployments"). @@ -149,7 +149,7 @@ func (c *deployments) Delete(name string, options *meta_v1.DeleteOptions) error } // DeleteCollection deletes a collection of objects. -func (c *deployments) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { +func (c *deployments) DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("deployments"). diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/BUILD index 912b2755dd..6202fc55dd 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/BUILD @@ -11,18 +11,19 @@ go_library( "fake_replicaset.go", "fake_statefulset.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake", importpath = "k8s.io/client-go/kubernetes/typed/apps/v1/fake", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/api/apps/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/apps/v1:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", + "//staging/src/k8s.io/api/apps/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/apps/v1:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_controllerrevision.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_controllerrevision.go index 0655803d81..fc2808daf8 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_controllerrevision.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_controllerrevision.go @@ -19,7 +19,7 @@ limitations under the License. package fake import ( - apps_v1 "k8s.io/api/apps/v1" + appsv1 "k8s.io/api/apps/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" schema "k8s.io/apimachinery/pkg/runtime/schema" @@ -39,20 +39,20 @@ var controllerrevisionsResource = schema.GroupVersionResource{Group: "apps", Ver var controllerrevisionsKind = schema.GroupVersionKind{Group: "apps", Version: "v1", Kind: "ControllerRevision"} // Get takes name of the controllerRevision, and returns the corresponding controllerRevision object, and an error if there is any. -func (c *FakeControllerRevisions) Get(name string, options v1.GetOptions) (result *apps_v1.ControllerRevision, err error) { +func (c *FakeControllerRevisions) Get(name string, options v1.GetOptions) (result *appsv1.ControllerRevision, err error) { obj, err := c.Fake. - Invokes(testing.NewGetAction(controllerrevisionsResource, c.ns, name), &apps_v1.ControllerRevision{}) + Invokes(testing.NewGetAction(controllerrevisionsResource, c.ns, name), &appsv1.ControllerRevision{}) if obj == nil { return nil, err } - return obj.(*apps_v1.ControllerRevision), err + return obj.(*appsv1.ControllerRevision), err } // List takes label and field selectors, and returns the list of ControllerRevisions that match those selectors. -func (c *FakeControllerRevisions) List(opts v1.ListOptions) (result *apps_v1.ControllerRevisionList, err error) { +func (c *FakeControllerRevisions) List(opts v1.ListOptions) (result *appsv1.ControllerRevisionList, err error) { obj, err := c.Fake. - Invokes(testing.NewListAction(controllerrevisionsResource, controllerrevisionsKind, c.ns, opts), &apps_v1.ControllerRevisionList{}) + Invokes(testing.NewListAction(controllerrevisionsResource, controllerrevisionsKind, c.ns, opts), &appsv1.ControllerRevisionList{}) if obj == nil { return nil, err @@ -62,8 +62,8 @@ func (c *FakeControllerRevisions) List(opts v1.ListOptions) (result *apps_v1.Con if label == nil { label = labels.Everything() } - list := &apps_v1.ControllerRevisionList{ListMeta: obj.(*apps_v1.ControllerRevisionList).ListMeta} - for _, item := range obj.(*apps_v1.ControllerRevisionList).Items { + list := &appsv1.ControllerRevisionList{ListMeta: obj.(*appsv1.ControllerRevisionList).ListMeta} + for _, item := range obj.(*appsv1.ControllerRevisionList).Items { if label.Matches(labels.Set(item.Labels)) { list.Items = append(list.Items, item) } @@ -79,31 +79,31 @@ func (c *FakeControllerRevisions) Watch(opts v1.ListOptions) (watch.Interface, e } // 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(controllerRevision *apps_v1.ControllerRevision) (result *apps_v1.ControllerRevision, err error) { +func (c *FakeControllerRevisions) Create(controllerRevision *appsv1.ControllerRevision) (result *appsv1.ControllerRevision, err error) { obj, err := c.Fake. - Invokes(testing.NewCreateAction(controllerrevisionsResource, c.ns, controllerRevision), &apps_v1.ControllerRevision{}) + Invokes(testing.NewCreateAction(controllerrevisionsResource, c.ns, controllerRevision), &appsv1.ControllerRevision{}) if obj == nil { return nil, err } - return obj.(*apps_v1.ControllerRevision), err + return obj.(*appsv1.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(controllerRevision *apps_v1.ControllerRevision) (result *apps_v1.ControllerRevision, err error) { +func (c *FakeControllerRevisions) Update(controllerRevision *appsv1.ControllerRevision) (result *appsv1.ControllerRevision, err error) { obj, err := c.Fake. - Invokes(testing.NewUpdateAction(controllerrevisionsResource, c.ns, controllerRevision), &apps_v1.ControllerRevision{}) + Invokes(testing.NewUpdateAction(controllerrevisionsResource, c.ns, controllerRevision), &appsv1.ControllerRevision{}) if obj == nil { return nil, err } - return obj.(*apps_v1.ControllerRevision), err + return obj.(*appsv1.ControllerRevision), err } // Delete takes name of the controllerRevision and deletes it. Returns an error if one occurs. func (c *FakeControllerRevisions) Delete(name string, options *v1.DeleteOptions) error { _, err := c.Fake. - Invokes(testing.NewDeleteAction(controllerrevisionsResource, c.ns, name), &apps_v1.ControllerRevision{}) + Invokes(testing.NewDeleteAction(controllerrevisionsResource, c.ns, name), &appsv1.ControllerRevision{}) return err } @@ -112,17 +112,17 @@ func (c *FakeControllerRevisions) Delete(name string, options *v1.DeleteOptions) func (c *FakeControllerRevisions) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { action := testing.NewDeleteCollectionAction(controllerrevisionsResource, c.ns, listOptions) - _, err := c.Fake.Invokes(action, &apps_v1.ControllerRevisionList{}) + _, err := c.Fake.Invokes(action, &appsv1.ControllerRevisionList{}) return err } // Patch applies the patch and returns the patched controllerRevision. -func (c *FakeControllerRevisions) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *apps_v1.ControllerRevision, err error) { +func (c *FakeControllerRevisions) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *appsv1.ControllerRevision, err error) { obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(controllerrevisionsResource, c.ns, name, data, subresources...), &apps_v1.ControllerRevision{}) + Invokes(testing.NewPatchSubresourceAction(controllerrevisionsResource, c.ns, name, data, subresources...), &appsv1.ControllerRevision{}) if obj == nil { return nil, err } - return obj.(*apps_v1.ControllerRevision), err + return obj.(*appsv1.ControllerRevision), err } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_daemonset.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_daemonset.go index 47cdca788f..89e72ebd39 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_daemonset.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_daemonset.go @@ -19,7 +19,7 @@ limitations under the License. package fake import ( - apps_v1 "k8s.io/api/apps/v1" + appsv1 "k8s.io/api/apps/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" schema "k8s.io/apimachinery/pkg/runtime/schema" @@ -39,20 +39,20 @@ var daemonsetsResource = schema.GroupVersionResource{Group: "apps", Version: "v1 var daemonsetsKind = schema.GroupVersionKind{Group: "apps", Version: "v1", Kind: "DaemonSet"} // Get takes name of the daemonSet, and returns the corresponding daemonSet object, and an error if there is any. -func (c *FakeDaemonSets) Get(name string, options v1.GetOptions) (result *apps_v1.DaemonSet, err error) { +func (c *FakeDaemonSets) Get(name string, options v1.GetOptions) (result *appsv1.DaemonSet, err error) { obj, err := c.Fake. - Invokes(testing.NewGetAction(daemonsetsResource, c.ns, name), &apps_v1.DaemonSet{}) + Invokes(testing.NewGetAction(daemonsetsResource, c.ns, name), &appsv1.DaemonSet{}) if obj == nil { return nil, err } - return obj.(*apps_v1.DaemonSet), err + return obj.(*appsv1.DaemonSet), err } // List takes label and field selectors, and returns the list of DaemonSets that match those selectors. -func (c *FakeDaemonSets) List(opts v1.ListOptions) (result *apps_v1.DaemonSetList, err error) { +func (c *FakeDaemonSets) List(opts v1.ListOptions) (result *appsv1.DaemonSetList, err error) { obj, err := c.Fake. - Invokes(testing.NewListAction(daemonsetsResource, daemonsetsKind, c.ns, opts), &apps_v1.DaemonSetList{}) + Invokes(testing.NewListAction(daemonsetsResource, daemonsetsKind, c.ns, opts), &appsv1.DaemonSetList{}) if obj == nil { return nil, err @@ -62,8 +62,8 @@ func (c *FakeDaemonSets) List(opts v1.ListOptions) (result *apps_v1.DaemonSetLis if label == nil { label = labels.Everything() } - list := &apps_v1.DaemonSetList{ListMeta: obj.(*apps_v1.DaemonSetList).ListMeta} - for _, item := range obj.(*apps_v1.DaemonSetList).Items { + list := &appsv1.DaemonSetList{ListMeta: obj.(*appsv1.DaemonSetList).ListMeta} + for _, item := range obj.(*appsv1.DaemonSetList).Items { if label.Matches(labels.Set(item.Labels)) { list.Items = append(list.Items, item) } @@ -79,43 +79,43 @@ func (c *FakeDaemonSets) Watch(opts v1.ListOptions) (watch.Interface, error) { } // 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(daemonSet *apps_v1.DaemonSet) (result *apps_v1.DaemonSet, err error) { +func (c *FakeDaemonSets) Create(daemonSet *appsv1.DaemonSet) (result *appsv1.DaemonSet, err error) { obj, err := c.Fake. - Invokes(testing.NewCreateAction(daemonsetsResource, c.ns, daemonSet), &apps_v1.DaemonSet{}) + Invokes(testing.NewCreateAction(daemonsetsResource, c.ns, daemonSet), &appsv1.DaemonSet{}) if obj == nil { return nil, err } - return obj.(*apps_v1.DaemonSet), err + return obj.(*appsv1.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(daemonSet *apps_v1.DaemonSet) (result *apps_v1.DaemonSet, err error) { +func (c *FakeDaemonSets) Update(daemonSet *appsv1.DaemonSet) (result *appsv1.DaemonSet, err error) { obj, err := c.Fake. - Invokes(testing.NewUpdateAction(daemonsetsResource, c.ns, daemonSet), &apps_v1.DaemonSet{}) + Invokes(testing.NewUpdateAction(daemonsetsResource, c.ns, daemonSet), &appsv1.DaemonSet{}) if obj == nil { return nil, err } - return obj.(*apps_v1.DaemonSet), err + return obj.(*appsv1.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(daemonSet *apps_v1.DaemonSet) (*apps_v1.DaemonSet, error) { +func (c *FakeDaemonSets) UpdateStatus(daemonSet *appsv1.DaemonSet) (*appsv1.DaemonSet, error) { obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(daemonsetsResource, "status", c.ns, daemonSet), &apps_v1.DaemonSet{}) + Invokes(testing.NewUpdateSubresourceAction(daemonsetsResource, "status", c.ns, daemonSet), &appsv1.DaemonSet{}) if obj == nil { return nil, err } - return obj.(*apps_v1.DaemonSet), err + return obj.(*appsv1.DaemonSet), err } // Delete takes name of the daemonSet and deletes it. Returns an error if one occurs. func (c *FakeDaemonSets) Delete(name string, options *v1.DeleteOptions) error { _, err := c.Fake. - Invokes(testing.NewDeleteAction(daemonsetsResource, c.ns, name), &apps_v1.DaemonSet{}) + Invokes(testing.NewDeleteAction(daemonsetsResource, c.ns, name), &appsv1.DaemonSet{}) return err } @@ -124,17 +124,17 @@ func (c *FakeDaemonSets) Delete(name string, options *v1.DeleteOptions) error { func (c *FakeDaemonSets) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { action := testing.NewDeleteCollectionAction(daemonsetsResource, c.ns, listOptions) - _, err := c.Fake.Invokes(action, &apps_v1.DaemonSetList{}) + _, err := c.Fake.Invokes(action, &appsv1.DaemonSetList{}) return err } // Patch applies the patch and returns the patched daemonSet. -func (c *FakeDaemonSets) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *apps_v1.DaemonSet, err error) { +func (c *FakeDaemonSets) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *appsv1.DaemonSet, err error) { obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(daemonsetsResource, c.ns, name, data, subresources...), &apps_v1.DaemonSet{}) + Invokes(testing.NewPatchSubresourceAction(daemonsetsResource, c.ns, name, data, subresources...), &appsv1.DaemonSet{}) if obj == nil { return nil, err } - return obj.(*apps_v1.DaemonSet), err + return obj.(*appsv1.DaemonSet), err } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_deployment.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_deployment.go index dab4f40c32..2fbd82d6b8 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_deployment.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_deployment.go @@ -19,7 +19,7 @@ limitations under the License. package fake import ( - apps_v1 "k8s.io/api/apps/v1" + appsv1 "k8s.io/api/apps/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" schema "k8s.io/apimachinery/pkg/runtime/schema" @@ -39,20 +39,20 @@ var deploymentsResource = schema.GroupVersionResource{Group: "apps", Version: "v var deploymentsKind = schema.GroupVersionKind{Group: "apps", Version: "v1", Kind: "Deployment"} // Get takes name of the deployment, and returns the corresponding deployment object, and an error if there is any. -func (c *FakeDeployments) Get(name string, options v1.GetOptions) (result *apps_v1.Deployment, err error) { +func (c *FakeDeployments) Get(name string, options v1.GetOptions) (result *appsv1.Deployment, err error) { obj, err := c.Fake. - Invokes(testing.NewGetAction(deploymentsResource, c.ns, name), &apps_v1.Deployment{}) + Invokes(testing.NewGetAction(deploymentsResource, c.ns, name), &appsv1.Deployment{}) if obj == nil { return nil, err } - return obj.(*apps_v1.Deployment), err + return obj.(*appsv1.Deployment), err } // List takes label and field selectors, and returns the list of Deployments that match those selectors. -func (c *FakeDeployments) List(opts v1.ListOptions) (result *apps_v1.DeploymentList, err error) { +func (c *FakeDeployments) List(opts v1.ListOptions) (result *appsv1.DeploymentList, err error) { obj, err := c.Fake. - Invokes(testing.NewListAction(deploymentsResource, deploymentsKind, c.ns, opts), &apps_v1.DeploymentList{}) + Invokes(testing.NewListAction(deploymentsResource, deploymentsKind, c.ns, opts), &appsv1.DeploymentList{}) if obj == nil { return nil, err @@ -62,8 +62,8 @@ func (c *FakeDeployments) List(opts v1.ListOptions) (result *apps_v1.DeploymentL if label == nil { label = labels.Everything() } - list := &apps_v1.DeploymentList{ListMeta: obj.(*apps_v1.DeploymentList).ListMeta} - for _, item := range obj.(*apps_v1.DeploymentList).Items { + list := &appsv1.DeploymentList{ListMeta: obj.(*appsv1.DeploymentList).ListMeta} + for _, item := range obj.(*appsv1.DeploymentList).Items { if label.Matches(labels.Set(item.Labels)) { list.Items = append(list.Items, item) } @@ -79,43 +79,43 @@ func (c *FakeDeployments) Watch(opts v1.ListOptions) (watch.Interface, error) { } // 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(deployment *apps_v1.Deployment) (result *apps_v1.Deployment, err error) { +func (c *FakeDeployments) Create(deployment *appsv1.Deployment) (result *appsv1.Deployment, err error) { obj, err := c.Fake. - Invokes(testing.NewCreateAction(deploymentsResource, c.ns, deployment), &apps_v1.Deployment{}) + Invokes(testing.NewCreateAction(deploymentsResource, c.ns, deployment), &appsv1.Deployment{}) if obj == nil { return nil, err } - return obj.(*apps_v1.Deployment), err + return obj.(*appsv1.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(deployment *apps_v1.Deployment) (result *apps_v1.Deployment, err error) { +func (c *FakeDeployments) Update(deployment *appsv1.Deployment) (result *appsv1.Deployment, err error) { obj, err := c.Fake. - Invokes(testing.NewUpdateAction(deploymentsResource, c.ns, deployment), &apps_v1.Deployment{}) + Invokes(testing.NewUpdateAction(deploymentsResource, c.ns, deployment), &appsv1.Deployment{}) if obj == nil { return nil, err } - return obj.(*apps_v1.Deployment), err + return obj.(*appsv1.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(deployment *apps_v1.Deployment) (*apps_v1.Deployment, error) { +func (c *FakeDeployments) UpdateStatus(deployment *appsv1.Deployment) (*appsv1.Deployment, error) { obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(deploymentsResource, "status", c.ns, deployment), &apps_v1.Deployment{}) + Invokes(testing.NewUpdateSubresourceAction(deploymentsResource, "status", c.ns, deployment), &appsv1.Deployment{}) if obj == nil { return nil, err } - return obj.(*apps_v1.Deployment), err + return obj.(*appsv1.Deployment), err } // Delete takes name of the deployment and deletes it. Returns an error if one occurs. func (c *FakeDeployments) Delete(name string, options *v1.DeleteOptions) error { _, err := c.Fake. - Invokes(testing.NewDeleteAction(deploymentsResource, c.ns, name), &apps_v1.Deployment{}) + Invokes(testing.NewDeleteAction(deploymentsResource, c.ns, name), &appsv1.Deployment{}) return err } @@ -124,17 +124,17 @@ func (c *FakeDeployments) Delete(name string, options *v1.DeleteOptions) error { func (c *FakeDeployments) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { action := testing.NewDeleteCollectionAction(deploymentsResource, c.ns, listOptions) - _, err := c.Fake.Invokes(action, &apps_v1.DeploymentList{}) + _, err := c.Fake.Invokes(action, &appsv1.DeploymentList{}) return err } // Patch applies the patch and returns the patched deployment. -func (c *FakeDeployments) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *apps_v1.Deployment, err error) { +func (c *FakeDeployments) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *appsv1.Deployment, err error) { obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(deploymentsResource, c.ns, name, data, subresources...), &apps_v1.Deployment{}) + Invokes(testing.NewPatchSubresourceAction(deploymentsResource, c.ns, name, data, subresources...), &appsv1.Deployment{}) if obj == nil { return nil, err } - return obj.(*apps_v1.Deployment), err + return obj.(*appsv1.Deployment), err } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_replicaset.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_replicaset.go index 948091bed5..7b882c8630 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_replicaset.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_replicaset.go @@ -19,7 +19,7 @@ limitations under the License. package fake import ( - apps_v1 "k8s.io/api/apps/v1" + appsv1 "k8s.io/api/apps/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" schema "k8s.io/apimachinery/pkg/runtime/schema" @@ -39,20 +39,20 @@ var replicasetsResource = schema.GroupVersionResource{Group: "apps", Version: "v var replicasetsKind = schema.GroupVersionKind{Group: "apps", Version: "v1", Kind: "ReplicaSet"} // Get takes name of the replicaSet, and returns the corresponding replicaSet object, and an error if there is any. -func (c *FakeReplicaSets) Get(name string, options v1.GetOptions) (result *apps_v1.ReplicaSet, err error) { +func (c *FakeReplicaSets) Get(name string, options v1.GetOptions) (result *appsv1.ReplicaSet, err error) { obj, err := c.Fake. - Invokes(testing.NewGetAction(replicasetsResource, c.ns, name), &apps_v1.ReplicaSet{}) + Invokes(testing.NewGetAction(replicasetsResource, c.ns, name), &appsv1.ReplicaSet{}) if obj == nil { return nil, err } - return obj.(*apps_v1.ReplicaSet), err + return obj.(*appsv1.ReplicaSet), err } // List takes label and field selectors, and returns the list of ReplicaSets that match those selectors. -func (c *FakeReplicaSets) List(opts v1.ListOptions) (result *apps_v1.ReplicaSetList, err error) { +func (c *FakeReplicaSets) List(opts v1.ListOptions) (result *appsv1.ReplicaSetList, err error) { obj, err := c.Fake. - Invokes(testing.NewListAction(replicasetsResource, replicasetsKind, c.ns, opts), &apps_v1.ReplicaSetList{}) + Invokes(testing.NewListAction(replicasetsResource, replicasetsKind, c.ns, opts), &appsv1.ReplicaSetList{}) if obj == nil { return nil, err @@ -62,8 +62,8 @@ func (c *FakeReplicaSets) List(opts v1.ListOptions) (result *apps_v1.ReplicaSetL if label == nil { label = labels.Everything() } - list := &apps_v1.ReplicaSetList{ListMeta: obj.(*apps_v1.ReplicaSetList).ListMeta} - for _, item := range obj.(*apps_v1.ReplicaSetList).Items { + list := &appsv1.ReplicaSetList{ListMeta: obj.(*appsv1.ReplicaSetList).ListMeta} + for _, item := range obj.(*appsv1.ReplicaSetList).Items { if label.Matches(labels.Set(item.Labels)) { list.Items = append(list.Items, item) } @@ -79,43 +79,43 @@ func (c *FakeReplicaSets) Watch(opts v1.ListOptions) (watch.Interface, error) { } // 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(replicaSet *apps_v1.ReplicaSet) (result *apps_v1.ReplicaSet, err error) { +func (c *FakeReplicaSets) Create(replicaSet *appsv1.ReplicaSet) (result *appsv1.ReplicaSet, err error) { obj, err := c.Fake. - Invokes(testing.NewCreateAction(replicasetsResource, c.ns, replicaSet), &apps_v1.ReplicaSet{}) + Invokes(testing.NewCreateAction(replicasetsResource, c.ns, replicaSet), &appsv1.ReplicaSet{}) if obj == nil { return nil, err } - return obj.(*apps_v1.ReplicaSet), err + return obj.(*appsv1.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(replicaSet *apps_v1.ReplicaSet) (result *apps_v1.ReplicaSet, err error) { +func (c *FakeReplicaSets) Update(replicaSet *appsv1.ReplicaSet) (result *appsv1.ReplicaSet, err error) { obj, err := c.Fake. - Invokes(testing.NewUpdateAction(replicasetsResource, c.ns, replicaSet), &apps_v1.ReplicaSet{}) + Invokes(testing.NewUpdateAction(replicasetsResource, c.ns, replicaSet), &appsv1.ReplicaSet{}) if obj == nil { return nil, err } - return obj.(*apps_v1.ReplicaSet), err + return obj.(*appsv1.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(replicaSet *apps_v1.ReplicaSet) (*apps_v1.ReplicaSet, error) { +func (c *FakeReplicaSets) UpdateStatus(replicaSet *appsv1.ReplicaSet) (*appsv1.ReplicaSet, error) { obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(replicasetsResource, "status", c.ns, replicaSet), &apps_v1.ReplicaSet{}) + Invokes(testing.NewUpdateSubresourceAction(replicasetsResource, "status", c.ns, replicaSet), &appsv1.ReplicaSet{}) if obj == nil { return nil, err } - return obj.(*apps_v1.ReplicaSet), err + return obj.(*appsv1.ReplicaSet), err } // Delete takes name of the replicaSet and deletes it. Returns an error if one occurs. func (c *FakeReplicaSets) Delete(name string, options *v1.DeleteOptions) error { _, err := c.Fake. - Invokes(testing.NewDeleteAction(replicasetsResource, c.ns, name), &apps_v1.ReplicaSet{}) + Invokes(testing.NewDeleteAction(replicasetsResource, c.ns, name), &appsv1.ReplicaSet{}) return err } @@ -124,17 +124,17 @@ func (c *FakeReplicaSets) Delete(name string, options *v1.DeleteOptions) error { func (c *FakeReplicaSets) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { action := testing.NewDeleteCollectionAction(replicasetsResource, c.ns, listOptions) - _, err := c.Fake.Invokes(action, &apps_v1.ReplicaSetList{}) + _, err := c.Fake.Invokes(action, &appsv1.ReplicaSetList{}) return err } // Patch applies the patch and returns the patched replicaSet. -func (c *FakeReplicaSets) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *apps_v1.ReplicaSet, err error) { +func (c *FakeReplicaSets) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *appsv1.ReplicaSet, err error) { obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(replicasetsResource, c.ns, name, data, subresources...), &apps_v1.ReplicaSet{}) + Invokes(testing.NewPatchSubresourceAction(replicasetsResource, c.ns, name, data, subresources...), &appsv1.ReplicaSet{}) if obj == nil { return nil, err } - return obj.(*apps_v1.ReplicaSet), err + return obj.(*appsv1.ReplicaSet), err } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_statefulset.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_statefulset.go index 19cb2fad57..3cd643a597 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_statefulset.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_statefulset.go @@ -19,7 +19,7 @@ limitations under the License. package fake import ( - apps_v1 "k8s.io/api/apps/v1" + appsv1 "k8s.io/api/apps/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" schema "k8s.io/apimachinery/pkg/runtime/schema" @@ -39,20 +39,20 @@ var statefulsetsResource = schema.GroupVersionResource{Group: "apps", Version: " var statefulsetsKind = schema.GroupVersionKind{Group: "apps", Version: "v1", Kind: "StatefulSet"} // Get takes name of the statefulSet, and returns the corresponding statefulSet object, and an error if there is any. -func (c *FakeStatefulSets) Get(name string, options v1.GetOptions) (result *apps_v1.StatefulSet, err error) { +func (c *FakeStatefulSets) Get(name string, options v1.GetOptions) (result *appsv1.StatefulSet, err error) { obj, err := c.Fake. - Invokes(testing.NewGetAction(statefulsetsResource, c.ns, name), &apps_v1.StatefulSet{}) + Invokes(testing.NewGetAction(statefulsetsResource, c.ns, name), &appsv1.StatefulSet{}) if obj == nil { return nil, err } - return obj.(*apps_v1.StatefulSet), err + return obj.(*appsv1.StatefulSet), err } // List takes label and field selectors, and returns the list of StatefulSets that match those selectors. -func (c *FakeStatefulSets) List(opts v1.ListOptions) (result *apps_v1.StatefulSetList, err error) { +func (c *FakeStatefulSets) List(opts v1.ListOptions) (result *appsv1.StatefulSetList, err error) { obj, err := c.Fake. - Invokes(testing.NewListAction(statefulsetsResource, statefulsetsKind, c.ns, opts), &apps_v1.StatefulSetList{}) + Invokes(testing.NewListAction(statefulsetsResource, statefulsetsKind, c.ns, opts), &appsv1.StatefulSetList{}) if obj == nil { return nil, err @@ -62,8 +62,8 @@ func (c *FakeStatefulSets) List(opts v1.ListOptions) (result *apps_v1.StatefulSe if label == nil { label = labels.Everything() } - list := &apps_v1.StatefulSetList{ListMeta: obj.(*apps_v1.StatefulSetList).ListMeta} - for _, item := range obj.(*apps_v1.StatefulSetList).Items { + list := &appsv1.StatefulSetList{ListMeta: obj.(*appsv1.StatefulSetList).ListMeta} + for _, item := range obj.(*appsv1.StatefulSetList).Items { if label.Matches(labels.Set(item.Labels)) { list.Items = append(list.Items, item) } @@ -79,43 +79,43 @@ func (c *FakeStatefulSets) Watch(opts v1.ListOptions) (watch.Interface, error) { } // 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(statefulSet *apps_v1.StatefulSet) (result *apps_v1.StatefulSet, err error) { +func (c *FakeStatefulSets) Create(statefulSet *appsv1.StatefulSet) (result *appsv1.StatefulSet, err error) { obj, err := c.Fake. - Invokes(testing.NewCreateAction(statefulsetsResource, c.ns, statefulSet), &apps_v1.StatefulSet{}) + Invokes(testing.NewCreateAction(statefulsetsResource, c.ns, statefulSet), &appsv1.StatefulSet{}) if obj == nil { return nil, err } - return obj.(*apps_v1.StatefulSet), err + return obj.(*appsv1.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(statefulSet *apps_v1.StatefulSet) (result *apps_v1.StatefulSet, err error) { +func (c *FakeStatefulSets) Update(statefulSet *appsv1.StatefulSet) (result *appsv1.StatefulSet, err error) { obj, err := c.Fake. - Invokes(testing.NewUpdateAction(statefulsetsResource, c.ns, statefulSet), &apps_v1.StatefulSet{}) + Invokes(testing.NewUpdateAction(statefulsetsResource, c.ns, statefulSet), &appsv1.StatefulSet{}) if obj == nil { return nil, err } - return obj.(*apps_v1.StatefulSet), err + return obj.(*appsv1.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(statefulSet *apps_v1.StatefulSet) (*apps_v1.StatefulSet, error) { +func (c *FakeStatefulSets) UpdateStatus(statefulSet *appsv1.StatefulSet) (*appsv1.StatefulSet, error) { obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(statefulsetsResource, "status", c.ns, statefulSet), &apps_v1.StatefulSet{}) + Invokes(testing.NewUpdateSubresourceAction(statefulsetsResource, "status", c.ns, statefulSet), &appsv1.StatefulSet{}) if obj == nil { return nil, err } - return obj.(*apps_v1.StatefulSet), err + return obj.(*appsv1.StatefulSet), err } // Delete takes name of the statefulSet and deletes it. Returns an error if one occurs. func (c *FakeStatefulSets) Delete(name string, options *v1.DeleteOptions) error { _, err := c.Fake. - Invokes(testing.NewDeleteAction(statefulsetsResource, c.ns, name), &apps_v1.StatefulSet{}) + Invokes(testing.NewDeleteAction(statefulsetsResource, c.ns, name), &appsv1.StatefulSet{}) return err } @@ -124,17 +124,17 @@ func (c *FakeStatefulSets) Delete(name string, options *v1.DeleteOptions) error func (c *FakeStatefulSets) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { action := testing.NewDeleteCollectionAction(statefulsetsResource, c.ns, listOptions) - _, err := c.Fake.Invokes(action, &apps_v1.StatefulSetList{}) + _, err := c.Fake.Invokes(action, &appsv1.StatefulSetList{}) return err } // Patch applies the patch and returns the patched statefulSet. -func (c *FakeStatefulSets) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *apps_v1.StatefulSet, err error) { +func (c *FakeStatefulSets) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *appsv1.StatefulSet, err error) { obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(statefulsetsResource, c.ns, name, data, subresources...), &apps_v1.StatefulSet{}) + Invokes(testing.NewPatchSubresourceAction(statefulsetsResource, c.ns, name, data, subresources...), &appsv1.StatefulSet{}) if obj == nil { return nil, err } - return obj.(*apps_v1.StatefulSet), err + return obj.(*appsv1.StatefulSet), err } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/replicaset.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/replicaset.go index 21614cbe12..077941162d 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/replicaset.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/replicaset.go @@ -20,7 +20,7 @@ package v1 import ( v1 "k8s.io/api/apps/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" scheme "k8s.io/client-go/kubernetes/scheme" @@ -38,11 +38,11 @@ type ReplicaSetInterface interface { Create(*v1.ReplicaSet) (*v1.ReplicaSet, error) Update(*v1.ReplicaSet) (*v1.ReplicaSet, error) UpdateStatus(*v1.ReplicaSet) (*v1.ReplicaSet, error) - Delete(name string, options *meta_v1.DeleteOptions) error - DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error - Get(name string, options meta_v1.GetOptions) (*v1.ReplicaSet, error) - List(opts meta_v1.ListOptions) (*v1.ReplicaSetList, error) - Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Delete(name string, options *metav1.DeleteOptions) error + DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error + Get(name string, options metav1.GetOptions) (*v1.ReplicaSet, error) + List(opts metav1.ListOptions) (*v1.ReplicaSetList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.ReplicaSet, err error) ReplicaSetExpansion } @@ -62,7 +62,7 @@ func newReplicaSets(c *AppsV1Client, namespace string) *replicaSets { } // Get takes name of the replicaSet, and returns the corresponding replicaSet object, and an error if there is any. -func (c *replicaSets) Get(name string, options meta_v1.GetOptions) (result *v1.ReplicaSet, err error) { +func (c *replicaSets) Get(name string, options metav1.GetOptions) (result *v1.ReplicaSet, err error) { result = &v1.ReplicaSet{} err = c.client.Get(). Namespace(c.ns). @@ -75,7 +75,7 @@ func (c *replicaSets) Get(name string, options meta_v1.GetOptions) (result *v1.R } // List takes label and field selectors, and returns the list of ReplicaSets that match those selectors. -func (c *replicaSets) List(opts meta_v1.ListOptions) (result *v1.ReplicaSetList, err error) { +func (c *replicaSets) List(opts metav1.ListOptions) (result *v1.ReplicaSetList, err error) { result = &v1.ReplicaSetList{} err = c.client.Get(). Namespace(c.ns). @@ -87,7 +87,7 @@ func (c *replicaSets) List(opts meta_v1.ListOptions) (result *v1.ReplicaSetList, } // Watch returns a watch.Interface that watches the requested replicaSets. -func (c *replicaSets) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { +func (c *replicaSets) Watch(opts metav1.ListOptions) (watch.Interface, error) { opts.Watch = true return c.client.Get(). Namespace(c.ns). @@ -138,7 +138,7 @@ func (c *replicaSets) UpdateStatus(replicaSet *v1.ReplicaSet) (result *v1.Replic } // Delete takes name of the replicaSet and deletes it. Returns an error if one occurs. -func (c *replicaSets) Delete(name string, options *meta_v1.DeleteOptions) error { +func (c *replicaSets) Delete(name string, options *metav1.DeleteOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("replicasets"). @@ -149,7 +149,7 @@ func (c *replicaSets) Delete(name string, options *meta_v1.DeleteOptions) error } // DeleteCollection deletes a collection of objects. -func (c *replicaSets) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { +func (c *replicaSets) DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("replicasets"). diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/statefulset.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/statefulset.go index 3ef5b88801..54322d97d3 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/statefulset.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/statefulset.go @@ -20,7 +20,7 @@ package v1 import ( v1 "k8s.io/api/apps/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" scheme "k8s.io/client-go/kubernetes/scheme" @@ -38,11 +38,11 @@ type StatefulSetInterface interface { Create(*v1.StatefulSet) (*v1.StatefulSet, error) Update(*v1.StatefulSet) (*v1.StatefulSet, error) UpdateStatus(*v1.StatefulSet) (*v1.StatefulSet, error) - Delete(name string, options *meta_v1.DeleteOptions) error - DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error - Get(name string, options meta_v1.GetOptions) (*v1.StatefulSet, error) - List(opts meta_v1.ListOptions) (*v1.StatefulSetList, error) - Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Delete(name string, options *metav1.DeleteOptions) error + DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error + Get(name string, options metav1.GetOptions) (*v1.StatefulSet, error) + List(opts metav1.ListOptions) (*v1.StatefulSetList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.StatefulSet, err error) StatefulSetExpansion } @@ -62,7 +62,7 @@ func newStatefulSets(c *AppsV1Client, namespace string) *statefulSets { } // Get takes name of the statefulSet, and returns the corresponding statefulSet object, and an error if there is any. -func (c *statefulSets) Get(name string, options meta_v1.GetOptions) (result *v1.StatefulSet, err error) { +func (c *statefulSets) Get(name string, options metav1.GetOptions) (result *v1.StatefulSet, err error) { result = &v1.StatefulSet{} err = c.client.Get(). Namespace(c.ns). @@ -75,7 +75,7 @@ func (c *statefulSets) Get(name string, options meta_v1.GetOptions) (result *v1. } // List takes label and field selectors, and returns the list of StatefulSets that match those selectors. -func (c *statefulSets) List(opts meta_v1.ListOptions) (result *v1.StatefulSetList, err error) { +func (c *statefulSets) List(opts metav1.ListOptions) (result *v1.StatefulSetList, err error) { result = &v1.StatefulSetList{} err = c.client.Get(). Namespace(c.ns). @@ -87,7 +87,7 @@ func (c *statefulSets) List(opts meta_v1.ListOptions) (result *v1.StatefulSetLis } // Watch returns a watch.Interface that watches the requested statefulSets. -func (c *statefulSets) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { +func (c *statefulSets) Watch(opts metav1.ListOptions) (watch.Interface, error) { opts.Watch = true return c.client.Get(). Namespace(c.ns). @@ -138,7 +138,7 @@ func (c *statefulSets) UpdateStatus(statefulSet *v1.StatefulSet) (result *v1.Sta } // Delete takes name of the statefulSet and deletes it. Returns an error if one occurs. -func (c *statefulSets) Delete(name string, options *meta_v1.DeleteOptions) error { +func (c *statefulSets) Delete(name string, options *metav1.DeleteOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("statefulsets"). @@ -149,7 +149,7 @@ func (c *statefulSets) Delete(name string, options *meta_v1.DeleteOptions) error } // DeleteCollection deletes a collection of objects. -func (c *statefulSets) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { +func (c *statefulSets) DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("statefulsets"). diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/BUILD index 18dca71634..34a2f829d1 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/BUILD @@ -16,15 +16,16 @@ go_library( "scale.go", "statefulset.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1", importpath = "k8s.io/client-go/kubernetes/typed/apps/v1beta1", deps = [ - "//vendor/k8s.io/api/apps/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/api/apps/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/BUILD index ef39b5d3d7..d4460b98b6 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/BUILD @@ -15,17 +15,18 @@ go_library( "fake_scale.go", "fake_statefulset.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake", importpath = "k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake", deps = [ - "//vendor/k8s.io/api/apps/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", + "//staging/src/k8s.io/api/apps/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/apps/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/BUILD index 0af42bcf8c..246b4327fd 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/BUILD @@ -18,15 +18,16 @@ go_library( "scale.go", "statefulset.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2", importpath = "k8s.io/client-go/kubernetes/typed/apps/v1beta2", deps = [ - "//vendor/k8s.io/api/apps/v1beta2:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/api/apps/v1beta2:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/BUILD index d965ed1b22..37b34afd97 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/BUILD @@ -17,17 +17,18 @@ go_library( "fake_scale.go", "fake_statefulset.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake", importpath = "k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake", deps = [ - "//vendor/k8s.io/api/apps/v1beta2:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", + "//staging/src/k8s.io/api/apps/v1beta2:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/apps/v1beta2:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/BUILD index b89498dea7..981ad19777 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/BUILD @@ -14,12 +14,13 @@ go_library( "tokenreview.go", "tokenreview_expansion.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1", importpath = "k8s.io/client-go/kubernetes/typed/authentication/v1", deps = [ - "//vendor/k8s.io/api/authentication/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/api/authentication/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/BUILD index b2c995baf3..49c7137c9a 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/BUILD @@ -13,12 +13,13 @@ go_library( "fake_tokenreview.go", "fake_tokenreview_expansion.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake", importpath = "k8s.io/client-go/kubernetes/typed/authentication/v1/fake", deps = [ - "//vendor/k8s.io/api/authentication/v1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/authentication/v1:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", + "//staging/src/k8s.io/api/authentication/v1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/authentication/v1:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/BUILD index ddbe7e984f..06cfd13c3a 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/BUILD @@ -14,12 +14,13 @@ go_library( "tokenreview.go", "tokenreview_expansion.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1", importpath = "k8s.io/client-go/kubernetes/typed/authentication/v1beta1", deps = [ - "//vendor/k8s.io/api/authentication/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/api/authentication/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/BUILD index b9800aac70..a0abef9d1d 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/BUILD @@ -13,12 +13,13 @@ go_library( "fake_tokenreview.go", "fake_tokenreview_expansion.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake", importpath = "k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake", deps = [ - "//vendor/k8s.io/api/authentication/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", + "//staging/src/k8s.io/api/authentication/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/authentication/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/BUILD index f6255f38c6..11c640c058 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/BUILD @@ -20,12 +20,13 @@ go_library( "subjectaccessreview.go", "subjectaccessreview_expansion.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1", importpath = "k8s.io/client-go/kubernetes/typed/authorization/v1", deps = [ - "//vendor/k8s.io/api/authorization/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/api/authorization/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/BUILD index cfea68c786..91291d46d6 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/BUILD @@ -19,12 +19,13 @@ go_library( "fake_subjectaccessreview.go", "fake_subjectaccessreview_expansion.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake", importpath = "k8s.io/client-go/kubernetes/typed/authorization/v1/fake", deps = [ - "//vendor/k8s.io/api/authorization/v1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/authorization/v1:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", + "//staging/src/k8s.io/api/authorization/v1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/authorization/v1:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/BUILD index 793ec39b50..0643a927d4 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/BUILD @@ -20,12 +20,13 @@ go_library( "subjectaccessreview.go", "subjectaccessreview_expansion.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1", importpath = "k8s.io/client-go/kubernetes/typed/authorization/v1beta1", deps = [ - "//vendor/k8s.io/api/authorization/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/api/authorization/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/BUILD index d3fd9e81bd..31085a76ca 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/BUILD @@ -20,12 +20,13 @@ go_library( "fake_subjectaccessreview.go", "fake_subjectaccessreview_expansion.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake", importpath = "k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake", deps = [ - "//vendor/k8s.io/api/authorization/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", + "//staging/src/k8s.io/api/authorization/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/authorization/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/BUILD index 30e434a681..161aba344a 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/BUILD @@ -13,15 +13,16 @@ go_library( "generated_expansion.go", "horizontalpodautoscaler.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1", importpath = "k8s.io/client-go/kubernetes/typed/autoscaling/v1", deps = [ - "//vendor/k8s.io/api/autoscaling/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/api/autoscaling/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/BUILD index 3cabf19c55..c9e7ec4a1c 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/BUILD @@ -12,17 +12,18 @@ go_library( "fake_autoscaling_client.go", "fake_horizontalpodautoscaler.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake", importpath = "k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake", deps = [ - "//vendor/k8s.io/api/autoscaling/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", + "//staging/src/k8s.io/api/autoscaling/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/autoscaling/v1:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/fake_horizontalpodautoscaler.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/fake_horizontalpodautoscaler.go index f774fc5dc0..7df8343753 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/fake_horizontalpodautoscaler.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/fake_horizontalpodautoscaler.go @@ -19,7 +19,7 @@ limitations under the License. package fake import ( - autoscaling_v1 "k8s.io/api/autoscaling/v1" + autoscalingv1 "k8s.io/api/autoscaling/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" schema "k8s.io/apimachinery/pkg/runtime/schema" @@ -39,20 +39,20 @@ var horizontalpodautoscalersResource = schema.GroupVersionResource{Group: "autos var horizontalpodautoscalersKind = schema.GroupVersionKind{Group: "autoscaling", Version: "v1", Kind: "HorizontalPodAutoscaler"} // Get takes name of the horizontalPodAutoscaler, and returns the corresponding horizontalPodAutoscaler object, and an error if there is any. -func (c *FakeHorizontalPodAutoscalers) Get(name string, options v1.GetOptions) (result *autoscaling_v1.HorizontalPodAutoscaler, err error) { +func (c *FakeHorizontalPodAutoscalers) Get(name string, options v1.GetOptions) (result *autoscalingv1.HorizontalPodAutoscaler, err error) { obj, err := c.Fake. - Invokes(testing.NewGetAction(horizontalpodautoscalersResource, c.ns, name), &autoscaling_v1.HorizontalPodAutoscaler{}) + Invokes(testing.NewGetAction(horizontalpodautoscalersResource, c.ns, name), &autoscalingv1.HorizontalPodAutoscaler{}) if obj == nil { return nil, err } - return obj.(*autoscaling_v1.HorizontalPodAutoscaler), err + return obj.(*autoscalingv1.HorizontalPodAutoscaler), err } // List takes label and field selectors, and returns the list of HorizontalPodAutoscalers that match those selectors. -func (c *FakeHorizontalPodAutoscalers) List(opts v1.ListOptions) (result *autoscaling_v1.HorizontalPodAutoscalerList, err error) { +func (c *FakeHorizontalPodAutoscalers) List(opts v1.ListOptions) (result *autoscalingv1.HorizontalPodAutoscalerList, err error) { obj, err := c.Fake. - Invokes(testing.NewListAction(horizontalpodautoscalersResource, horizontalpodautoscalersKind, c.ns, opts), &autoscaling_v1.HorizontalPodAutoscalerList{}) + Invokes(testing.NewListAction(horizontalpodautoscalersResource, horizontalpodautoscalersKind, c.ns, opts), &autoscalingv1.HorizontalPodAutoscalerList{}) if obj == nil { return nil, err @@ -62,8 +62,8 @@ func (c *FakeHorizontalPodAutoscalers) List(opts v1.ListOptions) (result *autosc if label == nil { label = labels.Everything() } - list := &autoscaling_v1.HorizontalPodAutoscalerList{ListMeta: obj.(*autoscaling_v1.HorizontalPodAutoscalerList).ListMeta} - for _, item := range obj.(*autoscaling_v1.HorizontalPodAutoscalerList).Items { + list := &autoscalingv1.HorizontalPodAutoscalerList{ListMeta: obj.(*autoscalingv1.HorizontalPodAutoscalerList).ListMeta} + for _, item := range obj.(*autoscalingv1.HorizontalPodAutoscalerList).Items { if label.Matches(labels.Set(item.Labels)) { list.Items = append(list.Items, item) } @@ -79,43 +79,43 @@ func (c *FakeHorizontalPodAutoscalers) Watch(opts v1.ListOptions) (watch.Interfa } // 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(horizontalPodAutoscaler *autoscaling_v1.HorizontalPodAutoscaler) (result *autoscaling_v1.HorizontalPodAutoscaler, err error) { +func (c *FakeHorizontalPodAutoscalers) Create(horizontalPodAutoscaler *autoscalingv1.HorizontalPodAutoscaler) (result *autoscalingv1.HorizontalPodAutoscaler, err error) { obj, err := c.Fake. - Invokes(testing.NewCreateAction(horizontalpodautoscalersResource, c.ns, horizontalPodAutoscaler), &autoscaling_v1.HorizontalPodAutoscaler{}) + Invokes(testing.NewCreateAction(horizontalpodautoscalersResource, c.ns, horizontalPodAutoscaler), &autoscalingv1.HorizontalPodAutoscaler{}) if obj == nil { return nil, err } - return obj.(*autoscaling_v1.HorizontalPodAutoscaler), err + return obj.(*autoscalingv1.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(horizontalPodAutoscaler *autoscaling_v1.HorizontalPodAutoscaler) (result *autoscaling_v1.HorizontalPodAutoscaler, err error) { +func (c *FakeHorizontalPodAutoscalers) Update(horizontalPodAutoscaler *autoscalingv1.HorizontalPodAutoscaler) (result *autoscalingv1.HorizontalPodAutoscaler, err error) { obj, err := c.Fake. - Invokes(testing.NewUpdateAction(horizontalpodautoscalersResource, c.ns, horizontalPodAutoscaler), &autoscaling_v1.HorizontalPodAutoscaler{}) + Invokes(testing.NewUpdateAction(horizontalpodautoscalersResource, c.ns, horizontalPodAutoscaler), &autoscalingv1.HorizontalPodAutoscaler{}) if obj == nil { return nil, err } - return obj.(*autoscaling_v1.HorizontalPodAutoscaler), err + return obj.(*autoscalingv1.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(horizontalPodAutoscaler *autoscaling_v1.HorizontalPodAutoscaler) (*autoscaling_v1.HorizontalPodAutoscaler, error) { +func (c *FakeHorizontalPodAutoscalers) UpdateStatus(horizontalPodAutoscaler *autoscalingv1.HorizontalPodAutoscaler) (*autoscalingv1.HorizontalPodAutoscaler, error) { obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(horizontalpodautoscalersResource, "status", c.ns, horizontalPodAutoscaler), &autoscaling_v1.HorizontalPodAutoscaler{}) + Invokes(testing.NewUpdateSubresourceAction(horizontalpodautoscalersResource, "status", c.ns, horizontalPodAutoscaler), &autoscalingv1.HorizontalPodAutoscaler{}) if obj == nil { return nil, err } - return obj.(*autoscaling_v1.HorizontalPodAutoscaler), err + return obj.(*autoscalingv1.HorizontalPodAutoscaler), err } // Delete takes name of the horizontalPodAutoscaler and deletes it. Returns an error if one occurs. func (c *FakeHorizontalPodAutoscalers) Delete(name string, options *v1.DeleteOptions) error { _, err := c.Fake. - Invokes(testing.NewDeleteAction(horizontalpodautoscalersResource, c.ns, name), &autoscaling_v1.HorizontalPodAutoscaler{}) + Invokes(testing.NewDeleteAction(horizontalpodautoscalersResource, c.ns, name), &autoscalingv1.HorizontalPodAutoscaler{}) return err } @@ -124,17 +124,17 @@ func (c *FakeHorizontalPodAutoscalers) Delete(name string, options *v1.DeleteOpt func (c *FakeHorizontalPodAutoscalers) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { action := testing.NewDeleteCollectionAction(horizontalpodautoscalersResource, c.ns, listOptions) - _, err := c.Fake.Invokes(action, &autoscaling_v1.HorizontalPodAutoscalerList{}) + _, err := c.Fake.Invokes(action, &autoscalingv1.HorizontalPodAutoscalerList{}) return err } // Patch applies the patch and returns the patched horizontalPodAutoscaler. -func (c *FakeHorizontalPodAutoscalers) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *autoscaling_v1.HorizontalPodAutoscaler, err error) { +func (c *FakeHorizontalPodAutoscalers) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *autoscalingv1.HorizontalPodAutoscaler, err error) { obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(horizontalpodautoscalersResource, c.ns, name, data, subresources...), &autoscaling_v1.HorizontalPodAutoscaler{}) + Invokes(testing.NewPatchSubresourceAction(horizontalpodautoscalersResource, c.ns, name, data, subresources...), &autoscalingv1.HorizontalPodAutoscaler{}) if obj == nil { return nil, err } - return obj.(*autoscaling_v1.HorizontalPodAutoscaler), err + return obj.(*autoscalingv1.HorizontalPodAutoscaler), err } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/horizontalpodautoscaler.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/horizontalpodautoscaler.go index 2da25e96b5..6891b6b63d 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/horizontalpodautoscaler.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/horizontalpodautoscaler.go @@ -20,7 +20,7 @@ package v1 import ( v1 "k8s.io/api/autoscaling/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" scheme "k8s.io/client-go/kubernetes/scheme" @@ -38,11 +38,11 @@ type HorizontalPodAutoscalerInterface interface { Create(*v1.HorizontalPodAutoscaler) (*v1.HorizontalPodAutoscaler, error) Update(*v1.HorizontalPodAutoscaler) (*v1.HorizontalPodAutoscaler, error) UpdateStatus(*v1.HorizontalPodAutoscaler) (*v1.HorizontalPodAutoscaler, error) - Delete(name string, options *meta_v1.DeleteOptions) error - DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error - Get(name string, options meta_v1.GetOptions) (*v1.HorizontalPodAutoscaler, error) - List(opts meta_v1.ListOptions) (*v1.HorizontalPodAutoscalerList, error) - Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Delete(name string, options *metav1.DeleteOptions) error + DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error + Get(name string, options metav1.GetOptions) (*v1.HorizontalPodAutoscaler, error) + List(opts metav1.ListOptions) (*v1.HorizontalPodAutoscalerList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.HorizontalPodAutoscaler, err error) HorizontalPodAutoscalerExpansion } @@ -62,7 +62,7 @@ func newHorizontalPodAutoscalers(c *AutoscalingV1Client, namespace string) *hori } // Get takes name of the horizontalPodAutoscaler, and returns the corresponding horizontalPodAutoscaler object, and an error if there is any. -func (c *horizontalPodAutoscalers) Get(name string, options meta_v1.GetOptions) (result *v1.HorizontalPodAutoscaler, err error) { +func (c *horizontalPodAutoscalers) Get(name string, options metav1.GetOptions) (result *v1.HorizontalPodAutoscaler, err error) { result = &v1.HorizontalPodAutoscaler{} err = c.client.Get(). Namespace(c.ns). @@ -75,7 +75,7 @@ func (c *horizontalPodAutoscalers) Get(name string, options meta_v1.GetOptions) } // List takes label and field selectors, and returns the list of HorizontalPodAutoscalers that match those selectors. -func (c *horizontalPodAutoscalers) List(opts meta_v1.ListOptions) (result *v1.HorizontalPodAutoscalerList, err error) { +func (c *horizontalPodAutoscalers) List(opts metav1.ListOptions) (result *v1.HorizontalPodAutoscalerList, err error) { result = &v1.HorizontalPodAutoscalerList{} err = c.client.Get(). Namespace(c.ns). @@ -87,7 +87,7 @@ func (c *horizontalPodAutoscalers) List(opts meta_v1.ListOptions) (result *v1.Ho } // Watch returns a watch.Interface that watches the requested horizontalPodAutoscalers. -func (c *horizontalPodAutoscalers) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { +func (c *horizontalPodAutoscalers) Watch(opts metav1.ListOptions) (watch.Interface, error) { opts.Watch = true return c.client.Get(). Namespace(c.ns). @@ -138,7 +138,7 @@ func (c *horizontalPodAutoscalers) UpdateStatus(horizontalPodAutoscaler *v1.Hori } // Delete takes name of the horizontalPodAutoscaler and deletes it. Returns an error if one occurs. -func (c *horizontalPodAutoscalers) Delete(name string, options *meta_v1.DeleteOptions) error { +func (c *horizontalPodAutoscalers) Delete(name string, options *metav1.DeleteOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("horizontalpodautoscalers"). @@ -149,7 +149,7 @@ func (c *horizontalPodAutoscalers) Delete(name string, options *meta_v1.DeleteOp } // DeleteCollection deletes a collection of objects. -func (c *horizontalPodAutoscalers) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { +func (c *horizontalPodAutoscalers) DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("horizontalpodautoscalers"). diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/BUILD index 1bb145072b..44def4ff28 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/BUILD @@ -8,16 +8,17 @@ go_library( "generated_expansion.go", "horizontalpodautoscaler.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1", importpath = "k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/api/autoscaling/v2beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/api/autoscaling/v2beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/fake/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/fake/BUILD index 6d7d873267..90a65333d3 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/fake/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/fake/BUILD @@ -7,18 +7,19 @@ go_library( "fake_autoscaling_client.go", "fake_horizontalpodautoscaler.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/fake", importpath = "k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/fake", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/api/autoscaling/v2beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", + "//staging/src/k8s.io/api/autoscaling/v2beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/BUILD index 2af6de3640..c3af5d122e 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/BUILD @@ -13,15 +13,16 @@ go_library( "generated_expansion.go", "job.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/batch/v1", importpath = "k8s.io/client-go/kubernetes/typed/batch/v1", deps = [ - "//vendor/k8s.io/api/batch/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/api/batch/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/BUILD index 384e15eee1..4231f2f09a 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/BUILD @@ -12,17 +12,18 @@ go_library( "fake_batch_client.go", "fake_job.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake", importpath = "k8s.io/client-go/kubernetes/typed/batch/v1/fake", deps = [ - "//vendor/k8s.io/api/batch/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/batch/v1:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", + "//staging/src/k8s.io/api/batch/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/batch/v1:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/fake_job.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/fake_job.go index 6a83115ba8..f12619bb42 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/fake_job.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/fake_job.go @@ -19,7 +19,7 @@ limitations under the License. package fake import ( - batch_v1 "k8s.io/api/batch/v1" + batchv1 "k8s.io/api/batch/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" schema "k8s.io/apimachinery/pkg/runtime/schema" @@ -39,20 +39,20 @@ var jobsResource = schema.GroupVersionResource{Group: "batch", Version: "v1", Re var jobsKind = schema.GroupVersionKind{Group: "batch", Version: "v1", Kind: "Job"} // Get takes name of the job, and returns the corresponding job object, and an error if there is any. -func (c *FakeJobs) Get(name string, options v1.GetOptions) (result *batch_v1.Job, err error) { +func (c *FakeJobs) Get(name string, options v1.GetOptions) (result *batchv1.Job, err error) { obj, err := c.Fake. - Invokes(testing.NewGetAction(jobsResource, c.ns, name), &batch_v1.Job{}) + Invokes(testing.NewGetAction(jobsResource, c.ns, name), &batchv1.Job{}) if obj == nil { return nil, err } - return obj.(*batch_v1.Job), err + return obj.(*batchv1.Job), err } // List takes label and field selectors, and returns the list of Jobs that match those selectors. -func (c *FakeJobs) List(opts v1.ListOptions) (result *batch_v1.JobList, err error) { +func (c *FakeJobs) List(opts v1.ListOptions) (result *batchv1.JobList, err error) { obj, err := c.Fake. - Invokes(testing.NewListAction(jobsResource, jobsKind, c.ns, opts), &batch_v1.JobList{}) + Invokes(testing.NewListAction(jobsResource, jobsKind, c.ns, opts), &batchv1.JobList{}) if obj == nil { return nil, err @@ -62,8 +62,8 @@ func (c *FakeJobs) List(opts v1.ListOptions) (result *batch_v1.JobList, err erro if label == nil { label = labels.Everything() } - list := &batch_v1.JobList{ListMeta: obj.(*batch_v1.JobList).ListMeta} - for _, item := range obj.(*batch_v1.JobList).Items { + list := &batchv1.JobList{ListMeta: obj.(*batchv1.JobList).ListMeta} + for _, item := range obj.(*batchv1.JobList).Items { if label.Matches(labels.Set(item.Labels)) { list.Items = append(list.Items, item) } @@ -79,43 +79,43 @@ func (c *FakeJobs) Watch(opts v1.ListOptions) (watch.Interface, error) { } // 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(job *batch_v1.Job) (result *batch_v1.Job, err error) { +func (c *FakeJobs) Create(job *batchv1.Job) (result *batchv1.Job, err error) { obj, err := c.Fake. - Invokes(testing.NewCreateAction(jobsResource, c.ns, job), &batch_v1.Job{}) + Invokes(testing.NewCreateAction(jobsResource, c.ns, job), &batchv1.Job{}) if obj == nil { return nil, err } - return obj.(*batch_v1.Job), err + return obj.(*batchv1.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(job *batch_v1.Job) (result *batch_v1.Job, err error) { +func (c *FakeJobs) Update(job *batchv1.Job) (result *batchv1.Job, err error) { obj, err := c.Fake. - Invokes(testing.NewUpdateAction(jobsResource, c.ns, job), &batch_v1.Job{}) + Invokes(testing.NewUpdateAction(jobsResource, c.ns, job), &batchv1.Job{}) if obj == nil { return nil, err } - return obj.(*batch_v1.Job), err + return obj.(*batchv1.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(job *batch_v1.Job) (*batch_v1.Job, error) { +func (c *FakeJobs) UpdateStatus(job *batchv1.Job) (*batchv1.Job, error) { obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(jobsResource, "status", c.ns, job), &batch_v1.Job{}) + Invokes(testing.NewUpdateSubresourceAction(jobsResource, "status", c.ns, job), &batchv1.Job{}) if obj == nil { return nil, err } - return obj.(*batch_v1.Job), err + return obj.(*batchv1.Job), err } // Delete takes name of the job and deletes it. Returns an error if one occurs. func (c *FakeJobs) Delete(name string, options *v1.DeleteOptions) error { _, err := c.Fake. - Invokes(testing.NewDeleteAction(jobsResource, c.ns, name), &batch_v1.Job{}) + Invokes(testing.NewDeleteAction(jobsResource, c.ns, name), &batchv1.Job{}) return err } @@ -124,17 +124,17 @@ func (c *FakeJobs) Delete(name string, options *v1.DeleteOptions) error { func (c *FakeJobs) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { action := testing.NewDeleteCollectionAction(jobsResource, c.ns, listOptions) - _, err := c.Fake.Invokes(action, &batch_v1.JobList{}) + _, err := c.Fake.Invokes(action, &batchv1.JobList{}) return err } // Patch applies the patch and returns the patched job. -func (c *FakeJobs) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *batch_v1.Job, err error) { +func (c *FakeJobs) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *batchv1.Job, err error) { obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(jobsResource, c.ns, name, data, subresources...), &batch_v1.Job{}) + Invokes(testing.NewPatchSubresourceAction(jobsResource, c.ns, name, data, subresources...), &batchv1.Job{}) if obj == nil { return nil, err } - return obj.(*batch_v1.Job), err + return obj.(*batchv1.Job), err } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/job.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/job.go index f714d3de5a..ba8332a9a2 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/job.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/job.go @@ -20,7 +20,7 @@ package v1 import ( v1 "k8s.io/api/batch/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" scheme "k8s.io/client-go/kubernetes/scheme" @@ -38,11 +38,11 @@ type JobInterface interface { Create(*v1.Job) (*v1.Job, error) Update(*v1.Job) (*v1.Job, error) UpdateStatus(*v1.Job) (*v1.Job, error) - Delete(name string, options *meta_v1.DeleteOptions) error - DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error - Get(name string, options meta_v1.GetOptions) (*v1.Job, error) - List(opts meta_v1.ListOptions) (*v1.JobList, error) - Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Delete(name string, options *metav1.DeleteOptions) error + DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error + Get(name string, options metav1.GetOptions) (*v1.Job, error) + List(opts metav1.ListOptions) (*v1.JobList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Job, err error) JobExpansion } @@ -62,7 +62,7 @@ func newJobs(c *BatchV1Client, namespace string) *jobs { } // Get takes name of the job, and returns the corresponding job object, and an error if there is any. -func (c *jobs) Get(name string, options meta_v1.GetOptions) (result *v1.Job, err error) { +func (c *jobs) Get(name string, options metav1.GetOptions) (result *v1.Job, err error) { result = &v1.Job{} err = c.client.Get(). Namespace(c.ns). @@ -75,7 +75,7 @@ func (c *jobs) Get(name string, options meta_v1.GetOptions) (result *v1.Job, err } // List takes label and field selectors, and returns the list of Jobs that match those selectors. -func (c *jobs) List(opts meta_v1.ListOptions) (result *v1.JobList, err error) { +func (c *jobs) List(opts metav1.ListOptions) (result *v1.JobList, err error) { result = &v1.JobList{} err = c.client.Get(). Namespace(c.ns). @@ -87,7 +87,7 @@ func (c *jobs) List(opts meta_v1.ListOptions) (result *v1.JobList, err error) { } // Watch returns a watch.Interface that watches the requested jobs. -func (c *jobs) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { +func (c *jobs) Watch(opts metav1.ListOptions) (watch.Interface, error) { opts.Watch = true return c.client.Get(). Namespace(c.ns). @@ -138,7 +138,7 @@ func (c *jobs) UpdateStatus(job *v1.Job) (result *v1.Job, err error) { } // Delete takes name of the job and deletes it. Returns an error if one occurs. -func (c *jobs) Delete(name string, options *meta_v1.DeleteOptions) error { +func (c *jobs) Delete(name string, options *metav1.DeleteOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("jobs"). @@ -149,7 +149,7 @@ func (c *jobs) Delete(name string, options *meta_v1.DeleteOptions) error { } // DeleteCollection deletes a collection of objects. -func (c *jobs) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { +func (c *jobs) DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("jobs"). diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/BUILD index 58e0a6afab..f542eed73c 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/BUILD @@ -13,15 +13,16 @@ go_library( "doc.go", "generated_expansion.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1", importpath = "k8s.io/client-go/kubernetes/typed/batch/v1beta1", deps = [ - "//vendor/k8s.io/api/batch/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/api/batch/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/fake/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/fake/BUILD index 8fd1c81ec5..28822b4ceb 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/fake/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/fake/BUILD @@ -12,17 +12,18 @@ go_library( "fake_batch_client.go", "fake_cronjob.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/fake", importpath = "k8s.io/client-go/kubernetes/typed/batch/v1beta1/fake", deps = [ - "//vendor/k8s.io/api/batch/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", + "//staging/src/k8s.io/api/batch/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/batch/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/BUILD index c698053adf..8c9608024f 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/BUILD @@ -13,15 +13,16 @@ go_library( "doc.go", "generated_expansion.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1", importpath = "k8s.io/client-go/kubernetes/typed/batch/v2alpha1", deps = [ - "//vendor/k8s.io/api/batch/v2alpha1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/api/batch/v2alpha1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake/BUILD index 6594703738..4bbb8a2939 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake/BUILD @@ -12,17 +12,18 @@ go_library( "fake_batch_client.go", "fake_cronjob.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake", importpath = "k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake", deps = [ - "//vendor/k8s.io/api/batch/v2alpha1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", + "//staging/src/k8s.io/api/batch/v2alpha1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/batch/v2alpha1:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/BUILD index 1caeb018f8..0e838c17fc 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/BUILD @@ -14,15 +14,16 @@ go_library( "doc.go", "generated_expansion.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1", importpath = "k8s.io/client-go/kubernetes/typed/certificates/v1beta1", deps = [ - "//vendor/k8s.io/api/certificates/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/api/certificates/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/BUILD index 6fa63d82a6..8ff9a27c82 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/BUILD @@ -13,17 +13,18 @@ go_library( "fake_certificatesigningrequest.go", "fake_certificatesigningrequest_expansion.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake", importpath = "k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake", deps = [ - "//vendor/k8s.io/api/certificates/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", + "//staging/src/k8s.io/api/certificates/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/certificates/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/BUILD new file mode 100644 index 0000000000..0dd7f096b4 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/BUILD @@ -0,0 +1,40 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = [ + "coordination_client.go", + "doc.go", + "generated_expansion.go", + "lease.go", + ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1", + importpath = "k8s.io/client-go/kubernetes/typed/coordination/v1beta1", + visibility = ["//visibility:public"], + deps = [ + "//staging/src/k8s.io/api/coordination/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [ + ":package-srcs", + "//staging/src/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake:all-srcs", + ], + tags = ["automanaged"], + visibility = ["//visibility:public"], +) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/coordination_client.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/coordination_client.go new file mode 100644 index 0000000000..91a764843e --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/coordination_client.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 client-gen. DO NOT EDIT. + +package v1beta1 + +import ( + v1beta1 "k8s.io/api/coordination/v1beta1" + serializer "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/client-go/kubernetes/scheme" + rest "k8s.io/client-go/rest" +) + +type CoordinationV1beta1Interface interface { + RESTClient() rest.Interface + LeasesGetter +} + +// CoordinationV1beta1Client is used to interact with features provided by the coordination.k8s.io group. +type CoordinationV1beta1Client struct { + restClient rest.Interface +} + +func (c *CoordinationV1beta1Client) Leases(namespace string) LeaseInterface { + return newLeases(c, namespace) +} + +// NewForConfig creates a new CoordinationV1beta1Client for the given config. +func NewForConfig(c *rest.Config) (*CoordinationV1beta1Client, error) { + config := *c + if err := setConfigDefaults(&config); err != nil { + return nil, err + } + client, err := rest.RESTClientFor(&config) + if err != nil { + return nil, err + } + return &CoordinationV1beta1Client{client}, nil +} + +// NewForConfigOrDie creates a new CoordinationV1beta1Client for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *CoordinationV1beta1Client { + client, err := NewForConfig(c) + if err != nil { + panic(err) + } + return client +} + +// New creates a new CoordinationV1beta1Client for the given RESTClient. +func New(c rest.Interface) *CoordinationV1beta1Client { + return &CoordinationV1beta1Client{c} +} + +func setConfigDefaults(config *rest.Config) error { + gv := v1beta1.SchemeGroupVersion + config.GroupVersion = &gv + config.APIPath = "/apis" + config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: scheme.Codecs} + + 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 *CoordinationV1beta1Client) RESTClient() rest.Interface { + if c == nil { + return nil + } + return c.restClient +} diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/doc.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/doc.go new file mode 100644 index 0000000000..771101956f --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/coordination/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/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake/BUILD new file mode 100644 index 0000000000..62caae70f9 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake/BUILD @@ -0,0 +1,38 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "fake_coordination_client.go", + "fake_lease.go", + ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake", + importpath = "k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake", + visibility = ["//visibility:public"], + deps = [ + "//staging/src/k8s.io/api/coordination/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/coordination/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], + visibility = ["//visibility:public"], +) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake/doc.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake/doc.go new file mode 100644 index 0000000000..16f4439906 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/coordination/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/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake/fake_coordination_client.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake/fake_coordination_client.go new file mode 100644 index 0000000000..f583b466e2 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/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 ( + v1beta1 "k8s.io/client-go/kubernetes/typed/coordination/v1beta1" + rest "k8s.io/client-go/rest" + testing "k8s.io/client-go/testing" +) + +type FakeCoordinationV1beta1 struct { + *testing.Fake +} + +func (c *FakeCoordinationV1beta1) Leases(namespace string) v1beta1.LeaseInterface { + return &FakeLeases{c, namespace} +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *FakeCoordinationV1beta1) RESTClient() rest.Interface { + var ret *rest.RESTClient + return ret +} diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake/fake_lease.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake/fake_lease.go new file mode 100644 index 0000000000..3204e02913 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake/fake_lease.go @@ -0,0 +1,128 @@ +/* +Copyright The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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/coordination/v1beta1" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + testing "k8s.io/client-go/testing" +) + +// FakeLeases implements LeaseInterface +type FakeLeases struct { + Fake *FakeCoordinationV1beta1 + ns string +} + +var leasesResource = schema.GroupVersionResource{Group: "coordination.k8s.io", Version: "v1beta1", Resource: "leases"} + +var leasesKind = schema.GroupVersionKind{Group: "coordination.k8s.io", Version: "v1beta1", Kind: "Lease"} + +// Get takes name of the lease, and returns the corresponding lease object, and an error if there is any. +func (c *FakeLeases) Get(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(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(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(lease *v1beta1.Lease) (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(lease *v1beta1.Lease) (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(name string, options *v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(leasesResource, c.ns, name), &v1beta1.Lease{}) + + return err +} + +// DeleteCollection deletes a collection of objects. +func (c *FakeLeases) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(leasesResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &v1beta1.LeaseList{}) + return err +} + +// Patch applies the patch and returns the patched lease. +func (c *FakeLeases) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.Lease, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(leasesResource, c.ns, name, data, subresources...), &v1beta1.Lease{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.Lease), err +} diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/generated_expansion.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/generated_expansion.go new file mode 100644 index 0000000000..dfd180daf3 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/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 v1beta1 + +type LeaseExpansion interface{} diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/lease.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/lease.go new file mode 100644 index 0000000000..16277255fa --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/lease.go @@ -0,0 +1,157 @@ +/* +Copyright The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 ( + v1beta1 "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" + scheme "k8s.io/client-go/kubernetes/scheme" + rest "k8s.io/client-go/rest" +) + +// LeasesGetter has a method to return a LeaseInterface. +// A group's client should implement this interface. +type LeasesGetter interface { + Leases(namespace string) LeaseInterface +} + +// LeaseInterface has methods to work with Lease resources. +type LeaseInterface interface { + Create(*v1beta1.Lease) (*v1beta1.Lease, error) + Update(*v1beta1.Lease) (*v1beta1.Lease, error) + Delete(name string, options *v1.DeleteOptions) error + DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error + Get(name string, options v1.GetOptions) (*v1beta1.Lease, error) + List(opts v1.ListOptions) (*v1beta1.LeaseList, error) + Watch(opts v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.Lease, err error) + LeaseExpansion +} + +// leases implements LeaseInterface +type leases struct { + client rest.Interface + ns string +} + +// newLeases returns a Leases +func newLeases(c *CoordinationV1beta1Client, namespace string) *leases { + return &leases{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Get takes name of the lease, and returns the corresponding lease object, and an error if there is any. +func (c *leases) Get(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(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of Leases that match those selectors. +func (c *leases) List(opts v1.ListOptions) (result *v1beta1.LeaseList, err error) { + result = &v1beta1.LeaseList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("leases"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested leases. +func (c *leases) Watch(opts v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("leases"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// 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(lease *v1beta1.Lease) (result *v1beta1.Lease, err error) { + result = &v1beta1.Lease{} + err = c.client.Post(). + Namespace(c.ns). + Resource("leases"). + Body(lease). + Do(). + 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(lease *v1beta1.Lease) (result *v1beta1.Lease, err error) { + result = &v1beta1.Lease{} + err = c.client.Put(). + Namespace(c.ns). + Resource("leases"). + Name(lease.Name). + Body(lease). + Do(). + Into(result) + return +} + +// Delete takes name of the lease and deletes it. Returns an error if one occurs. +func (c *leases) Delete(name string, options *v1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("leases"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *leases) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("leases"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Patch applies the patch and returns the patched lease. +func (c *leases) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.Lease, err error) { + result = &v1beta1.Lease{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("leases"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/BUILD index 4c9f03aa4d..76f16bfa13 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/BUILD @@ -34,22 +34,23 @@ go_library( "serviceaccount.go", "serviceaccount_expansion.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/core/v1", importpath = "k8s.io/client-go/kubernetes/typed/core/v1", deps = [ - "//vendor/k8s.io/api/authentication/v1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/extensions/v1beta1:go_default_library", - "//vendor/k8s.io/api/policy/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/tools/reference:go_default_library", + "//staging/src/k8s.io/api/authentication/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/extensions/v1beta1:go_default_library", + "//staging/src/k8s.io/api/policy/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/tools/reference:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/componentstatus.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/componentstatus.go index 6ae5a66813..e497661cfb 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/componentstatus.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/componentstatus.go @@ -20,7 +20,7 @@ package v1 import ( v1 "k8s.io/api/core/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" scheme "k8s.io/client-go/kubernetes/scheme" @@ -37,11 +37,11 @@ type ComponentStatusesGetter interface { type ComponentStatusInterface interface { Create(*v1.ComponentStatus) (*v1.ComponentStatus, error) Update(*v1.ComponentStatus) (*v1.ComponentStatus, error) - Delete(name string, options *meta_v1.DeleteOptions) error - DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error - Get(name string, options meta_v1.GetOptions) (*v1.ComponentStatus, error) - List(opts meta_v1.ListOptions) (*v1.ComponentStatusList, error) - Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Delete(name string, options *metav1.DeleteOptions) error + DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error + Get(name string, options metav1.GetOptions) (*v1.ComponentStatus, error) + List(opts metav1.ListOptions) (*v1.ComponentStatusList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.ComponentStatus, err error) ComponentStatusExpansion } @@ -59,7 +59,7 @@ func newComponentStatuses(c *CoreV1Client) *componentStatuses { } // Get takes name of the componentStatus, and returns the corresponding componentStatus object, and an error if there is any. -func (c *componentStatuses) Get(name string, options meta_v1.GetOptions) (result *v1.ComponentStatus, err error) { +func (c *componentStatuses) Get(name string, options metav1.GetOptions) (result *v1.ComponentStatus, err error) { result = &v1.ComponentStatus{} err = c.client.Get(). Resource("componentstatuses"). @@ -71,7 +71,7 @@ func (c *componentStatuses) Get(name string, options meta_v1.GetOptions) (result } // List takes label and field selectors, and returns the list of ComponentStatuses that match those selectors. -func (c *componentStatuses) List(opts meta_v1.ListOptions) (result *v1.ComponentStatusList, err error) { +func (c *componentStatuses) List(opts metav1.ListOptions) (result *v1.ComponentStatusList, err error) { result = &v1.ComponentStatusList{} err = c.client.Get(). Resource("componentstatuses"). @@ -82,7 +82,7 @@ func (c *componentStatuses) List(opts meta_v1.ListOptions) (result *v1.Component } // Watch returns a watch.Interface that watches the requested componentStatuses. -func (c *componentStatuses) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { +func (c *componentStatuses) Watch(opts metav1.ListOptions) (watch.Interface, error) { opts.Watch = true return c.client.Get(). Resource("componentstatuses"). @@ -114,7 +114,7 @@ func (c *componentStatuses) Update(componentStatus *v1.ComponentStatus) (result } // Delete takes name of the componentStatus and deletes it. Returns an error if one occurs. -func (c *componentStatuses) Delete(name string, options *meta_v1.DeleteOptions) error { +func (c *componentStatuses) Delete(name string, options *metav1.DeleteOptions) error { return c.client.Delete(). Resource("componentstatuses"). Name(name). @@ -124,7 +124,7 @@ func (c *componentStatuses) Delete(name string, options *meta_v1.DeleteOptions) } // DeleteCollection deletes a collection of objects. -func (c *componentStatuses) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { +func (c *componentStatuses) DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error { return c.client.Delete(). Resource("componentstatuses"). VersionedParams(&listOptions, scheme.ParameterCodec). diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/configmap.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/configmap.go index 3ae229f42b..0984ae70cc 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/configmap.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/configmap.go @@ -20,7 +20,7 @@ package v1 import ( v1 "k8s.io/api/core/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" scheme "k8s.io/client-go/kubernetes/scheme" @@ -37,11 +37,11 @@ type ConfigMapsGetter interface { type ConfigMapInterface interface { Create(*v1.ConfigMap) (*v1.ConfigMap, error) Update(*v1.ConfigMap) (*v1.ConfigMap, error) - Delete(name string, options *meta_v1.DeleteOptions) error - DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error - Get(name string, options meta_v1.GetOptions) (*v1.ConfigMap, error) - List(opts meta_v1.ListOptions) (*v1.ConfigMapList, error) - Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Delete(name string, options *metav1.DeleteOptions) error + DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error + Get(name string, options metav1.GetOptions) (*v1.ConfigMap, error) + List(opts metav1.ListOptions) (*v1.ConfigMapList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.ConfigMap, err error) ConfigMapExpansion } @@ -61,7 +61,7 @@ func newConfigMaps(c *CoreV1Client, namespace string) *configMaps { } // Get takes name of the configMap, and returns the corresponding configMap object, and an error if there is any. -func (c *configMaps) Get(name string, options meta_v1.GetOptions) (result *v1.ConfigMap, err error) { +func (c *configMaps) Get(name string, options metav1.GetOptions) (result *v1.ConfigMap, err error) { result = &v1.ConfigMap{} err = c.client.Get(). Namespace(c.ns). @@ -74,7 +74,7 @@ func (c *configMaps) Get(name string, options meta_v1.GetOptions) (result *v1.Co } // List takes label and field selectors, and returns the list of ConfigMaps that match those selectors. -func (c *configMaps) List(opts meta_v1.ListOptions) (result *v1.ConfigMapList, err error) { +func (c *configMaps) List(opts metav1.ListOptions) (result *v1.ConfigMapList, err error) { result = &v1.ConfigMapList{} err = c.client.Get(). Namespace(c.ns). @@ -86,7 +86,7 @@ func (c *configMaps) List(opts meta_v1.ListOptions) (result *v1.ConfigMapList, e } // Watch returns a watch.Interface that watches the requested configMaps. -func (c *configMaps) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { +func (c *configMaps) Watch(opts metav1.ListOptions) (watch.Interface, error) { opts.Watch = true return c.client.Get(). Namespace(c.ns). @@ -121,7 +121,7 @@ func (c *configMaps) Update(configMap *v1.ConfigMap) (result *v1.ConfigMap, err } // Delete takes name of the configMap and deletes it. Returns an error if one occurs. -func (c *configMaps) Delete(name string, options *meta_v1.DeleteOptions) error { +func (c *configMaps) Delete(name string, options *metav1.DeleteOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("configmaps"). @@ -132,7 +132,7 @@ func (c *configMaps) Delete(name string, options *meta_v1.DeleteOptions) error { } // DeleteCollection deletes a collection of objects. -func (c *configMaps) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { +func (c *configMaps) DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("configmaps"). diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/endpoints.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/endpoints.go index 2868baaa19..dd8216789b 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/endpoints.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/endpoints.go @@ -20,7 +20,7 @@ package v1 import ( v1 "k8s.io/api/core/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" scheme "k8s.io/client-go/kubernetes/scheme" @@ -37,11 +37,11 @@ type EndpointsGetter interface { type EndpointsInterface interface { Create(*v1.Endpoints) (*v1.Endpoints, error) Update(*v1.Endpoints) (*v1.Endpoints, error) - Delete(name string, options *meta_v1.DeleteOptions) error - DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error - Get(name string, options meta_v1.GetOptions) (*v1.Endpoints, error) - List(opts meta_v1.ListOptions) (*v1.EndpointsList, error) - Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Delete(name string, options *metav1.DeleteOptions) error + DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error + Get(name string, options metav1.GetOptions) (*v1.Endpoints, error) + List(opts metav1.ListOptions) (*v1.EndpointsList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Endpoints, err error) EndpointsExpansion } @@ -61,7 +61,7 @@ func newEndpoints(c *CoreV1Client, namespace string) *endpoints { } // Get takes name of the endpoints, and returns the corresponding endpoints object, and an error if there is any. -func (c *endpoints) Get(name string, options meta_v1.GetOptions) (result *v1.Endpoints, err error) { +func (c *endpoints) Get(name string, options metav1.GetOptions) (result *v1.Endpoints, err error) { result = &v1.Endpoints{} err = c.client.Get(). Namespace(c.ns). @@ -74,7 +74,7 @@ func (c *endpoints) Get(name string, options meta_v1.GetOptions) (result *v1.End } // List takes label and field selectors, and returns the list of Endpoints that match those selectors. -func (c *endpoints) List(opts meta_v1.ListOptions) (result *v1.EndpointsList, err error) { +func (c *endpoints) List(opts metav1.ListOptions) (result *v1.EndpointsList, err error) { result = &v1.EndpointsList{} err = c.client.Get(). Namespace(c.ns). @@ -86,7 +86,7 @@ func (c *endpoints) List(opts meta_v1.ListOptions) (result *v1.EndpointsList, er } // Watch returns a watch.Interface that watches the requested endpoints. -func (c *endpoints) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { +func (c *endpoints) Watch(opts metav1.ListOptions) (watch.Interface, error) { opts.Watch = true return c.client.Get(). Namespace(c.ns). @@ -121,7 +121,7 @@ func (c *endpoints) Update(endpoints *v1.Endpoints) (result *v1.Endpoints, err e } // Delete takes name of the endpoints and deletes it. Returns an error if one occurs. -func (c *endpoints) Delete(name string, options *meta_v1.DeleteOptions) error { +func (c *endpoints) Delete(name string, options *metav1.DeleteOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("endpoints"). @@ -132,7 +132,7 @@ func (c *endpoints) Delete(name string, options *meta_v1.DeleteOptions) error { } // DeleteCollection deletes a collection of objects. -func (c *endpoints) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { +func (c *endpoints) DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("endpoints"). diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/event.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/event.go index 5650623451..57d30f9fd4 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/event.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/event.go @@ -20,7 +20,7 @@ package v1 import ( v1 "k8s.io/api/core/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" scheme "k8s.io/client-go/kubernetes/scheme" @@ -37,11 +37,11 @@ type EventsGetter interface { type EventInterface interface { Create(*v1.Event) (*v1.Event, error) Update(*v1.Event) (*v1.Event, error) - Delete(name string, options *meta_v1.DeleteOptions) error - DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error - Get(name string, options meta_v1.GetOptions) (*v1.Event, error) - List(opts meta_v1.ListOptions) (*v1.EventList, error) - Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Delete(name string, options *metav1.DeleteOptions) error + DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error + Get(name string, options metav1.GetOptions) (*v1.Event, error) + List(opts metav1.ListOptions) (*v1.EventList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Event, err error) EventExpansion } @@ -61,7 +61,7 @@ func newEvents(c *CoreV1Client, namespace string) *events { } // Get takes name of the event, and returns the corresponding event object, and an error if there is any. -func (c *events) Get(name string, options meta_v1.GetOptions) (result *v1.Event, err error) { +func (c *events) Get(name string, options metav1.GetOptions) (result *v1.Event, err error) { result = &v1.Event{} err = c.client.Get(). Namespace(c.ns). @@ -74,7 +74,7 @@ func (c *events) Get(name string, options meta_v1.GetOptions) (result *v1.Event, } // List takes label and field selectors, and returns the list of Events that match those selectors. -func (c *events) List(opts meta_v1.ListOptions) (result *v1.EventList, err error) { +func (c *events) List(opts metav1.ListOptions) (result *v1.EventList, err error) { result = &v1.EventList{} err = c.client.Get(). Namespace(c.ns). @@ -86,7 +86,7 @@ func (c *events) List(opts meta_v1.ListOptions) (result *v1.EventList, err error } // Watch returns a watch.Interface that watches the requested events. -func (c *events) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { +func (c *events) Watch(opts metav1.ListOptions) (watch.Interface, error) { opts.Watch = true return c.client.Get(). Namespace(c.ns). @@ -121,7 +121,7 @@ func (c *events) Update(event *v1.Event) (result *v1.Event, err error) { } // Delete takes name of the event and deletes it. Returns an error if one occurs. -func (c *events) Delete(name string, options *meta_v1.DeleteOptions) error { +func (c *events) Delete(name string, options *metav1.DeleteOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("events"). @@ -132,7 +132,7 @@ func (c *events) Delete(name string, options *meta_v1.DeleteOptions) error { } // DeleteCollection deletes a collection of objects. -func (c *events) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { +func (c *events) DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("events"). diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/BUILD index 7403a4997d..32c81b04af 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/BUILD @@ -33,22 +33,23 @@ go_library( "fake_serviceaccount.go", "fake_serviceaccount_expansion.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake", importpath = "k8s.io/client-go/kubernetes/typed/core/v1/fake", deps = [ - "//vendor/k8s.io/api/authentication/v1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/extensions/v1beta1:go_default_library", - "//vendor/k8s.io/api/policy/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", + "//staging/src/k8s.io/api/authentication/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/extensions/v1beta1:go_default_library", + "//staging/src/k8s.io/api/policy/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_componentstatus.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_componentstatus.go index 2f2420730c..d06023d482 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_componentstatus.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_componentstatus.go @@ -19,7 +19,7 @@ limitations under the License. package fake import ( - core_v1 "k8s.io/api/core/v1" + corev1 "k8s.io/api/core/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" schema "k8s.io/apimachinery/pkg/runtime/schema" @@ -38,19 +38,19 @@ var componentstatusesResource = schema.GroupVersionResource{Group: "", Version: var componentstatusesKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "ComponentStatus"} // Get takes name of the componentStatus, and returns the corresponding componentStatus object, and an error if there is any. -func (c *FakeComponentStatuses) Get(name string, options v1.GetOptions) (result *core_v1.ComponentStatus, err error) { +func (c *FakeComponentStatuses) Get(name string, options v1.GetOptions) (result *corev1.ComponentStatus, err error) { obj, err := c.Fake. - Invokes(testing.NewRootGetAction(componentstatusesResource, name), &core_v1.ComponentStatus{}) + Invokes(testing.NewRootGetAction(componentstatusesResource, name), &corev1.ComponentStatus{}) if obj == nil { return nil, err } - return obj.(*core_v1.ComponentStatus), err + return obj.(*corev1.ComponentStatus), err } // List takes label and field selectors, and returns the list of ComponentStatuses that match those selectors. -func (c *FakeComponentStatuses) List(opts v1.ListOptions) (result *core_v1.ComponentStatusList, err error) { +func (c *FakeComponentStatuses) List(opts v1.ListOptions) (result *corev1.ComponentStatusList, err error) { obj, err := c.Fake. - Invokes(testing.NewRootListAction(componentstatusesResource, componentstatusesKind, opts), &core_v1.ComponentStatusList{}) + Invokes(testing.NewRootListAction(componentstatusesResource, componentstatusesKind, opts), &corev1.ComponentStatusList{}) if obj == nil { return nil, err } @@ -59,8 +59,8 @@ func (c *FakeComponentStatuses) List(opts v1.ListOptions) (result *core_v1.Compo if label == nil { label = labels.Everything() } - list := &core_v1.ComponentStatusList{ListMeta: obj.(*core_v1.ComponentStatusList).ListMeta} - for _, item := range obj.(*core_v1.ComponentStatusList).Items { + list := &corev1.ComponentStatusList{ListMeta: obj.(*corev1.ComponentStatusList).ListMeta} + for _, item := range obj.(*corev1.ComponentStatusList).Items { if label.Matches(labels.Set(item.Labels)) { list.Items = append(list.Items, item) } @@ -75,29 +75,29 @@ func (c *FakeComponentStatuses) Watch(opts v1.ListOptions) (watch.Interface, err } // 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(componentStatus *core_v1.ComponentStatus) (result *core_v1.ComponentStatus, err error) { +func (c *FakeComponentStatuses) Create(componentStatus *corev1.ComponentStatus) (result *corev1.ComponentStatus, err error) { obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(componentstatusesResource, componentStatus), &core_v1.ComponentStatus{}) + Invokes(testing.NewRootCreateAction(componentstatusesResource, componentStatus), &corev1.ComponentStatus{}) if obj == nil { return nil, err } - return obj.(*core_v1.ComponentStatus), err + return obj.(*corev1.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(componentStatus *core_v1.ComponentStatus) (result *core_v1.ComponentStatus, err error) { +func (c *FakeComponentStatuses) Update(componentStatus *corev1.ComponentStatus) (result *corev1.ComponentStatus, err error) { obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(componentstatusesResource, componentStatus), &core_v1.ComponentStatus{}) + Invokes(testing.NewRootUpdateAction(componentstatusesResource, componentStatus), &corev1.ComponentStatus{}) if obj == nil { return nil, err } - return obj.(*core_v1.ComponentStatus), err + return obj.(*corev1.ComponentStatus), err } // Delete takes name of the componentStatus and deletes it. Returns an error if one occurs. func (c *FakeComponentStatuses) Delete(name string, options *v1.DeleteOptions) error { _, err := c.Fake. - Invokes(testing.NewRootDeleteAction(componentstatusesResource, name), &core_v1.ComponentStatus{}) + Invokes(testing.NewRootDeleteAction(componentstatusesResource, name), &corev1.ComponentStatus{}) return err } @@ -105,16 +105,16 @@ func (c *FakeComponentStatuses) Delete(name string, options *v1.DeleteOptions) e func (c *FakeComponentStatuses) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { action := testing.NewRootDeleteCollectionAction(componentstatusesResource, listOptions) - _, err := c.Fake.Invokes(action, &core_v1.ComponentStatusList{}) + _, err := c.Fake.Invokes(action, &corev1.ComponentStatusList{}) return err } // Patch applies the patch and returns the patched componentStatus. -func (c *FakeComponentStatuses) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core_v1.ComponentStatus, err error) { +func (c *FakeComponentStatuses) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *corev1.ComponentStatus, err error) { obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(componentstatusesResource, name, data, subresources...), &core_v1.ComponentStatus{}) + Invokes(testing.NewRootPatchSubresourceAction(componentstatusesResource, name, data, subresources...), &corev1.ComponentStatus{}) if obj == nil { return nil, err } - return obj.(*core_v1.ComponentStatus), err + return obj.(*corev1.ComponentStatus), err } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_configmap.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_configmap.go index 1bc7757fbc..b491661f20 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_configmap.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_configmap.go @@ -19,7 +19,7 @@ limitations under the License. package fake import ( - core_v1 "k8s.io/api/core/v1" + corev1 "k8s.io/api/core/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" schema "k8s.io/apimachinery/pkg/runtime/schema" @@ -39,20 +39,20 @@ var configmapsResource = schema.GroupVersionResource{Group: "", Version: "v1", R var configmapsKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "ConfigMap"} // Get takes name of the configMap, and returns the corresponding configMap object, and an error if there is any. -func (c *FakeConfigMaps) Get(name string, options v1.GetOptions) (result *core_v1.ConfigMap, err error) { +func (c *FakeConfigMaps) Get(name string, options v1.GetOptions) (result *corev1.ConfigMap, err error) { obj, err := c.Fake. - Invokes(testing.NewGetAction(configmapsResource, c.ns, name), &core_v1.ConfigMap{}) + Invokes(testing.NewGetAction(configmapsResource, c.ns, name), &corev1.ConfigMap{}) if obj == nil { return nil, err } - return obj.(*core_v1.ConfigMap), err + return obj.(*corev1.ConfigMap), err } // List takes label and field selectors, and returns the list of ConfigMaps that match those selectors. -func (c *FakeConfigMaps) List(opts v1.ListOptions) (result *core_v1.ConfigMapList, err error) { +func (c *FakeConfigMaps) List(opts v1.ListOptions) (result *corev1.ConfigMapList, err error) { obj, err := c.Fake. - Invokes(testing.NewListAction(configmapsResource, configmapsKind, c.ns, opts), &core_v1.ConfigMapList{}) + Invokes(testing.NewListAction(configmapsResource, configmapsKind, c.ns, opts), &corev1.ConfigMapList{}) if obj == nil { return nil, err @@ -62,8 +62,8 @@ func (c *FakeConfigMaps) List(opts v1.ListOptions) (result *core_v1.ConfigMapLis if label == nil { label = labels.Everything() } - list := &core_v1.ConfigMapList{ListMeta: obj.(*core_v1.ConfigMapList).ListMeta} - for _, item := range obj.(*core_v1.ConfigMapList).Items { + list := &corev1.ConfigMapList{ListMeta: obj.(*corev1.ConfigMapList).ListMeta} + for _, item := range obj.(*corev1.ConfigMapList).Items { if label.Matches(labels.Set(item.Labels)) { list.Items = append(list.Items, item) } @@ -79,31 +79,31 @@ func (c *FakeConfigMaps) Watch(opts v1.ListOptions) (watch.Interface, error) { } // 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(configMap *core_v1.ConfigMap) (result *core_v1.ConfigMap, err error) { +func (c *FakeConfigMaps) Create(configMap *corev1.ConfigMap) (result *corev1.ConfigMap, err error) { obj, err := c.Fake. - Invokes(testing.NewCreateAction(configmapsResource, c.ns, configMap), &core_v1.ConfigMap{}) + Invokes(testing.NewCreateAction(configmapsResource, c.ns, configMap), &corev1.ConfigMap{}) if obj == nil { return nil, err } - return obj.(*core_v1.ConfigMap), err + return obj.(*corev1.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(configMap *core_v1.ConfigMap) (result *core_v1.ConfigMap, err error) { +func (c *FakeConfigMaps) Update(configMap *corev1.ConfigMap) (result *corev1.ConfigMap, err error) { obj, err := c.Fake. - Invokes(testing.NewUpdateAction(configmapsResource, c.ns, configMap), &core_v1.ConfigMap{}) + Invokes(testing.NewUpdateAction(configmapsResource, c.ns, configMap), &corev1.ConfigMap{}) if obj == nil { return nil, err } - return obj.(*core_v1.ConfigMap), err + return obj.(*corev1.ConfigMap), err } // Delete takes name of the configMap and deletes it. Returns an error if one occurs. func (c *FakeConfigMaps) Delete(name string, options *v1.DeleteOptions) error { _, err := c.Fake. - Invokes(testing.NewDeleteAction(configmapsResource, c.ns, name), &core_v1.ConfigMap{}) + Invokes(testing.NewDeleteAction(configmapsResource, c.ns, name), &corev1.ConfigMap{}) return err } @@ -112,17 +112,17 @@ func (c *FakeConfigMaps) Delete(name string, options *v1.DeleteOptions) error { func (c *FakeConfigMaps) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { action := testing.NewDeleteCollectionAction(configmapsResource, c.ns, listOptions) - _, err := c.Fake.Invokes(action, &core_v1.ConfigMapList{}) + _, err := c.Fake.Invokes(action, &corev1.ConfigMapList{}) return err } // Patch applies the patch and returns the patched configMap. -func (c *FakeConfigMaps) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core_v1.ConfigMap, err error) { +func (c *FakeConfigMaps) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *corev1.ConfigMap, err error) { obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(configmapsResource, c.ns, name, data, subresources...), &core_v1.ConfigMap{}) + Invokes(testing.NewPatchSubresourceAction(configmapsResource, c.ns, name, data, subresources...), &corev1.ConfigMap{}) if obj == nil { return nil, err } - return obj.(*core_v1.ConfigMap), err + return obj.(*corev1.ConfigMap), err } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_endpoints.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_endpoints.go index eb5eac981b..2c9f0de096 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_endpoints.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_endpoints.go @@ -19,7 +19,7 @@ limitations under the License. package fake import ( - core_v1 "k8s.io/api/core/v1" + corev1 "k8s.io/api/core/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" schema "k8s.io/apimachinery/pkg/runtime/schema" @@ -39,20 +39,20 @@ var endpointsResource = schema.GroupVersionResource{Group: "", Version: "v1", Re var endpointsKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "Endpoints"} // Get takes name of the endpoints, and returns the corresponding endpoints object, and an error if there is any. -func (c *FakeEndpoints) Get(name string, options v1.GetOptions) (result *core_v1.Endpoints, err error) { +func (c *FakeEndpoints) Get(name string, options v1.GetOptions) (result *corev1.Endpoints, err error) { obj, err := c.Fake. - Invokes(testing.NewGetAction(endpointsResource, c.ns, name), &core_v1.Endpoints{}) + Invokes(testing.NewGetAction(endpointsResource, c.ns, name), &corev1.Endpoints{}) if obj == nil { return nil, err } - return obj.(*core_v1.Endpoints), err + return obj.(*corev1.Endpoints), err } // List takes label and field selectors, and returns the list of Endpoints that match those selectors. -func (c *FakeEndpoints) List(opts v1.ListOptions) (result *core_v1.EndpointsList, err error) { +func (c *FakeEndpoints) List(opts v1.ListOptions) (result *corev1.EndpointsList, err error) { obj, err := c.Fake. - Invokes(testing.NewListAction(endpointsResource, endpointsKind, c.ns, opts), &core_v1.EndpointsList{}) + Invokes(testing.NewListAction(endpointsResource, endpointsKind, c.ns, opts), &corev1.EndpointsList{}) if obj == nil { return nil, err @@ -62,8 +62,8 @@ func (c *FakeEndpoints) List(opts v1.ListOptions) (result *core_v1.EndpointsList if label == nil { label = labels.Everything() } - list := &core_v1.EndpointsList{ListMeta: obj.(*core_v1.EndpointsList).ListMeta} - for _, item := range obj.(*core_v1.EndpointsList).Items { + list := &corev1.EndpointsList{ListMeta: obj.(*corev1.EndpointsList).ListMeta} + for _, item := range obj.(*corev1.EndpointsList).Items { if label.Matches(labels.Set(item.Labels)) { list.Items = append(list.Items, item) } @@ -79,31 +79,31 @@ func (c *FakeEndpoints) Watch(opts v1.ListOptions) (watch.Interface, error) { } // 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(endpoints *core_v1.Endpoints) (result *core_v1.Endpoints, err error) { +func (c *FakeEndpoints) Create(endpoints *corev1.Endpoints) (result *corev1.Endpoints, err error) { obj, err := c.Fake. - Invokes(testing.NewCreateAction(endpointsResource, c.ns, endpoints), &core_v1.Endpoints{}) + Invokes(testing.NewCreateAction(endpointsResource, c.ns, endpoints), &corev1.Endpoints{}) if obj == nil { return nil, err } - return obj.(*core_v1.Endpoints), err + return obj.(*corev1.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(endpoints *core_v1.Endpoints) (result *core_v1.Endpoints, err error) { +func (c *FakeEndpoints) Update(endpoints *corev1.Endpoints) (result *corev1.Endpoints, err error) { obj, err := c.Fake. - Invokes(testing.NewUpdateAction(endpointsResource, c.ns, endpoints), &core_v1.Endpoints{}) + Invokes(testing.NewUpdateAction(endpointsResource, c.ns, endpoints), &corev1.Endpoints{}) if obj == nil { return nil, err } - return obj.(*core_v1.Endpoints), err + return obj.(*corev1.Endpoints), err } // Delete takes name of the endpoints and deletes it. Returns an error if one occurs. func (c *FakeEndpoints) Delete(name string, options *v1.DeleteOptions) error { _, err := c.Fake. - Invokes(testing.NewDeleteAction(endpointsResource, c.ns, name), &core_v1.Endpoints{}) + Invokes(testing.NewDeleteAction(endpointsResource, c.ns, name), &corev1.Endpoints{}) return err } @@ -112,17 +112,17 @@ func (c *FakeEndpoints) Delete(name string, options *v1.DeleteOptions) error { func (c *FakeEndpoints) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { action := testing.NewDeleteCollectionAction(endpointsResource, c.ns, listOptions) - _, err := c.Fake.Invokes(action, &core_v1.EndpointsList{}) + _, err := c.Fake.Invokes(action, &corev1.EndpointsList{}) return err } // Patch applies the patch and returns the patched endpoints. -func (c *FakeEndpoints) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core_v1.Endpoints, err error) { +func (c *FakeEndpoints) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *corev1.Endpoints, err error) { obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(endpointsResource, c.ns, name, data, subresources...), &core_v1.Endpoints{}) + Invokes(testing.NewPatchSubresourceAction(endpointsResource, c.ns, name, data, subresources...), &corev1.Endpoints{}) if obj == nil { return nil, err } - return obj.(*core_v1.Endpoints), err + return obj.(*corev1.Endpoints), err } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_event.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_event.go index 458b8c1539..68405a54f1 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_event.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_event.go @@ -19,7 +19,7 @@ limitations under the License. package fake import ( - core_v1 "k8s.io/api/core/v1" + corev1 "k8s.io/api/core/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" schema "k8s.io/apimachinery/pkg/runtime/schema" @@ -39,20 +39,20 @@ var eventsResource = schema.GroupVersionResource{Group: "", Version: "v1", Resou var eventsKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "Event"} // Get takes name of the event, and returns the corresponding event object, and an error if there is any. -func (c *FakeEvents) Get(name string, options v1.GetOptions) (result *core_v1.Event, err error) { +func (c *FakeEvents) Get(name string, options v1.GetOptions) (result *corev1.Event, err error) { obj, err := c.Fake. - Invokes(testing.NewGetAction(eventsResource, c.ns, name), &core_v1.Event{}) + Invokes(testing.NewGetAction(eventsResource, c.ns, name), &corev1.Event{}) if obj == nil { return nil, err } - return obj.(*core_v1.Event), err + return obj.(*corev1.Event), err } // List takes label and field selectors, and returns the list of Events that match those selectors. -func (c *FakeEvents) List(opts v1.ListOptions) (result *core_v1.EventList, err error) { +func (c *FakeEvents) List(opts v1.ListOptions) (result *corev1.EventList, err error) { obj, err := c.Fake. - Invokes(testing.NewListAction(eventsResource, eventsKind, c.ns, opts), &core_v1.EventList{}) + Invokes(testing.NewListAction(eventsResource, eventsKind, c.ns, opts), &corev1.EventList{}) if obj == nil { return nil, err @@ -62,8 +62,8 @@ func (c *FakeEvents) List(opts v1.ListOptions) (result *core_v1.EventList, err e if label == nil { label = labels.Everything() } - list := &core_v1.EventList{ListMeta: obj.(*core_v1.EventList).ListMeta} - for _, item := range obj.(*core_v1.EventList).Items { + list := &corev1.EventList{ListMeta: obj.(*corev1.EventList).ListMeta} + for _, item := range obj.(*corev1.EventList).Items { if label.Matches(labels.Set(item.Labels)) { list.Items = append(list.Items, item) } @@ -79,31 +79,31 @@ func (c *FakeEvents) Watch(opts v1.ListOptions) (watch.Interface, error) { } // 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(event *core_v1.Event) (result *core_v1.Event, err error) { +func (c *FakeEvents) Create(event *corev1.Event) (result *corev1.Event, err error) { obj, err := c.Fake. - Invokes(testing.NewCreateAction(eventsResource, c.ns, event), &core_v1.Event{}) + Invokes(testing.NewCreateAction(eventsResource, c.ns, event), &corev1.Event{}) if obj == nil { return nil, err } - return obj.(*core_v1.Event), err + return obj.(*corev1.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(event *core_v1.Event) (result *core_v1.Event, err error) { +func (c *FakeEvents) Update(event *corev1.Event) (result *corev1.Event, err error) { obj, err := c.Fake. - Invokes(testing.NewUpdateAction(eventsResource, c.ns, event), &core_v1.Event{}) + Invokes(testing.NewUpdateAction(eventsResource, c.ns, event), &corev1.Event{}) if obj == nil { return nil, err } - return obj.(*core_v1.Event), err + return obj.(*corev1.Event), err } // Delete takes name of the event and deletes it. Returns an error if one occurs. func (c *FakeEvents) Delete(name string, options *v1.DeleteOptions) error { _, err := c.Fake. - Invokes(testing.NewDeleteAction(eventsResource, c.ns, name), &core_v1.Event{}) + Invokes(testing.NewDeleteAction(eventsResource, c.ns, name), &corev1.Event{}) return err } @@ -112,17 +112,17 @@ func (c *FakeEvents) Delete(name string, options *v1.DeleteOptions) error { func (c *FakeEvents) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { action := testing.NewDeleteCollectionAction(eventsResource, c.ns, listOptions) - _, err := c.Fake.Invokes(action, &core_v1.EventList{}) + _, err := c.Fake.Invokes(action, &corev1.EventList{}) return err } // Patch applies the patch and returns the patched event. -func (c *FakeEvents) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core_v1.Event, err error) { +func (c *FakeEvents) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *corev1.Event, err error) { obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(eventsResource, c.ns, name, data, subresources...), &core_v1.Event{}) + Invokes(testing.NewPatchSubresourceAction(eventsResource, c.ns, name, data, subresources...), &corev1.Event{}) if obj == nil { return nil, err } - return obj.(*core_v1.Event), err + return obj.(*corev1.Event), err } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_limitrange.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_limitrange.go index c5156c7c02..03c03c5d0e 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_limitrange.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_limitrange.go @@ -19,7 +19,7 @@ limitations under the License. package fake import ( - core_v1 "k8s.io/api/core/v1" + corev1 "k8s.io/api/core/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" schema "k8s.io/apimachinery/pkg/runtime/schema" @@ -39,20 +39,20 @@ var limitrangesResource = schema.GroupVersionResource{Group: "", Version: "v1", var limitrangesKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "LimitRange"} // Get takes name of the limitRange, and returns the corresponding limitRange object, and an error if there is any. -func (c *FakeLimitRanges) Get(name string, options v1.GetOptions) (result *core_v1.LimitRange, err error) { +func (c *FakeLimitRanges) Get(name string, options v1.GetOptions) (result *corev1.LimitRange, err error) { obj, err := c.Fake. - Invokes(testing.NewGetAction(limitrangesResource, c.ns, name), &core_v1.LimitRange{}) + Invokes(testing.NewGetAction(limitrangesResource, c.ns, name), &corev1.LimitRange{}) if obj == nil { return nil, err } - return obj.(*core_v1.LimitRange), err + return obj.(*corev1.LimitRange), err } // List takes label and field selectors, and returns the list of LimitRanges that match those selectors. -func (c *FakeLimitRanges) List(opts v1.ListOptions) (result *core_v1.LimitRangeList, err error) { +func (c *FakeLimitRanges) List(opts v1.ListOptions) (result *corev1.LimitRangeList, err error) { obj, err := c.Fake. - Invokes(testing.NewListAction(limitrangesResource, limitrangesKind, c.ns, opts), &core_v1.LimitRangeList{}) + Invokes(testing.NewListAction(limitrangesResource, limitrangesKind, c.ns, opts), &corev1.LimitRangeList{}) if obj == nil { return nil, err @@ -62,8 +62,8 @@ func (c *FakeLimitRanges) List(opts v1.ListOptions) (result *core_v1.LimitRangeL if label == nil { label = labels.Everything() } - list := &core_v1.LimitRangeList{ListMeta: obj.(*core_v1.LimitRangeList).ListMeta} - for _, item := range obj.(*core_v1.LimitRangeList).Items { + list := &corev1.LimitRangeList{ListMeta: obj.(*corev1.LimitRangeList).ListMeta} + for _, item := range obj.(*corev1.LimitRangeList).Items { if label.Matches(labels.Set(item.Labels)) { list.Items = append(list.Items, item) } @@ -79,31 +79,31 @@ func (c *FakeLimitRanges) Watch(opts v1.ListOptions) (watch.Interface, error) { } // 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(limitRange *core_v1.LimitRange) (result *core_v1.LimitRange, err error) { +func (c *FakeLimitRanges) Create(limitRange *corev1.LimitRange) (result *corev1.LimitRange, err error) { obj, err := c.Fake. - Invokes(testing.NewCreateAction(limitrangesResource, c.ns, limitRange), &core_v1.LimitRange{}) + Invokes(testing.NewCreateAction(limitrangesResource, c.ns, limitRange), &corev1.LimitRange{}) if obj == nil { return nil, err } - return obj.(*core_v1.LimitRange), err + return obj.(*corev1.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(limitRange *core_v1.LimitRange) (result *core_v1.LimitRange, err error) { +func (c *FakeLimitRanges) Update(limitRange *corev1.LimitRange) (result *corev1.LimitRange, err error) { obj, err := c.Fake. - Invokes(testing.NewUpdateAction(limitrangesResource, c.ns, limitRange), &core_v1.LimitRange{}) + Invokes(testing.NewUpdateAction(limitrangesResource, c.ns, limitRange), &corev1.LimitRange{}) if obj == nil { return nil, err } - return obj.(*core_v1.LimitRange), err + return obj.(*corev1.LimitRange), err } // Delete takes name of the limitRange and deletes it. Returns an error if one occurs. func (c *FakeLimitRanges) Delete(name string, options *v1.DeleteOptions) error { _, err := c.Fake. - Invokes(testing.NewDeleteAction(limitrangesResource, c.ns, name), &core_v1.LimitRange{}) + Invokes(testing.NewDeleteAction(limitrangesResource, c.ns, name), &corev1.LimitRange{}) return err } @@ -112,17 +112,17 @@ func (c *FakeLimitRanges) Delete(name string, options *v1.DeleteOptions) error { func (c *FakeLimitRanges) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { action := testing.NewDeleteCollectionAction(limitrangesResource, c.ns, listOptions) - _, err := c.Fake.Invokes(action, &core_v1.LimitRangeList{}) + _, err := c.Fake.Invokes(action, &corev1.LimitRangeList{}) return err } // Patch applies the patch and returns the patched limitRange. -func (c *FakeLimitRanges) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core_v1.LimitRange, err error) { +func (c *FakeLimitRanges) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *corev1.LimitRange, err error) { obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(limitrangesResource, c.ns, name, data, subresources...), &core_v1.LimitRange{}) + Invokes(testing.NewPatchSubresourceAction(limitrangesResource, c.ns, name, data, subresources...), &corev1.LimitRange{}) if obj == nil { return nil, err } - return obj.(*core_v1.LimitRange), err + return obj.(*corev1.LimitRange), err } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_namespace.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_namespace.go index 32aae1389e..12b918af01 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_namespace.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_namespace.go @@ -19,7 +19,7 @@ limitations under the License. package fake import ( - core_v1 "k8s.io/api/core/v1" + corev1 "k8s.io/api/core/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" schema "k8s.io/apimachinery/pkg/runtime/schema" @@ -38,19 +38,19 @@ var namespacesResource = schema.GroupVersionResource{Group: "", Version: "v1", R var namespacesKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "Namespace"} // Get takes name of the namespace, and returns the corresponding namespace object, and an error if there is any. -func (c *FakeNamespaces) Get(name string, options v1.GetOptions) (result *core_v1.Namespace, err error) { +func (c *FakeNamespaces) Get(name string, options v1.GetOptions) (result *corev1.Namespace, err error) { obj, err := c.Fake. - Invokes(testing.NewRootGetAction(namespacesResource, name), &core_v1.Namespace{}) + Invokes(testing.NewRootGetAction(namespacesResource, name), &corev1.Namespace{}) if obj == nil { return nil, err } - return obj.(*core_v1.Namespace), err + return obj.(*corev1.Namespace), err } // List takes label and field selectors, and returns the list of Namespaces that match those selectors. -func (c *FakeNamespaces) List(opts v1.ListOptions) (result *core_v1.NamespaceList, err error) { +func (c *FakeNamespaces) List(opts v1.ListOptions) (result *corev1.NamespaceList, err error) { obj, err := c.Fake. - Invokes(testing.NewRootListAction(namespacesResource, namespacesKind, opts), &core_v1.NamespaceList{}) + Invokes(testing.NewRootListAction(namespacesResource, namespacesKind, opts), &corev1.NamespaceList{}) if obj == nil { return nil, err } @@ -59,8 +59,8 @@ func (c *FakeNamespaces) List(opts v1.ListOptions) (result *core_v1.NamespaceLis if label == nil { label = labels.Everything() } - list := &core_v1.NamespaceList{ListMeta: obj.(*core_v1.NamespaceList).ListMeta} - for _, item := range obj.(*core_v1.NamespaceList).Items { + list := &corev1.NamespaceList{ListMeta: obj.(*corev1.NamespaceList).ListMeta} + for _, item := range obj.(*corev1.NamespaceList).Items { if label.Matches(labels.Set(item.Labels)) { list.Items = append(list.Items, item) } @@ -75,49 +75,49 @@ func (c *FakeNamespaces) Watch(opts v1.ListOptions) (watch.Interface, error) { } // 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(namespace *core_v1.Namespace) (result *core_v1.Namespace, err error) { +func (c *FakeNamespaces) Create(namespace *corev1.Namespace) (result *corev1.Namespace, err error) { obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(namespacesResource, namespace), &core_v1.Namespace{}) + Invokes(testing.NewRootCreateAction(namespacesResource, namespace), &corev1.Namespace{}) if obj == nil { return nil, err } - return obj.(*core_v1.Namespace), err + return obj.(*corev1.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(namespace *core_v1.Namespace) (result *core_v1.Namespace, err error) { +func (c *FakeNamespaces) Update(namespace *corev1.Namespace) (result *corev1.Namespace, err error) { obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(namespacesResource, namespace), &core_v1.Namespace{}) + Invokes(testing.NewRootUpdateAction(namespacesResource, namespace), &corev1.Namespace{}) if obj == nil { return nil, err } - return obj.(*core_v1.Namespace), err + return obj.(*corev1.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(namespace *core_v1.Namespace) (*core_v1.Namespace, error) { +func (c *FakeNamespaces) UpdateStatus(namespace *corev1.Namespace) (*corev1.Namespace, error) { obj, err := c.Fake. - Invokes(testing.NewRootUpdateSubresourceAction(namespacesResource, "status", namespace), &core_v1.Namespace{}) + Invokes(testing.NewRootUpdateSubresourceAction(namespacesResource, "status", namespace), &corev1.Namespace{}) if obj == nil { return nil, err } - return obj.(*core_v1.Namespace), err + return obj.(*corev1.Namespace), err } // Delete takes name of the namespace and deletes it. Returns an error if one occurs. func (c *FakeNamespaces) Delete(name string, options *v1.DeleteOptions) error { _, err := c.Fake. - Invokes(testing.NewRootDeleteAction(namespacesResource, name), &core_v1.Namespace{}) + Invokes(testing.NewRootDeleteAction(namespacesResource, name), &corev1.Namespace{}) return err } // Patch applies the patch and returns the patched namespace. -func (c *FakeNamespaces) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core_v1.Namespace, err error) { +func (c *FakeNamespaces) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *corev1.Namespace, err error) { obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(namespacesResource, name, data, subresources...), &core_v1.Namespace{}) + Invokes(testing.NewRootPatchSubresourceAction(namespacesResource, name, data, subresources...), &corev1.Namespace{}) if obj == nil { return nil, err } - return obj.(*core_v1.Namespace), err + return obj.(*corev1.Namespace), err } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_node.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_node.go index 8b99bb8e45..a2bc97b2c6 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_node.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_node.go @@ -19,7 +19,7 @@ limitations under the License. package fake import ( - core_v1 "k8s.io/api/core/v1" + corev1 "k8s.io/api/core/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" schema "k8s.io/apimachinery/pkg/runtime/schema" @@ -38,19 +38,19 @@ var nodesResource = schema.GroupVersionResource{Group: "", Version: "v1", Resour var nodesKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "Node"} // Get takes name of the node, and returns the corresponding node object, and an error if there is any. -func (c *FakeNodes) Get(name string, options v1.GetOptions) (result *core_v1.Node, err error) { +func (c *FakeNodes) Get(name string, options v1.GetOptions) (result *corev1.Node, err error) { obj, err := c.Fake. - Invokes(testing.NewRootGetAction(nodesResource, name), &core_v1.Node{}) + Invokes(testing.NewRootGetAction(nodesResource, name), &corev1.Node{}) if obj == nil { return nil, err } - return obj.(*core_v1.Node), err + return obj.(*corev1.Node), err } // List takes label and field selectors, and returns the list of Nodes that match those selectors. -func (c *FakeNodes) List(opts v1.ListOptions) (result *core_v1.NodeList, err error) { +func (c *FakeNodes) List(opts v1.ListOptions) (result *corev1.NodeList, err error) { obj, err := c.Fake. - Invokes(testing.NewRootListAction(nodesResource, nodesKind, opts), &core_v1.NodeList{}) + Invokes(testing.NewRootListAction(nodesResource, nodesKind, opts), &corev1.NodeList{}) if obj == nil { return nil, err } @@ -59,8 +59,8 @@ func (c *FakeNodes) List(opts v1.ListOptions) (result *core_v1.NodeList, err err if label == nil { label = labels.Everything() } - list := &core_v1.NodeList{ListMeta: obj.(*core_v1.NodeList).ListMeta} - for _, item := range obj.(*core_v1.NodeList).Items { + list := &corev1.NodeList{ListMeta: obj.(*corev1.NodeList).ListMeta} + for _, item := range obj.(*corev1.NodeList).Items { if label.Matches(labels.Set(item.Labels)) { list.Items = append(list.Items, item) } @@ -75,40 +75,40 @@ func (c *FakeNodes) Watch(opts v1.ListOptions) (watch.Interface, error) { } // 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(node *core_v1.Node) (result *core_v1.Node, err error) { +func (c *FakeNodes) Create(node *corev1.Node) (result *corev1.Node, err error) { obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(nodesResource, node), &core_v1.Node{}) + Invokes(testing.NewRootCreateAction(nodesResource, node), &corev1.Node{}) if obj == nil { return nil, err } - return obj.(*core_v1.Node), err + return obj.(*corev1.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(node *core_v1.Node) (result *core_v1.Node, err error) { +func (c *FakeNodes) Update(node *corev1.Node) (result *corev1.Node, err error) { obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(nodesResource, node), &core_v1.Node{}) + Invokes(testing.NewRootUpdateAction(nodesResource, node), &corev1.Node{}) if obj == nil { return nil, err } - return obj.(*core_v1.Node), err + return obj.(*corev1.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(node *core_v1.Node) (*core_v1.Node, error) { +func (c *FakeNodes) UpdateStatus(node *corev1.Node) (*corev1.Node, error) { obj, err := c.Fake. - Invokes(testing.NewRootUpdateSubresourceAction(nodesResource, "status", node), &core_v1.Node{}) + Invokes(testing.NewRootUpdateSubresourceAction(nodesResource, "status", node), &corev1.Node{}) if obj == nil { return nil, err } - return obj.(*core_v1.Node), err + return obj.(*corev1.Node), err } // Delete takes name of the node and deletes it. Returns an error if one occurs. func (c *FakeNodes) Delete(name string, options *v1.DeleteOptions) error { _, err := c.Fake. - Invokes(testing.NewRootDeleteAction(nodesResource, name), &core_v1.Node{}) + Invokes(testing.NewRootDeleteAction(nodesResource, name), &corev1.Node{}) return err } @@ -116,16 +116,16 @@ func (c *FakeNodes) Delete(name string, options *v1.DeleteOptions) error { func (c *FakeNodes) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { action := testing.NewRootDeleteCollectionAction(nodesResource, listOptions) - _, err := c.Fake.Invokes(action, &core_v1.NodeList{}) + _, err := c.Fake.Invokes(action, &corev1.NodeList{}) return err } // Patch applies the patch and returns the patched node. -func (c *FakeNodes) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core_v1.Node, err error) { +func (c *FakeNodes) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *corev1.Node, err error) { obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(nodesResource, name, data, subresources...), &core_v1.Node{}) + Invokes(testing.NewRootPatchSubresourceAction(nodesResource, name, data, subresources...), &corev1.Node{}) if obj == nil { return nil, err } - return obj.(*core_v1.Node), err + return obj.(*corev1.Node), err } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_persistentvolume.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_persistentvolume.go index 5742936d28..71e2f2dc57 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_persistentvolume.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_persistentvolume.go @@ -19,7 +19,7 @@ limitations under the License. package fake import ( - core_v1 "k8s.io/api/core/v1" + corev1 "k8s.io/api/core/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" schema "k8s.io/apimachinery/pkg/runtime/schema" @@ -38,19 +38,19 @@ var persistentvolumesResource = schema.GroupVersionResource{Group: "", Version: var persistentvolumesKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "PersistentVolume"} // Get takes name of the persistentVolume, and returns the corresponding persistentVolume object, and an error if there is any. -func (c *FakePersistentVolumes) Get(name string, options v1.GetOptions) (result *core_v1.PersistentVolume, err error) { +func (c *FakePersistentVolumes) Get(name string, options v1.GetOptions) (result *corev1.PersistentVolume, err error) { obj, err := c.Fake. - Invokes(testing.NewRootGetAction(persistentvolumesResource, name), &core_v1.PersistentVolume{}) + Invokes(testing.NewRootGetAction(persistentvolumesResource, name), &corev1.PersistentVolume{}) if obj == nil { return nil, err } - return obj.(*core_v1.PersistentVolume), err + return obj.(*corev1.PersistentVolume), err } // List takes label and field selectors, and returns the list of PersistentVolumes that match those selectors. -func (c *FakePersistentVolumes) List(opts v1.ListOptions) (result *core_v1.PersistentVolumeList, err error) { +func (c *FakePersistentVolumes) List(opts v1.ListOptions) (result *corev1.PersistentVolumeList, err error) { obj, err := c.Fake. - Invokes(testing.NewRootListAction(persistentvolumesResource, persistentvolumesKind, opts), &core_v1.PersistentVolumeList{}) + Invokes(testing.NewRootListAction(persistentvolumesResource, persistentvolumesKind, opts), &corev1.PersistentVolumeList{}) if obj == nil { return nil, err } @@ -59,8 +59,8 @@ func (c *FakePersistentVolumes) List(opts v1.ListOptions) (result *core_v1.Persi if label == nil { label = labels.Everything() } - list := &core_v1.PersistentVolumeList{ListMeta: obj.(*core_v1.PersistentVolumeList).ListMeta} - for _, item := range obj.(*core_v1.PersistentVolumeList).Items { + list := &corev1.PersistentVolumeList{ListMeta: obj.(*corev1.PersistentVolumeList).ListMeta} + for _, item := range obj.(*corev1.PersistentVolumeList).Items { if label.Matches(labels.Set(item.Labels)) { list.Items = append(list.Items, item) } @@ -75,40 +75,40 @@ func (c *FakePersistentVolumes) Watch(opts v1.ListOptions) (watch.Interface, err } // 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(persistentVolume *core_v1.PersistentVolume) (result *core_v1.PersistentVolume, err error) { +func (c *FakePersistentVolumes) Create(persistentVolume *corev1.PersistentVolume) (result *corev1.PersistentVolume, err error) { obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(persistentvolumesResource, persistentVolume), &core_v1.PersistentVolume{}) + Invokes(testing.NewRootCreateAction(persistentvolumesResource, persistentVolume), &corev1.PersistentVolume{}) if obj == nil { return nil, err } - return obj.(*core_v1.PersistentVolume), err + return obj.(*corev1.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(persistentVolume *core_v1.PersistentVolume) (result *core_v1.PersistentVolume, err error) { +func (c *FakePersistentVolumes) Update(persistentVolume *corev1.PersistentVolume) (result *corev1.PersistentVolume, err error) { obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(persistentvolumesResource, persistentVolume), &core_v1.PersistentVolume{}) + Invokes(testing.NewRootUpdateAction(persistentvolumesResource, persistentVolume), &corev1.PersistentVolume{}) if obj == nil { return nil, err } - return obj.(*core_v1.PersistentVolume), err + return obj.(*corev1.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(persistentVolume *core_v1.PersistentVolume) (*core_v1.PersistentVolume, error) { +func (c *FakePersistentVolumes) UpdateStatus(persistentVolume *corev1.PersistentVolume) (*corev1.PersistentVolume, error) { obj, err := c.Fake. - Invokes(testing.NewRootUpdateSubresourceAction(persistentvolumesResource, "status", persistentVolume), &core_v1.PersistentVolume{}) + Invokes(testing.NewRootUpdateSubresourceAction(persistentvolumesResource, "status", persistentVolume), &corev1.PersistentVolume{}) if obj == nil { return nil, err } - return obj.(*core_v1.PersistentVolume), err + return obj.(*corev1.PersistentVolume), err } // Delete takes name of the persistentVolume and deletes it. Returns an error if one occurs. func (c *FakePersistentVolumes) Delete(name string, options *v1.DeleteOptions) error { _, err := c.Fake. - Invokes(testing.NewRootDeleteAction(persistentvolumesResource, name), &core_v1.PersistentVolume{}) + Invokes(testing.NewRootDeleteAction(persistentvolumesResource, name), &corev1.PersistentVolume{}) return err } @@ -116,16 +116,16 @@ func (c *FakePersistentVolumes) Delete(name string, options *v1.DeleteOptions) e func (c *FakePersistentVolumes) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { action := testing.NewRootDeleteCollectionAction(persistentvolumesResource, listOptions) - _, err := c.Fake.Invokes(action, &core_v1.PersistentVolumeList{}) + _, err := c.Fake.Invokes(action, &corev1.PersistentVolumeList{}) return err } // Patch applies the patch and returns the patched persistentVolume. -func (c *FakePersistentVolumes) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core_v1.PersistentVolume, err error) { +func (c *FakePersistentVolumes) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *corev1.PersistentVolume, err error) { obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(persistentvolumesResource, name, data, subresources...), &core_v1.PersistentVolume{}) + Invokes(testing.NewRootPatchSubresourceAction(persistentvolumesResource, name, data, subresources...), &corev1.PersistentVolume{}) if obj == nil { return nil, err } - return obj.(*core_v1.PersistentVolume), err + return obj.(*corev1.PersistentVolume), err } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_persistentvolumeclaim.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_persistentvolumeclaim.go index d2d17984cc..a06eca81cb 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_persistentvolumeclaim.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_persistentvolumeclaim.go @@ -19,7 +19,7 @@ limitations under the License. package fake import ( - core_v1 "k8s.io/api/core/v1" + corev1 "k8s.io/api/core/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" schema "k8s.io/apimachinery/pkg/runtime/schema" @@ -39,20 +39,20 @@ var persistentvolumeclaimsResource = schema.GroupVersionResource{Group: "", Vers var persistentvolumeclaimsKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "PersistentVolumeClaim"} // Get takes name of the persistentVolumeClaim, and returns the corresponding persistentVolumeClaim object, and an error if there is any. -func (c *FakePersistentVolumeClaims) Get(name string, options v1.GetOptions) (result *core_v1.PersistentVolumeClaim, err error) { +func (c *FakePersistentVolumeClaims) Get(name string, options v1.GetOptions) (result *corev1.PersistentVolumeClaim, err error) { obj, err := c.Fake. - Invokes(testing.NewGetAction(persistentvolumeclaimsResource, c.ns, name), &core_v1.PersistentVolumeClaim{}) + Invokes(testing.NewGetAction(persistentvolumeclaimsResource, c.ns, name), &corev1.PersistentVolumeClaim{}) if obj == nil { return nil, err } - return obj.(*core_v1.PersistentVolumeClaim), err + return obj.(*corev1.PersistentVolumeClaim), err } // List takes label and field selectors, and returns the list of PersistentVolumeClaims that match those selectors. -func (c *FakePersistentVolumeClaims) List(opts v1.ListOptions) (result *core_v1.PersistentVolumeClaimList, err error) { +func (c *FakePersistentVolumeClaims) List(opts v1.ListOptions) (result *corev1.PersistentVolumeClaimList, err error) { obj, err := c.Fake. - Invokes(testing.NewListAction(persistentvolumeclaimsResource, persistentvolumeclaimsKind, c.ns, opts), &core_v1.PersistentVolumeClaimList{}) + Invokes(testing.NewListAction(persistentvolumeclaimsResource, persistentvolumeclaimsKind, c.ns, opts), &corev1.PersistentVolumeClaimList{}) if obj == nil { return nil, err @@ -62,8 +62,8 @@ func (c *FakePersistentVolumeClaims) List(opts v1.ListOptions) (result *core_v1. if label == nil { label = labels.Everything() } - list := &core_v1.PersistentVolumeClaimList{ListMeta: obj.(*core_v1.PersistentVolumeClaimList).ListMeta} - for _, item := range obj.(*core_v1.PersistentVolumeClaimList).Items { + list := &corev1.PersistentVolumeClaimList{ListMeta: obj.(*corev1.PersistentVolumeClaimList).ListMeta} + for _, item := range obj.(*corev1.PersistentVolumeClaimList).Items { if label.Matches(labels.Set(item.Labels)) { list.Items = append(list.Items, item) } @@ -79,43 +79,43 @@ func (c *FakePersistentVolumeClaims) Watch(opts v1.ListOptions) (watch.Interface } // 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(persistentVolumeClaim *core_v1.PersistentVolumeClaim) (result *core_v1.PersistentVolumeClaim, err error) { +func (c *FakePersistentVolumeClaims) Create(persistentVolumeClaim *corev1.PersistentVolumeClaim) (result *corev1.PersistentVolumeClaim, err error) { obj, err := c.Fake. - Invokes(testing.NewCreateAction(persistentvolumeclaimsResource, c.ns, persistentVolumeClaim), &core_v1.PersistentVolumeClaim{}) + Invokes(testing.NewCreateAction(persistentvolumeclaimsResource, c.ns, persistentVolumeClaim), &corev1.PersistentVolumeClaim{}) if obj == nil { return nil, err } - return obj.(*core_v1.PersistentVolumeClaim), err + return obj.(*corev1.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(persistentVolumeClaim *core_v1.PersistentVolumeClaim) (result *core_v1.PersistentVolumeClaim, err error) { +func (c *FakePersistentVolumeClaims) Update(persistentVolumeClaim *corev1.PersistentVolumeClaim) (result *corev1.PersistentVolumeClaim, err error) { obj, err := c.Fake. - Invokes(testing.NewUpdateAction(persistentvolumeclaimsResource, c.ns, persistentVolumeClaim), &core_v1.PersistentVolumeClaim{}) + Invokes(testing.NewUpdateAction(persistentvolumeclaimsResource, c.ns, persistentVolumeClaim), &corev1.PersistentVolumeClaim{}) if obj == nil { return nil, err } - return obj.(*core_v1.PersistentVolumeClaim), err + return obj.(*corev1.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(persistentVolumeClaim *core_v1.PersistentVolumeClaim) (*core_v1.PersistentVolumeClaim, error) { +func (c *FakePersistentVolumeClaims) UpdateStatus(persistentVolumeClaim *corev1.PersistentVolumeClaim) (*corev1.PersistentVolumeClaim, error) { obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(persistentvolumeclaimsResource, "status", c.ns, persistentVolumeClaim), &core_v1.PersistentVolumeClaim{}) + Invokes(testing.NewUpdateSubresourceAction(persistentvolumeclaimsResource, "status", c.ns, persistentVolumeClaim), &corev1.PersistentVolumeClaim{}) if obj == nil { return nil, err } - return obj.(*core_v1.PersistentVolumeClaim), err + return obj.(*corev1.PersistentVolumeClaim), err } // Delete takes name of the persistentVolumeClaim and deletes it. Returns an error if one occurs. func (c *FakePersistentVolumeClaims) Delete(name string, options *v1.DeleteOptions) error { _, err := c.Fake. - Invokes(testing.NewDeleteAction(persistentvolumeclaimsResource, c.ns, name), &core_v1.PersistentVolumeClaim{}) + Invokes(testing.NewDeleteAction(persistentvolumeclaimsResource, c.ns, name), &corev1.PersistentVolumeClaim{}) return err } @@ -124,17 +124,17 @@ func (c *FakePersistentVolumeClaims) Delete(name string, options *v1.DeleteOptio func (c *FakePersistentVolumeClaims) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { action := testing.NewDeleteCollectionAction(persistentvolumeclaimsResource, c.ns, listOptions) - _, err := c.Fake.Invokes(action, &core_v1.PersistentVolumeClaimList{}) + _, err := c.Fake.Invokes(action, &corev1.PersistentVolumeClaimList{}) return err } // Patch applies the patch and returns the patched persistentVolumeClaim. -func (c *FakePersistentVolumeClaims) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core_v1.PersistentVolumeClaim, err error) { +func (c *FakePersistentVolumeClaims) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *corev1.PersistentVolumeClaim, err error) { obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(persistentvolumeclaimsResource, c.ns, name, data, subresources...), &core_v1.PersistentVolumeClaim{}) + Invokes(testing.NewPatchSubresourceAction(persistentvolumeclaimsResource, c.ns, name, data, subresources...), &corev1.PersistentVolumeClaim{}) if obj == nil { return nil, err } - return obj.(*core_v1.PersistentVolumeClaim), err + return obj.(*corev1.PersistentVolumeClaim), err } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_pod.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_pod.go index 2960b12ae3..bbf39eafc2 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_pod.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_pod.go @@ -19,7 +19,7 @@ limitations under the License. package fake import ( - core_v1 "k8s.io/api/core/v1" + corev1 "k8s.io/api/core/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" schema "k8s.io/apimachinery/pkg/runtime/schema" @@ -39,20 +39,20 @@ var podsResource = schema.GroupVersionResource{Group: "", Version: "v1", Resourc var podsKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "Pod"} // Get takes name of the pod, and returns the corresponding pod object, and an error if there is any. -func (c *FakePods) Get(name string, options v1.GetOptions) (result *core_v1.Pod, err error) { +func (c *FakePods) Get(name string, options v1.GetOptions) (result *corev1.Pod, err error) { obj, err := c.Fake. - Invokes(testing.NewGetAction(podsResource, c.ns, name), &core_v1.Pod{}) + Invokes(testing.NewGetAction(podsResource, c.ns, name), &corev1.Pod{}) if obj == nil { return nil, err } - return obj.(*core_v1.Pod), err + return obj.(*corev1.Pod), err } // List takes label and field selectors, and returns the list of Pods that match those selectors. -func (c *FakePods) List(opts v1.ListOptions) (result *core_v1.PodList, err error) { +func (c *FakePods) List(opts v1.ListOptions) (result *corev1.PodList, err error) { obj, err := c.Fake. - Invokes(testing.NewListAction(podsResource, podsKind, c.ns, opts), &core_v1.PodList{}) + Invokes(testing.NewListAction(podsResource, podsKind, c.ns, opts), &corev1.PodList{}) if obj == nil { return nil, err @@ -62,8 +62,8 @@ func (c *FakePods) List(opts v1.ListOptions) (result *core_v1.PodList, err error if label == nil { label = labels.Everything() } - list := &core_v1.PodList{ListMeta: obj.(*core_v1.PodList).ListMeta} - for _, item := range obj.(*core_v1.PodList).Items { + list := &corev1.PodList{ListMeta: obj.(*corev1.PodList).ListMeta} + for _, item := range obj.(*corev1.PodList).Items { if label.Matches(labels.Set(item.Labels)) { list.Items = append(list.Items, item) } @@ -79,43 +79,43 @@ func (c *FakePods) Watch(opts v1.ListOptions) (watch.Interface, error) { } // 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(pod *core_v1.Pod) (result *core_v1.Pod, err error) { +func (c *FakePods) Create(pod *corev1.Pod) (result *corev1.Pod, err error) { obj, err := c.Fake. - Invokes(testing.NewCreateAction(podsResource, c.ns, pod), &core_v1.Pod{}) + Invokes(testing.NewCreateAction(podsResource, c.ns, pod), &corev1.Pod{}) if obj == nil { return nil, err } - return obj.(*core_v1.Pod), err + return obj.(*corev1.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(pod *core_v1.Pod) (result *core_v1.Pod, err error) { +func (c *FakePods) Update(pod *corev1.Pod) (result *corev1.Pod, err error) { obj, err := c.Fake. - Invokes(testing.NewUpdateAction(podsResource, c.ns, pod), &core_v1.Pod{}) + Invokes(testing.NewUpdateAction(podsResource, c.ns, pod), &corev1.Pod{}) if obj == nil { return nil, err } - return obj.(*core_v1.Pod), err + return obj.(*corev1.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(pod *core_v1.Pod) (*core_v1.Pod, error) { +func (c *FakePods) UpdateStatus(pod *corev1.Pod) (*corev1.Pod, error) { obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(podsResource, "status", c.ns, pod), &core_v1.Pod{}) + Invokes(testing.NewUpdateSubresourceAction(podsResource, "status", c.ns, pod), &corev1.Pod{}) if obj == nil { return nil, err } - return obj.(*core_v1.Pod), err + return obj.(*corev1.Pod), err } // Delete takes name of the pod and deletes it. Returns an error if one occurs. func (c *FakePods) Delete(name string, options *v1.DeleteOptions) error { _, err := c.Fake. - Invokes(testing.NewDeleteAction(podsResource, c.ns, name), &core_v1.Pod{}) + Invokes(testing.NewDeleteAction(podsResource, c.ns, name), &corev1.Pod{}) return err } @@ -124,17 +124,17 @@ func (c *FakePods) Delete(name string, options *v1.DeleteOptions) error { func (c *FakePods) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { action := testing.NewDeleteCollectionAction(podsResource, c.ns, listOptions) - _, err := c.Fake.Invokes(action, &core_v1.PodList{}) + _, err := c.Fake.Invokes(action, &corev1.PodList{}) return err } // Patch applies the patch and returns the patched pod. -func (c *FakePods) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core_v1.Pod, err error) { +func (c *FakePods) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *corev1.Pod, err error) { obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(podsResource, c.ns, name, data, subresources...), &core_v1.Pod{}) + Invokes(testing.NewPatchSubresourceAction(podsResource, c.ns, name, data, subresources...), &corev1.Pod{}) if obj == nil { return nil, err } - return obj.(*core_v1.Pod), err + return obj.(*corev1.Pod), err } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_podtemplate.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_podtemplate.go index 3ae6ca5519..ff242f1660 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_podtemplate.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_podtemplate.go @@ -19,7 +19,7 @@ limitations under the License. package fake import ( - core_v1 "k8s.io/api/core/v1" + corev1 "k8s.io/api/core/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" schema "k8s.io/apimachinery/pkg/runtime/schema" @@ -39,20 +39,20 @@ var podtemplatesResource = schema.GroupVersionResource{Group: "", Version: "v1", var podtemplatesKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "PodTemplate"} // Get takes name of the podTemplate, and returns the corresponding podTemplate object, and an error if there is any. -func (c *FakePodTemplates) Get(name string, options v1.GetOptions) (result *core_v1.PodTemplate, err error) { +func (c *FakePodTemplates) Get(name string, options v1.GetOptions) (result *corev1.PodTemplate, err error) { obj, err := c.Fake. - Invokes(testing.NewGetAction(podtemplatesResource, c.ns, name), &core_v1.PodTemplate{}) + Invokes(testing.NewGetAction(podtemplatesResource, c.ns, name), &corev1.PodTemplate{}) if obj == nil { return nil, err } - return obj.(*core_v1.PodTemplate), err + return obj.(*corev1.PodTemplate), err } // List takes label and field selectors, and returns the list of PodTemplates that match those selectors. -func (c *FakePodTemplates) List(opts v1.ListOptions) (result *core_v1.PodTemplateList, err error) { +func (c *FakePodTemplates) List(opts v1.ListOptions) (result *corev1.PodTemplateList, err error) { obj, err := c.Fake. - Invokes(testing.NewListAction(podtemplatesResource, podtemplatesKind, c.ns, opts), &core_v1.PodTemplateList{}) + Invokes(testing.NewListAction(podtemplatesResource, podtemplatesKind, c.ns, opts), &corev1.PodTemplateList{}) if obj == nil { return nil, err @@ -62,8 +62,8 @@ func (c *FakePodTemplates) List(opts v1.ListOptions) (result *core_v1.PodTemplat if label == nil { label = labels.Everything() } - list := &core_v1.PodTemplateList{ListMeta: obj.(*core_v1.PodTemplateList).ListMeta} - for _, item := range obj.(*core_v1.PodTemplateList).Items { + list := &corev1.PodTemplateList{ListMeta: obj.(*corev1.PodTemplateList).ListMeta} + for _, item := range obj.(*corev1.PodTemplateList).Items { if label.Matches(labels.Set(item.Labels)) { list.Items = append(list.Items, item) } @@ -79,31 +79,31 @@ func (c *FakePodTemplates) Watch(opts v1.ListOptions) (watch.Interface, error) { } // 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(podTemplate *core_v1.PodTemplate) (result *core_v1.PodTemplate, err error) { +func (c *FakePodTemplates) Create(podTemplate *corev1.PodTemplate) (result *corev1.PodTemplate, err error) { obj, err := c.Fake. - Invokes(testing.NewCreateAction(podtemplatesResource, c.ns, podTemplate), &core_v1.PodTemplate{}) + Invokes(testing.NewCreateAction(podtemplatesResource, c.ns, podTemplate), &corev1.PodTemplate{}) if obj == nil { return nil, err } - return obj.(*core_v1.PodTemplate), err + return obj.(*corev1.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(podTemplate *core_v1.PodTemplate) (result *core_v1.PodTemplate, err error) { +func (c *FakePodTemplates) Update(podTemplate *corev1.PodTemplate) (result *corev1.PodTemplate, err error) { obj, err := c.Fake. - Invokes(testing.NewUpdateAction(podtemplatesResource, c.ns, podTemplate), &core_v1.PodTemplate{}) + Invokes(testing.NewUpdateAction(podtemplatesResource, c.ns, podTemplate), &corev1.PodTemplate{}) if obj == nil { return nil, err } - return obj.(*core_v1.PodTemplate), err + return obj.(*corev1.PodTemplate), err } // Delete takes name of the podTemplate and deletes it. Returns an error if one occurs. func (c *FakePodTemplates) Delete(name string, options *v1.DeleteOptions) error { _, err := c.Fake. - Invokes(testing.NewDeleteAction(podtemplatesResource, c.ns, name), &core_v1.PodTemplate{}) + Invokes(testing.NewDeleteAction(podtemplatesResource, c.ns, name), &corev1.PodTemplate{}) return err } @@ -112,17 +112,17 @@ func (c *FakePodTemplates) Delete(name string, options *v1.DeleteOptions) error func (c *FakePodTemplates) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { action := testing.NewDeleteCollectionAction(podtemplatesResource, c.ns, listOptions) - _, err := c.Fake.Invokes(action, &core_v1.PodTemplateList{}) + _, err := c.Fake.Invokes(action, &corev1.PodTemplateList{}) return err } // Patch applies the patch and returns the patched podTemplate. -func (c *FakePodTemplates) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core_v1.PodTemplate, err error) { +func (c *FakePodTemplates) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *corev1.PodTemplate, err error) { obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(podtemplatesResource, c.ns, name, data, subresources...), &core_v1.PodTemplate{}) + Invokes(testing.NewPatchSubresourceAction(podtemplatesResource, c.ns, name, data, subresources...), &corev1.PodTemplate{}) if obj == nil { return nil, err } - return obj.(*core_v1.PodTemplate), err + return obj.(*corev1.PodTemplate), err } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_replicationcontroller.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_replicationcontroller.go index f25235ff22..64fde0b6ce 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_replicationcontroller.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_replicationcontroller.go @@ -19,7 +19,7 @@ limitations under the License. package fake import ( - core_v1 "k8s.io/api/core/v1" + corev1 "k8s.io/api/core/v1" v1beta1 "k8s.io/api/extensions/v1beta1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" @@ -40,20 +40,20 @@ var replicationcontrollersResource = schema.GroupVersionResource{Group: "", Vers var replicationcontrollersKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "ReplicationController"} // Get takes name of the replicationController, and returns the corresponding replicationController object, and an error if there is any. -func (c *FakeReplicationControllers) Get(name string, options v1.GetOptions) (result *core_v1.ReplicationController, err error) { +func (c *FakeReplicationControllers) Get(name string, options v1.GetOptions) (result *corev1.ReplicationController, err error) { obj, err := c.Fake. - Invokes(testing.NewGetAction(replicationcontrollersResource, c.ns, name), &core_v1.ReplicationController{}) + Invokes(testing.NewGetAction(replicationcontrollersResource, c.ns, name), &corev1.ReplicationController{}) if obj == nil { return nil, err } - return obj.(*core_v1.ReplicationController), err + return obj.(*corev1.ReplicationController), err } // List takes label and field selectors, and returns the list of ReplicationControllers that match those selectors. -func (c *FakeReplicationControllers) List(opts v1.ListOptions) (result *core_v1.ReplicationControllerList, err error) { +func (c *FakeReplicationControllers) List(opts v1.ListOptions) (result *corev1.ReplicationControllerList, err error) { obj, err := c.Fake. - Invokes(testing.NewListAction(replicationcontrollersResource, replicationcontrollersKind, c.ns, opts), &core_v1.ReplicationControllerList{}) + Invokes(testing.NewListAction(replicationcontrollersResource, replicationcontrollersKind, c.ns, opts), &corev1.ReplicationControllerList{}) if obj == nil { return nil, err @@ -63,8 +63,8 @@ func (c *FakeReplicationControllers) List(opts v1.ListOptions) (result *core_v1. if label == nil { label = labels.Everything() } - list := &core_v1.ReplicationControllerList{ListMeta: obj.(*core_v1.ReplicationControllerList).ListMeta} - for _, item := range obj.(*core_v1.ReplicationControllerList).Items { + list := &corev1.ReplicationControllerList{ListMeta: obj.(*corev1.ReplicationControllerList).ListMeta} + for _, item := range obj.(*corev1.ReplicationControllerList).Items { if label.Matches(labels.Set(item.Labels)) { list.Items = append(list.Items, item) } @@ -80,43 +80,43 @@ func (c *FakeReplicationControllers) Watch(opts v1.ListOptions) (watch.Interface } // 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(replicationController *core_v1.ReplicationController) (result *core_v1.ReplicationController, err error) { +func (c *FakeReplicationControllers) Create(replicationController *corev1.ReplicationController) (result *corev1.ReplicationController, err error) { obj, err := c.Fake. - Invokes(testing.NewCreateAction(replicationcontrollersResource, c.ns, replicationController), &core_v1.ReplicationController{}) + Invokes(testing.NewCreateAction(replicationcontrollersResource, c.ns, replicationController), &corev1.ReplicationController{}) if obj == nil { return nil, err } - return obj.(*core_v1.ReplicationController), err + return obj.(*corev1.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(replicationController *core_v1.ReplicationController) (result *core_v1.ReplicationController, err error) { +func (c *FakeReplicationControllers) Update(replicationController *corev1.ReplicationController) (result *corev1.ReplicationController, err error) { obj, err := c.Fake. - Invokes(testing.NewUpdateAction(replicationcontrollersResource, c.ns, replicationController), &core_v1.ReplicationController{}) + Invokes(testing.NewUpdateAction(replicationcontrollersResource, c.ns, replicationController), &corev1.ReplicationController{}) if obj == nil { return nil, err } - return obj.(*core_v1.ReplicationController), err + return obj.(*corev1.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(replicationController *core_v1.ReplicationController) (*core_v1.ReplicationController, error) { +func (c *FakeReplicationControllers) UpdateStatus(replicationController *corev1.ReplicationController) (*corev1.ReplicationController, error) { obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(replicationcontrollersResource, "status", c.ns, replicationController), &core_v1.ReplicationController{}) + Invokes(testing.NewUpdateSubresourceAction(replicationcontrollersResource, "status", c.ns, replicationController), &corev1.ReplicationController{}) if obj == nil { return nil, err } - return obj.(*core_v1.ReplicationController), err + return obj.(*corev1.ReplicationController), err } // Delete takes name of the replicationController and deletes it. Returns an error if one occurs. func (c *FakeReplicationControllers) Delete(name string, options *v1.DeleteOptions) error { _, err := c.Fake. - Invokes(testing.NewDeleteAction(replicationcontrollersResource, c.ns, name), &core_v1.ReplicationController{}) + Invokes(testing.NewDeleteAction(replicationcontrollersResource, c.ns, name), &corev1.ReplicationController{}) return err } @@ -125,19 +125,19 @@ func (c *FakeReplicationControllers) Delete(name string, options *v1.DeleteOptio func (c *FakeReplicationControllers) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { action := testing.NewDeleteCollectionAction(replicationcontrollersResource, c.ns, listOptions) - _, err := c.Fake.Invokes(action, &core_v1.ReplicationControllerList{}) + _, err := c.Fake.Invokes(action, &corev1.ReplicationControllerList{}) return err } // Patch applies the patch and returns the patched replicationController. -func (c *FakeReplicationControllers) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core_v1.ReplicationController, err error) { +func (c *FakeReplicationControllers) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *corev1.ReplicationController, err error) { obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(replicationcontrollersResource, c.ns, name, data, subresources...), &core_v1.ReplicationController{}) + Invokes(testing.NewPatchSubresourceAction(replicationcontrollersResource, c.ns, name, data, subresources...), &corev1.ReplicationController{}) if obj == nil { return nil, err } - return obj.(*core_v1.ReplicationController), err + return obj.(*corev1.ReplicationController), err } // GetScale takes name of the replicationController, and returns the corresponding scale object, and an error if there is any. diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_resourcequota.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_resourcequota.go index 9c6ae20a2b..069749ccff 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_resourcequota.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_resourcequota.go @@ -19,7 +19,7 @@ limitations under the License. package fake import ( - core_v1 "k8s.io/api/core/v1" + corev1 "k8s.io/api/core/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" schema "k8s.io/apimachinery/pkg/runtime/schema" @@ -39,20 +39,20 @@ var resourcequotasResource = schema.GroupVersionResource{Group: "", Version: "v1 var resourcequotasKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "ResourceQuota"} // Get takes name of the resourceQuota, and returns the corresponding resourceQuota object, and an error if there is any. -func (c *FakeResourceQuotas) Get(name string, options v1.GetOptions) (result *core_v1.ResourceQuota, err error) { +func (c *FakeResourceQuotas) Get(name string, options v1.GetOptions) (result *corev1.ResourceQuota, err error) { obj, err := c.Fake. - Invokes(testing.NewGetAction(resourcequotasResource, c.ns, name), &core_v1.ResourceQuota{}) + Invokes(testing.NewGetAction(resourcequotasResource, c.ns, name), &corev1.ResourceQuota{}) if obj == nil { return nil, err } - return obj.(*core_v1.ResourceQuota), err + return obj.(*corev1.ResourceQuota), err } // List takes label and field selectors, and returns the list of ResourceQuotas that match those selectors. -func (c *FakeResourceQuotas) List(opts v1.ListOptions) (result *core_v1.ResourceQuotaList, err error) { +func (c *FakeResourceQuotas) List(opts v1.ListOptions) (result *corev1.ResourceQuotaList, err error) { obj, err := c.Fake. - Invokes(testing.NewListAction(resourcequotasResource, resourcequotasKind, c.ns, opts), &core_v1.ResourceQuotaList{}) + Invokes(testing.NewListAction(resourcequotasResource, resourcequotasKind, c.ns, opts), &corev1.ResourceQuotaList{}) if obj == nil { return nil, err @@ -62,8 +62,8 @@ func (c *FakeResourceQuotas) List(opts v1.ListOptions) (result *core_v1.Resource if label == nil { label = labels.Everything() } - list := &core_v1.ResourceQuotaList{ListMeta: obj.(*core_v1.ResourceQuotaList).ListMeta} - for _, item := range obj.(*core_v1.ResourceQuotaList).Items { + list := &corev1.ResourceQuotaList{ListMeta: obj.(*corev1.ResourceQuotaList).ListMeta} + for _, item := range obj.(*corev1.ResourceQuotaList).Items { if label.Matches(labels.Set(item.Labels)) { list.Items = append(list.Items, item) } @@ -79,43 +79,43 @@ func (c *FakeResourceQuotas) Watch(opts v1.ListOptions) (watch.Interface, error) } // 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(resourceQuota *core_v1.ResourceQuota) (result *core_v1.ResourceQuota, err error) { +func (c *FakeResourceQuotas) Create(resourceQuota *corev1.ResourceQuota) (result *corev1.ResourceQuota, err error) { obj, err := c.Fake. - Invokes(testing.NewCreateAction(resourcequotasResource, c.ns, resourceQuota), &core_v1.ResourceQuota{}) + Invokes(testing.NewCreateAction(resourcequotasResource, c.ns, resourceQuota), &corev1.ResourceQuota{}) if obj == nil { return nil, err } - return obj.(*core_v1.ResourceQuota), err + return obj.(*corev1.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(resourceQuota *core_v1.ResourceQuota) (result *core_v1.ResourceQuota, err error) { +func (c *FakeResourceQuotas) Update(resourceQuota *corev1.ResourceQuota) (result *corev1.ResourceQuota, err error) { obj, err := c.Fake. - Invokes(testing.NewUpdateAction(resourcequotasResource, c.ns, resourceQuota), &core_v1.ResourceQuota{}) + Invokes(testing.NewUpdateAction(resourcequotasResource, c.ns, resourceQuota), &corev1.ResourceQuota{}) if obj == nil { return nil, err } - return obj.(*core_v1.ResourceQuota), err + return obj.(*corev1.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(resourceQuota *core_v1.ResourceQuota) (*core_v1.ResourceQuota, error) { +func (c *FakeResourceQuotas) UpdateStatus(resourceQuota *corev1.ResourceQuota) (*corev1.ResourceQuota, error) { obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(resourcequotasResource, "status", c.ns, resourceQuota), &core_v1.ResourceQuota{}) + Invokes(testing.NewUpdateSubresourceAction(resourcequotasResource, "status", c.ns, resourceQuota), &corev1.ResourceQuota{}) if obj == nil { return nil, err } - return obj.(*core_v1.ResourceQuota), err + return obj.(*corev1.ResourceQuota), err } // Delete takes name of the resourceQuota and deletes it. Returns an error if one occurs. func (c *FakeResourceQuotas) Delete(name string, options *v1.DeleteOptions) error { _, err := c.Fake. - Invokes(testing.NewDeleteAction(resourcequotasResource, c.ns, name), &core_v1.ResourceQuota{}) + Invokes(testing.NewDeleteAction(resourcequotasResource, c.ns, name), &corev1.ResourceQuota{}) return err } @@ -124,17 +124,17 @@ func (c *FakeResourceQuotas) Delete(name string, options *v1.DeleteOptions) erro func (c *FakeResourceQuotas) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { action := testing.NewDeleteCollectionAction(resourcequotasResource, c.ns, listOptions) - _, err := c.Fake.Invokes(action, &core_v1.ResourceQuotaList{}) + _, err := c.Fake.Invokes(action, &corev1.ResourceQuotaList{}) return err } // Patch applies the patch and returns the patched resourceQuota. -func (c *FakeResourceQuotas) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core_v1.ResourceQuota, err error) { +func (c *FakeResourceQuotas) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *corev1.ResourceQuota, err error) { obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(resourcequotasResource, c.ns, name, data, subresources...), &core_v1.ResourceQuota{}) + Invokes(testing.NewPatchSubresourceAction(resourcequotasResource, c.ns, name, data, subresources...), &corev1.ResourceQuota{}) if obj == nil { return nil, err } - return obj.(*core_v1.ResourceQuota), err + return obj.(*corev1.ResourceQuota), err } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_secret.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_secret.go index e1eeea5f8d..f59ba40bc3 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_secret.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_secret.go @@ -19,7 +19,7 @@ limitations under the License. package fake import ( - core_v1 "k8s.io/api/core/v1" + corev1 "k8s.io/api/core/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" schema "k8s.io/apimachinery/pkg/runtime/schema" @@ -39,20 +39,20 @@ var secretsResource = schema.GroupVersionResource{Group: "", Version: "v1", Reso var secretsKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "Secret"} // Get takes name of the secret, and returns the corresponding secret object, and an error if there is any. -func (c *FakeSecrets) Get(name string, options v1.GetOptions) (result *core_v1.Secret, err error) { +func (c *FakeSecrets) Get(name string, options v1.GetOptions) (result *corev1.Secret, err error) { obj, err := c.Fake. - Invokes(testing.NewGetAction(secretsResource, c.ns, name), &core_v1.Secret{}) + Invokes(testing.NewGetAction(secretsResource, c.ns, name), &corev1.Secret{}) if obj == nil { return nil, err } - return obj.(*core_v1.Secret), err + return obj.(*corev1.Secret), err } // List takes label and field selectors, and returns the list of Secrets that match those selectors. -func (c *FakeSecrets) List(opts v1.ListOptions) (result *core_v1.SecretList, err error) { +func (c *FakeSecrets) List(opts v1.ListOptions) (result *corev1.SecretList, err error) { obj, err := c.Fake. - Invokes(testing.NewListAction(secretsResource, secretsKind, c.ns, opts), &core_v1.SecretList{}) + Invokes(testing.NewListAction(secretsResource, secretsKind, c.ns, opts), &corev1.SecretList{}) if obj == nil { return nil, err @@ -62,8 +62,8 @@ func (c *FakeSecrets) List(opts v1.ListOptions) (result *core_v1.SecretList, err if label == nil { label = labels.Everything() } - list := &core_v1.SecretList{ListMeta: obj.(*core_v1.SecretList).ListMeta} - for _, item := range obj.(*core_v1.SecretList).Items { + list := &corev1.SecretList{ListMeta: obj.(*corev1.SecretList).ListMeta} + for _, item := range obj.(*corev1.SecretList).Items { if label.Matches(labels.Set(item.Labels)) { list.Items = append(list.Items, item) } @@ -79,31 +79,31 @@ func (c *FakeSecrets) Watch(opts v1.ListOptions) (watch.Interface, error) { } // 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(secret *core_v1.Secret) (result *core_v1.Secret, err error) { +func (c *FakeSecrets) Create(secret *corev1.Secret) (result *corev1.Secret, err error) { obj, err := c.Fake. - Invokes(testing.NewCreateAction(secretsResource, c.ns, secret), &core_v1.Secret{}) + Invokes(testing.NewCreateAction(secretsResource, c.ns, secret), &corev1.Secret{}) if obj == nil { return nil, err } - return obj.(*core_v1.Secret), err + return obj.(*corev1.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(secret *core_v1.Secret) (result *core_v1.Secret, err error) { +func (c *FakeSecrets) Update(secret *corev1.Secret) (result *corev1.Secret, err error) { obj, err := c.Fake. - Invokes(testing.NewUpdateAction(secretsResource, c.ns, secret), &core_v1.Secret{}) + Invokes(testing.NewUpdateAction(secretsResource, c.ns, secret), &corev1.Secret{}) if obj == nil { return nil, err } - return obj.(*core_v1.Secret), err + return obj.(*corev1.Secret), err } // Delete takes name of the secret and deletes it. Returns an error if one occurs. func (c *FakeSecrets) Delete(name string, options *v1.DeleteOptions) error { _, err := c.Fake. - Invokes(testing.NewDeleteAction(secretsResource, c.ns, name), &core_v1.Secret{}) + Invokes(testing.NewDeleteAction(secretsResource, c.ns, name), &corev1.Secret{}) return err } @@ -112,17 +112,17 @@ func (c *FakeSecrets) Delete(name string, options *v1.DeleteOptions) error { func (c *FakeSecrets) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { action := testing.NewDeleteCollectionAction(secretsResource, c.ns, listOptions) - _, err := c.Fake.Invokes(action, &core_v1.SecretList{}) + _, err := c.Fake.Invokes(action, &corev1.SecretList{}) return err } // Patch applies the patch and returns the patched secret. -func (c *FakeSecrets) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core_v1.Secret, err error) { +func (c *FakeSecrets) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *corev1.Secret, err error) { obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(secretsResource, c.ns, name, data, subresources...), &core_v1.Secret{}) + Invokes(testing.NewPatchSubresourceAction(secretsResource, c.ns, name, data, subresources...), &corev1.Secret{}) if obj == nil { return nil, err } - return obj.(*core_v1.Secret), err + return obj.(*corev1.Secret), err } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_service.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_service.go index aa23e0efa8..2ffcdff76a 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_service.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_service.go @@ -19,7 +19,7 @@ limitations under the License. package fake import ( - core_v1 "k8s.io/api/core/v1" + corev1 "k8s.io/api/core/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" schema "k8s.io/apimachinery/pkg/runtime/schema" @@ -39,20 +39,20 @@ var servicesResource = schema.GroupVersionResource{Group: "", Version: "v1", Res var servicesKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "Service"} // Get takes name of the service, and returns the corresponding service object, and an error if there is any. -func (c *FakeServices) Get(name string, options v1.GetOptions) (result *core_v1.Service, err error) { +func (c *FakeServices) Get(name string, options v1.GetOptions) (result *corev1.Service, err error) { obj, err := c.Fake. - Invokes(testing.NewGetAction(servicesResource, c.ns, name), &core_v1.Service{}) + Invokes(testing.NewGetAction(servicesResource, c.ns, name), &corev1.Service{}) if obj == nil { return nil, err } - return obj.(*core_v1.Service), err + return obj.(*corev1.Service), err } // List takes label and field selectors, and returns the list of Services that match those selectors. -func (c *FakeServices) List(opts v1.ListOptions) (result *core_v1.ServiceList, err error) { +func (c *FakeServices) List(opts v1.ListOptions) (result *corev1.ServiceList, err error) { obj, err := c.Fake. - Invokes(testing.NewListAction(servicesResource, servicesKind, c.ns, opts), &core_v1.ServiceList{}) + Invokes(testing.NewListAction(servicesResource, servicesKind, c.ns, opts), &corev1.ServiceList{}) if obj == nil { return nil, err @@ -62,8 +62,8 @@ func (c *FakeServices) List(opts v1.ListOptions) (result *core_v1.ServiceList, e if label == nil { label = labels.Everything() } - list := &core_v1.ServiceList{ListMeta: obj.(*core_v1.ServiceList).ListMeta} - for _, item := range obj.(*core_v1.ServiceList).Items { + list := &corev1.ServiceList{ListMeta: obj.(*corev1.ServiceList).ListMeta} + for _, item := range obj.(*corev1.ServiceList).Items { if label.Matches(labels.Set(item.Labels)) { list.Items = append(list.Items, item) } @@ -79,54 +79,54 @@ func (c *FakeServices) Watch(opts v1.ListOptions) (watch.Interface, error) { } // 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(service *core_v1.Service) (result *core_v1.Service, err error) { +func (c *FakeServices) Create(service *corev1.Service) (result *corev1.Service, err error) { obj, err := c.Fake. - Invokes(testing.NewCreateAction(servicesResource, c.ns, service), &core_v1.Service{}) + Invokes(testing.NewCreateAction(servicesResource, c.ns, service), &corev1.Service{}) if obj == nil { return nil, err } - return obj.(*core_v1.Service), err + return obj.(*corev1.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(service *core_v1.Service) (result *core_v1.Service, err error) { +func (c *FakeServices) Update(service *corev1.Service) (result *corev1.Service, err error) { obj, err := c.Fake. - Invokes(testing.NewUpdateAction(servicesResource, c.ns, service), &core_v1.Service{}) + Invokes(testing.NewUpdateAction(servicesResource, c.ns, service), &corev1.Service{}) if obj == nil { return nil, err } - return obj.(*core_v1.Service), err + return obj.(*corev1.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(service *core_v1.Service) (*core_v1.Service, error) { +func (c *FakeServices) UpdateStatus(service *corev1.Service) (*corev1.Service, error) { obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(servicesResource, "status", c.ns, service), &core_v1.Service{}) + Invokes(testing.NewUpdateSubresourceAction(servicesResource, "status", c.ns, service), &corev1.Service{}) if obj == nil { return nil, err } - return obj.(*core_v1.Service), err + return obj.(*corev1.Service), err } // Delete takes name of the service and deletes it. Returns an error if one occurs. func (c *FakeServices) Delete(name string, options *v1.DeleteOptions) error { _, err := c.Fake. - Invokes(testing.NewDeleteAction(servicesResource, c.ns, name), &core_v1.Service{}) + Invokes(testing.NewDeleteAction(servicesResource, c.ns, name), &corev1.Service{}) return err } // Patch applies the patch and returns the patched service. -func (c *FakeServices) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core_v1.Service, err error) { +func (c *FakeServices) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *corev1.Service, err error) { obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(servicesResource, c.ns, name, data, subresources...), &core_v1.Service{}) + Invokes(testing.NewPatchSubresourceAction(servicesResource, c.ns, name, data, subresources...), &corev1.Service{}) if obj == nil { return nil, err } - return obj.(*core_v1.Service), err + return obj.(*corev1.Service), err } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_serviceaccount.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_serviceaccount.go index 1d5837f8bd..2b2c5a7b22 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_serviceaccount.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_serviceaccount.go @@ -19,7 +19,7 @@ limitations under the License. package fake import ( - core_v1 "k8s.io/api/core/v1" + corev1 "k8s.io/api/core/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" schema "k8s.io/apimachinery/pkg/runtime/schema" @@ -39,20 +39,20 @@ var serviceaccountsResource = schema.GroupVersionResource{Group: "", Version: "v var serviceaccountsKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "ServiceAccount"} // Get takes name of the serviceAccount, and returns the corresponding serviceAccount object, and an error if there is any. -func (c *FakeServiceAccounts) Get(name string, options v1.GetOptions) (result *core_v1.ServiceAccount, err error) { +func (c *FakeServiceAccounts) Get(name string, options v1.GetOptions) (result *corev1.ServiceAccount, err error) { obj, err := c.Fake. - Invokes(testing.NewGetAction(serviceaccountsResource, c.ns, name), &core_v1.ServiceAccount{}) + Invokes(testing.NewGetAction(serviceaccountsResource, c.ns, name), &corev1.ServiceAccount{}) if obj == nil { return nil, err } - return obj.(*core_v1.ServiceAccount), err + return obj.(*corev1.ServiceAccount), err } // List takes label and field selectors, and returns the list of ServiceAccounts that match those selectors. -func (c *FakeServiceAccounts) List(opts v1.ListOptions) (result *core_v1.ServiceAccountList, err error) { +func (c *FakeServiceAccounts) List(opts v1.ListOptions) (result *corev1.ServiceAccountList, err error) { obj, err := c.Fake. - Invokes(testing.NewListAction(serviceaccountsResource, serviceaccountsKind, c.ns, opts), &core_v1.ServiceAccountList{}) + Invokes(testing.NewListAction(serviceaccountsResource, serviceaccountsKind, c.ns, opts), &corev1.ServiceAccountList{}) if obj == nil { return nil, err @@ -62,8 +62,8 @@ func (c *FakeServiceAccounts) List(opts v1.ListOptions) (result *core_v1.Service if label == nil { label = labels.Everything() } - list := &core_v1.ServiceAccountList{ListMeta: obj.(*core_v1.ServiceAccountList).ListMeta} - for _, item := range obj.(*core_v1.ServiceAccountList).Items { + list := &corev1.ServiceAccountList{ListMeta: obj.(*corev1.ServiceAccountList).ListMeta} + for _, item := range obj.(*corev1.ServiceAccountList).Items { if label.Matches(labels.Set(item.Labels)) { list.Items = append(list.Items, item) } @@ -79,31 +79,31 @@ func (c *FakeServiceAccounts) Watch(opts v1.ListOptions) (watch.Interface, error } // 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(serviceAccount *core_v1.ServiceAccount) (result *core_v1.ServiceAccount, err error) { +func (c *FakeServiceAccounts) Create(serviceAccount *corev1.ServiceAccount) (result *corev1.ServiceAccount, err error) { obj, err := c.Fake. - Invokes(testing.NewCreateAction(serviceaccountsResource, c.ns, serviceAccount), &core_v1.ServiceAccount{}) + Invokes(testing.NewCreateAction(serviceaccountsResource, c.ns, serviceAccount), &corev1.ServiceAccount{}) if obj == nil { return nil, err } - return obj.(*core_v1.ServiceAccount), err + return obj.(*corev1.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(serviceAccount *core_v1.ServiceAccount) (result *core_v1.ServiceAccount, err error) { +func (c *FakeServiceAccounts) Update(serviceAccount *corev1.ServiceAccount) (result *corev1.ServiceAccount, err error) { obj, err := c.Fake. - Invokes(testing.NewUpdateAction(serviceaccountsResource, c.ns, serviceAccount), &core_v1.ServiceAccount{}) + Invokes(testing.NewUpdateAction(serviceaccountsResource, c.ns, serviceAccount), &corev1.ServiceAccount{}) if obj == nil { return nil, err } - return obj.(*core_v1.ServiceAccount), err + return obj.(*corev1.ServiceAccount), err } // Delete takes name of the serviceAccount and deletes it. Returns an error if one occurs. func (c *FakeServiceAccounts) Delete(name string, options *v1.DeleteOptions) error { _, err := c.Fake. - Invokes(testing.NewDeleteAction(serviceaccountsResource, c.ns, name), &core_v1.ServiceAccount{}) + Invokes(testing.NewDeleteAction(serviceaccountsResource, c.ns, name), &corev1.ServiceAccount{}) return err } @@ -112,17 +112,17 @@ func (c *FakeServiceAccounts) Delete(name string, options *v1.DeleteOptions) err func (c *FakeServiceAccounts) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { action := testing.NewDeleteCollectionAction(serviceaccountsResource, c.ns, listOptions) - _, err := c.Fake.Invokes(action, &core_v1.ServiceAccountList{}) + _, err := c.Fake.Invokes(action, &corev1.ServiceAccountList{}) return err } // Patch applies the patch and returns the patched serviceAccount. -func (c *FakeServiceAccounts) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *core_v1.ServiceAccount, err error) { +func (c *FakeServiceAccounts) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *corev1.ServiceAccount, err error) { obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(serviceaccountsResource, c.ns, name, data, subresources...), &core_v1.ServiceAccount{}) + Invokes(testing.NewPatchSubresourceAction(serviceaccountsResource, c.ns, name, data, subresources...), &corev1.ServiceAccount{}) if obj == nil { return nil, err } - return obj.(*core_v1.ServiceAccount), err + return obj.(*corev1.ServiceAccount), err } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/limitrange.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/limitrange.go index 396e5ca4bc..5b385668b8 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/limitrange.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/limitrange.go @@ -20,7 +20,7 @@ package v1 import ( v1 "k8s.io/api/core/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" scheme "k8s.io/client-go/kubernetes/scheme" @@ -37,11 +37,11 @@ type LimitRangesGetter interface { type LimitRangeInterface interface { Create(*v1.LimitRange) (*v1.LimitRange, error) Update(*v1.LimitRange) (*v1.LimitRange, error) - Delete(name string, options *meta_v1.DeleteOptions) error - DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error - Get(name string, options meta_v1.GetOptions) (*v1.LimitRange, error) - List(opts meta_v1.ListOptions) (*v1.LimitRangeList, error) - Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Delete(name string, options *metav1.DeleteOptions) error + DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error + Get(name string, options metav1.GetOptions) (*v1.LimitRange, error) + List(opts metav1.ListOptions) (*v1.LimitRangeList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.LimitRange, err error) LimitRangeExpansion } @@ -61,7 +61,7 @@ func newLimitRanges(c *CoreV1Client, namespace string) *limitRanges { } // Get takes name of the limitRange, and returns the corresponding limitRange object, and an error if there is any. -func (c *limitRanges) Get(name string, options meta_v1.GetOptions) (result *v1.LimitRange, err error) { +func (c *limitRanges) Get(name string, options metav1.GetOptions) (result *v1.LimitRange, err error) { result = &v1.LimitRange{} err = c.client.Get(). Namespace(c.ns). @@ -74,7 +74,7 @@ func (c *limitRanges) Get(name string, options meta_v1.GetOptions) (result *v1.L } // List takes label and field selectors, and returns the list of LimitRanges that match those selectors. -func (c *limitRanges) List(opts meta_v1.ListOptions) (result *v1.LimitRangeList, err error) { +func (c *limitRanges) List(opts metav1.ListOptions) (result *v1.LimitRangeList, err error) { result = &v1.LimitRangeList{} err = c.client.Get(). Namespace(c.ns). @@ -86,7 +86,7 @@ func (c *limitRanges) List(opts meta_v1.ListOptions) (result *v1.LimitRangeList, } // Watch returns a watch.Interface that watches the requested limitRanges. -func (c *limitRanges) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { +func (c *limitRanges) Watch(opts metav1.ListOptions) (watch.Interface, error) { opts.Watch = true return c.client.Get(). Namespace(c.ns). @@ -121,7 +121,7 @@ func (c *limitRanges) Update(limitRange *v1.LimitRange) (result *v1.LimitRange, } // Delete takes name of the limitRange and deletes it. Returns an error if one occurs. -func (c *limitRanges) Delete(name string, options *meta_v1.DeleteOptions) error { +func (c *limitRanges) Delete(name string, options *metav1.DeleteOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("limitranges"). @@ -132,7 +132,7 @@ func (c *limitRanges) Delete(name string, options *meta_v1.DeleteOptions) error } // DeleteCollection deletes a collection of objects. -func (c *limitRanges) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { +func (c *limitRanges) DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("limitranges"). diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/namespace.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/namespace.go index 707b3e971b..e22d07dece 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/namespace.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/namespace.go @@ -20,7 +20,7 @@ package v1 import ( v1 "k8s.io/api/core/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" scheme "k8s.io/client-go/kubernetes/scheme" @@ -38,10 +38,10 @@ type NamespaceInterface interface { Create(*v1.Namespace) (*v1.Namespace, error) Update(*v1.Namespace) (*v1.Namespace, error) UpdateStatus(*v1.Namespace) (*v1.Namespace, error) - Delete(name string, options *meta_v1.DeleteOptions) error - Get(name string, options meta_v1.GetOptions) (*v1.Namespace, error) - List(opts meta_v1.ListOptions) (*v1.NamespaceList, error) - Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Delete(name string, options *metav1.DeleteOptions) error + Get(name string, options metav1.GetOptions) (*v1.Namespace, error) + List(opts metav1.ListOptions) (*v1.NamespaceList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Namespace, err error) NamespaceExpansion } @@ -59,7 +59,7 @@ func newNamespaces(c *CoreV1Client) *namespaces { } // Get takes name of the namespace, and returns the corresponding namespace object, and an error if there is any. -func (c *namespaces) Get(name string, options meta_v1.GetOptions) (result *v1.Namespace, err error) { +func (c *namespaces) Get(name string, options metav1.GetOptions) (result *v1.Namespace, err error) { result = &v1.Namespace{} err = c.client.Get(). Resource("namespaces"). @@ -71,7 +71,7 @@ func (c *namespaces) Get(name string, options meta_v1.GetOptions) (result *v1.Na } // List takes label and field selectors, and returns the list of Namespaces that match those selectors. -func (c *namespaces) List(opts meta_v1.ListOptions) (result *v1.NamespaceList, err error) { +func (c *namespaces) List(opts metav1.ListOptions) (result *v1.NamespaceList, err error) { result = &v1.NamespaceList{} err = c.client.Get(). Resource("namespaces"). @@ -82,7 +82,7 @@ func (c *namespaces) List(opts meta_v1.ListOptions) (result *v1.NamespaceList, e } // Watch returns a watch.Interface that watches the requested namespaces. -func (c *namespaces) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { +func (c *namespaces) Watch(opts metav1.ListOptions) (watch.Interface, error) { opts.Watch = true return c.client.Get(). Resource("namespaces"). @@ -129,7 +129,7 @@ func (c *namespaces) UpdateStatus(namespace *v1.Namespace) (result *v1.Namespace } // Delete takes name of the namespace and deletes it. Returns an error if one occurs. -func (c *namespaces) Delete(name string, options *meta_v1.DeleteOptions) error { +func (c *namespaces) Delete(name string, options *metav1.DeleteOptions) error { return c.client.Delete(). Resource("namespaces"). Name(name). diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/node.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/node.go index 1462d25490..5c769c1185 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/node.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/node.go @@ -20,7 +20,7 @@ package v1 import ( v1 "k8s.io/api/core/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" scheme "k8s.io/client-go/kubernetes/scheme" @@ -38,11 +38,11 @@ type NodeInterface interface { Create(*v1.Node) (*v1.Node, error) Update(*v1.Node) (*v1.Node, error) UpdateStatus(*v1.Node) (*v1.Node, error) - Delete(name string, options *meta_v1.DeleteOptions) error - DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error - Get(name string, options meta_v1.GetOptions) (*v1.Node, error) - List(opts meta_v1.ListOptions) (*v1.NodeList, error) - Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Delete(name string, options *metav1.DeleteOptions) error + DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error + Get(name string, options metav1.GetOptions) (*v1.Node, error) + List(opts metav1.ListOptions) (*v1.NodeList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Node, err error) NodeExpansion } @@ -60,7 +60,7 @@ func newNodes(c *CoreV1Client) *nodes { } // Get takes name of the node, and returns the corresponding node object, and an error if there is any. -func (c *nodes) Get(name string, options meta_v1.GetOptions) (result *v1.Node, err error) { +func (c *nodes) Get(name string, options metav1.GetOptions) (result *v1.Node, err error) { result = &v1.Node{} err = c.client.Get(). Resource("nodes"). @@ -72,7 +72,7 @@ func (c *nodes) Get(name string, options meta_v1.GetOptions) (result *v1.Node, e } // List takes label and field selectors, and returns the list of Nodes that match those selectors. -func (c *nodes) List(opts meta_v1.ListOptions) (result *v1.NodeList, err error) { +func (c *nodes) List(opts metav1.ListOptions) (result *v1.NodeList, err error) { result = &v1.NodeList{} err = c.client.Get(). Resource("nodes"). @@ -83,7 +83,7 @@ func (c *nodes) List(opts meta_v1.ListOptions) (result *v1.NodeList, err error) } // Watch returns a watch.Interface that watches the requested nodes. -func (c *nodes) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { +func (c *nodes) Watch(opts metav1.ListOptions) (watch.Interface, error) { opts.Watch = true return c.client.Get(). Resource("nodes"). @@ -130,7 +130,7 @@ func (c *nodes) UpdateStatus(node *v1.Node) (result *v1.Node, err error) { } // Delete takes name of the node and deletes it. Returns an error if one occurs. -func (c *nodes) Delete(name string, options *meta_v1.DeleteOptions) error { +func (c *nodes) Delete(name string, options *metav1.DeleteOptions) error { return c.client.Delete(). Resource("nodes"). Name(name). @@ -140,7 +140,7 @@ func (c *nodes) Delete(name string, options *meta_v1.DeleteOptions) error { } // DeleteCollection deletes a collection of objects. -func (c *nodes) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { +func (c *nodes) DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error { return c.client.Delete(). Resource("nodes"). VersionedParams(&listOptions, scheme.ParameterCodec). diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/persistentvolume.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/persistentvolume.go index f9010119ba..d5f19aef52 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/persistentvolume.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/persistentvolume.go @@ -20,7 +20,7 @@ package v1 import ( v1 "k8s.io/api/core/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" scheme "k8s.io/client-go/kubernetes/scheme" @@ -38,11 +38,11 @@ type PersistentVolumeInterface interface { Create(*v1.PersistentVolume) (*v1.PersistentVolume, error) Update(*v1.PersistentVolume) (*v1.PersistentVolume, error) UpdateStatus(*v1.PersistentVolume) (*v1.PersistentVolume, error) - Delete(name string, options *meta_v1.DeleteOptions) error - DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error - Get(name string, options meta_v1.GetOptions) (*v1.PersistentVolume, error) - List(opts meta_v1.ListOptions) (*v1.PersistentVolumeList, error) - Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Delete(name string, options *metav1.DeleteOptions) error + DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error + Get(name string, options metav1.GetOptions) (*v1.PersistentVolume, error) + List(opts metav1.ListOptions) (*v1.PersistentVolumeList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.PersistentVolume, err error) PersistentVolumeExpansion } @@ -60,7 +60,7 @@ func newPersistentVolumes(c *CoreV1Client) *persistentVolumes { } // Get takes name of the persistentVolume, and returns the corresponding persistentVolume object, and an error if there is any. -func (c *persistentVolumes) Get(name string, options meta_v1.GetOptions) (result *v1.PersistentVolume, err error) { +func (c *persistentVolumes) Get(name string, options metav1.GetOptions) (result *v1.PersistentVolume, err error) { result = &v1.PersistentVolume{} err = c.client.Get(). Resource("persistentvolumes"). @@ -72,7 +72,7 @@ func (c *persistentVolumes) Get(name string, options meta_v1.GetOptions) (result } // List takes label and field selectors, and returns the list of PersistentVolumes that match those selectors. -func (c *persistentVolumes) List(opts meta_v1.ListOptions) (result *v1.PersistentVolumeList, err error) { +func (c *persistentVolumes) List(opts metav1.ListOptions) (result *v1.PersistentVolumeList, err error) { result = &v1.PersistentVolumeList{} err = c.client.Get(). Resource("persistentvolumes"). @@ -83,7 +83,7 @@ func (c *persistentVolumes) List(opts meta_v1.ListOptions) (result *v1.Persisten } // Watch returns a watch.Interface that watches the requested persistentVolumes. -func (c *persistentVolumes) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { +func (c *persistentVolumes) Watch(opts metav1.ListOptions) (watch.Interface, error) { opts.Watch = true return c.client.Get(). Resource("persistentvolumes"). @@ -130,7 +130,7 @@ func (c *persistentVolumes) UpdateStatus(persistentVolume *v1.PersistentVolume) } // Delete takes name of the persistentVolume and deletes it. Returns an error if one occurs. -func (c *persistentVolumes) Delete(name string, options *meta_v1.DeleteOptions) error { +func (c *persistentVolumes) Delete(name string, options *metav1.DeleteOptions) error { return c.client.Delete(). Resource("persistentvolumes"). Name(name). @@ -140,7 +140,7 @@ func (c *persistentVolumes) Delete(name string, options *meta_v1.DeleteOptions) } // DeleteCollection deletes a collection of objects. -func (c *persistentVolumes) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { +func (c *persistentVolumes) DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error { return c.client.Delete(). Resource("persistentvolumes"). VersionedParams(&listOptions, scheme.ParameterCodec). diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/persistentvolumeclaim.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/persistentvolumeclaim.go index 59253d5efd..d32ae5dfd8 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/persistentvolumeclaim.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/persistentvolumeclaim.go @@ -20,7 +20,7 @@ package v1 import ( v1 "k8s.io/api/core/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" scheme "k8s.io/client-go/kubernetes/scheme" @@ -38,11 +38,11 @@ type PersistentVolumeClaimInterface interface { Create(*v1.PersistentVolumeClaim) (*v1.PersistentVolumeClaim, error) Update(*v1.PersistentVolumeClaim) (*v1.PersistentVolumeClaim, error) UpdateStatus(*v1.PersistentVolumeClaim) (*v1.PersistentVolumeClaim, error) - Delete(name string, options *meta_v1.DeleteOptions) error - DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error - Get(name string, options meta_v1.GetOptions) (*v1.PersistentVolumeClaim, error) - List(opts meta_v1.ListOptions) (*v1.PersistentVolumeClaimList, error) - Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Delete(name string, options *metav1.DeleteOptions) error + DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error + Get(name string, options metav1.GetOptions) (*v1.PersistentVolumeClaim, error) + List(opts metav1.ListOptions) (*v1.PersistentVolumeClaimList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.PersistentVolumeClaim, err error) PersistentVolumeClaimExpansion } @@ -62,7 +62,7 @@ func newPersistentVolumeClaims(c *CoreV1Client, namespace string) *persistentVol } // Get takes name of the persistentVolumeClaim, and returns the corresponding persistentVolumeClaim object, and an error if there is any. -func (c *persistentVolumeClaims) Get(name string, options meta_v1.GetOptions) (result *v1.PersistentVolumeClaim, err error) { +func (c *persistentVolumeClaims) Get(name string, options metav1.GetOptions) (result *v1.PersistentVolumeClaim, err error) { result = &v1.PersistentVolumeClaim{} err = c.client.Get(). Namespace(c.ns). @@ -75,7 +75,7 @@ func (c *persistentVolumeClaims) Get(name string, options meta_v1.GetOptions) (r } // List takes label and field selectors, and returns the list of PersistentVolumeClaims that match those selectors. -func (c *persistentVolumeClaims) List(opts meta_v1.ListOptions) (result *v1.PersistentVolumeClaimList, err error) { +func (c *persistentVolumeClaims) List(opts metav1.ListOptions) (result *v1.PersistentVolumeClaimList, err error) { result = &v1.PersistentVolumeClaimList{} err = c.client.Get(). Namespace(c.ns). @@ -87,7 +87,7 @@ func (c *persistentVolumeClaims) List(opts meta_v1.ListOptions) (result *v1.Pers } // Watch returns a watch.Interface that watches the requested persistentVolumeClaims. -func (c *persistentVolumeClaims) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { +func (c *persistentVolumeClaims) Watch(opts metav1.ListOptions) (watch.Interface, error) { opts.Watch = true return c.client.Get(). Namespace(c.ns). @@ -138,7 +138,7 @@ func (c *persistentVolumeClaims) UpdateStatus(persistentVolumeClaim *v1.Persiste } // Delete takes name of the persistentVolumeClaim and deletes it. Returns an error if one occurs. -func (c *persistentVolumeClaims) Delete(name string, options *meta_v1.DeleteOptions) error { +func (c *persistentVolumeClaims) Delete(name string, options *metav1.DeleteOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("persistentvolumeclaims"). @@ -149,7 +149,7 @@ func (c *persistentVolumeClaims) Delete(name string, options *meta_v1.DeleteOpti } // DeleteCollection deletes a collection of objects. -func (c *persistentVolumeClaims) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { +func (c *persistentVolumeClaims) DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("persistentvolumeclaims"). diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/pod.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/pod.go index 8eb7ba8bd8..b19c5a5c3e 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/pod.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/pod.go @@ -20,7 +20,7 @@ package v1 import ( v1 "k8s.io/api/core/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" scheme "k8s.io/client-go/kubernetes/scheme" @@ -38,11 +38,11 @@ type PodInterface interface { Create(*v1.Pod) (*v1.Pod, error) Update(*v1.Pod) (*v1.Pod, error) UpdateStatus(*v1.Pod) (*v1.Pod, error) - Delete(name string, options *meta_v1.DeleteOptions) error - DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error - Get(name string, options meta_v1.GetOptions) (*v1.Pod, error) - List(opts meta_v1.ListOptions) (*v1.PodList, error) - Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Delete(name string, options *metav1.DeleteOptions) error + DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error + Get(name string, options metav1.GetOptions) (*v1.Pod, error) + List(opts metav1.ListOptions) (*v1.PodList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Pod, err error) PodExpansion } @@ -62,7 +62,7 @@ func newPods(c *CoreV1Client, namespace string) *pods { } // Get takes name of the pod, and returns the corresponding pod object, and an error if there is any. -func (c *pods) Get(name string, options meta_v1.GetOptions) (result *v1.Pod, err error) { +func (c *pods) Get(name string, options metav1.GetOptions) (result *v1.Pod, err error) { result = &v1.Pod{} err = c.client.Get(). Namespace(c.ns). @@ -75,7 +75,7 @@ func (c *pods) Get(name string, options meta_v1.GetOptions) (result *v1.Pod, err } // List takes label and field selectors, and returns the list of Pods that match those selectors. -func (c *pods) List(opts meta_v1.ListOptions) (result *v1.PodList, err error) { +func (c *pods) List(opts metav1.ListOptions) (result *v1.PodList, err error) { result = &v1.PodList{} err = c.client.Get(). Namespace(c.ns). @@ -87,7 +87,7 @@ func (c *pods) List(opts meta_v1.ListOptions) (result *v1.PodList, err error) { } // Watch returns a watch.Interface that watches the requested pods. -func (c *pods) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { +func (c *pods) Watch(opts metav1.ListOptions) (watch.Interface, error) { opts.Watch = true return c.client.Get(). Namespace(c.ns). @@ -138,7 +138,7 @@ func (c *pods) UpdateStatus(pod *v1.Pod) (result *v1.Pod, err error) { } // Delete takes name of the pod and deletes it. Returns an error if one occurs. -func (c *pods) Delete(name string, options *meta_v1.DeleteOptions) error { +func (c *pods) Delete(name string, options *metav1.DeleteOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("pods"). @@ -149,7 +149,7 @@ func (c *pods) Delete(name string, options *meta_v1.DeleteOptions) error { } // DeleteCollection deletes a collection of objects. -func (c *pods) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { +func (c *pods) DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("pods"). diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/podtemplate.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/podtemplate.go index d99d8c3b51..d644e17d77 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/podtemplate.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/podtemplate.go @@ -20,7 +20,7 @@ package v1 import ( v1 "k8s.io/api/core/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" scheme "k8s.io/client-go/kubernetes/scheme" @@ -37,11 +37,11 @@ type PodTemplatesGetter interface { type PodTemplateInterface interface { Create(*v1.PodTemplate) (*v1.PodTemplate, error) Update(*v1.PodTemplate) (*v1.PodTemplate, error) - Delete(name string, options *meta_v1.DeleteOptions) error - DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error - Get(name string, options meta_v1.GetOptions) (*v1.PodTemplate, error) - List(opts meta_v1.ListOptions) (*v1.PodTemplateList, error) - Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Delete(name string, options *metav1.DeleteOptions) error + DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error + Get(name string, options metav1.GetOptions) (*v1.PodTemplate, error) + List(opts metav1.ListOptions) (*v1.PodTemplateList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.PodTemplate, err error) PodTemplateExpansion } @@ -61,7 +61,7 @@ func newPodTemplates(c *CoreV1Client, namespace string) *podTemplates { } // Get takes name of the podTemplate, and returns the corresponding podTemplate object, and an error if there is any. -func (c *podTemplates) Get(name string, options meta_v1.GetOptions) (result *v1.PodTemplate, err error) { +func (c *podTemplates) Get(name string, options metav1.GetOptions) (result *v1.PodTemplate, err error) { result = &v1.PodTemplate{} err = c.client.Get(). Namespace(c.ns). @@ -74,7 +74,7 @@ func (c *podTemplates) Get(name string, options meta_v1.GetOptions) (result *v1. } // List takes label and field selectors, and returns the list of PodTemplates that match those selectors. -func (c *podTemplates) List(opts meta_v1.ListOptions) (result *v1.PodTemplateList, err error) { +func (c *podTemplates) List(opts metav1.ListOptions) (result *v1.PodTemplateList, err error) { result = &v1.PodTemplateList{} err = c.client.Get(). Namespace(c.ns). @@ -86,7 +86,7 @@ func (c *podTemplates) List(opts meta_v1.ListOptions) (result *v1.PodTemplateLis } // Watch returns a watch.Interface that watches the requested podTemplates. -func (c *podTemplates) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { +func (c *podTemplates) Watch(opts metav1.ListOptions) (watch.Interface, error) { opts.Watch = true return c.client.Get(). Namespace(c.ns). @@ -121,7 +121,7 @@ func (c *podTemplates) Update(podTemplate *v1.PodTemplate) (result *v1.PodTempla } // Delete takes name of the podTemplate and deletes it. Returns an error if one occurs. -func (c *podTemplates) Delete(name string, options *meta_v1.DeleteOptions) error { +func (c *podTemplates) Delete(name string, options *metav1.DeleteOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("podtemplates"). @@ -132,7 +132,7 @@ func (c *podTemplates) Delete(name string, options *meta_v1.DeleteOptions) error } // DeleteCollection deletes a collection of objects. -func (c *podTemplates) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { +func (c *podTemplates) DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("podtemplates"). diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/replicationcontroller.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/replicationcontroller.go index 7741f970a1..17622f1c26 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/replicationcontroller.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/replicationcontroller.go @@ -21,7 +21,7 @@ package v1 import ( v1 "k8s.io/api/core/v1" v1beta1 "k8s.io/api/extensions/v1beta1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" scheme "k8s.io/client-go/kubernetes/scheme" @@ -39,13 +39,13 @@ type ReplicationControllerInterface interface { Create(*v1.ReplicationController) (*v1.ReplicationController, error) Update(*v1.ReplicationController) (*v1.ReplicationController, error) UpdateStatus(*v1.ReplicationController) (*v1.ReplicationController, error) - Delete(name string, options *meta_v1.DeleteOptions) error - DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error - Get(name string, options meta_v1.GetOptions) (*v1.ReplicationController, error) - List(opts meta_v1.ListOptions) (*v1.ReplicationControllerList, error) - Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Delete(name string, options *metav1.DeleteOptions) error + DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error + Get(name string, options metav1.GetOptions) (*v1.ReplicationController, error) + List(opts metav1.ListOptions) (*v1.ReplicationControllerList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.ReplicationController, err error) - GetScale(replicationControllerName string, options meta_v1.GetOptions) (*v1beta1.Scale, error) + GetScale(replicationControllerName string, options metav1.GetOptions) (*v1beta1.Scale, error) UpdateScale(replicationControllerName string, scale *v1beta1.Scale) (*v1beta1.Scale, error) ReplicationControllerExpansion @@ -66,7 +66,7 @@ func newReplicationControllers(c *CoreV1Client, namespace string) *replicationCo } // Get takes name of the replicationController, and returns the corresponding replicationController object, and an error if there is any. -func (c *replicationControllers) Get(name string, options meta_v1.GetOptions) (result *v1.ReplicationController, err error) { +func (c *replicationControllers) Get(name string, options metav1.GetOptions) (result *v1.ReplicationController, err error) { result = &v1.ReplicationController{} err = c.client.Get(). Namespace(c.ns). @@ -79,7 +79,7 @@ func (c *replicationControllers) Get(name string, options meta_v1.GetOptions) (r } // List takes label and field selectors, and returns the list of ReplicationControllers that match those selectors. -func (c *replicationControllers) List(opts meta_v1.ListOptions) (result *v1.ReplicationControllerList, err error) { +func (c *replicationControllers) List(opts metav1.ListOptions) (result *v1.ReplicationControllerList, err error) { result = &v1.ReplicationControllerList{} err = c.client.Get(). Namespace(c.ns). @@ -91,7 +91,7 @@ func (c *replicationControllers) List(opts meta_v1.ListOptions) (result *v1.Repl } // Watch returns a watch.Interface that watches the requested replicationControllers. -func (c *replicationControllers) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { +func (c *replicationControllers) Watch(opts metav1.ListOptions) (watch.Interface, error) { opts.Watch = true return c.client.Get(). Namespace(c.ns). @@ -142,7 +142,7 @@ func (c *replicationControllers) UpdateStatus(replicationController *v1.Replicat } // Delete takes name of the replicationController and deletes it. Returns an error if one occurs. -func (c *replicationControllers) Delete(name string, options *meta_v1.DeleteOptions) error { +func (c *replicationControllers) Delete(name string, options *metav1.DeleteOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("replicationcontrollers"). @@ -153,7 +153,7 @@ func (c *replicationControllers) Delete(name string, options *meta_v1.DeleteOpti } // DeleteCollection deletes a collection of objects. -func (c *replicationControllers) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { +func (c *replicationControllers) DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("replicationcontrollers"). @@ -178,7 +178,7 @@ func (c *replicationControllers) Patch(name string, pt types.PatchType, data []b } // GetScale takes name of the replicationController, and returns the corresponding v1beta1.Scale object, and an error if there is any. -func (c *replicationControllers) GetScale(replicationControllerName string, options meta_v1.GetOptions) (result *v1beta1.Scale, err error) { +func (c *replicationControllers) GetScale(replicationControllerName string, options metav1.GetOptions) (result *v1beta1.Scale, err error) { result = &v1beta1.Scale{} err = c.client.Get(). Namespace(c.ns). diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/resourcequota.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/resourcequota.go index 7662a02802..8b74a4046f 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/resourcequota.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/resourcequota.go @@ -20,7 +20,7 @@ package v1 import ( v1 "k8s.io/api/core/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" scheme "k8s.io/client-go/kubernetes/scheme" @@ -38,11 +38,11 @@ type ResourceQuotaInterface interface { Create(*v1.ResourceQuota) (*v1.ResourceQuota, error) Update(*v1.ResourceQuota) (*v1.ResourceQuota, error) UpdateStatus(*v1.ResourceQuota) (*v1.ResourceQuota, error) - Delete(name string, options *meta_v1.DeleteOptions) error - DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error - Get(name string, options meta_v1.GetOptions) (*v1.ResourceQuota, error) - List(opts meta_v1.ListOptions) (*v1.ResourceQuotaList, error) - Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Delete(name string, options *metav1.DeleteOptions) error + DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error + Get(name string, options metav1.GetOptions) (*v1.ResourceQuota, error) + List(opts metav1.ListOptions) (*v1.ResourceQuotaList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.ResourceQuota, err error) ResourceQuotaExpansion } @@ -62,7 +62,7 @@ func newResourceQuotas(c *CoreV1Client, namespace string) *resourceQuotas { } // Get takes name of the resourceQuota, and returns the corresponding resourceQuota object, and an error if there is any. -func (c *resourceQuotas) Get(name string, options meta_v1.GetOptions) (result *v1.ResourceQuota, err error) { +func (c *resourceQuotas) Get(name string, options metav1.GetOptions) (result *v1.ResourceQuota, err error) { result = &v1.ResourceQuota{} err = c.client.Get(). Namespace(c.ns). @@ -75,7 +75,7 @@ func (c *resourceQuotas) Get(name string, options meta_v1.GetOptions) (result *v } // List takes label and field selectors, and returns the list of ResourceQuotas that match those selectors. -func (c *resourceQuotas) List(opts meta_v1.ListOptions) (result *v1.ResourceQuotaList, err error) { +func (c *resourceQuotas) List(opts metav1.ListOptions) (result *v1.ResourceQuotaList, err error) { result = &v1.ResourceQuotaList{} err = c.client.Get(). Namespace(c.ns). @@ -87,7 +87,7 @@ func (c *resourceQuotas) List(opts meta_v1.ListOptions) (result *v1.ResourceQuot } // Watch returns a watch.Interface that watches the requested resourceQuotas. -func (c *resourceQuotas) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { +func (c *resourceQuotas) Watch(opts metav1.ListOptions) (watch.Interface, error) { opts.Watch = true return c.client.Get(). Namespace(c.ns). @@ -138,7 +138,7 @@ func (c *resourceQuotas) UpdateStatus(resourceQuota *v1.ResourceQuota) (result * } // Delete takes name of the resourceQuota and deletes it. Returns an error if one occurs. -func (c *resourceQuotas) Delete(name string, options *meta_v1.DeleteOptions) error { +func (c *resourceQuotas) Delete(name string, options *metav1.DeleteOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("resourcequotas"). @@ -149,7 +149,7 @@ func (c *resourceQuotas) Delete(name string, options *meta_v1.DeleteOptions) err } // DeleteCollection deletes a collection of objects. -func (c *resourceQuotas) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { +func (c *resourceQuotas) DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("resourcequotas"). diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/secret.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/secret.go index 5d149f8cc8..4ea9796b63 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/secret.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/secret.go @@ -20,7 +20,7 @@ package v1 import ( v1 "k8s.io/api/core/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" scheme "k8s.io/client-go/kubernetes/scheme" @@ -37,11 +37,11 @@ type SecretsGetter interface { type SecretInterface interface { Create(*v1.Secret) (*v1.Secret, error) Update(*v1.Secret) (*v1.Secret, error) - Delete(name string, options *meta_v1.DeleteOptions) error - DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error - Get(name string, options meta_v1.GetOptions) (*v1.Secret, error) - List(opts meta_v1.ListOptions) (*v1.SecretList, error) - Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Delete(name string, options *metav1.DeleteOptions) error + DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error + Get(name string, options metav1.GetOptions) (*v1.Secret, error) + List(opts metav1.ListOptions) (*v1.SecretList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Secret, err error) SecretExpansion } @@ -61,7 +61,7 @@ func newSecrets(c *CoreV1Client, namespace string) *secrets { } // Get takes name of the secret, and returns the corresponding secret object, and an error if there is any. -func (c *secrets) Get(name string, options meta_v1.GetOptions) (result *v1.Secret, err error) { +func (c *secrets) Get(name string, options metav1.GetOptions) (result *v1.Secret, err error) { result = &v1.Secret{} err = c.client.Get(). Namespace(c.ns). @@ -74,7 +74,7 @@ func (c *secrets) Get(name string, options meta_v1.GetOptions) (result *v1.Secre } // List takes label and field selectors, and returns the list of Secrets that match those selectors. -func (c *secrets) List(opts meta_v1.ListOptions) (result *v1.SecretList, err error) { +func (c *secrets) List(opts metav1.ListOptions) (result *v1.SecretList, err error) { result = &v1.SecretList{} err = c.client.Get(). Namespace(c.ns). @@ -86,7 +86,7 @@ func (c *secrets) List(opts meta_v1.ListOptions) (result *v1.SecretList, err err } // Watch returns a watch.Interface that watches the requested secrets. -func (c *secrets) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { +func (c *secrets) Watch(opts metav1.ListOptions) (watch.Interface, error) { opts.Watch = true return c.client.Get(). Namespace(c.ns). @@ -121,7 +121,7 @@ func (c *secrets) Update(secret *v1.Secret) (result *v1.Secret, err error) { } // Delete takes name of the secret and deletes it. Returns an error if one occurs. -func (c *secrets) Delete(name string, options *meta_v1.DeleteOptions) error { +func (c *secrets) Delete(name string, options *metav1.DeleteOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("secrets"). @@ -132,7 +132,7 @@ func (c *secrets) Delete(name string, options *meta_v1.DeleteOptions) error { } // DeleteCollection deletes a collection of objects. -func (c *secrets) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { +func (c *secrets) DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("secrets"). diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/service.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/service.go index ec8646a274..6c42ca87a8 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/service.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/service.go @@ -20,7 +20,7 @@ package v1 import ( v1 "k8s.io/api/core/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" scheme "k8s.io/client-go/kubernetes/scheme" @@ -38,10 +38,10 @@ type ServiceInterface interface { Create(*v1.Service) (*v1.Service, error) Update(*v1.Service) (*v1.Service, error) UpdateStatus(*v1.Service) (*v1.Service, error) - Delete(name string, options *meta_v1.DeleteOptions) error - Get(name string, options meta_v1.GetOptions) (*v1.Service, error) - List(opts meta_v1.ListOptions) (*v1.ServiceList, error) - Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Delete(name string, options *metav1.DeleteOptions) error + Get(name string, options metav1.GetOptions) (*v1.Service, error) + List(opts metav1.ListOptions) (*v1.ServiceList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Service, err error) ServiceExpansion } @@ -61,7 +61,7 @@ func newServices(c *CoreV1Client, namespace string) *services { } // Get takes name of the service, and returns the corresponding service object, and an error if there is any. -func (c *services) Get(name string, options meta_v1.GetOptions) (result *v1.Service, err error) { +func (c *services) Get(name string, options metav1.GetOptions) (result *v1.Service, err error) { result = &v1.Service{} err = c.client.Get(). Namespace(c.ns). @@ -74,7 +74,7 @@ func (c *services) Get(name string, options meta_v1.GetOptions) (result *v1.Serv } // List takes label and field selectors, and returns the list of Services that match those selectors. -func (c *services) List(opts meta_v1.ListOptions) (result *v1.ServiceList, err error) { +func (c *services) List(opts metav1.ListOptions) (result *v1.ServiceList, err error) { result = &v1.ServiceList{} err = c.client.Get(). Namespace(c.ns). @@ -86,7 +86,7 @@ func (c *services) List(opts meta_v1.ListOptions) (result *v1.ServiceList, err e } // Watch returns a watch.Interface that watches the requested services. -func (c *services) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { +func (c *services) Watch(opts metav1.ListOptions) (watch.Interface, error) { opts.Watch = true return c.client.Get(). Namespace(c.ns). @@ -137,7 +137,7 @@ func (c *services) UpdateStatus(service *v1.Service) (result *v1.Service, err er } // Delete takes name of the service and deletes it. Returns an error if one occurs. -func (c *services) Delete(name string, options *meta_v1.DeleteOptions) error { +func (c *services) Delete(name string, options *metav1.DeleteOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("services"). diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/serviceaccount.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/serviceaccount.go index ba2a279487..f3ab7eb878 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/serviceaccount.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/serviceaccount.go @@ -20,7 +20,7 @@ package v1 import ( v1 "k8s.io/api/core/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" scheme "k8s.io/client-go/kubernetes/scheme" @@ -37,11 +37,11 @@ type ServiceAccountsGetter interface { type ServiceAccountInterface interface { Create(*v1.ServiceAccount) (*v1.ServiceAccount, error) Update(*v1.ServiceAccount) (*v1.ServiceAccount, error) - Delete(name string, options *meta_v1.DeleteOptions) error - DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error - Get(name string, options meta_v1.GetOptions) (*v1.ServiceAccount, error) - List(opts meta_v1.ListOptions) (*v1.ServiceAccountList, error) - Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Delete(name string, options *metav1.DeleteOptions) error + DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error + Get(name string, options metav1.GetOptions) (*v1.ServiceAccount, error) + List(opts metav1.ListOptions) (*v1.ServiceAccountList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.ServiceAccount, err error) ServiceAccountExpansion } @@ -61,7 +61,7 @@ func newServiceAccounts(c *CoreV1Client, namespace string) *serviceAccounts { } // Get takes name of the serviceAccount, and returns the corresponding serviceAccount object, and an error if there is any. -func (c *serviceAccounts) Get(name string, options meta_v1.GetOptions) (result *v1.ServiceAccount, err error) { +func (c *serviceAccounts) Get(name string, options metav1.GetOptions) (result *v1.ServiceAccount, err error) { result = &v1.ServiceAccount{} err = c.client.Get(). Namespace(c.ns). @@ -74,7 +74,7 @@ func (c *serviceAccounts) Get(name string, options meta_v1.GetOptions) (result * } // List takes label and field selectors, and returns the list of ServiceAccounts that match those selectors. -func (c *serviceAccounts) List(opts meta_v1.ListOptions) (result *v1.ServiceAccountList, err error) { +func (c *serviceAccounts) List(opts metav1.ListOptions) (result *v1.ServiceAccountList, err error) { result = &v1.ServiceAccountList{} err = c.client.Get(). Namespace(c.ns). @@ -86,7 +86,7 @@ func (c *serviceAccounts) List(opts meta_v1.ListOptions) (result *v1.ServiceAcco } // Watch returns a watch.Interface that watches the requested serviceAccounts. -func (c *serviceAccounts) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { +func (c *serviceAccounts) Watch(opts metav1.ListOptions) (watch.Interface, error) { opts.Watch = true return c.client.Get(). Namespace(c.ns). @@ -121,7 +121,7 @@ func (c *serviceAccounts) Update(serviceAccount *v1.ServiceAccount) (result *v1. } // Delete takes name of the serviceAccount and deletes it. Returns an error if one occurs. -func (c *serviceAccounts) Delete(name string, options *meta_v1.DeleteOptions) error { +func (c *serviceAccounts) Delete(name string, options *metav1.DeleteOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("serviceaccounts"). @@ -132,7 +132,7 @@ func (c *serviceAccounts) Delete(name string, options *meta_v1.DeleteOptions) er } // DeleteCollection deletes a collection of objects. -func (c *serviceAccounts) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { +func (c *serviceAccounts) DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("serviceaccounts"). diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/BUILD index 307884cc43..c395bb61a6 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/BUILD @@ -8,16 +8,17 @@ go_library( "events_client.go", "generated_expansion.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1", importpath = "k8s.io/client-go/kubernetes/typed/events/v1beta1", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/api/events/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/api/events/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/fake/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/fake/BUILD index b9a692e5ce..cc6f6c5af0 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/fake/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/fake/BUILD @@ -7,18 +7,19 @@ go_library( "fake_event.go", "fake_events_client.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/fake", importpath = "k8s.io/client-go/kubernetes/typed/events/v1beta1/fake", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/api/events/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", + "//staging/src/k8s.io/api/events/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/events/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/BUILD index 5ad9768673..062da6216a 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/BUILD @@ -20,17 +20,18 @@ go_library( "scale.go", "scale_expansion.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1", importpath = "k8s.io/client-go/kubernetes/typed/extensions/v1beta1", deps = [ - "//vendor/k8s.io/api/extensions/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/api/extensions/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/BUILD index e62ff5bc8e..d0a83e23ef 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/BUILD @@ -19,17 +19,18 @@ go_library( "fake_scale.go", "fake_scale_expansion.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake", importpath = "k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake", deps = [ - "//vendor/k8s.io/api/extensions/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", + "//staging/src/k8s.io/api/extensions/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/extensions/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/BUILD index 7a2e3e2b12..8d4be0834e 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/BUILD @@ -13,15 +13,16 @@ go_library( "networking_client.go", "networkpolicy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/networking/v1", importpath = "k8s.io/client-go/kubernetes/typed/networking/v1", deps = [ - "//vendor/k8s.io/api/networking/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/api/networking/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/BUILD index bc84632da2..08f8ac9fd6 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/BUILD @@ -12,17 +12,18 @@ go_library( "fake_networking_client.go", "fake_networkpolicy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake", importpath = "k8s.io/client-go/kubernetes/typed/networking/v1/fake", deps = [ - "//vendor/k8s.io/api/networking/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/networking/v1:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", + "//staging/src/k8s.io/api/networking/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/networking/v1:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/fake_networkpolicy.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/fake_networkpolicy.go index 4bf7ef7cac..7be202298d 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/fake_networkpolicy.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/fake_networkpolicy.go @@ -19,7 +19,7 @@ limitations under the License. package fake import ( - networking_v1 "k8s.io/api/networking/v1" + networkingv1 "k8s.io/api/networking/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" schema "k8s.io/apimachinery/pkg/runtime/schema" @@ -39,20 +39,20 @@ var networkpoliciesResource = schema.GroupVersionResource{Group: "networking.k8s var networkpoliciesKind = schema.GroupVersionKind{Group: "networking.k8s.io", Version: "v1", Kind: "NetworkPolicy"} // Get takes name of the networkPolicy, and returns the corresponding networkPolicy object, and an error if there is any. -func (c *FakeNetworkPolicies) Get(name string, options v1.GetOptions) (result *networking_v1.NetworkPolicy, err error) { +func (c *FakeNetworkPolicies) Get(name string, options v1.GetOptions) (result *networkingv1.NetworkPolicy, err error) { obj, err := c.Fake. - Invokes(testing.NewGetAction(networkpoliciesResource, c.ns, name), &networking_v1.NetworkPolicy{}) + Invokes(testing.NewGetAction(networkpoliciesResource, c.ns, name), &networkingv1.NetworkPolicy{}) if obj == nil { return nil, err } - return obj.(*networking_v1.NetworkPolicy), err + return obj.(*networkingv1.NetworkPolicy), err } // List takes label and field selectors, and returns the list of NetworkPolicies that match those selectors. -func (c *FakeNetworkPolicies) List(opts v1.ListOptions) (result *networking_v1.NetworkPolicyList, err error) { +func (c *FakeNetworkPolicies) List(opts v1.ListOptions) (result *networkingv1.NetworkPolicyList, err error) { obj, err := c.Fake. - Invokes(testing.NewListAction(networkpoliciesResource, networkpoliciesKind, c.ns, opts), &networking_v1.NetworkPolicyList{}) + Invokes(testing.NewListAction(networkpoliciesResource, networkpoliciesKind, c.ns, opts), &networkingv1.NetworkPolicyList{}) if obj == nil { return nil, err @@ -62,8 +62,8 @@ func (c *FakeNetworkPolicies) List(opts v1.ListOptions) (result *networking_v1.N if label == nil { label = labels.Everything() } - list := &networking_v1.NetworkPolicyList{ListMeta: obj.(*networking_v1.NetworkPolicyList).ListMeta} - for _, item := range obj.(*networking_v1.NetworkPolicyList).Items { + list := &networkingv1.NetworkPolicyList{ListMeta: obj.(*networkingv1.NetworkPolicyList).ListMeta} + for _, item := range obj.(*networkingv1.NetworkPolicyList).Items { if label.Matches(labels.Set(item.Labels)) { list.Items = append(list.Items, item) } @@ -79,31 +79,31 @@ func (c *FakeNetworkPolicies) Watch(opts v1.ListOptions) (watch.Interface, error } // 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(networkPolicy *networking_v1.NetworkPolicy) (result *networking_v1.NetworkPolicy, err error) { +func (c *FakeNetworkPolicies) Create(networkPolicy *networkingv1.NetworkPolicy) (result *networkingv1.NetworkPolicy, err error) { obj, err := c.Fake. - Invokes(testing.NewCreateAction(networkpoliciesResource, c.ns, networkPolicy), &networking_v1.NetworkPolicy{}) + Invokes(testing.NewCreateAction(networkpoliciesResource, c.ns, networkPolicy), &networkingv1.NetworkPolicy{}) if obj == nil { return nil, err } - return obj.(*networking_v1.NetworkPolicy), err + return obj.(*networkingv1.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(networkPolicy *networking_v1.NetworkPolicy) (result *networking_v1.NetworkPolicy, err error) { +func (c *FakeNetworkPolicies) Update(networkPolicy *networkingv1.NetworkPolicy) (result *networkingv1.NetworkPolicy, err error) { obj, err := c.Fake. - Invokes(testing.NewUpdateAction(networkpoliciesResource, c.ns, networkPolicy), &networking_v1.NetworkPolicy{}) + Invokes(testing.NewUpdateAction(networkpoliciesResource, c.ns, networkPolicy), &networkingv1.NetworkPolicy{}) if obj == nil { return nil, err } - return obj.(*networking_v1.NetworkPolicy), err + return obj.(*networkingv1.NetworkPolicy), err } // Delete takes name of the networkPolicy and deletes it. Returns an error if one occurs. func (c *FakeNetworkPolicies) Delete(name string, options *v1.DeleteOptions) error { _, err := c.Fake. - Invokes(testing.NewDeleteAction(networkpoliciesResource, c.ns, name), &networking_v1.NetworkPolicy{}) + Invokes(testing.NewDeleteAction(networkpoliciesResource, c.ns, name), &networkingv1.NetworkPolicy{}) return err } @@ -112,17 +112,17 @@ func (c *FakeNetworkPolicies) Delete(name string, options *v1.DeleteOptions) err func (c *FakeNetworkPolicies) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { action := testing.NewDeleteCollectionAction(networkpoliciesResource, c.ns, listOptions) - _, err := c.Fake.Invokes(action, &networking_v1.NetworkPolicyList{}) + _, err := c.Fake.Invokes(action, &networkingv1.NetworkPolicyList{}) return err } // Patch applies the patch and returns the patched networkPolicy. -func (c *FakeNetworkPolicies) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *networking_v1.NetworkPolicy, err error) { +func (c *FakeNetworkPolicies) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *networkingv1.NetworkPolicy, err error) { obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(networkpoliciesResource, c.ns, name, data, subresources...), &networking_v1.NetworkPolicy{}) + Invokes(testing.NewPatchSubresourceAction(networkpoliciesResource, c.ns, name, data, subresources...), &networkingv1.NetworkPolicy{}) if obj == nil { return nil, err } - return obj.(*networking_v1.NetworkPolicy), err + return obj.(*networkingv1.NetworkPolicy), err } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/networkpolicy.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/networkpolicy.go index c2eb2e7928..d8f0a6b47e 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/networkpolicy.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/networkpolicy.go @@ -20,7 +20,7 @@ package v1 import ( v1 "k8s.io/api/networking/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" scheme "k8s.io/client-go/kubernetes/scheme" @@ -37,11 +37,11 @@ type NetworkPoliciesGetter interface { type NetworkPolicyInterface interface { Create(*v1.NetworkPolicy) (*v1.NetworkPolicy, error) Update(*v1.NetworkPolicy) (*v1.NetworkPolicy, error) - Delete(name string, options *meta_v1.DeleteOptions) error - DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error - Get(name string, options meta_v1.GetOptions) (*v1.NetworkPolicy, error) - List(opts meta_v1.ListOptions) (*v1.NetworkPolicyList, error) - Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Delete(name string, options *metav1.DeleteOptions) error + DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error + Get(name string, options metav1.GetOptions) (*v1.NetworkPolicy, error) + List(opts metav1.ListOptions) (*v1.NetworkPolicyList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.NetworkPolicy, err error) NetworkPolicyExpansion } @@ -61,7 +61,7 @@ func newNetworkPolicies(c *NetworkingV1Client, namespace string) *networkPolicie } // Get takes name of the networkPolicy, and returns the corresponding networkPolicy object, and an error if there is any. -func (c *networkPolicies) Get(name string, options meta_v1.GetOptions) (result *v1.NetworkPolicy, err error) { +func (c *networkPolicies) Get(name string, options metav1.GetOptions) (result *v1.NetworkPolicy, err error) { result = &v1.NetworkPolicy{} err = c.client.Get(). Namespace(c.ns). @@ -74,7 +74,7 @@ func (c *networkPolicies) Get(name string, options meta_v1.GetOptions) (result * } // List takes label and field selectors, and returns the list of NetworkPolicies that match those selectors. -func (c *networkPolicies) List(opts meta_v1.ListOptions) (result *v1.NetworkPolicyList, err error) { +func (c *networkPolicies) List(opts metav1.ListOptions) (result *v1.NetworkPolicyList, err error) { result = &v1.NetworkPolicyList{} err = c.client.Get(). Namespace(c.ns). @@ -86,7 +86,7 @@ func (c *networkPolicies) List(opts meta_v1.ListOptions) (result *v1.NetworkPoli } // Watch returns a watch.Interface that watches the requested networkPolicies. -func (c *networkPolicies) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { +func (c *networkPolicies) Watch(opts metav1.ListOptions) (watch.Interface, error) { opts.Watch = true return c.client.Get(). Namespace(c.ns). @@ -121,7 +121,7 @@ func (c *networkPolicies) Update(networkPolicy *v1.NetworkPolicy) (result *v1.Ne } // Delete takes name of the networkPolicy and deletes it. Returns an error if one occurs. -func (c *networkPolicies) Delete(name string, options *meta_v1.DeleteOptions) error { +func (c *networkPolicies) Delete(name string, options *metav1.DeleteOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("networkpolicies"). @@ -132,7 +132,7 @@ func (c *networkPolicies) Delete(name string, options *meta_v1.DeleteOptions) er } // DeleteCollection deletes a collection of objects. -func (c *networkPolicies) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { +func (c *networkPolicies) DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("networkpolicies"). diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/BUILD index 92606b3c45..6a6c2f74ee 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/BUILD @@ -16,15 +16,16 @@ go_library( "podsecuritypolicy.go", "policy_client.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1", importpath = "k8s.io/client-go/kubernetes/typed/policy/v1beta1", deps = [ - "//vendor/k8s.io/api/policy/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/api/policy/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/BUILD index 9b6941ce9a..ee005c590e 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/BUILD @@ -15,17 +15,18 @@ go_library( "fake_podsecuritypolicy.go", "fake_policy_client.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake", importpath = "k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake", deps = [ - "//vendor/k8s.io/api/policy/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", + "//staging/src/k8s.io/api/policy/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/policy/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/BUILD index 76e85d4fc6..fdd7fb0f43 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/BUILD @@ -16,15 +16,16 @@ go_library( "role.go", "rolebinding.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1", importpath = "k8s.io/client-go/kubernetes/typed/rbac/v1", deps = [ - "//vendor/k8s.io/api/rbac/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/api/rbac/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/clusterrole.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/clusterrole.go index f3db3beb55..c4299d4c68 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/clusterrole.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/clusterrole.go @@ -20,7 +20,7 @@ package v1 import ( v1 "k8s.io/api/rbac/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" scheme "k8s.io/client-go/kubernetes/scheme" @@ -37,11 +37,11 @@ type ClusterRolesGetter interface { type ClusterRoleInterface interface { Create(*v1.ClusterRole) (*v1.ClusterRole, error) Update(*v1.ClusterRole) (*v1.ClusterRole, error) - Delete(name string, options *meta_v1.DeleteOptions) error - DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error - Get(name string, options meta_v1.GetOptions) (*v1.ClusterRole, error) - List(opts meta_v1.ListOptions) (*v1.ClusterRoleList, error) - Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Delete(name string, options *metav1.DeleteOptions) error + DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error + Get(name string, options metav1.GetOptions) (*v1.ClusterRole, error) + List(opts metav1.ListOptions) (*v1.ClusterRoleList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.ClusterRole, err error) ClusterRoleExpansion } @@ -59,7 +59,7 @@ func newClusterRoles(c *RbacV1Client) *clusterRoles { } // Get takes name of the clusterRole, and returns the corresponding clusterRole object, and an error if there is any. -func (c *clusterRoles) Get(name string, options meta_v1.GetOptions) (result *v1.ClusterRole, err error) { +func (c *clusterRoles) Get(name string, options metav1.GetOptions) (result *v1.ClusterRole, err error) { result = &v1.ClusterRole{} err = c.client.Get(). Resource("clusterroles"). @@ -71,7 +71,7 @@ func (c *clusterRoles) Get(name string, options meta_v1.GetOptions) (result *v1. } // List takes label and field selectors, and returns the list of ClusterRoles that match those selectors. -func (c *clusterRoles) List(opts meta_v1.ListOptions) (result *v1.ClusterRoleList, err error) { +func (c *clusterRoles) List(opts metav1.ListOptions) (result *v1.ClusterRoleList, err error) { result = &v1.ClusterRoleList{} err = c.client.Get(). Resource("clusterroles"). @@ -82,7 +82,7 @@ func (c *clusterRoles) List(opts meta_v1.ListOptions) (result *v1.ClusterRoleLis } // Watch returns a watch.Interface that watches the requested clusterRoles. -func (c *clusterRoles) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { +func (c *clusterRoles) Watch(opts metav1.ListOptions) (watch.Interface, error) { opts.Watch = true return c.client.Get(). Resource("clusterroles"). @@ -114,7 +114,7 @@ func (c *clusterRoles) Update(clusterRole *v1.ClusterRole) (result *v1.ClusterRo } // Delete takes name of the clusterRole and deletes it. Returns an error if one occurs. -func (c *clusterRoles) Delete(name string, options *meta_v1.DeleteOptions) error { +func (c *clusterRoles) Delete(name string, options *metav1.DeleteOptions) error { return c.client.Delete(). Resource("clusterroles"). Name(name). @@ -124,7 +124,7 @@ func (c *clusterRoles) Delete(name string, options *meta_v1.DeleteOptions) error } // DeleteCollection deletes a collection of objects. -func (c *clusterRoles) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { +func (c *clusterRoles) DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error { return c.client.Delete(). Resource("clusterroles"). VersionedParams(&listOptions, scheme.ParameterCodec). diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/clusterrolebinding.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/clusterrolebinding.go index 21dda49805..30c0469a4f 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/clusterrolebinding.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/clusterrolebinding.go @@ -20,7 +20,7 @@ package v1 import ( v1 "k8s.io/api/rbac/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" scheme "k8s.io/client-go/kubernetes/scheme" @@ -37,11 +37,11 @@ type ClusterRoleBindingsGetter interface { type ClusterRoleBindingInterface interface { Create(*v1.ClusterRoleBinding) (*v1.ClusterRoleBinding, error) Update(*v1.ClusterRoleBinding) (*v1.ClusterRoleBinding, error) - Delete(name string, options *meta_v1.DeleteOptions) error - DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error - Get(name string, options meta_v1.GetOptions) (*v1.ClusterRoleBinding, error) - List(opts meta_v1.ListOptions) (*v1.ClusterRoleBindingList, error) - Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Delete(name string, options *metav1.DeleteOptions) error + DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error + Get(name string, options metav1.GetOptions) (*v1.ClusterRoleBinding, error) + List(opts metav1.ListOptions) (*v1.ClusterRoleBindingList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.ClusterRoleBinding, err error) ClusterRoleBindingExpansion } @@ -59,7 +59,7 @@ func newClusterRoleBindings(c *RbacV1Client) *clusterRoleBindings { } // Get takes name of the clusterRoleBinding, and returns the corresponding clusterRoleBinding object, and an error if there is any. -func (c *clusterRoleBindings) Get(name string, options meta_v1.GetOptions) (result *v1.ClusterRoleBinding, err error) { +func (c *clusterRoleBindings) Get(name string, options metav1.GetOptions) (result *v1.ClusterRoleBinding, err error) { result = &v1.ClusterRoleBinding{} err = c.client.Get(). Resource("clusterrolebindings"). @@ -71,7 +71,7 @@ func (c *clusterRoleBindings) Get(name string, options meta_v1.GetOptions) (resu } // List takes label and field selectors, and returns the list of ClusterRoleBindings that match those selectors. -func (c *clusterRoleBindings) List(opts meta_v1.ListOptions) (result *v1.ClusterRoleBindingList, err error) { +func (c *clusterRoleBindings) List(opts metav1.ListOptions) (result *v1.ClusterRoleBindingList, err error) { result = &v1.ClusterRoleBindingList{} err = c.client.Get(). Resource("clusterrolebindings"). @@ -82,7 +82,7 @@ func (c *clusterRoleBindings) List(opts meta_v1.ListOptions) (result *v1.Cluster } // Watch returns a watch.Interface that watches the requested clusterRoleBindings. -func (c *clusterRoleBindings) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { +func (c *clusterRoleBindings) Watch(opts metav1.ListOptions) (watch.Interface, error) { opts.Watch = true return c.client.Get(). Resource("clusterrolebindings"). @@ -114,7 +114,7 @@ func (c *clusterRoleBindings) Update(clusterRoleBinding *v1.ClusterRoleBinding) } // Delete takes name of the clusterRoleBinding and deletes it. Returns an error if one occurs. -func (c *clusterRoleBindings) Delete(name string, options *meta_v1.DeleteOptions) error { +func (c *clusterRoleBindings) Delete(name string, options *metav1.DeleteOptions) error { return c.client.Delete(). Resource("clusterrolebindings"). Name(name). @@ -124,7 +124,7 @@ func (c *clusterRoleBindings) Delete(name string, options *meta_v1.DeleteOptions } // DeleteCollection deletes a collection of objects. -func (c *clusterRoleBindings) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { +func (c *clusterRoleBindings) DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error { return c.client.Delete(). Resource("clusterrolebindings"). VersionedParams(&listOptions, scheme.ParameterCodec). diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/BUILD index 4e92a39ba0..a3a6ee4e69 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/BUILD @@ -15,17 +15,18 @@ go_library( "fake_role.go", "fake_rolebinding.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake", importpath = "k8s.io/client-go/kubernetes/typed/rbac/v1/fake", deps = [ - "//vendor/k8s.io/api/rbac/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/rbac/v1:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", + "//staging/src/k8s.io/api/rbac/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/rbac/v1:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_clusterrole.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_clusterrole.go index 01e62aeb5c..d93ac82944 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_clusterrole.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_clusterrole.go @@ -19,7 +19,7 @@ limitations under the License. package fake import ( - rbac_v1 "k8s.io/api/rbac/v1" + rbacv1 "k8s.io/api/rbac/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" schema "k8s.io/apimachinery/pkg/runtime/schema" @@ -38,19 +38,19 @@ var clusterrolesResource = schema.GroupVersionResource{Group: "rbac.authorizatio var clusterrolesKind = schema.GroupVersionKind{Group: "rbac.authorization.k8s.io", Version: "v1", Kind: "ClusterRole"} // Get takes name of the clusterRole, and returns the corresponding clusterRole object, and an error if there is any. -func (c *FakeClusterRoles) Get(name string, options v1.GetOptions) (result *rbac_v1.ClusterRole, err error) { +func (c *FakeClusterRoles) Get(name string, options v1.GetOptions) (result *rbacv1.ClusterRole, err error) { obj, err := c.Fake. - Invokes(testing.NewRootGetAction(clusterrolesResource, name), &rbac_v1.ClusterRole{}) + Invokes(testing.NewRootGetAction(clusterrolesResource, name), &rbacv1.ClusterRole{}) if obj == nil { return nil, err } - return obj.(*rbac_v1.ClusterRole), err + return obj.(*rbacv1.ClusterRole), err } // List takes label and field selectors, and returns the list of ClusterRoles that match those selectors. -func (c *FakeClusterRoles) List(opts v1.ListOptions) (result *rbac_v1.ClusterRoleList, err error) { +func (c *FakeClusterRoles) List(opts v1.ListOptions) (result *rbacv1.ClusterRoleList, err error) { obj, err := c.Fake. - Invokes(testing.NewRootListAction(clusterrolesResource, clusterrolesKind, opts), &rbac_v1.ClusterRoleList{}) + Invokes(testing.NewRootListAction(clusterrolesResource, clusterrolesKind, opts), &rbacv1.ClusterRoleList{}) if obj == nil { return nil, err } @@ -59,8 +59,8 @@ func (c *FakeClusterRoles) List(opts v1.ListOptions) (result *rbac_v1.ClusterRol if label == nil { label = labels.Everything() } - list := &rbac_v1.ClusterRoleList{ListMeta: obj.(*rbac_v1.ClusterRoleList).ListMeta} - for _, item := range obj.(*rbac_v1.ClusterRoleList).Items { + list := &rbacv1.ClusterRoleList{ListMeta: obj.(*rbacv1.ClusterRoleList).ListMeta} + for _, item := range obj.(*rbacv1.ClusterRoleList).Items { if label.Matches(labels.Set(item.Labels)) { list.Items = append(list.Items, item) } @@ -75,29 +75,29 @@ func (c *FakeClusterRoles) Watch(opts v1.ListOptions) (watch.Interface, error) { } // 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(clusterRole *rbac_v1.ClusterRole) (result *rbac_v1.ClusterRole, err error) { +func (c *FakeClusterRoles) Create(clusterRole *rbacv1.ClusterRole) (result *rbacv1.ClusterRole, err error) { obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(clusterrolesResource, clusterRole), &rbac_v1.ClusterRole{}) + Invokes(testing.NewRootCreateAction(clusterrolesResource, clusterRole), &rbacv1.ClusterRole{}) if obj == nil { return nil, err } - return obj.(*rbac_v1.ClusterRole), err + return obj.(*rbacv1.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(clusterRole *rbac_v1.ClusterRole) (result *rbac_v1.ClusterRole, err error) { +func (c *FakeClusterRoles) Update(clusterRole *rbacv1.ClusterRole) (result *rbacv1.ClusterRole, err error) { obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(clusterrolesResource, clusterRole), &rbac_v1.ClusterRole{}) + Invokes(testing.NewRootUpdateAction(clusterrolesResource, clusterRole), &rbacv1.ClusterRole{}) if obj == nil { return nil, err } - return obj.(*rbac_v1.ClusterRole), err + return obj.(*rbacv1.ClusterRole), err } // Delete takes name of the clusterRole and deletes it. Returns an error if one occurs. func (c *FakeClusterRoles) Delete(name string, options *v1.DeleteOptions) error { _, err := c.Fake. - Invokes(testing.NewRootDeleteAction(clusterrolesResource, name), &rbac_v1.ClusterRole{}) + Invokes(testing.NewRootDeleteAction(clusterrolesResource, name), &rbacv1.ClusterRole{}) return err } @@ -105,16 +105,16 @@ func (c *FakeClusterRoles) Delete(name string, options *v1.DeleteOptions) error func (c *FakeClusterRoles) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { action := testing.NewRootDeleteCollectionAction(clusterrolesResource, listOptions) - _, err := c.Fake.Invokes(action, &rbac_v1.ClusterRoleList{}) + _, err := c.Fake.Invokes(action, &rbacv1.ClusterRoleList{}) return err } // Patch applies the patch and returns the patched clusterRole. -func (c *FakeClusterRoles) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *rbac_v1.ClusterRole, err error) { +func (c *FakeClusterRoles) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *rbacv1.ClusterRole, err error) { obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(clusterrolesResource, name, data, subresources...), &rbac_v1.ClusterRole{}) + Invokes(testing.NewRootPatchSubresourceAction(clusterrolesResource, name, data, subresources...), &rbacv1.ClusterRole{}) if obj == nil { return nil, err } - return obj.(*rbac_v1.ClusterRole), err + return obj.(*rbacv1.ClusterRole), err } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_clusterrolebinding.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_clusterrolebinding.go index e5c054c9cc..a8b2b57ffd 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_clusterrolebinding.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_clusterrolebinding.go @@ -19,7 +19,7 @@ limitations under the License. package fake import ( - rbac_v1 "k8s.io/api/rbac/v1" + rbacv1 "k8s.io/api/rbac/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" schema "k8s.io/apimachinery/pkg/runtime/schema" @@ -38,19 +38,19 @@ var clusterrolebindingsResource = schema.GroupVersionResource{Group: "rbac.autho var clusterrolebindingsKind = schema.GroupVersionKind{Group: "rbac.authorization.k8s.io", Version: "v1", Kind: "ClusterRoleBinding"} // Get takes name of the clusterRoleBinding, and returns the corresponding clusterRoleBinding object, and an error if there is any. -func (c *FakeClusterRoleBindings) Get(name string, options v1.GetOptions) (result *rbac_v1.ClusterRoleBinding, err error) { +func (c *FakeClusterRoleBindings) Get(name string, options v1.GetOptions) (result *rbacv1.ClusterRoleBinding, err error) { obj, err := c.Fake. - Invokes(testing.NewRootGetAction(clusterrolebindingsResource, name), &rbac_v1.ClusterRoleBinding{}) + Invokes(testing.NewRootGetAction(clusterrolebindingsResource, name), &rbacv1.ClusterRoleBinding{}) if obj == nil { return nil, err } - return obj.(*rbac_v1.ClusterRoleBinding), err + return obj.(*rbacv1.ClusterRoleBinding), err } // List takes label and field selectors, and returns the list of ClusterRoleBindings that match those selectors. -func (c *FakeClusterRoleBindings) List(opts v1.ListOptions) (result *rbac_v1.ClusterRoleBindingList, err error) { +func (c *FakeClusterRoleBindings) List(opts v1.ListOptions) (result *rbacv1.ClusterRoleBindingList, err error) { obj, err := c.Fake. - Invokes(testing.NewRootListAction(clusterrolebindingsResource, clusterrolebindingsKind, opts), &rbac_v1.ClusterRoleBindingList{}) + Invokes(testing.NewRootListAction(clusterrolebindingsResource, clusterrolebindingsKind, opts), &rbacv1.ClusterRoleBindingList{}) if obj == nil { return nil, err } @@ -59,8 +59,8 @@ func (c *FakeClusterRoleBindings) List(opts v1.ListOptions) (result *rbac_v1.Clu if label == nil { label = labels.Everything() } - list := &rbac_v1.ClusterRoleBindingList{ListMeta: obj.(*rbac_v1.ClusterRoleBindingList).ListMeta} - for _, item := range obj.(*rbac_v1.ClusterRoleBindingList).Items { + list := &rbacv1.ClusterRoleBindingList{ListMeta: obj.(*rbacv1.ClusterRoleBindingList).ListMeta} + for _, item := range obj.(*rbacv1.ClusterRoleBindingList).Items { if label.Matches(labels.Set(item.Labels)) { list.Items = append(list.Items, item) } @@ -75,29 +75,29 @@ func (c *FakeClusterRoleBindings) Watch(opts v1.ListOptions) (watch.Interface, e } // 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(clusterRoleBinding *rbac_v1.ClusterRoleBinding) (result *rbac_v1.ClusterRoleBinding, err error) { +func (c *FakeClusterRoleBindings) Create(clusterRoleBinding *rbacv1.ClusterRoleBinding) (result *rbacv1.ClusterRoleBinding, err error) { obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(clusterrolebindingsResource, clusterRoleBinding), &rbac_v1.ClusterRoleBinding{}) + Invokes(testing.NewRootCreateAction(clusterrolebindingsResource, clusterRoleBinding), &rbacv1.ClusterRoleBinding{}) if obj == nil { return nil, err } - return obj.(*rbac_v1.ClusterRoleBinding), err + return obj.(*rbacv1.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(clusterRoleBinding *rbac_v1.ClusterRoleBinding) (result *rbac_v1.ClusterRoleBinding, err error) { +func (c *FakeClusterRoleBindings) Update(clusterRoleBinding *rbacv1.ClusterRoleBinding) (result *rbacv1.ClusterRoleBinding, err error) { obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(clusterrolebindingsResource, clusterRoleBinding), &rbac_v1.ClusterRoleBinding{}) + Invokes(testing.NewRootUpdateAction(clusterrolebindingsResource, clusterRoleBinding), &rbacv1.ClusterRoleBinding{}) if obj == nil { return nil, err } - return obj.(*rbac_v1.ClusterRoleBinding), err + return obj.(*rbacv1.ClusterRoleBinding), err } // Delete takes name of the clusterRoleBinding and deletes it. Returns an error if one occurs. func (c *FakeClusterRoleBindings) Delete(name string, options *v1.DeleteOptions) error { _, err := c.Fake. - Invokes(testing.NewRootDeleteAction(clusterrolebindingsResource, name), &rbac_v1.ClusterRoleBinding{}) + Invokes(testing.NewRootDeleteAction(clusterrolebindingsResource, name), &rbacv1.ClusterRoleBinding{}) return err } @@ -105,16 +105,16 @@ func (c *FakeClusterRoleBindings) Delete(name string, options *v1.DeleteOptions) func (c *FakeClusterRoleBindings) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { action := testing.NewRootDeleteCollectionAction(clusterrolebindingsResource, listOptions) - _, err := c.Fake.Invokes(action, &rbac_v1.ClusterRoleBindingList{}) + _, err := c.Fake.Invokes(action, &rbacv1.ClusterRoleBindingList{}) return err } // Patch applies the patch and returns the patched clusterRoleBinding. -func (c *FakeClusterRoleBindings) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *rbac_v1.ClusterRoleBinding, err error) { +func (c *FakeClusterRoleBindings) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *rbacv1.ClusterRoleBinding, err error) { obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(clusterrolebindingsResource, name, data, subresources...), &rbac_v1.ClusterRoleBinding{}) + Invokes(testing.NewRootPatchSubresourceAction(clusterrolebindingsResource, name, data, subresources...), &rbacv1.ClusterRoleBinding{}) if obj == nil { return nil, err } - return obj.(*rbac_v1.ClusterRoleBinding), err + return obj.(*rbacv1.ClusterRoleBinding), err } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_role.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_role.go index 413c70c094..f048bbdfb2 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_role.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_role.go @@ -19,7 +19,7 @@ limitations under the License. package fake import ( - rbac_v1 "k8s.io/api/rbac/v1" + rbacv1 "k8s.io/api/rbac/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" schema "k8s.io/apimachinery/pkg/runtime/schema" @@ -39,20 +39,20 @@ var rolesResource = schema.GroupVersionResource{Group: "rbac.authorization.k8s.i var rolesKind = schema.GroupVersionKind{Group: "rbac.authorization.k8s.io", Version: "v1", Kind: "Role"} // Get takes name of the role, and returns the corresponding role object, and an error if there is any. -func (c *FakeRoles) Get(name string, options v1.GetOptions) (result *rbac_v1.Role, err error) { +func (c *FakeRoles) Get(name string, options v1.GetOptions) (result *rbacv1.Role, err error) { obj, err := c.Fake. - Invokes(testing.NewGetAction(rolesResource, c.ns, name), &rbac_v1.Role{}) + Invokes(testing.NewGetAction(rolesResource, c.ns, name), &rbacv1.Role{}) if obj == nil { return nil, err } - return obj.(*rbac_v1.Role), err + return obj.(*rbacv1.Role), err } // List takes label and field selectors, and returns the list of Roles that match those selectors. -func (c *FakeRoles) List(opts v1.ListOptions) (result *rbac_v1.RoleList, err error) { +func (c *FakeRoles) List(opts v1.ListOptions) (result *rbacv1.RoleList, err error) { obj, err := c.Fake. - Invokes(testing.NewListAction(rolesResource, rolesKind, c.ns, opts), &rbac_v1.RoleList{}) + Invokes(testing.NewListAction(rolesResource, rolesKind, c.ns, opts), &rbacv1.RoleList{}) if obj == nil { return nil, err @@ -62,8 +62,8 @@ func (c *FakeRoles) List(opts v1.ListOptions) (result *rbac_v1.RoleList, err err if label == nil { label = labels.Everything() } - list := &rbac_v1.RoleList{ListMeta: obj.(*rbac_v1.RoleList).ListMeta} - for _, item := range obj.(*rbac_v1.RoleList).Items { + list := &rbacv1.RoleList{ListMeta: obj.(*rbacv1.RoleList).ListMeta} + for _, item := range obj.(*rbacv1.RoleList).Items { if label.Matches(labels.Set(item.Labels)) { list.Items = append(list.Items, item) } @@ -79,31 +79,31 @@ func (c *FakeRoles) Watch(opts v1.ListOptions) (watch.Interface, error) { } // 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(role *rbac_v1.Role) (result *rbac_v1.Role, err error) { +func (c *FakeRoles) Create(role *rbacv1.Role) (result *rbacv1.Role, err error) { obj, err := c.Fake. - Invokes(testing.NewCreateAction(rolesResource, c.ns, role), &rbac_v1.Role{}) + Invokes(testing.NewCreateAction(rolesResource, c.ns, role), &rbacv1.Role{}) if obj == nil { return nil, err } - return obj.(*rbac_v1.Role), err + return obj.(*rbacv1.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(role *rbac_v1.Role) (result *rbac_v1.Role, err error) { +func (c *FakeRoles) Update(role *rbacv1.Role) (result *rbacv1.Role, err error) { obj, err := c.Fake. - Invokes(testing.NewUpdateAction(rolesResource, c.ns, role), &rbac_v1.Role{}) + Invokes(testing.NewUpdateAction(rolesResource, c.ns, role), &rbacv1.Role{}) if obj == nil { return nil, err } - return obj.(*rbac_v1.Role), err + return obj.(*rbacv1.Role), err } // Delete takes name of the role and deletes it. Returns an error if one occurs. func (c *FakeRoles) Delete(name string, options *v1.DeleteOptions) error { _, err := c.Fake. - Invokes(testing.NewDeleteAction(rolesResource, c.ns, name), &rbac_v1.Role{}) + Invokes(testing.NewDeleteAction(rolesResource, c.ns, name), &rbacv1.Role{}) return err } @@ -112,17 +112,17 @@ func (c *FakeRoles) Delete(name string, options *v1.DeleteOptions) error { func (c *FakeRoles) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { action := testing.NewDeleteCollectionAction(rolesResource, c.ns, listOptions) - _, err := c.Fake.Invokes(action, &rbac_v1.RoleList{}) + _, err := c.Fake.Invokes(action, &rbacv1.RoleList{}) return err } // Patch applies the patch and returns the patched role. -func (c *FakeRoles) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *rbac_v1.Role, err error) { +func (c *FakeRoles) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *rbacv1.Role, err error) { obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(rolesResource, c.ns, name, data, subresources...), &rbac_v1.Role{}) + Invokes(testing.NewPatchSubresourceAction(rolesResource, c.ns, name, data, subresources...), &rbacv1.Role{}) if obj == nil { return nil, err } - return obj.(*rbac_v1.Role), err + return obj.(*rbacv1.Role), err } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_rolebinding.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_rolebinding.go index 536377b30b..c71635fce4 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_rolebinding.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_rolebinding.go @@ -19,7 +19,7 @@ limitations under the License. package fake import ( - rbac_v1 "k8s.io/api/rbac/v1" + rbacv1 "k8s.io/api/rbac/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" schema "k8s.io/apimachinery/pkg/runtime/schema" @@ -39,20 +39,20 @@ var rolebindingsResource = schema.GroupVersionResource{Group: "rbac.authorizatio var rolebindingsKind = schema.GroupVersionKind{Group: "rbac.authorization.k8s.io", Version: "v1", Kind: "RoleBinding"} // Get takes name of the roleBinding, and returns the corresponding roleBinding object, and an error if there is any. -func (c *FakeRoleBindings) Get(name string, options v1.GetOptions) (result *rbac_v1.RoleBinding, err error) { +func (c *FakeRoleBindings) Get(name string, options v1.GetOptions) (result *rbacv1.RoleBinding, err error) { obj, err := c.Fake. - Invokes(testing.NewGetAction(rolebindingsResource, c.ns, name), &rbac_v1.RoleBinding{}) + Invokes(testing.NewGetAction(rolebindingsResource, c.ns, name), &rbacv1.RoleBinding{}) if obj == nil { return nil, err } - return obj.(*rbac_v1.RoleBinding), err + return obj.(*rbacv1.RoleBinding), err } // List takes label and field selectors, and returns the list of RoleBindings that match those selectors. -func (c *FakeRoleBindings) List(opts v1.ListOptions) (result *rbac_v1.RoleBindingList, err error) { +func (c *FakeRoleBindings) List(opts v1.ListOptions) (result *rbacv1.RoleBindingList, err error) { obj, err := c.Fake. - Invokes(testing.NewListAction(rolebindingsResource, rolebindingsKind, c.ns, opts), &rbac_v1.RoleBindingList{}) + Invokes(testing.NewListAction(rolebindingsResource, rolebindingsKind, c.ns, opts), &rbacv1.RoleBindingList{}) if obj == nil { return nil, err @@ -62,8 +62,8 @@ func (c *FakeRoleBindings) List(opts v1.ListOptions) (result *rbac_v1.RoleBindin if label == nil { label = labels.Everything() } - list := &rbac_v1.RoleBindingList{ListMeta: obj.(*rbac_v1.RoleBindingList).ListMeta} - for _, item := range obj.(*rbac_v1.RoleBindingList).Items { + list := &rbacv1.RoleBindingList{ListMeta: obj.(*rbacv1.RoleBindingList).ListMeta} + for _, item := range obj.(*rbacv1.RoleBindingList).Items { if label.Matches(labels.Set(item.Labels)) { list.Items = append(list.Items, item) } @@ -79,31 +79,31 @@ func (c *FakeRoleBindings) Watch(opts v1.ListOptions) (watch.Interface, error) { } // 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(roleBinding *rbac_v1.RoleBinding) (result *rbac_v1.RoleBinding, err error) { +func (c *FakeRoleBindings) Create(roleBinding *rbacv1.RoleBinding) (result *rbacv1.RoleBinding, err error) { obj, err := c.Fake. - Invokes(testing.NewCreateAction(rolebindingsResource, c.ns, roleBinding), &rbac_v1.RoleBinding{}) + Invokes(testing.NewCreateAction(rolebindingsResource, c.ns, roleBinding), &rbacv1.RoleBinding{}) if obj == nil { return nil, err } - return obj.(*rbac_v1.RoleBinding), err + return obj.(*rbacv1.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(roleBinding *rbac_v1.RoleBinding) (result *rbac_v1.RoleBinding, err error) { +func (c *FakeRoleBindings) Update(roleBinding *rbacv1.RoleBinding) (result *rbacv1.RoleBinding, err error) { obj, err := c.Fake. - Invokes(testing.NewUpdateAction(rolebindingsResource, c.ns, roleBinding), &rbac_v1.RoleBinding{}) + Invokes(testing.NewUpdateAction(rolebindingsResource, c.ns, roleBinding), &rbacv1.RoleBinding{}) if obj == nil { return nil, err } - return obj.(*rbac_v1.RoleBinding), err + return obj.(*rbacv1.RoleBinding), err } // Delete takes name of the roleBinding and deletes it. Returns an error if one occurs. func (c *FakeRoleBindings) Delete(name string, options *v1.DeleteOptions) error { _, err := c.Fake. - Invokes(testing.NewDeleteAction(rolebindingsResource, c.ns, name), &rbac_v1.RoleBinding{}) + Invokes(testing.NewDeleteAction(rolebindingsResource, c.ns, name), &rbacv1.RoleBinding{}) return err } @@ -112,17 +112,17 @@ func (c *FakeRoleBindings) Delete(name string, options *v1.DeleteOptions) error func (c *FakeRoleBindings) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { action := testing.NewDeleteCollectionAction(rolebindingsResource, c.ns, listOptions) - _, err := c.Fake.Invokes(action, &rbac_v1.RoleBindingList{}) + _, err := c.Fake.Invokes(action, &rbacv1.RoleBindingList{}) return err } // Patch applies the patch and returns the patched roleBinding. -func (c *FakeRoleBindings) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *rbac_v1.RoleBinding, err error) { +func (c *FakeRoleBindings) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *rbacv1.RoleBinding, err error) { obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(rolebindingsResource, c.ns, name, data, subresources...), &rbac_v1.RoleBinding{}) + Invokes(testing.NewPatchSubresourceAction(rolebindingsResource, c.ns, name, data, subresources...), &rbacv1.RoleBinding{}) if obj == nil { return nil, err } - return obj.(*rbac_v1.RoleBinding), err + return obj.(*rbacv1.RoleBinding), err } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/role.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/role.go index cb7c5c4e8e..81ea12a9ff 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/role.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/role.go @@ -20,7 +20,7 @@ package v1 import ( v1 "k8s.io/api/rbac/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" scheme "k8s.io/client-go/kubernetes/scheme" @@ -37,11 +37,11 @@ type RolesGetter interface { type RoleInterface interface { Create(*v1.Role) (*v1.Role, error) Update(*v1.Role) (*v1.Role, error) - Delete(name string, options *meta_v1.DeleteOptions) error - DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error - Get(name string, options meta_v1.GetOptions) (*v1.Role, error) - List(opts meta_v1.ListOptions) (*v1.RoleList, error) - Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Delete(name string, options *metav1.DeleteOptions) error + DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error + Get(name string, options metav1.GetOptions) (*v1.Role, error) + List(opts metav1.ListOptions) (*v1.RoleList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Role, err error) RoleExpansion } @@ -61,7 +61,7 @@ func newRoles(c *RbacV1Client, namespace string) *roles { } // Get takes name of the role, and returns the corresponding role object, and an error if there is any. -func (c *roles) Get(name string, options meta_v1.GetOptions) (result *v1.Role, err error) { +func (c *roles) Get(name string, options metav1.GetOptions) (result *v1.Role, err error) { result = &v1.Role{} err = c.client.Get(). Namespace(c.ns). @@ -74,7 +74,7 @@ func (c *roles) Get(name string, options meta_v1.GetOptions) (result *v1.Role, e } // List takes label and field selectors, and returns the list of Roles that match those selectors. -func (c *roles) List(opts meta_v1.ListOptions) (result *v1.RoleList, err error) { +func (c *roles) List(opts metav1.ListOptions) (result *v1.RoleList, err error) { result = &v1.RoleList{} err = c.client.Get(). Namespace(c.ns). @@ -86,7 +86,7 @@ func (c *roles) List(opts meta_v1.ListOptions) (result *v1.RoleList, err error) } // Watch returns a watch.Interface that watches the requested roles. -func (c *roles) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { +func (c *roles) Watch(opts metav1.ListOptions) (watch.Interface, error) { opts.Watch = true return c.client.Get(). Namespace(c.ns). @@ -121,7 +121,7 @@ func (c *roles) Update(role *v1.Role) (result *v1.Role, err error) { } // Delete takes name of the role and deletes it. Returns an error if one occurs. -func (c *roles) Delete(name string, options *meta_v1.DeleteOptions) error { +func (c *roles) Delete(name string, options *metav1.DeleteOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("roles"). @@ -132,7 +132,7 @@ func (c *roles) Delete(name string, options *meta_v1.DeleteOptions) error { } // DeleteCollection deletes a collection of objects. -func (c *roles) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { +func (c *roles) DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("roles"). diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/rolebinding.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/rolebinding.go index a19010fa89..17c6f9913b 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/rolebinding.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/rolebinding.go @@ -20,7 +20,7 @@ package v1 import ( v1 "k8s.io/api/rbac/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" scheme "k8s.io/client-go/kubernetes/scheme" @@ -37,11 +37,11 @@ type RoleBindingsGetter interface { type RoleBindingInterface interface { Create(*v1.RoleBinding) (*v1.RoleBinding, error) Update(*v1.RoleBinding) (*v1.RoleBinding, error) - Delete(name string, options *meta_v1.DeleteOptions) error - DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error - Get(name string, options meta_v1.GetOptions) (*v1.RoleBinding, error) - List(opts meta_v1.ListOptions) (*v1.RoleBindingList, error) - Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Delete(name string, options *metav1.DeleteOptions) error + DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error + Get(name string, options metav1.GetOptions) (*v1.RoleBinding, error) + List(opts metav1.ListOptions) (*v1.RoleBindingList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.RoleBinding, err error) RoleBindingExpansion } @@ -61,7 +61,7 @@ func newRoleBindings(c *RbacV1Client, namespace string) *roleBindings { } // Get takes name of the roleBinding, and returns the corresponding roleBinding object, and an error if there is any. -func (c *roleBindings) Get(name string, options meta_v1.GetOptions) (result *v1.RoleBinding, err error) { +func (c *roleBindings) Get(name string, options metav1.GetOptions) (result *v1.RoleBinding, err error) { result = &v1.RoleBinding{} err = c.client.Get(). Namespace(c.ns). @@ -74,7 +74,7 @@ func (c *roleBindings) Get(name string, options meta_v1.GetOptions) (result *v1. } // List takes label and field selectors, and returns the list of RoleBindings that match those selectors. -func (c *roleBindings) List(opts meta_v1.ListOptions) (result *v1.RoleBindingList, err error) { +func (c *roleBindings) List(opts metav1.ListOptions) (result *v1.RoleBindingList, err error) { result = &v1.RoleBindingList{} err = c.client.Get(). Namespace(c.ns). @@ -86,7 +86,7 @@ func (c *roleBindings) List(opts meta_v1.ListOptions) (result *v1.RoleBindingLis } // Watch returns a watch.Interface that watches the requested roleBindings. -func (c *roleBindings) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { +func (c *roleBindings) Watch(opts metav1.ListOptions) (watch.Interface, error) { opts.Watch = true return c.client.Get(). Namespace(c.ns). @@ -121,7 +121,7 @@ func (c *roleBindings) Update(roleBinding *v1.RoleBinding) (result *v1.RoleBindi } // Delete takes name of the roleBinding and deletes it. Returns an error if one occurs. -func (c *roleBindings) Delete(name string, options *meta_v1.DeleteOptions) error { +func (c *roleBindings) Delete(name string, options *metav1.DeleteOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("rolebindings"). @@ -132,7 +132,7 @@ func (c *roleBindings) Delete(name string, options *meta_v1.DeleteOptions) error } // DeleteCollection deletes a collection of objects. -func (c *roleBindings) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { +func (c *roleBindings) DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error { return c.client.Delete(). Namespace(c.ns). Resource("rolebindings"). diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/BUILD index 11065cf6a4..e7c4da27dc 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/BUILD @@ -16,15 +16,16 @@ go_library( "role.go", "rolebinding.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1", importpath = "k8s.io/client-go/kubernetes/typed/rbac/v1alpha1", deps = [ - "//vendor/k8s.io/api/rbac/v1alpha1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/api/rbac/v1alpha1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/BUILD index 461fd09a0f..f14f471568 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/BUILD @@ -15,17 +15,18 @@ go_library( "fake_role.go", "fake_rolebinding.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake", importpath = "k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake", deps = [ - "//vendor/k8s.io/api/rbac/v1alpha1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", + "//staging/src/k8s.io/api/rbac/v1alpha1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/BUILD index e750f1e17e..daa9aaacdc 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/BUILD @@ -16,15 +16,16 @@ go_library( "role.go", "rolebinding.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1", importpath = "k8s.io/client-go/kubernetes/typed/rbac/v1beta1", deps = [ - "//vendor/k8s.io/api/rbac/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/api/rbac/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/BUILD index 0ab08b3e30..4db34fbe41 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/BUILD @@ -15,17 +15,18 @@ go_library( "fake_role.go", "fake_rolebinding.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake", importpath = "k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake", deps = [ - "//vendor/k8s.io/api/rbac/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", + "//staging/src/k8s.io/api/rbac/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/rbac/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/BUILD index db9b36f32a..13e4f39d54 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/BUILD @@ -13,15 +13,16 @@ go_library( "priorityclass.go", "scheduling_client.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1", importpath = "k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1", deps = [ - "//vendor/k8s.io/api/scheduling/v1alpha1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/api/scheduling/v1alpha1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/fake/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/fake/BUILD index f5c9c6436a..4d5ff71cd9 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/fake/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/fake/BUILD @@ -12,17 +12,18 @@ go_library( "fake_priorityclass.go", "fake_scheduling_client.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/fake", importpath = "k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/fake", deps = [ - "//vendor/k8s.io/api/scheduling/v1alpha1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", + "//staging/src/k8s.io/api/scheduling/v1alpha1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/BUILD index a12fa2d2ed..12c6e00e33 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/BUILD @@ -8,16 +8,17 @@ go_library( "priorityclass.go", "scheduling_client.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1", importpath = "k8s.io/client-go/kubernetes/typed/scheduling/v1beta1", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/api/scheduling/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/api/scheduling/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/fake/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/fake/BUILD index 7d9c853a83..c1a1468d59 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/fake/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/fake/BUILD @@ -7,18 +7,19 @@ go_library( "fake_priorityclass.go", "fake_scheduling_client.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/fake", importpath = "k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/fake", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/api/scheduling/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", + "//staging/src/k8s.io/api/scheduling/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/BUILD index a1abc87e3e..47bbc31f1d 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/BUILD @@ -13,15 +13,16 @@ go_library( "podpreset.go", "settings_client.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1", importpath = "k8s.io/client-go/kubernetes/typed/settings/v1alpha1", deps = [ - "//vendor/k8s.io/api/settings/v1alpha1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/api/settings/v1alpha1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake/BUILD index f8823f4659..186117f306 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake/BUILD @@ -12,17 +12,18 @@ go_library( "fake_podpreset.go", "fake_settings_client.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake", importpath = "k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake", deps = [ - "//vendor/k8s.io/api/settings/v1alpha1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", + "//staging/src/k8s.io/api/settings/v1alpha1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/settings/v1alpha1:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/BUILD index 0c55071416..7948513c08 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/BUILD @@ -13,15 +13,16 @@ go_library( "storage_client.go", "storageclass.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/storage/v1", importpath = "k8s.io/client-go/kubernetes/typed/storage/v1", deps = [ - "//vendor/k8s.io/api/storage/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/api/storage/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/BUILD index be83e85f82..c80e0cc937 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/BUILD @@ -12,17 +12,18 @@ go_library( "fake_storage_client.go", "fake_storageclass.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake", importpath = "k8s.io/client-go/kubernetes/typed/storage/v1/fake", deps = [ - "//vendor/k8s.io/api/storage/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/storage/v1:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", + "//staging/src/k8s.io/api/storage/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/storage/v1:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_storageclass.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_storageclass.go index 2b0e279bb0..37488a2d7a 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_storageclass.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_storageclass.go @@ -19,7 +19,7 @@ limitations under the License. package fake import ( - storage_v1 "k8s.io/api/storage/v1" + storagev1 "k8s.io/api/storage/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" schema "k8s.io/apimachinery/pkg/runtime/schema" @@ -38,19 +38,19 @@ var storageclassesResource = schema.GroupVersionResource{Group: "storage.k8s.io" var storageclassesKind = schema.GroupVersionKind{Group: "storage.k8s.io", Version: "v1", Kind: "StorageClass"} // Get takes name of the storageClass, and returns the corresponding storageClass object, and an error if there is any. -func (c *FakeStorageClasses) Get(name string, options v1.GetOptions) (result *storage_v1.StorageClass, err error) { +func (c *FakeStorageClasses) Get(name string, options v1.GetOptions) (result *storagev1.StorageClass, err error) { obj, err := c.Fake. - Invokes(testing.NewRootGetAction(storageclassesResource, name), &storage_v1.StorageClass{}) + Invokes(testing.NewRootGetAction(storageclassesResource, name), &storagev1.StorageClass{}) if obj == nil { return nil, err } - return obj.(*storage_v1.StorageClass), err + return obj.(*storagev1.StorageClass), err } // List takes label and field selectors, and returns the list of StorageClasses that match those selectors. -func (c *FakeStorageClasses) List(opts v1.ListOptions) (result *storage_v1.StorageClassList, err error) { +func (c *FakeStorageClasses) List(opts v1.ListOptions) (result *storagev1.StorageClassList, err error) { obj, err := c.Fake. - Invokes(testing.NewRootListAction(storageclassesResource, storageclassesKind, opts), &storage_v1.StorageClassList{}) + Invokes(testing.NewRootListAction(storageclassesResource, storageclassesKind, opts), &storagev1.StorageClassList{}) if obj == nil { return nil, err } @@ -59,8 +59,8 @@ func (c *FakeStorageClasses) List(opts v1.ListOptions) (result *storage_v1.Stora if label == nil { label = labels.Everything() } - list := &storage_v1.StorageClassList{ListMeta: obj.(*storage_v1.StorageClassList).ListMeta} - for _, item := range obj.(*storage_v1.StorageClassList).Items { + list := &storagev1.StorageClassList{ListMeta: obj.(*storagev1.StorageClassList).ListMeta} + for _, item := range obj.(*storagev1.StorageClassList).Items { if label.Matches(labels.Set(item.Labels)) { list.Items = append(list.Items, item) } @@ -75,29 +75,29 @@ func (c *FakeStorageClasses) Watch(opts v1.ListOptions) (watch.Interface, error) } // 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(storageClass *storage_v1.StorageClass) (result *storage_v1.StorageClass, err error) { +func (c *FakeStorageClasses) Create(storageClass *storagev1.StorageClass) (result *storagev1.StorageClass, err error) { obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(storageclassesResource, storageClass), &storage_v1.StorageClass{}) + Invokes(testing.NewRootCreateAction(storageclassesResource, storageClass), &storagev1.StorageClass{}) if obj == nil { return nil, err } - return obj.(*storage_v1.StorageClass), err + return obj.(*storagev1.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(storageClass *storage_v1.StorageClass) (result *storage_v1.StorageClass, err error) { +func (c *FakeStorageClasses) Update(storageClass *storagev1.StorageClass) (result *storagev1.StorageClass, err error) { obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(storageclassesResource, storageClass), &storage_v1.StorageClass{}) + Invokes(testing.NewRootUpdateAction(storageclassesResource, storageClass), &storagev1.StorageClass{}) if obj == nil { return nil, err } - return obj.(*storage_v1.StorageClass), err + return obj.(*storagev1.StorageClass), err } // Delete takes name of the storageClass and deletes it. Returns an error if one occurs. func (c *FakeStorageClasses) Delete(name string, options *v1.DeleteOptions) error { _, err := c.Fake. - Invokes(testing.NewRootDeleteAction(storageclassesResource, name), &storage_v1.StorageClass{}) + Invokes(testing.NewRootDeleteAction(storageclassesResource, name), &storagev1.StorageClass{}) return err } @@ -105,16 +105,16 @@ func (c *FakeStorageClasses) Delete(name string, options *v1.DeleteOptions) erro func (c *FakeStorageClasses) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { action := testing.NewRootDeleteCollectionAction(storageclassesResource, listOptions) - _, err := c.Fake.Invokes(action, &storage_v1.StorageClassList{}) + _, err := c.Fake.Invokes(action, &storagev1.StorageClassList{}) return err } // Patch applies the patch and returns the patched storageClass. -func (c *FakeStorageClasses) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *storage_v1.StorageClass, err error) { +func (c *FakeStorageClasses) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *storagev1.StorageClass, err error) { obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(storageclassesResource, name, data, subresources...), &storage_v1.StorageClass{}) + Invokes(testing.NewRootPatchSubresourceAction(storageclassesResource, name, data, subresources...), &storagev1.StorageClass{}) if obj == nil { return nil, err } - return obj.(*storage_v1.StorageClass), err + return obj.(*storagev1.StorageClass), err } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/storageclass.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/storageclass.go index 74410b2456..0f7f57f05f 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/storageclass.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/storageclass.go @@ -20,7 +20,7 @@ package v1 import ( v1 "k8s.io/api/storage/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" scheme "k8s.io/client-go/kubernetes/scheme" @@ -37,11 +37,11 @@ type StorageClassesGetter interface { type StorageClassInterface interface { Create(*v1.StorageClass) (*v1.StorageClass, error) Update(*v1.StorageClass) (*v1.StorageClass, error) - Delete(name string, options *meta_v1.DeleteOptions) error - DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error - Get(name string, options meta_v1.GetOptions) (*v1.StorageClass, error) - List(opts meta_v1.ListOptions) (*v1.StorageClassList, error) - Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Delete(name string, options *metav1.DeleteOptions) error + DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error + Get(name string, options metav1.GetOptions) (*v1.StorageClass, error) + List(opts metav1.ListOptions) (*v1.StorageClassList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.StorageClass, err error) StorageClassExpansion } @@ -59,7 +59,7 @@ func newStorageClasses(c *StorageV1Client) *storageClasses { } // Get takes name of the storageClass, and returns the corresponding storageClass object, and an error if there is any. -func (c *storageClasses) Get(name string, options meta_v1.GetOptions) (result *v1.StorageClass, err error) { +func (c *storageClasses) Get(name string, options metav1.GetOptions) (result *v1.StorageClass, err error) { result = &v1.StorageClass{} err = c.client.Get(). Resource("storageclasses"). @@ -71,7 +71,7 @@ func (c *storageClasses) Get(name string, options meta_v1.GetOptions) (result *v } // List takes label and field selectors, and returns the list of StorageClasses that match those selectors. -func (c *storageClasses) List(opts meta_v1.ListOptions) (result *v1.StorageClassList, err error) { +func (c *storageClasses) List(opts metav1.ListOptions) (result *v1.StorageClassList, err error) { result = &v1.StorageClassList{} err = c.client.Get(). Resource("storageclasses"). @@ -82,7 +82,7 @@ func (c *storageClasses) List(opts meta_v1.ListOptions) (result *v1.StorageClass } // Watch returns a watch.Interface that watches the requested storageClasses. -func (c *storageClasses) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { +func (c *storageClasses) Watch(opts metav1.ListOptions) (watch.Interface, error) { opts.Watch = true return c.client.Get(). Resource("storageclasses"). @@ -114,7 +114,7 @@ func (c *storageClasses) Update(storageClass *v1.StorageClass) (result *v1.Stora } // Delete takes name of the storageClass and deletes it. Returns an error if one occurs. -func (c *storageClasses) Delete(name string, options *meta_v1.DeleteOptions) error { +func (c *storageClasses) Delete(name string, options *metav1.DeleteOptions) error { return c.client.Delete(). Resource("storageclasses"). Name(name). @@ -124,7 +124,7 @@ func (c *storageClasses) Delete(name string, options *meta_v1.DeleteOptions) err } // DeleteCollection deletes a collection of objects. -func (c *storageClasses) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { +func (c *storageClasses) DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error { return c.client.Delete(). Resource("storageclasses"). VersionedParams(&listOptions, scheme.ParameterCodec). diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/BUILD index 155421963f..4a987437d7 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/BUILD @@ -8,16 +8,17 @@ go_library( "storage_client.go", "volumeattachment.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1", importpath = "k8s.io/client-go/kubernetes/typed/storage/v1alpha1", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/api/storage/v1alpha1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/api/storage/v1alpha1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake/BUILD index a509ba7fc5..d9b6dbe1df 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake/BUILD @@ -7,18 +7,19 @@ go_library( "fake_storage_client.go", "fake_volumeattachment.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake", importpath = "k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/api/storage/v1alpha1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", + "//staging/src/k8s.io/api/storage/v1alpha1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/storage/v1alpha1:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/BUILD index 79d13929c7..425d2dc925 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/BUILD @@ -14,15 +14,16 @@ go_library( "storageclass.go", "volumeattachment.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1", importpath = "k8s.io/client-go/kubernetes/typed/storage/v1beta1", deps = [ - "//vendor/k8s.io/api/storage/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/api/storage/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/BUILD index 7430088843..f687a4719f 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/BUILD @@ -13,17 +13,18 @@ go_library( "fake_storageclass.go", "fake_volumeattachment.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake", importpath = "k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake", deps = [ - "//vendor/k8s.io/api/storage/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", + "//staging/src/k8s.io/api/storage/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/storage/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1/BUILD index df0364232e..c714d216a1 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1/BUILD @@ -6,13 +6,14 @@ go_library( "expansion_generated.go", "initializerconfiguration.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1", importpath = "k8s.io/client-go/listers/admissionregistration/v1alpha1", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/api/admissionregistration/v1alpha1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/admissionregistration/v1alpha1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/listers/admissionregistration/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/listers/admissionregistration/v1beta1/BUILD index d5128618f0..553cc6f8e0 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/listers/admissionregistration/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/listers/admissionregistration/v1beta1/BUILD @@ -7,13 +7,14 @@ go_library( "mutatingwebhookconfiguration.go", "validatingwebhookconfiguration.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/listers/admissionregistration/v1beta1", importpath = "k8s.io/client-go/listers/admissionregistration/v1beta1", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/api/admissionregistration/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/admissionregistration/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/listers/apps/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/listers/apps/v1/BUILD index fb3cfbbb6a..32aaa37e7b 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/listers/apps/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/listers/apps/v1/BUILD @@ -14,15 +14,16 @@ go_library( "statefulset.go", "statefulset_expansion.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/listers/apps/v1", importpath = "k8s.io/client-go/listers/apps/v1", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/api/apps/v1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/apps/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/listers/apps/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/listers/apps/v1beta1/BUILD index f6ddce5303..640f659934 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/listers/apps/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/listers/apps/v1beta1/BUILD @@ -15,14 +15,15 @@ go_library( "statefulset.go", "statefulset_expansion.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/listers/apps/v1beta1", importpath = "k8s.io/client-go/listers/apps/v1beta1", deps = [ - "//vendor/k8s.io/api/apps/v1beta1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/apps/v1beta1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/listers/apps/v1beta2/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/listers/apps/v1beta2/BUILD index 50aefcab18..20e24652c4 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/listers/apps/v1beta2/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/listers/apps/v1beta2/BUILD @@ -20,14 +20,15 @@ go_library( "statefulset.go", "statefulset_expansion.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/listers/apps/v1beta2", importpath = "k8s.io/client-go/listers/apps/v1beta2", deps = [ - "//vendor/k8s.io/api/apps/v1beta2:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/apps/v1beta2:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/listers/autoscaling/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/listers/autoscaling/v1/BUILD index 8c5bfd95dc..99704f4aad 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/listers/autoscaling/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/listers/autoscaling/v1/BUILD @@ -6,13 +6,14 @@ go_library( "expansion_generated.go", "horizontalpodautoscaler.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/listers/autoscaling/v1", importpath = "k8s.io/client-go/listers/autoscaling/v1", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/api/autoscaling/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/autoscaling/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/listers/autoscaling/v2beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/listers/autoscaling/v2beta1/BUILD index 78aca5847b..80d1929236 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/listers/autoscaling/v2beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/listers/autoscaling/v2beta1/BUILD @@ -6,13 +6,14 @@ go_library( "expansion_generated.go", "horizontalpodautoscaler.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/listers/autoscaling/v2beta1", importpath = "k8s.io/client-go/listers/autoscaling/v2beta1", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/api/autoscaling/v2beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/autoscaling/v2beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/listers/batch/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/listers/batch/v1/BUILD index c695b98568..ea3fd00f8e 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/listers/batch/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/listers/batch/v1/BUILD @@ -12,14 +12,15 @@ go_library( "job.go", "job_expansion.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/listers/batch/v1", importpath = "k8s.io/client-go/listers/batch/v1", deps = [ - "//vendor/k8s.io/api/batch/v1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/batch/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/listers/batch/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/listers/batch/v1beta1/BUILD index 0ae1a2eda9..f4ed597fae 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/listers/batch/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/listers/batch/v1beta1/BUILD @@ -11,12 +11,13 @@ go_library( "cronjob.go", "expansion_generated.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/listers/batch/v1beta1", importpath = "k8s.io/client-go/listers/batch/v1beta1", deps = [ - "//vendor/k8s.io/api/batch/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/batch/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/listers/batch/v2alpha1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/listers/batch/v2alpha1/BUILD index 92220512e1..25936513a2 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/listers/batch/v2alpha1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/listers/batch/v2alpha1/BUILD @@ -11,12 +11,13 @@ go_library( "cronjob.go", "expansion_generated.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/listers/batch/v2alpha1", importpath = "k8s.io/client-go/listers/batch/v2alpha1", deps = [ - "//vendor/k8s.io/api/batch/v2alpha1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/batch/v2alpha1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/listers/certificates/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/listers/certificates/v1beta1/BUILD index b7ca4270c1..0dd49fcb30 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/listers/certificates/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/listers/certificates/v1beta1/BUILD @@ -11,12 +11,13 @@ go_library( "certificatesigningrequest.go", "expansion_generated.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/listers/certificates/v1beta1", importpath = "k8s.io/client-go/listers/certificates/v1beta1", deps = [ - "//vendor/k8s.io/api/certificates/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/certificates/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/listers/coordination/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/listers/coordination/v1beta1/BUILD new file mode 100644 index 0000000000..da6d88d53e --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/client-go/listers/coordination/v1beta1/BUILD @@ -0,0 +1,32 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = [ + "expansion_generated.go", + "lease.go", + ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/listers/coordination/v1beta1", + importpath = "k8s.io/client-go/listers/coordination/v1beta1", + visibility = ["//visibility:public"], + deps = [ + "//staging/src/k8s.io/api/coordination/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], + visibility = ["//visibility:public"], +) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/listers/coordination/v1beta1/expansion_generated.go b/cluster-autoscaler/vendor/k8s.io/client-go/listers/coordination/v1beta1/expansion_generated.go new file mode 100644 index 0000000000..dddc53107b --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/client-go/listers/coordination/v1beta1/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 v1beta1 + +// LeaseListerExpansion allows custom methods to be added to +// LeaseLister. +type LeaseListerExpansion interface{} + +// LeaseNamespaceListerExpansion allows custom methods to be added to +// LeaseNamespaceLister. +type LeaseNamespaceListerExpansion interface{} diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/listers/coordination/v1beta1/lease.go b/cluster-autoscaler/vendor/k8s.io/client-go/listers/coordination/v1beta1/lease.go new file mode 100644 index 0000000000..0027444dc6 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/client-go/listers/coordination/v1beta1/lease.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 lister-gen. DO NOT EDIT. + +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" +) + +// LeaseLister helps list Leases. +type LeaseLister interface { + // List lists all Leases in the indexer. + List(selector labels.Selector) (ret []*v1beta1.Lease, err error) + // Leases returns an object that can list and get Leases. + Leases(namespace string) LeaseNamespaceLister + LeaseListerExpansion +} + +// leaseLister implements the LeaseLister interface. +type leaseLister struct { + indexer cache.Indexer +} + +// 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 +} + +// Leases returns an object that can list and get Leases. +func (s *leaseLister) Leases(namespace string) LeaseNamespaceLister { + return leaseNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// LeaseNamespaceLister helps list and get Leases. +type LeaseNamespaceLister interface { + // List lists all Leases in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1beta1.Lease, err error) + // Get retrieves the Lease from the indexer for a given namespace and name. + Get(name string) (*v1beta1.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 +} diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/listers/core/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/listers/core/v1/BUILD index 313cdc299c..458cd28022 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/listers/core/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/listers/core/v1/BUILD @@ -29,12 +29,13 @@ go_library( "service_expansion.go", "serviceaccount.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/listers/core/v1", importpath = "k8s.io/client-go/listers/core/v1", deps = [ - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/listers/events/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/listers/events/v1beta1/BUILD index f4ea35d4af..f3ea306fc7 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/listers/events/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/listers/events/v1beta1/BUILD @@ -6,13 +6,14 @@ go_library( "event.go", "expansion_generated.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/listers/events/v1beta1", importpath = "k8s.io/client-go/listers/events/v1beta1", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/api/events/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/events/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/listers/extensions/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/listers/extensions/v1beta1/BUILD index 49b895c3e6..786a63311b 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/listers/extensions/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/listers/extensions/v1beta1/BUILD @@ -20,15 +20,16 @@ go_library( "replicaset_expansion.go", "scale.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/listers/extensions/v1beta1", importpath = "k8s.io/client-go/listers/extensions/v1beta1", deps = [ - "//vendor/k8s.io/api/apps/v1beta1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/extensions/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/apps/v1beta1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/extensions/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) @@ -37,12 +38,12 @@ go_test( srcs = ["daemonset_expansion_test.go"], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/extensions/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/extensions/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/listers/networking/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/listers/networking/v1/BUILD index 64dc638bac..c3172f6fcd 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/listers/networking/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/listers/networking/v1/BUILD @@ -11,12 +11,13 @@ go_library( "expansion_generated.go", "networkpolicy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/listers/networking/v1", importpath = "k8s.io/client-go/listers/networking/v1", deps = [ - "//vendor/k8s.io/api/networking/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/networking/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/listers/policy/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/listers/policy/v1beta1/BUILD index 2c5f33df46..5c140cb3df 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/listers/policy/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/listers/policy/v1beta1/BUILD @@ -14,15 +14,16 @@ go_library( "poddisruptionbudget_expansion.go", "podsecuritypolicy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/listers/policy/v1beta1", importpath = "k8s.io/client-go/listers/policy/v1beta1", deps = [ + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/policy/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/policy/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/listers/rbac/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/listers/rbac/v1/BUILD index 9facdc04df..0d6f8e14df 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/listers/rbac/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/listers/rbac/v1/BUILD @@ -14,12 +14,13 @@ go_library( "role.go", "rolebinding.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/listers/rbac/v1", importpath = "k8s.io/client-go/listers/rbac/v1", deps = [ - "//vendor/k8s.io/api/rbac/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/rbac/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/listers/rbac/v1alpha1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/listers/rbac/v1alpha1/BUILD index 917c535fc5..ba05830336 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/listers/rbac/v1alpha1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/listers/rbac/v1alpha1/BUILD @@ -14,12 +14,13 @@ go_library( "role.go", "rolebinding.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/listers/rbac/v1alpha1", importpath = "k8s.io/client-go/listers/rbac/v1alpha1", deps = [ - "//vendor/k8s.io/api/rbac/v1alpha1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/rbac/v1alpha1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/listers/rbac/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/listers/rbac/v1beta1/BUILD index bde3d52e81..055f3542c5 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/listers/rbac/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/listers/rbac/v1beta1/BUILD @@ -14,12 +14,13 @@ go_library( "role.go", "rolebinding.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/listers/rbac/v1beta1", importpath = "k8s.io/client-go/listers/rbac/v1beta1", deps = [ - "//vendor/k8s.io/api/rbac/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/rbac/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/listers/scheduling/v1alpha1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/listers/scheduling/v1alpha1/BUILD index cf60e81322..3f17b0575e 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/listers/scheduling/v1alpha1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/listers/scheduling/v1alpha1/BUILD @@ -11,12 +11,13 @@ go_library( "expansion_generated.go", "priorityclass.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/listers/scheduling/v1alpha1", importpath = "k8s.io/client-go/listers/scheduling/v1alpha1", deps = [ - "//vendor/k8s.io/api/scheduling/v1alpha1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/scheduling/v1alpha1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/listers/scheduling/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/listers/scheduling/v1beta1/BUILD index 1eb3973867..543d09dd5b 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/listers/scheduling/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/listers/scheduling/v1beta1/BUILD @@ -6,13 +6,14 @@ go_library( "expansion_generated.go", "priorityclass.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/listers/scheduling/v1beta1", importpath = "k8s.io/client-go/listers/scheduling/v1beta1", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/api/scheduling/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/scheduling/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/listers/settings/v1alpha1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/listers/settings/v1alpha1/BUILD index 9979b5e3cc..266ec2351c 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/listers/settings/v1alpha1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/listers/settings/v1alpha1/BUILD @@ -11,12 +11,13 @@ go_library( "expansion_generated.go", "podpreset.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/listers/settings/v1alpha1", importpath = "k8s.io/client-go/listers/settings/v1alpha1", deps = [ - "//vendor/k8s.io/api/settings/v1alpha1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/settings/v1alpha1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/listers/storage/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/listers/storage/v1/BUILD index b90f06bb7a..319290572b 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/listers/storage/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/listers/storage/v1/BUILD @@ -11,12 +11,13 @@ go_library( "expansion_generated.go", "storageclass.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/listers/storage/v1", importpath = "k8s.io/client-go/listers/storage/v1", deps = [ - "//vendor/k8s.io/api/storage/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/storage/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/listers/storage/v1alpha1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/listers/storage/v1alpha1/BUILD index 50592d6707..300af788d2 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/listers/storage/v1alpha1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/listers/storage/v1alpha1/BUILD @@ -6,13 +6,14 @@ go_library( "expansion_generated.go", "volumeattachment.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/listers/storage/v1alpha1", importpath = "k8s.io/client-go/listers/storage/v1alpha1", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/api/storage/v1alpha1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/storage/v1alpha1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/listers/storage/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/listers/storage/v1beta1/BUILD index 49d992e47b..e38902fa3b 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/listers/storage/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/listers/storage/v1beta1/BUILD @@ -12,12 +12,13 @@ go_library( "storageclass.go", "volumeattachment.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/listers/storage/v1beta1", importpath = "k8s.io/client-go/listers/storage/v1beta1", deps = [ - "//vendor/k8s.io/api/storage/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/storage/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/pkg/apis/clientauthentication/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/pkg/apis/clientauthentication/BUILD index 9536954e0d..12c6369ee7 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/pkg/apis/clientauthentication/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/pkg/apis/clientauthentication/BUILD @@ -8,12 +8,13 @@ go_library( "types.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/pkg/apis/clientauthentication", importpath = "k8s.io/client-go/pkg/apis/clientauthentication", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/BUILD index 1a3bc15f66..d3d66e5d2f 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/BUILD @@ -15,13 +15,14 @@ go_library( "zz_generated.deepcopy.go", "zz_generated.defaults.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1", importpath = "k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1", deps = [ - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/client-go/pkg/apis/clientauthentication:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/client-go/pkg/apis/clientauthentication:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/zz_generated.deepcopy.go index f062b8f06f..a73d31b3f1 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/zz_generated.deepcopy.go @@ -31,12 +31,8 @@ func (in *ExecCredential) DeepCopyInto(out *ExecCredential) { in.Spec.DeepCopyInto(&out.Spec) if in.Status != nil { in, out := &in.Status, &out.Status - if *in == nil { - *out = nil - } else { - *out = new(ExecCredentialStatus) - (*in).DeepCopyInto(*out) - } + *out = new(ExecCredentialStatus) + (*in).DeepCopyInto(*out) } return } @@ -64,12 +60,8 @@ func (in *ExecCredentialSpec) DeepCopyInto(out *ExecCredentialSpec) { *out = *in if in.Response != nil { in, out := &in.Response, &out.Response - if *in == nil { - *out = nil - } else { - *out = new(Response) - (*in).DeepCopyInto(*out) - } + *out = new(Response) + (*in).DeepCopyInto(*out) } return } @@ -89,11 +81,7 @@ func (in *ExecCredentialStatus) DeepCopyInto(out *ExecCredentialStatus) { *out = *in if in.ExpirationTimestamp != nil { in, out := &in.ExpirationTimestamp, &out.ExpirationTimestamp - if *in == nil { - *out = nil - } else { - *out = (*in).DeepCopy() - } + *out = (*in).DeepCopy() } return } @@ -115,12 +103,15 @@ func (in *Response) DeepCopyInto(out *Response) { in, out := &in.Header, &out.Header *out = make(map[string][]string, len(*in)) for key, val := range *in { + var outVal []string if val == nil { (*out)[key] = nil } else { - (*out)[key] = make([]string, len(val)) - copy((*out)[key], val) + in, out := &val, &outVal + *out = make([]string, len(*in)) + copy(*out, *in) } + (*out)[key] = outVal } } return diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1beta1/BUILD index 6431610f3b..fa0df9ae16 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1beta1/BUILD @@ -11,14 +11,15 @@ go_library( "zz_generated.deepcopy.go", "zz_generated.defaults.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1beta1", importpath = "k8s.io/client-go/pkg/apis/clientauthentication/v1beta1", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/client-go/pkg/apis/clientauthentication:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/client-go/pkg/apis/clientauthentication:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1beta1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1beta1/zz_generated.deepcopy.go index 656fea4d87..736b8cf00d 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1beta1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1beta1/zz_generated.deepcopy.go @@ -31,12 +31,8 @@ func (in *ExecCredential) DeepCopyInto(out *ExecCredential) { out.Spec = in.Spec if in.Status != nil { in, out := &in.Status, &out.Status - if *in == nil { - *out = nil - } else { - *out = new(ExecCredentialStatus) - (*in).DeepCopyInto(*out) - } + *out = new(ExecCredentialStatus) + (*in).DeepCopyInto(*out) } return } @@ -80,11 +76,7 @@ func (in *ExecCredentialStatus) DeepCopyInto(out *ExecCredentialStatus) { *out = *in if in.ExpirationTimestamp != nil { in, out := &in.ExpirationTimestamp, &out.ExpirationTimestamp - if *in == nil { - *out = nil - } else { - *out = (*in).DeepCopy() - } + *out = (*in).DeepCopy() } return } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/pkg/apis/clientauthentication/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/client-go/pkg/apis/clientauthentication/zz_generated.deepcopy.go index 008c3c7dfa..c568a6fc8a 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/pkg/apis/clientauthentication/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/pkg/apis/clientauthentication/zz_generated.deepcopy.go @@ -31,12 +31,8 @@ func (in *ExecCredential) DeepCopyInto(out *ExecCredential) { in.Spec.DeepCopyInto(&out.Spec) if in.Status != nil { in, out := &in.Status, &out.Status - if *in == nil { - *out = nil - } else { - *out = new(ExecCredentialStatus) - (*in).DeepCopyInto(*out) - } + *out = new(ExecCredentialStatus) + (*in).DeepCopyInto(*out) } return } @@ -64,12 +60,8 @@ func (in *ExecCredentialSpec) DeepCopyInto(out *ExecCredentialSpec) { *out = *in if in.Response != nil { in, out := &in.Response, &out.Response - if *in == nil { - *out = nil - } else { - *out = new(Response) - (*in).DeepCopyInto(*out) - } + *out = new(Response) + (*in).DeepCopyInto(*out) } return } @@ -89,11 +81,7 @@ func (in *ExecCredentialStatus) DeepCopyInto(out *ExecCredentialStatus) { *out = *in if in.ExpirationTimestamp != nil { in, out := &in.ExpirationTimestamp, &out.ExpirationTimestamp - if *in == nil { - *out = nil - } else { - *out = (*in).DeepCopy() - } + *out = (*in).DeepCopy() } return } @@ -115,12 +103,15 @@ func (in *Response) DeepCopyInto(out *Response) { in, out := &in.Header, &out.Header *out = make(map[string][]string, len(*in)) for key, val := range *in { + var outVal []string if val == nil { (*out)[key] = nil } else { - (*out)[key] = make([]string, len(val)) - copy((*out)[key], val) + in, out := &val, &outVal + *out = make([]string, len(*in)) + copy(*out, *in) } + (*out)[key] = outVal } } return diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/pkg/version/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/pkg/version/BUILD index ee19d8cde9..9e66d15ab6 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/pkg/version/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/pkg/version/BUILD @@ -12,8 +12,9 @@ go_library( "doc.go", "version.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/pkg/version", importpath = "k8s.io/client-go/pkg/version", - deps = ["//vendor/k8s.io/apimachinery/pkg/version:go_default_library"], + deps = ["//staging/src/k8s.io/apimachinery/pkg/version:go_default_library"], ) filegroup( diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/plugin/pkg/client/auth/exec/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/plugin/pkg/client/auth/exec/BUILD index 9af48cf309..d245936727 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/plugin/pkg/client/auth/exec/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/plugin/pkg/client/auth/exec/BUILD @@ -3,21 +3,23 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") go_library( name = "go_default_library", srcs = ["exec.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/plugin/pkg/client/auth/exec", importpath = "k8s.io/client-go/plugin/pkg/client/auth/exec", visibility = ["//visibility:public"], deps = [ + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/client-go/pkg/apis/clientauthentication:go_default_library", + "//staging/src/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1:go_default_library", + "//staging/src/k8s.io/client-go/pkg/apis/clientauthentication/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/tools/clientcmd/api:go_default_library", + "//staging/src/k8s.io/client-go/transport:go_default_library", + "//staging/src/k8s.io/client-go/util/connrotation:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/golang.org/x/crypto/ssh/terminal:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/client-go/pkg/apis/clientauthentication:go_default_library", - "//vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1:go_default_library", - "//vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/tools/clientcmd/api:go_default_library", - "//vendor/k8s.io/client-go/transport:go_default_library", - "//vendor/k8s.io/client-go/util/connrotation:go_default_library", ], ) @@ -27,11 +29,11 @@ go_test( data = glob(["testdata/**"]), embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/client-go/pkg/apis/clientauthentication:go_default_library", - "//vendor/k8s.io/client-go/tools/clientcmd/api:go_default_library", - "//vendor/k8s.io/client-go/transport:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/client-go/pkg/apis/clientauthentication:go_default_library", + "//staging/src/k8s.io/client-go/tools/clientcmd/api:go_default_library", + "//staging/src/k8s.io/client-go/transport:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/plugin/pkg/client/auth/exec/exec.go b/cluster-autoscaler/vendor/k8s.io/client-go/plugin/pkg/client/auth/exec/exec.go index 2d05ac622c..c7a86f186b 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/plugin/pkg/client/auth/exec/exec.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/plugin/pkg/client/auth/exec/exec.go @@ -36,6 +36,7 @@ import ( "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/serializer" + utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/client-go/pkg/apis/clientauthentication" "k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1" "k8s.io/client-go/pkg/apis/clientauthentication/v1beta1" @@ -51,9 +52,9 @@ var codecs = serializer.NewCodecFactory(scheme) func init() { v1.AddToGroupVersion(scheme, schema.GroupVersion{Version: "v1"}) - v1alpha1.AddToScheme(scheme) - v1beta1.AddToScheme(scheme) - clientauthentication.AddToScheme(scheme) + utilruntime.Must(v1alpha1.AddToScheme(scheme)) + utilruntime.Must(v1beta1.AddToScheme(scheme)) + utilruntime.Must(clientauthentication.AddToScheme(scheme)) } var ( diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/rest/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/rest/BUILD index 130ec31a33..f45e77618a 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/rest/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/rest/BUILD @@ -18,29 +18,29 @@ go_test( ], embed = [":go_default_library"], deps = [ + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/extensions/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer/streaming:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/httpstream:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/rest/watch:go_default_library", + "//staging/src/k8s.io/client-go/tools/clientcmd/api:go_default_library", + "//staging/src/k8s.io/client-go/util/flowcontrol:go_default_library", + "//staging/src/k8s.io/client-go/util/testing:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/google/gofuzz:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/extensions/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/httpstream:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/rest/watch:go_default_library", - "//vendor/k8s.io/client-go/tools/clientcmd/api:go_default_library", - "//vendor/k8s.io/client-go/util/flowcontrol:go_default_library", - "//vendor/k8s.io/client-go/util/testing:go_default_library", ], ) @@ -56,27 +56,28 @@ go_library( "urlbackoff.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/rest", importpath = "k8s.io/client-go/rest", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer/streaming:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/pkg/version:go_default_library", + "//staging/src/k8s.io/client-go/plugin/pkg/client/auth/exec:go_default_library", + "//staging/src/k8s.io/client-go/rest/watch:go_default_library", + "//staging/src/k8s.io/client-go/tools/clientcmd/api:go_default_library", + "//staging/src/k8s.io/client-go/tools/metrics:go_default_library", + "//staging/src/k8s.io/client-go/transport:go_default_library", + "//staging/src/k8s.io/client-go/util/cert:go_default_library", + "//staging/src/k8s.io/client-go/util/flowcontrol:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/golang.org/x/net/http2:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/pkg/version:go_default_library", - "//vendor/k8s.io/client-go/plugin/pkg/client/auth/exec:go_default_library", - "//vendor/k8s.io/client-go/rest/watch:go_default_library", - "//vendor/k8s.io/client-go/tools/clientcmd/api:go_default_library", - "//vendor/k8s.io/client-go/tools/metrics:go_default_library", - "//vendor/k8s.io/client-go/transport:go_default_library", - "//vendor/k8s.io/client-go/util/cert:go_default_library", - "//vendor/k8s.io/client-go/util/flowcontrol:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/rest/request.go b/cluster-autoscaler/vendor/k8s.io/client-go/rest/request.go index 09ffd76dd4..c593a38775 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/rest/request.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/rest/request.go @@ -731,7 +731,7 @@ func (r *Request) request(fn func(*http.Request, *http.Response)) error { } } - glog.V(4).Infof("Got a Retry-After %s response for attempt %d to %v", seconds, retries, url) + glog.V(4).Infof("Got a Retry-After %ds response for attempt %d to %v", seconds, retries, url) r.backoffMgr.Sleep(time.Duration(seconds) * time.Second) return false } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/rest/watch/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/rest/watch/BUILD index 30dfadd1fa..699d9f3e8c 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/rest/watch/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/rest/watch/BUILD @@ -12,33 +12,34 @@ go_library( "decoder.go", "encoder.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/rest/watch", importpath = "k8s.io/client-go/rest/watch", deps = [ - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer/streaming:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", ], ) go_test( - name = "go_default_xtest", + name = "go_default_test", srcs = [ "decoder_test.go", "encoder_test.go", ], + embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/json:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/rest/watch:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer/json:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer/streaming:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/restmapper/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/restmapper/BUILD index afd6762fd7..d13169643c 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/restmapper/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/restmapper/BUILD @@ -7,14 +7,15 @@ go_library( "discovery.go", "shortcut.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/restmapper", importpath = "k8s.io/client-go/restmapper", visibility = ["//visibility:public"], deps = [ + "//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/client-go/discovery:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/client-go/discovery:go_default_library", ], ) @@ -27,16 +28,16 @@ go_test( ], embed = [":go_default_library"], deps = [ + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/version:go_default_library", + "//staging/src/k8s.io/client-go/discovery:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/rest/fake:go_default_library", "//vendor/github.com/googleapis/gnostic/OpenAPIv2:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/version:go_default_library", - "//vendor/k8s.io/client-go/discovery:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/rest/fake:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/scale/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/scale/BUILD index fea5cedc7c..0e9828fd03 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/scale/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/scale/BUILD @@ -8,24 +8,26 @@ go_library( "interfaces.go", "util.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/scale", importpath = "k8s.io/client-go/scale", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/api/autoscaling/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/client-go/discovery:go_default_library", - "//vendor/k8s.io/client-go/dynamic:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/scale/scheme:go_default_library", - "//vendor/k8s.io/client-go/scale/scheme/appsint:go_default_library", - "//vendor/k8s.io/client-go/scale/scheme/appsv1beta1:go_default_library", - "//vendor/k8s.io/client-go/scale/scheme/appsv1beta2:go_default_library", - "//vendor/k8s.io/client-go/scale/scheme/autoscalingv1:go_default_library", - "//vendor/k8s.io/client-go/scale/scheme/extensionsint:go_default_library", - "//vendor/k8s.io/client-go/scale/scheme/extensionsv1beta1:go_default_library", + "//staging/src/k8s.io/api/autoscaling/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/client-go/discovery:go_default_library", + "//staging/src/k8s.io/client-go/dynamic:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/scale/scheme:go_default_library", + "//staging/src/k8s.io/client-go/scale/scheme/appsint:go_default_library", + "//staging/src/k8s.io/client-go/scale/scheme/appsv1beta1:go_default_library", + "//staging/src/k8s.io/client-go/scale/scheme/appsv1beta2:go_default_library", + "//staging/src/k8s.io/client-go/scale/scheme/autoscalingv1:go_default_library", + "//staging/src/k8s.io/client-go/scale/scheme/extensionsint:go_default_library", + "//staging/src/k8s.io/client-go/scale/scheme/extensionsv1beta1:go_default_library", ], ) @@ -37,22 +39,22 @@ go_test( ], embed = [":go_default_library"], deps = [ + "//staging/src/k8s.io/api/apps/v1beta1:go_default_library", + "//staging/src/k8s.io/api/apps/v1beta2:go_default_library", + "//staging/src/k8s.io/api/autoscaling/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/extensions/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/testing/roundtrip:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/client-go/discovery/fake:go_default_library", + "//staging/src/k8s.io/client-go/dynamic:go_default_library", + "//staging/src/k8s.io/client-go/rest/fake:go_default_library", + "//staging/src/k8s.io/client-go/restmapper:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", - "//vendor/k8s.io/api/apps/v1beta1:go_default_library", - "//vendor/k8s.io/api/apps/v1beta2:go_default_library", - "//vendor/k8s.io/api/autoscaling/v1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/extensions/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/testing/roundtrip:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/client-go/discovery/fake:go_default_library", - "//vendor/k8s.io/client-go/dynamic:go_default_library", - "//vendor/k8s.io/client-go/rest/fake:go_default_library", - "//vendor/k8s.io/client-go/restmapper:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/scale/scheme/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/scale/scheme/BUILD index 74bd976a1f..634bc5dd91 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/scale/scheme/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/scale/scheme/BUILD @@ -8,13 +8,14 @@ go_library( "types.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/scale/scheme", importpath = "k8s.io/client-go/scale/scheme", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/api/autoscaling/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/api/autoscaling/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/scale/scheme/appsint/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/scale/scheme/appsint/BUILD index 2fef63f0e0..715d4077af 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/scale/scheme/appsint/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/scale/scheme/appsint/BUILD @@ -6,13 +6,14 @@ go_library( "doc.go", "register.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/scale/scheme/appsint", importpath = "k8s.io/client-go/scale/scheme/appsint", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/api/apps/v1beta2:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/client-go/scale/scheme:go_default_library", + "//staging/src/k8s.io/api/apps/v1beta2:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/client-go/scale/scheme:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/scale/scheme/appsv1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/scale/scheme/appsv1beta1/BUILD index 05530e300b..e6c1c513e1 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/scale/scheme/appsv1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/scale/scheme/appsv1beta1/BUILD @@ -8,15 +8,16 @@ go_library( "register.go", "zz_generated.conversion.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/scale/scheme/appsv1beta1", importpath = "k8s.io/client-go/scale/scheme/appsv1beta1", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/api/apps/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/client-go/scale/scheme:go_default_library", + "//staging/src/k8s.io/api/apps/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/client-go/scale/scheme:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/scale/scheme/appsv1beta2/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/scale/scheme/appsv1beta2/BUILD index 7e52bc060b..bbb605a0e9 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/scale/scheme/appsv1beta2/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/scale/scheme/appsv1beta2/BUILD @@ -8,15 +8,16 @@ go_library( "register.go", "zz_generated.conversion.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/scale/scheme/appsv1beta2", importpath = "k8s.io/client-go/scale/scheme/appsv1beta2", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/api/apps/v1beta2:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/client-go/scale/scheme:go_default_library", + "//staging/src/k8s.io/api/apps/v1beta2:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/client-go/scale/scheme:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/scale/scheme/autoscalingv1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/scale/scheme/autoscalingv1/BUILD index 646a6fdf8e..cea381d612 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/scale/scheme/autoscalingv1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/scale/scheme/autoscalingv1/BUILD @@ -8,15 +8,16 @@ go_library( "register.go", "zz_generated.conversion.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/scale/scheme/autoscalingv1", importpath = "k8s.io/client-go/scale/scheme/autoscalingv1", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/api/autoscaling/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/client-go/scale/scheme:go_default_library", + "//staging/src/k8s.io/api/autoscaling/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/client-go/scale/scheme:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/scale/scheme/extensionsint/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/scale/scheme/extensionsint/BUILD index 6174a88b14..49c10f370a 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/scale/scheme/extensionsint/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/scale/scheme/extensionsint/BUILD @@ -6,13 +6,14 @@ go_library( "doc.go", "register.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/scale/scheme/extensionsint", importpath = "k8s.io/client-go/scale/scheme/extensionsint", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/api/extensions/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/client-go/scale/scheme:go_default_library", + "//staging/src/k8s.io/api/extensions/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/client-go/scale/scheme:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/scale/scheme/extensionsv1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/scale/scheme/extensionsv1beta1/BUILD index 4c992c7d11..58ff5aa6e4 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/scale/scheme/extensionsv1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/scale/scheme/extensionsv1beta1/BUILD @@ -8,15 +8,16 @@ go_library( "register.go", "zz_generated.conversion.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/scale/scheme/extensionsv1beta1", importpath = "k8s.io/client-go/scale/scheme/extensionsv1beta1", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/api/extensions/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/client-go/scale/scheme:go_default_library", + "//staging/src/k8s.io/api/extensions/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/client-go/scale/scheme:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/scale/scheme/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/client-go/scale/scheme/zz_generated.deepcopy.go index 7fe882f036..3db7081546 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/scale/scheme/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/scale/scheme/zz_generated.deepcopy.go @@ -74,12 +74,8 @@ func (in *ScaleStatus) DeepCopyInto(out *ScaleStatus) { *out = *in if in.Selector != nil { in, out := &in.Selector, &out.Selector - if *in == nil { - *out = nil - } else { - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) - } + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) } return } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/scale/util.go b/cluster-autoscaler/vendor/k8s.io/client-go/scale/util.go index 1c04b4551b..2f43a7a795 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/scale/util.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/scale/util.go @@ -25,6 +25,7 @@ import ( "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" serializer "k8s.io/apimachinery/pkg/runtime/serializer" + utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/client-go/discovery" scalescheme "k8s.io/client-go/scale/scheme" scaleappsint "k8s.io/client-go/scale/scheme/appsint" @@ -143,13 +144,13 @@ type ScaleConverter struct { // Scales in autoscaling/v1 and extensions/v1beta1. func NewScaleConverter() *ScaleConverter { scheme := runtime.NewScheme() - scaleautoscaling.AddToScheme(scheme) - scalescheme.AddToScheme(scheme) - scaleext.AddToScheme(scheme) - scaleextint.AddToScheme(scheme) - scaleappsint.AddToScheme(scheme) - scaleappsv1beta1.AddToScheme(scheme) - scaleappsv1beta2.AddToScheme(scheme) + utilruntime.Must(scaleautoscaling.AddToScheme(scheme)) + utilruntime.Must(scalescheme.AddToScheme(scheme)) + utilruntime.Must(scaleext.AddToScheme(scheme)) + utilruntime.Must(scaleextint.AddToScheme(scheme)) + utilruntime.Must(scaleappsint.AddToScheme(scheme)) + utilruntime.Must(scaleappsv1beta1.AddToScheme(scheme)) + utilruntime.Must(scaleappsv1beta2.AddToScheme(scheme)) return &ScaleConverter{ scheme: scheme, diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/testing/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/testing/BUILD index 5b8684c265..6222568fc7 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/testing/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/testing/BUILD @@ -13,36 +13,35 @@ go_library( "fake.go", "fixture.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/testing", importpath = "k8s.io/client-go/testing", deps = [ - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/json:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/strategicpatch:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/json:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/strategicpatch:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) go_test( name = "go_default_test", - srcs = [ - "fixture_test.go", - ], + srcs = ["fixture_test.go"], embed = [":go_default_library"], deps = [ + "//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/third_party/forked/golang/template/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/third_party/forked/golang/template/BUILD index cebdf7b63a..6d86954db9 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/third_party/forked/golang/template/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/third_party/forked/golang/template/BUILD @@ -11,6 +11,7 @@ go_library( "exec.go", "funcs.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/third_party/forked/golang/template", importpath = "k8s.io/client-go/third_party/forked/golang/template", ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/tools/auth/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/tools/auth/BUILD index 5c7718a778..1f44e2db68 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/tools/auth/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/tools/auth/BUILD @@ -9,14 +9,15 @@ load( go_library( name = "go_default_library", srcs = ["clientauth.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/tools/auth", importpath = "k8s.io/client-go/tools/auth", - deps = ["//vendor/k8s.io/client-go/rest:go_default_library"], + deps = ["//staging/src/k8s.io/client-go/rest:go_default_library"], ) go_test( - name = "go_default_xtest", + name = "go_default_test", srcs = ["clientauth_test.go"], - deps = ["//vendor/k8s.io/client-go/tools/auth:go_default_library"], + embed = [":go_default_library"], ) filegroup( diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/tools/cache/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/tools/cache/BUILD index 6be2aecd52..0240fa6f70 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/tools/cache/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/tools/cache/BUILD @@ -25,16 +25,16 @@ go_test( embed = [":go_default_library"], race = "off", deps = [ + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache/testing:go_default_library", "//vendor/github.com/google/gofuzz:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/tools/cache/testing:go_default_library", ], ) @@ -61,27 +61,29 @@ go_library( "thread_safe_store.go", "undelta_store.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/tools/cache", importpath = "k8s.io/client-go/tools/cache", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/cache:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/naming:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/tools/pager:go_default_library", + "//staging/src/k8s.io/client-go/util/buffer:go_default_library", + "//staging/src/k8s.io/client-go/util/retry:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/cache:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/tools/pager:go_default_library", - "//vendor/k8s.io/client-go/util/buffer:go_default_library", - "//vendor/k8s.io/client-go/util/retry:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/tools/cache/reflector.go b/cluster-autoscaler/vendor/k8s.io/client-go/tools/cache/reflector.go index 054a7373c9..9ee7efcbbd 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/tools/cache/reflector.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/tools/cache/reflector.go @@ -24,9 +24,6 @@ import ( "net" "net/url" "reflect" - "regexp" - goruntime "runtime" - "runtime/debug" "strconv" "strings" "sync" @@ -40,6 +37,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/util/clock" + "k8s.io/apimachinery/pkg/util/naming" utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/util/wait" "k8s.io/apimachinery/pkg/watch" @@ -76,8 +74,6 @@ type Reflector struct { var ( // We try to spread the load on apiserver by setting timeouts for // watch requests - it is random in [minWatchTimeout, 2*minWatchTimeout]. - // However, it can be modified to avoid periodic resync to break the - // TCP connection. minWatchTimeout = 5 * time.Minute ) @@ -96,7 +92,7 @@ func NewNamespaceKeyedIndexerAndReflector(lw ListerWatcher, expectedType interfa // resyncPeriod, so that you can use reflectors to periodically process everything as // well as incrementally processing the things that change. func NewReflector(lw ListerWatcher, expectedType interface{}, store Store, resyncPeriod time.Duration) *Reflector { - return NewNamedReflector(getDefaultReflectorName(internalPackages...), lw, expectedType, store, resyncPeriod) + return NewNamedReflector(naming.GetNameFromCallsite(internalPackages...), lw, expectedType, store, resyncPeriod) } // reflectorDisambiguator is used to disambiguate started reflectors. @@ -127,74 +123,7 @@ func makeValidPrometheusMetricLabel(in string) string { // internalPackages are packages that ignored when creating a default reflector name. These packages are in the common // call chains to NewReflector, so they'd be low entropy names for reflectors -var internalPackages = []string{"client-go/tools/cache/", "/runtime/asm_"} - -// getDefaultReflectorName walks back through the call stack until we find a caller from outside of the ignoredPackages -// it returns back a shortpath/filename:line to aid in identification of this reflector when it starts logging -func getDefaultReflectorName(ignoredPackages ...string) string { - name := "????" - const maxStack = 10 - for i := 1; i < maxStack; i++ { - _, file, line, ok := goruntime.Caller(i) - if !ok { - file, line, ok = extractStackCreator() - if !ok { - break - } - i += maxStack - } - if hasPackage(file, ignoredPackages) { - continue - } - - file = trimPackagePrefix(file) - name = fmt.Sprintf("%s:%d", file, line) - break - } - return name -} - -// hasPackage returns true if the file is in one of the ignored packages. -func hasPackage(file string, ignoredPackages []string) bool { - for _, ignoredPackage := range ignoredPackages { - if strings.Contains(file, ignoredPackage) { - return true - } - } - return false -} - -// trimPackagePrefix reduces duplicate values off the front of a package name. -func trimPackagePrefix(file string) string { - if l := strings.LastIndex(file, "k8s.io/client-go/pkg/"); l >= 0 { - return file[l+len("k8s.io/client-go/"):] - } - if l := strings.LastIndex(file, "/src/"); l >= 0 { - return file[l+5:] - } - if l := strings.LastIndex(file, "/pkg/"); l >= 0 { - return file[l+1:] - } - return file -} - -var stackCreator = regexp.MustCompile(`(?m)^created by (.*)\n\s+(.*):(\d+) \+0x[[:xdigit:]]+$`) - -// extractStackCreator retrieves the goroutine file and line that launched this stack. Returns false -// if the creator cannot be located. -// TODO: Go does not expose this via runtime https://github.com/golang/go/issues/11440 -func extractStackCreator() (string, int, bool) { - stack := debug.Stack() - matches := stackCreator.FindStringSubmatch(string(stack)) - if matches == nil || len(matches) != 4 { - return "", 0, false - } - line, err := strconv.Atoi(matches[3]) - if err != nil { - return "", 0, false - } - return matches[2], line, true -} +var internalPackages = []string{"client-go/tools/cache/"} // Run starts a watch and handles watch events. Will restart the watch if it is closed. // Run will exit when stopCh is closed. diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/tools/clientcmd/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/tools/clientcmd/BUILD index afc2770201..59a860ffb5 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/tools/clientcmd/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/tools/clientcmd/BUILD @@ -17,14 +17,14 @@ go_test( ], embed = [":go_default_library"], deps = [ + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/tools/clientcmd/api:go_default_library", + "//staging/src/k8s.io/client-go/tools/clientcmd/api/latest:go_default_library", "//vendor/github.com/ghodss/yaml:go_default_library", "//vendor/github.com/imdario/mergo:go_default_library", "//vendor/github.com/spf13/pflag:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/tools/clientcmd/api:go_default_library", - "//vendor/k8s.io/client-go/tools/clientcmd/api/latest:go_default_library", ], ) @@ -42,21 +42,22 @@ go_library( "overrides.go", "validation.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/tools/clientcmd", importpath = "k8s.io/client-go/tools/clientcmd", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/tools/auth:go_default_library", + "//staging/src/k8s.io/client-go/tools/clientcmd/api:go_default_library", + "//staging/src/k8s.io/client-go/tools/clientcmd/api/latest:go_default_library", + "//staging/src/k8s.io/client-go/util/homedir:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/imdario/mergo:go_default_library", "//vendor/github.com/spf13/pflag:go_default_library", "//vendor/golang.org/x/crypto/ssh/terminal:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/tools/auth:go_default_library", - "//vendor/k8s.io/client-go/tools/clientcmd/api:go_default_library", - "//vendor/k8s.io/client-go/tools/clientcmd/api/latest:go_default_library", - "//vendor/k8s.io/client-go/util/homedir:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/tools/clientcmd/api/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/tools/clientcmd/api/BUILD index b2fd138241..222cec2a54 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/tools/clientcmd/api/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/tools/clientcmd/api/BUILD @@ -25,10 +25,11 @@ go_library( "types.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/tools/clientcmd/api", importpath = "k8s.io/client-go/tools/clientcmd/api", deps = [ - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/tools/clientcmd/api/latest/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/tools/clientcmd/api/latest/BUILD index 308319e220..007ce0d9cd 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/tools/clientcmd/api/latest/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/tools/clientcmd/api/latest/BUILD @@ -8,14 +8,16 @@ load( go_library( name = "go_default_library", srcs = ["latest.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/tools/clientcmd/api/latest", importpath = "k8s.io/client-go/tools/clientcmd/api/latest", deps = [ - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/json:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning:go_default_library", - "//vendor/k8s.io/client-go/tools/clientcmd/api:go_default_library", - "//vendor/k8s.io/client-go/tools/clientcmd/api/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer/json:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer/versioning:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/client-go/tools/clientcmd/api:go_default_library", + "//staging/src/k8s.io/client-go/tools/clientcmd/api/v1:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/tools/clientcmd/api/latest/latest.go b/cluster-autoscaler/vendor/k8s.io/client-go/tools/clientcmd/api/latest/latest.go index 5fbbe3f13a..35bb5dde19 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/tools/clientcmd/api/latest/latest.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/tools/clientcmd/api/latest/latest.go @@ -21,6 +21,7 @@ import ( "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/serializer/json" "k8s.io/apimachinery/pkg/runtime/serializer/versioning" + utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/client-go/tools/clientcmd/api" "k8s.io/client-go/tools/clientcmd/api/v1" ) @@ -47,14 +48,8 @@ var ( func init() { Scheme = runtime.NewScheme() - if err := api.AddToScheme(Scheme); err != nil { - // Programmer error, detect immediately - panic(err) - } - if err := v1.AddToScheme(Scheme); err != nil { - // Programmer error, detect immediately - panic(err) - } + utilruntime.Must(api.AddToScheme(Scheme)) + utilruntime.Must(v1.AddToScheme(Scheme)) yamlSerializer := json.NewYAMLSerializer(json.DefaultMetaFactory, Scheme, Scheme) Codec = versioning.NewDefaultingCodecForScheme( Scheme, diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/tools/clientcmd/api/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/tools/clientcmd/api/v1/BUILD index 2b9daaf086..3ccb7f6f1e 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/tools/clientcmd/api/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/tools/clientcmd/api/v1/BUILD @@ -14,12 +14,13 @@ go_library( "types.go", "zz_generated.deepcopy.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/tools/clientcmd/api/v1", importpath = "k8s.io/client-go/tools/clientcmd/api/v1", deps = [ - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/client-go/tools/clientcmd/api:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/client-go/tools/clientcmd/api:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/tools/clientcmd/api/v1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/client-go/tools/clientcmd/api/v1/zz_generated.deepcopy.go index bb0f3523f4..da519dfa3b 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/tools/clientcmd/api/v1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/tools/clientcmd/api/v1/zz_generated.deepcopy.go @@ -46,31 +46,26 @@ func (in *AuthInfo) DeepCopyInto(out *AuthInfo) { in, out := &in.ImpersonateUserExtra, &out.ImpersonateUserExtra *out = make(map[string][]string, len(*in)) for key, val := range *in { + var outVal []string if val == nil { (*out)[key] = nil } else { - (*out)[key] = make([]string, len(val)) - copy((*out)[key], val) + in, out := &val, &outVal + *out = make([]string, len(*in)) + copy(*out, *in) } + (*out)[key] = outVal } } if in.AuthProvider != nil { in, out := &in.AuthProvider, &out.AuthProvider - if *in == nil { - *out = nil - } else { - *out = new(AuthProviderConfig) - (*in).DeepCopyInto(*out) - } + *out = new(AuthProviderConfig) + (*in).DeepCopyInto(*out) } if in.Exec != nil { in, out := &in.Exec, &out.Exec - if *in == nil { - *out = nil - } else { - *out = new(ExecConfig) - (*in).DeepCopyInto(*out) - } + *out = new(ExecConfig) + (*in).DeepCopyInto(*out) } if in.Extensions != nil { in, out := &in.Extensions, &out.Extensions diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/tools/clientcmd/api/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/client-go/tools/clientcmd/api/zz_generated.deepcopy.go index b90aa8d741..3240a7a98d 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/tools/clientcmd/api/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/tools/clientcmd/api/zz_generated.deepcopy.go @@ -46,31 +46,26 @@ func (in *AuthInfo) DeepCopyInto(out *AuthInfo) { in, out := &in.ImpersonateUserExtra, &out.ImpersonateUserExtra *out = make(map[string][]string, len(*in)) for key, val := range *in { + var outVal []string if val == nil { (*out)[key] = nil } else { - (*out)[key] = make([]string, len(val)) - copy((*out)[key], val) + in, out := &val, &outVal + *out = make([]string, len(*in)) + copy(*out, *in) } + (*out)[key] = outVal } } if in.AuthProvider != nil { in, out := &in.AuthProvider, &out.AuthProvider - if *in == nil { - *out = nil - } else { - *out = new(AuthProviderConfig) - (*in).DeepCopyInto(*out) - } + *out = new(AuthProviderConfig) + (*in).DeepCopyInto(*out) } if in.Exec != nil { in, out := &in.Exec, &out.Exec - if *in == nil { - *out = nil - } else { - *out = new(ExecConfig) - (*in).DeepCopyInto(*out) - } + *out = new(ExecConfig) + (*in).DeepCopyInto(*out) } if in.Extensions != nil { in, out := &in.Extensions, &out.Extensions @@ -159,36 +154,45 @@ func (in *Config) DeepCopyInto(out *Config) { in, out := &in.Clusters, &out.Clusters *out = make(map[string]*Cluster, len(*in)) for key, val := range *in { + var outVal *Cluster if val == nil { (*out)[key] = nil } else { - (*out)[key] = new(Cluster) - val.DeepCopyInto((*out)[key]) + in, out := &val, &outVal + *out = new(Cluster) + (*in).DeepCopyInto(*out) } + (*out)[key] = outVal } } if in.AuthInfos != nil { in, out := &in.AuthInfos, &out.AuthInfos *out = make(map[string]*AuthInfo, len(*in)) for key, val := range *in { + var outVal *AuthInfo if val == nil { (*out)[key] = nil } else { - (*out)[key] = new(AuthInfo) - val.DeepCopyInto((*out)[key]) + in, out := &val, &outVal + *out = new(AuthInfo) + (*in).DeepCopyInto(*out) } + (*out)[key] = outVal } } if in.Contexts != nil { in, out := &in.Contexts, &out.Contexts *out = make(map[string]*Context, len(*in)) for key, val := range *in { + var outVal *Context if val == nil { (*out)[key] = nil } else { - (*out)[key] = new(Context) - val.DeepCopyInto((*out)[key]) + in, out := &val, &outVal + *out = new(Context) + (*in).DeepCopyInto(*out) } + (*out)[key] = outVal } } if in.Extensions != nil { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/tools/leaderelection/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/tools/leaderelection/BUILD index 22e020d8c7..8d53bfe508 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/tools/leaderelection/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/tools/leaderelection/BUILD @@ -9,14 +9,15 @@ load( go_library( name = "go_default_library", srcs = ["leaderelection.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/tools/leaderelection", importpath = "k8s.io/client-go/tools/leaderelection", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/client-go/tools/leaderelection/resourcelock:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/client-go/tools/leaderelection/resourcelock:go_default_library", ], ) @@ -25,14 +26,14 @@ go_test( srcs = ["leaderelection_test.go"], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", - "//vendor/k8s.io/client-go/tools/leaderelection/resourcelock:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/core/v1/fake:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", + "//staging/src/k8s.io/client-go/tools/leaderelection/resourcelock:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/tools/leaderelection/leaderelection.go b/cluster-autoscaler/vendor/k8s.io/client-go/tools/leaderelection/leaderelection.go index aed55574a8..9a357b2ac1 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/tools/leaderelection/leaderelection.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/tools/leaderelection/leaderelection.go @@ -49,6 +49,7 @@ limitations under the License. package leaderelection import ( + "context" "fmt" "reflect" "time" @@ -119,7 +120,7 @@ type LeaderElectionConfig struct { // * OnChallenge() type LeaderCallbacks struct { // OnStartedLeading is called when a LeaderElector client starts leading - OnStartedLeading func(stop <-chan struct{}) + OnStartedLeading func(context.Context) // OnStoppedLeading is called when a LeaderElector client stops leading OnStoppedLeading func() // OnNewLeader is called when the client observes a leader that is @@ -129,10 +130,6 @@ type LeaderCallbacks struct { } // LeaderElector is a leader election client. -// -// possible future methods: -// * (le *LeaderElector) IsLeader() -// * (le *LeaderElector) GetLeader() type LeaderElector struct { config LeaderElectionConfig // internal bookkeeping @@ -145,26 +142,28 @@ type LeaderElector struct { } // Run starts the leader election loop -func (le *LeaderElector) Run() { +func (le *LeaderElector) Run(ctx context.Context) { defer func() { runtime.HandleCrash() le.config.Callbacks.OnStoppedLeading() }() - le.acquire() - stop := make(chan struct{}) - go le.config.Callbacks.OnStartedLeading(stop) - le.renew() - close(stop) + if !le.acquire(ctx) { + return // ctx signalled done + } + ctx, cancel := context.WithCancel(ctx) + defer cancel() + go le.config.Callbacks.OnStartedLeading(ctx) + le.renew(ctx) } // RunOrDie starts a client with the provided config or panics if the config // fails to validate. -func RunOrDie(lec LeaderElectionConfig) { +func RunOrDie(ctx context.Context, lec LeaderElectionConfig) { le, err := NewLeaderElector(lec) if err != nil { panic(err) } - le.Run() + le.Run(ctx) } // GetLeader returns the identity of the last observed leader or returns the empty string if @@ -178,13 +177,16 @@ func (le *LeaderElector) IsLeader() bool { return le.observedRecord.HolderIdentity == le.config.Lock.Identity() } -// acquire loops calling tryAcquireOrRenew and returns immediately when tryAcquireOrRenew succeeds. -func (le *LeaderElector) acquire() { - stop := make(chan struct{}) +// acquire loops calling tryAcquireOrRenew and returns true immediately when tryAcquireOrRenew succeeds. +// Returns false if ctx signals done. +func (le *LeaderElector) acquire(ctx context.Context) bool { + ctx, cancel := context.WithCancel(ctx) + defer cancel() + succeeded := false desc := le.config.Lock.Describe() glog.Infof("attempting to acquire leader lease %v...", desc) wait.JitterUntil(func() { - succeeded := le.tryAcquireOrRenew() + succeeded = le.tryAcquireOrRenew() le.maybeReportTransition() if !succeeded { glog.V(4).Infof("failed to acquire lease %v", desc) @@ -192,17 +194,33 @@ func (le *LeaderElector) acquire() { } le.config.Lock.RecordEvent("became leader") glog.Infof("successfully acquired lease %v", desc) - close(stop) - }, le.config.RetryPeriod, JitterFactor, true, stop) + cancel() + }, le.config.RetryPeriod, JitterFactor, true, ctx.Done()) + return succeeded } -// renew loops calling tryAcquireOrRenew and returns immediately when tryAcquireOrRenew fails. -func (le *LeaderElector) renew() { - stop := make(chan struct{}) +// renew loops calling tryAcquireOrRenew and returns immediately when tryAcquireOrRenew fails or ctx signals done. +func (le *LeaderElector) renew(ctx context.Context) { + ctx, cancel := context.WithCancel(ctx) + defer cancel() wait.Until(func() { - err := wait.Poll(le.config.RetryPeriod, le.config.RenewDeadline, func() (bool, error) { - return le.tryAcquireOrRenew(), nil - }) + timeoutCtx, timeoutCancel := context.WithTimeout(ctx, le.config.RenewDeadline) + defer timeoutCancel() + err := wait.PollImmediateUntil(le.config.RetryPeriod, func() (bool, error) { + done := make(chan bool, 1) + go func() { + defer close(done) + done <- le.tryAcquireOrRenew() + }() + + select { + case <-timeoutCtx.Done(): + return false, fmt.Errorf("failed to tryAcquireOrRenew %s", timeoutCtx.Err()) + case result := <-done: + return result, nil + } + }, timeoutCtx.Done()) + le.maybeReportTransition() desc := le.config.Lock.Describe() if err == nil { @@ -211,8 +229,8 @@ func (le *LeaderElector) renew() { } le.config.Lock.RecordEvent("stopped leading") glog.Infof("failed to renew lease %v: %v", desc, err) - close(stop) - }, 0, stop) + cancel() + }, le.config.RetryPeriod, ctx.Done()) } // tryAcquireOrRenew tries to acquire a leader lease if it is not already acquired, @@ -249,14 +267,14 @@ func (le *LeaderElector) tryAcquireOrRenew() bool { le.observedTime = time.Now() } if le.observedTime.Add(le.config.LeaseDuration).After(now.Time) && - oldLeaderElectionRecord.HolderIdentity != le.config.Lock.Identity() { + !le.IsLeader() { glog.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 // here. Let's correct it before updating. - if oldLeaderElectionRecord.HolderIdentity == le.config.Lock.Identity() { + if le.IsLeader() { leaderElectionRecord.AcquireTime = oldLeaderElectionRecord.AcquireTime leaderElectionRecord.LeaderTransitions = oldLeaderElectionRecord.LeaderTransitions } else { @@ -273,12 +291,12 @@ func (le *LeaderElector) tryAcquireOrRenew() bool { return true } -func (l *LeaderElector) maybeReportTransition() { - if l.observedRecord.HolderIdentity == l.reportedLeader { +func (le *LeaderElector) maybeReportTransition() { + if le.observedRecord.HolderIdentity == le.reportedLeader { return } - l.reportedLeader = l.observedRecord.HolderIdentity - if l.config.Callbacks.OnNewLeader != nil { - go l.config.Callbacks.OnNewLeader(l.reportedLeader) + le.reportedLeader = le.observedRecord.HolderIdentity + if le.config.Callbacks.OnNewLeader != nil { + go le.config.Callbacks.OnNewLeader(le.reportedLeader) } } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/tools/leaderelection/resourcelock/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/tools/leaderelection/resourcelock/BUILD index 8a9f8104f8..07c797c23f 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/tools/leaderelection/resourcelock/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/tools/leaderelection/resourcelock/BUILD @@ -12,12 +12,13 @@ go_library( "endpointslock.go", "interface.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/tools/leaderelection/resourcelock", importpath = "k8s.io/client-go/tools/leaderelection/resourcelock", deps = [ - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/tools/metrics/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/tools/metrics/BUILD index 7b06e0f967..eafb307002 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/tools/metrics/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/tools/metrics/BUILD @@ -8,6 +8,7 @@ load( go_library( name = "go_default_library", srcs = ["metrics.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/tools/metrics", importpath = "k8s.io/client-go/tools/metrics", ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/tools/pager/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/tools/pager/BUILD index c02def57f6..304d5b6506 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/tools/pager/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/tools/pager/BUILD @@ -9,13 +9,14 @@ load( go_library( name = "go_default_library", srcs = ["pager.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/tools/pager", importpath = "k8s.io/client-go/tools/pager", deps = [ - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", ], ) @@ -38,10 +39,10 @@ go_test( srcs = ["pager_test.go"], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/tools/record/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/tools/record/BUILD index 0799afe7ea..fc1eaf2e67 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/tools/record/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/tools/record/BUILD @@ -14,16 +14,16 @@ go_test( ], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/strategicpatch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/tools/reference:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/strategicpatch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/tools/reference:go_default_library", ], ) @@ -35,22 +35,23 @@ go_library( "events_cache.go", "fake.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/tools/record", importpath = "k8s.io/client-go/tools/record", deps = [ + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/strategicpatch:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/tools/reference:go_default_library", + "//staging/src/k8s.io/client-go/util/flowcontrol:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/golang/groupcache/lru:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/strategicpatch:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/tools/reference:go_default_library", - "//vendor/k8s.io/client-go/util/flowcontrol:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/tools/reference/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/tools/reference/BUILD index f23e51dd0b..a16e759828 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/tools/reference/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/tools/reference/BUILD @@ -9,12 +9,13 @@ load( go_library( name = "go_default_library", srcs = ["ref.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/tools/reference", importpath = "k8s.io/client-go/tools/reference", deps = [ - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", ], ) @@ -36,8 +37,8 @@ go_test( srcs = ["ref_test.go"], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/tools/remotecommand/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/tools/remotecommand/BUILD index b30c122c34..9e0aac9877 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/tools/remotecommand/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/tools/remotecommand/BUILD @@ -14,9 +14,9 @@ go_test( ], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/httpstream:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/httpstream:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", ], ) @@ -32,17 +32,18 @@ go_library( "v3.go", "v4.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/tools/remotecommand", importpath = "k8s.io/client-go/tools/remotecommand", deps = [ + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/httpstream:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/remotecommand:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/transport/spdy:go_default_library", + "//staging/src/k8s.io/client-go/util/exec:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/httpstream:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/remotecommand:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/transport/spdy:go_default_library", - "//vendor/k8s.io/client-go/util/exec:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/tools/remotecommand/remotecommand.go b/cluster-autoscaler/vendor/k8s.io/client-go/tools/remotecommand/remotecommand.go index 6b69f366e4..d2b29861e6 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/tools/remotecommand/remotecommand.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/tools/remotecommand/remotecommand.go @@ -30,8 +30,8 @@ import ( spdy "k8s.io/client-go/transport/spdy" ) -// StreamOptions holds information pertaining to the current streaming session: supported stream -// protocols, input/output streams, if the client is requesting a TTY, and a terminal size queue to +// StreamOptions holds information pertaining to the current streaming session: +// input/output streams, if the client is requesting a TTY, and a terminal size queue to // support terminal resizing. type StreamOptions struct { Stdin io.Reader diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/transport/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/transport/BUILD index 71494544a6..05b0e604ac 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/transport/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/transport/BUILD @@ -24,10 +24,11 @@ go_library( "round_trippers.go", "transport.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/transport", importpath = "k8s.io/client-go/transport", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/transport/spdy/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/transport/spdy/BUILD index bf90084b65..ba78f316c1 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/transport/spdy/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/transport/spdy/BUILD @@ -8,11 +8,12 @@ load( go_library( name = "go_default_library", srcs = ["spdy.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/transport/spdy", importpath = "k8s.io/client-go/transport/spdy", deps = [ - "//vendor/k8s.io/apimachinery/pkg/util/httpstream:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/httpstream:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/httpstream/spdy:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/util/buffer/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/util/buffer/BUILD index d3b2652cee..d9496272c8 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/util/buffer/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/util/buffer/BUILD @@ -3,6 +3,7 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") go_library( name = "go_default_library", srcs = ["ring_growing.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/util/buffer", importpath = "k8s.io/client-go/util/buffer", visibility = ["//visibility:public"], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/util/cert/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/util/cert/BUILD index fc2a59be04..4db41c73f2 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/util/cert/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/util/cert/BUILD @@ -24,6 +24,7 @@ go_library( "io.go", "pem.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/util/cert", importpath = "k8s.io/client-go/util/cert", ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/util/cert/cert.go b/cluster-autoscaler/vendor/k8s.io/client-go/util/cert/cert.go index fb7f5facc7..0d6794bb5d 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/util/cert/cert.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/util/cert/cert.go @@ -27,9 +27,12 @@ import ( "encoding/pem" "errors" "fmt" + "io/ioutil" "math" "math/big" "net" + "path" + "strings" "time" ) @@ -136,8 +139,38 @@ func MakeEllipticPrivateKeyPEM() ([]byte, error) { // GenerateSelfSignedCertKey creates a self-signed certificate and key for the given host. // Host may be an IP or a DNS name -// You may also specify additional subject alt names (either ip or dns names) for the certificate +// You may also specify additional subject alt names (either ip or dns names) for the certificate. func GenerateSelfSignedCertKey(host string, alternateIPs []net.IP, alternateDNS []string) ([]byte, []byte, error) { + return GenerateSelfSignedCertKeyWithFixtures(host, alternateIPs, alternateDNS, "") +} + +// GenerateSelfSignedCertKeyWithFixtures creates a self-signed certificate and key for the given host. +// Host may be an IP or a DNS name. You may also specify additional subject alt names (either ip or dns names) +// for the certificate. +// +// If fixtureDirectory is non-empty, it is a directory path which can contain pre-generated certs. The format is: +// _-_-.crt +// _-_-.key +// Certs/keys not existing in that directory are created. +func GenerateSelfSignedCertKeyWithFixtures(host string, alternateIPs []net.IP, alternateDNS []string, fixtureDirectory string) ([]byte, []byte, error) { + validFrom := time.Now().Add(-time.Hour) // valid an hour earlier to avoid flakes due to clock skew + maxAge := time.Hour * 24 * 365 // one year self-signed certs + + baseName := fmt.Sprintf("%s_%s_%s", host, strings.Join(ipsToStrings(alternateIPs), "-"), strings.Join(alternateDNS, "-")) + certFixturePath := path.Join(fixtureDirectory, baseName+".crt") + keyFixturePath := path.Join(fixtureDirectory, baseName+".key") + if len(fixtureDirectory) > 0 { + cert, err := ioutil.ReadFile(certFixturePath) + if err == nil { + key, err := ioutil.ReadFile(keyFixturePath) + if err == nil { + return cert, key, nil + } + return nil, nil, fmt.Errorf("cert %s can be read, but key %s cannot: %v", certFixturePath, keyFixturePath, err) + } + maxAge = 100 * time.Hour * 24 * 365 // 100 years fixtures + } + caKey, err := rsa.GenerateKey(cryptorand.Reader, 2048) if err != nil { return nil, nil, err @@ -148,8 +181,8 @@ func GenerateSelfSignedCertKey(host string, alternateIPs []net.IP, alternateDNS Subject: pkix.Name{ CommonName: fmt.Sprintf("%s-ca@%d", host, time.Now().Unix()), }, - NotBefore: time.Now(), - NotAfter: time.Now().Add(time.Hour * 24 * 365), + NotBefore: validFrom, + NotAfter: validFrom.Add(maxAge), KeyUsage: x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature | x509.KeyUsageCertSign, BasicConstraintsValid: true, @@ -176,8 +209,8 @@ func GenerateSelfSignedCertKey(host string, alternateIPs []net.IP, alternateDNS Subject: pkix.Name{ CommonName: fmt.Sprintf("%s@%d", host, time.Now().Unix()), }, - NotBefore: time.Now(), - NotAfter: time.Now().Add(time.Hour * 24 * 365), + NotBefore: validFrom, + NotAfter: validFrom.Add(maxAge), KeyUsage: x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature, ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth}, @@ -213,6 +246,15 @@ func GenerateSelfSignedCertKey(host string, alternateIPs []net.IP, alternateDNS return nil, nil, err } + if len(fixtureDirectory) > 0 { + if err := ioutil.WriteFile(certFixturePath, certBuffer.Bytes(), 0644); err != nil { + return nil, nil, fmt.Errorf("failed to write cert fixture to %s: %v", certFixturePath, err) + } + if err := ioutil.WriteFile(keyFixturePath, keyBuffer.Bytes(), 0644); err != nil { + return nil, nil, fmt.Errorf("failed to write key fixture to %s: %v", certFixturePath, err) + } + } + return certBuffer.Bytes(), keyBuffer.Bytes(), nil } @@ -243,3 +285,11 @@ func FormatCert(c *x509.Certificate) string { } return res } + +func ipsToStrings(ips []net.IP) []string { + ss := make([]string, 0, len(ips)) + for _, ip := range ips { + ss = append(ss, ip.String()) + } + return ss +} diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/util/certificate/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/util/certificate/BUILD index dfc5c39335..51e48a596e 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/util/certificate/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/util/certificate/BUILD @@ -17,14 +17,14 @@ go_test( embed = [":go_default_library"], tags = ["automanaged"], deps = [ - "//vendor/k8s.io/api/certificates/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/util/cert:go_default_library", + "//staging/src/k8s.io/api/certificates/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/certificates/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/util/cert:go_default_library", ], ) @@ -34,17 +34,19 @@ go_library( "certificate_manager.go", "certificate_store.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/util/certificate", importpath = "k8s.io/client-go/util/certificate", tags = ["automanaged"], deps = [ + "//staging/src/k8s.io/api/certificates/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/certificates/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/util/cert:go_default_library", + "//staging/src/k8s.io/client-go/util/certificate/csr:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/certificates/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/util/cert:go_default_library", - "//vendor/k8s.io/client-go/util/certificate/csr:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/util/certificate/certificate_manager.go b/cluster-autoscaler/vendor/k8s.io/client-go/util/certificate/certificate_manager.go index e189c84799..7b07b26a3e 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/util/certificate/certificate_manager.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/util/certificate/certificate_manager.go @@ -24,6 +24,7 @@ import ( "crypto/x509" "encoding/pem" "fmt" + "reflect" "sync" "time" @@ -32,6 +33,7 @@ import ( certificates "k8s.io/api/certificates/v1beta1" "k8s.io/apimachinery/pkg/api/errors" utilruntime "k8s.io/apimachinery/pkg/util/runtime" + "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/wait" certificatesclient "k8s.io/client-go/kubernetes/typed/certificates/v1beta1" "k8s.io/client-go/util/cert" @@ -75,6 +77,13 @@ type Config struct { // part of rotation. It follows the same rules as the template parameter of // crypto.x509.CreateCertificateRequest in the Go standard libraries. Template *x509.CertificateRequest + // GetTemplate returns the CertificateRequest that will be used as a template for + // generating certificate signing requests for all new keys generated as + // part of rotation. It follows the same rules as the template parameter of + // crypto.x509.CreateCertificateRequest in the Go standard libraries. + // If no template is available, nil may be returned, and no certificate will be requested. + // If specified, takes precedence over Template. + GetTemplate func() *x509.CertificateRequest // Usages is the types of usages that certificates generated by the manager // can be used for. Usages []certificates.KeyUsage @@ -136,7 +145,10 @@ func (e *NoCertKeyError) Error() string { return string(*e) } type manager struct { certSigningRequestClient certificatesclient.CertificateSigningRequestInterface - template *x509.CertificateRequest + getTemplate func() *x509.CertificateRequest + lastRequestLock sync.Mutex + lastRequest *x509.CertificateRequest + dynamicTemplate bool usages []certificates.KeyUsage certStore Store certAccessLock sync.RWMutex @@ -158,9 +170,15 @@ func NewManager(config *Config) (Manager, error) { return nil, err } + getTemplate := config.GetTemplate + if getTemplate == nil { + getTemplate = func() *x509.CertificateRequest { return config.Template } + } + m := manager{ certSigningRequestClient: config.CertificateSigningRequestClient, - template: config.Template, + getTemplate: getTemplate, + dynamicTemplate: config.GetTemplate != nil, usages: config.Usages, certStore: config.CertificateStore, cert: cert, @@ -215,12 +233,32 @@ func (m *manager) Start() { glog.V(2).Infof("Certificate rotation is enabled.") + templateChanged := make(chan struct{}) go wait.Forever(func() { deadline := m.nextRotationDeadline() if sleepInterval := deadline.Sub(time.Now()); sleepInterval > 0 { glog.V(2).Infof("Waiting %v for next certificate rotation", sleepInterval) - time.Sleep(sleepInterval) + + timer := time.NewTimer(sleepInterval) + defer timer.Stop() + + select { + case <-timer.C: + // unblock when deadline expires + case <-templateChanged: + if reflect.DeepEqual(m.getLastRequest(), m.getTemplate()) { + // if the template now matches what we last requested, restart the rotation deadline loop + return + } + glog.V(2).Infof("Certificate template changed, rotating") + } } + + // Don't enter rotateCerts and trigger backoff if we don't even have a template to request yet + if m.getTemplate() == nil { + return + } + backoff := wait.Backoff{ Duration: 2 * time.Second, Factor: 2, @@ -231,7 +269,18 @@ func (m *manager) Start() { utilruntime.HandleError(fmt.Errorf("Reached backoff limit, still unable to rotate certs: %v", err)) wait.PollInfinite(32*time.Second, m.rotateCerts) } - }, 0) + }, time.Second) + + if m.dynamicTemplate { + go wait.Forever(func() { + // check if the current template matches what we last requested + if !reflect.DeepEqual(m.getLastRequest(), m.getTemplate()) { + // if the template is different, queue up an interrupt of the rotation deadline loop. + // if we've requested a CSR that matches the new template by the time the interrupt is handled, the interrupt is disregarded. + templateChanged <- struct{}{} + } + }, time.Second) + } } func getCurrentCertificateOrBootstrap( @@ -286,7 +335,7 @@ func getCurrentCertificateOrBootstrap( func (m *manager) rotateCerts() (bool, error) { glog.V(2).Infof("Rotating certificates") - csrPEM, keyPEM, privateKey, err := m.generateCSR() + template, csrPEM, keyPEM, privateKey, err := m.generateCSR() if err != nil { utilruntime.HandleError(fmt.Errorf("Unable to generate a certificate signing request: %v", err)) return false, nil @@ -300,6 +349,9 @@ func (m *manager) rotateCerts() (bool, error) { return false, m.updateServerError(err) } + // Once we've successfully submitted a CSR for this template, record that we did so + m.setLastRequest(template) + // Wait for the certificate to be signed. Instead of one long watch, we retry with slightly longer // intervals each time in order to tolerate failures from the server AND to preserve the liveliness // of the cert manager loop. This creates slightly more traffic against the API server in return @@ -353,6 +405,36 @@ func (m *manager) nextRotationDeadline() time.Time { return time.Now() } + // Ensure the currently held certificate satisfies the requested subject CN and SANs + if template := m.getTemplate(); template != nil { + if template.Subject.CommonName != m.cert.Leaf.Subject.CommonName { + glog.V(2).Infof("Current certificate CN (%s) does not match requested CN (%s), rotating now", m.cert.Leaf.Subject.CommonName, template.Subject.CommonName) + return time.Now() + } + + currentDNSNames := sets.NewString(m.cert.Leaf.DNSNames...) + desiredDNSNames := sets.NewString(template.DNSNames...) + missingDNSNames := desiredDNSNames.Difference(currentDNSNames) + if len(missingDNSNames) > 0 { + glog.V(2).Infof("Current certificate is missing requested DNS names %v, rotating now", missingDNSNames.List()) + return time.Now() + } + + currentIPs := sets.NewString() + for _, ip := range m.cert.Leaf.IPAddresses { + currentIPs.Insert(ip.String()) + } + desiredIPs := sets.NewString() + for _, ip := range template.IPAddresses { + desiredIPs.Insert(ip.String()) + } + missingIPs := desiredIPs.Difference(currentIPs) + if len(missingIPs) > 0 { + glog.V(2).Infof("Current certificate is missing requested IP addresses %v, rotating now", missingIPs.List()) + return time.Now() + } + } + notAfter := m.cert.Leaf.NotAfter totalDuration := float64(notAfter.Sub(m.cert.Leaf.NotBefore)) deadline := m.cert.Leaf.NotBefore.Add(jitteryDuration(totalDuration)) @@ -408,22 +490,38 @@ func (m *manager) updateServerError(err error) error { return nil } -func (m *manager) generateCSR() (csrPEM []byte, keyPEM []byte, key interface{}, err error) { +func (m *manager) generateCSR() (template *x509.CertificateRequest, csrPEM []byte, keyPEM []byte, key interface{}, err error) { // Generate a new private key. privateKey, err := ecdsa.GenerateKey(elliptic.P256(), cryptorand.Reader) if err != nil { - return nil, nil, nil, fmt.Errorf("unable to generate a new private key: %v", err) + return nil, nil, nil, nil, fmt.Errorf("unable to generate a new private key: %v", err) } der, err := x509.MarshalECPrivateKey(privateKey) if err != nil { - return nil, nil, nil, fmt.Errorf("unable to marshal the new key to DER: %v", err) + return nil, nil, nil, nil, fmt.Errorf("unable to marshal the new key to DER: %v", err) } keyPEM = pem.EncodeToMemory(&pem.Block{Type: cert.ECPrivateKeyBlockType, Bytes: der}) - csrPEM, err = cert.MakeCSRFromTemplate(privateKey, m.template) - if err != nil { - return nil, nil, nil, fmt.Errorf("unable to create a csr from the private key: %v", err) + template = m.getTemplate() + if template == nil { + return nil, nil, nil, nil, fmt.Errorf("unable to create a csr, no template available") } - return csrPEM, keyPEM, privateKey, nil + csrPEM, err = cert.MakeCSRFromTemplate(privateKey, template) + if err != nil { + return nil, nil, nil, nil, fmt.Errorf("unable to create a csr from the private key: %v", err) + } + return template, csrPEM, keyPEM, privateKey, nil +} + +func (m *manager) getLastRequest() *x509.CertificateRequest { + m.lastRequestLock.Lock() + defer m.lastRequestLock.Unlock() + return m.lastRequest +} + +func (m *manager) setLastRequest(r *x509.CertificateRequest) { + m.lastRequestLock.Lock() + defer m.lastRequestLock.Unlock() + m.lastRequest = r } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/util/certificate/csr/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/util/certificate/csr/BUILD index c1bcd9578e..72dee726fa 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/util/certificate/csr/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/util/certificate/csr/BUILD @@ -9,20 +9,21 @@ load( go_library( name = "go_default_library", srcs = ["csr.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/util/certificate/csr", importpath = "k8s.io/client-go/util/certificate/csr", deps = [ + "//staging/src/k8s.io/api/certificates/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/certificates/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/client-go/util/cert:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/certificates/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", - "//vendor/k8s.io/client-go/util/cert:go_default_library", ], ) @@ -44,10 +45,10 @@ go_test( srcs = ["csr_test.go"], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/api/certificates/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/util/cert:go_default_library", + "//staging/src/k8s.io/api/certificates/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/certificates/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/util/cert:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/util/connrotation/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/util/connrotation/BUILD index 5744cfd1e5..caf852a3b5 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/util/connrotation/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/util/connrotation/BUILD @@ -3,6 +3,7 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") go_library( name = "go_default_library", srcs = ["connrotation.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/util/connrotation", importpath = "k8s.io/client-go/util/connrotation", visibility = ["//visibility:public"], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/util/exec/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/util/exec/BUILD index 57b58e5cc5..30f4af1075 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/util/exec/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/util/exec/BUILD @@ -8,6 +8,7 @@ load( go_library( name = "go_default_library", srcs = ["exec.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/util/exec", importpath = "k8s.io/client-go/util/exec", ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/util/flowcontrol/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/util/flowcontrol/BUILD index 819bb7ef36..a67ac494f0 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/util/flowcontrol/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/util/flowcontrol/BUILD @@ -13,7 +13,7 @@ go_test( "throttle_test.go", ], embed = [":go_default_library"], - deps = ["//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library"], + deps = ["//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library"], ) go_library( @@ -22,11 +22,12 @@ go_library( "backoff.go", "throttle.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/util/flowcontrol", importpath = "k8s.io/client-go/util/flowcontrol", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//staging/src/k8s.io/client-go/util/integer:go_default_library", "//vendor/golang.org/x/time/rate:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", - "//vendor/k8s.io/client-go/util/integer:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/util/homedir/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/util/homedir/BUILD index 21a1952cf1..ac033e8322 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/util/homedir/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/util/homedir/BUILD @@ -8,6 +8,7 @@ load( go_library( name = "go_default_library", srcs = ["homedir.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/util/homedir", importpath = "k8s.io/client-go/util/homedir", ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/util/integer/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/util/integer/BUILD index 8a2105e468..338cd1b819 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/util/integer/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/util/integer/BUILD @@ -15,6 +15,7 @@ go_test( go_library( name = "go_default_library", srcs = ["integer.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/util/integer", importpath = "k8s.io/client-go/util/integer", ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/util/jsonpath/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/util/jsonpath/BUILD index ab43accd60..ec1903ad57 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/util/jsonpath/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/util/jsonpath/BUILD @@ -23,8 +23,9 @@ go_library( "node.go", "parser.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/util/jsonpath", importpath = "k8s.io/client-go/util/jsonpath", - deps = ["//vendor/k8s.io/client-go/third_party/forked/golang/template:go_default_library"], + deps = ["//staging/src/k8s.io/client-go/third_party/forked/golang/template:go_default_library"], ) filegroup( diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/util/jsonpath/node.go b/cluster-autoscaler/vendor/k8s.io/client-go/util/jsonpath/node.go index bc763357cf..2f612b188f 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/util/jsonpath/node.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/util/jsonpath/node.go @@ -80,7 +80,7 @@ func (l *ListNode) append(n Node) { } func (l *ListNode) String() string { - return fmt.Sprintf("%s", l.Type()) + return l.Type().String() } // TextNode holds plain text. @@ -210,7 +210,7 @@ func newWildcard() *WildcardNode { } func (i *WildcardNode) String() string { - return fmt.Sprintf("%s", i.Type()) + return i.Type().String() } // RecursiveNode means a recursive descent operator @@ -223,7 +223,7 @@ func newRecursive() *RecursiveNode { } func (r *RecursiveNode) String() string { - return fmt.Sprintf("%s", r.Type()) + return r.Type().String() } // UnionNode is union of ListNode @@ -237,7 +237,7 @@ func newUnion(nodes []*ListNode) *UnionNode { } func (u *UnionNode) String() string { - return fmt.Sprintf("%s", u.Type()) + return u.Type().String() } // BoolNode holds bool value diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/util/jsonpath/parser.go b/cluster-autoscaler/vendor/k8s.io/client-go/util/jsonpath/parser.go index ef0f9213a4..99b45849c9 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/util/jsonpath/parser.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/util/jsonpath/parser.go @@ -94,7 +94,7 @@ func (p *Parser) consumeText() string { // next returns the next rune in the input. func (p *Parser) next() rune { - if int(p.pos) >= len(p.input) { + if p.pos >= len(p.input) { p.width = 0 return eof } @@ -266,7 +266,7 @@ Loop: } } text := p.consumeText() - text = string(text[1 : len(text)-1]) + text = text[1 : len(text)-1] if text == "*" { text = ":" } @@ -373,7 +373,7 @@ Loop: } reg := regexp.MustCompile(`^([^!<>=]+)([!<>=]+)(.+?)$`) text := p.consumeText() - text = string(text[:len(text)-2]) + text = text[:len(text)-2] value := reg.FindStringSubmatch(text) if value == nil { parser, err := parseAction("text", text) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/util/retry/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/util/retry/BUILD index d745813103..601c1393da 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/util/retry/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/util/retry/BUILD @@ -9,10 +9,11 @@ load( go_library( name = "go_default_library", srcs = ["util.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/util/retry", importpath = "k8s.io/client-go/util/retry", deps = [ - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", ], ) @@ -21,9 +22,9 @@ go_test( srcs = ["util_test.go"], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/util/workqueue/BUILD b/cluster-autoscaler/vendor/k8s.io/client-go/util/workqueue/BUILD index 7fb9fba481..c139977c1c 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/util/workqueue/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/client-go/util/workqueue/BUILD @@ -11,12 +11,13 @@ go_test( srcs = [ "default_rate_limiters_test.go", "delaying_queue_test.go", + "queue_test.go", "rate_limitting_queue_test.go", ], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", ], ) @@ -31,20 +32,15 @@ go_library( "queue.go", "rate_limitting_queue.go", ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/util/workqueue", importpath = "k8s.io/client-go/util/workqueue", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", "//vendor/golang.org/x/time/rate:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", ], ) -go_test( - name = "go_default_xtest", - srcs = ["queue_test.go"], - deps = ["//vendor/k8s.io/client-go/util/workqueue:go_default_library"], -) - filegroup( name = "package-srcs", srcs = glob(["**"]), diff --git a/cluster-autoscaler/vendor/k8s.io/kube-openapi/pkg/builder/openapi.go b/cluster-autoscaler/vendor/k8s.io/kube-openapi/pkg/builder/openapi.go index e4fe7c62ed..f48700d545 100644 --- a/cluster-autoscaler/vendor/k8s.io/kube-openapi/pkg/builder/openapi.go +++ b/cluster-autoscaler/vendor/k8s.io/kube-openapi/pkg/builder/openapi.go @@ -58,7 +58,7 @@ func BuildOpenAPIDefinitionsForResource(model interface{}, config *common.Config o := newOpenAPI(config) // We can discard the return value of toSchema because all we care about is the side effect of calling it. // All the models created for this resource get added to o.swagger.Definitions - _, err := o.toSchema(model) + _, err := o.toSchema(getCanonicalTypeName(model)) if err != nil { return nil, err } @@ -69,6 +69,21 @@ func BuildOpenAPIDefinitionsForResource(model interface{}, config *common.Config return &swagger.Definitions, nil } +// BuildOpenAPIDefinitionsForResources returns the OpenAPI spec which includes the definitions for the +// passed type names. +func BuildOpenAPIDefinitionsForResources(config *common.Config, names ...string) (*spec.Swagger, error) { + o := newOpenAPI(config) + // We can discard the return value of toSchema because all we care about is the side effect of calling it. + // All the models created for this resource get added to o.swagger.Definitions + for _, name := range names { + _, err := o.toSchema(name) + if err != nil { + return nil, err + } + } + return o.finalizeSwagger() +} + // newOpenAPI sets up the openAPI object so we can build the spec. func newOpenAPI(config *common.Config) openAPI { o := openAPI{ @@ -120,7 +135,11 @@ func (o *openAPI) finalizeSwagger() (*spec.Swagger, error) { return o.swagger, nil } -func getCanonicalizeTypeName(t reflect.Type) string { +func getCanonicalTypeName(model interface{}) string { + t := reflect.TypeOf(model) + if t.Kind() == reflect.Ptr { + t = t.Elem() + } if t.PkgPath() == "" { return t.Name() } @@ -165,12 +184,7 @@ func (o *openAPI) buildDefinitionRecursively(name string) error { // buildDefinitionForType build a definition for a given type and return a referable name to its definition. // This is the main function that keep track of definitions used in this spec and is depend on code generated // by k8s.io/kubernetes/cmd/libs/go2idl/openapi-gen. -func (o *openAPI) buildDefinitionForType(sample interface{}) (string, error) { - t := reflect.TypeOf(sample) - if t.Kind() == reflect.Ptr { - t = t.Elem() - } - name := getCanonicalizeTypeName(t) +func (o *openAPI) buildDefinitionForType(name string) (string, error) { if err := o.buildDefinitionRecursively(name); err != nil { return "", err } @@ -321,7 +335,7 @@ func (o *openAPI) buildOperations(route restful.Route, inPathCommonParamsMap map } func (o *openAPI) buildResponse(model interface{}, description string) (spec.Response, error) { - schema, err := o.toSchema(model) + schema, err := o.toSchema(getCanonicalTypeName(model)) if err != nil { return spec.Response{}, err } @@ -366,8 +380,8 @@ func (o *openAPI) findCommonParameters(routes []restful.Route) (map[interface{}] return commonParamsMap, nil } -func (o *openAPI) toSchema(model interface{}) (_ *spec.Schema, err error) { - if openAPIType, openAPIFormat := common.GetOpenAPITypeFormat(getCanonicalizeTypeName(reflect.TypeOf(model))); openAPIType != "" { +func (o *openAPI) toSchema(name string) (_ *spec.Schema, err error) { + if openAPIType, openAPIFormat := common.GetOpenAPITypeFormat(name); openAPIType != "" { return &spec.Schema{ SchemaProps: spec.SchemaProps{ Type: []string{openAPIType}, @@ -375,7 +389,7 @@ func (o *openAPI) toSchema(model interface{}) (_ *spec.Schema, err error) { }, }, nil } else { - ref, err := o.buildDefinitionForType(model) + ref, err := o.buildDefinitionForType(name) if err != nil { return nil, err } @@ -399,7 +413,7 @@ func (o *openAPI) buildParameter(restParam restful.ParameterData, bodySample int case restful.BodyParameterKind: if bodySample != nil { ret.In = "body" - ret.Schema, err = o.toSchema(bodySample) + ret.Schema, err = o.toSchema(getCanonicalTypeName(bodySample)) return ret, err } else { // There is not enough information in the body parameter to build the definition. diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kube-proxy/app/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kube-proxy/app/BUILD index 295102156d..0a16cd87ee 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kube-proxy/app/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kube-proxy/app/BUILD @@ -10,54 +10,12 @@ go_library( name = "go_default_library", srcs = [ "conntrack.go", + "init_others.go", + "init_windows.go", "server.go", - ] + select({ - "@io_bazel_rules_go//go/platform:android": [ - "init_others.go", - "server_others.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "init_others.go", - "server_others.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "init_others.go", - "server_others.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "init_others.go", - "server_others.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "init_others.go", - "server_others.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "init_others.go", - "server_others.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "init_others.go", - "server_others.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "init_others.go", - "server_others.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "init_others.go", - "server_others.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "init_others.go", - "server_others.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "init_windows.go", - "server_windows.go", - ], - "//conditions:default": [], - }), + "server_others.go", + "server_windows.go", + ], importpath = "k8s.io/kubernetes/cmd/kube-proxy/app", deps = [ "//pkg/apis/componentconfig:go_default_library", @@ -89,97 +47,97 @@ go_library( "//pkg/util/sysctl:go_default_library", "//pkg/version:go_default_library", "//pkg/version/verflag:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer/json:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/server/healthz:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/server/mux:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/server/routes:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/flag:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/tools/clientcmd:go_default_library", + "//staging/src/k8s.io/client-go/tools/clientcmd/api:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/prometheus/client_golang/prometheus:go_default_library", "//vendor/github.com/spf13/cobra:go_default_library", "//vendor/github.com/spf13/pflag:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/json:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/apiserver/pkg/server/healthz:go_default_library", - "//vendor/k8s.io/apiserver/pkg/server/mux:go_default_library", - "//vendor/k8s.io/apiserver/pkg/server/routes:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/flag:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/tools/clientcmd:go_default_library", - "//vendor/k8s.io/client-go/tools/clientcmd/api:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", "//vendor/k8s.io/utils/exec:go_default_library", ] + select({ "@io_bazel_rules_go//go/platform:android": [ "//pkg/proxy/metrics:go_default_library", "//pkg/util/dbus:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", ], "@io_bazel_rules_go//go/platform:darwin": [ "//pkg/proxy/metrics:go_default_library", "//pkg/util/dbus:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", ], "@io_bazel_rules_go//go/platform:dragonfly": [ "//pkg/proxy/metrics:go_default_library", "//pkg/util/dbus:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", ], "@io_bazel_rules_go//go/platform:freebsd": [ "//pkg/proxy/metrics:go_default_library", "//pkg/util/dbus:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", ], "@io_bazel_rules_go//go/platform:linux": [ "//pkg/proxy/metrics:go_default_library", "//pkg/util/dbus:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", ], "@io_bazel_rules_go//go/platform:nacl": [ "//pkg/proxy/metrics:go_default_library", "//pkg/util/dbus:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", ], "@io_bazel_rules_go//go/platform:netbsd": [ "//pkg/proxy/metrics:go_default_library", "//pkg/util/dbus:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", ], "@io_bazel_rules_go//go/platform:openbsd": [ "//pkg/proxy/metrics:go_default_library", "//pkg/util/dbus:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", ], "@io_bazel_rules_go//go/platform:plan9": [ "//pkg/proxy/metrics:go_default_library", "//pkg/util/dbus:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", ], "@io_bazel_rules_go//go/platform:solaris": [ "//pkg/proxy/metrics:go_default_library", "//pkg/util/dbus:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", ], "@io_bazel_rules_go//go/platform:windows": [ "//pkg/proxy/winkernel:go_default_library", "//pkg/proxy/winuserspace:go_default_library", "//pkg/util/netsh:go_default_library", "//pkg/windows/service:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", ], "//conditions:default": [], }), @@ -188,49 +146,18 @@ go_library( go_test( name = "go_default_test", srcs = [ + "server_others_test.go", "server_test.go", - ] + select({ - "@io_bazel_rules_go//go/platform:android": [ - "server_others_test.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "server_others_test.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "server_others_test.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "server_others_test.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "server_others_test.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "server_others_test.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "server_others_test.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "server_others_test.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "server_others_test.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "server_others_test.go", - ], - "//conditions:default": [], - }), + ], embed = [":go_default_library"], deps = [ "//pkg/apis/core:go_default_library", "//pkg/proxy/apis/kubeproxyconfig:go_default_library", "//pkg/util/configz:go_default_library", "//pkg/util/pointer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", ] + select({ "@io_bazel_rules_go//go/platform:android": [ "//pkg/proxy/ipvs:go_default_library", diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kube-proxy/app/server_others.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kube-proxy/app/server_others.go index 754d654f17..417cc61cec 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kube-proxy/app/server_others.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kube-proxy/app/server_others.go @@ -92,7 +92,8 @@ func newProxyServer( iptInterface = utiliptables.New(execer, dbus, protocol) kernelHandler = ipvs.NewLinuxKernelHandler() ipsetInterface = utilipset.New(execer) - if canUse, _ := ipvs.CanUseIPVSProxier(kernelHandler, ipsetInterface); canUse { + canUseIPVS, _ := ipvs.CanUseIPVSProxier(kernelHandler, ipsetInterface) + if canUseIPVS { ipvsInterface = utilipvs.New(execer) } @@ -136,12 +137,12 @@ func newProxyServer( var endpointsEventHandler proxyconfig.EndpointsHandler proxyMode := getProxyMode(string(config.Mode), iptInterface, kernelHandler, ipsetInterface, iptables.LinuxKernelCompatTester{}) + nodeIP := net.ParseIP(config.BindAddress) + if nodeIP.IsUnspecified() { + nodeIP = getNodeIP(client, hostname) + } if proxyMode == proxyModeIPTables { glog.V(0).Info("Using iptables Proxier.") - nodeIP := net.ParseIP(config.BindAddress) - if nodeIP.Equal(net.IPv4zero) || nodeIP.Equal(net.IPv6zero) { - nodeIP = getNodeIP(client, hostname) - } if config.IPTables.MasqueradeBit == nil { // MasqueradeBit must be specified or defaulted. return nil, fmt.Errorf("unable to read IPTables MasqueradeBit from config") @@ -178,7 +179,9 @@ func newProxyServer( // Besides, ipvs proxier will create some ipvs rules as well. Because there is no way to tell if a given // ipvs rule is created by IPVS proxier or not. Users should explicitly specify `--clean-ipvs=true` to flush // all ipvs rules when kube-proxy start up. Users do this operation should be with caution. - ipvs.CleanupLeftovers(ipvsInterface, iptInterface, ipsetInterface, cleanupIPVS) + if canUseIPVS { + ipvs.CleanupLeftovers(ipvsInterface, iptInterface, ipsetInterface, cleanupIPVS) + } } else if proxyMode == proxyModeIPVS { glog.V(0).Info("Using ipvs Proxier.") proxierIPVS, err := ipvs.NewProxier( @@ -194,7 +197,7 @@ func newProxyServer( int(*config.IPTables.MasqueradeBit), config.ClusterCIDR, hostname, - getNodeIP(client, hostname), + nodeIP, recorder, healthzServer, config.IPVS.Scheduler, @@ -245,7 +248,9 @@ func newProxyServer( // Besides, ipvs proxier will create some ipvs rules as well. Because there is no way to tell if a given // ipvs rule is created by IPVS proxier or not. Users should explicitly specify `--clean-ipvs=true` to flush // all ipvs rules when kube-proxy start up. Users do this operation should be with caution. - ipvs.CleanupLeftovers(ipvsInterface, iptInterface, ipsetInterface, cleanupIPVS) + if canUseIPVS { + ipvs.CleanupLeftovers(ipvsInterface, iptInterface, ipsetInterface, cleanupIPVS) + } } iptInterface.AddReloadFunc(proxier.Sync) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kubelet/app/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kubelet/app/BUILD index b2f3efbc79..c0857155d3 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kubelet/app/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kubelet/app/BUILD @@ -16,55 +16,13 @@ go_library( name = "go_default_library", srcs = [ "auth.go", + "init_others.go", + "init_windows.go", "plugins.go", "server.go", - ] + select({ - "@io_bazel_rules_go//go/platform:android": [ - "init_others.go", - "server_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "init_others.go", - "server_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "init_others.go", - "server_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "init_others.go", - "server_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "init_others.go", - "server_linux.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "init_others.go", - "server_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "init_others.go", - "server_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "init_others.go", - "server_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "init_others.go", - "server_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "init_others.go", - "server_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "init_windows.go", - "server_unsupported.go", - ], - "//conditions:default": [], - }), + "server_linux.go", + "server_unsupported.go", + ], importpath = "k8s.io/kubernetes/cmd/kubelet/app", deps = [ "//cmd/kubelet/app/options:go_default_library", @@ -92,9 +50,6 @@ go_library( "//pkg/kubelet/config:go_default_library", "//pkg/kubelet/container:go_default_library", "//pkg/kubelet/dockershim:go_default_library", - "//pkg/kubelet/dockershim/network:go_default_library", - "//pkg/kubelet/dockershim/network/cni:go_default_library", - "//pkg/kubelet/dockershim/network/kubenet:go_default_library", "//pkg/kubelet/dockershim/remote:go_default_library", "//pkg/kubelet/eviction:go_default_library", "//pkg/kubelet/eviction/api:go_default_library", @@ -107,7 +62,6 @@ go_library( "//pkg/util/filesystem:go_default_library", "//pkg/util/flag:go_default_library", "//pkg/util/flock:go_default_library", - "//pkg/util/io:go_default_library", "//pkg/util/mount:go_default_library", "//pkg/util/node:go_default_library", "//pkg/util/nsenter:go_default_library", @@ -144,33 +98,33 @@ go_library( "//pkg/volume/secret:go_default_library", "//pkg/volume/storageos:go_default_library", "//pkg/volume/vsphere_volume:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/authenticatorfactory:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authorization/authorizer:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authorization/authorizerfactory:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/server/healthz:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/flag:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/authentication/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/authorization/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/tools/clientcmd:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", + "//staging/src/k8s.io/client-go/util/cert:go_default_library", + "//staging/src/k8s.io/client-go/util/certificate:go_default_library", "//vendor/github.com/coreos/go-systemd/daemon:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/spf13/cobra:go_default_library", "//vendor/github.com/spf13/pflag:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/authenticatorfactory:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authorization/authorizer:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authorization/authorizerfactory:go_default_library", - "//vendor/k8s.io/apiserver/pkg/server/healthz:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/flag:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/tools/clientcmd:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", - "//vendor/k8s.io/client-go/util/cert:go_default_library", - "//vendor/k8s.io/client-go/util/certificate:go_default_library", "//vendor/k8s.io/utils/exec:go_default_library", ] + select({ "@io_bazel_rules_go//go/platform:linux": [ diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kubelet/app/options/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kubelet/app/options/BUILD index db6e6a9a86..c941a0e49b 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kubelet/app/options/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kubelet/app/options/BUILD @@ -11,54 +11,12 @@ go_library( srcs = [ "container_runtime.go", "globalflags.go", + "globalflags_linux.go", + "globalflags_other.go", "options.go", - ] + select({ - "@io_bazel_rules_go//go/platform:android": [ - "globalflags_other.go", - "osflags_others.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "globalflags_other.go", - "osflags_others.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "globalflags_other.go", - "osflags_others.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "globalflags_other.go", - "osflags_others.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "globalflags_linux.go", - "osflags_others.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "globalflags_other.go", - "osflags_others.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "globalflags_other.go", - "osflags_others.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "globalflags_other.go", - "osflags_others.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "globalflags_other.go", - "osflags_others.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "globalflags_other.go", - "osflags_others.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "globalflags_other.go", - "osflags_windows.go", - ], - "//conditions:default": [], - }), + "osflags_others.go", + "osflags_windows.go", + ], importpath = "k8s.io/kubernetes/cmd/kubelet/app/options", deps = [ "//pkg/apis/componentconfig:go_default_library", @@ -75,13 +33,12 @@ go_library( "//pkg/master/ports:go_default_library", "//pkg/util/taints:go_default_library", "//pkg/version/verflag:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/flag:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/logs:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/spf13/pflag:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/flag:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/logs:go_default_library", ] + select({ "@io_bazel_rules_go//go/platform:linux": [ "//vendor/github.com/google/cadvisor/container/common:go_default_library", @@ -114,8 +71,8 @@ go_test( srcs = ["options_test.go"], embed = [":go_default_library"], deps = [ + "//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/flag:go_default_library", "//vendor/github.com/spf13/pflag:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/flag:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kubelet/app/options/container_runtime.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kubelet/app/options/container_runtime.go index d07cfb699f..693994cc46 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kubelet/app/options/container_runtime.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kubelet/app/options/container_runtime.go @@ -53,5 +53,9 @@ func NewContainerRuntimeOptions() *config.ContainerRuntimeOptions { PodSandboxImage: defaultPodSandboxImage, ImagePullProgressDeadline: metav1.Duration{Duration: 1 * time.Minute}, ExperimentalDockershim: false, + + //Alpha feature + CNIBinDir: "/opt/cni/bin", + CNIConfDir: "/etc/cni/net.d", } } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kubelet/app/options/options.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kubelet/app/options/options.go index 048637bdac..bdf81990c6 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kubelet/app/options/options.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kubelet/app/options/options.go @@ -27,7 +27,6 @@ import ( "github.com/spf13/pflag" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - utilvalidation "k8s.io/apimachinery/pkg/util/validation" utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/apiserver/pkg/util/flag" "k8s.io/kubernetes/pkg/apis/componentconfig" @@ -121,9 +120,6 @@ type KubeletFlags struct { // is true and upon the initial registration of the node. RegisterWithTaints []core.Taint - // cAdvisorPort is the port of the localhost cAdvisor endpoint (set to 0 to disable) - CAdvisorPort int32 - // WindowsService should be set to true if kubelet is running as a service on Windows. // Its corresponding flag only gets registered in Windows builds. WindowsService bool @@ -239,8 +235,6 @@ func NewKubeletFlags() *KubeletFlags { HostNetworkSources: []string{kubetypes.AllSource}, HostPIDSources: []string{kubetypes.AllSource}, HostIPCSources: []string{kubetypes.AllSource}, - // TODO(#56523:v1.12.0): Remove --cadvisor-port, it has been deprecated since v1.10 - CAdvisorPort: 0, // TODO(#58010:v1.13.0): Remove --allow-privileged, it is deprecated AllowPrivileged: true, // prior to the introduction of this flag, there was a hardcoded cap of 50 images @@ -253,9 +247,6 @@ func ValidateKubeletFlags(f *KubeletFlags) error { if f.DynamicConfigDir.Provided() && !utilfeature.DefaultFeatureGate.Enabled(features.DynamicKubeletConfig) { return fmt.Errorf("the DynamicKubeletConfig feature gate must be enabled in order to use the --dynamic-config-dir flag") } - if f.CAdvisorPort != 0 && utilvalidation.IsValidPortNum(int(f.CAdvisorPort)) != nil { - return fmt.Errorf("invalid configuration: CAdvisorPort (--cadvisor-port) %v must be between 0 and 65535, inclusive", f.CAdvisorPort) - } if f.NodeStatusMaxImages < -1 { return fmt.Errorf("invalid configuration: NodeStatusMaxImages (--node-status-max-images) must be -1 or greater") } @@ -395,14 +386,12 @@ func (f *KubeletFlags) AddFlags(mainfs *pflag.FlagSet) { fs.StringVar(&f.LockFilePath, "lock-file", f.LockFilePath, " The path to file for kubelet to use as a lock file.") fs.BoolVar(&f.ExitOnLockContention, "exit-on-lock-contention", f.ExitOnLockContention, "Whether kubelet should exit upon lock-file contention.") fs.StringVar(&f.SeccompProfileRoot, "seccomp-profile-root", f.SeccompProfileRoot, " Directory path for seccomp profiles.") - fs.StringVar(&f.BootstrapCheckpointPath, "bootstrap-checkpoint-path", f.BootstrapCheckpointPath, " Path to to the directory where the checkpoints are stored") + fs.StringVar(&f.BootstrapCheckpointPath, "bootstrap-checkpoint-path", f.BootstrapCheckpointPath, " Path to the directory where the checkpoints are stored") fs.Int32Var(&f.NodeStatusMaxImages, "node-status-max-images", f.NodeStatusMaxImages, " The maximum number of images to report in Node.Status.Images. If -1 is specified, no cap will be applied. Default: 50") // DEPRECATED FLAGS fs.StringVar(&f.BootstrapKubeconfig, "experimental-bootstrap-kubeconfig", f.BootstrapKubeconfig, "") fs.MarkDeprecated("experimental-bootstrap-kubeconfig", "Use --bootstrap-kubeconfig") - fs.Int32Var(&f.CAdvisorPort, "cadvisor-port", f.CAdvisorPort, "The port of the localhost cAdvisor endpoint (set to 0 to disable)") - fs.MarkDeprecated("cadvisor-port", "The default will change to 0 (disabled) in 1.11, and the cadvisor port will be removed entirely in 1.12") fs.DurationVar(&f.MinimumGCAge.Duration, "minimum-container-ttl-duration", f.MinimumGCAge.Duration, "Minimum age for a finished container before it is garbage collected. Examples: '300ms', '10s' or '2h45m'") fs.MarkDeprecated("minimum-container-ttl-duration", "Use --eviction-hard or --eviction-soft instead. Will be removed in a future version.") fs.Int32Var(&f.MaxPerPodContainerCount, "maximum-dead-containers-per-container", f.MaxPerPodContainerCount, "Maximum number of old instances to retain per container. Each container takes up some disk space.") @@ -489,6 +478,7 @@ func AddKubeletConfigFlags(mainfs *pflag.FlagSet, c *kubeletconfig.KubeletConfig "If --tls-cert-file and --tls-private-key-file are not provided, a self-signed certificate and key "+ "are generated for the public address and saved to the directory passed to --cert-dir.") fs.StringVar(&c.TLSPrivateKeyFile, "tls-private-key-file", c.TLSPrivateKeyFile, "File containing x509 private key matching --tls-cert-file.") + fs.BoolVar(&c.ServerTLSBootstrap, "rotate-server-certificates", c.ServerTLSBootstrap, " Auto request and rotate the kubelet serving certificates by requesting new certificates from the kube-apiserver when the certificate expiration approaches. Requires the RotateKubeletServerCertificate feature gate to be enabled.") tlsCipherPossibleValues := flag.TLSCipherPossibleValues() fs.StringSliceVar(&c.TLSCipherSuites, "tls-cipher-suites", c.TLSCipherSuites, diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kubelet/app/plugins.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kubelet/app/plugins.go index 22700b051f..4f3c39223d 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kubelet/app/plugins.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kubelet/app/plugins.go @@ -23,10 +23,7 @@ import ( _ "k8s.io/kubernetes/pkg/credentialprovider/azure" _ "k8s.io/kubernetes/pkg/credentialprovider/gcp" _ "k8s.io/kubernetes/pkg/credentialprovider/rancher" - // Network plugins - "k8s.io/kubernetes/pkg/kubelet/dockershim/network" - "k8s.io/kubernetes/pkg/kubelet/dockershim/network/cni" - "k8s.io/kubernetes/pkg/kubelet/dockershim/network/kubenet" + "k8s.io/utils/exec" // Volume plugins "k8s.io/kubernetes/pkg/volume" "k8s.io/kubernetes/pkg/volume/aws_ebs" @@ -109,17 +106,6 @@ func ProbeVolumePlugins() []volume.VolumePlugin { // GetDynamicPluginProber gets the probers of dynamically discoverable plugins // for kubelet. // Currently only Flexvolume plugins are dynamically discoverable. -func GetDynamicPluginProber(pluginDir string) volume.DynamicPluginProber { - return flexvolume.GetDynamicPluginProber(pluginDir) -} - -// ProbeNetworkPlugins collects all compiled-in plugins -func ProbeNetworkPlugins(cniConfDir string, cniBinDirs []string) []network.NetworkPlugin { - allPlugins := []network.NetworkPlugin{} - - // for each existing plugin, add to the list - allPlugins = append(allPlugins, cni.ProbeNetworkPlugins(cniConfDir, cniBinDirs)...) - allPlugins = append(allPlugins, kubenet.NewPlugin(cniBinDirs)) - - return allPlugins +func GetDynamicPluginProber(pluginDir string, runner exec.Interface) volume.DynamicPluginProber { + return flexvolume.GetDynamicPluginProber(pluginDir, runner) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kubelet/app/server.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kubelet/app/server.go index bcd5ea562a..18f7691124 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kubelet/app/server.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kubelet/app/server.go @@ -31,7 +31,6 @@ import ( "path" "path/filepath" "strconv" - "sync" "time" "github.com/coreos/go-systemd/daemon" @@ -88,7 +87,6 @@ import ( utilfs "k8s.io/kubernetes/pkg/util/filesystem" utilflag "k8s.io/kubernetes/pkg/util/flag" "k8s.io/kubernetes/pkg/util/flock" - kubeio "k8s.io/kubernetes/pkg/util/io" "k8s.io/kubernetes/pkg/util/mount" nodeutil "k8s.io/kubernetes/pkg/util/node" "k8s.io/kubernetes/pkg/util/nsenter" @@ -360,7 +358,7 @@ func UnsecuredDependencies(s *options.KubeletServer) (*kubelet.Dependencies, err } mounter := mount.New(s.ExperimentalMounterPath) - var writer kubeio.Writer = &kubeio.StdWriter{} + var pluginRunner = exec.New() if s.Containerized { glog.V(2).Info("Running kubelet in containerized mode") ne, err := nsenter.NewNsenter(nsenter.DefaultHostRootFsPath, exec.New()) @@ -368,7 +366,8 @@ func UnsecuredDependencies(s *options.KubeletServer) (*kubelet.Dependencies, err return nil, err } mounter = mount.NewNsenterMounter(s.RootDirectory, ne) - writer = kubeio.NewNsenterWriter(ne) + // an exec interface which can use nsenter for flex plugin calls + pluginRunner = nsenter.NewNsenterExecutor(nsenter.DefaultHostRootFsPath, exec.New()) } var dockerClientConfig *dockershim.ClientConfig @@ -393,9 +392,8 @@ func UnsecuredDependencies(s *options.KubeletServer) (*kubelet.Dependencies, err Mounter: mounter, OOMAdjuster: oom.NewOOMAdjuster(), OSInterface: kubecontainer.RealOS{}, - Writer: writer, VolumePlugins: ProbeVolumePlugins(), - DynamicPluginProber: GetDynamicPluginProber(s.VolumePluginDir), + DynamicPluginProber: GetDynamicPluginProber(s.VolumePluginDir, pluginRunner), TLSOptions: tlsOptions}, nil } @@ -634,7 +632,7 @@ func run(s *options.KubeletServer, kubeDeps *kubelet.Dependencies, stopCh <-chan if kubeDeps.CAdvisorInterface == nil { imageFsInfoProvider := cadvisor.NewImageFsInfoProvider(s.ContainerRuntime, s.RemoteRuntimeEndpoint) - kubeDeps.CAdvisorInterface, err = cadvisor.New(s.Address, uint(s.CAdvisorPort), imageFsInfoProvider, s.RootDirectory, cadvisor.UsingLegacyCadvisorStats(s.ContainerRuntime, s.RemoteRuntimeEndpoint)) + kubeDeps.CAdvisorInterface, err = cadvisor.New(imageFsInfoProvider, s.RootDirectory, cadvisor.UsingLegacyCadvisorStats(s.ContainerRuntime, s.RemoteRuntimeEndpoint)) if err != nil { return err } @@ -989,31 +987,19 @@ func RunKubelet(kubeFlags *options.KubeletFlags, kubeCfg *kubeletconfiginternal. } func startKubelet(k kubelet.Bootstrap, podCfg *config.PodConfig, kubeCfg *kubeletconfiginternal.KubeletConfiguration, kubeDeps *kubelet.Dependencies, enableServer bool) { - wg := sync.WaitGroup{} - // start the kubelet - wg.Add(1) go wait.Until(func() { - wg.Done() k.Run(podCfg.Updates()) }, 0, wait.NeverStop) // start the kubelet server if enableServer { - wg.Add(1) - go wait.Until(func() { - wg.Done() - k.ListenAndServe(net.ParseIP(kubeCfg.Address), uint(kubeCfg.Port), kubeDeps.TLSOptions, kubeDeps.Auth, kubeCfg.EnableDebuggingHandlers, kubeCfg.EnableContentionProfiling) - }, 0, wait.NeverStop) + go k.ListenAndServe(net.ParseIP(kubeCfg.Address), uint(kubeCfg.Port), kubeDeps.TLSOptions, kubeDeps.Auth, kubeCfg.EnableDebuggingHandlers, kubeCfg.EnableContentionProfiling) + } if kubeCfg.ReadOnlyPort > 0 { - wg.Add(1) - go wait.Until(func() { - wg.Done() - k.ListenAndServeReadOnly(net.ParseIP(kubeCfg.Address), uint(kubeCfg.ReadOnlyPort)) - }, 0, wait.NeverStop) + go k.ListenAndServeReadOnly(net.ParseIP(kubeCfg.Address), uint(kubeCfg.ReadOnlyPort)) } - wg.Wait() } func CreateAndInitKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration, diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/events/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/events/BUILD index ffce97f054..7bda51ac2f 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/events/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/events/BUILD @@ -19,7 +19,7 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/apis/core:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/legacyscheme/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/legacyscheme/BUILD index 0a8768895f..b02b10a527 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/legacyscheme/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/legacyscheme/BUILD @@ -6,8 +6,8 @@ go_library( importpath = "k8s.io/kubernetes/pkg/api/legacyscheme", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/pod/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/pod/BUILD index 249b7f91ef..77b08bc48b 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/pod/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/pod/BUILD @@ -13,8 +13,8 @@ go_library( deps = [ "//pkg/apis/core:go_default_library", "//pkg/features:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", ], ) @@ -38,8 +38,8 @@ go_test( deps = [ "//pkg/apis/core:go_default_library", "//pkg/features:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/ref/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/ref/BUILD index 6e8dad528d..f4244dbe12 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/ref/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/ref/BUILD @@ -13,9 +13,10 @@ go_test( deps = [ "//pkg/api/legacyscheme:go_default_library", "//pkg/apis/core:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/github.com/stretchr/testify/require:go_default_library", ], ) @@ -25,9 +26,9 @@ go_library( importpath = "k8s.io/kubernetes/pkg/api/ref", deps = [ "//pkg/apis/core:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/resource/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/resource/BUILD index 9e18e57484..e6fc25e565 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/resource/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/resource/BUILD @@ -12,7 +12,7 @@ go_library( importpath = "k8s.io/kubernetes/pkg/api/resource", deps = [ "//pkg/apis/core:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", ], ) @@ -35,6 +35,8 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/apis/core:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/testapi/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/testapi/BUILD index 3e33f7c7af..1db90ca3c1 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/testapi/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/testapi/BUILD @@ -28,6 +28,8 @@ go_library( "//pkg/apis/certificates:go_default_library", "//pkg/apis/certificates/install:go_default_library", "//pkg/apis/componentconfig/install:go_default_library", + "//pkg/apis/coordination:go_default_library", + "//pkg/apis/coordination/install:go_default_library", "//pkg/apis/core:go_default_library", "//pkg/apis/core/install:go_default_library", "//pkg/apis/events:go_default_library", @@ -48,9 +50,9 @@ go_library( "//pkg/apis/settings/install:go_default_library", "//pkg/apis/storage:go_default_library", "//pkg/apis/storage/install:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer/recognizer:go_default_library", ], ) @@ -59,8 +61,8 @@ go_test( srcs = ["testapi_test.go"], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/testapi/testapi.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/testapi/testapi.go index 53adb8ec39..22eecad007 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/testapi/testapi.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/testapi/testapi.go @@ -41,6 +41,7 @@ import ( "k8s.io/kubernetes/pkg/apis/autoscaling" "k8s.io/kubernetes/pkg/apis/batch" "k8s.io/kubernetes/pkg/apis/certificates" + "k8s.io/kubernetes/pkg/apis/coordination" api "k8s.io/kubernetes/pkg/apis/core" "k8s.io/kubernetes/pkg/apis/events" "k8s.io/kubernetes/pkg/apis/extensions" @@ -61,6 +62,7 @@ import ( _ "k8s.io/kubernetes/pkg/apis/batch/install" _ "k8s.io/kubernetes/pkg/apis/certificates/install" _ "k8s.io/kubernetes/pkg/apis/componentconfig/install" + _ "k8s.io/kubernetes/pkg/apis/coordination/install" _ "k8s.io/kubernetes/pkg/apis/core/install" _ "k8s.io/kubernetes/pkg/apis/events/install" _ "k8s.io/kubernetes/pkg/apis/extensions/install" @@ -257,6 +259,12 @@ func init() { externalGroupVersion: externalGroupVersion, } } + if _, ok := Groups[coordination.GroupName]; !ok { + externalGroupVersion := schema.GroupVersion{Group: coordination.GroupName, Version: legacyscheme.Scheme.PrioritizedVersionsForGroup(coordination.GroupName)[0].Version} + Groups[coordination.GroupName] = TestGroup{ + externalGroupVersion: externalGroupVersion, + } + } Default = Groups[api.GroupName] Autoscaling = Groups[autoscaling.GroupName] diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/v1/pod/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/v1/pod/BUILD index 15e9597d3a..737f6c21aa 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/v1/pod/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/v1/pod/BUILD @@ -11,9 +11,9 @@ go_library( srcs = ["util.go"], importpath = "k8s.io/kubernetes/pkg/api/v1/pod", deps = [ - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", ], ) @@ -22,12 +22,12 @@ go_test( srcs = ["util_test.go"], embed = [":go_default_library"], deps = [ + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/v1/resource/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/v1/resource/BUILD index f918e55993..7cbc50774d 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/v1/resource/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/v1/resource/BUILD @@ -11,9 +11,9 @@ go_test( srcs = ["helpers_test.go"], embed = [":go_default_library"], deps = [ + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", ], ) @@ -22,8 +22,8 @@ go_library( srcs = ["helpers.go"], importpath = "k8s.io/kubernetes/pkg/api/v1/resource", deps = [ - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/v1/service/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/v1/service/BUILD index a9ef9ec5b4..a324d7cc82 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/v1/service/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/v1/service/BUILD @@ -12,7 +12,7 @@ go_library( importpath = "k8s.io/kubernetes/pkg/api/v1/service", deps = [ "//pkg/util/net/sets:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", ], ) @@ -22,7 +22,7 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/util/net/sets:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/admission/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/admission/BUILD index 1192fb1fa0..2a02b699c8 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/admission/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/admission/BUILD @@ -16,10 +16,10 @@ go_library( importpath = "k8s.io/kubernetes/pkg/apis/admission", deps = [ "//pkg/apis/authentication:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/admission/install/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/admission/install/BUILD index d39ff9d17e..cfd13aa7d1 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/admission/install/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/admission/install/BUILD @@ -13,8 +13,8 @@ go_library( "//pkg/api/legacyscheme:go_default_library", "//pkg/apis/admission:go_default_library", "//pkg/apis/admission/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/admission/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/admission/v1beta1/BUILD index cbe9e893b1..b3abea12d4 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/admission/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/admission/v1beta1/BUILD @@ -16,12 +16,12 @@ go_library( importpath = "k8s.io/kubernetes/pkg/apis/admission/v1beta1", deps = [ "//pkg/apis/admission:go_default_library", - "//vendor/k8s.io/api/admission/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/api/admission/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/admission/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/admission/zz_generated.deepcopy.go index 9c75d5f482..69a1238246 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/admission/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/admission/zz_generated.deepcopy.go @@ -31,14 +31,10 @@ func (in *AdmissionRequest) DeepCopyInto(out *AdmissionRequest) { out.Kind = in.Kind out.Resource = in.Resource in.UserInfo.DeepCopyInto(&out.UserInfo) - if in.Object == nil { - out.Object = nil - } else { + if in.Object != nil { out.Object = in.Object.DeepCopyObject() } - if in.OldObject == nil { - out.OldObject = nil - } else { + if in.OldObject != nil { out.OldObject = in.OldObject.DeepCopyObject() } return @@ -59,12 +55,8 @@ func (in *AdmissionResponse) DeepCopyInto(out *AdmissionResponse) { *out = *in if in.Result != nil { in, out := &in.Result, &out.Result - if *in == nil { - *out = nil - } else { - *out = new(v1.Status) - (*in).DeepCopyInto(*out) - } + *out = new(v1.Status) + (*in).DeepCopyInto(*out) } if in.Patch != nil { in, out := &in.Patch, &out.Patch @@ -73,12 +65,8 @@ func (in *AdmissionResponse) DeepCopyInto(out *AdmissionResponse) { } if in.PatchType != nil { in, out := &in.PatchType, &out.PatchType - if *in == nil { - *out = nil - } else { - *out = new(PatchType) - **out = **in - } + *out = new(PatchType) + **out = **in } return } @@ -99,21 +87,13 @@ func (in *AdmissionReview) DeepCopyInto(out *AdmissionReview) { out.TypeMeta = in.TypeMeta if in.Request != nil { in, out := &in.Request, &out.Request - if *in == nil { - *out = nil - } else { - *out = new(AdmissionRequest) - (*in).DeepCopyInto(*out) - } + *out = new(AdmissionRequest) + (*in).DeepCopyInto(*out) } if in.Response != nil { in, out := &in.Response, &out.Response - if *in == nil { - *out = nil - } else { - *out = new(AdmissionResponse) - (*in).DeepCopyInto(*out) - } + *out = new(AdmissionResponse) + (*in).DeepCopyInto(*out) } return } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/admissionregistration/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/admissionregistration/BUILD index f223ec0a80..d227c45a64 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/admissionregistration/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/admissionregistration/BUILD @@ -15,9 +15,9 @@ go_library( ], importpath = "k8s.io/kubernetes/pkg/apis/admissionregistration", deps = [ - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/admissionregistration/install/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/admissionregistration/install/BUILD index 76a85b2911..cbe1b9da56 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/admissionregistration/install/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/admissionregistration/install/BUILD @@ -14,8 +14,8 @@ go_library( "//pkg/apis/admissionregistration:go_default_library", "//pkg/apis/admissionregistration/v1alpha1:go_default_library", "//pkg/apis/admissionregistration/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/admissionregistration/v1alpha1/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/admissionregistration/v1alpha1/BUILD index 81773c8a9c..d0aef41ab9 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/admissionregistration/v1alpha1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/admissionregistration/v1alpha1/BUILD @@ -17,10 +17,10 @@ go_library( importpath = "k8s.io/kubernetes/pkg/apis/admissionregistration/v1alpha1", deps = [ "//pkg/apis/admissionregistration:go_default_library", - "//vendor/k8s.io/api/admissionregistration/v1alpha1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/api/admissionregistration/v1alpha1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/admissionregistration/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/admissionregistration/v1beta1/BUILD index 414f877488..92cf6df561 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/admissionregistration/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/admissionregistration/v1beta1/BUILD @@ -17,11 +17,11 @@ go_library( importpath = "k8s.io/kubernetes/pkg/apis/admissionregistration/v1beta1", deps = [ "//pkg/apis/admissionregistration:go_default_library", - "//vendor/k8s.io/api/admissionregistration/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/api/admissionregistration/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/admissionregistration/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/admissionregistration/zz_generated.deepcopy.go index f59c503ae4..52f31fb1e6 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/admissionregistration/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/admissionregistration/zz_generated.deepcopy.go @@ -238,12 +238,8 @@ func (in *ServiceReference) DeepCopyInto(out *ServiceReference) { *out = *in if in.Path != nil { in, out := &in.Path, &out.Path - if *in == nil { - *out = nil - } else { - *out = new(string) - **out = **in - } + *out = new(string) + **out = **in } return } @@ -337,21 +333,13 @@ func (in *Webhook) DeepCopyInto(out *Webhook) { } if in.FailurePolicy != nil { in, out := &in.FailurePolicy, &out.FailurePolicy - if *in == nil { - *out = nil - } else { - *out = new(FailurePolicyType) - **out = **in - } + *out = new(FailurePolicyType) + **out = **in } if in.NamespaceSelector != nil { in, out := &in.NamespaceSelector, &out.NamespaceSelector - if *in == nil { - *out = nil - } else { - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) - } + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) } return } @@ -371,21 +359,13 @@ func (in *WebhookClientConfig) DeepCopyInto(out *WebhookClientConfig) { *out = *in if in.URL != nil { in, out := &in.URL, &out.URL - if *in == nil { - *out = nil - } else { - *out = new(string) - **out = **in - } + *out = new(string) + **out = **in } if in.Service != nil { in, out := &in.Service, &out.Service - if *in == nil { - *out = nil - } else { - *out = new(ServiceReference) - (*in).DeepCopyInto(*out) - } + *out = new(ServiceReference) + (*in).DeepCopyInto(*out) } if in.CABundle != nil { in, out := &in.CABundle, &out.CABundle diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/BUILD index 8cb47574a1..60c1469c0c 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/BUILD @@ -18,9 +18,9 @@ go_library( "//pkg/apis/autoscaling:go_default_library", "//pkg/apis/core:go_default_library", "//pkg/apis/extensions:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/install/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/install/BUILD index 622fb31751..1baa04db24 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/install/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/install/BUILD @@ -15,8 +15,8 @@ go_library( "//pkg/apis/apps/v1:go_default_library", "//pkg/apis/apps/v1beta1:go_default_library", "//pkg/apis/apps/v1beta2:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/v1/BUILD index a2bf98c798..de6f65c680 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/v1/BUILD @@ -17,24 +17,24 @@ go_library( "//pkg/apis/core:go_default_library", "//pkg/apis/core/v1:go_default_library", "//pkg/apis/extensions:go_default_library", - "//vendor/k8s.io/api/apps/v1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//staging/src/k8s.io/api/apps/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", ], ) go_test( - name = "go_default_xtest", + name = "go_default_test", srcs = [ "conversion_test.go", "defaults_test.go", ], + embed = [":go_default_library"], deps = [ - ":go_default_library", "//pkg/api/legacyscheme:go_default_library", "//pkg/apis/apps:go_default_library", "//pkg/apis/apps/install:go_default_library", @@ -42,13 +42,13 @@ go_test( "//pkg/apis/core/install:go_default_library", "//pkg/apis/extensions:go_default_library", "//pkg/util/pointer:go_default_library", - "//vendor/k8s.io/api/apps/v1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//staging/src/k8s.io/api/apps/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/v1/zz_generated.conversion.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/v1/zz_generated.conversion.go index 3bdf1f42ce..41d8b91d67 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/v1/zz_generated.conversion.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/v1/zz_generated.conversion.go @@ -24,13 +24,13 @@ import ( unsafe "unsafe" v1 "k8s.io/api/apps/v1" - core_v1 "k8s.io/api/core/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" conversion "k8s.io/apimachinery/pkg/conversion" runtime "k8s.io/apimachinery/pkg/runtime" apps "k8s.io/kubernetes/pkg/apis/apps" core "k8s.io/kubernetes/pkg/apis/core" - apis_core_v1 "k8s.io/kubernetes/pkg/apis/core/v1" + apiscorev1 "k8s.io/kubernetes/pkg/apis/core/v1" extensions "k8s.io/kubernetes/pkg/apis/extensions" ) @@ -209,7 +209,7 @@ func Convert_v1_DaemonSetCondition_To_extensions_DaemonSetCondition(in *v1.Daemo func autoConvert_extensions_DaemonSetCondition_To_v1_DaemonSetCondition(in *extensions.DaemonSetCondition, out *v1.DaemonSetCondition, s conversion.Scope) error { out.Type = v1.DaemonSetConditionType(in.Type) - out.Status = core_v1.ConditionStatus(in.Status) + out.Status = corev1.ConditionStatus(in.Status) out.LastTransitionTime = in.LastTransitionTime out.Reason = in.Reason out.Message = in.Message @@ -264,8 +264,8 @@ func Convert_extensions_DaemonSetList_To_v1_DaemonSetList(in *extensions.DaemonS } func autoConvert_v1_DaemonSetSpec_To_extensions_DaemonSetSpec(in *v1.DaemonSetSpec, out *extensions.DaemonSetSpec, s conversion.Scope) error { - out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector)) - if err := apis_core_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + out.Selector = (*metav1.LabelSelector)(unsafe.Pointer(in.Selector)) + if err := apiscorev1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { return err } if err := Convert_v1_DaemonSetUpdateStrategy_To_extensions_DaemonSetUpdateStrategy(&in.UpdateStrategy, &out.UpdateStrategy, s); err != nil { @@ -277,8 +277,8 @@ func autoConvert_v1_DaemonSetSpec_To_extensions_DaemonSetSpec(in *v1.DaemonSetSp } func autoConvert_extensions_DaemonSetSpec_To_v1_DaemonSetSpec(in *extensions.DaemonSetSpec, out *v1.DaemonSetSpec, s conversion.Scope) error { - out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector)) - if err := apis_core_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + out.Selector = (*metav1.LabelSelector)(unsafe.Pointer(in.Selector)) + if err := apiscorev1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { return err } if err := Convert_extensions_DaemonSetUpdateStrategy_To_v1_DaemonSetUpdateStrategy(&in.UpdateStrategy, &out.UpdateStrategy, s); err != nil { @@ -395,7 +395,7 @@ func Convert_v1_DeploymentCondition_To_extensions_DeploymentCondition(in *v1.Dep func autoConvert_extensions_DeploymentCondition_To_v1_DeploymentCondition(in *extensions.DeploymentCondition, out *v1.DeploymentCondition, s conversion.Scope) error { out.Type = v1.DeploymentConditionType(in.Type) - out.Status = core_v1.ConditionStatus(in.Status) + out.Status = corev1.ConditionStatus(in.Status) out.LastUpdateTime = in.LastUpdateTime out.LastTransitionTime = in.LastTransitionTime out.Reason = in.Reason @@ -451,11 +451,11 @@ func Convert_extensions_DeploymentList_To_v1_DeploymentList(in *extensions.Deplo } func autoConvert_v1_DeploymentSpec_To_extensions_DeploymentSpec(in *v1.DeploymentSpec, out *extensions.DeploymentSpec, s conversion.Scope) error { - if err := meta_v1.Convert_Pointer_int32_To_int32(&in.Replicas, &out.Replicas, s); err != nil { + if err := metav1.Convert_Pointer_int32_To_int32(&in.Replicas, &out.Replicas, s); err != nil { return err } - out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector)) - if err := apis_core_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + out.Selector = (*metav1.LabelSelector)(unsafe.Pointer(in.Selector)) + if err := apiscorev1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { return err } if err := Convert_v1_DeploymentStrategy_To_extensions_DeploymentStrategy(&in.Strategy, &out.Strategy, s); err != nil { @@ -469,11 +469,11 @@ func autoConvert_v1_DeploymentSpec_To_extensions_DeploymentSpec(in *v1.Deploymen } func autoConvert_extensions_DeploymentSpec_To_v1_DeploymentSpec(in *extensions.DeploymentSpec, out *v1.DeploymentSpec, s conversion.Scope) error { - if err := meta_v1.Convert_int32_To_Pointer_int32(&in.Replicas, &out.Replicas, s); err != nil { + if err := metav1.Convert_int32_To_Pointer_int32(&in.Replicas, &out.Replicas, s); err != nil { return err } - out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector)) - if err := apis_core_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + out.Selector = (*metav1.LabelSelector)(unsafe.Pointer(in.Selector)) + if err := apiscorev1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { return err } if err := Convert_extensions_DeploymentStrategy_To_v1_DeploymentStrategy(&in.Strategy, &out.Strategy, s); err != nil { @@ -597,7 +597,7 @@ func Convert_v1_ReplicaSetCondition_To_extensions_ReplicaSetCondition(in *v1.Rep func autoConvert_extensions_ReplicaSetCondition_To_v1_ReplicaSetCondition(in *extensions.ReplicaSetCondition, out *v1.ReplicaSetCondition, s conversion.Scope) error { out.Type = v1.ReplicaSetConditionType(in.Type) - out.Status = core_v1.ConditionStatus(in.Status) + out.Status = corev1.ConditionStatus(in.Status) out.LastTransitionTime = in.LastTransitionTime out.Reason = in.Reason out.Message = in.Message @@ -652,24 +652,24 @@ func Convert_extensions_ReplicaSetList_To_v1_ReplicaSetList(in *extensions.Repli } func autoConvert_v1_ReplicaSetSpec_To_extensions_ReplicaSetSpec(in *v1.ReplicaSetSpec, out *extensions.ReplicaSetSpec, s conversion.Scope) error { - if err := meta_v1.Convert_Pointer_int32_To_int32(&in.Replicas, &out.Replicas, s); err != nil { + if err := metav1.Convert_Pointer_int32_To_int32(&in.Replicas, &out.Replicas, s); err != nil { return err } out.MinReadySeconds = in.MinReadySeconds - out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector)) - if err := apis_core_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + out.Selector = (*metav1.LabelSelector)(unsafe.Pointer(in.Selector)) + if err := apiscorev1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { return err } return nil } func autoConvert_extensions_ReplicaSetSpec_To_v1_ReplicaSetSpec(in *extensions.ReplicaSetSpec, out *v1.ReplicaSetSpec, s conversion.Scope) error { - if err := meta_v1.Convert_int32_To_Pointer_int32(&in.Replicas, &out.Replicas, s); err != nil { + if err := metav1.Convert_int32_To_Pointer_int32(&in.Replicas, &out.Replicas, s); err != nil { return err } out.MinReadySeconds = in.MinReadySeconds - out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector)) - if err := apis_core_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + out.Selector = (*metav1.LabelSelector)(unsafe.Pointer(in.Selector)) + if err := apiscorev1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { return err } return nil @@ -728,7 +728,7 @@ func autoConvert_extensions_RollingUpdateDeployment_To_v1_RollingUpdateDeploymen } func autoConvert_v1_RollingUpdateStatefulSetStrategy_To_apps_RollingUpdateStatefulSetStrategy(in *v1.RollingUpdateStatefulSetStrategy, out *apps.RollingUpdateStatefulSetStrategy, s conversion.Scope) error { - if err := meta_v1.Convert_Pointer_int32_To_int32(&in.Partition, &out.Partition, s); err != nil { + if err := metav1.Convert_Pointer_int32_To_int32(&in.Partition, &out.Partition, s); err != nil { return err } return nil @@ -740,7 +740,7 @@ func Convert_v1_RollingUpdateStatefulSetStrategy_To_apps_RollingUpdateStatefulSe } func autoConvert_apps_RollingUpdateStatefulSetStrategy_To_v1_RollingUpdateStatefulSetStrategy(in *apps.RollingUpdateStatefulSetStrategy, out *v1.RollingUpdateStatefulSetStrategy, s conversion.Scope) error { - if err := meta_v1.Convert_int32_To_Pointer_int32(&in.Partition, &out.Partition, s); err != nil { + if err := metav1.Convert_int32_To_Pointer_int32(&in.Partition, &out.Partition, s); err != nil { return err } return nil @@ -799,7 +799,7 @@ func Convert_v1_StatefulSetCondition_To_apps_StatefulSetCondition(in *v1.Statefu func autoConvert_apps_StatefulSetCondition_To_v1_StatefulSetCondition(in *apps.StatefulSetCondition, out *v1.StatefulSetCondition, s conversion.Scope) error { out.Type = v1.StatefulSetConditionType(in.Type) - out.Status = core_v1.ConditionStatus(in.Status) + out.Status = corev1.ConditionStatus(in.Status) out.LastTransitionTime = in.LastTransitionTime out.Reason = in.Reason out.Message = in.Message @@ -854,11 +854,11 @@ func Convert_apps_StatefulSetList_To_v1_StatefulSetList(in *apps.StatefulSetList } func autoConvert_v1_StatefulSetSpec_To_apps_StatefulSetSpec(in *v1.StatefulSetSpec, out *apps.StatefulSetSpec, s conversion.Scope) error { - if err := meta_v1.Convert_Pointer_int32_To_int32(&in.Replicas, &out.Replicas, s); err != nil { + if err := metav1.Convert_Pointer_int32_To_int32(&in.Replicas, &out.Replicas, s); err != nil { return err } - out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector)) - if err := apis_core_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + out.Selector = (*metav1.LabelSelector)(unsafe.Pointer(in.Selector)) + if err := apiscorev1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { return err } out.VolumeClaimTemplates = *(*[]core.PersistentVolumeClaim)(unsafe.Pointer(&in.VolumeClaimTemplates)) @@ -872,14 +872,14 @@ func autoConvert_v1_StatefulSetSpec_To_apps_StatefulSetSpec(in *v1.StatefulSetSp } func autoConvert_apps_StatefulSetSpec_To_v1_StatefulSetSpec(in *apps.StatefulSetSpec, out *v1.StatefulSetSpec, s conversion.Scope) error { - if err := meta_v1.Convert_int32_To_Pointer_int32(&in.Replicas, &out.Replicas, s); err != nil { + if err := metav1.Convert_int32_To_Pointer_int32(&in.Replicas, &out.Replicas, s); err != nil { return err } - out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector)) - if err := apis_core_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + out.Selector = (*metav1.LabelSelector)(unsafe.Pointer(in.Selector)) + if err := apiscorev1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { return err } - out.VolumeClaimTemplates = *(*[]core_v1.PersistentVolumeClaim)(unsafe.Pointer(&in.VolumeClaimTemplates)) + out.VolumeClaimTemplates = *(*[]corev1.PersistentVolumeClaim)(unsafe.Pointer(&in.VolumeClaimTemplates)) out.ServiceName = in.ServiceName out.PodManagementPolicy = v1.PodManagementPolicyType(in.PodManagementPolicy) if err := Convert_apps_StatefulSetUpdateStrategy_To_v1_StatefulSetUpdateStrategy(&in.UpdateStrategy, &out.UpdateStrategy, s); err != nil { @@ -890,7 +890,7 @@ func autoConvert_apps_StatefulSetSpec_To_v1_StatefulSetSpec(in *apps.StatefulSet } func autoConvert_v1_StatefulSetStatus_To_apps_StatefulSetStatus(in *v1.StatefulSetStatus, out *apps.StatefulSetStatus, s conversion.Scope) error { - if err := meta_v1.Convert_int64_To_Pointer_int64(&in.ObservedGeneration, &out.ObservedGeneration, s); err != nil { + if err := metav1.Convert_int64_To_Pointer_int64(&in.ObservedGeneration, &out.ObservedGeneration, s); err != nil { return err } out.Replicas = in.Replicas @@ -905,7 +905,7 @@ func autoConvert_v1_StatefulSetStatus_To_apps_StatefulSetStatus(in *v1.StatefulS } func autoConvert_apps_StatefulSetStatus_To_v1_StatefulSetStatus(in *apps.StatefulSetStatus, out *v1.StatefulSetStatus, s conversion.Scope) error { - if err := meta_v1.Convert_Pointer_int64_To_int64(&in.ObservedGeneration, &out.ObservedGeneration, s); err != nil { + if err := metav1.Convert_Pointer_int64_To_int64(&in.ObservedGeneration, &out.ObservedGeneration, s); err != nil { return err } out.Replicas = in.Replicas diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/v1/zz_generated.defaults.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/v1/zz_generated.defaults.go index 8a4a0a5d72..4b541a3b15 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/v1/zz_generated.defaults.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/v1/zz_generated.defaults.go @@ -23,7 +23,7 @@ package v1 import ( v1 "k8s.io/api/apps/v1" runtime "k8s.io/apimachinery/pkg/runtime" - core_v1 "k8s.io/kubernetes/pkg/apis/core/v1" + corev1 "k8s.io/kubernetes/pkg/apis/core/v1" ) // RegisterDefaults adds defaulters functions to the given scheme. @@ -43,138 +43,138 @@ func RegisterDefaults(scheme *runtime.Scheme) error { func SetObjectDefaults_DaemonSet(in *v1.DaemonSet) { SetDefaults_DaemonSet(in) - core_v1.SetDefaults_PodSpec(&in.Spec.Template.Spec) + corev1.SetDefaults_PodSpec(&in.Spec.Template.Spec) for i := range in.Spec.Template.Spec.Volumes { a := &in.Spec.Template.Spec.Volumes[i] - core_v1.SetDefaults_Volume(a) + corev1.SetDefaults_Volume(a) if a.VolumeSource.HostPath != nil { - core_v1.SetDefaults_HostPathVolumeSource(a.VolumeSource.HostPath) + corev1.SetDefaults_HostPathVolumeSource(a.VolumeSource.HostPath) } if a.VolumeSource.Secret != nil { - core_v1.SetDefaults_SecretVolumeSource(a.VolumeSource.Secret) + corev1.SetDefaults_SecretVolumeSource(a.VolumeSource.Secret) } if a.VolumeSource.ISCSI != nil { - core_v1.SetDefaults_ISCSIVolumeSource(a.VolumeSource.ISCSI) + corev1.SetDefaults_ISCSIVolumeSource(a.VolumeSource.ISCSI) } if a.VolumeSource.RBD != nil { - core_v1.SetDefaults_RBDVolumeSource(a.VolumeSource.RBD) + corev1.SetDefaults_RBDVolumeSource(a.VolumeSource.RBD) } if a.VolumeSource.DownwardAPI != nil { - core_v1.SetDefaults_DownwardAPIVolumeSource(a.VolumeSource.DownwardAPI) + corev1.SetDefaults_DownwardAPIVolumeSource(a.VolumeSource.DownwardAPI) for j := range a.VolumeSource.DownwardAPI.Items { b := &a.VolumeSource.DownwardAPI.Items[j] if b.FieldRef != nil { - core_v1.SetDefaults_ObjectFieldSelector(b.FieldRef) + corev1.SetDefaults_ObjectFieldSelector(b.FieldRef) } } } if a.VolumeSource.ConfigMap != nil { - core_v1.SetDefaults_ConfigMapVolumeSource(a.VolumeSource.ConfigMap) + corev1.SetDefaults_ConfigMapVolumeSource(a.VolumeSource.ConfigMap) } if a.VolumeSource.AzureDisk != nil { - core_v1.SetDefaults_AzureDiskVolumeSource(a.VolumeSource.AzureDisk) + corev1.SetDefaults_AzureDiskVolumeSource(a.VolumeSource.AzureDisk) } if a.VolumeSource.Projected != nil { - core_v1.SetDefaults_ProjectedVolumeSource(a.VolumeSource.Projected) + corev1.SetDefaults_ProjectedVolumeSource(a.VolumeSource.Projected) for j := range a.VolumeSource.Projected.Sources { b := &a.VolumeSource.Projected.Sources[j] if b.DownwardAPI != nil { for k := range b.DownwardAPI.Items { c := &b.DownwardAPI.Items[k] if c.FieldRef != nil { - core_v1.SetDefaults_ObjectFieldSelector(c.FieldRef) + corev1.SetDefaults_ObjectFieldSelector(c.FieldRef) } } } if b.ServiceAccountToken != nil { - core_v1.SetDefaults_ServiceAccountTokenProjection(b.ServiceAccountToken) + corev1.SetDefaults_ServiceAccountTokenProjection(b.ServiceAccountToken) } } } if a.VolumeSource.ScaleIO != nil { - core_v1.SetDefaults_ScaleIOVolumeSource(a.VolumeSource.ScaleIO) + corev1.SetDefaults_ScaleIOVolumeSource(a.VolumeSource.ScaleIO) } } for i := range in.Spec.Template.Spec.InitContainers { a := &in.Spec.Template.Spec.InitContainers[i] - core_v1.SetDefaults_Container(a) + corev1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - core_v1.SetDefaults_ContainerPort(b) + corev1.SetDefaults_ContainerPort(b) } for j := range a.Env { b := &a.Env[j] if b.ValueFrom != nil { if b.ValueFrom.FieldRef != nil { - core_v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) + corev1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) } } } - core_v1.SetDefaults_ResourceList(&a.Resources.Limits) - core_v1.SetDefaults_ResourceList(&a.Resources.Requests) + corev1.SetDefaults_ResourceList(&a.Resources.Limits) + corev1.SetDefaults_ResourceList(&a.Resources.Requests) if a.LivenessProbe != nil { - core_v1.SetDefaults_Probe(a.LivenessProbe) + corev1.SetDefaults_Probe(a.LivenessProbe) if a.LivenessProbe.Handler.HTTPGet != nil { - core_v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) + corev1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) } } if a.ReadinessProbe != nil { - core_v1.SetDefaults_Probe(a.ReadinessProbe) + corev1.SetDefaults_Probe(a.ReadinessProbe) if a.ReadinessProbe.Handler.HTTPGet != nil { - core_v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) + corev1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) } } if a.Lifecycle != nil { if a.Lifecycle.PostStart != nil { if a.Lifecycle.PostStart.HTTPGet != nil { - core_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) + corev1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) } } if a.Lifecycle.PreStop != nil { if a.Lifecycle.PreStop.HTTPGet != nil { - core_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) + corev1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) } } } } for i := range in.Spec.Template.Spec.Containers { a := &in.Spec.Template.Spec.Containers[i] - core_v1.SetDefaults_Container(a) + corev1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - core_v1.SetDefaults_ContainerPort(b) + corev1.SetDefaults_ContainerPort(b) } for j := range a.Env { b := &a.Env[j] if b.ValueFrom != nil { if b.ValueFrom.FieldRef != nil { - core_v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) + corev1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) } } } - core_v1.SetDefaults_ResourceList(&a.Resources.Limits) - core_v1.SetDefaults_ResourceList(&a.Resources.Requests) + corev1.SetDefaults_ResourceList(&a.Resources.Limits) + corev1.SetDefaults_ResourceList(&a.Resources.Requests) if a.LivenessProbe != nil { - core_v1.SetDefaults_Probe(a.LivenessProbe) + corev1.SetDefaults_Probe(a.LivenessProbe) if a.LivenessProbe.Handler.HTTPGet != nil { - core_v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) + corev1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) } } if a.ReadinessProbe != nil { - core_v1.SetDefaults_Probe(a.ReadinessProbe) + corev1.SetDefaults_Probe(a.ReadinessProbe) if a.ReadinessProbe.Handler.HTTPGet != nil { - core_v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) + corev1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) } } if a.Lifecycle != nil { if a.Lifecycle.PostStart != nil { if a.Lifecycle.PostStart.HTTPGet != nil { - core_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) + corev1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) } } if a.Lifecycle.PreStop != nil { if a.Lifecycle.PreStop.HTTPGet != nil { - core_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) + corev1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) } } } @@ -190,138 +190,138 @@ func SetObjectDefaults_DaemonSetList(in *v1.DaemonSetList) { func SetObjectDefaults_Deployment(in *v1.Deployment) { SetDefaults_Deployment(in) - core_v1.SetDefaults_PodSpec(&in.Spec.Template.Spec) + corev1.SetDefaults_PodSpec(&in.Spec.Template.Spec) for i := range in.Spec.Template.Spec.Volumes { a := &in.Spec.Template.Spec.Volumes[i] - core_v1.SetDefaults_Volume(a) + corev1.SetDefaults_Volume(a) if a.VolumeSource.HostPath != nil { - core_v1.SetDefaults_HostPathVolumeSource(a.VolumeSource.HostPath) + corev1.SetDefaults_HostPathVolumeSource(a.VolumeSource.HostPath) } if a.VolumeSource.Secret != nil { - core_v1.SetDefaults_SecretVolumeSource(a.VolumeSource.Secret) + corev1.SetDefaults_SecretVolumeSource(a.VolumeSource.Secret) } if a.VolumeSource.ISCSI != nil { - core_v1.SetDefaults_ISCSIVolumeSource(a.VolumeSource.ISCSI) + corev1.SetDefaults_ISCSIVolumeSource(a.VolumeSource.ISCSI) } if a.VolumeSource.RBD != nil { - core_v1.SetDefaults_RBDVolumeSource(a.VolumeSource.RBD) + corev1.SetDefaults_RBDVolumeSource(a.VolumeSource.RBD) } if a.VolumeSource.DownwardAPI != nil { - core_v1.SetDefaults_DownwardAPIVolumeSource(a.VolumeSource.DownwardAPI) + corev1.SetDefaults_DownwardAPIVolumeSource(a.VolumeSource.DownwardAPI) for j := range a.VolumeSource.DownwardAPI.Items { b := &a.VolumeSource.DownwardAPI.Items[j] if b.FieldRef != nil { - core_v1.SetDefaults_ObjectFieldSelector(b.FieldRef) + corev1.SetDefaults_ObjectFieldSelector(b.FieldRef) } } } if a.VolumeSource.ConfigMap != nil { - core_v1.SetDefaults_ConfigMapVolumeSource(a.VolumeSource.ConfigMap) + corev1.SetDefaults_ConfigMapVolumeSource(a.VolumeSource.ConfigMap) } if a.VolumeSource.AzureDisk != nil { - core_v1.SetDefaults_AzureDiskVolumeSource(a.VolumeSource.AzureDisk) + corev1.SetDefaults_AzureDiskVolumeSource(a.VolumeSource.AzureDisk) } if a.VolumeSource.Projected != nil { - core_v1.SetDefaults_ProjectedVolumeSource(a.VolumeSource.Projected) + corev1.SetDefaults_ProjectedVolumeSource(a.VolumeSource.Projected) for j := range a.VolumeSource.Projected.Sources { b := &a.VolumeSource.Projected.Sources[j] if b.DownwardAPI != nil { for k := range b.DownwardAPI.Items { c := &b.DownwardAPI.Items[k] if c.FieldRef != nil { - core_v1.SetDefaults_ObjectFieldSelector(c.FieldRef) + corev1.SetDefaults_ObjectFieldSelector(c.FieldRef) } } } if b.ServiceAccountToken != nil { - core_v1.SetDefaults_ServiceAccountTokenProjection(b.ServiceAccountToken) + corev1.SetDefaults_ServiceAccountTokenProjection(b.ServiceAccountToken) } } } if a.VolumeSource.ScaleIO != nil { - core_v1.SetDefaults_ScaleIOVolumeSource(a.VolumeSource.ScaleIO) + corev1.SetDefaults_ScaleIOVolumeSource(a.VolumeSource.ScaleIO) } } for i := range in.Spec.Template.Spec.InitContainers { a := &in.Spec.Template.Spec.InitContainers[i] - core_v1.SetDefaults_Container(a) + corev1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - core_v1.SetDefaults_ContainerPort(b) + corev1.SetDefaults_ContainerPort(b) } for j := range a.Env { b := &a.Env[j] if b.ValueFrom != nil { if b.ValueFrom.FieldRef != nil { - core_v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) + corev1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) } } } - core_v1.SetDefaults_ResourceList(&a.Resources.Limits) - core_v1.SetDefaults_ResourceList(&a.Resources.Requests) + corev1.SetDefaults_ResourceList(&a.Resources.Limits) + corev1.SetDefaults_ResourceList(&a.Resources.Requests) if a.LivenessProbe != nil { - core_v1.SetDefaults_Probe(a.LivenessProbe) + corev1.SetDefaults_Probe(a.LivenessProbe) if a.LivenessProbe.Handler.HTTPGet != nil { - core_v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) + corev1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) } } if a.ReadinessProbe != nil { - core_v1.SetDefaults_Probe(a.ReadinessProbe) + corev1.SetDefaults_Probe(a.ReadinessProbe) if a.ReadinessProbe.Handler.HTTPGet != nil { - core_v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) + corev1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) } } if a.Lifecycle != nil { if a.Lifecycle.PostStart != nil { if a.Lifecycle.PostStart.HTTPGet != nil { - core_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) + corev1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) } } if a.Lifecycle.PreStop != nil { if a.Lifecycle.PreStop.HTTPGet != nil { - core_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) + corev1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) } } } } for i := range in.Spec.Template.Spec.Containers { a := &in.Spec.Template.Spec.Containers[i] - core_v1.SetDefaults_Container(a) + corev1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - core_v1.SetDefaults_ContainerPort(b) + corev1.SetDefaults_ContainerPort(b) } for j := range a.Env { b := &a.Env[j] if b.ValueFrom != nil { if b.ValueFrom.FieldRef != nil { - core_v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) + corev1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) } } } - core_v1.SetDefaults_ResourceList(&a.Resources.Limits) - core_v1.SetDefaults_ResourceList(&a.Resources.Requests) + corev1.SetDefaults_ResourceList(&a.Resources.Limits) + corev1.SetDefaults_ResourceList(&a.Resources.Requests) if a.LivenessProbe != nil { - core_v1.SetDefaults_Probe(a.LivenessProbe) + corev1.SetDefaults_Probe(a.LivenessProbe) if a.LivenessProbe.Handler.HTTPGet != nil { - core_v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) + corev1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) } } if a.ReadinessProbe != nil { - core_v1.SetDefaults_Probe(a.ReadinessProbe) + corev1.SetDefaults_Probe(a.ReadinessProbe) if a.ReadinessProbe.Handler.HTTPGet != nil { - core_v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) + corev1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) } } if a.Lifecycle != nil { if a.Lifecycle.PostStart != nil { if a.Lifecycle.PostStart.HTTPGet != nil { - core_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) + corev1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) } } if a.Lifecycle.PreStop != nil { if a.Lifecycle.PreStop.HTTPGet != nil { - core_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) + corev1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) } } } @@ -337,138 +337,138 @@ func SetObjectDefaults_DeploymentList(in *v1.DeploymentList) { func SetObjectDefaults_ReplicaSet(in *v1.ReplicaSet) { SetDefaults_ReplicaSet(in) - core_v1.SetDefaults_PodSpec(&in.Spec.Template.Spec) + corev1.SetDefaults_PodSpec(&in.Spec.Template.Spec) for i := range in.Spec.Template.Spec.Volumes { a := &in.Spec.Template.Spec.Volumes[i] - core_v1.SetDefaults_Volume(a) + corev1.SetDefaults_Volume(a) if a.VolumeSource.HostPath != nil { - core_v1.SetDefaults_HostPathVolumeSource(a.VolumeSource.HostPath) + corev1.SetDefaults_HostPathVolumeSource(a.VolumeSource.HostPath) } if a.VolumeSource.Secret != nil { - core_v1.SetDefaults_SecretVolumeSource(a.VolumeSource.Secret) + corev1.SetDefaults_SecretVolumeSource(a.VolumeSource.Secret) } if a.VolumeSource.ISCSI != nil { - core_v1.SetDefaults_ISCSIVolumeSource(a.VolumeSource.ISCSI) + corev1.SetDefaults_ISCSIVolumeSource(a.VolumeSource.ISCSI) } if a.VolumeSource.RBD != nil { - core_v1.SetDefaults_RBDVolumeSource(a.VolumeSource.RBD) + corev1.SetDefaults_RBDVolumeSource(a.VolumeSource.RBD) } if a.VolumeSource.DownwardAPI != nil { - core_v1.SetDefaults_DownwardAPIVolumeSource(a.VolumeSource.DownwardAPI) + corev1.SetDefaults_DownwardAPIVolumeSource(a.VolumeSource.DownwardAPI) for j := range a.VolumeSource.DownwardAPI.Items { b := &a.VolumeSource.DownwardAPI.Items[j] if b.FieldRef != nil { - core_v1.SetDefaults_ObjectFieldSelector(b.FieldRef) + corev1.SetDefaults_ObjectFieldSelector(b.FieldRef) } } } if a.VolumeSource.ConfigMap != nil { - core_v1.SetDefaults_ConfigMapVolumeSource(a.VolumeSource.ConfigMap) + corev1.SetDefaults_ConfigMapVolumeSource(a.VolumeSource.ConfigMap) } if a.VolumeSource.AzureDisk != nil { - core_v1.SetDefaults_AzureDiskVolumeSource(a.VolumeSource.AzureDisk) + corev1.SetDefaults_AzureDiskVolumeSource(a.VolumeSource.AzureDisk) } if a.VolumeSource.Projected != nil { - core_v1.SetDefaults_ProjectedVolumeSource(a.VolumeSource.Projected) + corev1.SetDefaults_ProjectedVolumeSource(a.VolumeSource.Projected) for j := range a.VolumeSource.Projected.Sources { b := &a.VolumeSource.Projected.Sources[j] if b.DownwardAPI != nil { for k := range b.DownwardAPI.Items { c := &b.DownwardAPI.Items[k] if c.FieldRef != nil { - core_v1.SetDefaults_ObjectFieldSelector(c.FieldRef) + corev1.SetDefaults_ObjectFieldSelector(c.FieldRef) } } } if b.ServiceAccountToken != nil { - core_v1.SetDefaults_ServiceAccountTokenProjection(b.ServiceAccountToken) + corev1.SetDefaults_ServiceAccountTokenProjection(b.ServiceAccountToken) } } } if a.VolumeSource.ScaleIO != nil { - core_v1.SetDefaults_ScaleIOVolumeSource(a.VolumeSource.ScaleIO) + corev1.SetDefaults_ScaleIOVolumeSource(a.VolumeSource.ScaleIO) } } for i := range in.Spec.Template.Spec.InitContainers { a := &in.Spec.Template.Spec.InitContainers[i] - core_v1.SetDefaults_Container(a) + corev1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - core_v1.SetDefaults_ContainerPort(b) + corev1.SetDefaults_ContainerPort(b) } for j := range a.Env { b := &a.Env[j] if b.ValueFrom != nil { if b.ValueFrom.FieldRef != nil { - core_v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) + corev1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) } } } - core_v1.SetDefaults_ResourceList(&a.Resources.Limits) - core_v1.SetDefaults_ResourceList(&a.Resources.Requests) + corev1.SetDefaults_ResourceList(&a.Resources.Limits) + corev1.SetDefaults_ResourceList(&a.Resources.Requests) if a.LivenessProbe != nil { - core_v1.SetDefaults_Probe(a.LivenessProbe) + corev1.SetDefaults_Probe(a.LivenessProbe) if a.LivenessProbe.Handler.HTTPGet != nil { - core_v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) + corev1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) } } if a.ReadinessProbe != nil { - core_v1.SetDefaults_Probe(a.ReadinessProbe) + corev1.SetDefaults_Probe(a.ReadinessProbe) if a.ReadinessProbe.Handler.HTTPGet != nil { - core_v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) + corev1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) } } if a.Lifecycle != nil { if a.Lifecycle.PostStart != nil { if a.Lifecycle.PostStart.HTTPGet != nil { - core_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) + corev1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) } } if a.Lifecycle.PreStop != nil { if a.Lifecycle.PreStop.HTTPGet != nil { - core_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) + corev1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) } } } } for i := range in.Spec.Template.Spec.Containers { a := &in.Spec.Template.Spec.Containers[i] - core_v1.SetDefaults_Container(a) + corev1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - core_v1.SetDefaults_ContainerPort(b) + corev1.SetDefaults_ContainerPort(b) } for j := range a.Env { b := &a.Env[j] if b.ValueFrom != nil { if b.ValueFrom.FieldRef != nil { - core_v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) + corev1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) } } } - core_v1.SetDefaults_ResourceList(&a.Resources.Limits) - core_v1.SetDefaults_ResourceList(&a.Resources.Requests) + corev1.SetDefaults_ResourceList(&a.Resources.Limits) + corev1.SetDefaults_ResourceList(&a.Resources.Requests) if a.LivenessProbe != nil { - core_v1.SetDefaults_Probe(a.LivenessProbe) + corev1.SetDefaults_Probe(a.LivenessProbe) if a.LivenessProbe.Handler.HTTPGet != nil { - core_v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) + corev1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) } } if a.ReadinessProbe != nil { - core_v1.SetDefaults_Probe(a.ReadinessProbe) + corev1.SetDefaults_Probe(a.ReadinessProbe) if a.ReadinessProbe.Handler.HTTPGet != nil { - core_v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) + corev1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) } } if a.Lifecycle != nil { if a.Lifecycle.PostStart != nil { if a.Lifecycle.PostStart.HTTPGet != nil { - core_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) + corev1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) } } if a.Lifecycle.PreStop != nil { if a.Lifecycle.PreStop.HTTPGet != nil { - core_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) + corev1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) } } } @@ -484,148 +484,148 @@ func SetObjectDefaults_ReplicaSetList(in *v1.ReplicaSetList) { func SetObjectDefaults_StatefulSet(in *v1.StatefulSet) { SetDefaults_StatefulSet(in) - core_v1.SetDefaults_PodSpec(&in.Spec.Template.Spec) + corev1.SetDefaults_PodSpec(&in.Spec.Template.Spec) for i := range in.Spec.Template.Spec.Volumes { a := &in.Spec.Template.Spec.Volumes[i] - core_v1.SetDefaults_Volume(a) + corev1.SetDefaults_Volume(a) if a.VolumeSource.HostPath != nil { - core_v1.SetDefaults_HostPathVolumeSource(a.VolumeSource.HostPath) + corev1.SetDefaults_HostPathVolumeSource(a.VolumeSource.HostPath) } if a.VolumeSource.Secret != nil { - core_v1.SetDefaults_SecretVolumeSource(a.VolumeSource.Secret) + corev1.SetDefaults_SecretVolumeSource(a.VolumeSource.Secret) } if a.VolumeSource.ISCSI != nil { - core_v1.SetDefaults_ISCSIVolumeSource(a.VolumeSource.ISCSI) + corev1.SetDefaults_ISCSIVolumeSource(a.VolumeSource.ISCSI) } if a.VolumeSource.RBD != nil { - core_v1.SetDefaults_RBDVolumeSource(a.VolumeSource.RBD) + corev1.SetDefaults_RBDVolumeSource(a.VolumeSource.RBD) } if a.VolumeSource.DownwardAPI != nil { - core_v1.SetDefaults_DownwardAPIVolumeSource(a.VolumeSource.DownwardAPI) + corev1.SetDefaults_DownwardAPIVolumeSource(a.VolumeSource.DownwardAPI) for j := range a.VolumeSource.DownwardAPI.Items { b := &a.VolumeSource.DownwardAPI.Items[j] if b.FieldRef != nil { - core_v1.SetDefaults_ObjectFieldSelector(b.FieldRef) + corev1.SetDefaults_ObjectFieldSelector(b.FieldRef) } } } if a.VolumeSource.ConfigMap != nil { - core_v1.SetDefaults_ConfigMapVolumeSource(a.VolumeSource.ConfigMap) + corev1.SetDefaults_ConfigMapVolumeSource(a.VolumeSource.ConfigMap) } if a.VolumeSource.AzureDisk != nil { - core_v1.SetDefaults_AzureDiskVolumeSource(a.VolumeSource.AzureDisk) + corev1.SetDefaults_AzureDiskVolumeSource(a.VolumeSource.AzureDisk) } if a.VolumeSource.Projected != nil { - core_v1.SetDefaults_ProjectedVolumeSource(a.VolumeSource.Projected) + corev1.SetDefaults_ProjectedVolumeSource(a.VolumeSource.Projected) for j := range a.VolumeSource.Projected.Sources { b := &a.VolumeSource.Projected.Sources[j] if b.DownwardAPI != nil { for k := range b.DownwardAPI.Items { c := &b.DownwardAPI.Items[k] if c.FieldRef != nil { - core_v1.SetDefaults_ObjectFieldSelector(c.FieldRef) + corev1.SetDefaults_ObjectFieldSelector(c.FieldRef) } } } if b.ServiceAccountToken != nil { - core_v1.SetDefaults_ServiceAccountTokenProjection(b.ServiceAccountToken) + corev1.SetDefaults_ServiceAccountTokenProjection(b.ServiceAccountToken) } } } if a.VolumeSource.ScaleIO != nil { - core_v1.SetDefaults_ScaleIOVolumeSource(a.VolumeSource.ScaleIO) + corev1.SetDefaults_ScaleIOVolumeSource(a.VolumeSource.ScaleIO) } } for i := range in.Spec.Template.Spec.InitContainers { a := &in.Spec.Template.Spec.InitContainers[i] - core_v1.SetDefaults_Container(a) + corev1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - core_v1.SetDefaults_ContainerPort(b) + corev1.SetDefaults_ContainerPort(b) } for j := range a.Env { b := &a.Env[j] if b.ValueFrom != nil { if b.ValueFrom.FieldRef != nil { - core_v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) + corev1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) } } } - core_v1.SetDefaults_ResourceList(&a.Resources.Limits) - core_v1.SetDefaults_ResourceList(&a.Resources.Requests) + corev1.SetDefaults_ResourceList(&a.Resources.Limits) + corev1.SetDefaults_ResourceList(&a.Resources.Requests) if a.LivenessProbe != nil { - core_v1.SetDefaults_Probe(a.LivenessProbe) + corev1.SetDefaults_Probe(a.LivenessProbe) if a.LivenessProbe.Handler.HTTPGet != nil { - core_v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) + corev1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) } } if a.ReadinessProbe != nil { - core_v1.SetDefaults_Probe(a.ReadinessProbe) + corev1.SetDefaults_Probe(a.ReadinessProbe) if a.ReadinessProbe.Handler.HTTPGet != nil { - core_v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) + corev1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) } } if a.Lifecycle != nil { if a.Lifecycle.PostStart != nil { if a.Lifecycle.PostStart.HTTPGet != nil { - core_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) + corev1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) } } if a.Lifecycle.PreStop != nil { if a.Lifecycle.PreStop.HTTPGet != nil { - core_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) + corev1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) } } } } for i := range in.Spec.Template.Spec.Containers { a := &in.Spec.Template.Spec.Containers[i] - core_v1.SetDefaults_Container(a) + corev1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - core_v1.SetDefaults_ContainerPort(b) + corev1.SetDefaults_ContainerPort(b) } for j := range a.Env { b := &a.Env[j] if b.ValueFrom != nil { if b.ValueFrom.FieldRef != nil { - core_v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) + corev1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) } } } - core_v1.SetDefaults_ResourceList(&a.Resources.Limits) - core_v1.SetDefaults_ResourceList(&a.Resources.Requests) + corev1.SetDefaults_ResourceList(&a.Resources.Limits) + corev1.SetDefaults_ResourceList(&a.Resources.Requests) if a.LivenessProbe != nil { - core_v1.SetDefaults_Probe(a.LivenessProbe) + corev1.SetDefaults_Probe(a.LivenessProbe) if a.LivenessProbe.Handler.HTTPGet != nil { - core_v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) + corev1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) } } if a.ReadinessProbe != nil { - core_v1.SetDefaults_Probe(a.ReadinessProbe) + corev1.SetDefaults_Probe(a.ReadinessProbe) if a.ReadinessProbe.Handler.HTTPGet != nil { - core_v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) + corev1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) } } if a.Lifecycle != nil { if a.Lifecycle.PostStart != nil { if a.Lifecycle.PostStart.HTTPGet != nil { - core_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) + corev1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) } } if a.Lifecycle.PreStop != nil { if a.Lifecycle.PreStop.HTTPGet != nil { - core_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) + corev1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) } } } } for i := range in.Spec.VolumeClaimTemplates { a := &in.Spec.VolumeClaimTemplates[i] - core_v1.SetDefaults_PersistentVolumeClaim(a) - core_v1.SetDefaults_ResourceList(&a.Spec.Resources.Limits) - core_v1.SetDefaults_ResourceList(&a.Spec.Resources.Requests) - core_v1.SetDefaults_ResourceList(&a.Status.Capacity) + corev1.SetDefaults_PersistentVolumeClaim(a) + corev1.SetDefaults_ResourceList(&a.Spec.Resources.Limits) + corev1.SetDefaults_ResourceList(&a.Spec.Resources.Requests) + corev1.SetDefaults_ResourceList(&a.Status.Capacity) } } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/v1beta1/BUILD index a4b8bea685..140c232a30 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/v1beta1/BUILD @@ -23,14 +23,14 @@ go_library( "//pkg/apis/core:go_default_library", "//pkg/apis/core/v1:go_default_library", "//pkg/apis/extensions:go_default_library", - "//vendor/k8s.io/api/apps/v1beta1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//staging/src/k8s.io/api/apps/v1beta1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", ], ) @@ -48,19 +48,19 @@ filegroup( ) go_test( - name = "go_default_xtest", + name = "go_default_test", srcs = ["defaults_test.go"], + embed = [":go_default_library"], deps = [ - ":go_default_library", "//pkg/api/legacyscheme:go_default_library", "//pkg/apis/apps/install:go_default_library", "//pkg/apis/core:go_default_library", "//pkg/apis/core/install:go_default_library", "//pkg/util/pointer:go_default_library", - "//vendor/k8s.io/api/apps/v1beta1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//staging/src/k8s.io/api/apps/v1beta1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/v1beta1/conversion.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/v1beta1/conversion.go index 6f4d27cf90..680da870a9 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/v1beta1/conversion.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/v1beta1/conversion.go @@ -60,7 +60,7 @@ func addConversionFuncs(scheme *runtime.Scheme) error { } // Add field label conversions for kinds having selectable nothing but ObjectMeta fields. - err = scheme.AddFieldLabelConversionFunc("apps/v1beta1", "StatefulSet", + err = scheme.AddFieldLabelConversionFunc(SchemeGroupVersion.WithKind("StatefulSet"), func(label, value string) (string, string, error) { switch label { case "metadata.name", "metadata.namespace", "status.successful": diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/v1beta1/zz_generated.conversion.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/v1beta1/zz_generated.conversion.go index 43547d1887..92fa13775f 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/v1beta1/zz_generated.conversion.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/v1beta1/zz_generated.conversion.go @@ -25,13 +25,13 @@ import ( v1beta1 "k8s.io/api/apps/v1beta1" v1 "k8s.io/api/core/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" conversion "k8s.io/apimachinery/pkg/conversion" runtime "k8s.io/apimachinery/pkg/runtime" apps "k8s.io/kubernetes/pkg/apis/apps" autoscaling "k8s.io/kubernetes/pkg/apis/autoscaling" core "k8s.io/kubernetes/pkg/apis/core" - core_v1 "k8s.io/kubernetes/pkg/apis/core/v1" + corev1 "k8s.io/kubernetes/pkg/apis/core/v1" extensions "k8s.io/kubernetes/pkg/apis/extensions" ) @@ -291,11 +291,11 @@ func Convert_extensions_DeploymentRollback_To_v1beta1_DeploymentRollback(in *ext } func autoConvert_v1beta1_DeploymentSpec_To_extensions_DeploymentSpec(in *v1beta1.DeploymentSpec, out *extensions.DeploymentSpec, s conversion.Scope) error { - if err := meta_v1.Convert_Pointer_int32_To_int32(&in.Replicas, &out.Replicas, s); err != nil { + if err := metav1.Convert_Pointer_int32_To_int32(&in.Replicas, &out.Replicas, s); err != nil { return err } - out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector)) - if err := core_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + out.Selector = (*metav1.LabelSelector)(unsafe.Pointer(in.Selector)) + if err := corev1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { return err } if err := Convert_v1beta1_DeploymentStrategy_To_extensions_DeploymentStrategy(&in.Strategy, &out.Strategy, s); err != nil { @@ -310,11 +310,11 @@ func autoConvert_v1beta1_DeploymentSpec_To_extensions_DeploymentSpec(in *v1beta1 } func autoConvert_extensions_DeploymentSpec_To_v1beta1_DeploymentSpec(in *extensions.DeploymentSpec, out *v1beta1.DeploymentSpec, s conversion.Scope) error { - if err := meta_v1.Convert_int32_To_Pointer_int32(&in.Replicas, &out.Replicas, s); err != nil { + if err := metav1.Convert_int32_To_Pointer_int32(&in.Replicas, &out.Replicas, s); err != nil { return err } - out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector)) - if err := core_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + out.Selector = (*metav1.LabelSelector)(unsafe.Pointer(in.Selector)) + if err := corev1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { return err } if err := Convert_extensions_DeploymentStrategy_To_v1beta1_DeploymentStrategy(&in.Strategy, &out.Strategy, s); err != nil { @@ -423,7 +423,7 @@ func autoConvert_extensions_RollingUpdateDeployment_To_v1beta1_RollingUpdateDepl } func autoConvert_v1beta1_RollingUpdateStatefulSetStrategy_To_apps_RollingUpdateStatefulSetStrategy(in *v1beta1.RollingUpdateStatefulSetStrategy, out *apps.RollingUpdateStatefulSetStrategy, s conversion.Scope) error { - if err := meta_v1.Convert_Pointer_int32_To_int32(&in.Partition, &out.Partition, s); err != nil { + if err := metav1.Convert_Pointer_int32_To_int32(&in.Partition, &out.Partition, s); err != nil { return err } return nil @@ -435,7 +435,7 @@ func Convert_v1beta1_RollingUpdateStatefulSetStrategy_To_apps_RollingUpdateState } func autoConvert_apps_RollingUpdateStatefulSetStrategy_To_v1beta1_RollingUpdateStatefulSetStrategy(in *apps.RollingUpdateStatefulSetStrategy, out *v1beta1.RollingUpdateStatefulSetStrategy, s conversion.Scope) error { - if err := meta_v1.Convert_int32_To_Pointer_int32(&in.Partition, &out.Partition, s); err != nil { + if err := metav1.Convert_int32_To_Pointer_int32(&in.Partition, &out.Partition, s); err != nil { return err } return nil @@ -614,11 +614,11 @@ func Convert_apps_StatefulSetList_To_v1beta1_StatefulSetList(in *apps.StatefulSe } func autoConvert_v1beta1_StatefulSetSpec_To_apps_StatefulSetSpec(in *v1beta1.StatefulSetSpec, out *apps.StatefulSetSpec, s conversion.Scope) error { - if err := meta_v1.Convert_Pointer_int32_To_int32(&in.Replicas, &out.Replicas, s); err != nil { + if err := metav1.Convert_Pointer_int32_To_int32(&in.Replicas, &out.Replicas, s); err != nil { return err } - out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector)) - if err := core_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + out.Selector = (*metav1.LabelSelector)(unsafe.Pointer(in.Selector)) + if err := corev1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { return err } out.VolumeClaimTemplates = *(*[]core.PersistentVolumeClaim)(unsafe.Pointer(&in.VolumeClaimTemplates)) @@ -632,11 +632,11 @@ func autoConvert_v1beta1_StatefulSetSpec_To_apps_StatefulSetSpec(in *v1beta1.Sta } func autoConvert_apps_StatefulSetSpec_To_v1beta1_StatefulSetSpec(in *apps.StatefulSetSpec, out *v1beta1.StatefulSetSpec, s conversion.Scope) error { - if err := meta_v1.Convert_int32_To_Pointer_int32(&in.Replicas, &out.Replicas, s); err != nil { + if err := metav1.Convert_int32_To_Pointer_int32(&in.Replicas, &out.Replicas, s); err != nil { return err } - out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector)) - if err := core_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + out.Selector = (*metav1.LabelSelector)(unsafe.Pointer(in.Selector)) + if err := corev1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { return err } out.VolumeClaimTemplates = *(*[]v1.PersistentVolumeClaim)(unsafe.Pointer(&in.VolumeClaimTemplates)) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/v1beta2/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/v1beta2/BUILD index c6e75e52b7..4d590ada1a 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/v1beta2/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/v1beta2/BUILD @@ -23,14 +23,14 @@ go_library( "//pkg/apis/core:go_default_library", "//pkg/apis/core/v1:go_default_library", "//pkg/apis/extensions:go_default_library", - "//vendor/k8s.io/api/apps/v1beta2:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//staging/src/k8s.io/api/apps/v1beta2:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", ], ) @@ -48,13 +48,13 @@ filegroup( ) go_test( - name = "go_default_xtest", + name = "go_default_test", srcs = [ "conversion_test.go", "defaults_test.go", ], + embed = [":go_default_library"], deps = [ - ":go_default_library", "//pkg/api/legacyscheme:go_default_library", "//pkg/apis/apps:go_default_library", "//pkg/apis/apps/install:go_default_library", @@ -63,12 +63,12 @@ go_test( "//pkg/apis/core/install:go_default_library", "//pkg/apis/extensions:go_default_library", "//pkg/util/pointer:go_default_library", - "//vendor/k8s.io/api/apps/v1beta2:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//staging/src/k8s.io/api/apps/v1beta2:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/v1beta2/conversion.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/v1beta2/conversion.go index a3671668fc..3bfd527939 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/v1beta2/conversion.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/v1beta2/conversion.go @@ -75,7 +75,7 @@ func addConversionFuncs(scheme *runtime.Scheme) error { } // Add field label conversions for kinds having selectable nothing but ObjectMeta fields. - err = scheme.AddFieldLabelConversionFunc("apps/v1beta2", "StatefulSet", + err = scheme.AddFieldLabelConversionFunc(SchemeGroupVersion.WithKind("StatefulSet"), func(label, value string) (string, string, error) { switch label { case "metadata.name", "metadata.namespace", "status.successful": diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/v1beta2/zz_generated.conversion.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/v1beta2/zz_generated.conversion.go index f13ed3f8ce..bb899ef3e3 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/v1beta2/zz_generated.conversion.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/v1beta2/zz_generated.conversion.go @@ -25,13 +25,13 @@ import ( v1beta2 "k8s.io/api/apps/v1beta2" v1 "k8s.io/api/core/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" conversion "k8s.io/apimachinery/pkg/conversion" runtime "k8s.io/apimachinery/pkg/runtime" apps "k8s.io/kubernetes/pkg/apis/apps" autoscaling "k8s.io/kubernetes/pkg/apis/autoscaling" core "k8s.io/kubernetes/pkg/apis/core" - core_v1 "k8s.io/kubernetes/pkg/apis/core/v1" + corev1 "k8s.io/kubernetes/pkg/apis/core/v1" extensions "k8s.io/kubernetes/pkg/apis/extensions" ) @@ -271,8 +271,8 @@ func Convert_extensions_DaemonSetList_To_v1beta2_DaemonSetList(in *extensions.Da } func autoConvert_v1beta2_DaemonSetSpec_To_extensions_DaemonSetSpec(in *v1beta2.DaemonSetSpec, out *extensions.DaemonSetSpec, s conversion.Scope) error { - out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector)) - if err := core_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + out.Selector = (*metav1.LabelSelector)(unsafe.Pointer(in.Selector)) + if err := corev1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { return err } if err := Convert_v1beta2_DaemonSetUpdateStrategy_To_extensions_DaemonSetUpdateStrategy(&in.UpdateStrategy, &out.UpdateStrategy, s); err != nil { @@ -284,8 +284,8 @@ func autoConvert_v1beta2_DaemonSetSpec_To_extensions_DaemonSetSpec(in *v1beta2.D } func autoConvert_extensions_DaemonSetSpec_To_v1beta2_DaemonSetSpec(in *extensions.DaemonSetSpec, out *v1beta2.DaemonSetSpec, s conversion.Scope) error { - out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector)) - if err := core_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + out.Selector = (*metav1.LabelSelector)(unsafe.Pointer(in.Selector)) + if err := corev1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { return err } if err := Convert_extensions_DaemonSetUpdateStrategy_To_v1beta2_DaemonSetUpdateStrategy(&in.UpdateStrategy, &out.UpdateStrategy, s); err != nil { @@ -458,11 +458,11 @@ func Convert_extensions_DeploymentList_To_v1beta2_DeploymentList(in *extensions. } func autoConvert_v1beta2_DeploymentSpec_To_extensions_DeploymentSpec(in *v1beta2.DeploymentSpec, out *extensions.DeploymentSpec, s conversion.Scope) error { - if err := meta_v1.Convert_Pointer_int32_To_int32(&in.Replicas, &out.Replicas, s); err != nil { + if err := metav1.Convert_Pointer_int32_To_int32(&in.Replicas, &out.Replicas, s); err != nil { return err } - out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector)) - if err := core_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + out.Selector = (*metav1.LabelSelector)(unsafe.Pointer(in.Selector)) + if err := corev1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { return err } if err := Convert_v1beta2_DeploymentStrategy_To_extensions_DeploymentStrategy(&in.Strategy, &out.Strategy, s); err != nil { @@ -476,11 +476,11 @@ func autoConvert_v1beta2_DeploymentSpec_To_extensions_DeploymentSpec(in *v1beta2 } func autoConvert_extensions_DeploymentSpec_To_v1beta2_DeploymentSpec(in *extensions.DeploymentSpec, out *v1beta2.DeploymentSpec, s conversion.Scope) error { - if err := meta_v1.Convert_int32_To_Pointer_int32(&in.Replicas, &out.Replicas, s); err != nil { + if err := metav1.Convert_int32_To_Pointer_int32(&in.Replicas, &out.Replicas, s); err != nil { return err } - out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector)) - if err := core_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + out.Selector = (*metav1.LabelSelector)(unsafe.Pointer(in.Selector)) + if err := corev1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { return err } if err := Convert_extensions_DeploymentStrategy_To_v1beta2_DeploymentStrategy(&in.Strategy, &out.Strategy, s); err != nil { @@ -659,24 +659,24 @@ func Convert_extensions_ReplicaSetList_To_v1beta2_ReplicaSetList(in *extensions. } func autoConvert_v1beta2_ReplicaSetSpec_To_extensions_ReplicaSetSpec(in *v1beta2.ReplicaSetSpec, out *extensions.ReplicaSetSpec, s conversion.Scope) error { - if err := meta_v1.Convert_Pointer_int32_To_int32(&in.Replicas, &out.Replicas, s); err != nil { + if err := metav1.Convert_Pointer_int32_To_int32(&in.Replicas, &out.Replicas, s); err != nil { return err } out.MinReadySeconds = in.MinReadySeconds - out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector)) - if err := core_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + out.Selector = (*metav1.LabelSelector)(unsafe.Pointer(in.Selector)) + if err := corev1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { return err } return nil } func autoConvert_extensions_ReplicaSetSpec_To_v1beta2_ReplicaSetSpec(in *extensions.ReplicaSetSpec, out *v1beta2.ReplicaSetSpec, s conversion.Scope) error { - if err := meta_v1.Convert_int32_To_Pointer_int32(&in.Replicas, &out.Replicas, s); err != nil { + if err := metav1.Convert_int32_To_Pointer_int32(&in.Replicas, &out.Replicas, s); err != nil { return err } out.MinReadySeconds = in.MinReadySeconds - out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector)) - if err := core_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + out.Selector = (*metav1.LabelSelector)(unsafe.Pointer(in.Selector)) + if err := corev1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { return err } return nil @@ -735,7 +735,7 @@ func autoConvert_extensions_RollingUpdateDeployment_To_v1beta2_RollingUpdateDepl } func autoConvert_v1beta2_RollingUpdateStatefulSetStrategy_To_apps_RollingUpdateStatefulSetStrategy(in *v1beta2.RollingUpdateStatefulSetStrategy, out *apps.RollingUpdateStatefulSetStrategy, s conversion.Scope) error { - if err := meta_v1.Convert_Pointer_int32_To_int32(&in.Partition, &out.Partition, s); err != nil { + if err := metav1.Convert_Pointer_int32_To_int32(&in.Partition, &out.Partition, s); err != nil { return err } return nil @@ -747,7 +747,7 @@ func Convert_v1beta2_RollingUpdateStatefulSetStrategy_To_apps_RollingUpdateState } func autoConvert_apps_RollingUpdateStatefulSetStrategy_To_v1beta2_RollingUpdateStatefulSetStrategy(in *apps.RollingUpdateStatefulSetStrategy, out *v1beta2.RollingUpdateStatefulSetStrategy, s conversion.Scope) error { - if err := meta_v1.Convert_int32_To_Pointer_int32(&in.Partition, &out.Partition, s); err != nil { + if err := metav1.Convert_int32_To_Pointer_int32(&in.Partition, &out.Partition, s); err != nil { return err } return nil @@ -926,11 +926,11 @@ func Convert_apps_StatefulSetList_To_v1beta2_StatefulSetList(in *apps.StatefulSe } func autoConvert_v1beta2_StatefulSetSpec_To_apps_StatefulSetSpec(in *v1beta2.StatefulSetSpec, out *apps.StatefulSetSpec, s conversion.Scope) error { - if err := meta_v1.Convert_Pointer_int32_To_int32(&in.Replicas, &out.Replicas, s); err != nil { + if err := metav1.Convert_Pointer_int32_To_int32(&in.Replicas, &out.Replicas, s); err != nil { return err } - out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector)) - if err := core_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + out.Selector = (*metav1.LabelSelector)(unsafe.Pointer(in.Selector)) + if err := corev1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { return err } out.VolumeClaimTemplates = *(*[]core.PersistentVolumeClaim)(unsafe.Pointer(&in.VolumeClaimTemplates)) @@ -944,11 +944,11 @@ func autoConvert_v1beta2_StatefulSetSpec_To_apps_StatefulSetSpec(in *v1beta2.Sta } func autoConvert_apps_StatefulSetSpec_To_v1beta2_StatefulSetSpec(in *apps.StatefulSetSpec, out *v1beta2.StatefulSetSpec, s conversion.Scope) error { - if err := meta_v1.Convert_int32_To_Pointer_int32(&in.Replicas, &out.Replicas, s); err != nil { + if err := metav1.Convert_int32_To_Pointer_int32(&in.Replicas, &out.Replicas, s); err != nil { return err } - out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector)) - if err := core_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + out.Selector = (*metav1.LabelSelector)(unsafe.Pointer(in.Selector)) + if err := corev1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { return err } out.VolumeClaimTemplates = *(*[]v1.PersistentVolumeClaim)(unsafe.Pointer(&in.VolumeClaimTemplates)) @@ -962,7 +962,7 @@ func autoConvert_apps_StatefulSetSpec_To_v1beta2_StatefulSetSpec(in *apps.Statef } func autoConvert_v1beta2_StatefulSetStatus_To_apps_StatefulSetStatus(in *v1beta2.StatefulSetStatus, out *apps.StatefulSetStatus, s conversion.Scope) error { - if err := meta_v1.Convert_int64_To_Pointer_int64(&in.ObservedGeneration, &out.ObservedGeneration, s); err != nil { + if err := metav1.Convert_int64_To_Pointer_int64(&in.ObservedGeneration, &out.ObservedGeneration, s); err != nil { return err } out.Replicas = in.Replicas @@ -977,7 +977,7 @@ func autoConvert_v1beta2_StatefulSetStatus_To_apps_StatefulSetStatus(in *v1beta2 } func autoConvert_apps_StatefulSetStatus_To_v1beta2_StatefulSetStatus(in *apps.StatefulSetStatus, out *v1beta2.StatefulSetStatus, s conversion.Scope) error { - if err := meta_v1.Convert_Pointer_int64_To_int64(&in.ObservedGeneration, &out.ObservedGeneration, s); err != nil { + if err := metav1.Convert_Pointer_int64_To_int64(&in.ObservedGeneration, &out.ObservedGeneration, s); err != nil { return err } out.Replicas = in.Replicas diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/zz_generated.deepcopy.go index 42e3ea6710..ac64c5c12e 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/zz_generated.deepcopy.go @@ -31,9 +31,7 @@ func (in *ControllerRevision) DeepCopyInto(out *ControllerRevision) { *out = *in out.TypeMeta = in.TypeMeta in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) - if in.Data == nil { - out.Data = nil - } else { + if in.Data != nil { out.Data = in.Data.DeepCopyObject() } return @@ -189,12 +187,8 @@ func (in *StatefulSetSpec) DeepCopyInto(out *StatefulSetSpec) { *out = *in if in.Selector != nil { in, out := &in.Selector, &out.Selector - if *in == nil { - *out = nil - } else { - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) - } + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) } in.Template.DeepCopyInto(&out.Template) if in.VolumeClaimTemplates != nil { @@ -207,12 +201,8 @@ func (in *StatefulSetSpec) DeepCopyInto(out *StatefulSetSpec) { in.UpdateStrategy.DeepCopyInto(&out.UpdateStrategy) if in.RevisionHistoryLimit != nil { in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } return } @@ -232,21 +222,13 @@ func (in *StatefulSetStatus) DeepCopyInto(out *StatefulSetStatus) { *out = *in if in.ObservedGeneration != nil { in, out := &in.ObservedGeneration, &out.ObservedGeneration - if *in == nil { - *out = nil - } else { - *out = new(int64) - **out = **in - } + *out = new(int64) + **out = **in } if in.CollisionCount != nil { in, out := &in.CollisionCount, &out.CollisionCount - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.Conditions != nil { in, out := &in.Conditions, &out.Conditions @@ -273,12 +255,8 @@ func (in *StatefulSetUpdateStrategy) DeepCopyInto(out *StatefulSetUpdateStrategy *out = *in if in.RollingUpdate != nil { in, out := &in.RollingUpdate, &out.RollingUpdate - if *in == nil { - *out = nil - } else { - *out = new(RollingUpdateStatefulSetStrategy) - **out = **in - } + *out = new(RollingUpdateStatefulSetStrategy) + **out = **in } return } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authentication/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authentication/BUILD index 1781f63423..20f2f9b100 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authentication/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authentication/BUILD @@ -15,10 +15,10 @@ go_library( ], importpath = "k8s.io/kubernetes/pkg/apis/authentication", deps = [ - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authentication/install/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authentication/install/BUILD index c65bab3292..5df2ab6412 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authentication/install/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authentication/install/BUILD @@ -14,8 +14,8 @@ go_library( "//pkg/apis/authentication:go_default_library", "//pkg/apis/authentication/v1:go_default_library", "//pkg/apis/authentication/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authentication/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authentication/v1/BUILD index aae0e09fb0..44752904f9 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authentication/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authentication/v1/BUILD @@ -18,12 +18,12 @@ go_library( importpath = "k8s.io/kubernetes/pkg/apis/authentication/v1", deps = [ "//pkg/apis/authentication:go_default_library", - "//vendor/k8s.io/api/authentication/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/api/authentication/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authentication/v1/zz_generated.conversion.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authentication/v1/zz_generated.conversion.go index 58180c0597..07e19b29a4 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authentication/v1/zz_generated.conversion.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authentication/v1/zz_generated.conversion.go @@ -24,7 +24,7 @@ import ( unsafe "unsafe" v1 "k8s.io/api/authentication/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" conversion "k8s.io/apimachinery/pkg/conversion" runtime "k8s.io/apimachinery/pkg/runtime" types "k8s.io/apimachinery/pkg/types" @@ -118,7 +118,7 @@ func Convert_authentication_TokenRequest_To_v1_TokenRequest(in *authentication.T func autoConvert_v1_TokenRequestSpec_To_authentication_TokenRequestSpec(in *v1.TokenRequestSpec, out *authentication.TokenRequestSpec, s conversion.Scope) error { out.Audiences = *(*[]string)(unsafe.Pointer(&in.Audiences)) - if err := meta_v1.Convert_Pointer_int64_To_int64(&in.ExpirationSeconds, &out.ExpirationSeconds, s); err != nil { + if err := metav1.Convert_Pointer_int64_To_int64(&in.ExpirationSeconds, &out.ExpirationSeconds, s); err != nil { return err } out.BoundObjectRef = (*authentication.BoundObjectReference)(unsafe.Pointer(in.BoundObjectRef)) @@ -132,7 +132,7 @@ func Convert_v1_TokenRequestSpec_To_authentication_TokenRequestSpec(in *v1.Token func autoConvert_authentication_TokenRequestSpec_To_v1_TokenRequestSpec(in *authentication.TokenRequestSpec, out *v1.TokenRequestSpec, s conversion.Scope) error { out.Audiences = *(*[]string)(unsafe.Pointer(&in.Audiences)) - if err := meta_v1.Convert_int64_To_Pointer_int64(&in.ExpirationSeconds, &out.ExpirationSeconds, s); err != nil { + if err := metav1.Convert_int64_To_Pointer_int64(&in.ExpirationSeconds, &out.ExpirationSeconds, s); err != nil { return err } out.BoundObjectRef = (*v1.BoundObjectReference)(unsafe.Pointer(in.BoundObjectRef)) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authentication/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authentication/v1beta1/BUILD index 5903b91b38..1b045623f9 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authentication/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authentication/v1beta1/BUILD @@ -18,10 +18,10 @@ go_library( importpath = "k8s.io/kubernetes/pkg/apis/authentication/v1beta1", deps = [ "//pkg/apis/authentication:go_default_library", - "//vendor/k8s.io/api/authentication/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/api/authentication/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authentication/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authentication/zz_generated.deepcopy.go index c0209f6efa..2a4cdd07ab 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authentication/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authentication/zz_generated.deepcopy.go @@ -98,12 +98,8 @@ func (in *TokenRequestSpec) DeepCopyInto(out *TokenRequestSpec) { } if in.BoundObjectRef != nil { in, out := &in.BoundObjectRef, &out.BoundObjectRef - if *in == nil { - *out = nil - } else { - *out = new(BoundObjectReference) - **out = **in - } + *out = new(BoundObjectReference) + **out = **in } return } @@ -208,12 +204,15 @@ func (in *UserInfo) DeepCopyInto(out *UserInfo) { in, out := &in.Extra, &out.Extra *out = make(map[string]ExtraValue, len(*in)) for key, val := range *in { + var outVal []string if val == nil { (*out)[key] = nil } else { - (*out)[key] = make([]string, len(val)) - copy((*out)[key], val) + in, out := &val, &outVal + *out = make(ExtraValue, len(*in)) + copy(*out, *in) } + (*out)[key] = outVal } } return diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authorization/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authorization/BUILD index 30e71c4966..92df2653c9 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authorization/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authorization/BUILD @@ -15,9 +15,9 @@ go_library( ], importpath = "k8s.io/kubernetes/pkg/apis/authorization", deps = [ - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authorization/install/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authorization/install/BUILD index 22dcec212d..00e0cfd3ee 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authorization/install/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authorization/install/BUILD @@ -14,8 +14,8 @@ go_library( "//pkg/apis/authorization:go_default_library", "//pkg/apis/authorization/v1:go_default_library", "//pkg/apis/authorization/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authorization/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authorization/v1/BUILD index e017792e84..e5c392a18c 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authorization/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authorization/v1/BUILD @@ -18,10 +18,10 @@ go_library( importpath = "k8s.io/kubernetes/pkg/apis/authorization/v1", deps = [ "//pkg/apis/authorization:go_default_library", - "//vendor/k8s.io/api/authorization/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/api/authorization/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authorization/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authorization/v1beta1/BUILD index 5ab1a06d50..36cb383131 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authorization/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authorization/v1beta1/BUILD @@ -18,10 +18,10 @@ go_library( importpath = "k8s.io/kubernetes/pkg/apis/authorization/v1beta1", deps = [ "//pkg/apis/authorization:go_default_library", - "//vendor/k8s.io/api/authorization/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/api/authorization/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authorization/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authorization/zz_generated.deepcopy.go index b86507774f..31672762a4 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authorization/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/authorization/zz_generated.deepcopy.go @@ -199,21 +199,13 @@ func (in *SelfSubjectAccessReviewSpec) DeepCopyInto(out *SelfSubjectAccessReview *out = *in if in.ResourceAttributes != nil { in, out := &in.ResourceAttributes, &out.ResourceAttributes - if *in == nil { - *out = nil - } else { - *out = new(ResourceAttributes) - **out = **in - } + *out = new(ResourceAttributes) + **out = **in } if in.NonResourceAttributes != nil { in, out := &in.NonResourceAttributes, &out.NonResourceAttributes - if *in == nil { - *out = nil - } else { - *out = new(NonResourceAttributes) - **out = **in - } + *out = new(NonResourceAttributes) + **out = **in } return } @@ -305,21 +297,13 @@ func (in *SubjectAccessReviewSpec) DeepCopyInto(out *SubjectAccessReviewSpec) { *out = *in if in.ResourceAttributes != nil { in, out := &in.ResourceAttributes, &out.ResourceAttributes - if *in == nil { - *out = nil - } else { - *out = new(ResourceAttributes) - **out = **in - } + *out = new(ResourceAttributes) + **out = **in } if in.NonResourceAttributes != nil { in, out := &in.NonResourceAttributes, &out.NonResourceAttributes - if *in == nil { - *out = nil - } else { - *out = new(NonResourceAttributes) - **out = **in - } + *out = new(NonResourceAttributes) + **out = **in } if in.Groups != nil { in, out := &in.Groups, &out.Groups @@ -330,12 +314,15 @@ func (in *SubjectAccessReviewSpec) DeepCopyInto(out *SubjectAccessReviewSpec) { in, out := &in.Extra, &out.Extra *out = make(map[string]ExtraValue, len(*in)) for key, val := range *in { + var outVal []string if val == nil { (*out)[key] = nil } else { - (*out)[key] = make([]string, len(val)) - copy((*out)[key], val) + in, out := &val, &outVal + *out = make(ExtraValue, len(*in)) + copy(*out, *in) } + (*out)[key] = outVal } } return diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/autoscaling/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/autoscaling/BUILD index dcca30c00d..ad9b54b402 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/autoscaling/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/autoscaling/BUILD @@ -17,10 +17,10 @@ go_library( importpath = "k8s.io/kubernetes/pkg/apis/autoscaling", deps = [ "//pkg/apis/core:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/autoscaling/install/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/autoscaling/install/BUILD index 968a92c227..74b65a1469 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/autoscaling/install/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/autoscaling/install/BUILD @@ -14,8 +14,8 @@ go_library( "//pkg/apis/autoscaling:go_default_library", "//pkg/apis/autoscaling/v1:go_default_library", "//pkg/apis/autoscaling/v2beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/autoscaling/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/autoscaling/v1/BUILD index fb475a0269..83ab98c0ef 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/autoscaling/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/autoscaling/v1/BUILD @@ -20,27 +20,27 @@ go_library( deps = [ "//pkg/apis/autoscaling:go_default_library", "//pkg/apis/core:go_default_library", - "//vendor/k8s.io/api/autoscaling/v1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/api/autoscaling/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) go_test( - name = "go_default_xtest", + name = "go_default_test", srcs = ["defaults_test.go"], + embed = [":go_default_library"], deps = [ - ":go_default_library", "//pkg/api/legacyscheme:go_default_library", "//pkg/apis/autoscaling/install:go_default_library", "//pkg/apis/core/install:go_default_library", "//pkg/util/pointer:go_default_library", - "//vendor/k8s.io/api/autoscaling/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/api/autoscaling/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/autoscaling/v1/zz_generated.conversion.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/autoscaling/v1/zz_generated.conversion.go index ea8ee6b96d..54b03a8218 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/autoscaling/v1/zz_generated.conversion.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/autoscaling/v1/zz_generated.conversion.go @@ -24,9 +24,9 @@ import ( unsafe "unsafe" v1 "k8s.io/api/autoscaling/v1" - core_v1 "k8s.io/api/core/v1" + corev1 "k8s.io/api/core/v1" resource "k8s.io/apimachinery/pkg/api/resource" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" conversion "k8s.io/apimachinery/pkg/conversion" runtime "k8s.io/apimachinery/pkg/runtime" autoscaling "k8s.io/kubernetes/pkg/apis/autoscaling" @@ -108,7 +108,7 @@ func Convert_autoscaling_CrossVersionObjectReference_To_v1_CrossVersionObjectRef func autoConvert_v1_ExternalMetricSource_To_autoscaling_ExternalMetricSource(in *v1.ExternalMetricSource, out *autoscaling.ExternalMetricSource, s conversion.Scope) error { out.MetricName = in.MetricName - out.MetricSelector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.MetricSelector)) + out.MetricSelector = (*metav1.LabelSelector)(unsafe.Pointer(in.MetricSelector)) out.TargetValue = (*resource.Quantity)(unsafe.Pointer(in.TargetValue)) out.TargetAverageValue = (*resource.Quantity)(unsafe.Pointer(in.TargetAverageValue)) return nil @@ -121,7 +121,7 @@ func Convert_v1_ExternalMetricSource_To_autoscaling_ExternalMetricSource(in *v1. func autoConvert_autoscaling_ExternalMetricSource_To_v1_ExternalMetricSource(in *autoscaling.ExternalMetricSource, out *v1.ExternalMetricSource, s conversion.Scope) error { out.MetricName = in.MetricName - out.MetricSelector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.MetricSelector)) + out.MetricSelector = (*metav1.LabelSelector)(unsafe.Pointer(in.MetricSelector)) out.TargetValue = (*resource.Quantity)(unsafe.Pointer(in.TargetValue)) out.TargetAverageValue = (*resource.Quantity)(unsafe.Pointer(in.TargetAverageValue)) return nil @@ -134,7 +134,7 @@ func Convert_autoscaling_ExternalMetricSource_To_v1_ExternalMetricSource(in *aut func autoConvert_v1_ExternalMetricStatus_To_autoscaling_ExternalMetricStatus(in *v1.ExternalMetricStatus, out *autoscaling.ExternalMetricStatus, s conversion.Scope) error { out.MetricName = in.MetricName - out.MetricSelector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.MetricSelector)) + out.MetricSelector = (*metav1.LabelSelector)(unsafe.Pointer(in.MetricSelector)) out.CurrentValue = in.CurrentValue out.CurrentAverageValue = (*resource.Quantity)(unsafe.Pointer(in.CurrentAverageValue)) return nil @@ -147,7 +147,7 @@ func Convert_v1_ExternalMetricStatus_To_autoscaling_ExternalMetricStatus(in *v1. func autoConvert_autoscaling_ExternalMetricStatus_To_v1_ExternalMetricStatus(in *autoscaling.ExternalMetricStatus, out *v1.ExternalMetricStatus, s conversion.Scope) error { out.MetricName = in.MetricName - out.MetricSelector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.MetricSelector)) + out.MetricSelector = (*metav1.LabelSelector)(unsafe.Pointer(in.MetricSelector)) out.CurrentValue = in.CurrentValue out.CurrentAverageValue = (*resource.Quantity)(unsafe.Pointer(in.CurrentAverageValue)) return nil @@ -196,7 +196,7 @@ func Convert_v1_HorizontalPodAutoscalerCondition_To_autoscaling_HorizontalPodAut func autoConvert_autoscaling_HorizontalPodAutoscalerCondition_To_v1_HorizontalPodAutoscalerCondition(in *autoscaling.HorizontalPodAutoscalerCondition, out *v1.HorizontalPodAutoscalerCondition, s conversion.Scope) error { out.Type = v1.HorizontalPodAutoscalerConditionType(in.Type) - out.Status = core_v1.ConditionStatus(in.Status) + out.Status = corev1.ConditionStatus(in.Status) out.LastTransitionTime = in.LastTransitionTime out.Reason = in.Reason out.Message = in.Message @@ -272,7 +272,7 @@ func autoConvert_autoscaling_HorizontalPodAutoscalerSpec_To_v1_HorizontalPodAuto func autoConvert_v1_HorizontalPodAutoscalerStatus_To_autoscaling_HorizontalPodAutoscalerStatus(in *v1.HorizontalPodAutoscalerStatus, out *autoscaling.HorizontalPodAutoscalerStatus, s conversion.Scope) error { out.ObservedGeneration = (*int64)(unsafe.Pointer(in.ObservedGeneration)) - out.LastScaleTime = (*meta_v1.Time)(unsafe.Pointer(in.LastScaleTime)) + out.LastScaleTime = (*metav1.Time)(unsafe.Pointer(in.LastScaleTime)) out.CurrentReplicas = in.CurrentReplicas out.DesiredReplicas = in.DesiredReplicas // WARNING: in.CurrentCPUUtilizationPercentage requires manual conversion: does not exist in peer-type @@ -281,7 +281,7 @@ func autoConvert_v1_HorizontalPodAutoscalerStatus_To_autoscaling_HorizontalPodAu func autoConvert_autoscaling_HorizontalPodAutoscalerStatus_To_v1_HorizontalPodAutoscalerStatus(in *autoscaling.HorizontalPodAutoscalerStatus, out *v1.HorizontalPodAutoscalerStatus, s conversion.Scope) error { out.ObservedGeneration = (*int64)(unsafe.Pointer(in.ObservedGeneration)) - out.LastScaleTime = (*meta_v1.Time)(unsafe.Pointer(in.LastScaleTime)) + out.LastScaleTime = (*metav1.Time)(unsafe.Pointer(in.LastScaleTime)) out.CurrentReplicas = in.CurrentReplicas out.DesiredReplicas = in.DesiredReplicas // WARNING: in.CurrentMetrics requires manual conversion: does not exist in peer-type @@ -458,7 +458,7 @@ func Convert_v1_ResourceMetricSource_To_autoscaling_ResourceMetricSource(in *v1. } func autoConvert_autoscaling_ResourceMetricSource_To_v1_ResourceMetricSource(in *autoscaling.ResourceMetricSource, out *v1.ResourceMetricSource, s conversion.Scope) error { - out.Name = core_v1.ResourceName(in.Name) + out.Name = corev1.ResourceName(in.Name) out.TargetAverageUtilization = (*int32)(unsafe.Pointer(in.TargetAverageUtilization)) out.TargetAverageValue = (*resource.Quantity)(unsafe.Pointer(in.TargetAverageValue)) return nil @@ -482,7 +482,7 @@ func Convert_v1_ResourceMetricStatus_To_autoscaling_ResourceMetricStatus(in *v1. } func autoConvert_autoscaling_ResourceMetricStatus_To_v1_ResourceMetricStatus(in *autoscaling.ResourceMetricStatus, out *v1.ResourceMetricStatus, s conversion.Scope) error { - out.Name = core_v1.ResourceName(in.Name) + out.Name = corev1.ResourceName(in.Name) out.CurrentAverageUtilization = (*int32)(unsafe.Pointer(in.CurrentAverageUtilization)) out.CurrentAverageValue = in.CurrentAverageValue return nil diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/autoscaling/v2beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/autoscaling/v2beta1/BUILD index 740638b008..07aaa3081f 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/autoscaling/v2beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/autoscaling/v2beta1/BUILD @@ -19,13 +19,13 @@ go_library( deps = [ "//pkg/apis/autoscaling:go_default_library", "//pkg/apis/core:go_default_library", - "//vendor/k8s.io/api/autoscaling/v2beta1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/api/autoscaling/v2beta1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) @@ -43,18 +43,18 @@ filegroup( ) go_test( - name = "go_default_xtest", + name = "go_default_test", srcs = ["defaults_test.go"], + embed = [":go_default_library"], deps = [ - ":go_default_library", "//pkg/api/legacyscheme:go_default_library", "//pkg/apis/autoscaling:go_default_library", "//pkg/apis/autoscaling/install:go_default_library", "//pkg/apis/core/install:go_default_library", "//pkg/util/pointer:go_default_library", - "//vendor/k8s.io/api/autoscaling/v2beta1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/api/autoscaling/v2beta1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/autoscaling/v2beta1/zz_generated.conversion.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/autoscaling/v2beta1/zz_generated.conversion.go index 0b4cecc7f3..cd6eb555fb 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/autoscaling/v2beta1/zz_generated.conversion.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/autoscaling/v2beta1/zz_generated.conversion.go @@ -24,7 +24,7 @@ import ( unsafe "unsafe" v2beta1 "k8s.io/api/autoscaling/v2beta1" - core_v1 "k8s.io/api/core/v1" + corev1 "k8s.io/api/core/v1" resource "k8s.io/apimachinery/pkg/api/resource" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" conversion "k8s.io/apimachinery/pkg/conversion" @@ -200,7 +200,7 @@ func Convert_v2beta1_HorizontalPodAutoscalerCondition_To_autoscaling_HorizontalP func autoConvert_autoscaling_HorizontalPodAutoscalerCondition_To_v2beta1_HorizontalPodAutoscalerCondition(in *autoscaling.HorizontalPodAutoscalerCondition, out *v2beta1.HorizontalPodAutoscalerCondition, s conversion.Scope) error { out.Type = v2beta1.HorizontalPodAutoscalerConditionType(in.Type) - out.Status = core_v1.ConditionStatus(in.Status) + out.Status = corev1.ConditionStatus(in.Status) out.LastTransitionTime = in.LastTransitionTime out.Reason = in.Reason out.Message = in.Message @@ -463,7 +463,7 @@ func Convert_v2beta1_ResourceMetricSource_To_autoscaling_ResourceMetricSource(in } func autoConvert_autoscaling_ResourceMetricSource_To_v2beta1_ResourceMetricSource(in *autoscaling.ResourceMetricSource, out *v2beta1.ResourceMetricSource, s conversion.Scope) error { - out.Name = core_v1.ResourceName(in.Name) + out.Name = corev1.ResourceName(in.Name) out.TargetAverageUtilization = (*int32)(unsafe.Pointer(in.TargetAverageUtilization)) out.TargetAverageValue = (*resource.Quantity)(unsafe.Pointer(in.TargetAverageValue)) return nil @@ -487,7 +487,7 @@ func Convert_v2beta1_ResourceMetricStatus_To_autoscaling_ResourceMetricStatus(in } func autoConvert_autoscaling_ResourceMetricStatus_To_v2beta1_ResourceMetricStatus(in *autoscaling.ResourceMetricStatus, out *v2beta1.ResourceMetricStatus, s conversion.Scope) error { - out.Name = core_v1.ResourceName(in.Name) + out.Name = corev1.ResourceName(in.Name) out.CurrentAverageUtilization = (*int32)(unsafe.Pointer(in.CurrentAverageUtilization)) out.CurrentAverageValue = in.CurrentAverageValue return nil diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/autoscaling/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/autoscaling/zz_generated.deepcopy.go index 12c518d36c..0681900073 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/autoscaling/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/autoscaling/zz_generated.deepcopy.go @@ -46,30 +46,18 @@ func (in *ExternalMetricSource) DeepCopyInto(out *ExternalMetricSource) { *out = *in if in.MetricSelector != nil { in, out := &in.MetricSelector, &out.MetricSelector - if *in == nil { - *out = nil - } else { - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) - } + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) } if in.TargetValue != nil { in, out := &in.TargetValue, &out.TargetValue - if *in == nil { - *out = nil - } else { - x := (*in).DeepCopy() - *out = &x - } + x := (*in).DeepCopy() + *out = &x } if in.TargetAverageValue != nil { in, out := &in.TargetAverageValue, &out.TargetAverageValue - if *in == nil { - *out = nil - } else { - x := (*in).DeepCopy() - *out = &x - } + x := (*in).DeepCopy() + *out = &x } return } @@ -89,22 +77,14 @@ func (in *ExternalMetricStatus) DeepCopyInto(out *ExternalMetricStatus) { *out = *in if in.MetricSelector != nil { in, out := &in.MetricSelector, &out.MetricSelector - if *in == nil { - *out = nil - } else { - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) - } + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) } out.CurrentValue = in.CurrentValue.DeepCopy() if in.CurrentAverageValue != nil { in, out := &in.CurrentAverageValue, &out.CurrentAverageValue - if *in == nil { - *out = nil - } else { - x := (*in).DeepCopy() - *out = &x - } + x := (*in).DeepCopy() + *out = &x } return } @@ -203,12 +183,8 @@ func (in *HorizontalPodAutoscalerSpec) DeepCopyInto(out *HorizontalPodAutoscaler out.ScaleTargetRef = in.ScaleTargetRef if in.MinReplicas != nil { in, out := &in.MinReplicas, &out.MinReplicas - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.Metrics != nil { in, out := &in.Metrics, &out.Metrics @@ -235,20 +211,12 @@ func (in *HorizontalPodAutoscalerStatus) DeepCopyInto(out *HorizontalPodAutoscal *out = *in if in.ObservedGeneration != nil { in, out := &in.ObservedGeneration, &out.ObservedGeneration - if *in == nil { - *out = nil - } else { - *out = new(int64) - **out = **in - } + *out = new(int64) + **out = **in } if in.LastScaleTime != nil { in, out := &in.LastScaleTime, &out.LastScaleTime - if *in == nil { - *out = nil - } else { - *out = (*in).DeepCopy() - } + *out = (*in).DeepCopy() } if in.CurrentMetrics != nil { in, out := &in.CurrentMetrics, &out.CurrentMetrics @@ -282,39 +250,23 @@ func (in *MetricSpec) DeepCopyInto(out *MetricSpec) { *out = *in if in.Object != nil { in, out := &in.Object, &out.Object - if *in == nil { - *out = nil - } else { - *out = new(ObjectMetricSource) - (*in).DeepCopyInto(*out) - } + *out = new(ObjectMetricSource) + (*in).DeepCopyInto(*out) } if in.Pods != nil { in, out := &in.Pods, &out.Pods - if *in == nil { - *out = nil - } else { - *out = new(PodsMetricSource) - (*in).DeepCopyInto(*out) - } + *out = new(PodsMetricSource) + (*in).DeepCopyInto(*out) } if in.Resource != nil { in, out := &in.Resource, &out.Resource - if *in == nil { - *out = nil - } else { - *out = new(ResourceMetricSource) - (*in).DeepCopyInto(*out) - } + *out = new(ResourceMetricSource) + (*in).DeepCopyInto(*out) } if in.External != nil { in, out := &in.External, &out.External - if *in == nil { - *out = nil - } else { - *out = new(ExternalMetricSource) - (*in).DeepCopyInto(*out) - } + *out = new(ExternalMetricSource) + (*in).DeepCopyInto(*out) } return } @@ -334,39 +286,23 @@ func (in *MetricStatus) DeepCopyInto(out *MetricStatus) { *out = *in if in.Object != nil { in, out := &in.Object, &out.Object - if *in == nil { - *out = nil - } else { - *out = new(ObjectMetricStatus) - (*in).DeepCopyInto(*out) - } + *out = new(ObjectMetricStatus) + (*in).DeepCopyInto(*out) } if in.Pods != nil { in, out := &in.Pods, &out.Pods - if *in == nil { - *out = nil - } else { - *out = new(PodsMetricStatus) - (*in).DeepCopyInto(*out) - } + *out = new(PodsMetricStatus) + (*in).DeepCopyInto(*out) } if in.Resource != nil { in, out := &in.Resource, &out.Resource - if *in == nil { - *out = nil - } else { - *out = new(ResourceMetricStatus) - (*in).DeepCopyInto(*out) - } + *out = new(ResourceMetricStatus) + (*in).DeepCopyInto(*out) } if in.External != nil { in, out := &in.External, &out.External - if *in == nil { - *out = nil - } else { - *out = new(ExternalMetricStatus) - (*in).DeepCopyInto(*out) - } + *out = new(ExternalMetricStatus) + (*in).DeepCopyInto(*out) } return } @@ -456,21 +392,13 @@ func (in *ResourceMetricSource) DeepCopyInto(out *ResourceMetricSource) { *out = *in if in.TargetAverageUtilization != nil { in, out := &in.TargetAverageUtilization, &out.TargetAverageUtilization - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.TargetAverageValue != nil { in, out := &in.TargetAverageValue, &out.TargetAverageValue - if *in == nil { - *out = nil - } else { - x := (*in).DeepCopy() - *out = &x - } + x := (*in).DeepCopy() + *out = &x } return } @@ -490,12 +418,8 @@ func (in *ResourceMetricStatus) DeepCopyInto(out *ResourceMetricStatus) { *out = *in if in.CurrentAverageUtilization != nil { in, out := &in.CurrentAverageUtilization, &out.CurrentAverageUtilization - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } out.CurrentAverageValue = in.CurrentAverageValue.DeepCopy() return diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/BUILD index d8c7452d19..b6157e8f85 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/BUILD @@ -16,9 +16,9 @@ go_library( importpath = "k8s.io/kubernetes/pkg/apis/batch", deps = [ "//pkg/apis/core:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/install/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/install/BUILD index b0399ab6b2..ce964905c7 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/install/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/install/BUILD @@ -15,8 +15,8 @@ go_library( "//pkg/apis/batch/v1:go_default_library", "//pkg/apis/batch/v1beta1:go_default_library", "//pkg/apis/batch/v2alpha1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v1/BUILD index b6feac5e2d..c7c36b8240 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v1/BUILD @@ -21,28 +21,28 @@ go_library( "//pkg/apis/batch:go_default_library", "//pkg/apis/core:go_default_library", "//pkg/apis/core/v1:go_default_library", - "//vendor/k8s.io/api/batch/v1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/api/batch/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) go_test( - name = "go_default_xtest", + name = "go_default_test", srcs = ["defaults_test.go"], + embed = [":go_default_library"], deps = [ - ":go_default_library", "//pkg/api/legacyscheme:go_default_library", "//pkg/apis/batch/install:go_default_library", "//pkg/apis/core/install:go_default_library", "//pkg/util/pointer:go_default_library", - "//vendor/k8s.io/api/batch/v1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/api/batch/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v1/conversion.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v1/conversion.go index 98aae5c276..9c20fa9370 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v1/conversion.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v1/conversion.go @@ -37,7 +37,7 @@ func addConversionFuncs(scheme *runtime.Scheme) error { return err } - return scheme.AddFieldLabelConversionFunc("batch/v1", "Job", + return scheme.AddFieldLabelConversionFunc(SchemeGroupVersion.WithKind("Job"), func(label, value string) (string, string, error) { switch label { case "metadata.name", "metadata.namespace", "status.successful": diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v1/zz_generated.conversion.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v1/zz_generated.conversion.go index 32d2cae911..f8d21dcfb1 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v1/zz_generated.conversion.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v1/zz_generated.conversion.go @@ -24,13 +24,13 @@ import ( unsafe "unsafe" v1 "k8s.io/api/batch/v1" - core_v1 "k8s.io/api/core/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" conversion "k8s.io/apimachinery/pkg/conversion" runtime "k8s.io/apimachinery/pkg/runtime" batch "k8s.io/kubernetes/pkg/apis/batch" core "k8s.io/kubernetes/pkg/apis/core" - apis_core_v1 "k8s.io/kubernetes/pkg/apis/core/v1" + apiscorev1 "k8s.io/kubernetes/pkg/apis/core/v1" ) func init() { @@ -103,7 +103,7 @@ func Convert_v1_JobCondition_To_batch_JobCondition(in *v1.JobCondition, out *bat func autoConvert_batch_JobCondition_To_v1_JobCondition(in *batch.JobCondition, out *v1.JobCondition, s conversion.Scope) error { out.Type = v1.JobConditionType(in.Type) - out.Status = core_v1.ConditionStatus(in.Status) + out.Status = corev1.ConditionStatus(in.Status) out.LastProbeTime = in.LastProbeTime out.LastTransitionTime = in.LastTransitionTime out.Reason = in.Reason @@ -163,9 +163,9 @@ func autoConvert_v1_JobSpec_To_batch_JobSpec(in *v1.JobSpec, out *batch.JobSpec, out.Completions = (*int32)(unsafe.Pointer(in.Completions)) out.ActiveDeadlineSeconds = (*int64)(unsafe.Pointer(in.ActiveDeadlineSeconds)) out.BackoffLimit = (*int32)(unsafe.Pointer(in.BackoffLimit)) - out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector)) + out.Selector = (*metav1.LabelSelector)(unsafe.Pointer(in.Selector)) out.ManualSelector = (*bool)(unsafe.Pointer(in.ManualSelector)) - if err := apis_core_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + if err := apiscorev1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { return err } return nil @@ -176,9 +176,9 @@ func autoConvert_batch_JobSpec_To_v1_JobSpec(in *batch.JobSpec, out *v1.JobSpec, out.Completions = (*int32)(unsafe.Pointer(in.Completions)) out.ActiveDeadlineSeconds = (*int64)(unsafe.Pointer(in.ActiveDeadlineSeconds)) out.BackoffLimit = (*int32)(unsafe.Pointer(in.BackoffLimit)) - out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector)) + out.Selector = (*metav1.LabelSelector)(unsafe.Pointer(in.Selector)) out.ManualSelector = (*bool)(unsafe.Pointer(in.ManualSelector)) - if err := apis_core_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + if err := apiscorev1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { return err } return nil @@ -186,8 +186,8 @@ func autoConvert_batch_JobSpec_To_v1_JobSpec(in *batch.JobSpec, out *v1.JobSpec, func autoConvert_v1_JobStatus_To_batch_JobStatus(in *v1.JobStatus, out *batch.JobStatus, s conversion.Scope) error { out.Conditions = *(*[]batch.JobCondition)(unsafe.Pointer(&in.Conditions)) - out.StartTime = (*meta_v1.Time)(unsafe.Pointer(in.StartTime)) - out.CompletionTime = (*meta_v1.Time)(unsafe.Pointer(in.CompletionTime)) + out.StartTime = (*metav1.Time)(unsafe.Pointer(in.StartTime)) + out.CompletionTime = (*metav1.Time)(unsafe.Pointer(in.CompletionTime)) out.Active = in.Active out.Succeeded = in.Succeeded out.Failed = in.Failed @@ -201,8 +201,8 @@ func Convert_v1_JobStatus_To_batch_JobStatus(in *v1.JobStatus, out *batch.JobSta func autoConvert_batch_JobStatus_To_v1_JobStatus(in *batch.JobStatus, out *v1.JobStatus, s conversion.Scope) error { out.Conditions = *(*[]v1.JobCondition)(unsafe.Pointer(&in.Conditions)) - out.StartTime = (*meta_v1.Time)(unsafe.Pointer(in.StartTime)) - out.CompletionTime = (*meta_v1.Time)(unsafe.Pointer(in.CompletionTime)) + out.StartTime = (*metav1.Time)(unsafe.Pointer(in.StartTime)) + out.CompletionTime = (*metav1.Time)(unsafe.Pointer(in.CompletionTime)) out.Active = in.Active out.Succeeded = in.Succeeded out.Failed = in.Failed diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v1/zz_generated.defaults.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v1/zz_generated.defaults.go index 859d17b768..201e3b2285 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v1/zz_generated.defaults.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v1/zz_generated.defaults.go @@ -23,7 +23,7 @@ package v1 import ( v1 "k8s.io/api/batch/v1" runtime "k8s.io/apimachinery/pkg/runtime" - core_v1 "k8s.io/kubernetes/pkg/apis/core/v1" + corev1 "k8s.io/kubernetes/pkg/apis/core/v1" ) // RegisterDefaults adds defaulters functions to the given scheme. @@ -37,138 +37,138 @@ func RegisterDefaults(scheme *runtime.Scheme) error { func SetObjectDefaults_Job(in *v1.Job) { SetDefaults_Job(in) - core_v1.SetDefaults_PodSpec(&in.Spec.Template.Spec) + corev1.SetDefaults_PodSpec(&in.Spec.Template.Spec) for i := range in.Spec.Template.Spec.Volumes { a := &in.Spec.Template.Spec.Volumes[i] - core_v1.SetDefaults_Volume(a) + corev1.SetDefaults_Volume(a) if a.VolumeSource.HostPath != nil { - core_v1.SetDefaults_HostPathVolumeSource(a.VolumeSource.HostPath) + corev1.SetDefaults_HostPathVolumeSource(a.VolumeSource.HostPath) } if a.VolumeSource.Secret != nil { - core_v1.SetDefaults_SecretVolumeSource(a.VolumeSource.Secret) + corev1.SetDefaults_SecretVolumeSource(a.VolumeSource.Secret) } if a.VolumeSource.ISCSI != nil { - core_v1.SetDefaults_ISCSIVolumeSource(a.VolumeSource.ISCSI) + corev1.SetDefaults_ISCSIVolumeSource(a.VolumeSource.ISCSI) } if a.VolumeSource.RBD != nil { - core_v1.SetDefaults_RBDVolumeSource(a.VolumeSource.RBD) + corev1.SetDefaults_RBDVolumeSource(a.VolumeSource.RBD) } if a.VolumeSource.DownwardAPI != nil { - core_v1.SetDefaults_DownwardAPIVolumeSource(a.VolumeSource.DownwardAPI) + corev1.SetDefaults_DownwardAPIVolumeSource(a.VolumeSource.DownwardAPI) for j := range a.VolumeSource.DownwardAPI.Items { b := &a.VolumeSource.DownwardAPI.Items[j] if b.FieldRef != nil { - core_v1.SetDefaults_ObjectFieldSelector(b.FieldRef) + corev1.SetDefaults_ObjectFieldSelector(b.FieldRef) } } } if a.VolumeSource.ConfigMap != nil { - core_v1.SetDefaults_ConfigMapVolumeSource(a.VolumeSource.ConfigMap) + corev1.SetDefaults_ConfigMapVolumeSource(a.VolumeSource.ConfigMap) } if a.VolumeSource.AzureDisk != nil { - core_v1.SetDefaults_AzureDiskVolumeSource(a.VolumeSource.AzureDisk) + corev1.SetDefaults_AzureDiskVolumeSource(a.VolumeSource.AzureDisk) } if a.VolumeSource.Projected != nil { - core_v1.SetDefaults_ProjectedVolumeSource(a.VolumeSource.Projected) + corev1.SetDefaults_ProjectedVolumeSource(a.VolumeSource.Projected) for j := range a.VolumeSource.Projected.Sources { b := &a.VolumeSource.Projected.Sources[j] if b.DownwardAPI != nil { for k := range b.DownwardAPI.Items { c := &b.DownwardAPI.Items[k] if c.FieldRef != nil { - core_v1.SetDefaults_ObjectFieldSelector(c.FieldRef) + corev1.SetDefaults_ObjectFieldSelector(c.FieldRef) } } } if b.ServiceAccountToken != nil { - core_v1.SetDefaults_ServiceAccountTokenProjection(b.ServiceAccountToken) + corev1.SetDefaults_ServiceAccountTokenProjection(b.ServiceAccountToken) } } } if a.VolumeSource.ScaleIO != nil { - core_v1.SetDefaults_ScaleIOVolumeSource(a.VolumeSource.ScaleIO) + corev1.SetDefaults_ScaleIOVolumeSource(a.VolumeSource.ScaleIO) } } for i := range in.Spec.Template.Spec.InitContainers { a := &in.Spec.Template.Spec.InitContainers[i] - core_v1.SetDefaults_Container(a) + corev1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - core_v1.SetDefaults_ContainerPort(b) + corev1.SetDefaults_ContainerPort(b) } for j := range a.Env { b := &a.Env[j] if b.ValueFrom != nil { if b.ValueFrom.FieldRef != nil { - core_v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) + corev1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) } } } - core_v1.SetDefaults_ResourceList(&a.Resources.Limits) - core_v1.SetDefaults_ResourceList(&a.Resources.Requests) + corev1.SetDefaults_ResourceList(&a.Resources.Limits) + corev1.SetDefaults_ResourceList(&a.Resources.Requests) if a.LivenessProbe != nil { - core_v1.SetDefaults_Probe(a.LivenessProbe) + corev1.SetDefaults_Probe(a.LivenessProbe) if a.LivenessProbe.Handler.HTTPGet != nil { - core_v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) + corev1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) } } if a.ReadinessProbe != nil { - core_v1.SetDefaults_Probe(a.ReadinessProbe) + corev1.SetDefaults_Probe(a.ReadinessProbe) if a.ReadinessProbe.Handler.HTTPGet != nil { - core_v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) + corev1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) } } if a.Lifecycle != nil { if a.Lifecycle.PostStart != nil { if a.Lifecycle.PostStart.HTTPGet != nil { - core_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) + corev1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) } } if a.Lifecycle.PreStop != nil { if a.Lifecycle.PreStop.HTTPGet != nil { - core_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) + corev1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) } } } } for i := range in.Spec.Template.Spec.Containers { a := &in.Spec.Template.Spec.Containers[i] - core_v1.SetDefaults_Container(a) + corev1.SetDefaults_Container(a) for j := range a.Ports { b := &a.Ports[j] - core_v1.SetDefaults_ContainerPort(b) + corev1.SetDefaults_ContainerPort(b) } for j := range a.Env { b := &a.Env[j] if b.ValueFrom != nil { if b.ValueFrom.FieldRef != nil { - core_v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) + corev1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) } } } - core_v1.SetDefaults_ResourceList(&a.Resources.Limits) - core_v1.SetDefaults_ResourceList(&a.Resources.Requests) + corev1.SetDefaults_ResourceList(&a.Resources.Limits) + corev1.SetDefaults_ResourceList(&a.Resources.Requests) if a.LivenessProbe != nil { - core_v1.SetDefaults_Probe(a.LivenessProbe) + corev1.SetDefaults_Probe(a.LivenessProbe) if a.LivenessProbe.Handler.HTTPGet != nil { - core_v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) + corev1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) } } if a.ReadinessProbe != nil { - core_v1.SetDefaults_Probe(a.ReadinessProbe) + corev1.SetDefaults_Probe(a.ReadinessProbe) if a.ReadinessProbe.Handler.HTTPGet != nil { - core_v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) + corev1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) } } if a.Lifecycle != nil { if a.Lifecycle.PostStart != nil { if a.Lifecycle.PostStart.HTTPGet != nil { - core_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) + corev1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) } } if a.Lifecycle.PreStop != nil { if a.Lifecycle.PreStop.HTTPGet != nil { - core_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) + corev1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) } } } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v1beta1/BUILD index 4c2a640eb1..57391ed63b 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v1beta1/BUILD @@ -22,26 +22,26 @@ go_library( "//pkg/apis/batch/v1:go_default_library", "//pkg/apis/core:go_default_library", "//pkg/apis/core/v1:go_default_library", - "//vendor/k8s.io/api/batch/v1beta1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/api/batch/v1beta1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) go_test( - name = "go_default_xtest", + name = "go_default_test", srcs = ["defaults_test.go"], + embed = [":go_default_library"], deps = [ - ":go_default_library", "//pkg/api/legacyscheme:go_default_library", "//pkg/apis/batch/install:go_default_library", "//pkg/apis/core/install:go_default_library", "//pkg/util/pointer:go_default_library", - "//vendor/k8s.io/api/batch/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/api/batch/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v1beta1/conversion.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v1beta1/conversion.go index bc56896cdd..c98fe65af1 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v1beta1/conversion.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v1beta1/conversion.go @@ -27,7 +27,7 @@ func addConversionFuncs(scheme *runtime.Scheme) error { // Add field label conversions for kinds having selectable nothing but ObjectMeta fields. for _, k := range []string{"Job", "JobTemplate", "CronJob"} { kind := k // don't close over range variables - err = scheme.AddFieldLabelConversionFunc("batch/v1beta1", kind, + err = scheme.AddFieldLabelConversionFunc(SchemeGroupVersion.WithKind(kind), func(label, value string) (string, string, error) { switch label { case "metadata.name", "metadata.namespace", "status.successful": diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v1beta1/doc.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v1beta1/doc.go index 56e1c24e48..0697a2c8d5 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v1beta1/doc.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v1beta1/doc.go @@ -15,6 +15,7 @@ limitations under the License. */ // +k8s:conversion-gen=k8s.io/kubernetes/pkg/apis/batch +// +k8s:conversion-gen=k8s.io/kubernetes/pkg/apis/batch/v1 // +k8s:conversion-gen-external-types=k8s.io/api/batch/v1beta1 // +k8s:defaulter-gen=TypeMeta // +k8s:defaulter-gen-input=../../../../vendor/k8s.io/api/batch/v1beta1 diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v1beta1/zz_generated.conversion.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v1beta1/zz_generated.conversion.go index 98121accaf..7d23957fde 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v1beta1/zz_generated.conversion.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v1beta1/zz_generated.conversion.go @@ -24,12 +24,12 @@ import ( unsafe "unsafe" v1beta1 "k8s.io/api/batch/v1beta1" - core_v1 "k8s.io/api/core/v1" + corev1 "k8s.io/api/core/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" conversion "k8s.io/apimachinery/pkg/conversion" runtime "k8s.io/apimachinery/pkg/runtime" batch "k8s.io/kubernetes/pkg/apis/batch" - batch_v1 "k8s.io/kubernetes/pkg/apis/batch/v1" + batchv1 "k8s.io/kubernetes/pkg/apis/batch/v1" core "k8s.io/kubernetes/pkg/apis/core" ) @@ -178,7 +178,7 @@ func Convert_v1beta1_CronJobStatus_To_batch_CronJobStatus(in *v1beta1.CronJobSta } func autoConvert_batch_CronJobStatus_To_v1beta1_CronJobStatus(in *batch.CronJobStatus, out *v1beta1.CronJobStatus, s conversion.Scope) error { - out.Active = *(*[]core_v1.ObjectReference)(unsafe.Pointer(&in.Active)) + out.Active = *(*[]corev1.ObjectReference)(unsafe.Pointer(&in.Active)) out.LastScheduleTime = (*v1.Time)(unsafe.Pointer(in.LastScheduleTime)) return nil } @@ -216,7 +216,7 @@ func Convert_batch_JobTemplate_To_v1beta1_JobTemplate(in *batch.JobTemplate, out func autoConvert_v1beta1_JobTemplateSpec_To_batch_JobTemplateSpec(in *v1beta1.JobTemplateSpec, out *batch.JobTemplateSpec, s conversion.Scope) error { out.ObjectMeta = in.ObjectMeta - if err := batch_v1.Convert_v1_JobSpec_To_batch_JobSpec(&in.Spec, &out.Spec, s); err != nil { + if err := batchv1.Convert_v1_JobSpec_To_batch_JobSpec(&in.Spec, &out.Spec, s); err != nil { return err } return nil @@ -229,7 +229,7 @@ func Convert_v1beta1_JobTemplateSpec_To_batch_JobTemplateSpec(in *v1beta1.JobTem func autoConvert_batch_JobTemplateSpec_To_v1beta1_JobTemplateSpec(in *batch.JobTemplateSpec, out *v1beta1.JobTemplateSpec, s conversion.Scope) error { out.ObjectMeta = in.ObjectMeta - if err := batch_v1.Convert_batch_JobSpec_To_v1_JobSpec(&in.Spec, &out.Spec, s); err != nil { + if err := batchv1.Convert_batch_JobSpec_To_v1_JobSpec(&in.Spec, &out.Spec, s); err != nil { return err } return nil diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v2alpha1/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v2alpha1/BUILD index 4f7e9afb0f..59eab2eab1 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v2alpha1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v2alpha1/BUILD @@ -22,25 +22,25 @@ go_library( "//pkg/apis/batch/v1:go_default_library", "//pkg/apis/core:go_default_library", "//pkg/apis/core/v1:go_default_library", - "//vendor/k8s.io/api/batch/v2alpha1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/api/batch/v2alpha1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) go_test( - name = "go_default_xtest", + name = "go_default_test", srcs = ["defaults_test.go"], + embed = [":go_default_library"], deps = [ - ":go_default_library", "//pkg/api/legacyscheme:go_default_library", "//pkg/apis/batch/install:go_default_library", "//pkg/apis/core/install:go_default_library", - "//vendor/k8s.io/api/batch/v2alpha1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/api/batch/v2alpha1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v2alpha1/conversion.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v2alpha1/conversion.go index 2393fdca97..0d854e5bab 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v2alpha1/conversion.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v2alpha1/conversion.go @@ -27,7 +27,7 @@ func addConversionFuncs(scheme *runtime.Scheme) error { // Add field label conversions for kinds having selectable nothing but ObjectMeta fields. for _, k := range []string{"Job", "JobTemplate", "CronJob"} { kind := k // don't close over range variables - err = scheme.AddFieldLabelConversionFunc("batch/v2alpha1", kind, + err = scheme.AddFieldLabelConversionFunc(SchemeGroupVersion.WithKind(kind), func(label, value string) (string, string, error) { switch label { case "metadata.name", "metadata.namespace", "status.successful": diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v2alpha1/doc.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v2alpha1/doc.go index 19abe65686..1efde62d79 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v2alpha1/doc.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v2alpha1/doc.go @@ -15,6 +15,7 @@ limitations under the License. */ // +k8s:conversion-gen=k8s.io/kubernetes/pkg/apis/batch +// +k8s:conversion-gen=k8s.io/kubernetes/pkg/apis/batch/v1 // +k8s:conversion-gen-external-types=k8s.io/api/batch/v2alpha1 // +k8s:defaulter-gen=TypeMeta // +k8s:defaulter-gen-input=../../../../vendor/k8s.io/api/batch/v2alpha1 diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v2alpha1/zz_generated.conversion.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v2alpha1/zz_generated.conversion.go index 1c5509b349..3a0fe9cd74 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v2alpha1/zz_generated.conversion.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/v2alpha1/zz_generated.conversion.go @@ -24,12 +24,12 @@ import ( unsafe "unsafe" v2alpha1 "k8s.io/api/batch/v2alpha1" - core_v1 "k8s.io/api/core/v1" + corev1 "k8s.io/api/core/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" conversion "k8s.io/apimachinery/pkg/conversion" runtime "k8s.io/apimachinery/pkg/runtime" batch "k8s.io/kubernetes/pkg/apis/batch" - batch_v1 "k8s.io/kubernetes/pkg/apis/batch/v1" + batchv1 "k8s.io/kubernetes/pkg/apis/batch/v1" core "k8s.io/kubernetes/pkg/apis/core" ) @@ -178,7 +178,7 @@ func Convert_v2alpha1_CronJobStatus_To_batch_CronJobStatus(in *v2alpha1.CronJobS } func autoConvert_batch_CronJobStatus_To_v2alpha1_CronJobStatus(in *batch.CronJobStatus, out *v2alpha1.CronJobStatus, s conversion.Scope) error { - out.Active = *(*[]core_v1.ObjectReference)(unsafe.Pointer(&in.Active)) + out.Active = *(*[]corev1.ObjectReference)(unsafe.Pointer(&in.Active)) out.LastScheduleTime = (*v1.Time)(unsafe.Pointer(in.LastScheduleTime)) return nil } @@ -216,7 +216,7 @@ func Convert_batch_JobTemplate_To_v2alpha1_JobTemplate(in *batch.JobTemplate, ou func autoConvert_v2alpha1_JobTemplateSpec_To_batch_JobTemplateSpec(in *v2alpha1.JobTemplateSpec, out *batch.JobTemplateSpec, s conversion.Scope) error { out.ObjectMeta = in.ObjectMeta - if err := batch_v1.Convert_v1_JobSpec_To_batch_JobSpec(&in.Spec, &out.Spec, s); err != nil { + if err := batchv1.Convert_v1_JobSpec_To_batch_JobSpec(&in.Spec, &out.Spec, s); err != nil { return err } return nil @@ -229,7 +229,7 @@ func Convert_v2alpha1_JobTemplateSpec_To_batch_JobTemplateSpec(in *v2alpha1.JobT func autoConvert_batch_JobTemplateSpec_To_v2alpha1_JobTemplateSpec(in *batch.JobTemplateSpec, out *v2alpha1.JobTemplateSpec, s conversion.Scope) error { out.ObjectMeta = in.ObjectMeta - if err := batch_v1.Convert_batch_JobSpec_To_v1_JobSpec(&in.Spec, &out.Spec, s); err != nil { + if err := batchv1.Convert_batch_JobSpec_To_v1_JobSpec(&in.Spec, &out.Spec, s); err != nil { return err } return nil diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/zz_generated.deepcopy.go index af8e57ea00..ea986d3d7c 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/zz_generated.deepcopy.go @@ -92,40 +92,24 @@ func (in *CronJobSpec) DeepCopyInto(out *CronJobSpec) { *out = *in if in.StartingDeadlineSeconds != nil { in, out := &in.StartingDeadlineSeconds, &out.StartingDeadlineSeconds - if *in == nil { - *out = nil - } else { - *out = new(int64) - **out = **in - } + *out = new(int64) + **out = **in } if in.Suspend != nil { in, out := &in.Suspend, &out.Suspend - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } in.JobTemplate.DeepCopyInto(&out.JobTemplate) if in.SuccessfulJobsHistoryLimit != nil { in, out := &in.SuccessfulJobsHistoryLimit, &out.SuccessfulJobsHistoryLimit - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.FailedJobsHistoryLimit != nil { in, out := &in.FailedJobsHistoryLimit, &out.FailedJobsHistoryLimit - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } return } @@ -150,11 +134,7 @@ func (in *CronJobStatus) DeepCopyInto(out *CronJobStatus) { } if in.LastScheduleTime != nil { in, out := &in.LastScheduleTime, &out.LastScheduleTime - if *in == nil { - *out = nil - } else { - *out = (*in).DeepCopy() - } + *out = (*in).DeepCopy() } return } @@ -253,57 +233,33 @@ func (in *JobSpec) DeepCopyInto(out *JobSpec) { *out = *in if in.Parallelism != nil { in, out := &in.Parallelism, &out.Parallelism - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.Completions != nil { in, out := &in.Completions, &out.Completions - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.ActiveDeadlineSeconds != nil { in, out := &in.ActiveDeadlineSeconds, &out.ActiveDeadlineSeconds - if *in == nil { - *out = nil - } else { - *out = new(int64) - **out = **in - } + *out = new(int64) + **out = **in } if in.BackoffLimit != nil { in, out := &in.BackoffLimit, &out.BackoffLimit - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.Selector != nil { in, out := &in.Selector, &out.Selector - if *in == nil { - *out = nil - } else { - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) - } + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) } if in.ManualSelector != nil { in, out := &in.ManualSelector, &out.ManualSelector - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } in.Template.DeepCopyInto(&out.Template) return @@ -331,19 +287,11 @@ func (in *JobStatus) DeepCopyInto(out *JobStatus) { } if in.StartTime != nil { in, out := &in.StartTime, &out.StartTime - if *in == nil { - *out = nil - } else { - *out = (*in).DeepCopy() - } + *out = (*in).DeepCopy() } if in.CompletionTime != nil { in, out := &in.CompletionTime, &out.CompletionTime - if *in == nil { - *out = nil - } else { - *out = (*in).DeepCopy() - } + *out = (*in).DeepCopy() } return } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/certificates/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/certificates/BUILD index cebbfcdea6..a826a7e226 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/certificates/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/certificates/BUILD @@ -16,9 +16,9 @@ go_library( ], importpath = "k8s.io/kubernetes/pkg/apis/certificates", deps = [ - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/certificates/install/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/certificates/install/BUILD index 0ef7bd7122..360f47b9f1 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/certificates/install/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/certificates/install/BUILD @@ -13,8 +13,8 @@ go_library( "//pkg/api/legacyscheme:go_default_library", "//pkg/apis/certificates:go_default_library", "//pkg/apis/certificates/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/certificates/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/certificates/v1beta1/BUILD index 334d968b41..e28449dd4c 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/certificates/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/certificates/v1beta1/BUILD @@ -18,10 +18,10 @@ go_library( importpath = "k8s.io/kubernetes/pkg/apis/certificates/v1beta1", deps = [ "//pkg/apis/certificates:go_default_library", - "//vendor/k8s.io/api/certificates/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/api/certificates/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/certificates/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/certificates/zz_generated.deepcopy.go index 997e4692a7..25ba39f42f 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/certificates/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/certificates/zz_generated.deepcopy.go @@ -124,12 +124,15 @@ func (in *CertificateSigningRequestSpec) DeepCopyInto(out *CertificateSigningReq in, out := &in.Extra, &out.Extra *out = make(map[string]ExtraValue, len(*in)) for key, val := range *in { + var outVal []string if val == nil { (*out)[key] = nil } else { - (*out)[key] = make([]string, len(val)) - copy((*out)[key], val) + in, out := &val, &outVal + *out = make(ExtraValue, len(*in)) + copy(*out, *in) } + (*out)[key] = outVal } } return diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/componentconfig/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/componentconfig/BUILD index 8759839a5d..9cecbdd630 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/componentconfig/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/componentconfig/BUILD @@ -17,11 +17,11 @@ go_library( ], importpath = "k8s.io/kubernetes/pkg/apis/componentconfig", deps = [ - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/componentconfig/install/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/componentconfig/install/BUILD index 847ba6e5cb..8b6ca19f4f 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/componentconfig/install/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/componentconfig/install/BUILD @@ -13,8 +13,8 @@ go_library( "//pkg/api/legacyscheme:go_default_library", "//pkg/apis/componentconfig:go_default_library", "//pkg/apis/componentconfig/v1alpha1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/componentconfig/types.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/componentconfig/types.go index 7ca6a22444..51f79b1513 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/componentconfig/types.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/componentconfig/types.go @@ -323,9 +323,6 @@ type KubeCloudSharedConfiguration struct { // configureCloudRoutes enables CIDRs allocated with allocateNodeCIDRs // to be configured on the cloud provider. ConfigureCloudRoutes bool - // serviceAccountKeyFile is the filename containing a PEM-encoded private RSA key - // used to sign service account tokens. - ServiceAccountKeyFile string // nodeSyncPeriod is the period for syncing nodes from cloudprovider. Longer // periods will result in fewer calls to cloud provider, but may delay addition // of new nodes to cluster. @@ -506,6 +503,9 @@ type ResourceQuotaControllerConfiguration struct { } type SAControllerConfiguration struct { + // serviceAccountKeyFile is the filename containing a PEM-encoded private RSA key + // used to sign service account tokens. + ServiceAccountKeyFile string // concurrentSATokenSyncs is the number of service account token syncing operations // that will be done concurrently. ConcurrentSATokenSyncs int32 diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/componentconfig/v1alpha1/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/componentconfig/v1alpha1/BUILD index e4ba555892..50a79bf925 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/componentconfig/v1alpha1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/componentconfig/v1alpha1/BUILD @@ -24,10 +24,10 @@ go_library( "//pkg/kubelet/apis:go_default_library", "//pkg/master/ports:go_default_library", "//pkg/util/pointer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/componentconfig/v1alpha1/types.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/componentconfig/v1alpha1/types.go index 129f5d650c..55b10a1151 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/componentconfig/v1alpha1/types.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/componentconfig/v1alpha1/types.go @@ -366,9 +366,6 @@ type KubeCloudSharedConfiguration struct { // configureCloudRoutes enables CIDRs allocated with allocateNodeCIDRs // to be configured on the cloud provider. ConfigureCloudRoutes *bool `json:"configureCloudRoutes"` - // serviceAccountKeyFile is the filename containing a PEM-encoded private RSA key - // used to sign service account tokens. - ServiceAccountKeyFile string `json:"serviceAccountKeyFile"` // nodeSyncPeriod is the period for syncing nodes from cloudprovider. Longer // periods will result in fewer calls to cloud provider, but may delay addition // of new nodes to cluster. @@ -549,6 +546,9 @@ type ResourceQuotaControllerConfiguration struct { } type SAControllerConfiguration struct { + // serviceAccountKeyFile is the filename containing a PEM-encoded private RSA key + // used to sign service account tokens. + ServiceAccountKeyFile string `json:"serviceAccountKeyFile"` // concurrentSATokenSyncs is the number of service account token syncing operations // that will be done concurrently. ConcurrentSATokenSyncs int32 `json:"concurrentSATokenSyncs"` diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/componentconfig/v1alpha1/zz_generated.conversion.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/componentconfig/v1alpha1/zz_generated.conversion.go index 9e6cc33cb3..3412cc7c00 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/componentconfig/v1alpha1/zz_generated.conversion.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/componentconfig/v1alpha1/zz_generated.conversion.go @@ -516,7 +516,6 @@ func autoConvert_v1alpha1_KubeCloudSharedConfiguration_To_componentconfig_KubeCl if err := v1.Convert_Pointer_bool_To_bool(&in.ConfigureCloudRoutes, &out.ConfigureCloudRoutes, s); err != nil { return err } - out.ServiceAccountKeyFile = in.ServiceAccountKeyFile out.NodeSyncPeriod = in.NodeSyncPeriod return nil } @@ -540,7 +539,6 @@ func autoConvert_componentconfig_KubeCloudSharedConfiguration_To_v1alpha1_KubeCl if err := v1.Convert_bool_To_Pointer_bool(&in.ConfigureCloudRoutes, &out.ConfigureCloudRoutes, s); err != nil { return err } - out.ServiceAccountKeyFile = in.ServiceAccountKeyFile out.NodeSyncPeriod = in.NodeSyncPeriod return nil } @@ -1045,6 +1043,7 @@ func Convert_componentconfig_ResourceQuotaControllerConfiguration_To_v1alpha1_Re } func autoConvert_v1alpha1_SAControllerConfiguration_To_componentconfig_SAControllerConfiguration(in *SAControllerConfiguration, out *componentconfig.SAControllerConfiguration, s conversion.Scope) error { + out.ServiceAccountKeyFile = in.ServiceAccountKeyFile out.ConcurrentSATokenSyncs = in.ConcurrentSATokenSyncs out.RootCAFile = in.RootCAFile return nil @@ -1056,6 +1055,7 @@ func Convert_v1alpha1_SAControllerConfiguration_To_componentconfig_SAControllerC } func autoConvert_componentconfig_SAControllerConfiguration_To_v1alpha1_SAControllerConfiguration(in *componentconfig.SAControllerConfiguration, out *SAControllerConfiguration, s conversion.Scope) error { + out.ServiceAccountKeyFile = in.ServiceAccountKeyFile out.ConcurrentSATokenSyncs = in.ConcurrentSATokenSyncs out.RootCAFile = in.RootCAFile return nil diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/componentconfig/v1alpha1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/componentconfig/v1alpha1/zz_generated.deepcopy.go index 45cf5d9afe..a1e6fa5779 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/componentconfig/v1alpha1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/componentconfig/v1alpha1/zz_generated.deepcopy.go @@ -207,12 +207,8 @@ func (in *GarbageCollectorControllerConfiguration) DeepCopyInto(out *GarbageColl *out = *in if in.EnableGarbageCollector != nil { in, out := &in.EnableGarbageCollector, &out.EnableGarbageCollector - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } if in.GCIgnoredResources != nil { in, out := &in.GCIgnoredResources, &out.GCIgnoredResources @@ -275,12 +271,8 @@ func (in *HPAControllerConfiguration) DeepCopyInto(out *HPAControllerConfigurati out.HorizontalPodAutoscalerDownscaleForbiddenWindow = in.HorizontalPodAutoscalerDownscaleForbiddenWindow if in.HorizontalPodAutoscalerUseRESTClients != nil { in, out := &in.HorizontalPodAutoscalerUseRESTClients, &out.HorizontalPodAutoscalerUseRESTClients - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } return } @@ -318,12 +310,8 @@ func (in *KubeCloudSharedConfiguration) DeepCopyInto(out *KubeCloudSharedConfigu out.NodeMonitorPeriod = in.NodeMonitorPeriod if in.ConfigureCloudRoutes != nil { in, out := &in.ConfigureCloudRoutes, &out.ConfigureCloudRoutes - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } out.NodeSyncPeriod = in.NodeSyncPeriod return @@ -442,12 +430,8 @@ func (in *LeaderElectionConfiguration) DeepCopyInto(out *LeaderElectionConfigura *out = *in if in.LeaderElect != nil { in, out := &in.LeaderElect, &out.LeaderElect - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } out.LeaseDuration = in.LeaseDuration out.RenewDeadline = in.RenewDeadline @@ -503,12 +487,8 @@ func (in *NodeLifecycleControllerConfiguration) DeepCopyInto(out *NodeLifecycleC *out = *in if in.EnableTaintManager != nil { in, out := &in.EnableTaintManager, &out.EnableTaintManager - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } out.NodeStartupGracePeriod = in.NodeStartupGracePeriod out.NodeMonitorGracePeriod = in.NodeMonitorGracePeriod @@ -646,21 +626,13 @@ func (in *SchedulerAlgorithmSource) DeepCopyInto(out *SchedulerAlgorithmSource) *out = *in if in.Policy != nil { in, out := &in.Policy, &out.Policy - if *in == nil { - *out = nil - } else { - *out = new(SchedulerPolicySource) - (*in).DeepCopyInto(*out) - } + *out = new(SchedulerPolicySource) + (*in).DeepCopyInto(*out) } if in.Provider != nil { in, out := &in.Provider, &out.Provider - if *in == nil { - *out = nil - } else { - *out = new(string) - **out = **in - } + *out = new(string) + **out = **in } return } @@ -712,21 +684,13 @@ func (in *SchedulerPolicySource) DeepCopyInto(out *SchedulerPolicySource) { *out = *in if in.File != nil { in, out := &in.File, &out.File - if *in == nil { - *out = nil - } else { - *out = new(SchedulerPolicyFileSource) - **out = **in - } + *out = new(SchedulerPolicyFileSource) + **out = **in } if in.ConfigMap != nil { in, out := &in.ConfigMap, &out.ConfigMap - if *in == nil { - *out = nil - } else { - *out = new(SchedulerPolicyConfigMapSource) - **out = **in - } + *out = new(SchedulerPolicyConfigMapSource) + **out = **in } return } @@ -762,21 +726,13 @@ func (in *VolumeConfiguration) DeepCopyInto(out *VolumeConfiguration) { *out = *in if in.EnableHostPathProvisioning != nil { in, out := &in.EnableHostPathProvisioning, &out.EnableHostPathProvisioning - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } if in.EnableDynamicProvisioning != nil { in, out := &in.EnableDynamicProvisioning, &out.EnableDynamicProvisioning - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } out.PersistentVolumeRecyclerConfiguration = in.PersistentVolumeRecyclerConfiguration return diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/componentconfig/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/componentconfig/zz_generated.deepcopy.go index c8317d119b..6057012867 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/componentconfig/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/componentconfig/zz_generated.deepcopy.go @@ -282,12 +282,8 @@ func (in *IPPortVar) DeepCopyInto(out *IPPortVar) { *out = *in if in.Val != nil { in, out := &in.Val, &out.Val - if *in == nil { - *out = nil - } else { - *out = new(string) - **out = **in - } + *out = new(string) + **out = **in } return } @@ -307,12 +303,8 @@ func (in *IPVar) DeepCopyInto(out *IPVar) { *out = *in if in.Val != nil { in, out := &in.Val, &out.Val - if *in == nil { - *out = nil - } else { - *out = new(string) - **out = **in - } + *out = new(string) + **out = **in } return } @@ -586,12 +578,8 @@ func (in *PortRangeVar) DeepCopyInto(out *PortRangeVar) { *out = *in if in.Val != nil { in, out := &in.Val, &out.Val - if *in == nil { - *out = nil - } else { - *out = new(string) - **out = **in - } + *out = new(string) + **out = **in } return } @@ -676,21 +664,13 @@ func (in *SchedulerAlgorithmSource) DeepCopyInto(out *SchedulerAlgorithmSource) *out = *in if in.Policy != nil { in, out := &in.Policy, &out.Policy - if *in == nil { - *out = nil - } else { - *out = new(SchedulerPolicySource) - (*in).DeepCopyInto(*out) - } + *out = new(SchedulerPolicySource) + (*in).DeepCopyInto(*out) } if in.Provider != nil { in, out := &in.Provider, &out.Provider - if *in == nil { - *out = nil - } else { - *out = new(string) - **out = **in - } + *out = new(string) + **out = **in } return } @@ -742,21 +722,13 @@ func (in *SchedulerPolicySource) DeepCopyInto(out *SchedulerPolicySource) { *out = *in if in.File != nil { in, out := &in.File, &out.File - if *in == nil { - *out = nil - } else { - *out = new(SchedulerPolicyFileSource) - **out = **in - } + *out = new(SchedulerPolicyFileSource) + **out = **in } if in.ConfigMap != nil { in, out := &in.ConfigMap, &out.ConfigMap - if *in == nil { - *out = nil - } else { - *out = new(SchedulerPolicyConfigMapSource) - **out = **in - } + *out = new(SchedulerPolicyConfigMapSource) + **out = **in } return } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/BUILD new file mode 100644 index 0000000000..c121148ed1 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/BUILD @@ -0,0 +1,37 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "register.go", + "types.go", + "zz_generated.deepcopy.go", + ], + importpath = "k8s.io/kubernetes/pkg/apis/coordination", + visibility = ["//visibility:public"], + deps = [ + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [ + ":package-srcs", + "//pkg/apis/coordination/install:all-srcs", + "//pkg/apis/coordination/v1beta1:all-srcs", + "//pkg/apis/coordination/validation:all-srcs", + ], + tags = ["automanaged"], + visibility = ["//visibility:public"], +) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/doc.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/doc.go new file mode 100644 index 0000000000..9b1561f577 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/doc.go @@ -0,0 +1,20 @@ +/* +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. +*/ + +// +k8s:deepcopy-gen=package + +// +groupName=coordination.k8s.io +package coordination diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/install/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/install/BUILD new file mode 100644 index 0000000000..855e7d8ab6 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/install/BUILD @@ -0,0 +1,29 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = ["install.go"], + importpath = "k8s.io/kubernetes/pkg/apis/coordination/install", + visibility = ["//visibility:public"], + deps = [ + "//pkg/api/legacyscheme:go_default_library", + "//pkg/apis/coordination:go_default_library", + "//pkg/apis/coordination/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], + visibility = ["//visibility:public"], +) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/install/install.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/install/install.go new file mode 100644 index 0000000000..ed92e8fdbc --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/install/install.go @@ -0,0 +1,38 @@ +/* +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 install installs the coordination API group, making it available as +// an option to all of the API encoding/decoding machinery. +package install + +import ( + "k8s.io/apimachinery/pkg/runtime" + utilruntime "k8s.io/apimachinery/pkg/util/runtime" + "k8s.io/kubernetes/pkg/api/legacyscheme" + "k8s.io/kubernetes/pkg/apis/coordination" + "k8s.io/kubernetes/pkg/apis/coordination/v1beta1" +) + +func init() { + Install(legacyscheme.Scheme) +} + +// Install registers the API group and adds types to a scheme +func Install(scheme *runtime.Scheme) { + utilruntime.Must(coordination.AddToScheme(scheme)) + utilruntime.Must(v1beta1.AddToScheme(scheme)) + utilruntime.Must(scheme.SetVersionPriority(v1beta1.SchemeGroupVersion)) +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/register.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/register.go new file mode 100644 index 0000000000..9780ad16e8 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/register.go @@ -0,0 +1,53 @@ +/* +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 coordination + +import ( + "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: runtime.APIVersionInternal} + +// 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) + AddToScheme = SchemeBuilder.AddToScheme +) + +// Adds the list of known types to the given scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + // TODO this gets cleaned up when the types are fixed + scheme.AddKnownTypes(SchemeGroupVersion, + &Lease{}, + &LeaseList{}, + ) + return nil +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/types.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/types.go new file mode 100644 index 0000000000..1d494e59d8 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/types.go @@ -0,0 +1,70 @@ +/* +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 coordination + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// Lease defines a lease concept. +type Lease struct { + metav1.TypeMeta + // +optional + metav1.ObjectMeta + + // Specification of the Lease. + // +optional + Spec LeaseSpec +} + +// LeaseSpec is a specification of a Lease. +type LeaseSpec struct { + // holderIdentity contains the identity of the holder of a current lease. + // +optional + HolderIdentity *string + // 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. + // +optional + LeaseDurationSeconds *int32 + // acquireTime is a time when the current lease was acquired. + // +optional + AcquireTime *metav1.MicroTime + // renewTime is a time when the current holder of a lease has last + // updated the lease. + // +optional + RenewTime *metav1.MicroTime + // leaseTransitions is the number of transitions of a lease between + // holders. + // +optional + LeaseTransitions *int32 +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// LeaseList is a list of Lease objects. +type LeaseList struct { + metav1.TypeMeta + // +optional + metav1.ListMeta + + // Items is a list of schema objects. + Items []Lease +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/v1beta1/BUILD new file mode 100644 index 0000000000..41943830bf --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/v1beta1/BUILD @@ -0,0 +1,35 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "register.go", + "zz_generated.conversion.go", + "zz_generated.defaults.go", + ], + importpath = "k8s.io/kubernetes/pkg/apis/coordination/v1beta1", + visibility = ["//visibility:public"], + deps = [ + "//pkg/apis/coordination:go_default_library", + "//staging/src/k8s.io/api/coordination/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], + visibility = ["//visibility:public"], +) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/v1beta1/doc.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/v1beta1/doc.go new file mode 100644 index 0000000000..36340a00d8 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/v1beta1/doc.go @@ -0,0 +1,23 @@ +/* +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. +*/ + +// +k8s:conversion-gen=k8s.io/kubernetes/pkg/apis/coordination +// +k8s:conversion-gen-external-types=k8s.io/api/coordination/v1beta1 +// +k8s:defaulter-gen=TypeMeta +// +k8s:defaulter-gen-input=../../../../vendor/k8s.io/api/coordination/v1beta1 + +// +groupName=coordination.k8s.io +package v1beta1 diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/v1beta1/register.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/v1beta1/register.go new file mode 100644 index 0000000000..62b1e8388a --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/v1beta1/register.go @@ -0,0 +1,45 @@ +/* +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 v1beta1 + +import ( + coordinationv1beta1 "k8s.io/api/coordination/v1beta1" + "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: "v1beta1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + localSchemeBuilder = &coordinationv1beta1.SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +func init() { + // 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. + localSchemeBuilder.Register(RegisterDefaults) +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/v1beta1/zz_generated.conversion.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/v1beta1/zz_generated.conversion.go new file mode 100644 index 0000000000..fb4040eb33 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/v1beta1/zz_generated.conversion.go @@ -0,0 +1,124 @@ +// +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 conversion-gen. DO NOT EDIT. + +package v1beta1 + +import ( + unsafe "unsafe" + + v1beta1 "k8s.io/api/coordination/v1beta1" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + coordination "k8s.io/kubernetes/pkg/apis/coordination" +) + +func init() { + localSchemeBuilder.Register(RegisterConversions) +} + +// RegisterConversions adds conversion functions to the given scheme. +// Public to allow building arbitrary schemes. +func RegisterConversions(scheme *runtime.Scheme) error { + return scheme.AddGeneratedConversionFuncs( + Convert_v1beta1_Lease_To_coordination_Lease, + Convert_coordination_Lease_To_v1beta1_Lease, + Convert_v1beta1_LeaseList_To_coordination_LeaseList, + Convert_coordination_LeaseList_To_v1beta1_LeaseList, + Convert_v1beta1_LeaseSpec_To_coordination_LeaseSpec, + Convert_coordination_LeaseSpec_To_v1beta1_LeaseSpec, + ) +} + +func autoConvert_v1beta1_Lease_To_coordination_Lease(in *v1beta1.Lease, out *coordination.Lease, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1beta1_LeaseSpec_To_coordination_LeaseSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + return nil +} + +// Convert_v1beta1_Lease_To_coordination_Lease is an autogenerated conversion function. +func Convert_v1beta1_Lease_To_coordination_Lease(in *v1beta1.Lease, out *coordination.Lease, s conversion.Scope) error { + return autoConvert_v1beta1_Lease_To_coordination_Lease(in, out, s) +} + +func autoConvert_coordination_Lease_To_v1beta1_Lease(in *coordination.Lease, out *v1beta1.Lease, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_coordination_LeaseSpec_To_v1beta1_LeaseSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + return nil +} + +// Convert_coordination_Lease_To_v1beta1_Lease is an autogenerated conversion function. +func Convert_coordination_Lease_To_v1beta1_Lease(in *coordination.Lease, out *v1beta1.Lease, s conversion.Scope) error { + return autoConvert_coordination_Lease_To_v1beta1_Lease(in, out, s) +} + +func autoConvert_v1beta1_LeaseList_To_coordination_LeaseList(in *v1beta1.LeaseList, out *coordination.LeaseList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = *(*[]coordination.Lease)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_v1beta1_LeaseList_To_coordination_LeaseList is an autogenerated conversion function. +func Convert_v1beta1_LeaseList_To_coordination_LeaseList(in *v1beta1.LeaseList, out *coordination.LeaseList, s conversion.Scope) error { + return autoConvert_v1beta1_LeaseList_To_coordination_LeaseList(in, out, s) +} + +func autoConvert_coordination_LeaseList_To_v1beta1_LeaseList(in *coordination.LeaseList, out *v1beta1.LeaseList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = *(*[]v1beta1.Lease)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_coordination_LeaseList_To_v1beta1_LeaseList is an autogenerated conversion function. +func Convert_coordination_LeaseList_To_v1beta1_LeaseList(in *coordination.LeaseList, out *v1beta1.LeaseList, s conversion.Scope) error { + return autoConvert_coordination_LeaseList_To_v1beta1_LeaseList(in, out, s) +} + +func autoConvert_v1beta1_LeaseSpec_To_coordination_LeaseSpec(in *v1beta1.LeaseSpec, out *coordination.LeaseSpec, s conversion.Scope) error { + out.HolderIdentity = (*string)(unsafe.Pointer(in.HolderIdentity)) + out.LeaseDurationSeconds = (*int32)(unsafe.Pointer(in.LeaseDurationSeconds)) + out.AcquireTime = (*v1.MicroTime)(unsafe.Pointer(in.AcquireTime)) + out.RenewTime = (*v1.MicroTime)(unsafe.Pointer(in.RenewTime)) + out.LeaseTransitions = (*int32)(unsafe.Pointer(in.LeaseTransitions)) + return nil +} + +// Convert_v1beta1_LeaseSpec_To_coordination_LeaseSpec is an autogenerated conversion function. +func Convert_v1beta1_LeaseSpec_To_coordination_LeaseSpec(in *v1beta1.LeaseSpec, out *coordination.LeaseSpec, s conversion.Scope) error { + return autoConvert_v1beta1_LeaseSpec_To_coordination_LeaseSpec(in, out, s) +} + +func autoConvert_coordination_LeaseSpec_To_v1beta1_LeaseSpec(in *coordination.LeaseSpec, out *v1beta1.LeaseSpec, s conversion.Scope) error { + out.HolderIdentity = (*string)(unsafe.Pointer(in.HolderIdentity)) + out.LeaseDurationSeconds = (*int32)(unsafe.Pointer(in.LeaseDurationSeconds)) + out.AcquireTime = (*v1.MicroTime)(unsafe.Pointer(in.AcquireTime)) + out.RenewTime = (*v1.MicroTime)(unsafe.Pointer(in.RenewTime)) + out.LeaseTransitions = (*int32)(unsafe.Pointer(in.LeaseTransitions)) + return nil +} + +// Convert_coordination_LeaseSpec_To_v1beta1_LeaseSpec is an autogenerated conversion function. +func Convert_coordination_LeaseSpec_To_v1beta1_LeaseSpec(in *coordination.LeaseSpec, out *v1beta1.LeaseSpec, s conversion.Scope) error { + return autoConvert_coordination_LeaseSpec_To_v1beta1_LeaseSpec(in, out, s) +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/v1beta1/zz_generated.defaults.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/v1beta1/zz_generated.defaults.go new file mode 100644 index 0000000000..73e63fc114 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/v1beta1/zz_generated.defaults.go @@ -0,0 +1,32 @@ +// +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 defaulter-gen. DO NOT EDIT. + +package v1beta1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// RegisterDefaults adds defaulters functions to the given scheme. +// Public to allow building arbitrary schemes. +// All generated defaulters are covering - they call all nested defaulters. +func RegisterDefaults(scheme *runtime.Scheme) error { + return nil +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/zz_generated.deepcopy.go new file mode 100644 index 0000000000..11d2adccf5 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/coordination/zz_generated.deepcopy.go @@ -0,0 +1,124 @@ +// +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 coordination + +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 *Lease) DeepCopyInto(out *Lease) { + *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 Lease. +func (in *Lease) DeepCopy() *Lease { + if in == nil { + return nil + } + out := new(Lease) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Lease) 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 *LeaseList) DeepCopyInto(out *LeaseList) { + *out = *in + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Lease, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LeaseList. +func (in *LeaseList) DeepCopy() *LeaseList { + if in == nil { + return nil + } + out := new(LeaseList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *LeaseList) 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 *LeaseSpec) DeepCopyInto(out *LeaseSpec) { + *out = *in + if in.HolderIdentity != nil { + in, out := &in.HolderIdentity, &out.HolderIdentity + *out = new(string) + **out = **in + } + if in.LeaseDurationSeconds != nil { + in, out := &in.LeaseDurationSeconds, &out.LeaseDurationSeconds + *out = new(int32) + **out = **in + } + if in.AcquireTime != nil { + in, out := &in.AcquireTime, &out.AcquireTime + *out = (*in).DeepCopy() + } + if in.RenewTime != nil { + in, out := &in.RenewTime, &out.RenewTime + *out = (*in).DeepCopy() + } + if in.LeaseTransitions != nil { + in, out := &in.LeaseTransitions, &out.LeaseTransitions + *out = new(int32) + **out = **in + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LeaseSpec. +func (in *LeaseSpec) DeepCopy() *LeaseSpec { + if in == nil { + return nil + } + out := new(LeaseSpec) + in.DeepCopyInto(out) + return out +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/BUILD index 026cd897a9..6ca92930e7 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/BUILD @@ -18,13 +18,13 @@ go_library( importpath = "k8s.io/kubernetes/pkg/apis/core", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/helper/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/helper/BUILD index 72df5635cb..d4fa9fea86 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/helper/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/helper/BUILD @@ -12,8 +12,8 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/apis/core:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", ], ) @@ -23,14 +23,14 @@ go_library( importpath = "k8s.io/kubernetes/pkg/apis/core/helper", deps = [ "//pkg/apis/core:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/selection:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/selection:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/helper/qos/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/helper/qos/BUILD index c2a1e9010b..a2a24eda2d 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/helper/qos/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/helper/qos/BUILD @@ -11,8 +11,8 @@ go_library( importpath = "k8s.io/kubernetes/pkg/apis/core/helper/qos", deps = [ "//pkg/apis/core:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/install/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/install/BUILD index a5b6505f12..731869eb8a 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/install/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/install/BUILD @@ -14,8 +14,8 @@ go_library( "//pkg/api/legacyscheme:go_default_library", "//pkg/apis/core:go_default_library", "//pkg/apis/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", ], ) @@ -26,10 +26,10 @@ go_test( deps = [ "//pkg/api/legacyscheme:go_default_library", "//pkg/apis/core:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/types.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/types.go index cd1235b6c3..25b9ddca9d 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/types.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/types.go @@ -1264,6 +1264,7 @@ type ScaleIOVolumeSource struct { // +optional StoragePool string // Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. + // Default is ThinProvisioned. // +optional StorageMode string // The name of a volume already created in the ScaleIO system @@ -1271,7 +1272,8 @@ type ScaleIOVolumeSource struct { VolumeName string // 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. + // Ex. "ext4", "xfs", "ntfs". + // Default is "xfs". // +optional FSType string // Defaults to false (read/write). ReadOnly here will force @@ -1300,6 +1302,7 @@ type ScaleIOPersistentVolumeSource struct { // +optional StoragePool string // Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. + // Default is ThinProvisioned. // +optional StorageMode string // The name of a volume created in the ScaleIO system @@ -1307,7 +1310,8 @@ type ScaleIOPersistentVolumeSource struct { VolumeName string // 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. + // Ex. "ext4", "xfs", "ntfs". + // Default is "xfs". // +optional FSType string // Defaults to false (read/write). ReadOnly here will force @@ -1519,7 +1523,7 @@ type CSIPersistentVolumeSource struct { // 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. + // Ex. "ext4", "xfs", "ntfs". // +optional FSType string @@ -1589,7 +1593,7 @@ type VolumeMount struct { SubPath string // mountPropagation determines how mounts are propagated from the host // to container and the other way around. - // When not set, MountPropagationHostToContainer is used. + // When not set, MountPropagationNone is used. // This field is beta in 1.10. // +optional MountPropagation *MountPropagationMode diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/v1/BUILD index 8de59b3f62..328e2eb983 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/v1/BUILD @@ -18,44 +18,44 @@ go_library( "//pkg/features:go_default_library", "//pkg/util/parsers:go_default_library", "//pkg/util/pointer:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", ], ) go_test( - name = "go_default_xtest", + name = "go_default_test", srcs = [ "conversion_test.go", "defaults_test.go", ], + embed = [":go_default_library"], deps = [ - ":go_default_library", "//pkg/api/legacyscheme:go_default_library", "//pkg/api/testapi:go_default_library", "//pkg/apis/core:go_default_library", "//pkg/apis/core/fuzzer:go_default_library", "//pkg/apis/extensions:go_default_library", "//pkg/util/pointer:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/extensions/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/testing/fuzzer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/fuzzer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/extensions/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/testing/fuzzer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/fuzzer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/v1/conversion.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/v1/conversion.go index bc431d1478..b8a7699213 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/v1/conversion.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/v1/conversion.go @@ -154,7 +154,7 @@ func addConversionFuncs(scheme *runtime.Scheme) error { } // Add field conversion funcs. - err = scheme.AddFieldLabelConversionFunc("v1", "Pod", + err = scheme.AddFieldLabelConversionFunc(SchemeGroupVersion.WithKind("Pod"), func(label, value string) (string, string, error) { switch label { case "metadata.name", @@ -177,7 +177,7 @@ func addConversionFuncs(scheme *runtime.Scheme) error { if err != nil { return err } - err = scheme.AddFieldLabelConversionFunc("v1", "Node", + err = scheme.AddFieldLabelConversionFunc(SchemeGroupVersion.WithKind("Node"), func(label, value string) (string, string, error) { switch label { case "metadata.name": @@ -192,7 +192,7 @@ func addConversionFuncs(scheme *runtime.Scheme) error { if err != nil { return err } - err = scheme.AddFieldLabelConversionFunc("v1", "ReplicationController", + err = scheme.AddFieldLabelConversionFunc(SchemeGroupVersion.WithKind("ReplicationController"), func(label, value string) (string, string, error) { switch label { case "metadata.name", @@ -553,7 +553,7 @@ func Convert_v1_ResourceList_To_core_ResourceList(in *v1.ResourceList, out *core } func AddFieldLabelConversionsForEvent(scheme *runtime.Scheme) error { - return scheme.AddFieldLabelConversionFunc("v1", "Event", + return scheme.AddFieldLabelConversionFunc(SchemeGroupVersion.WithKind("Event"), func(label, value string) (string, string, error) { switch label { case "involvedObject.kind", @@ -576,7 +576,7 @@ func AddFieldLabelConversionsForEvent(scheme *runtime.Scheme) error { } func AddFieldLabelConversionsForNamespace(scheme *runtime.Scheme) error { - return scheme.AddFieldLabelConversionFunc("v1", "Namespace", + return scheme.AddFieldLabelConversionFunc(SchemeGroupVersion.WithKind("Namespace"), func(label, value string) (string, string, error) { switch label { case "status.phase", @@ -589,7 +589,7 @@ func AddFieldLabelConversionsForNamespace(scheme *runtime.Scheme) error { } func AddFieldLabelConversionsForSecret(scheme *runtime.Scheme) error { - return scheme.AddFieldLabelConversionFunc("v1", "Secret", + return scheme.AddFieldLabelConversionFunc(SchemeGroupVersion.WithKind("Secret"), func(label, value string) (string, string, error) { switch label { case "type", diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/v1/helper/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/v1/helper/BUILD index 2fc1eda5f7..79483ac3d2 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/v1/helper/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/v1/helper/BUILD @@ -11,12 +11,12 @@ go_test( srcs = ["helpers_test.go"], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", ], ) @@ -26,12 +26,12 @@ go_library( importpath = "k8s.io/kubernetes/pkg/apis/core/v1/helper", deps = [ "//pkg/apis/core/helper:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/selection:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/selection:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/v1/helper/helpers.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/v1/helper/helpers.go index c8dbbdce92..4b1da9d920 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/v1/helper/helpers.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/v1/helper/helpers.go @@ -283,6 +283,20 @@ func NodeSelectorRequirementsAsFieldSelector(nsm []v1.NodeSelectorRequirement) ( return fields.AndSelectors(selectors...), nil } +// NodeSelectorRequirementKeysExistInNodeSelectorTerms checks if a NodeSelectorTerm with key is already specified in terms +func NodeSelectorRequirementKeysExistInNodeSelectorTerms(reqs []v1.NodeSelectorRequirement, terms []v1.NodeSelectorTerm) bool { + for _, req := range reqs { + for _, term := range terms { + for _, r := range term.MatchExpressions { + if r.Key == req.Key { + return true + } + } + } + } + return false +} + // MatchNodeSelectorTerms checks whether the node labels and fields match node selector terms in ORed; // nil or empty term matches no objects. func MatchNodeSelectorTerms( diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/v1/helper/qos/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/v1/helper/qos/BUILD index f459253d1c..38108d7026 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/v1/helper/qos/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/v1/helper/qos/BUILD @@ -14,9 +14,9 @@ go_test( "//pkg/apis/core:go_default_library", "//pkg/apis/core/helper/qos:go_default_library", "//pkg/apis/core/v1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", ], ) @@ -26,9 +26,9 @@ go_library( importpath = "k8s.io/kubernetes/pkg/apis/core/v1/helper/qos", deps = [ "//pkg/apis/core:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/v1/validation/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/v1/validation/BUILD index ed794151c9..b006232eec 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/v1/validation/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/v1/validation/BUILD @@ -8,11 +8,11 @@ go_library( deps = [ "//pkg/apis/core/helper:go_default_library", "//pkg/apis/core/v1/helper:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", ], ) @@ -21,11 +21,11 @@ go_test( srcs = ["validation_test.go"], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/v1/zz_generated.conversion.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/v1/zz_generated.conversion.go index 6ef20a5f7f..4af9eee44f 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/v1/zz_generated.conversion.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/v1/zz_generated.conversion.go @@ -25,7 +25,7 @@ import ( v1 "k8s.io/api/core/v1" resource "k8s.io/apimachinery/pkg/api/resource" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" conversion "k8s.io/apimachinery/pkg/conversion" runtime "k8s.io/apimachinery/pkg/runtime" types "k8s.io/apimachinery/pkg/types" @@ -3145,7 +3145,7 @@ func Convert_core_PersistentVolumeClaimList_To_v1_PersistentVolumeClaimList(in * func autoConvert_v1_PersistentVolumeClaimSpec_To_core_PersistentVolumeClaimSpec(in *v1.PersistentVolumeClaimSpec, out *core.PersistentVolumeClaimSpec, s conversion.Scope) error { out.AccessModes = *(*[]core.PersistentVolumeAccessMode)(unsafe.Pointer(&in.AccessModes)) - out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector)) + out.Selector = (*metav1.LabelSelector)(unsafe.Pointer(in.Selector)) if err := Convert_v1_ResourceRequirements_To_core_ResourceRequirements(&in.Resources, &out.Resources, s); err != nil { return err } @@ -3162,7 +3162,7 @@ func Convert_v1_PersistentVolumeClaimSpec_To_core_PersistentVolumeClaimSpec(in * func autoConvert_core_PersistentVolumeClaimSpec_To_v1_PersistentVolumeClaimSpec(in *core.PersistentVolumeClaimSpec, out *v1.PersistentVolumeClaimSpec, s conversion.Scope) error { out.AccessModes = *(*[]v1.PersistentVolumeAccessMode)(unsafe.Pointer(&in.AccessModes)) - out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector)) + out.Selector = (*metav1.LabelSelector)(unsafe.Pointer(in.Selector)) if err := Convert_core_ResourceRequirements_To_v1_ResourceRequirements(&in.Resources, &out.Resources, s); err != nil { return err } @@ -3460,7 +3460,7 @@ func Convert_core_PodAffinity_To_v1_PodAffinity(in *core.PodAffinity, out *v1.Po } func autoConvert_v1_PodAffinityTerm_To_core_PodAffinityTerm(in *v1.PodAffinityTerm, out *core.PodAffinityTerm, s conversion.Scope) error { - out.LabelSelector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.LabelSelector)) + out.LabelSelector = (*metav1.LabelSelector)(unsafe.Pointer(in.LabelSelector)) out.Namespaces = *(*[]string)(unsafe.Pointer(&in.Namespaces)) out.TopologyKey = in.TopologyKey return nil @@ -3472,7 +3472,7 @@ func Convert_v1_PodAffinityTerm_To_core_PodAffinityTerm(in *v1.PodAffinityTerm, } func autoConvert_core_PodAffinityTerm_To_v1_PodAffinityTerm(in *core.PodAffinityTerm, out *v1.PodAffinityTerm, s conversion.Scope) error { - out.LabelSelector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.LabelSelector)) + out.LabelSelector = (*metav1.LabelSelector)(unsafe.Pointer(in.LabelSelector)) out.Namespaces = *(*[]string)(unsafe.Pointer(&in.Namespaces)) out.TopologyKey = in.TopologyKey return nil @@ -3686,7 +3686,7 @@ func autoConvert_v1_PodLogOptions_To_core_PodLogOptions(in *v1.PodLogOptions, ou out.Follow = in.Follow out.Previous = in.Previous out.SinceSeconds = (*int64)(unsafe.Pointer(in.SinceSeconds)) - out.SinceTime = (*meta_v1.Time)(unsafe.Pointer(in.SinceTime)) + out.SinceTime = (*metav1.Time)(unsafe.Pointer(in.SinceTime)) out.Timestamps = in.Timestamps out.TailLines = (*int64)(unsafe.Pointer(in.TailLines)) out.LimitBytes = (*int64)(unsafe.Pointer(in.LimitBytes)) @@ -3703,7 +3703,7 @@ func autoConvert_core_PodLogOptions_To_v1_PodLogOptions(in *core.PodLogOptions, out.Follow = in.Follow out.Previous = in.Previous out.SinceSeconds = (*int64)(unsafe.Pointer(in.SinceSeconds)) - out.SinceTime = (*meta_v1.Time)(unsafe.Pointer(in.SinceTime)) + out.SinceTime = (*metav1.Time)(unsafe.Pointer(in.SinceTime)) out.Timestamps = in.Timestamps out.TailLines = (*int64)(unsafe.Pointer(in.TailLines)) out.LimitBytes = (*int64)(unsafe.Pointer(in.LimitBytes)) @@ -3802,7 +3802,7 @@ func autoConvert_core_PodSecurityContext_To_v1_PodSecurityContext(in *core.PodSe } func autoConvert_v1_PodSignature_To_core_PodSignature(in *v1.PodSignature, out *core.PodSignature, s conversion.Scope) error { - out.PodController = (*meta_v1.OwnerReference)(unsafe.Pointer(in.PodController)) + out.PodController = (*metav1.OwnerReference)(unsafe.Pointer(in.PodController)) return nil } @@ -3812,7 +3812,7 @@ func Convert_v1_PodSignature_To_core_PodSignature(in *v1.PodSignature, out *core } func autoConvert_core_PodSignature_To_v1_PodSignature(in *core.PodSignature, out *v1.PodSignature, s conversion.Scope) error { - out.PodController = (*meta_v1.OwnerReference)(unsafe.Pointer(in.PodController)) + out.PodController = (*metav1.OwnerReference)(unsafe.Pointer(in.PodController)) return nil } @@ -3964,7 +3964,7 @@ func autoConvert_v1_PodStatus_To_core_PodStatus(in *v1.PodStatus, out *core.PodS out.NominatedNodeName = in.NominatedNodeName out.HostIP = in.HostIP out.PodIP = in.PodIP - out.StartTime = (*meta_v1.Time)(unsafe.Pointer(in.StartTime)) + out.StartTime = (*metav1.Time)(unsafe.Pointer(in.StartTime)) out.InitContainerStatuses = *(*[]core.ContainerStatus)(unsafe.Pointer(&in.InitContainerStatuses)) out.ContainerStatuses = *(*[]core.ContainerStatus)(unsafe.Pointer(&in.ContainerStatuses)) out.QOSClass = core.PodQOSClass(in.QOSClass) @@ -3984,7 +3984,7 @@ func autoConvert_core_PodStatus_To_v1_PodStatus(in *core.PodStatus, out *v1.PodS out.NominatedNodeName = in.NominatedNodeName out.HostIP = in.HostIP out.PodIP = in.PodIP - out.StartTime = (*meta_v1.Time)(unsafe.Pointer(in.StartTime)) + out.StartTime = (*metav1.Time)(unsafe.Pointer(in.StartTime)) out.QOSClass = v1.PodQOSClass(in.QOSClass) out.InitContainerStatuses = *(*[]v1.ContainerStatus)(unsafe.Pointer(&in.InitContainerStatuses)) out.ContainerStatuses = *(*[]v1.ContainerStatus)(unsafe.Pointer(&in.ContainerStatuses)) @@ -4505,7 +4505,7 @@ func Convert_core_ReplicationControllerList_To_v1_ReplicationControllerList(in * } func autoConvert_v1_ReplicationControllerSpec_To_core_ReplicationControllerSpec(in *v1.ReplicationControllerSpec, out *core.ReplicationControllerSpec, s conversion.Scope) error { - if err := meta_v1.Convert_Pointer_int32_To_int32(&in.Replicas, &out.Replicas, s); err != nil { + if err := metav1.Convert_Pointer_int32_To_int32(&in.Replicas, &out.Replicas, s); err != nil { return err } out.MinReadySeconds = in.MinReadySeconds @@ -4523,7 +4523,7 @@ func autoConvert_v1_ReplicationControllerSpec_To_core_ReplicationControllerSpec( } func autoConvert_core_ReplicationControllerSpec_To_v1_ReplicationControllerSpec(in *core.ReplicationControllerSpec, out *v1.ReplicationControllerSpec, s conversion.Scope) error { - if err := meta_v1.Convert_int32_To_Pointer_int32(&in.Replicas, &out.Replicas, s); err != nil { + if err := metav1.Convert_int32_To_Pointer_int32(&in.Replicas, &out.Replicas, s); err != nil { return err } out.MinReadySeconds = in.MinReadySeconds @@ -5189,7 +5189,7 @@ func Convert_core_ServiceAccountList_To_v1_ServiceAccountList(in *core.ServiceAc func autoConvert_v1_ServiceAccountTokenProjection_To_core_ServiceAccountTokenProjection(in *v1.ServiceAccountTokenProjection, out *core.ServiceAccountTokenProjection, s conversion.Scope) error { out.Audience = in.Audience - if err := meta_v1.Convert_Pointer_int64_To_int64(&in.ExpirationSeconds, &out.ExpirationSeconds, s); err != nil { + if err := metav1.Convert_Pointer_int64_To_int64(&in.ExpirationSeconds, &out.ExpirationSeconds, s); err != nil { return err } out.Path = in.Path @@ -5203,7 +5203,7 @@ func Convert_v1_ServiceAccountTokenProjection_To_core_ServiceAccountTokenProject func autoConvert_core_ServiceAccountTokenProjection_To_v1_ServiceAccountTokenProjection(in *core.ServiceAccountTokenProjection, out *v1.ServiceAccountTokenProjection, s conversion.Scope) error { out.Audience = in.Audience - if err := meta_v1.Convert_int64_To_Pointer_int64(&in.ExpirationSeconds, &out.ExpirationSeconds, s); err != nil { + if err := metav1.Convert_int64_To_Pointer_int64(&in.ExpirationSeconds, &out.ExpirationSeconds, s); err != nil { return err } out.Path = in.Path @@ -5497,7 +5497,7 @@ func autoConvert_v1_Taint_To_core_Taint(in *v1.Taint, out *core.Taint, s convers out.Key = in.Key out.Value = in.Value out.Effect = core.TaintEffect(in.Effect) - out.TimeAdded = (*meta_v1.Time)(unsafe.Pointer(in.TimeAdded)) + out.TimeAdded = (*metav1.Time)(unsafe.Pointer(in.TimeAdded)) return nil } @@ -5510,7 +5510,7 @@ func autoConvert_core_Taint_To_v1_Taint(in *core.Taint, out *v1.Taint, s convers out.Key = in.Key out.Value = in.Value out.Effect = v1.TaintEffect(in.Effect) - out.TimeAdded = (*meta_v1.Time)(unsafe.Pointer(in.TimeAdded)) + out.TimeAdded = (*metav1.Time)(unsafe.Pointer(in.TimeAdded)) return nil } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/validation/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/validation/BUILD index 9594b47fea..8dd3b22fed 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/validation/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/validation/BUILD @@ -25,20 +25,20 @@ go_library( "//pkg/fieldpath:go_default_library", "//pkg/master/ports:go_default_library", "//pkg/security/apparmor:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/validation:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/validation:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/validation:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", ], ) @@ -56,14 +56,14 @@ go_test( "//pkg/features:go_default_library", "//pkg/security/apparmor:go_default_library", "//pkg/util/pointer:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature/testing:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/zz_generated.deepcopy.go index 3331f6e1fa..74b790e102 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/zz_generated.deepcopy.go @@ -47,30 +47,18 @@ func (in *Affinity) DeepCopyInto(out *Affinity) { *out = *in if in.NodeAffinity != nil { in, out := &in.NodeAffinity, &out.NodeAffinity - if *in == nil { - *out = nil - } else { - *out = new(NodeAffinity) - (*in).DeepCopyInto(*out) - } + *out = new(NodeAffinity) + (*in).DeepCopyInto(*out) } if in.PodAffinity != nil { in, out := &in.PodAffinity, &out.PodAffinity - if *in == nil { - *out = nil - } else { - *out = new(PodAffinity) - (*in).DeepCopyInto(*out) - } + *out = new(PodAffinity) + (*in).DeepCopyInto(*out) } if in.PodAntiAffinity != nil { in, out := &in.PodAntiAffinity, &out.PodAntiAffinity - if *in == nil { - *out = nil - } else { - *out = new(PodAntiAffinity) - (*in).DeepCopyInto(*out) - } + *out = new(PodAntiAffinity) + (*in).DeepCopyInto(*out) } return } @@ -129,39 +117,23 @@ func (in *AzureDiskVolumeSource) DeepCopyInto(out *AzureDiskVolumeSource) { *out = *in if in.CachingMode != nil { in, out := &in.CachingMode, &out.CachingMode - if *in == nil { - *out = nil - } else { - *out = new(AzureDataDiskCachingMode) - **out = **in - } + *out = new(AzureDataDiskCachingMode) + **out = **in } if in.FSType != nil { in, out := &in.FSType, &out.FSType - if *in == nil { - *out = nil - } else { - *out = new(string) - **out = **in - } + *out = new(string) + **out = **in } if in.ReadOnly != nil { in, out := &in.ReadOnly, &out.ReadOnly - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } if in.Kind != nil { in, out := &in.Kind, &out.Kind - if *in == nil { - *out = nil - } else { - *out = new(AzureDataDiskKind) - **out = **in - } + *out = new(AzureDataDiskKind) + **out = **in } return } @@ -181,12 +153,8 @@ func (in *AzureFilePersistentVolumeSource) DeepCopyInto(out *AzureFilePersistent *out = *in if in.SecretNamespace != nil { in, out := &in.SecretNamespace, &out.SecretNamespace - if *in == nil { - *out = nil - } else { - *out = new(string) - **out = **in - } + *out = new(string) + **out = **in } return } @@ -256,30 +224,18 @@ func (in *CSIPersistentVolumeSource) DeepCopyInto(out *CSIPersistentVolumeSource } if in.ControllerPublishSecretRef != nil { in, out := &in.ControllerPublishSecretRef, &out.ControllerPublishSecretRef - if *in == nil { - *out = nil - } else { - *out = new(SecretReference) - **out = **in - } + *out = new(SecretReference) + **out = **in } if in.NodeStageSecretRef != nil { in, out := &in.NodeStageSecretRef, &out.NodeStageSecretRef - if *in == nil { - *out = nil - } else { - *out = new(SecretReference) - **out = **in - } + *out = new(SecretReference) + **out = **in } if in.NodePublishSecretRef != nil { in, out := &in.NodePublishSecretRef, &out.NodePublishSecretRef - if *in == nil { - *out = nil - } else { - *out = new(SecretReference) - **out = **in - } + *out = new(SecretReference) + **out = **in } return } @@ -330,12 +286,8 @@ func (in *CephFSPersistentVolumeSource) DeepCopyInto(out *CephFSPersistentVolume } if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - if *in == nil { - *out = nil - } else { - *out = new(SecretReference) - **out = **in - } + *out = new(SecretReference) + **out = **in } return } @@ -360,12 +312,8 @@ func (in *CephFSVolumeSource) DeepCopyInto(out *CephFSVolumeSource) { } if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - if *in == nil { - *out = nil - } else { - *out = new(LocalObjectReference) - **out = **in - } + *out = new(LocalObjectReference) + **out = **in } return } @@ -385,12 +333,8 @@ func (in *CinderPersistentVolumeSource) DeepCopyInto(out *CinderPersistentVolume *out = *in if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - if *in == nil { - *out = nil - } else { - *out = new(SecretReference) - **out = **in - } + *out = new(SecretReference) + **out = **in } return } @@ -410,12 +354,8 @@ func (in *CinderVolumeSource) DeepCopyInto(out *CinderVolumeSource) { *out = *in if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - if *in == nil { - *out = nil - } else { - *out = new(LocalObjectReference) - **out = **in - } + *out = new(LocalObjectReference) + **out = **in } return } @@ -435,12 +375,8 @@ func (in *ClientIPConfig) DeepCopyInto(out *ClientIPConfig) { *out = *in if in.TimeoutSeconds != nil { in, out := &in.TimeoutSeconds, &out.TimeoutSeconds - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } return } @@ -551,12 +487,15 @@ func (in *ConfigMap) DeepCopyInto(out *ConfigMap) { in, out := &in.BinaryData, &out.BinaryData *out = make(map[string][]byte, len(*in)) for key, val := range *in { + var outVal []byte if val == nil { (*out)[key] = nil } else { - (*out)[key] = make([]byte, len(val)) - copy((*out)[key], val) + in, out := &val, &outVal + *out = make([]byte, len(*in)) + copy(*out, *in) } + (*out)[key] = outVal } } return @@ -586,12 +525,8 @@ func (in *ConfigMapEnvSource) DeepCopyInto(out *ConfigMapEnvSource) { out.LocalObjectReference = in.LocalObjectReference if in.Optional != nil { in, out := &in.Optional, &out.Optional - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } return } @@ -612,12 +547,8 @@ func (in *ConfigMapKeySelector) DeepCopyInto(out *ConfigMapKeySelector) { out.LocalObjectReference = in.LocalObjectReference if in.Optional != nil { in, out := &in.Optional, &out.Optional - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } return } @@ -694,12 +625,8 @@ func (in *ConfigMapProjection) DeepCopyInto(out *ConfigMapProjection) { } if in.Optional != nil { in, out := &in.Optional, &out.Optional - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } return } @@ -727,21 +654,13 @@ func (in *ConfigMapVolumeSource) DeepCopyInto(out *ConfigMapVolumeSource) { } if in.DefaultMode != nil { in, out := &in.DefaultMode, &out.DefaultMode - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.Optional != nil { in, out := &in.Optional, &out.Optional - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } return } @@ -803,39 +722,23 @@ func (in *Container) DeepCopyInto(out *Container) { } if in.LivenessProbe != nil { in, out := &in.LivenessProbe, &out.LivenessProbe - if *in == nil { - *out = nil - } else { - *out = new(Probe) - (*in).DeepCopyInto(*out) - } + *out = new(Probe) + (*in).DeepCopyInto(*out) } if in.ReadinessProbe != nil { in, out := &in.ReadinessProbe, &out.ReadinessProbe - if *in == nil { - *out = nil - } else { - *out = new(Probe) - (*in).DeepCopyInto(*out) - } + *out = new(Probe) + (*in).DeepCopyInto(*out) } if in.Lifecycle != nil { in, out := &in.Lifecycle, &out.Lifecycle - if *in == nil { - *out = nil - } else { - *out = new(Lifecycle) - (*in).DeepCopyInto(*out) - } + *out = new(Lifecycle) + (*in).DeepCopyInto(*out) } if in.SecurityContext != nil { in, out := &in.SecurityContext, &out.SecurityContext - if *in == nil { - *out = nil - } else { - *out = new(SecurityContext) - (*in).DeepCopyInto(*out) - } + *out = new(SecurityContext) + (*in).DeepCopyInto(*out) } return } @@ -892,30 +795,18 @@ func (in *ContainerState) DeepCopyInto(out *ContainerState) { *out = *in if in.Waiting != nil { in, out := &in.Waiting, &out.Waiting - if *in == nil { - *out = nil - } else { - *out = new(ContainerStateWaiting) - **out = **in - } + *out = new(ContainerStateWaiting) + **out = **in } if in.Running != nil { in, out := &in.Running, &out.Running - if *in == nil { - *out = nil - } else { - *out = new(ContainerStateRunning) - (*in).DeepCopyInto(*out) - } + *out = new(ContainerStateRunning) + (*in).DeepCopyInto(*out) } if in.Terminated != nil { in, out := &in.Terminated, &out.Terminated - if *in == nil { - *out = nil - } else { - *out = new(ContainerStateTerminated) - (*in).DeepCopyInto(*out) - } + *out = new(ContainerStateTerminated) + (*in).DeepCopyInto(*out) } return } @@ -1043,30 +934,18 @@ func (in *DownwardAPIVolumeFile) DeepCopyInto(out *DownwardAPIVolumeFile) { *out = *in if in.FieldRef != nil { in, out := &in.FieldRef, &out.FieldRef - if *in == nil { - *out = nil - } else { - *out = new(ObjectFieldSelector) - **out = **in - } + *out = new(ObjectFieldSelector) + **out = **in } if in.ResourceFieldRef != nil { in, out := &in.ResourceFieldRef, &out.ResourceFieldRef - if *in == nil { - *out = nil - } else { - *out = new(ResourceFieldSelector) - (*in).DeepCopyInto(*out) - } + *out = new(ResourceFieldSelector) + (*in).DeepCopyInto(*out) } if in.Mode != nil { in, out := &in.Mode, &out.Mode - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } return } @@ -1093,12 +972,8 @@ func (in *DownwardAPIVolumeSource) DeepCopyInto(out *DownwardAPIVolumeSource) { } if in.DefaultMode != nil { in, out := &in.DefaultMode, &out.DefaultMode - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } return } @@ -1118,12 +993,8 @@ func (in *EmptyDirVolumeSource) DeepCopyInto(out *EmptyDirVolumeSource) { *out = *in if in.SizeLimit != nil { in, out := &in.SizeLimit, &out.SizeLimit - if *in == nil { - *out = nil - } else { - x := (*in).DeepCopy() - *out = &x - } + x := (*in).DeepCopy() + *out = &x } return } @@ -1143,21 +1014,13 @@ func (in *EndpointAddress) DeepCopyInto(out *EndpointAddress) { *out = *in if in.NodeName != nil { in, out := &in.NodeName, &out.NodeName - if *in == nil { - *out = nil - } else { - *out = new(string) - **out = **in - } + *out = new(string) + **out = **in } if in.TargetRef != nil { in, out := &in.TargetRef, &out.TargetRef - if *in == nil { - *out = nil - } else { - *out = new(ObjectReference) - **out = **in - } + *out = new(ObjectReference) + **out = **in } return } @@ -1294,21 +1157,13 @@ func (in *EnvFromSource) DeepCopyInto(out *EnvFromSource) { *out = *in if in.ConfigMapRef != nil { in, out := &in.ConfigMapRef, &out.ConfigMapRef - if *in == nil { - *out = nil - } else { - *out = new(ConfigMapEnvSource) - (*in).DeepCopyInto(*out) - } + *out = new(ConfigMapEnvSource) + (*in).DeepCopyInto(*out) } if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - if *in == nil { - *out = nil - } else { - *out = new(SecretEnvSource) - (*in).DeepCopyInto(*out) - } + *out = new(SecretEnvSource) + (*in).DeepCopyInto(*out) } return } @@ -1328,12 +1183,8 @@ func (in *EnvVar) DeepCopyInto(out *EnvVar) { *out = *in if in.ValueFrom != nil { in, out := &in.ValueFrom, &out.ValueFrom - if *in == nil { - *out = nil - } else { - *out = new(EnvVarSource) - (*in).DeepCopyInto(*out) - } + *out = new(EnvVarSource) + (*in).DeepCopyInto(*out) } return } @@ -1353,39 +1204,23 @@ func (in *EnvVarSource) DeepCopyInto(out *EnvVarSource) { *out = *in if in.FieldRef != nil { in, out := &in.FieldRef, &out.FieldRef - if *in == nil { - *out = nil - } else { - *out = new(ObjectFieldSelector) - **out = **in - } + *out = new(ObjectFieldSelector) + **out = **in } if in.ResourceFieldRef != nil { in, out := &in.ResourceFieldRef, &out.ResourceFieldRef - if *in == nil { - *out = nil - } else { - *out = new(ResourceFieldSelector) - (*in).DeepCopyInto(*out) - } + *out = new(ResourceFieldSelector) + (*in).DeepCopyInto(*out) } if in.ConfigMapKeyRef != nil { in, out := &in.ConfigMapKeyRef, &out.ConfigMapKeyRef - if *in == nil { - *out = nil - } else { - *out = new(ConfigMapKeySelector) - (*in).DeepCopyInto(*out) - } + *out = new(ConfigMapKeySelector) + (*in).DeepCopyInto(*out) } if in.SecretKeyRef != nil { in, out := &in.SecretKeyRef, &out.SecretKeyRef - if *in == nil { - *out = nil - } else { - *out = new(SecretKeySelector) - (*in).DeepCopyInto(*out) - } + *out = new(SecretKeySelector) + (*in).DeepCopyInto(*out) } return } @@ -1412,21 +1247,13 @@ func (in *Event) DeepCopyInto(out *Event) { in.EventTime.DeepCopyInto(&out.EventTime) if in.Series != nil { in, out := &in.Series, &out.Series - if *in == nil { - *out = nil - } else { - *out = new(EventSeries) - (*in).DeepCopyInto(*out) - } + *out = new(EventSeries) + (*in).DeepCopyInto(*out) } if in.Related != nil { in, out := &in.Related, &out.Related - if *in == nil { - *out = nil - } else { - *out = new(ObjectReference) - **out = **in - } + *out = new(ObjectReference) + **out = **in } return } @@ -1546,12 +1373,8 @@ func (in *FCVolumeSource) DeepCopyInto(out *FCVolumeSource) { } if in.Lun != nil { in, out := &in.Lun, &out.Lun - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.WWIDs != nil { in, out := &in.WWIDs, &out.WWIDs @@ -1576,12 +1399,8 @@ func (in *FlexPersistentVolumeSource) DeepCopyInto(out *FlexPersistentVolumeSour *out = *in if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - if *in == nil { - *out = nil - } else { - *out = new(SecretReference) - **out = **in - } + *out = new(SecretReference) + **out = **in } if in.Options != nil { in, out := &in.Options, &out.Options @@ -1608,12 +1427,8 @@ func (in *FlexVolumeSource) DeepCopyInto(out *FlexVolumeSource) { *out = *in if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - if *in == nil { - *out = nil - } else { - *out = new(LocalObjectReference) - **out = **in - } + *out = new(LocalObjectReference) + **out = **in } if in.Options != nil { in, out := &in.Options, &out.Options @@ -1742,30 +1557,18 @@ func (in *Handler) DeepCopyInto(out *Handler) { *out = *in if in.Exec != nil { in, out := &in.Exec, &out.Exec - if *in == nil { - *out = nil - } else { - *out = new(ExecAction) - (*in).DeepCopyInto(*out) - } + *out = new(ExecAction) + (*in).DeepCopyInto(*out) } if in.HTTPGet != nil { in, out := &in.HTTPGet, &out.HTTPGet - if *in == nil { - *out = nil - } else { - *out = new(HTTPGetAction) - (*in).DeepCopyInto(*out) - } + *out = new(HTTPGetAction) + (*in).DeepCopyInto(*out) } if in.TCPSocket != nil { in, out := &in.TCPSocket, &out.TCPSocket - if *in == nil { - *out = nil - } else { - *out = new(TCPSocketAction) - **out = **in - } + *out = new(TCPSocketAction) + **out = **in } return } @@ -1806,12 +1609,8 @@ func (in *HostPathVolumeSource) DeepCopyInto(out *HostPathVolumeSource) { *out = *in if in.Type != nil { in, out := &in.Type, &out.Type - if *in == nil { - *out = nil - } else { - *out = new(HostPathType) - **out = **in - } + *out = new(HostPathType) + **out = **in } return } @@ -1836,21 +1635,13 @@ func (in *ISCSIPersistentVolumeSource) DeepCopyInto(out *ISCSIPersistentVolumeSo } if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - if *in == nil { - *out = nil - } else { - *out = new(SecretReference) - **out = **in - } + *out = new(SecretReference) + **out = **in } if in.InitiatorName != nil { in, out := &in.InitiatorName, &out.InitiatorName - if *in == nil { - *out = nil - } else { - *out = new(string) - **out = **in - } + *out = new(string) + **out = **in } return } @@ -1875,21 +1666,13 @@ func (in *ISCSIVolumeSource) DeepCopyInto(out *ISCSIVolumeSource) { } if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - if *in == nil { - *out = nil - } else { - *out = new(LocalObjectReference) - **out = **in - } + *out = new(LocalObjectReference) + **out = **in } if in.InitiatorName != nil { in, out := &in.InitiatorName, &out.InitiatorName - if *in == nil { - *out = nil - } else { - *out = new(string) - **out = **in - } + *out = new(string) + **out = **in } return } @@ -1909,12 +1692,8 @@ func (in *KeyToPath) DeepCopyInto(out *KeyToPath) { *out = *in if in.Mode != nil { in, out := &in.Mode, &out.Mode - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } return } @@ -1934,21 +1713,13 @@ func (in *Lifecycle) DeepCopyInto(out *Lifecycle) { *out = *in if in.PostStart != nil { in, out := &in.PostStart, &out.PostStart - if *in == nil { - *out = nil - } else { - *out = new(Handler) - (*in).DeepCopyInto(*out) - } + *out = new(Handler) + (*in).DeepCopyInto(*out) } if in.PreStop != nil { in, out := &in.PreStop, &out.PreStop - if *in == nil { - *out = nil - } else { - *out = new(Handler) - (*in).DeepCopyInto(*out) - } + *out = new(Handler) + (*in).DeepCopyInto(*out) } return } @@ -2106,9 +1877,7 @@ func (in *List) DeepCopyInto(out *List) { in, out := &in.Items, &out.Items *out = make([]runtime.Object, len(*in)) for i := range *in { - if (*in)[i] == nil { - (*out)[i] = nil - } else { + if (*in)[i] != nil { (*out)[i] = (*in)[i].DeepCopyObject() } } @@ -2366,12 +2135,8 @@ func (in *NodeAffinity) DeepCopyInto(out *NodeAffinity) { *out = *in if in.RequiredDuringSchedulingIgnoredDuringExecution != nil { in, out := &in.RequiredDuringSchedulingIgnoredDuringExecution, &out.RequiredDuringSchedulingIgnoredDuringExecution - if *in == nil { - *out = nil - } else { - *out = new(NodeSelector) - (*in).DeepCopyInto(*out) - } + *out = new(NodeSelector) + (*in).DeepCopyInto(*out) } if in.PreferredDuringSchedulingIgnoredDuringExecution != nil { in, out := &in.PreferredDuringSchedulingIgnoredDuringExecution, &out.PreferredDuringSchedulingIgnoredDuringExecution @@ -2416,12 +2181,8 @@ func (in *NodeConfigSource) DeepCopyInto(out *NodeConfigSource) { *out = *in if in.ConfigMap != nil { in, out := &in.ConfigMap, &out.ConfigMap - if *in == nil { - *out = nil - } else { - *out = new(ConfigMapNodeConfigSource) - **out = **in - } + *out = new(ConfigMapNodeConfigSource) + **out = **in } return } @@ -2441,30 +2202,18 @@ func (in *NodeConfigStatus) DeepCopyInto(out *NodeConfigStatus) { *out = *in if in.Assigned != nil { in, out := &in.Assigned, &out.Assigned - if *in == nil { - *out = nil - } else { - *out = new(NodeConfigSource) - (*in).DeepCopyInto(*out) - } + *out = new(NodeConfigSource) + (*in).DeepCopyInto(*out) } if in.Active != nil { in, out := &in.Active, &out.Active - if *in == nil { - *out = nil - } else { - *out = new(NodeConfigSource) - (*in).DeepCopyInto(*out) - } + *out = new(NodeConfigSource) + (*in).DeepCopyInto(*out) } if in.LastKnownGood != nil { in, out := &in.LastKnownGood, &out.LastKnownGood - if *in == nil { - *out = nil - } else { - *out = new(NodeConfigSource) - (*in).DeepCopyInto(*out) - } + *out = new(NodeConfigSource) + (*in).DeepCopyInto(*out) } return } @@ -2663,12 +2412,8 @@ func (in *NodeSpec) DeepCopyInto(out *NodeSpec) { } if in.ConfigSource != nil { in, out := &in.ConfigSource, &out.ConfigSource - if *in == nil { - *out = nil - } else { - *out = new(NodeConfigSource) - (*in).DeepCopyInto(*out) - } + *out = new(NodeConfigSource) + (*in).DeepCopyInto(*out) } return } @@ -2733,12 +2478,8 @@ func (in *NodeStatus) DeepCopyInto(out *NodeStatus) { } if in.Config != nil { in, out := &in.Config, &out.Config - if *in == nil { - *out = nil - } else { - *out = new(NodeConfigStatus) - (*in).DeepCopyInto(*out) - } + *out = new(NodeConfigStatus) + (*in).DeepCopyInto(*out) } return } @@ -2926,31 +2667,19 @@ func (in *PersistentVolumeClaimSpec) DeepCopyInto(out *PersistentVolumeClaimSpec } if in.Selector != nil { in, out := &in.Selector, &out.Selector - if *in == nil { - *out = nil - } else { - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) - } + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) } in.Resources.DeepCopyInto(&out.Resources) if in.StorageClassName != nil { in, out := &in.StorageClassName, &out.StorageClassName - if *in == nil { - *out = nil - } else { - *out = new(string) - **out = **in - } + *out = new(string) + **out = **in } if in.VolumeMode != nil { in, out := &in.VolumeMode, &out.VolumeMode - if *in == nil { - *out = nil - } else { - *out = new(PersistentVolumeMode) - **out = **in - } + *out = new(PersistentVolumeMode) + **out = **in } return } @@ -3054,201 +2783,113 @@ func (in *PersistentVolumeSource) DeepCopyInto(out *PersistentVolumeSource) { *out = *in if in.GCEPersistentDisk != nil { in, out := &in.GCEPersistentDisk, &out.GCEPersistentDisk - if *in == nil { - *out = nil - } else { - *out = new(GCEPersistentDiskVolumeSource) - **out = **in - } + *out = new(GCEPersistentDiskVolumeSource) + **out = **in } if in.AWSElasticBlockStore != nil { in, out := &in.AWSElasticBlockStore, &out.AWSElasticBlockStore - if *in == nil { - *out = nil - } else { - *out = new(AWSElasticBlockStoreVolumeSource) - **out = **in - } + *out = new(AWSElasticBlockStoreVolumeSource) + **out = **in } if in.HostPath != nil { in, out := &in.HostPath, &out.HostPath - if *in == nil { - *out = nil - } else { - *out = new(HostPathVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(HostPathVolumeSource) + (*in).DeepCopyInto(*out) } if in.Glusterfs != nil { in, out := &in.Glusterfs, &out.Glusterfs - if *in == nil { - *out = nil - } else { - *out = new(GlusterfsVolumeSource) - **out = **in - } + *out = new(GlusterfsVolumeSource) + **out = **in } if in.NFS != nil { in, out := &in.NFS, &out.NFS - if *in == nil { - *out = nil - } else { - *out = new(NFSVolumeSource) - **out = **in - } + *out = new(NFSVolumeSource) + **out = **in } if in.RBD != nil { in, out := &in.RBD, &out.RBD - if *in == nil { - *out = nil - } else { - *out = new(RBDPersistentVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(RBDPersistentVolumeSource) + (*in).DeepCopyInto(*out) } if in.Quobyte != nil { in, out := &in.Quobyte, &out.Quobyte - if *in == nil { - *out = nil - } else { - *out = new(QuobyteVolumeSource) - **out = **in - } + *out = new(QuobyteVolumeSource) + **out = **in } if in.ISCSI != nil { in, out := &in.ISCSI, &out.ISCSI - if *in == nil { - *out = nil - } else { - *out = new(ISCSIPersistentVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(ISCSIPersistentVolumeSource) + (*in).DeepCopyInto(*out) } if in.FlexVolume != nil { in, out := &in.FlexVolume, &out.FlexVolume - if *in == nil { - *out = nil - } else { - *out = new(FlexPersistentVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(FlexPersistentVolumeSource) + (*in).DeepCopyInto(*out) } if in.Cinder != nil { in, out := &in.Cinder, &out.Cinder - if *in == nil { - *out = nil - } else { - *out = new(CinderPersistentVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(CinderPersistentVolumeSource) + (*in).DeepCopyInto(*out) } if in.CephFS != nil { in, out := &in.CephFS, &out.CephFS - if *in == nil { - *out = nil - } else { - *out = new(CephFSPersistentVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(CephFSPersistentVolumeSource) + (*in).DeepCopyInto(*out) } if in.FC != nil { in, out := &in.FC, &out.FC - if *in == nil { - *out = nil - } else { - *out = new(FCVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(FCVolumeSource) + (*in).DeepCopyInto(*out) } if in.Flocker != nil { in, out := &in.Flocker, &out.Flocker - if *in == nil { - *out = nil - } else { - *out = new(FlockerVolumeSource) - **out = **in - } + *out = new(FlockerVolumeSource) + **out = **in } if in.AzureFile != nil { in, out := &in.AzureFile, &out.AzureFile - if *in == nil { - *out = nil - } else { - *out = new(AzureFilePersistentVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(AzureFilePersistentVolumeSource) + (*in).DeepCopyInto(*out) } if in.VsphereVolume != nil { in, out := &in.VsphereVolume, &out.VsphereVolume - if *in == nil { - *out = nil - } else { - *out = new(VsphereVirtualDiskVolumeSource) - **out = **in - } + *out = new(VsphereVirtualDiskVolumeSource) + **out = **in } if in.AzureDisk != nil { in, out := &in.AzureDisk, &out.AzureDisk - if *in == nil { - *out = nil - } else { - *out = new(AzureDiskVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(AzureDiskVolumeSource) + (*in).DeepCopyInto(*out) } if in.PhotonPersistentDisk != nil { in, out := &in.PhotonPersistentDisk, &out.PhotonPersistentDisk - if *in == nil { - *out = nil - } else { - *out = new(PhotonPersistentDiskVolumeSource) - **out = **in - } + *out = new(PhotonPersistentDiskVolumeSource) + **out = **in } if in.PortworxVolume != nil { in, out := &in.PortworxVolume, &out.PortworxVolume - if *in == nil { - *out = nil - } else { - *out = new(PortworxVolumeSource) - **out = **in - } + *out = new(PortworxVolumeSource) + **out = **in } if in.ScaleIO != nil { in, out := &in.ScaleIO, &out.ScaleIO - if *in == nil { - *out = nil - } else { - *out = new(ScaleIOPersistentVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(ScaleIOPersistentVolumeSource) + (*in).DeepCopyInto(*out) } if in.Local != nil { in, out := &in.Local, &out.Local - if *in == nil { - *out = nil - } else { - *out = new(LocalVolumeSource) - **out = **in - } + *out = new(LocalVolumeSource) + **out = **in } if in.StorageOS != nil { in, out := &in.StorageOS, &out.StorageOS - if *in == nil { - *out = nil - } else { - *out = new(StorageOSPersistentVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(StorageOSPersistentVolumeSource) + (*in).DeepCopyInto(*out) } if in.CSI != nil { in, out := &in.CSI, &out.CSI - if *in == nil { - *out = nil - } else { - *out = new(CSIPersistentVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(CSIPersistentVolumeSource) + (*in).DeepCopyInto(*out) } return } @@ -3281,12 +2922,8 @@ func (in *PersistentVolumeSpec) DeepCopyInto(out *PersistentVolumeSpec) { } if in.ClaimRef != nil { in, out := &in.ClaimRef, &out.ClaimRef - if *in == nil { - *out = nil - } else { - *out = new(ObjectReference) - **out = **in - } + *out = new(ObjectReference) + **out = **in } if in.MountOptions != nil { in, out := &in.MountOptions, &out.MountOptions @@ -3295,21 +2932,13 @@ func (in *PersistentVolumeSpec) DeepCopyInto(out *PersistentVolumeSpec) { } if in.VolumeMode != nil { in, out := &in.VolumeMode, &out.VolumeMode - if *in == nil { - *out = nil - } else { - *out = new(PersistentVolumeMode) - **out = **in - } + *out = new(PersistentVolumeMode) + **out = **in } if in.NodeAffinity != nil { in, out := &in.NodeAffinity, &out.NodeAffinity - if *in == nil { - *out = nil - } else { - *out = new(VolumeNodeAffinity) - (*in).DeepCopyInto(*out) - } + *out = new(VolumeNodeAffinity) + (*in).DeepCopyInto(*out) } return } @@ -3419,12 +3048,8 @@ func (in *PodAffinityTerm) DeepCopyInto(out *PodAffinityTerm) { *out = *in if in.LabelSelector != nil { in, out := &in.LabelSelector, &out.LabelSelector - if *in == nil { - *out = nil - } else { - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) - } + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) } if in.Namespaces != nil { in, out := &in.Namespaces, &out.Namespaces @@ -3555,12 +3180,8 @@ func (in *PodDNSConfigOption) DeepCopyInto(out *PodDNSConfigOption) { *out = *in if in.Value != nil { in, out := &in.Value, &out.Value - if *in == nil { - *out = nil - } else { - *out = new(string) - **out = **in - } + *out = new(string) + **out = **in } return } @@ -3644,38 +3265,22 @@ func (in *PodLogOptions) DeepCopyInto(out *PodLogOptions) { out.TypeMeta = in.TypeMeta if in.SinceSeconds != nil { in, out := &in.SinceSeconds, &out.SinceSeconds - if *in == nil { - *out = nil - } else { - *out = new(int64) - **out = **in - } + *out = new(int64) + **out = **in } if in.SinceTime != nil { in, out := &in.SinceTime, &out.SinceTime - if *in == nil { - *out = nil - } else { - *out = (*in).DeepCopy() - } + *out = (*in).DeepCopy() } if in.TailLines != nil { in, out := &in.TailLines, &out.TailLines - if *in == nil { - *out = nil - } else { - *out = new(int64) - **out = **in - } + *out = new(int64) + **out = **in } if in.LimitBytes != nil { in, out := &in.LimitBytes, &out.LimitBytes - if *in == nil { - *out = nil - } else { - *out = new(int64) - **out = **in - } + *out = new(int64) + **out = **in } return } @@ -3774,48 +3379,28 @@ func (in *PodSecurityContext) DeepCopyInto(out *PodSecurityContext) { *out = *in if in.ShareProcessNamespace != nil { in, out := &in.ShareProcessNamespace, &out.ShareProcessNamespace - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } if in.SELinuxOptions != nil { in, out := &in.SELinuxOptions, &out.SELinuxOptions - if *in == nil { - *out = nil - } else { - *out = new(SELinuxOptions) - **out = **in - } + *out = new(SELinuxOptions) + **out = **in } if in.RunAsUser != nil { in, out := &in.RunAsUser, &out.RunAsUser - if *in == nil { - *out = nil - } else { - *out = new(int64) - **out = **in - } + *out = new(int64) + **out = **in } if in.RunAsGroup != nil { in, out := &in.RunAsGroup, &out.RunAsGroup - if *in == nil { - *out = nil - } else { - *out = new(int64) - **out = **in - } + *out = new(int64) + **out = **in } if in.RunAsNonRoot != nil { in, out := &in.RunAsNonRoot, &out.RunAsNonRoot - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } if in.SupplementalGroups != nil { in, out := &in.SupplementalGroups, &out.SupplementalGroups @@ -3824,12 +3409,8 @@ func (in *PodSecurityContext) DeepCopyInto(out *PodSecurityContext) { } if in.FSGroup != nil { in, out := &in.FSGroup, &out.FSGroup - if *in == nil { - *out = nil - } else { - *out = new(int64) - **out = **in - } + *out = new(int64) + **out = **in } if in.Sysctls != nil { in, out := &in.Sysctls, &out.Sysctls @@ -3854,12 +3435,8 @@ func (in *PodSignature) DeepCopyInto(out *PodSignature) { *out = *in if in.PodController != nil { in, out := &in.PodController, &out.PodController - if *in == nil { - *out = nil - } else { - *out = new(v1.OwnerReference) - (*in).DeepCopyInto(*out) - } + *out = new(v1.OwnerReference) + (*in).DeepCopyInto(*out) } return } @@ -3900,21 +3477,13 @@ func (in *PodSpec) DeepCopyInto(out *PodSpec) { } if in.TerminationGracePeriodSeconds != nil { in, out := &in.TerminationGracePeriodSeconds, &out.TerminationGracePeriodSeconds - if *in == nil { - *out = nil - } else { - *out = new(int64) - **out = **in - } + *out = new(int64) + **out = **in } if in.ActiveDeadlineSeconds != nil { in, out := &in.ActiveDeadlineSeconds, &out.ActiveDeadlineSeconds - if *in == nil { - *out = nil - } else { - *out = new(int64) - **out = **in - } + *out = new(int64) + **out = **in } if in.NodeSelector != nil { in, out := &in.NodeSelector, &out.NodeSelector @@ -3925,21 +3494,13 @@ func (in *PodSpec) DeepCopyInto(out *PodSpec) { } if in.AutomountServiceAccountToken != nil { in, out := &in.AutomountServiceAccountToken, &out.AutomountServiceAccountToken - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } if in.SecurityContext != nil { in, out := &in.SecurityContext, &out.SecurityContext - if *in == nil { - *out = nil - } else { - *out = new(PodSecurityContext) - (*in).DeepCopyInto(*out) - } + *out = new(PodSecurityContext) + (*in).DeepCopyInto(*out) } if in.ImagePullSecrets != nil { in, out := &in.ImagePullSecrets, &out.ImagePullSecrets @@ -3948,12 +3509,8 @@ func (in *PodSpec) DeepCopyInto(out *PodSpec) { } if in.Affinity != nil { in, out := &in.Affinity, &out.Affinity - if *in == nil { - *out = nil - } else { - *out = new(Affinity) - (*in).DeepCopyInto(*out) - } + *out = new(Affinity) + (*in).DeepCopyInto(*out) } if in.Tolerations != nil { in, out := &in.Tolerations, &out.Tolerations @@ -3971,21 +3528,13 @@ func (in *PodSpec) DeepCopyInto(out *PodSpec) { } if in.Priority != nil { in, out := &in.Priority, &out.Priority - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.DNSConfig != nil { in, out := &in.DNSConfig, &out.DNSConfig - if *in == nil { - *out = nil - } else { - *out = new(PodDNSConfig) - (*in).DeepCopyInto(*out) - } + *out = new(PodDNSConfig) + (*in).DeepCopyInto(*out) } if in.ReadinessGates != nil { in, out := &in.ReadinessGates, &out.ReadinessGates @@ -4017,11 +3566,7 @@ func (in *PodStatus) DeepCopyInto(out *PodStatus) { } if in.StartTime != nil { in, out := &in.StartTime, &out.StartTime - if *in == nil { - *out = nil - } else { - *out = (*in).DeepCopy() - } + *out = (*in).DeepCopy() } if in.InitContainerStatuses != nil { in, out := &in.InitContainerStatuses, &out.InitContainerStatuses @@ -4176,12 +3721,8 @@ func (in *Preconditions) DeepCopyInto(out *Preconditions) { *out = *in if in.UID != nil { in, out := &in.UID, &out.UID - if *in == nil { - *out = nil - } else { - *out = new(types.UID) - **out = **in - } + *out = new(types.UID) + **out = **in } return } @@ -4260,12 +3801,8 @@ func (in *ProjectedVolumeSource) DeepCopyInto(out *ProjectedVolumeSource) { } if in.DefaultMode != nil { in, out := &in.DefaultMode, &out.DefaultMode - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } return } @@ -4306,12 +3843,8 @@ func (in *RBDPersistentVolumeSource) DeepCopyInto(out *RBDPersistentVolumeSource } if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - if *in == nil { - *out = nil - } else { - *out = new(SecretReference) - **out = **in - } + *out = new(SecretReference) + **out = **in } return } @@ -4336,12 +3869,8 @@ func (in *RBDVolumeSource) DeepCopyInto(out *RBDVolumeSource) { } if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - if *in == nil { - *out = nil - } else { - *out = new(LocalObjectReference) - **out = **in - } + *out = new(LocalObjectReference) + **out = **in } return } @@ -4477,12 +4006,8 @@ func (in *ReplicationControllerSpec) DeepCopyInto(out *ReplicationControllerSpec } if in.Template != nil { in, out := &in.Template, &out.Template - if *in == nil { - *out = nil - } else { - *out = new(PodTemplateSpec) - (*in).DeepCopyInto(*out) - } + *out = new(PodTemplateSpec) + (*in).DeepCopyInto(*out) } return } @@ -4637,12 +4162,8 @@ func (in *ResourceQuotaSpec) DeepCopyInto(out *ResourceQuotaSpec) { } if in.ScopeSelector != nil { in, out := &in.ScopeSelector, &out.ScopeSelector - if *in == nil { - *out = nil - } else { - *out = new(ScopeSelector) - (*in).DeepCopyInto(*out) - } + *out = new(ScopeSelector) + (*in).DeepCopyInto(*out) } return } @@ -4738,12 +4259,8 @@ func (in *ScaleIOPersistentVolumeSource) DeepCopyInto(out *ScaleIOPersistentVolu *out = *in if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - if *in == nil { - *out = nil - } else { - *out = new(SecretReference) - **out = **in - } + *out = new(SecretReference) + **out = **in } return } @@ -4763,12 +4280,8 @@ func (in *ScaleIOVolumeSource) DeepCopyInto(out *ScaleIOVolumeSource) { *out = *in if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - if *in == nil { - *out = nil - } else { - *out = new(LocalObjectReference) - **out = **in - } + *out = new(LocalObjectReference) + **out = **in } return } @@ -4836,12 +4349,15 @@ func (in *Secret) DeepCopyInto(out *Secret) { in, out := &in.Data, &out.Data *out = make(map[string][]byte, len(*in)) for key, val := range *in { + var outVal []byte if val == nil { (*out)[key] = nil } else { - (*out)[key] = make([]byte, len(val)) - copy((*out)[key], val) + in, out := &val, &outVal + *out = make([]byte, len(*in)) + copy(*out, *in) } + (*out)[key] = outVal } } return @@ -4871,12 +4387,8 @@ func (in *SecretEnvSource) DeepCopyInto(out *SecretEnvSource) { out.LocalObjectReference = in.LocalObjectReference if in.Optional != nil { in, out := &in.Optional, &out.Optional - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } return } @@ -4897,12 +4409,8 @@ func (in *SecretKeySelector) DeepCopyInto(out *SecretKeySelector) { out.LocalObjectReference = in.LocalObjectReference if in.Optional != nil { in, out := &in.Optional, &out.Optional - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } return } @@ -4963,12 +4471,8 @@ func (in *SecretProjection) DeepCopyInto(out *SecretProjection) { } if in.Optional != nil { in, out := &in.Optional, &out.Optional - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } return } @@ -5011,21 +4515,13 @@ func (in *SecretVolumeSource) DeepCopyInto(out *SecretVolumeSource) { } if in.DefaultMode != nil { in, out := &in.DefaultMode, &out.DefaultMode - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.Optional != nil { in, out := &in.Optional, &out.Optional - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } return } @@ -5045,75 +4541,43 @@ func (in *SecurityContext) DeepCopyInto(out *SecurityContext) { *out = *in if in.Capabilities != nil { in, out := &in.Capabilities, &out.Capabilities - if *in == nil { - *out = nil - } else { - *out = new(Capabilities) - (*in).DeepCopyInto(*out) - } + *out = new(Capabilities) + (*in).DeepCopyInto(*out) } if in.Privileged != nil { in, out := &in.Privileged, &out.Privileged - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } if in.SELinuxOptions != nil { in, out := &in.SELinuxOptions, &out.SELinuxOptions - if *in == nil { - *out = nil - } else { - *out = new(SELinuxOptions) - **out = **in - } + *out = new(SELinuxOptions) + **out = **in } if in.RunAsUser != nil { in, out := &in.RunAsUser, &out.RunAsUser - if *in == nil { - *out = nil - } else { - *out = new(int64) - **out = **in - } + *out = new(int64) + **out = **in } if in.RunAsGroup != nil { in, out := &in.RunAsGroup, &out.RunAsGroup - if *in == nil { - *out = nil - } else { - *out = new(int64) - **out = **in - } + *out = new(int64) + **out = **in } if in.RunAsNonRoot != nil { in, out := &in.RunAsNonRoot, &out.RunAsNonRoot - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } if in.ReadOnlyRootFilesystem != nil { in, out := &in.ReadOnlyRootFilesystem, &out.ReadOnlyRootFilesystem - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } if in.AllowPrivilegeEscalation != nil { in, out := &in.AllowPrivilegeEscalation, &out.AllowPrivilegeEscalation - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } return } @@ -5199,12 +4663,8 @@ func (in *ServiceAccount) DeepCopyInto(out *ServiceAccount) { } if in.AutomountServiceAccountToken != nil { in, out := &in.AutomountServiceAccountToken, &out.AutomountServiceAccountToken - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } return } @@ -5373,12 +4833,8 @@ func (in *ServiceSpec) DeepCopyInto(out *ServiceSpec) { } if in.SessionAffinityConfig != nil { in, out := &in.SessionAffinityConfig, &out.SessionAffinityConfig - if *in == nil { - *out = nil - } else { - *out = new(SessionAffinityConfig) - (*in).DeepCopyInto(*out) - } + *out = new(SessionAffinityConfig) + (*in).DeepCopyInto(*out) } if in.LoadBalancerSourceRanges != nil { in, out := &in.LoadBalancerSourceRanges, &out.LoadBalancerSourceRanges @@ -5420,12 +4876,8 @@ func (in *SessionAffinityConfig) DeepCopyInto(out *SessionAffinityConfig) { *out = *in if in.ClientIP != nil { in, out := &in.ClientIP, &out.ClientIP - if *in == nil { - *out = nil - } else { - *out = new(ClientIPConfig) - (*in).DeepCopyInto(*out) - } + *out = new(ClientIPConfig) + (*in).DeepCopyInto(*out) } return } @@ -5445,12 +4897,8 @@ func (in *StorageOSPersistentVolumeSource) DeepCopyInto(out *StorageOSPersistent *out = *in if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - if *in == nil { - *out = nil - } else { - *out = new(ObjectReference) - **out = **in - } + *out = new(ObjectReference) + **out = **in } return } @@ -5470,12 +4918,8 @@ func (in *StorageOSVolumeSource) DeepCopyInto(out *StorageOSVolumeSource) { *out = *in if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - if *in == nil { - *out = nil - } else { - *out = new(LocalObjectReference) - **out = **in - } + *out = new(LocalObjectReference) + **out = **in } return } @@ -5528,11 +4972,7 @@ func (in *Taint) DeepCopyInto(out *Taint) { *out = *in if in.TimeAdded != nil { in, out := &in.TimeAdded, &out.TimeAdded - if *in == nil { - *out = nil - } else { - *out = (*in).DeepCopy() - } + *out = (*in).DeepCopy() } return } @@ -5552,12 +4992,8 @@ func (in *Toleration) DeepCopyInto(out *Toleration) { *out = *in if in.TolerationSeconds != nil { in, out := &in.TolerationSeconds, &out.TolerationSeconds - if *in == nil { - *out = nil - } else { - *out = new(int64) - **out = **in - } + *out = new(int64) + **out = **in } return } @@ -5654,12 +5090,8 @@ func (in *VolumeMount) DeepCopyInto(out *VolumeMount) { *out = *in if in.MountPropagation != nil { in, out := &in.MountPropagation, &out.MountPropagation - if *in == nil { - *out = nil - } else { - *out = new(MountPropagationMode) - **out = **in - } + *out = new(MountPropagationMode) + **out = **in } return } @@ -5679,12 +5111,8 @@ func (in *VolumeNodeAffinity) DeepCopyInto(out *VolumeNodeAffinity) { *out = *in if in.Required != nil { in, out := &in.Required, &out.Required - if *in == nil { - *out = nil - } else { - *out = new(NodeSelector) - (*in).DeepCopyInto(*out) - } + *out = new(NodeSelector) + (*in).DeepCopyInto(*out) } return } @@ -5704,39 +5132,23 @@ func (in *VolumeProjection) DeepCopyInto(out *VolumeProjection) { *out = *in if in.Secret != nil { in, out := &in.Secret, &out.Secret - if *in == nil { - *out = nil - } else { - *out = new(SecretProjection) - (*in).DeepCopyInto(*out) - } + *out = new(SecretProjection) + (*in).DeepCopyInto(*out) } if in.DownwardAPI != nil { in, out := &in.DownwardAPI, &out.DownwardAPI - if *in == nil { - *out = nil - } else { - *out = new(DownwardAPIProjection) - (*in).DeepCopyInto(*out) - } + *out = new(DownwardAPIProjection) + (*in).DeepCopyInto(*out) } if in.ConfigMap != nil { in, out := &in.ConfigMap, &out.ConfigMap - if *in == nil { - *out = nil - } else { - *out = new(ConfigMapProjection) - (*in).DeepCopyInto(*out) - } + *out = new(ConfigMapProjection) + (*in).DeepCopyInto(*out) } if in.ServiceAccountToken != nil { in, out := &in.ServiceAccountToken, &out.ServiceAccountToken - if *in == nil { - *out = nil - } else { - *out = new(ServiceAccountTokenProjection) - **out = **in - } + *out = new(ServiceAccountTokenProjection) + **out = **in } return } @@ -5756,246 +5168,138 @@ func (in *VolumeSource) DeepCopyInto(out *VolumeSource) { *out = *in if in.HostPath != nil { in, out := &in.HostPath, &out.HostPath - if *in == nil { - *out = nil - } else { - *out = new(HostPathVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(HostPathVolumeSource) + (*in).DeepCopyInto(*out) } if in.EmptyDir != nil { in, out := &in.EmptyDir, &out.EmptyDir - if *in == nil { - *out = nil - } else { - *out = new(EmptyDirVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(EmptyDirVolumeSource) + (*in).DeepCopyInto(*out) } if in.GCEPersistentDisk != nil { in, out := &in.GCEPersistentDisk, &out.GCEPersistentDisk - if *in == nil { - *out = nil - } else { - *out = new(GCEPersistentDiskVolumeSource) - **out = **in - } + *out = new(GCEPersistentDiskVolumeSource) + **out = **in } if in.AWSElasticBlockStore != nil { in, out := &in.AWSElasticBlockStore, &out.AWSElasticBlockStore - if *in == nil { - *out = nil - } else { - *out = new(AWSElasticBlockStoreVolumeSource) - **out = **in - } + *out = new(AWSElasticBlockStoreVolumeSource) + **out = **in } if in.GitRepo != nil { in, out := &in.GitRepo, &out.GitRepo - if *in == nil { - *out = nil - } else { - *out = new(GitRepoVolumeSource) - **out = **in - } + *out = new(GitRepoVolumeSource) + **out = **in } if in.Secret != nil { in, out := &in.Secret, &out.Secret - if *in == nil { - *out = nil - } else { - *out = new(SecretVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(SecretVolumeSource) + (*in).DeepCopyInto(*out) } if in.NFS != nil { in, out := &in.NFS, &out.NFS - if *in == nil { - *out = nil - } else { - *out = new(NFSVolumeSource) - **out = **in - } + *out = new(NFSVolumeSource) + **out = **in } if in.ISCSI != nil { in, out := &in.ISCSI, &out.ISCSI - if *in == nil { - *out = nil - } else { - *out = new(ISCSIVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(ISCSIVolumeSource) + (*in).DeepCopyInto(*out) } if in.Glusterfs != nil { in, out := &in.Glusterfs, &out.Glusterfs - if *in == nil { - *out = nil - } else { - *out = new(GlusterfsVolumeSource) - **out = **in - } + *out = new(GlusterfsVolumeSource) + **out = **in } if in.PersistentVolumeClaim != nil { in, out := &in.PersistentVolumeClaim, &out.PersistentVolumeClaim - if *in == nil { - *out = nil - } else { - *out = new(PersistentVolumeClaimVolumeSource) - **out = **in - } + *out = new(PersistentVolumeClaimVolumeSource) + **out = **in } if in.RBD != nil { in, out := &in.RBD, &out.RBD - if *in == nil { - *out = nil - } else { - *out = new(RBDVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(RBDVolumeSource) + (*in).DeepCopyInto(*out) } if in.Quobyte != nil { in, out := &in.Quobyte, &out.Quobyte - if *in == nil { - *out = nil - } else { - *out = new(QuobyteVolumeSource) - **out = **in - } + *out = new(QuobyteVolumeSource) + **out = **in } if in.FlexVolume != nil { in, out := &in.FlexVolume, &out.FlexVolume - if *in == nil { - *out = nil - } else { - *out = new(FlexVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(FlexVolumeSource) + (*in).DeepCopyInto(*out) } if in.Cinder != nil { in, out := &in.Cinder, &out.Cinder - if *in == nil { - *out = nil - } else { - *out = new(CinderVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(CinderVolumeSource) + (*in).DeepCopyInto(*out) } if in.CephFS != nil { in, out := &in.CephFS, &out.CephFS - if *in == nil { - *out = nil - } else { - *out = new(CephFSVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(CephFSVolumeSource) + (*in).DeepCopyInto(*out) } if in.Flocker != nil { in, out := &in.Flocker, &out.Flocker - if *in == nil { - *out = nil - } else { - *out = new(FlockerVolumeSource) - **out = **in - } + *out = new(FlockerVolumeSource) + **out = **in } if in.DownwardAPI != nil { in, out := &in.DownwardAPI, &out.DownwardAPI - if *in == nil { - *out = nil - } else { - *out = new(DownwardAPIVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(DownwardAPIVolumeSource) + (*in).DeepCopyInto(*out) } if in.FC != nil { in, out := &in.FC, &out.FC - if *in == nil { - *out = nil - } else { - *out = new(FCVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(FCVolumeSource) + (*in).DeepCopyInto(*out) } if in.AzureFile != nil { in, out := &in.AzureFile, &out.AzureFile - if *in == nil { - *out = nil - } else { - *out = new(AzureFileVolumeSource) - **out = **in - } + *out = new(AzureFileVolumeSource) + **out = **in } if in.ConfigMap != nil { in, out := &in.ConfigMap, &out.ConfigMap - if *in == nil { - *out = nil - } else { - *out = new(ConfigMapVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(ConfigMapVolumeSource) + (*in).DeepCopyInto(*out) } if in.VsphereVolume != nil { in, out := &in.VsphereVolume, &out.VsphereVolume - if *in == nil { - *out = nil - } else { - *out = new(VsphereVirtualDiskVolumeSource) - **out = **in - } + *out = new(VsphereVirtualDiskVolumeSource) + **out = **in } if in.AzureDisk != nil { in, out := &in.AzureDisk, &out.AzureDisk - if *in == nil { - *out = nil - } else { - *out = new(AzureDiskVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(AzureDiskVolumeSource) + (*in).DeepCopyInto(*out) } if in.PhotonPersistentDisk != nil { in, out := &in.PhotonPersistentDisk, &out.PhotonPersistentDisk - if *in == nil { - *out = nil - } else { - *out = new(PhotonPersistentDiskVolumeSource) - **out = **in - } + *out = new(PhotonPersistentDiskVolumeSource) + **out = **in } if in.Projected != nil { in, out := &in.Projected, &out.Projected - if *in == nil { - *out = nil - } else { - *out = new(ProjectedVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(ProjectedVolumeSource) + (*in).DeepCopyInto(*out) } if in.PortworxVolume != nil { in, out := &in.PortworxVolume, &out.PortworxVolume - if *in == nil { - *out = nil - } else { - *out = new(PortworxVolumeSource) - **out = **in - } + *out = new(PortworxVolumeSource) + **out = **in } if in.ScaleIO != nil { in, out := &in.ScaleIO, &out.ScaleIO - if *in == nil { - *out = nil - } else { - *out = new(ScaleIOVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(ScaleIOVolumeSource) + (*in).DeepCopyInto(*out) } if in.StorageOS != nil { in, out := &in.StorageOS, &out.StorageOS - if *in == nil { - *out = nil - } else { - *out = new(StorageOSVolumeSource) - (*in).DeepCopyInto(*out) - } + *out = new(StorageOSVolumeSource) + (*in).DeepCopyInto(*out) } return } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/events/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/events/BUILD index 13bf1079d8..6169e57d7b 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/events/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/events/BUILD @@ -10,8 +10,8 @@ go_library( visibility = ["//visibility:public"], deps = [ "//pkg/apis/core:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/events/install/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/events/install/BUILD index a3150f73fa..e31fdf8604 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/events/install/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/events/install/BUILD @@ -9,8 +9,8 @@ go_library( "//pkg/api/legacyscheme:go_default_library", "//pkg/apis/events:go_default_library", "//pkg/apis/events/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/events/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/events/v1beta1/BUILD index bef76b2552..f590336546 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/events/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/events/v1beta1/BUILD @@ -14,11 +14,11 @@ go_library( deps = [ "//pkg/apis/core:go_default_library", "//pkg/apis/core/v1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/events/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/events/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/extensions/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/extensions/BUILD index 511011b5ee..764a5af867 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/extensions/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/extensions/BUILD @@ -19,11 +19,11 @@ go_library( "//pkg/apis/core:go_default_library", "//pkg/apis/networking:go_default_library", "//pkg/apis/policy:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/extensions/install/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/extensions/install/BUILD index 89384d6ed3..3146e5cc33 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/extensions/install/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/extensions/install/BUILD @@ -13,8 +13,8 @@ go_library( "//pkg/api/legacyscheme:go_default_library", "//pkg/apis/extensions:go_default_library", "//pkg/apis/extensions/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/extensions/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/extensions/v1beta1/BUILD index 10e9039162..cbebc8d69b 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/extensions/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/extensions/v1beta1/BUILD @@ -24,34 +24,34 @@ go_library( "//pkg/apis/extensions:go_default_library", "//pkg/apis/networking:go_default_library", "//pkg/apis/policy:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/extensions/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/extensions/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", ], ) go_test( - name = "go_default_xtest", + name = "go_default_test", srcs = ["defaults_test.go"], + embed = [":go_default_library"], deps = [ - ":go_default_library", "//pkg/api/legacyscheme:go_default_library", "//pkg/apis/core:go_default_library", "//pkg/apis/core/install:go_default_library", "//pkg/apis/extensions/install:go_default_library", "//pkg/util/pointer:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/extensions/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/extensions/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/extensions/v1beta1/zz_generated.conversion.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/extensions/v1beta1/zz_generated.conversion.go index 2eb34cb40f..a950d6a78f 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/extensions/v1beta1/zz_generated.conversion.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/extensions/v1beta1/zz_generated.conversion.go @@ -25,12 +25,12 @@ import ( v1 "k8s.io/api/core/v1" v1beta1 "k8s.io/api/extensions/v1beta1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" conversion "k8s.io/apimachinery/pkg/conversion" runtime "k8s.io/apimachinery/pkg/runtime" autoscaling "k8s.io/kubernetes/pkg/apis/autoscaling" core "k8s.io/kubernetes/pkg/apis/core" - core_v1 "k8s.io/kubernetes/pkg/apis/core/v1" + corev1 "k8s.io/kubernetes/pkg/apis/core/v1" extensions "k8s.io/kubernetes/pkg/apis/extensions" policy "k8s.io/kubernetes/pkg/apis/policy" ) @@ -375,8 +375,8 @@ func Convert_extensions_DaemonSetList_To_v1beta1_DaemonSetList(in *extensions.Da } func autoConvert_v1beta1_DaemonSetSpec_To_extensions_DaemonSetSpec(in *v1beta1.DaemonSetSpec, out *extensions.DaemonSetSpec, s conversion.Scope) error { - out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector)) - if err := core_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + out.Selector = (*metav1.LabelSelector)(unsafe.Pointer(in.Selector)) + if err := corev1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { return err } if err := Convert_v1beta1_DaemonSetUpdateStrategy_To_extensions_DaemonSetUpdateStrategy(&in.UpdateStrategy, &out.UpdateStrategy, s); err != nil { @@ -394,8 +394,8 @@ func Convert_v1beta1_DaemonSetSpec_To_extensions_DaemonSetSpec(in *v1beta1.Daemo } func autoConvert_extensions_DaemonSetSpec_To_v1beta1_DaemonSetSpec(in *extensions.DaemonSetSpec, out *v1beta1.DaemonSetSpec, s conversion.Scope) error { - out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector)) - if err := core_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + out.Selector = (*metav1.LabelSelector)(unsafe.Pointer(in.Selector)) + if err := corev1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { return err } if err := Convert_extensions_DaemonSetUpdateStrategy_To_v1beta1_DaemonSetUpdateStrategy(&in.UpdateStrategy, &out.UpdateStrategy, s); err != nil { @@ -621,11 +621,11 @@ func Convert_extensions_DeploymentRollback_To_v1beta1_DeploymentRollback(in *ext } func autoConvert_v1beta1_DeploymentSpec_To_extensions_DeploymentSpec(in *v1beta1.DeploymentSpec, out *extensions.DeploymentSpec, s conversion.Scope) error { - if err := meta_v1.Convert_Pointer_int32_To_int32(&in.Replicas, &out.Replicas, s); err != nil { + if err := metav1.Convert_Pointer_int32_To_int32(&in.Replicas, &out.Replicas, s); err != nil { return err } - out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector)) - if err := core_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + out.Selector = (*metav1.LabelSelector)(unsafe.Pointer(in.Selector)) + if err := corev1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { return err } if err := Convert_v1beta1_DeploymentStrategy_To_extensions_DeploymentStrategy(&in.Strategy, &out.Strategy, s); err != nil { @@ -640,11 +640,11 @@ func autoConvert_v1beta1_DeploymentSpec_To_extensions_DeploymentSpec(in *v1beta1 } func autoConvert_extensions_DeploymentSpec_To_v1beta1_DeploymentSpec(in *extensions.DeploymentSpec, out *v1beta1.DeploymentSpec, s conversion.Scope) error { - if err := meta_v1.Convert_int32_To_Pointer_int32(&in.Replicas, &out.Replicas, s); err != nil { + if err := metav1.Convert_int32_To_Pointer_int32(&in.Replicas, &out.Replicas, s); err != nil { return err } - out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector)) - if err := core_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + out.Selector = (*metav1.LabelSelector)(unsafe.Pointer(in.Selector)) + if err := corev1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { return err } if err := Convert_extensions_DeploymentStrategy_To_v1beta1_DeploymentStrategy(&in.Strategy, &out.Strategy, s); err != nil { @@ -1118,7 +1118,7 @@ func autoConvert_v1beta1_PodSecurityPolicySpec_To_policy_PodSecurityPolicySpec(i } out.ReadOnlyRootFilesystem = in.ReadOnlyRootFilesystem out.DefaultAllowPrivilegeEscalation = (*bool)(unsafe.Pointer(in.DefaultAllowPrivilegeEscalation)) - if err := meta_v1.Convert_Pointer_bool_To_bool(&in.AllowPrivilegeEscalation, &out.AllowPrivilegeEscalation, s); err != nil { + if err := metav1.Convert_Pointer_bool_To_bool(&in.AllowPrivilegeEscalation, &out.AllowPrivilegeEscalation, s); err != nil { return err } out.AllowedHostPaths = *(*[]policy.AllowedHostPath)(unsafe.Pointer(&in.AllowedHostPaths)) @@ -1157,7 +1157,7 @@ func autoConvert_policy_PodSecurityPolicySpec_To_v1beta1_PodSecurityPolicySpec(i } out.ReadOnlyRootFilesystem = in.ReadOnlyRootFilesystem out.DefaultAllowPrivilegeEscalation = (*bool)(unsafe.Pointer(in.DefaultAllowPrivilegeEscalation)) - if err := meta_v1.Convert_bool_To_Pointer_bool(&in.AllowPrivilegeEscalation, &out.AllowPrivilegeEscalation, s); err != nil { + if err := metav1.Convert_bool_To_Pointer_bool(&in.AllowPrivilegeEscalation, &out.AllowPrivilegeEscalation, s); err != nil { return err } out.AllowedHostPaths = *(*[]v1beta1.AllowedHostPath)(unsafe.Pointer(&in.AllowedHostPaths)) @@ -1275,24 +1275,24 @@ func Convert_extensions_ReplicaSetList_To_v1beta1_ReplicaSetList(in *extensions. } func autoConvert_v1beta1_ReplicaSetSpec_To_extensions_ReplicaSetSpec(in *v1beta1.ReplicaSetSpec, out *extensions.ReplicaSetSpec, s conversion.Scope) error { - if err := meta_v1.Convert_Pointer_int32_To_int32(&in.Replicas, &out.Replicas, s); err != nil { + if err := metav1.Convert_Pointer_int32_To_int32(&in.Replicas, &out.Replicas, s); err != nil { return err } out.MinReadySeconds = in.MinReadySeconds - out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector)) - if err := core_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + out.Selector = (*metav1.LabelSelector)(unsafe.Pointer(in.Selector)) + if err := corev1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { return err } return nil } func autoConvert_extensions_ReplicaSetSpec_To_v1beta1_ReplicaSetSpec(in *extensions.ReplicaSetSpec, out *v1beta1.ReplicaSetSpec, s conversion.Scope) error { - if err := meta_v1.Convert_int32_To_Pointer_int32(&in.Replicas, &out.Replicas, s); err != nil { + if err := metav1.Convert_int32_To_Pointer_int32(&in.Replicas, &out.Replicas, s); err != nil { return err } out.MinReadySeconds = in.MinReadySeconds - out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector)) - if err := core_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + out.Selector = (*metav1.LabelSelector)(unsafe.Pointer(in.Selector)) + if err := corev1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { return err } return nil diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/extensions/validation/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/extensions/validation/BUILD index e56e116273..dcb99ce9f6 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/extensions/validation/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/extensions/validation/BUILD @@ -14,13 +14,13 @@ go_library( "//pkg/apis/core:go_default_library", "//pkg/apis/core/validation:go_default_library", "//pkg/apis/extensions:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/validation:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", ], ) @@ -31,10 +31,10 @@ go_test( deps = [ "//pkg/apis/core:go_default_library", "//pkg/apis/extensions:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", "//vendor/github.com/davecgh/go-spew/spew:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/extensions/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/extensions/zz_generated.deepcopy.go index 199db30fd6..befc3a71d6 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/extensions/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/extensions/zz_generated.deepcopy.go @@ -188,23 +188,15 @@ func (in *DaemonSetSpec) DeepCopyInto(out *DaemonSetSpec) { *out = *in if in.Selector != nil { in, out := &in.Selector, &out.Selector - if *in == nil { - *out = nil - } else { - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) - } + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) } in.Template.DeepCopyInto(&out.Template) in.UpdateStrategy.DeepCopyInto(&out.UpdateStrategy) if in.RevisionHistoryLimit != nil { in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } return } @@ -224,12 +216,8 @@ func (in *DaemonSetStatus) DeepCopyInto(out *DaemonSetStatus) { *out = *in if in.CollisionCount != nil { in, out := &in.CollisionCount, &out.CollisionCount - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.Conditions != nil { in, out := &in.Conditions, &out.Conditions @@ -256,12 +244,8 @@ func (in *DaemonSetUpdateStrategy) DeepCopyInto(out *DaemonSetUpdateStrategy) { *out = *in if in.RollingUpdate != nil { in, out := &in.RollingUpdate, &out.RollingUpdate - if *in == nil { - *out = nil - } else { - *out = new(RollingUpdateDaemonSet) - **out = **in - } + *out = new(RollingUpdateDaemonSet) + **out = **in } return } @@ -393,41 +377,25 @@ func (in *DeploymentSpec) DeepCopyInto(out *DeploymentSpec) { *out = *in if in.Selector != nil { in, out := &in.Selector, &out.Selector - if *in == nil { - *out = nil - } else { - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) - } + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) } in.Template.DeepCopyInto(&out.Template) in.Strategy.DeepCopyInto(&out.Strategy) if in.RevisionHistoryLimit != nil { in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.RollbackTo != nil { in, out := &in.RollbackTo, &out.RollbackTo - if *in == nil { - *out = nil - } else { - *out = new(RollbackConfig) - **out = **in - } + *out = new(RollbackConfig) + **out = **in } if in.ProgressDeadlineSeconds != nil { in, out := &in.ProgressDeadlineSeconds, &out.ProgressDeadlineSeconds - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } return } @@ -454,12 +422,8 @@ func (in *DeploymentStatus) DeepCopyInto(out *DeploymentStatus) { } if in.CollisionCount != nil { in, out := &in.CollisionCount, &out.CollisionCount - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } return } @@ -479,12 +443,8 @@ func (in *DeploymentStrategy) DeepCopyInto(out *DeploymentStrategy) { *out = *in if in.RollingUpdate != nil { in, out := &in.RollingUpdate, &out.RollingUpdate - if *in == nil { - *out = nil - } else { - *out = new(RollingUpdateDeployment) - **out = **in - } + *out = new(RollingUpdateDeployment) + **out = **in } return } @@ -637,12 +597,8 @@ func (in *IngressRuleValue) DeepCopyInto(out *IngressRuleValue) { *out = *in if in.HTTP != nil { in, out := &in.HTTP, &out.HTTP - if *in == nil { - *out = nil - } else { - *out = new(HTTPIngressRuleValue) - (*in).DeepCopyInto(*out) - } + *out = new(HTTPIngressRuleValue) + (*in).DeepCopyInto(*out) } return } @@ -662,12 +618,8 @@ func (in *IngressSpec) DeepCopyInto(out *IngressSpec) { *out = *in if in.Backend != nil { in, out := &in.Backend, &out.Backend - if *in == nil { - *out = nil - } else { - *out = new(IngressBackend) - **out = **in - } + *out = new(IngressBackend) + **out = **in } if in.TLS != nil { in, out := &in.TLS, &out.TLS @@ -817,12 +769,8 @@ func (in *ReplicaSetSpec) DeepCopyInto(out *ReplicaSetSpec) { *out = *in if in.Selector != nil { in, out := &in.Selector, &out.Selector - if *in == nil { - *out = nil - } else { - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) - } + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) } in.Template.DeepCopyInto(&out.Template) return diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/imagepolicy/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/imagepolicy/BUILD index 9dd53f7d33..6cccdc9fbc 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/imagepolicy/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/imagepolicy/BUILD @@ -15,9 +15,9 @@ go_library( ], importpath = "k8s.io/kubernetes/pkg/apis/imagepolicy", deps = [ - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/imagepolicy/install/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/imagepolicy/install/BUILD index 620376bca7..299ba68155 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/imagepolicy/install/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/imagepolicy/install/BUILD @@ -13,8 +13,8 @@ go_library( "//pkg/api/legacyscheme:go_default_library", "//pkg/apis/imagepolicy:go_default_library", "//pkg/apis/imagepolicy/v1alpha1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/imagepolicy/v1alpha1/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/imagepolicy/v1alpha1/BUILD index 017af8de5d..9b2b3fa1be 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/imagepolicy/v1alpha1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/imagepolicy/v1alpha1/BUILD @@ -16,10 +16,10 @@ go_library( importpath = "k8s.io/kubernetes/pkg/apis/imagepolicy/v1alpha1", deps = [ "//pkg/apis/imagepolicy:go_default_library", - "//vendor/k8s.io/api/imagepolicy/v1alpha1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/api/imagepolicy/v1alpha1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/networking/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/networking/BUILD index 4dff82d1ba..6aff9d449f 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/networking/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/networking/BUILD @@ -16,10 +16,10 @@ go_library( importpath = "k8s.io/kubernetes/pkg/apis/networking", deps = [ "//pkg/apis/core:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/networking/install/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/networking/install/BUILD index 687a53d355..a98f3a258d 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/networking/install/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/networking/install/BUILD @@ -13,8 +13,8 @@ go_library( "//pkg/api/legacyscheme:go_default_library", "//pkg/apis/networking:go_default_library", "//pkg/apis/networking/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/networking/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/networking/v1/BUILD index 6523198e57..e33b8803da 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/networking/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/networking/v1/BUILD @@ -19,13 +19,13 @@ go_library( deps = [ "//pkg/apis/core:go_default_library", "//pkg/apis/networking:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/networking/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/networking/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", ], ) @@ -43,16 +43,16 @@ filegroup( ) go_test( - name = "go_default_xtest", + name = "go_default_test", srcs = ["defaults_test.go"], + embed = [":go_default_library"], deps = [ - ":go_default_library", "//pkg/api/legacyscheme:go_default_library", "//pkg/apis/core/install:go_default_library", "//pkg/apis/networking/install:go_default_library", - "//vendor/k8s.io/api/networking/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/api/networking/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/networking/v1/zz_generated.conversion.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/networking/v1/zz_generated.conversion.go index c6f8156349..bbbd3984b6 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/networking/v1/zz_generated.conversion.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/networking/v1/zz_generated.conversion.go @@ -23,9 +23,9 @@ package v1 import ( unsafe "unsafe" - core_v1 "k8s.io/api/core/v1" + corev1 "k8s.io/api/core/v1" v1 "k8s.io/api/networking/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" conversion "k8s.io/apimachinery/pkg/conversion" runtime "k8s.io/apimachinery/pkg/runtime" intstr "k8s.io/apimachinery/pkg/util/intstr" @@ -175,8 +175,8 @@ func Convert_networking_NetworkPolicyList_To_v1_NetworkPolicyList(in *networking } func autoConvert_v1_NetworkPolicyPeer_To_networking_NetworkPolicyPeer(in *v1.NetworkPolicyPeer, out *networking.NetworkPolicyPeer, s conversion.Scope) error { - out.PodSelector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.PodSelector)) - out.NamespaceSelector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.NamespaceSelector)) + out.PodSelector = (*metav1.LabelSelector)(unsafe.Pointer(in.PodSelector)) + out.NamespaceSelector = (*metav1.LabelSelector)(unsafe.Pointer(in.NamespaceSelector)) out.IPBlock = (*networking.IPBlock)(unsafe.Pointer(in.IPBlock)) return nil } @@ -187,8 +187,8 @@ func Convert_v1_NetworkPolicyPeer_To_networking_NetworkPolicyPeer(in *v1.Network } func autoConvert_networking_NetworkPolicyPeer_To_v1_NetworkPolicyPeer(in *networking.NetworkPolicyPeer, out *v1.NetworkPolicyPeer, s conversion.Scope) error { - out.PodSelector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.PodSelector)) - out.NamespaceSelector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.NamespaceSelector)) + out.PodSelector = (*metav1.LabelSelector)(unsafe.Pointer(in.PodSelector)) + out.NamespaceSelector = (*metav1.LabelSelector)(unsafe.Pointer(in.NamespaceSelector)) out.IPBlock = (*v1.IPBlock)(unsafe.Pointer(in.IPBlock)) return nil } @@ -210,7 +210,7 @@ func Convert_v1_NetworkPolicyPort_To_networking_NetworkPolicyPort(in *v1.Network } func autoConvert_networking_NetworkPolicyPort_To_v1_NetworkPolicyPort(in *networking.NetworkPolicyPort, out *v1.NetworkPolicyPort, s conversion.Scope) error { - out.Protocol = (*core_v1.Protocol)(unsafe.Pointer(in.Protocol)) + out.Protocol = (*corev1.Protocol)(unsafe.Pointer(in.Protocol)) out.Port = (*intstr.IntOrString)(unsafe.Pointer(in.Port)) return nil } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/networking/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/networking/zz_generated.deepcopy.go index 43b6f5a781..5a0959e9cb 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/networking/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/networking/zz_generated.deepcopy.go @@ -173,30 +173,18 @@ func (in *NetworkPolicyPeer) DeepCopyInto(out *NetworkPolicyPeer) { *out = *in if in.PodSelector != nil { in, out := &in.PodSelector, &out.PodSelector - if *in == nil { - *out = nil - } else { - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) - } + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) } if in.NamespaceSelector != nil { in, out := &in.NamespaceSelector, &out.NamespaceSelector - if *in == nil { - *out = nil - } else { - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) - } + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) } if in.IPBlock != nil { in, out := &in.IPBlock, &out.IPBlock - if *in == nil { - *out = nil - } else { - *out = new(IPBlock) - (*in).DeepCopyInto(*out) - } + *out = new(IPBlock) + (*in).DeepCopyInto(*out) } return } @@ -216,21 +204,13 @@ func (in *NetworkPolicyPort) DeepCopyInto(out *NetworkPolicyPort) { *out = *in if in.Protocol != nil { in, out := &in.Protocol, &out.Protocol - if *in == nil { - *out = nil - } else { - *out = new(core.Protocol) - **out = **in - } + *out = new(core.Protocol) + **out = **in } if in.Port != nil { in, out := &in.Port, &out.Port - if *in == nil { - *out = nil - } else { - *out = new(intstr.IntOrString) - **out = **in - } + *out = new(intstr.IntOrString) + **out = **in } return } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/policy/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/policy/BUILD index 2b429bb086..e1ea426b2e 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/policy/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/policy/BUILD @@ -16,10 +16,10 @@ go_library( importpath = "k8s.io/kubernetes/pkg/apis/policy", deps = [ "//pkg/apis/core:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/policy/install/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/policy/install/BUILD index de072f8eda..b695383206 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/policy/install/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/policy/install/BUILD @@ -13,8 +13,8 @@ go_library( "//pkg/api/legacyscheme:go_default_library", "//pkg/apis/policy:go_default_library", "//pkg/apis/policy/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/policy/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/policy/v1beta1/BUILD index 527320c00e..b2845830ed 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/policy/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/policy/v1beta1/BUILD @@ -18,13 +18,13 @@ go_library( deps = [ "//pkg/apis/core:go_default_library", "//pkg/apis/policy:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/policy/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/policy/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/policy/v1beta1/zz_generated.conversion.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/policy/v1beta1/zz_generated.conversion.go index 4e4e3cb1bc..8a13b22b72 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/policy/v1beta1/zz_generated.conversion.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/policy/v1beta1/zz_generated.conversion.go @@ -23,7 +23,7 @@ package v1beta1 import ( unsafe "unsafe" - core_v1 "k8s.io/api/core/v1" + corev1 "k8s.io/api/core/v1" v1beta1 "k8s.io/api/policy/v1beta1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" conversion "k8s.io/apimachinery/pkg/conversion" @@ -423,9 +423,9 @@ func Convert_v1beta1_PodSecurityPolicySpec_To_policy_PodSecurityPolicySpec(in *v func autoConvert_policy_PodSecurityPolicySpec_To_v1beta1_PodSecurityPolicySpec(in *policy.PodSecurityPolicySpec, out *v1beta1.PodSecurityPolicySpec, s conversion.Scope) error { out.Privileged = in.Privileged - out.DefaultAddCapabilities = *(*[]core_v1.Capability)(unsafe.Pointer(&in.DefaultAddCapabilities)) - out.RequiredDropCapabilities = *(*[]core_v1.Capability)(unsafe.Pointer(&in.RequiredDropCapabilities)) - out.AllowedCapabilities = *(*[]core_v1.Capability)(unsafe.Pointer(&in.AllowedCapabilities)) + out.DefaultAddCapabilities = *(*[]corev1.Capability)(unsafe.Pointer(&in.DefaultAddCapabilities)) + out.RequiredDropCapabilities = *(*[]corev1.Capability)(unsafe.Pointer(&in.RequiredDropCapabilities)) + out.AllowedCapabilities = *(*[]corev1.Capability)(unsafe.Pointer(&in.AllowedCapabilities)) out.Volumes = *(*[]v1beta1.FSType)(unsafe.Pointer(&in.Volumes)) out.HostNetwork = in.HostNetwork out.HostPorts = *(*[]v1beta1.HostPortRange)(unsafe.Pointer(&in.HostPorts)) @@ -495,7 +495,7 @@ func Convert_v1beta1_SELinuxStrategyOptions_To_policy_SELinuxStrategyOptions(in func autoConvert_policy_SELinuxStrategyOptions_To_v1beta1_SELinuxStrategyOptions(in *policy.SELinuxStrategyOptions, out *v1beta1.SELinuxStrategyOptions, s conversion.Scope) error { out.Rule = v1beta1.SELinuxStrategy(in.Rule) - out.SELinuxOptions = (*core_v1.SELinuxOptions)(unsafe.Pointer(in.SELinuxOptions)) + out.SELinuxOptions = (*corev1.SELinuxOptions)(unsafe.Pointer(in.SELinuxOptions)) return nil } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/policy/validation/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/policy/validation/BUILD index 14fcee1d6e..4aad2ff4df 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/policy/validation/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/policy/validation/BUILD @@ -19,10 +19,10 @@ go_library( "//pkg/security/apparmor:go_default_library", "//pkg/security/podsecuritypolicy/seccomp:go_default_library", "//pkg/security/podsecuritypolicy/util:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/validation:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", ], ) @@ -36,9 +36,9 @@ go_test( "//pkg/security/apparmor:go_default_library", "//pkg/security/podsecuritypolicy/seccomp:go_default_library", "//pkg/security/podsecuritypolicy/util:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/policy/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/policy/zz_generated.deepcopy.go index 3bb51ae48e..3d7fa85a73 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/policy/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/policy/zz_generated.deepcopy.go @@ -66,12 +66,8 @@ func (in *Eviction) DeepCopyInto(out *Eviction) { in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) if in.DeleteOptions != nil { in, out := &in.DeleteOptions, &out.DeleteOptions - if *in == nil { - *out = nil - } else { - *out = new(v1.DeleteOptions) - (*in).DeepCopyInto(*out) - } + *out = new(v1.DeleteOptions) + (*in).DeepCopyInto(*out) } return } @@ -213,30 +209,18 @@ func (in *PodDisruptionBudgetSpec) DeepCopyInto(out *PodDisruptionBudgetSpec) { *out = *in if in.MinAvailable != nil { in, out := &in.MinAvailable, &out.MinAvailable - if *in == nil { - *out = nil - } else { - *out = new(intstr.IntOrString) - **out = **in - } + *out = new(intstr.IntOrString) + **out = **in } if in.Selector != nil { in, out := &in.Selector, &out.Selector - if *in == nil { - *out = nil - } else { - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) - } + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) } if in.MaxUnavailable != nil { in, out := &in.MaxUnavailable, &out.MaxUnavailable - if *in == nil { - *out = nil - } else { - *out = new(intstr.IntOrString) - **out = **in - } + *out = new(intstr.IntOrString) + **out = **in } return } @@ -368,12 +352,8 @@ func (in *PodSecurityPolicySpec) DeepCopyInto(out *PodSecurityPolicySpec) { in.FSGroup.DeepCopyInto(&out.FSGroup) if in.DefaultAllowPrivilegeEscalation != nil { in, out := &in.DefaultAllowPrivilegeEscalation, &out.DefaultAllowPrivilegeEscalation - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } if in.AllowedHostPaths != nil { in, out := &in.AllowedHostPaths, &out.AllowedHostPaths @@ -434,12 +414,8 @@ func (in *SELinuxStrategyOptions) DeepCopyInto(out *SELinuxStrategyOptions) { *out = *in if in.SELinuxOptions != nil { in, out := &in.SELinuxOptions, &out.SELinuxOptions - if *in == nil { - *out = nil - } else { - *out = new(core.SELinuxOptions) - **out = **in - } + *out = new(core.SELinuxOptions) + **out = **in } return } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/rbac/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/rbac/BUILD index 4c7b65658c..278a460cb4 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/rbac/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/rbac/BUILD @@ -17,10 +17,10 @@ go_library( ], importpath = "k8s.io/kubernetes/pkg/apis/rbac", deps = [ - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", ], ) @@ -46,14 +46,14 @@ filegroup( ) go_test( - name = "go_default_xtest", + name = "go_default_test", srcs = ["helpers_test.go"], + embed = [":go_default_library"], deps = [ - ":go_default_library", "//pkg/api/legacyscheme:go_default_library", "//pkg/apis/rbac/install:go_default_library", "//pkg/apis/rbac/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/rbac/install/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/rbac/install/BUILD index bffb403316..392b65f226 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/rbac/install/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/rbac/install/BUILD @@ -15,8 +15,8 @@ go_library( "//pkg/apis/rbac/v1:go_default_library", "//pkg/apis/rbac/v1alpha1:go_default_library", "//pkg/apis/rbac/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/rbac/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/rbac/v1/BUILD index 9eb4029fcf..e954ca241b 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/rbac/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/rbac/v1/BUILD @@ -20,11 +20,11 @@ go_library( importpath = "k8s.io/kubernetes/pkg/apis/rbac/v1", deps = [ "//pkg/apis/rbac:go_default_library", - "//vendor/k8s.io/api/rbac/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/api/rbac/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/rbac/v1/zz_generated.conversion.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/rbac/v1/zz_generated.conversion.go index f1e40df782..28c674c961 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/rbac/v1/zz_generated.conversion.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/rbac/v1/zz_generated.conversion.go @@ -24,7 +24,7 @@ import ( unsafe "unsafe" v1 "k8s.io/api/rbac/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" conversion "k8s.io/apimachinery/pkg/conversion" runtime "k8s.io/apimachinery/pkg/runtime" rbac "k8s.io/kubernetes/pkg/apis/rbac" @@ -66,7 +66,7 @@ func RegisterConversions(scheme *runtime.Scheme) error { } func autoConvert_v1_AggregationRule_To_rbac_AggregationRule(in *v1.AggregationRule, out *rbac.AggregationRule, s conversion.Scope) error { - out.ClusterRoleSelectors = *(*[]meta_v1.LabelSelector)(unsafe.Pointer(&in.ClusterRoleSelectors)) + out.ClusterRoleSelectors = *(*[]metav1.LabelSelector)(unsafe.Pointer(&in.ClusterRoleSelectors)) return nil } @@ -76,7 +76,7 @@ func Convert_v1_AggregationRule_To_rbac_AggregationRule(in *v1.AggregationRule, } func autoConvert_rbac_AggregationRule_To_v1_AggregationRule(in *rbac.AggregationRule, out *v1.AggregationRule, s conversion.Scope) error { - out.ClusterRoleSelectors = *(*[]meta_v1.LabelSelector)(unsafe.Pointer(&in.ClusterRoleSelectors)) + out.ClusterRoleSelectors = *(*[]metav1.LabelSelector)(unsafe.Pointer(&in.ClusterRoleSelectors)) return nil } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/rbac/v1alpha1/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/rbac/v1alpha1/BUILD index e521b85559..bcb1747c4d 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/rbac/v1alpha1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/rbac/v1alpha1/BUILD @@ -20,22 +20,23 @@ go_library( importpath = "k8s.io/kubernetes/pkg/apis/rbac/v1alpha1", deps = [ "//pkg/apis/rbac:go_default_library", - "//vendor/k8s.io/api/rbac/v1alpha1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/api/rbac/v1alpha1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) go_test( - name = "go_default_xtest", + name = "go_default_test", srcs = ["conversion_test.go"], + embed = [":go_default_library"], deps = [ "//pkg/api/legacyscheme:go_default_library", "//pkg/apis/rbac:go_default_library", "//pkg/apis/rbac/install:go_default_library", - "//vendor/k8s.io/api/rbac/v1alpha1:go_default_library", + "//staging/src/k8s.io/api/rbac/v1alpha1:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/rbac/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/rbac/v1beta1/BUILD index 2bd8a7d9af..845b5efe05 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/rbac/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/rbac/v1beta1/BUILD @@ -18,11 +18,11 @@ go_library( importpath = "k8s.io/kubernetes/pkg/apis/rbac/v1beta1", deps = [ "//pkg/apis/rbac:go_default_library", - "//vendor/k8s.io/api/rbac/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/api/rbac/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/rbac/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/rbac/zz_generated.deepcopy.go index bb735c2339..8063b1e1eb 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/rbac/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/rbac/zz_generated.deepcopy.go @@ -62,12 +62,8 @@ func (in *ClusterRole) DeepCopyInto(out *ClusterRole) { } if in.AggregationRule != nil { in, out := &in.AggregationRule, &out.AggregationRule - if *in == nil { - *out = nil - } else { - *out = new(AggregationRule) - (*in).DeepCopyInto(*out) - } + *out = new(AggregationRule) + (*in).DeepCopyInto(*out) } return } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/scheduling/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/scheduling/BUILD index 61a76279f9..3d6e6cbadf 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/scheduling/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/scheduling/BUILD @@ -17,9 +17,9 @@ go_library( ], importpath = "k8s.io/kubernetes/pkg/apis/scheduling", deps = [ - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) @@ -47,5 +47,5 @@ go_test( name = "go_default_test", srcs = ["helpers_test.go"], embed = [":go_default_library"], - deps = ["//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library"], + deps = ["//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library"], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/scheduling/install/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/scheduling/install/BUILD index dabfec2368..7aec4144b1 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/scheduling/install/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/scheduling/install/BUILD @@ -14,8 +14,8 @@ go_library( "//pkg/apis/scheduling:go_default_library", "//pkg/apis/scheduling/v1alpha1:go_default_library", "//pkg/apis/scheduling/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/scheduling/v1alpha1/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/scheduling/v1alpha1/BUILD index 04dcd69cb2..e30497cde3 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/scheduling/v1alpha1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/scheduling/v1alpha1/BUILD @@ -16,10 +16,10 @@ go_library( importpath = "k8s.io/kubernetes/pkg/apis/scheduling/v1alpha1", deps = [ "//pkg/apis/scheduling:go_default_library", - "//vendor/k8s.io/api/scheduling/v1alpha1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/api/scheduling/v1alpha1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/scheduling/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/scheduling/v1beta1/BUILD index 32c2fce12f..ab1cfa74ff 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/scheduling/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/scheduling/v1beta1/BUILD @@ -16,10 +16,10 @@ go_library( importpath = "k8s.io/kubernetes/pkg/apis/scheduling/v1beta1", deps = [ "//pkg/apis/scheduling:go_default_library", - "//vendor/k8s.io/api/scheduling/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/api/scheduling/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/settings/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/settings/BUILD index 2e9f40d277..8a10548bf0 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/settings/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/settings/BUILD @@ -16,9 +16,9 @@ go_library( importpath = "k8s.io/kubernetes/pkg/apis/settings", deps = [ "//pkg/apis/core:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/settings/install/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/settings/install/BUILD index 78fc97fd7a..23618dee95 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/settings/install/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/settings/install/BUILD @@ -13,8 +13,8 @@ go_library( "//pkg/api/legacyscheme:go_default_library", "//pkg/apis/settings:go_default_library", "//pkg/apis/settings/v1alpha1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/settings/v1alpha1/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/settings/v1alpha1/BUILD index 7869c4fad8..4614a28a96 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/settings/v1alpha1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/settings/v1alpha1/BUILD @@ -18,11 +18,11 @@ go_library( "//pkg/apis/core:go_default_library", "//pkg/apis/core/v1:go_default_library", "//pkg/apis/settings:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/settings/v1alpha1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/settings/v1alpha1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/storage/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/storage/BUILD index b8d3d38ef2..2e7f381c2e 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/storage/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/storage/BUILD @@ -16,9 +16,9 @@ go_library( importpath = "k8s.io/kubernetes/pkg/apis/storage", deps = [ "//pkg/apis/core:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/storage/install/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/storage/install/BUILD index 0e1c479f1c..45b92dda00 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/storage/install/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/storage/install/BUILD @@ -15,8 +15,8 @@ go_library( "//pkg/apis/storage/v1:go_default_library", "//pkg/apis/storage/v1alpha1:go_default_library", "//pkg/apis/storage/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/storage/util/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/storage/util/BUILD index c095396fb1..1b3f629507 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/storage/util/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/storage/util/BUILD @@ -16,8 +16,8 @@ go_library( deps = [ "//pkg/apis/storage:go_default_library", "//pkg/features:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", ], ) @@ -41,6 +41,6 @@ go_test( deps = [ "//pkg/apis/core:go_default_library", "//pkg/apis/storage:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/storage/v1/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/storage/v1/BUILD index ad0fcaa070..f84557ef2c 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/storage/v1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/storage/v1/BUILD @@ -20,12 +20,12 @@ go_library( "//pkg/apis/core:go_default_library", "//pkg/apis/storage:go_default_library", "//pkg/features:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/storage/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/storage/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", ], ) @@ -46,13 +46,14 @@ filegroup( ) go_test( - name = "go_default_xtest", + name = "go_default_test", srcs = ["defaults_test.go"], + embed = [":go_default_library"], deps = [ "//pkg/api/legacyscheme:go_default_library", "//pkg/apis/storage/install:go_default_library", - "//vendor/k8s.io/api/storage/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/api/storage/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/storage/v1/zz_generated.conversion.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/storage/v1/zz_generated.conversion.go index 1ec5a534f2..cc55ed2fab 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/storage/v1/zz_generated.conversion.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/storage/v1/zz_generated.conversion.go @@ -23,7 +23,7 @@ package v1 import ( unsafe "unsafe" - core_v1 "k8s.io/api/core/v1" + corev1 "k8s.io/api/core/v1" v1 "k8s.io/api/storage/v1" conversion "k8s.io/apimachinery/pkg/conversion" runtime "k8s.io/apimachinery/pkg/runtime" @@ -67,11 +67,11 @@ func autoConvert_storage_StorageClass_To_v1_StorageClass(in *storage.StorageClas out.ObjectMeta = in.ObjectMeta out.Provisioner = in.Provisioner out.Parameters = *(*map[string]string)(unsafe.Pointer(&in.Parameters)) - out.ReclaimPolicy = (*core_v1.PersistentVolumeReclaimPolicy)(unsafe.Pointer(in.ReclaimPolicy)) + out.ReclaimPolicy = (*corev1.PersistentVolumeReclaimPolicy)(unsafe.Pointer(in.ReclaimPolicy)) out.MountOptions = *(*[]string)(unsafe.Pointer(&in.MountOptions)) out.AllowVolumeExpansion = (*bool)(unsafe.Pointer(in.AllowVolumeExpansion)) out.VolumeBindingMode = (*v1.VolumeBindingMode)(unsafe.Pointer(in.VolumeBindingMode)) - out.AllowedTopologies = *(*[]core_v1.TopologySelectorTerm)(unsafe.Pointer(&in.AllowedTopologies)) + out.AllowedTopologies = *(*[]corev1.TopologySelectorTerm)(unsafe.Pointer(&in.AllowedTopologies)) return nil } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/storage/v1alpha1/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/storage/v1alpha1/BUILD index 6617d6a97e..bf7b15e50e 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/storage/v1alpha1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/storage/v1alpha1/BUILD @@ -12,10 +12,10 @@ go_library( visibility = ["//visibility:public"], deps = [ "//pkg/apis/storage:go_default_library", - "//vendor/k8s.io/api/storage/v1alpha1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/api/storage/v1alpha1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/storage/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/storage/v1beta1/BUILD index 2bd7331317..3006ca9307 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/storage/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/storage/v1beta1/BUILD @@ -20,12 +20,12 @@ go_library( "//pkg/apis/core:go_default_library", "//pkg/apis/storage:go_default_library", "//pkg/features:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/storage/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/storage/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", ], ) @@ -46,13 +46,14 @@ filegroup( ) go_test( - name = "go_default_xtest", + name = "go_default_test", srcs = ["defaults_test.go"], + embed = [":go_default_library"], deps = [ "//pkg/api/legacyscheme:go_default_library", "//pkg/apis/storage/install:go_default_library", - "//vendor/k8s.io/api/storage/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/api/storage/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/storage/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/storage/zz_generated.deepcopy.go index f10b665631..f1391c98a2 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/storage/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/storage/zz_generated.deepcopy.go @@ -39,12 +39,8 @@ func (in *StorageClass) DeepCopyInto(out *StorageClass) { } if in.ReclaimPolicy != nil { in, out := &in.ReclaimPolicy, &out.ReclaimPolicy - if *in == nil { - *out = nil - } else { - *out = new(core.PersistentVolumeReclaimPolicy) - **out = **in - } + *out = new(core.PersistentVolumeReclaimPolicy) + **out = **in } if in.MountOptions != nil { in, out := &in.MountOptions, &out.MountOptions @@ -53,21 +49,13 @@ func (in *StorageClass) DeepCopyInto(out *StorageClass) { } if in.AllowVolumeExpansion != nil { in, out := &in.AllowVolumeExpansion, &out.AllowVolumeExpansion - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } if in.VolumeBindingMode != nil { in, out := &in.VolumeBindingMode, &out.VolumeBindingMode - if *in == nil { - *out = nil - } else { - *out = new(VolumeBindingMode) - **out = **in - } + *out = new(VolumeBindingMode) + **out = **in } if in.AllowedTopologies != nil { in, out := &in.AllowedTopologies, &out.AllowedTopologies @@ -196,12 +184,8 @@ func (in *VolumeAttachmentSource) DeepCopyInto(out *VolumeAttachmentSource) { *out = *in if in.PersistentVolumeName != nil { in, out := &in.PersistentVolumeName, &out.PersistentVolumeName - if *in == nil { - *out = nil - } else { - *out = new(string) - **out = **in - } + *out = new(string) + **out = **in } return } @@ -245,21 +229,13 @@ func (in *VolumeAttachmentStatus) DeepCopyInto(out *VolumeAttachmentStatus) { } if in.AttachError != nil { in, out := &in.AttachError, &out.AttachError - if *in == nil { - *out = nil - } else { - *out = new(VolumeError) - (*in).DeepCopyInto(*out) - } + *out = new(VolumeError) + (*in).DeepCopyInto(*out) } if in.DetachError != nil { in, out := &in.DetachError, &out.DetachError - if *in == nil { - *out = nil - } else { - *out = new(VolumeError) - (*in).DeepCopyInto(*out) - } + *out = new(VolumeError) + (*in).DeepCopyInto(*out) } return } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/chaosclient/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/chaosclient/BUILD index b9da712358..7145808df5 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/chaosclient/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/chaosclient/BUILD @@ -10,7 +10,7 @@ go_library( name = "go_default_library", srcs = ["chaosclient.go"], importpath = "k8s.io/kubernetes/pkg/client/chaosclient", - deps = ["//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library"], + deps = ["//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library"], ) go_test( diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/BUILD index 5955302375..0486ae0063 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/BUILD @@ -20,6 +20,7 @@ go_library( "//pkg/client/clientset_generated/internalclientset/typed/autoscaling/internalversion:go_default_library", "//pkg/client/clientset_generated/internalclientset/typed/batch/internalversion:go_default_library", "//pkg/client/clientset_generated/internalclientset/typed/certificates/internalversion:go_default_library", + "//pkg/client/clientset_generated/internalclientset/typed/coordination/internalversion:go_default_library", "//pkg/client/clientset_generated/internalclientset/typed/core/internalversion:go_default_library", "//pkg/client/clientset_generated/internalclientset/typed/events/internalversion:go_default_library", "//pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion:go_default_library", @@ -29,9 +30,9 @@ go_library( "//pkg/client/clientset_generated/internalclientset/typed/scheduling/internalversion:go_default_library", "//pkg/client/clientset_generated/internalclientset/typed/settings/internalversion:go_default_library", "//pkg/client/clientset_generated/internalclientset/typed/storage/internalversion:go_default_library", - "//vendor/k8s.io/client-go/discovery:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/util/flowcontrol:go_default_library", + "//staging/src/k8s.io/client-go/discovery:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/util/flowcontrol:go_default_library", ], ) @@ -55,6 +56,7 @@ filegroup( "//pkg/client/clientset_generated/internalclientset/typed/autoscaling/internalversion:all-srcs", "//pkg/client/clientset_generated/internalclientset/typed/batch/internalversion:all-srcs", "//pkg/client/clientset_generated/internalclientset/typed/certificates/internalversion:all-srcs", + "//pkg/client/clientset_generated/internalclientset/typed/coordination/internalversion:all-srcs", "//pkg/client/clientset_generated/internalclientset/typed/core/internalversion:all-srcs", "//pkg/client/clientset_generated/internalclientset/typed/events/internalversion:all-srcs", "//pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion:all-srcs", diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/clientset.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/clientset.go index 94928b5e57..554d268071 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/clientset.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/clientset.go @@ -29,6 +29,7 @@ import ( autoscalinginternalversion "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/autoscaling/internalversion" batchinternalversion "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/batch/internalversion" certificatesinternalversion "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/certificates/internalversion" + coordinationinternalversion "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/coordination/internalversion" coreinternalversion "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion" eventsinternalversion "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/events/internalversion" extensionsinternalversion "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion" @@ -50,6 +51,7 @@ type Interface interface { Autoscaling() autoscalinginternalversion.AutoscalingInterface Batch() batchinternalversion.BatchInterface Certificates() certificatesinternalversion.CertificatesInterface + Coordination() coordinationinternalversion.CoordinationInterface Events() eventsinternalversion.EventsInterface Extensions() extensionsinternalversion.ExtensionsInterface Networking() networkinginternalversion.NetworkingInterface @@ -72,6 +74,7 @@ type Clientset struct { autoscaling *autoscalinginternalversion.AutoscalingClient batch *batchinternalversion.BatchClient certificates *certificatesinternalversion.CertificatesClient + coordination *coordinationinternalversion.CoordinationClient events *eventsinternalversion.EventsClient extensions *extensionsinternalversion.ExtensionsClient networking *networkinginternalversion.NetworkingClient @@ -122,6 +125,11 @@ func (c *Clientset) Certificates() certificatesinternalversion.CertificatesInter return c.certificates } +// Coordination retrieves the CoordinationClient +func (c *Clientset) Coordination() coordinationinternalversion.CoordinationInterface { + return c.coordination +} + // Events retrieves the EventsClient func (c *Clientset) Events() eventsinternalversion.EventsInterface { return c.events @@ -210,6 +218,10 @@ func NewForConfig(c *rest.Config) (*Clientset, error) { if err != nil { return nil, err } + cs.coordination, err = coordinationinternalversion.NewForConfig(&configShallowCopy) + if err != nil { + return nil, err + } cs.events, err = eventsinternalversion.NewForConfig(&configShallowCopy) if err != nil { return nil, err @@ -262,6 +274,7 @@ func NewForConfigOrDie(c *rest.Config) *Clientset { cs.autoscaling = autoscalinginternalversion.NewForConfigOrDie(c) cs.batch = batchinternalversion.NewForConfigOrDie(c) cs.certificates = certificatesinternalversion.NewForConfigOrDie(c) + cs.coordination = coordinationinternalversion.NewForConfigOrDie(c) cs.events = eventsinternalversion.NewForConfigOrDie(c) cs.extensions = extensionsinternalversion.NewForConfigOrDie(c) cs.networking = networkinginternalversion.NewForConfigOrDie(c) @@ -286,6 +299,7 @@ func New(c rest.Interface) *Clientset { cs.autoscaling = autoscalinginternalversion.New(c) cs.batch = batchinternalversion.New(c) cs.certificates = certificatesinternalversion.New(c) + cs.coordination = coordinationinternalversion.New(c) cs.events = eventsinternalversion.New(c) cs.extensions = extensionsinternalversion.New(c) cs.networking = networkinginternalversion.New(c) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/scheme/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/scheme/BUILD index 46c2682a3e..00c87e3550 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/scheme/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/scheme/BUILD @@ -22,6 +22,7 @@ go_library( "//pkg/apis/batch/install:go_default_library", "//pkg/apis/certificates/install:go_default_library", "//pkg/apis/componentconfig/install:go_default_library", + "//pkg/apis/coordination/install:go_default_library", "//pkg/apis/core/install:go_default_library", "//pkg/apis/events/install:go_default_library", "//pkg/apis/extensions/install:go_default_library", @@ -31,10 +32,10 @@ go_library( "//pkg/apis/scheduling/install:go_default_library", "//pkg/apis/settings/install:go_default_library", "//pkg/apis/storage/install:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/scheme/register.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/scheme/register.go index 6f7d8813a0..9b5420daa5 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/scheme/register.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/scheme/register.go @@ -30,6 +30,7 @@ import ( autoscaling "k8s.io/kubernetes/pkg/apis/autoscaling/install" batch "k8s.io/kubernetes/pkg/apis/batch/install" certificates "k8s.io/kubernetes/pkg/apis/certificates/install" + coordination "k8s.io/kubernetes/pkg/apis/coordination/install" core "k8s.io/kubernetes/pkg/apis/core/install" events "k8s.io/kubernetes/pkg/apis/events/install" extensions "k8s.io/kubernetes/pkg/apis/extensions/install" @@ -60,6 +61,7 @@ func Install(scheme *runtime.Scheme) { autoscaling.Install(scheme) batch.Install(scheme) certificates.Install(scheme) + coordination.Install(scheme) events.Install(scheme) extensions.Install(scheme) networking.Install(scheme) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/BUILD index 74333876b7..f52baa4f64 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/BUILD @@ -19,10 +19,10 @@ go_library( deps = [ "//pkg/apis/admissionregistration:go_default_library", "//pkg/client/clientset_generated/internalclientset/scheme:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/apps/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/apps/internalversion/BUILD index e3fad87bee..794648663b 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/apps/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/apps/internalversion/BUILD @@ -19,10 +19,10 @@ go_library( "//pkg/apis/apps:go_default_library", "//pkg/apis/autoscaling:go_default_library", "//pkg/client/clientset_generated/internalclientset/scheme:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/authentication/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/authentication/internalversion/BUILD index 625149228f..7654143560 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/authentication/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/authentication/internalversion/BUILD @@ -18,7 +18,7 @@ go_library( deps = [ "//pkg/apis/authentication:go_default_library", "//pkg/client/clientset_generated/internalclientset/scheme:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/authorization/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/authorization/internalversion/BUILD index ff1562ea76..4244f1a4fe 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/authorization/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/authorization/internalversion/BUILD @@ -24,7 +24,7 @@ go_library( deps = [ "//pkg/apis/authorization:go_default_library", "//pkg/client/clientset_generated/internalclientset/scheme:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/autoscaling/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/autoscaling/internalversion/BUILD index bed64c6199..b7988c3307 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/autoscaling/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/autoscaling/internalversion/BUILD @@ -17,10 +17,10 @@ go_library( deps = [ "//pkg/apis/autoscaling:go_default_library", "//pkg/client/clientset_generated/internalclientset/scheme:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/batch/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/batch/internalversion/BUILD index 9f870c9ccb..103af3f558 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/batch/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/batch/internalversion/BUILD @@ -18,10 +18,10 @@ go_library( deps = [ "//pkg/apis/batch:go_default_library", "//pkg/client/clientset_generated/internalclientset/scheme:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/certificates/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/certificates/internalversion/BUILD index c55caeb2d8..33809f40ff 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/certificates/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/certificates/internalversion/BUILD @@ -18,10 +18,10 @@ go_library( deps = [ "//pkg/apis/certificates:go_default_library", "//pkg/client/clientset_generated/internalclientset/scheme:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/coordination/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/coordination/internalversion/BUILD new file mode 100644 index 0000000000..abf2f9c479 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/coordination/internalversion/BUILD @@ -0,0 +1,38 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = [ + "coordination_client.go", + "doc.go", + "generated_expansion.go", + "lease.go", + ], + importpath = "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/coordination/internalversion", + visibility = ["//visibility:public"], + deps = [ + "//pkg/apis/coordination:go_default_library", + "//pkg/client/clientset_generated/internalclientset/scheme:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [ + ":package-srcs", + "//pkg/client/clientset_generated/internalclientset/typed/coordination/internalversion/fake:all-srcs", + ], + tags = ["automanaged"], + visibility = ["//visibility:public"], +) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/coordination/internalversion/coordination_client.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/coordination/internalversion/coordination_client.go new file mode 100644 index 0000000000..af5307b760 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/coordination/internalversion/coordination_client.go @@ -0,0 +1,96 @@ +/* +Copyright The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 internalversion + +import ( + rest "k8s.io/client-go/rest" + "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/scheme" +) + +type CoordinationInterface interface { + RESTClient() rest.Interface + LeasesGetter +} + +// CoordinationClient is used to interact with features provided by the coordination.k8s.io group. +type CoordinationClient struct { + restClient rest.Interface +} + +func (c *CoordinationClient) Leases(namespace string) LeaseInterface { + return newLeases(c, namespace) +} + +// NewForConfig creates a new CoordinationClient for the given config. +func NewForConfig(c *rest.Config) (*CoordinationClient, error) { + config := *c + if err := setConfigDefaults(&config); err != nil { + return nil, err + } + client, err := rest.RESTClientFor(&config) + if err != nil { + return nil, err + } + return &CoordinationClient{client}, nil +} + +// NewForConfigOrDie creates a new CoordinationClient for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *CoordinationClient { + client, err := NewForConfig(c) + if err != nil { + panic(err) + } + return client +} + +// New creates a new CoordinationClient for the given RESTClient. +func New(c rest.Interface) *CoordinationClient { + return &CoordinationClient{c} +} + +func setConfigDefaults(config *rest.Config) error { + config.APIPath = "/apis" + if config.UserAgent == "" { + config.UserAgent = rest.DefaultKubernetesUserAgent() + } + if config.GroupVersion == nil || config.GroupVersion.Group != scheme.Scheme.PrioritizedVersionsForGroup("coordination.k8s.io")[0].Group { + gv := scheme.Scheme.PrioritizedVersionsForGroup("coordination.k8s.io")[0] + config.GroupVersion = &gv + } + config.NegotiatedSerializer = scheme.Codecs + + if config.QPS == 0 { + config.QPS = 5 + } + if config.Burst == 0 { + config.Burst = 10 + } + + return nil +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *CoordinationClient) RESTClient() rest.Interface { + if c == nil { + return nil + } + return c.restClient +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/coordination/internalversion/doc.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/coordination/internalversion/doc.go new file mode 100644 index 0000000000..86602442ba --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/coordination/internalversion/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 internalversion diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/coordination/internalversion/generated_expansion.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/coordination/internalversion/generated_expansion.go new file mode 100644 index 0000000000..852379fbd9 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/coordination/internalversion/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 internalversion + +type LeaseExpansion interface{} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/coordination/internalversion/lease.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/coordination/internalversion/lease.go new file mode 100644 index 0000000000..a2023c38b9 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/coordination/internalversion/lease.go @@ -0,0 +1,157 @@ +/* +Copyright The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 internalversion + +import ( + 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" + coordination "k8s.io/kubernetes/pkg/apis/coordination" + scheme "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/scheme" +) + +// LeasesGetter has a method to return a LeaseInterface. +// A group's client should implement this interface. +type LeasesGetter interface { + Leases(namespace string) LeaseInterface +} + +// LeaseInterface has methods to work with Lease resources. +type LeaseInterface interface { + Create(*coordination.Lease) (*coordination.Lease, error) + Update(*coordination.Lease) (*coordination.Lease, error) + Delete(name string, options *v1.DeleteOptions) error + DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error + Get(name string, options v1.GetOptions) (*coordination.Lease, error) + List(opts v1.ListOptions) (*coordination.LeaseList, error) + Watch(opts v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *coordination.Lease, err error) + LeaseExpansion +} + +// leases implements LeaseInterface +type leases struct { + client rest.Interface + ns string +} + +// newLeases returns a Leases +func newLeases(c *CoordinationClient, namespace string) *leases { + return &leases{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Get takes name of the lease, and returns the corresponding lease object, and an error if there is any. +func (c *leases) Get(name string, options v1.GetOptions) (result *coordination.Lease, err error) { + result = &coordination.Lease{} + err = c.client.Get(). + Namespace(c.ns). + Resource("leases"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of Leases that match those selectors. +func (c *leases) List(opts v1.ListOptions) (result *coordination.LeaseList, err error) { + result = &coordination.LeaseList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("leases"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested leases. +func (c *leases) Watch(opts v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("leases"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// 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(lease *coordination.Lease) (result *coordination.Lease, err error) { + result = &coordination.Lease{} + err = c.client.Post(). + Namespace(c.ns). + Resource("leases"). + Body(lease). + Do(). + 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(lease *coordination.Lease) (result *coordination.Lease, err error) { + result = &coordination.Lease{} + err = c.client.Put(). + Namespace(c.ns). + Resource("leases"). + Name(lease.Name). + Body(lease). + Do(). + Into(result) + return +} + +// Delete takes name of the lease and deletes it. Returns an error if one occurs. +func (c *leases) Delete(name string, options *v1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("leases"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *leases) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("leases"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Patch applies the patch and returns the patched lease. +func (c *leases) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *coordination.Lease, err error) { + result = &coordination.Lease{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("leases"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/BUILD index ad0e9695a5..68ca5fd57a 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion/BUILD @@ -41,14 +41,14 @@ go_library( "//pkg/apis/core:go_default_library", "//pkg/apis/core/v1:go_default_library", "//pkg/client/clientset_generated/internalclientset/scheme:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/events/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/events/internalversion/BUILD index cca3da1e72..c0cec91f54 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/events/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/events/internalversion/BUILD @@ -11,7 +11,7 @@ go_library( visibility = ["//visibility:public"], deps = [ "//pkg/client/clientset_generated/internalclientset/scheme:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/BUILD index 43401c363c..97770ae844 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/BUILD @@ -22,10 +22,10 @@ go_library( "//pkg/apis/autoscaling:go_default_library", "//pkg/apis/extensions:go_default_library", "//pkg/client/clientset_generated/internalclientset/scheme:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/networking/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/networking/internalversion/BUILD index 15bfb8a3e2..aa720eb441 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/networking/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/networking/internalversion/BUILD @@ -17,10 +17,10 @@ go_library( deps = [ "//pkg/apis/networking:go_default_library", "//pkg/client/clientset_generated/internalclientset/scheme:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/policy/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/policy/internalversion/BUILD index ec825bb7c2..d362133a4c 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/policy/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/policy/internalversion/BUILD @@ -20,10 +20,10 @@ go_library( deps = [ "//pkg/apis/policy:go_default_library", "//pkg/client/clientset_generated/internalclientset/scheme:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/rbac/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/rbac/internalversion/BUILD index e51a6d6321..dc26ce1b3a 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/rbac/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/rbac/internalversion/BUILD @@ -20,10 +20,10 @@ go_library( deps = [ "//pkg/apis/rbac:go_default_library", "//pkg/client/clientset_generated/internalclientset/scheme:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/scheduling/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/scheduling/internalversion/BUILD index 4ba8901bb3..2daca99648 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/scheduling/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/scheduling/internalversion/BUILD @@ -17,10 +17,10 @@ go_library( deps = [ "//pkg/apis/scheduling:go_default_library", "//pkg/client/clientset_generated/internalclientset/scheme:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/settings/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/settings/internalversion/BUILD index d6d8e0b02f..7d6e7b82c3 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/settings/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/settings/internalversion/BUILD @@ -17,10 +17,10 @@ go_library( deps = [ "//pkg/apis/settings:go_default_library", "//pkg/client/clientset_generated/internalclientset/scheme:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/storage/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/storage/internalversion/BUILD index cd8e7a8121..240a6baa84 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/storage/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/storage/internalversion/BUILD @@ -18,10 +18,10 @@ go_library( deps = [ "//pkg/apis/storage:go_default_library", "//pkg/client/clientset_generated/internalclientset/scheme:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/BUILD index 91495dc5d9..8b463202bf 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/BUILD @@ -18,6 +18,7 @@ go_library( "//pkg/apis/autoscaling:go_default_library", "//pkg/apis/batch:go_default_library", "//pkg/apis/certificates:go_default_library", + "//pkg/apis/coordination:go_default_library", "//pkg/apis/core:go_default_library", "//pkg/apis/extensions:go_default_library", "//pkg/apis/networking:go_default_library", @@ -32,6 +33,7 @@ go_library( "//pkg/client/informers/informers_generated/internalversion/autoscaling:go_default_library", "//pkg/client/informers/informers_generated/internalversion/batch:go_default_library", "//pkg/client/informers/informers_generated/internalversion/certificates:go_default_library", + "//pkg/client/informers/informers_generated/internalversion/coordination:go_default_library", "//pkg/client/informers/informers_generated/internalversion/core:go_default_library", "//pkg/client/informers/informers_generated/internalversion/extensions:go_default_library", "//pkg/client/informers/informers_generated/internalversion/internalinterfaces:go_default_library", @@ -41,10 +43,10 @@ go_library( "//pkg/client/informers/informers_generated/internalversion/scheduling:go_default_library", "//pkg/client/informers/informers_generated/internalversion/settings:go_default_library", "//pkg/client/informers/informers_generated/internalversion/storage:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) @@ -64,6 +66,7 @@ filegroup( "//pkg/client/informers/informers_generated/internalversion/autoscaling:all-srcs", "//pkg/client/informers/informers_generated/internalversion/batch:all-srcs", "//pkg/client/informers/informers_generated/internalversion/certificates:all-srcs", + "//pkg/client/informers/informers_generated/internalversion/coordination:all-srcs", "//pkg/client/informers/informers_generated/internalversion/core:all-srcs", "//pkg/client/informers/informers_generated/internalversion/extensions:all-srcs", "//pkg/client/informers/informers_generated/internalversion/internalinterfaces:all-srcs", diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/admissionregistration/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/admissionregistration/internalversion/BUILD index ca1c234c01..a086ab74e4 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/admissionregistration/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/admissionregistration/internalversion/BUILD @@ -19,10 +19,10 @@ go_library( "//pkg/client/clientset_generated/internalclientset:go_default_library", "//pkg/client/informers/informers_generated/internalversion/internalinterfaces:go_default_library", "//pkg/client/listers/admissionregistration/internalversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/apps/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/apps/internalversion/BUILD index d3b51204f6..33c4f5c574 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/apps/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/apps/internalversion/BUILD @@ -18,10 +18,10 @@ go_library( "//pkg/client/clientset_generated/internalclientset:go_default_library", "//pkg/client/informers/informers_generated/internalversion/internalinterfaces:go_default_library", "//pkg/client/listers/apps/internalversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/autoscaling/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/autoscaling/internalversion/BUILD index a83f095145..fbada0330a 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/autoscaling/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/autoscaling/internalversion/BUILD @@ -17,10 +17,10 @@ go_library( "//pkg/client/clientset_generated/internalclientset:go_default_library", "//pkg/client/informers/informers_generated/internalversion/internalinterfaces:go_default_library", "//pkg/client/listers/autoscaling/internalversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/batch/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/batch/internalversion/BUILD index 776728e59a..b2315e06f6 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/batch/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/batch/internalversion/BUILD @@ -18,10 +18,10 @@ go_library( "//pkg/client/clientset_generated/internalclientset:go_default_library", "//pkg/client/informers/informers_generated/internalversion/internalinterfaces:go_default_library", "//pkg/client/listers/batch/internalversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/certificates/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/certificates/internalversion/BUILD index 788efbb1d1..5332aac13b 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/certificates/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/certificates/internalversion/BUILD @@ -17,10 +17,10 @@ go_library( "//pkg/client/clientset_generated/internalclientset:go_default_library", "//pkg/client/informers/informers_generated/internalversion/internalinterfaces:go_default_library", "//pkg/client/listers/certificates/internalversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/coordination/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/coordination/BUILD new file mode 100644 index 0000000000..aad9ae90e5 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/coordination/BUILD @@ -0,0 +1,29 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = ["interface.go"], + importpath = "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/coordination", + visibility = ["//visibility:public"], + deps = [ + "//pkg/client/informers/informers_generated/internalversion/coordination/internalversion:go_default_library", + "//pkg/client/informers/informers_generated/internalversion/internalinterfaces:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [ + ":package-srcs", + "//pkg/client/informers/informers_generated/internalversion/coordination/internalversion:all-srcs", + ], + tags = ["automanaged"], + visibility = ["//visibility:public"], +) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/coordination/interface.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/coordination/interface.go new file mode 100644 index 0000000000..5aa5d2deb9 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/coordination/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 coordination + +import ( + internalversion "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/coordination/internalversion" + internalinterfaces "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/internalinterfaces" +) + +// Interface provides access to each of this group's versions. +type Interface interface { + // InternalVersion provides access to shared informers for resources in InternalVersion. + InternalVersion() internalversion.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} +} + +// InternalVersion returns a new internalversion.Interface. +func (g *group) InternalVersion() internalversion.Interface { + return internalversion.New(g.factory, g.namespace, g.tweakListOptions) +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/coordination/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/coordination/internalversion/BUILD new file mode 100644 index 0000000000..0fb46577e1 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/coordination/internalversion/BUILD @@ -0,0 +1,35 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = [ + "interface.go", + "lease.go", + ], + importpath = "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/coordination/internalversion", + visibility = ["//visibility:public"], + deps = [ + "//pkg/apis/coordination:go_default_library", + "//pkg/client/clientset_generated/internalclientset:go_default_library", + "//pkg/client/informers/informers_generated/internalversion/internalinterfaces:go_default_library", + "//pkg/client/listers/coordination/internalversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], + visibility = ["//visibility:public"], +) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/coordination/internalversion/interface.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/coordination/internalversion/interface.go new file mode 100644 index 0000000000..4209303d79 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/coordination/internalversion/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 internalversion + +import ( + internalinterfaces "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/internalinterfaces" +) + +// Interface provides access to all the informers in this group version. +type Interface interface { + // Leases returns a LeaseInformer. + Leases() LeaseInformer +} + +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} +} + +// Leases returns a LeaseInformer. +func (v *version) Leases() LeaseInformer { + return &leaseInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions} +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/coordination/internalversion/lease.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/coordination/internalversion/lease.go new file mode 100644 index 0000000000..598fce6043 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/coordination/internalversion/lease.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 internalversion + +import ( + time "time" + + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + cache "k8s.io/client-go/tools/cache" + coordination "k8s.io/kubernetes/pkg/apis/coordination" + internalclientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset" + internalinterfaces "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/internalinterfaces" + internalversion "k8s.io/kubernetes/pkg/client/listers/coordination/internalversion" +) + +// LeaseInformer provides access to a shared informer and lister for +// Leases. +type LeaseInformer interface { + Informer() cache.SharedIndexInformer + Lister() internalversion.LeaseLister +} + +type leaseInformer struct { + factory internalinterfaces.SharedInformerFactory + tweakListOptions internalinterfaces.TweakListOptionsFunc + namespace string +} + +// NewLeaseInformer constructs a new informer for Lease 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 NewLeaseInformer(client internalclientset.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer { + return NewFilteredLeaseInformer(client, namespace, resyncPeriod, indexers, nil) +} + +// NewFilteredLeaseInformer constructs a new informer for Lease 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 NewFilteredLeaseInformer(client internalclientset.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.Coordination().Leases(namespace).List(options) + }, + WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { + if tweakListOptions != nil { + tweakListOptions(&options) + } + return client.Coordination().Leases(namespace).Watch(options) + }, + }, + &coordination.Lease{}, + resyncPeriod, + indexers, + ) +} + +func (f *leaseInformer) defaultInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + return NewFilteredLeaseInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions) +} + +func (f *leaseInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&coordination.Lease{}, f.defaultInformer) +} + +func (f *leaseInformer) Lister() internalversion.LeaseLister { + return internalversion.NewLeaseLister(f.Informer().GetIndexer()) +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/core/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/core/internalversion/BUILD index 6724faa6a8..36f7f0b9b2 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/core/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/core/internalversion/BUILD @@ -32,10 +32,10 @@ go_library( "//pkg/client/clientset_generated/internalclientset:go_default_library", "//pkg/client/informers/informers_generated/internalversion/internalinterfaces:go_default_library", "//pkg/client/listers/core/internalversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/extensions/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/extensions/internalversion/BUILD index 93daed923d..c7558b2f7b 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/extensions/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/extensions/internalversion/BUILD @@ -20,10 +20,10 @@ go_library( "//pkg/client/clientset_generated/internalclientset:go_default_library", "//pkg/client/informers/informers_generated/internalversion/internalinterfaces:go_default_library", "//pkg/client/listers/extensions/internalversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/factory.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/factory.go index 4745143f08..a58a8aaed5 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/factory.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/factory.go @@ -33,6 +33,7 @@ import ( autoscaling "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/autoscaling" batch "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/batch" certificates "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/certificates" + coordination "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/coordination" core "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/core" extensions "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/extensions" internalinterfaces "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/internalinterfaces" @@ -189,6 +190,7 @@ type SharedInformerFactory interface { Autoscaling() autoscaling.Interface Batch() batch.Interface Certificates() certificates.Interface + Coordination() coordination.Interface Core() core.Interface Extensions() extensions.Interface Networking() networking.Interface @@ -219,6 +221,10 @@ func (f *sharedInformerFactory) Certificates() certificates.Interface { return certificates.New(f, f.namespace, f.tweakListOptions) } +func (f *sharedInformerFactory) Coordination() coordination.Interface { + return coordination.New(f, f.namespace, f.tweakListOptions) +} + func (f *sharedInformerFactory) Core() core.Interface { return core.New(f, f.namespace, f.tweakListOptions) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/generic.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/generic.go index d28aa26ff3..21b0eee8e6 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/generic.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/generic.go @@ -28,6 +28,7 @@ import ( autoscaling "k8s.io/kubernetes/pkg/apis/autoscaling" batch "k8s.io/kubernetes/pkg/apis/batch" certificates "k8s.io/kubernetes/pkg/apis/certificates" + coordination "k8s.io/kubernetes/pkg/apis/coordination" core "k8s.io/kubernetes/pkg/apis/core" extensions "k8s.io/kubernetes/pkg/apis/extensions" networking "k8s.io/kubernetes/pkg/apis/networking" @@ -92,6 +93,10 @@ func (f *sharedInformerFactory) ForResource(resource schema.GroupVersionResource case certificates.SchemeGroupVersion.WithResource("certificatesigningrequests"): return &genericInformer{resource: resource.GroupResource(), informer: f.Certificates().InternalVersion().CertificateSigningRequests().Informer()}, nil + // Group=coordination.k8s.io, Version=internalVersion + case coordination.SchemeGroupVersion.WithResource("leases"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Coordination().InternalVersion().Leases().Informer()}, nil + // Group=core, Version=internalVersion case core.SchemeGroupVersion.WithResource("componentstatuses"): return &genericInformer{resource: resource.GroupResource(), informer: f.Core().InternalVersion().ComponentStatuses().Informer()}, nil diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/internalinterfaces/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/internalinterfaces/BUILD index a87900962d..e9fd015388 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/internalinterfaces/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/internalinterfaces/BUILD @@ -11,9 +11,9 @@ go_library( importpath = "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/internalinterfaces", deps = [ "//pkg/client/clientset_generated/internalclientset:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/networking/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/networking/internalversion/BUILD index 36e976eccc..71b120233d 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/networking/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/networking/internalversion/BUILD @@ -17,10 +17,10 @@ go_library( "//pkg/client/clientset_generated/internalclientset:go_default_library", "//pkg/client/informers/informers_generated/internalversion/internalinterfaces:go_default_library", "//pkg/client/listers/networking/internalversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/policy/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/policy/internalversion/BUILD index 4be7c1cc5e..946af4e1da 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/policy/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/policy/internalversion/BUILD @@ -18,10 +18,10 @@ go_library( "//pkg/client/clientset_generated/internalclientset:go_default_library", "//pkg/client/informers/informers_generated/internalversion/internalinterfaces:go_default_library", "//pkg/client/listers/policy/internalversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/rbac/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/rbac/internalversion/BUILD index 96845f7492..8006d0a1a1 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/rbac/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/rbac/internalversion/BUILD @@ -20,10 +20,10 @@ go_library( "//pkg/client/clientset_generated/internalclientset:go_default_library", "//pkg/client/informers/informers_generated/internalversion/internalinterfaces:go_default_library", "//pkg/client/listers/rbac/internalversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/scheduling/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/scheduling/internalversion/BUILD index 7568d130d8..f68075ae50 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/scheduling/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/scheduling/internalversion/BUILD @@ -17,10 +17,10 @@ go_library( "//pkg/client/clientset_generated/internalclientset:go_default_library", "//pkg/client/informers/informers_generated/internalversion/internalinterfaces:go_default_library", "//pkg/client/listers/scheduling/internalversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/settings/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/settings/internalversion/BUILD index 8dda4daab6..327959e1af 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/settings/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/settings/internalversion/BUILD @@ -17,10 +17,10 @@ go_library( "//pkg/client/clientset_generated/internalclientset:go_default_library", "//pkg/client/informers/informers_generated/internalversion/internalinterfaces:go_default_library", "//pkg/client/listers/settings/internalversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/storage/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/storage/internalversion/BUILD index f4ffc7da14..b49afe63ae 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/storage/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/storage/internalversion/BUILD @@ -18,10 +18,10 @@ go_library( "//pkg/client/clientset_generated/internalclientset:go_default_library", "//pkg/client/informers/informers_generated/internalversion/internalinterfaces:go_default_library", "//pkg/client/listers/storage/internalversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/admissionregistration/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/admissionregistration/internalversion/BUILD index 1afdec477e..67c5b08783 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/admissionregistration/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/admissionregistration/internalversion/BUILD @@ -16,9 +16,9 @@ go_library( importpath = "k8s.io/kubernetes/pkg/client/listers/admissionregistration/internalversion", deps = [ "//pkg/apis/admissionregistration:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/apps/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/apps/internalversion/BUILD index 73334dd2e1..9ee7b39aad 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/apps/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/apps/internalversion/BUILD @@ -17,10 +17,10 @@ go_library( deps = [ "//pkg/apis/apps:go_default_library", "//pkg/apis/core:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/autoscaling/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/autoscaling/internalversion/BUILD index 0553786590..bd374cf857 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/autoscaling/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/autoscaling/internalversion/BUILD @@ -14,9 +14,9 @@ go_library( importpath = "k8s.io/kubernetes/pkg/client/listers/autoscaling/internalversion", deps = [ "//pkg/apis/autoscaling:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/batch/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/batch/internalversion/BUILD index 246c68acb0..b813cb35d7 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/batch/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/batch/internalversion/BUILD @@ -18,10 +18,10 @@ go_library( deps = [ "//pkg/apis/batch:go_default_library", "//pkg/apis/core:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) @@ -32,10 +32,10 @@ go_test( deps = [ "//pkg/apis/batch:go_default_library", "//pkg/apis/core:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/certificates/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/certificates/internalversion/BUILD index afc655b9ee..b027621569 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/certificates/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/certificates/internalversion/BUILD @@ -14,9 +14,9 @@ go_library( importpath = "k8s.io/kubernetes/pkg/client/listers/certificates/internalversion", deps = [ "//pkg/apis/certificates:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/coordination/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/coordination/internalversion/BUILD new file mode 100644 index 0000000000..9eb999366c --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/coordination/internalversion/BUILD @@ -0,0 +1,31 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = [ + "expansion_generated.go", + "lease.go", + ], + importpath = "k8s.io/kubernetes/pkg/client/listers/coordination/internalversion", + visibility = ["//visibility:public"], + deps = [ + "//pkg/apis/coordination:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], + visibility = ["//visibility:public"], +) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/coordination/internalversion/expansion_generated.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/coordination/internalversion/expansion_generated.go new file mode 100644 index 0000000000..83cb52767f --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/coordination/internalversion/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 internalversion + +// LeaseListerExpansion allows custom methods to be added to +// LeaseLister. +type LeaseListerExpansion interface{} + +// LeaseNamespaceListerExpansion allows custom methods to be added to +// LeaseNamespaceLister. +type LeaseNamespaceListerExpansion interface{} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/coordination/internalversion/lease.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/coordination/internalversion/lease.go new file mode 100644 index 0000000000..9cf35866e6 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/coordination/internalversion/lease.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 lister-gen. DO NOT EDIT. + +package internalversion + +import ( + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/tools/cache" + coordination "k8s.io/kubernetes/pkg/apis/coordination" +) + +// LeaseLister helps list Leases. +type LeaseLister interface { + // List lists all Leases in the indexer. + List(selector labels.Selector) (ret []*coordination.Lease, err error) + // Leases returns an object that can list and get Leases. + Leases(namespace string) LeaseNamespaceLister + LeaseListerExpansion +} + +// leaseLister implements the LeaseLister interface. +type leaseLister struct { + indexer cache.Indexer +} + +// 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 []*coordination.Lease, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*coordination.Lease)) + }) + return ret, err +} + +// Leases returns an object that can list and get Leases. +func (s *leaseLister) Leases(namespace string) LeaseNamespaceLister { + return leaseNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// LeaseNamespaceLister helps list and get Leases. +type LeaseNamespaceLister interface { + // List lists all Leases in the indexer for a given namespace. + List(selector labels.Selector) (ret []*coordination.Lease, err error) + // Get retrieves the Lease from the indexer for a given namespace and name. + Get(name string) (*coordination.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 []*coordination.Lease, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*coordination.Lease)) + }) + return ret, err +} + +// Get retrieves the Lease from the indexer for a given namespace and name. +func (s leaseNamespaceLister) Get(name string) (*coordination.Lease, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(coordination.Resource("lease"), name) + } + return obj.(*coordination.Lease), nil +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/core/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/core/internalversion/BUILD index 8daff542f4..5ba8c353b8 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/core/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/core/internalversion/BUILD @@ -16,7 +16,6 @@ go_library( "limitrange.go", "namespace.go", "node.go", - "node_expansion.go", "persistentvolume.go", "persistentvolumeclaim.go", "pod.go", @@ -32,9 +31,9 @@ go_library( importpath = "k8s.io/kubernetes/pkg/client/listers/core/internalversion", deps = [ "//pkg/apis/core:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/core/internalversion/expansion_generated.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/core/internalversion/expansion_generated.go index ea2156b9ec..9fa5dfe6c2 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/core/internalversion/expansion_generated.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/core/internalversion/expansion_generated.go @@ -58,6 +58,10 @@ type LimitRangeNamespaceListerExpansion interface{} // NamespaceLister. type NamespaceListerExpansion interface{} +// NodeListerExpansion allows custom methods to be added to +// NodeLister. +type NodeListerExpansion interface{} + // PersistentVolumeListerExpansion allows custom methods to be added to // PersistentVolumeLister. type PersistentVolumeListerExpansion interface{} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/core/internalversion/node_expansion.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/core/internalversion/node_expansion.go deleted file mode 100644 index 3abca2d58e..0000000000 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/core/internalversion/node_expansion.go +++ /dev/null @@ -1,48 +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 internalversion - -import ( - "k8s.io/apimachinery/pkg/labels" - api "k8s.io/kubernetes/pkg/apis/core" -) - -// NodeConditionPredicate is a function that indicates whether the given node's conditions meet -// some set of criteria defined by the function. -type NodeConditionPredicate func(node *api.Node) bool - -// NodeListerExpansion allows custom methods to be added to -// NodeLister. -type NodeListerExpansion interface { - ListWithPredicate(predicate NodeConditionPredicate) ([]*api.Node, error) -} - -func (l *nodeLister) ListWithPredicate(predicate NodeConditionPredicate) ([]*api.Node, error) { - nodes, err := l.List(labels.Everything()) - if err != nil { - return nil, err - } - - var filtered []*api.Node - for i := range nodes { - if predicate(nodes[i]) { - filtered = append(filtered, nodes[i]) - } - } - - return filtered, nil -} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/extensions/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/extensions/internalversion/BUILD index c3df71ac24..091d60cee7 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/extensions/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/extensions/internalversion/BUILD @@ -22,10 +22,10 @@ go_library( deps = [ "//pkg/apis/core:go_default_library", "//pkg/apis/extensions:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) @@ -49,9 +49,9 @@ go_test( deps = [ "//pkg/apis/core:go_default_library", "//pkg/apis/extensions:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/networking/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/networking/internalversion/BUILD index 98d8735788..32f3dbb598 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/networking/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/networking/internalversion/BUILD @@ -14,9 +14,9 @@ go_library( importpath = "k8s.io/kubernetes/pkg/client/listers/networking/internalversion", deps = [ "//pkg/apis/networking:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/policy/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/policy/internalversion/BUILD index 4d0d4fdb53..300ae5af2c 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/policy/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/policy/internalversion/BUILD @@ -18,11 +18,11 @@ go_library( deps = [ "//pkg/apis/core:go_default_library", "//pkg/apis/policy:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/rbac/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/rbac/internalversion/BUILD index 1530995394..8b77d6ef6a 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/rbac/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/rbac/internalversion/BUILD @@ -17,9 +17,9 @@ go_library( importpath = "k8s.io/kubernetes/pkg/client/listers/rbac/internalversion", deps = [ "//pkg/apis/rbac:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/scheduling/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/scheduling/internalversion/BUILD index 5c2f02bafe..6bdfb1eb22 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/scheduling/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/scheduling/internalversion/BUILD @@ -14,9 +14,9 @@ go_library( importpath = "k8s.io/kubernetes/pkg/client/listers/scheduling/internalversion", deps = [ "//pkg/apis/scheduling:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/settings/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/settings/internalversion/BUILD index 5e9f774e24..5206f0941e 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/settings/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/settings/internalversion/BUILD @@ -14,9 +14,9 @@ go_library( importpath = "k8s.io/kubernetes/pkg/client/listers/settings/internalversion", deps = [ "//pkg/apis/settings:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/storage/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/storage/internalversion/BUILD index ff223c8b8c..f9ca0821b7 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/storage/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/client/listers/storage/internalversion/BUILD @@ -15,9 +15,9 @@ go_library( importpath = "k8s.io/kubernetes/pkg/client/listers/storage/internalversion", deps = [ "//pkg/apis/storage:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/BUILD index 7c38feae3f..ed3344f6a3 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/BUILD @@ -15,10 +15,10 @@ go_library( importpath = "k8s.io/kubernetes/pkg/cloudprovider", deps = [ "//pkg/controller:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/client-go/informers:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/client-go/informers:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/OWNERS b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/OWNERS index 07cf4dbda8..7d96a38ab2 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/OWNERS +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/OWNERS @@ -2,6 +2,7 @@ approvers: - mikedanese - dims - wlan0 +- andrewsykim reviewers: - thockin - lavalamp diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/aws/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/aws/BUILD index bbe6a78f36..d57cb94935 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/aws/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/aws/BUILD @@ -34,6 +34,16 @@ go_library( "//pkg/kubelet/apis:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/util:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", "//vendor/github.com/aws/aws-sdk-go/aws:go_default_library", "//vendor/github.com/aws/aws-sdk-go/aws/awserr:go_default_library", "//vendor/github.com/aws/aws-sdk-go/aws/credentials:go_default_library", @@ -51,16 +61,6 @@ go_library( "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/prometheus/client_golang/prometheus:go_default_library", "//vendor/gopkg.in/gcfg.v1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", ], ) @@ -78,16 +78,16 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/kubelet/apis:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//vendor/github.com/aws/aws-sdk-go/aws:go_default_library", "//vendor/github.com/aws/aws-sdk-go/service/ec2:go_default_library", "//vendor/github.com/aws/aws-sdk-go/service/elb:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", "//vendor/github.com/stretchr/testify/mock:go_default_library", "//vendor/github.com/stretchr/testify/require:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/aws/aws.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/aws/aws.go index 22a1114fb9..63236cf9d8 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/aws/aws.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/aws/aws.go @@ -220,6 +220,13 @@ const ( createTagFactor = 2.0 createTagSteps = 9 + // encryptedCheck* is configuration of poll for created volume to check + // it has not been silently removed by AWS. + // On a random AWS account (shared among several developers) it took 4s on + // average. + encryptedCheckInterval = 1 * time.Second + encryptedCheckTimeout = 30 * time.Second + // Number of node names that can be added to a filter. The AWS limit is 200 // but we are using a lower limit on purpose filterNodeLimit = 150 @@ -2127,13 +2134,13 @@ func (c *Cloud) DetachDisk(diskName KubernetesVolumeID, nodeName types.NodeName) // CreateDisk implements Volumes.CreateDisk func (c *Cloud) CreateDisk(volumeOptions *VolumeOptions) (KubernetesVolumeID, error) { - allZones, err := c.getCandidateZonesForDynamicVolume() - if err != nil { - return "", fmt.Errorf("error querying for all zones: %v", err) - } - var createAZ string if !volumeOptions.ZonePresent && !volumeOptions.ZonesPresent { + // querry for candidate zones only if zone parameters absent + allZones, err := c.getCandidateZonesForDynamicVolume() + if err != nil { + return "", fmt.Errorf("error querying for all zones: %v", err) + } createAZ = volumeutil.ChooseZoneForVolume(allZones, volumeOptions.PVCName) } if !volumeOptions.ZonePresent && volumeOptions.ZonesPresent { @@ -2186,14 +2193,6 @@ func (c *Cloud) CreateDisk(volumeOptions *VolumeOptions) (KubernetesVolumeID, er request.VolumeType = aws.String(createType) request.Encrypted = aws.Bool(volumeOptions.Encrypted) if len(volumeOptions.KmsKeyId) > 0 { - if missing, err := c.checkEncryptionKey(volumeOptions.KmsKeyId); err != nil { - if missing { - // KSM key is missing, provisioning would fail - return "", err - } - // Log checkEncryptionKey error and try provisioning anyway. - glog.Warningf("Cannot check KSM key %s: %v", volumeOptions.KmsKeyId, err) - } request.KmsKeyId = aws.String(volumeOptions.KmsKeyId) request.Encrypted = aws.Bool(true) } @@ -2222,24 +2221,50 @@ func (c *Cloud) CreateDisk(volumeOptions *VolumeOptions) (KubernetesVolumeID, er return "", fmt.Errorf("error tagging volume %s: %q", volumeName, err) } + // AWS has a bad habbit of reporting success when creating a volume with + // encryption keys that either don't exists or have wrong permissions. + // Such volume lives for couple of seconds and then it's silently deleted + // by AWS. There is no other check to ensure that given KMS key is correct, + // because Kubernetes may have limited permissions to the key. + if len(volumeOptions.KmsKeyId) > 0 { + err := c.waitUntilVolumeAvailable(volumeName) + if err != nil { + if isAWSErrorVolumeNotFound(err) { + err = fmt.Errorf("failed to create encrypted volume: the volume disappeared after creation, most likely due to inaccessible KMS encryption key") + } + return "", err + } + } + return volumeName, nil } -// checkEncryptionKey tests that given encryption key exists. -func (c *Cloud) checkEncryptionKey(keyId string) (missing bool, err error) { - input := &kms.DescribeKeyInput{ - KeyId: aws.String(keyId), +func (c *Cloud) waitUntilVolumeAvailable(volumeName KubernetesVolumeID) error { + disk, err := newAWSDisk(c, volumeName) + if err != nil { + // Unreachable code + return err } - _, err = c.kms.DescribeKey(input) - if err == nil { - return false, nil - } - if awsError, ok := err.(awserr.Error); ok { - if awsError.Code() == "NotFoundException" { - return true, fmt.Errorf("KMS key %s not found: %q", keyId, err) + + err = wait.Poll(encryptedCheckInterval, encryptedCheckTimeout, func() (done bool, err error) { + vol, err := disk.describeVolume() + if err != nil { + return true, err } - } - return false, fmt.Errorf("Error checking KSM key %s: %q", keyId, err) + if vol.State != nil { + switch *vol.State { + case "available": + // The volume is Available, it won't be deleted now. + return true, nil + case "creating": + return false, nil + default: + return true, fmt.Errorf("unexpected State of newly created AWS EBS volume %s: %q", volumeName, *vol.State) + } + } + return false, nil + }) + return err } // DeleteDisk implements Volumes.DeleteDisk @@ -2333,7 +2358,7 @@ func (c *Cloud) GetVolumeLabels(volumeName KubernetesVolumeID) (map[string]strin labels := make(map[string]string) az := aws.StringValue(info.AvailabilityZone) if az == "" { - return nil, fmt.Errorf("volume did not have AZ information: %q", info.VolumeId) + return nil, fmt.Errorf("volume did not have AZ information: %q", aws.StringValue(info.VolumeId)) } labels[kubeletapis.LabelZoneFailureDomain] = az diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/aws/volumes.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/aws/volumes.go index 48aaded947..cb3a2aa275 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/aws/volumes.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/aws/volumes.go @@ -119,7 +119,7 @@ func (c *Cloud) checkIfAttachedToNode(diskName KubernetesVolumeID, nodeName type info, err := disk.describeVolume() if err != nil { - glog.Warning("Error describing volume %s with %v", diskName, err) + glog.Warningf("Error describing volume %s with %v", diskName, err) awsDiskInfo.volumeState = "unknown" return awsDiskInfo, false, err } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/azure/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/azure/BUILD index 1adae321e6..558f3e9346 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/azure/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/azure/BUILD @@ -43,6 +43,15 @@ go_library( "//pkg/version:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/util:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/client-go/util/flowcontrol:go_default_library", "//vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute:go_default_library", "//vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2017-09-01/network:go_default_library", "//vendor/github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2017-10-01/storage:go_default_library", @@ -55,15 +64,6 @@ go_library( "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/prometheus/client_golang/prometheus:go_default_library", "//vendor/github.com/rubiojr/go-vhd/vhd:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/uuid:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", - "//vendor/k8s.io/client-go/util/flowcontrol:go_default_library", ], ) @@ -89,15 +89,15 @@ go_test( "//pkg/cloudprovider:go_default_library", "//pkg/cloudprovider/providers/azure/auth:go_default_library", "//pkg/kubelet/apis:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute:go_default_library", "//vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2017-09-01/network:go_default_library", "//vendor/github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2017-10-01/storage:go_default_library", "//vendor/github.com/Azure/go-autorest/autorest:go_default_library", "//vendor/github.com/Azure/go-autorest/autorest/to:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/azure/azure_client.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/azure/azure_client.go index 335a0ffafa..c37e631f77 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/azure/azure_client.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/azure/azure_client.go @@ -33,12 +33,12 @@ import ( ) // Helpers for rate limiting error/error channel creation -func createARMRateLimitErr(isWrite bool, opName string) error { +func createRateLimitErr(isWrite bool, opName string) error { opType := "read" if isWrite { opType = "write" } - return fmt.Errorf("azure - ARM rate limited(%s) for operation:%s", opType, opName) + return fmt.Errorf("azure - cloud provider rate limited(%s) for operation:%s", opType, opName) } // VirtualMachinesClient defines needed functions for azure compute.VirtualMachinesClient @@ -170,7 +170,7 @@ func newAzVirtualMachinesClient(config *azClientConfig) *azVirtualMachinesClient func (az *azVirtualMachinesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, VMName string, parameters compute.VirtualMachine) (resp *http.Response, err error) { // /* Write rate limiting */ if !az.rateLimiterWriter.TryAccept() { - err = createARMRateLimitErr(true, "VMCreateOrUpdate") + err = createRateLimitErr(true, "VMCreateOrUpdate") return } @@ -192,7 +192,7 @@ func (az *azVirtualMachinesClient) CreateOrUpdate(ctx context.Context, resourceG func (az *azVirtualMachinesClient) Get(ctx context.Context, resourceGroupName string, VMName string, expand compute.InstanceViewTypes) (result compute.VirtualMachine, err error) { if !az.rateLimiterReader.TryAccept() { - err = createARMRateLimitErr(false, "VMGet") + err = createRateLimitErr(false, "VMGet") return } @@ -209,7 +209,7 @@ func (az *azVirtualMachinesClient) Get(ctx context.Context, resourceGroupName st func (az *azVirtualMachinesClient) List(ctx context.Context, resourceGroupName string) (result []compute.VirtualMachine, err error) { if !az.rateLimiterReader.TryAccept() { - err = createARMRateLimitErr(false, "VMList") + err = createRateLimitErr(false, "VMList") return } @@ -261,7 +261,7 @@ func newAzInterfacesClient(config *azClientConfig) *azInterfacesClient { func (az *azInterfacesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, networkInterfaceName string, parameters network.Interface) (resp *http.Response, err error) { /* Write rate limiting */ if !az.rateLimiterWriter.TryAccept() { - err = createARMRateLimitErr(true, "NiCreateOrUpdate") + err = createRateLimitErr(true, "NiCreateOrUpdate") return } @@ -284,7 +284,7 @@ func (az *azInterfacesClient) CreateOrUpdate(ctx context.Context, resourceGroupN func (az *azInterfacesClient) Get(ctx context.Context, resourceGroupName string, networkInterfaceName string, expand string) (result network.Interface, err error) { if !az.rateLimiterReader.TryAccept() { - err = createARMRateLimitErr(false, "NicGet") + err = createRateLimitErr(false, "NicGet") return } @@ -301,7 +301,7 @@ func (az *azInterfacesClient) Get(ctx context.Context, resourceGroupName string, func (az *azInterfacesClient) GetVirtualMachineScaleSetNetworkInterface(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string, virtualmachineIndex string, networkInterfaceName string, expand string) (result network.Interface, err error) { if !az.rateLimiterReader.TryAccept() { - err = createARMRateLimitErr(false, "NicGetVirtualMachineScaleSetNetworkInterface") + err = createRateLimitErr(false, "NicGetVirtualMachineScaleSetNetworkInterface") return } @@ -340,7 +340,7 @@ func newAzLoadBalancersClient(config *azClientConfig) *azLoadBalancersClient { func (az *azLoadBalancersClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, loadBalancerName string, parameters network.LoadBalancer) (resp *http.Response, err error) { /* Write rate limiting */ if !az.rateLimiterWriter.TryAccept() { - err = createARMRateLimitErr(true, "LBCreateOrUpdate") + err = createRateLimitErr(true, "LBCreateOrUpdate") return nil, err } @@ -364,7 +364,7 @@ func (az *azLoadBalancersClient) CreateOrUpdate(ctx context.Context, resourceGro func (az *azLoadBalancersClient) Delete(ctx context.Context, resourceGroupName string, loadBalancerName string) (resp *http.Response, err error) { /* Write rate limiting */ if !az.rateLimiterWriter.TryAccept() { - err = createARMRateLimitErr(true, "LBDelete") + err = createRateLimitErr(true, "LBDelete") return nil, err } @@ -387,7 +387,7 @@ func (az *azLoadBalancersClient) Delete(ctx context.Context, resourceGroupName s func (az *azLoadBalancersClient) Get(ctx context.Context, resourceGroupName string, loadBalancerName string, expand string) (result network.LoadBalancer, err error) { if !az.rateLimiterReader.TryAccept() { - err = createARMRateLimitErr(false, "LBGet") + err = createRateLimitErr(false, "LBGet") return } @@ -404,7 +404,7 @@ func (az *azLoadBalancersClient) Get(ctx context.Context, resourceGroupName stri func (az *azLoadBalancersClient) List(ctx context.Context, resourceGroupName string) ([]network.LoadBalancer, error) { if !az.rateLimiterReader.TryAccept() { - err := createARMRateLimitErr(false, "LBList") + err := createRateLimitErr(false, "LBList") return nil, err } @@ -456,7 +456,7 @@ func newAzPublicIPAddressesClient(config *azClientConfig) *azPublicIPAddressesCl func (az *azPublicIPAddressesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, publicIPAddressName string, parameters network.PublicIPAddress) (resp *http.Response, err error) { /* Write rate limiting */ if !az.rateLimiterWriter.TryAccept() { - err = createARMRateLimitErr(true, "PublicIPCreateOrUpdate") + err = createRateLimitErr(true, "PublicIPCreateOrUpdate") return nil, err } @@ -480,7 +480,7 @@ func (az *azPublicIPAddressesClient) CreateOrUpdate(ctx context.Context, resourc func (az *azPublicIPAddressesClient) Delete(ctx context.Context, resourceGroupName string, publicIPAddressName string) (resp *http.Response, err error) { /* Write rate limiting */ if !az.rateLimiterWriter.TryAccept() { - err = createARMRateLimitErr(true, "PublicIPDelete") + err = createRateLimitErr(true, "PublicIPDelete") return nil, err } @@ -503,7 +503,7 @@ func (az *azPublicIPAddressesClient) Delete(ctx context.Context, resourceGroupNa func (az *azPublicIPAddressesClient) Get(ctx context.Context, resourceGroupName string, publicIPAddressName string, expand string) (result network.PublicIPAddress, err error) { if !az.rateLimiterReader.TryAccept() { - err = createARMRateLimitErr(false, "PublicIPGet") + err = createRateLimitErr(false, "PublicIPGet") return } @@ -520,7 +520,7 @@ func (az *azPublicIPAddressesClient) Get(ctx context.Context, resourceGroupName func (az *azPublicIPAddressesClient) List(ctx context.Context, resourceGroupName string) ([]network.PublicIPAddress, error) { if !az.rateLimiterReader.TryAccept() { - return nil, createARMRateLimitErr(false, "PublicIPList") + return nil, createRateLimitErr(false, "PublicIPList") } glog.V(10).Infof("azPublicIPAddressesClient.List(%q): start", resourceGroupName) @@ -571,7 +571,7 @@ func newAzSubnetsClient(config *azClientConfig) *azSubnetsClient { func (az *azSubnetsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, virtualNetworkName string, subnetName string, subnetParameters network.Subnet) (resp *http.Response, err error) { /* Write rate limiting */ if !az.rateLimiterWriter.TryAccept() { - err = createARMRateLimitErr(true, "SubnetCreateOrUpdate") + err = createRateLimitErr(true, "SubnetCreateOrUpdate") return } @@ -595,7 +595,7 @@ func (az *azSubnetsClient) CreateOrUpdate(ctx context.Context, resourceGroupName func (az *azSubnetsClient) Delete(ctx context.Context, resourceGroupName string, virtualNetworkName string, subnetName string) (resp *http.Response, err error) { /* Write rate limiting */ if !az.rateLimiterWriter.TryAccept() { - err = createARMRateLimitErr(true, "SubnetDelete") + err = createRateLimitErr(true, "SubnetDelete") return } @@ -618,7 +618,7 @@ func (az *azSubnetsClient) Delete(ctx context.Context, resourceGroupName string, func (az *azSubnetsClient) Get(ctx context.Context, resourceGroupName string, virtualNetworkName string, subnetName string, expand string) (result network.Subnet, err error) { if !az.rateLimiterReader.TryAccept() { - err = createARMRateLimitErr(false, "SubnetGet") + err = createRateLimitErr(false, "SubnetGet") return } @@ -635,7 +635,7 @@ func (az *azSubnetsClient) Get(ctx context.Context, resourceGroupName string, vi func (az *azSubnetsClient) List(ctx context.Context, resourceGroupName string, virtualNetworkName string) ([]network.Subnet, error) { if !az.rateLimiterReader.TryAccept() { - return nil, createARMRateLimitErr(false, "SubnetList") + return nil, createRateLimitErr(false, "SubnetList") } glog.V(10).Infof("azSubnetsClient.List(%q,%q): start", resourceGroupName, virtualNetworkName) @@ -686,7 +686,7 @@ func newAzSecurityGroupsClient(config *azClientConfig) *azSecurityGroupsClient { func (az *azSecurityGroupsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, networkSecurityGroupName string, parameters network.SecurityGroup) (resp *http.Response, err error) { /* Write rate limiting */ if !az.rateLimiterWriter.TryAccept() { - err = createARMRateLimitErr(true, "NSGCreateOrUpdate") + err = createRateLimitErr(true, "NSGCreateOrUpdate") return } @@ -710,7 +710,7 @@ func (az *azSecurityGroupsClient) CreateOrUpdate(ctx context.Context, resourceGr func (az *azSecurityGroupsClient) Delete(ctx context.Context, resourceGroupName string, networkSecurityGroupName string) (resp *http.Response, err error) { /* Write rate limiting */ if !az.rateLimiterWriter.TryAccept() { - err = createARMRateLimitErr(true, "NSGDelete") + err = createRateLimitErr(true, "NSGDelete") return } @@ -733,7 +733,7 @@ func (az *azSecurityGroupsClient) Delete(ctx context.Context, resourceGroupName func (az *azSecurityGroupsClient) Get(ctx context.Context, resourceGroupName string, networkSecurityGroupName string, expand string) (result network.SecurityGroup, err error) { if !az.rateLimiterReader.TryAccept() { - err = createARMRateLimitErr(false, "NSGGet") + err = createRateLimitErr(false, "NSGGet") return } @@ -750,7 +750,7 @@ func (az *azSecurityGroupsClient) Get(ctx context.Context, resourceGroupName str func (az *azSecurityGroupsClient) List(ctx context.Context, resourceGroupName string) ([]network.SecurityGroup, error) { if !az.rateLimiterReader.TryAccept() { - return nil, createARMRateLimitErr(false, "NSGList") + return nil, createRateLimitErr(false, "NSGList") } glog.V(10).Infof("azSecurityGroupsClient.List(%q): start", resourceGroupName) @@ -801,7 +801,7 @@ func newAzVirtualMachineScaleSetsClient(config *azClientConfig) *azVirtualMachin func (az *azVirtualMachineScaleSetsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, VMScaleSetName string, parameters compute.VirtualMachineScaleSet) (resp *http.Response, err error) { /* Write rate limiting */ if !az.rateLimiterWriter.TryAccept() { - err = createARMRateLimitErr(true, "VMSSCreateOrUpdate") + err = createRateLimitErr(true, "VMSSCreateOrUpdate") return } @@ -824,7 +824,7 @@ func (az *azVirtualMachineScaleSetsClient) CreateOrUpdate(ctx context.Context, r func (az *azVirtualMachineScaleSetsClient) Get(ctx context.Context, resourceGroupName string, VMScaleSetName string) (result compute.VirtualMachineScaleSet, err error) { if !az.rateLimiterReader.TryAccept() { - err = createARMRateLimitErr(false, "VMSSGet") + err = createRateLimitErr(false, "VMSSGet") return } @@ -841,13 +841,13 @@ func (az *azVirtualMachineScaleSetsClient) Get(ctx context.Context, resourceGrou func (az *azVirtualMachineScaleSetsClient) List(ctx context.Context, resourceGroupName string) (result []compute.VirtualMachineScaleSet, err error) { if !az.rateLimiterReader.TryAccept() { - err = createARMRateLimitErr(false, "VMSSList") + err = createRateLimitErr(false, "VMSSList") return } - glog.V(10).Infof("azVirtualMachineScaleSetsClient.List(%q,%q): start", resourceGroupName) + glog.V(10).Infof("azVirtualMachineScaleSetsClient.List(%q): start", resourceGroupName) defer func() { - glog.V(10).Infof("azVirtualMachineScaleSetsClient.List(%q,%q): end", resourceGroupName) + glog.V(10).Infof("azVirtualMachineScaleSetsClient.List(%q): end", resourceGroupName) }() mc := newMetricContext("vmss", "list", resourceGroupName, az.client.SubscriptionID) @@ -872,13 +872,13 @@ func (az *azVirtualMachineScaleSetsClient) List(ctx context.Context, resourceGro func (az *azVirtualMachineScaleSetsClient) UpdateInstances(ctx context.Context, resourceGroupName string, VMScaleSetName string, VMInstanceIDs compute.VirtualMachineScaleSetVMInstanceRequiredIDs) (resp *http.Response, err error) { /* Write rate limiting */ if !az.rateLimiterWriter.TryAccept() { - err = createARMRateLimitErr(true, "VMSSUpdateInstances") + err = createRateLimitErr(true, "VMSSUpdateInstances") return } - glog.V(10).Infof("azVirtualMachineScaleSetsClient.UpdateInstances(%q,%q,%q): start", resourceGroupName, VMScaleSetName, VMInstanceIDs) + glog.V(10).Infof("azVirtualMachineScaleSetsClient.UpdateInstances(%q,%q,%v): start", resourceGroupName, VMScaleSetName, VMInstanceIDs) defer func() { - glog.V(10).Infof("azVirtualMachineScaleSetsClient.UpdateInstances(%q,%q,%q): end", resourceGroupName, VMScaleSetName, VMInstanceIDs) + glog.V(10).Infof("azVirtualMachineScaleSetsClient.UpdateInstances(%q,%q,%v): end", resourceGroupName, VMScaleSetName, VMInstanceIDs) }() mc := newMetricContext("vmss", "update_instances", resourceGroupName, az.client.SubscriptionID) @@ -916,7 +916,7 @@ func newAzVirtualMachineScaleSetVMsClient(config *azClientConfig) *azVirtualMach func (az *azVirtualMachineScaleSetVMsClient) Get(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string) (result compute.VirtualMachineScaleSetVM, err error) { if !az.rateLimiterReader.TryAccept() { - err = createARMRateLimitErr(false, "VMSSGet") + err = createRateLimitErr(false, "VMSSGet") return } @@ -933,7 +933,7 @@ func (az *azVirtualMachineScaleSetVMsClient) Get(ctx context.Context, resourceGr func (az *azVirtualMachineScaleSetVMsClient) GetInstanceView(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string) (result compute.VirtualMachineScaleSetVMInstanceView, err error) { if !az.rateLimiterReader.TryAccept() { - err = createARMRateLimitErr(false, "VMSSGetInstanceView") + err = createRateLimitErr(false, "VMSSGetInstanceView") return } @@ -950,7 +950,7 @@ func (az *azVirtualMachineScaleSetVMsClient) GetInstanceView(ctx context.Context func (az *azVirtualMachineScaleSetVMsClient) List(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string, filter string, selectParameter string, expand string) (result []compute.VirtualMachineScaleSetVM, err error) { if !az.rateLimiterReader.TryAccept() { - err = createARMRateLimitErr(false, "VMSSList") + err = createRateLimitErr(false, "VMSSList") return } @@ -980,7 +980,7 @@ func (az *azVirtualMachineScaleSetVMsClient) List(ctx context.Context, resourceG func (az *azVirtualMachineScaleSetVMsClient) Update(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string, parameters compute.VirtualMachineScaleSetVM) (resp *http.Response, err error) { if !az.rateLimiterWriter.TryAccept() { - err = createARMRateLimitErr(true, "VMSSUpdate") + err = createRateLimitErr(true, "VMSSUpdate") return } @@ -1025,7 +1025,7 @@ func newAzRoutesClient(config *azClientConfig) *azRoutesClient { func (az *azRoutesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, routeTableName string, routeName string, routeParameters network.Route) (resp *http.Response, err error) { /* Write rate limiting */ if !az.rateLimiterWriter.TryAccept() { - err = createARMRateLimitErr(true, "RouteCreateOrUpdate") + err = createRateLimitErr(true, "RouteCreateOrUpdate") return } @@ -1049,7 +1049,7 @@ func (az *azRoutesClient) CreateOrUpdate(ctx context.Context, resourceGroupName func (az *azRoutesClient) Delete(ctx context.Context, resourceGroupName string, routeTableName string, routeName string) (resp *http.Response, err error) { /* Write rate limiting */ if !az.rateLimiterWriter.TryAccept() { - err = createARMRateLimitErr(true, "RouteDelete") + err = createRateLimitErr(true, "RouteDelete") return } @@ -1094,7 +1094,7 @@ func newAzRouteTablesClient(config *azClientConfig) *azRouteTablesClient { func (az *azRouteTablesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, routeTableName string, parameters network.RouteTable) (resp *http.Response, err error) { /* Write rate limiting */ if !az.rateLimiterWriter.TryAccept() { - err = createARMRateLimitErr(true, "RouteTableCreateOrUpdate") + err = createRateLimitErr(true, "RouteTableCreateOrUpdate") return } @@ -1117,7 +1117,7 @@ func (az *azRouteTablesClient) CreateOrUpdate(ctx context.Context, resourceGroup func (az *azRouteTablesClient) Get(ctx context.Context, resourceGroupName string, routeTableName string, expand string) (result network.RouteTable, err error) { if !az.rateLimiterReader.TryAccept() { - err = createARMRateLimitErr(false, "GetRouteTable") + err = createRateLimitErr(false, "GetRouteTable") return } @@ -1155,7 +1155,7 @@ func newAzStorageAccountClient(config *azClientConfig) *azStorageAccountClient { func (az *azStorageAccountClient) Create(ctx context.Context, resourceGroupName string, accountName string, parameters storage.AccountCreateParameters) (result *http.Response, err error) { /* Write rate limiting */ if !az.rateLimiterWriter.TryAccept() { - err = createARMRateLimitErr(true, "StorageAccountCreate") + err = createRateLimitErr(true, "StorageAccountCreate") return } @@ -1177,7 +1177,7 @@ func (az *azStorageAccountClient) Create(ctx context.Context, resourceGroupName func (az *azStorageAccountClient) Delete(ctx context.Context, resourceGroupName string, accountName string) (result autorest.Response, err error) { if !az.rateLimiterReader.TryAccept() { - err = createARMRateLimitErr(false, "DeleteStorageAccount") + err = createRateLimitErr(false, "DeleteStorageAccount") return } @@ -1194,7 +1194,7 @@ func (az *azStorageAccountClient) Delete(ctx context.Context, resourceGroupName func (az *azStorageAccountClient) ListKeys(ctx context.Context, resourceGroupName string, accountName string) (result storage.AccountListKeysResult, err error) { if !az.rateLimiterReader.TryAccept() { - err = createARMRateLimitErr(false, "ListStorageAccountKeys") + err = createRateLimitErr(false, "ListStorageAccountKeys") return } @@ -1211,7 +1211,7 @@ func (az *azStorageAccountClient) ListKeys(ctx context.Context, resourceGroupNam func (az *azStorageAccountClient) ListByResourceGroup(ctx context.Context, resourceGroupName string) (result storage.AccountListResult, err error) { if !az.rateLimiterReader.TryAccept() { - err = createARMRateLimitErr(false, "ListStorageAccountsByResourceGroup") + err = createRateLimitErr(false, "ListStorageAccountsByResourceGroup") return } @@ -1228,7 +1228,7 @@ func (az *azStorageAccountClient) ListByResourceGroup(ctx context.Context, resou func (az *azStorageAccountClient) GetProperties(ctx context.Context, resourceGroupName string, accountName string) (result storage.Account, err error) { if !az.rateLimiterReader.TryAccept() { - err = createARMRateLimitErr(false, "GetStorageAccount/Properties") + err = createRateLimitErr(false, "GetStorageAccount/Properties") return } @@ -1266,7 +1266,7 @@ func newAzDisksClient(config *azClientConfig) *azDisksClient { func (az *azDisksClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, diskName string, diskParameter compute.Disk) (resp *http.Response, err error) { /* Write rate limiting */ if !az.rateLimiterWriter.TryAccept() { - err = createARMRateLimitErr(true, "DiskCreateOrUpdate") + err = createRateLimitErr(true, "DiskCreateOrUpdate") return } @@ -1290,7 +1290,7 @@ func (az *azDisksClient) CreateOrUpdate(ctx context.Context, resourceGroupName s func (az *azDisksClient) Delete(ctx context.Context, resourceGroupName string, diskName string) (resp *http.Response, err error) { /* Write rate limiting */ if !az.rateLimiterWriter.TryAccept() { - err = createARMRateLimitErr(true, "DiskDelete") + err = createRateLimitErr(true, "DiskDelete") return } @@ -1313,7 +1313,7 @@ func (az *azDisksClient) Delete(ctx context.Context, resourceGroupName string, d func (az *azDisksClient) Get(ctx context.Context, resourceGroupName string, diskName string) (result compute.Disk, err error) { if !az.rateLimiterReader.TryAccept() { - err = createARMRateLimitErr(false, "GetDisk") + err = createRateLimitErr(false, "GetDisk") return } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/azure/azure_loadbalancer.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/azure/azure_loadbalancer.go index fca68fbb40..cc2a6c1b20 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/azure/azure_loadbalancer.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/azure/azure_loadbalancer.go @@ -74,6 +74,10 @@ const ( // ServiceAnnotationAllowedServiceTag is the annotation used on the service // to specify a list of allowed service tags separated by comma ServiceAnnotationAllowedServiceTag = "service.beta.kubernetes.io/azure-allowed-service-tags" + + // ServiceAnnotationLoadBalancerIdleTimeout is the annotation used on the service + // to specify the idle timeout for connections on the load balancer in minutes. + ServiceAnnotationLoadBalancerIdleTimeout = "service.beta.kubernetes.io/azure-load-balancer-tcp-idle-timeout" ) var ( @@ -262,7 +266,7 @@ func (az *Cloud) getServiceLoadBalancer(service *v1.Service, clusterName string, func (az *Cloud) selectLoadBalancer(clusterName string, service *v1.Service, existingLBs *[]network.LoadBalancer, nodes []*v1.Node) (selectedLB *network.LoadBalancer, existsLb bool, err error) { isInternal := requiresInternalLoadBalancer(service) serviceName := getServiceName(service) - glog.V(2).Infof("selectLoadBalancer for service (%s): isInternal(%s) - start", serviceName, isInternal) + glog.V(2).Infof("selectLoadBalancer for service (%s): isInternal(%v) - start", serviceName, isInternal) vmSetNames, err := az.vmSet.GetVMSetNames(service, nodes) if err != nil { glog.Errorf("az.selectLoadBalancer: cluster(%s) service(%s) isInternal(%t) - az.GetVMSetNames failed, err=(%v)", clusterName, serviceName, isInternal, err) @@ -467,6 +471,31 @@ func (az *Cloud) ensurePublicIPExists(service *v1.Service, pipName string, domai return &pip, nil } +func getIdleTimeout(s *v1.Service) (*int32, error) { + const ( + min = 4 + max = 30 + ) + + val, ok := s.Annotations[ServiceAnnotationLoadBalancerIdleTimeout] + if !ok { + // Return a nil here as this will set the value to the azure default + return nil, nil + } + + errInvalidTimeout := fmt.Errorf("idle timeout value must be a whole number representing minutes between %d and %d", min, max) + to, err := strconv.Atoi(val) + if err != nil { + return nil, fmt.Errorf("error parsing idle timeout value: %v: %v", err, errInvalidTimeout) + } + to32 := int32(to) + + if to32 < min || to32 > max { + return nil, errInvalidTimeout + } + return &to32, nil +} + // This ensures load balancer exists and the frontend ip config is setup. // This also reconciles the Service's Ports with the LoadBalancer config. // This entails adding rules/probes for expected Ports and removing stale rules/ports. @@ -487,6 +516,11 @@ func (az *Cloud) reconcileLoadBalancer(clusterName string, service *v1.Service, lbBackendPoolName := getBackendPoolName(clusterName) lbBackendPoolID := az.getBackendPoolID(lbName, lbBackendPoolName) + lbIdleTimeout, err := getIdleTimeout(service) + if err != nil { + return nil, err + } + dirtyLb := false // Ensure LoadBalancer's Backend Pool Configuration @@ -683,6 +717,9 @@ func (az *Cloud) reconcileLoadBalancer(clusterName string, service *v1.Service, EnableFloatingIP: to.BoolPtr(true), }, } + if port.Protocol == v1.ProtocolTCP { + expectedRule.LoadBalancingRulePropertiesFormat.IdleTimeoutInMinutes = lbIdleTimeout + } // we didn't construct the probe objects for UDP because they're not used/needed/allowed if port.Protocol != v1.ProtocolUDP { @@ -842,7 +879,7 @@ func (az *Cloud) reconcileLoadBalancer(clusterName string, service *v1.Service, // This entails adding required, missing SecurityRules and removing stale rules. func (az *Cloud) reconcileSecurityGroup(clusterName string, service *v1.Service, lbIP *string, wantLb bool) (*network.SecurityGroup, error) { serviceName := getServiceName(service) - glog.V(5).Infof("reconcileSecurityGroup(%s): START clusterName=%q lbName=%q", serviceName, clusterName) + glog.V(5).Infof("reconcileSecurityGroup(%s): START clusterName=%q", serviceName, clusterName) ports := service.Spec.Ports if ports == nil { @@ -1280,7 +1317,8 @@ func equalLoadBalancingRulePropertiesFormat(s, t *network.LoadBalancingRulePrope reflect.DeepEqual(s.LoadDistribution, t.LoadDistribution) && reflect.DeepEqual(s.FrontendPort, t.FrontendPort) && reflect.DeepEqual(s.BackendPort, t.BackendPort) && - reflect.DeepEqual(s.EnableFloatingIP, t.EnableFloatingIP) + reflect.DeepEqual(s.EnableFloatingIP, t.EnableFloatingIP) && + reflect.DeepEqual(s.IdleTimeoutInMinutes, t.IdleTimeoutInMinutes) } // This compares rule's Name, Protocol, SourcePortRange, DestinationPortRange, SourceAddressPrefix, Access, and Direction. diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/azure/azure_loadbalancer.md b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/azure/azure_loadbalancer.md deleted file mode 100644 index 31741cd4e9..0000000000 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/azure/azure_loadbalancer.md +++ /dev/null @@ -1,77 +0,0 @@ -# Azure LoadBalancer - -The way azure define LoadBalancer is different with GCE or AWS. Azure's LB can have multiple frontend IP refs. The GCE and AWS can only allow one, if you want more, you better to have another LB. Because of the fact, Public IP is not part of the LB in Azure. NSG is not part of LB in Azure either. However, you cannot delete them in parallel, Public IP can only be delete after LB's frontend IP ref is removed. - -For different Azure Resources, such as LB, Public IP, NSG. They are the same tier azure resources. We need to make sure there is no connection in their own ensure loops. In another words, They would be eventually reconciled regardless of other resources' state. They should only depends on service state. - -Despite the ideal philosophy above, we have to face the reality. NSG depends on LB's frontend ip to adjust NSG rules. So when we want to reconcile NSG, the LB should contain the corresponding frontend ip config. - -And also, For Azure, we cannot afford to have more than 1 worker of service_controller. Because, different services could operate on the same LB, concurrent execution could result in conflict or unexpected result. For AWS and GCE, they apparently doesn't have the problem, they use one LB per service, no such conflict. - -There are two load balancers per availability set internal and external. There is a limit on number of services that can be associated with a single load balancer. -By default primary load balancer is selected. Services can be annotated to allow auto selection of available load balancers. Service annotations can also be used to provide specific availability sets that host the load balancers. Note that in case of auto selection or specific availability set selection, when the availability set is lost in case of downtime or cluster scale down the services are currently not auto assigned to an available load balancer. -Service Annotation for Auto and specific load balancer mode - -- service.beta.kubernetes.io/azure-load-balancer-mode" (__auto__|as1,as2...) - -## Introduce Functions - -- reconcileLoadBalancer(clusterName string, service *v1.Service, nodes []*v1.Node, wantLb bool) (*network.LoadBalancer, error) - - Go through lb's properties, update based on wantLb - - If any change on the lb, no matter if the lb exists or not - - Call az cloud to CreateOrUpdate on this lb, or Delete if nothing left - - return lb, err - -- reconcileSecurityGroup(clusterName string, service *v1.Service, lbIP *string, wantLb bool) (*network.SecurityGroup, error) - - Go though NSG' properties, update based on wantLb - - Use destinationIPAddress as target address if possible - - Consolidate NSG rules if possible - - If any change on the NSG, (the NSG should always exists) - - Call az cloud to CreateOrUpdate on this NSG - - return sg, err - -- reconcilePublicIP(clusterName string, service *v1.Service, wantLb bool) (*network.PublicIPAddress, error) - - List all the public ip in the resource group - - Make sure we only touch Public IP resources has tags[service] = "namespace/serviceName" - - skip for wantLb && !isInternal && pipName == desiredPipName - - delete other public ip resources if any - - if !isInternal && wantLb - - ensure Public IP with desiredPipName exists - -- getServiceLoadBalancer(service *v1.Service, clusterName string, nodes []*v1.Node, wantLb bool) (lb, status, exists, error) - - gets the loadbalancer for the service if it already exists - - If wantLb is TRUE then -it selects a new load balancer, the selection helps distribute the services across load balancers - - In case the selected load balancer does not exists it returns network.LoadBalancer struct with added metadata (such as name, location) and existsLB set to FALSE - - By default - cluster default LB is returned - -## Define interface behaviors - -### GetLoadBalancer - -- Get LoadBalancer status, return status, error - - return the load balancer status for this service - - it will not create or update or delete any resource - -### EnsureLoadBalancer - -- Reconcile LB for the flipped service - - Call reconcileLoadBalancer(clusterName, flipedService, nil, false/* wantLb */) -- Reconcile Public IP - - Call reconcilePublicIP(cluster, service, true) -- Reconcile LB's related and owned resources, such as FrontEndIPConfig, Rules, Probe. - - Call reconcileLoadBalancer(clusterName, service, nodes, true /* wantLb */) -- Reconcile NSG rules, it need to be called after reconcileLB - - Call reconcileSecurityGroup(clusterName, service, lbStatus, true /* wantLb */) - -### UpdateLoadBalancer - -- Has no difference with EnsureLoadBalancer - -### EnsureLoadBalancerDeleted - -- Reconcile NSG first, before reconcile LB, because SG need LB to be there - - Call reconcileSecurityGroup(clusterName, service, nil, false /* wantLb */) -- Reconcile LB's related and owned resources, such as FrontEndIPConfig, Rules, Probe. - - Call reconcileLoadBalancer(clusterName, service, nodes, false) -- Reconcile Public IP, public IP needs related LB reconciled first - - Call reconcilePublicIP(cluster, service, false) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/azure/azure_managedDiskController.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/azure/azure_managedDiskController.go index fac548f1d2..ade2dbba54 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/azure/azure_managedDiskController.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/azure/azure_managedDiskController.go @@ -40,7 +40,8 @@ func newManagedDiskController(common *controllerCommon) (*ManagedDiskController, } //CreateManagedDisk : create managed disk -func (c *ManagedDiskController) CreateManagedDisk(diskName string, storageAccountType storage.SkuName, sizeGB int, tags map[string]string) (string, error) { +func (c *ManagedDiskController) CreateManagedDisk(diskName string, storageAccountType storage.SkuName, resourceGroup string, + sizeGB int, tags map[string]string) (string, error) { glog.V(4).Infof("azureDisk - creating new managed Name:%s StorageAccountType:%s Size:%v", diskName, storageAccountType, sizeGB) newTags := make(map[string]*string) @@ -68,9 +69,14 @@ func (c *ManagedDiskController) CreateManagedDisk(diskName string, storageAccoun DiskSizeGB: &diskSizeGB, CreationData: &compute.CreationData{CreateOption: compute.Empty}, }} + + if resourceGroup == "" { + resourceGroup = c.common.resourceGroup + } + ctx, cancel := getContextWithCancel() defer cancel() - _, err := c.common.cloud.DisksClient.CreateOrUpdate(ctx, c.common.resourceGroup, diskName, model) + _, err := c.common.cloud.DisksClient.CreateOrUpdate(ctx, resourceGroup, diskName, model) if err != nil { return "", err } @@ -78,7 +84,7 @@ func (c *ManagedDiskController) CreateManagedDisk(diskName string, storageAccoun diskID := "" err = kwait.ExponentialBackoff(defaultBackOff, func() (bool, error) { - provisionState, id, err := c.getDisk(diskName) + provisionState, id, err := c.getDisk(resourceGroup, diskName) diskID = id // We are waiting for provisioningState==Succeeded // We don't want to hand-off managed disks to k8s while they are @@ -104,10 +110,15 @@ func (c *ManagedDiskController) CreateManagedDisk(diskName string, storageAccoun //DeleteManagedDisk : delete managed disk func (c *ManagedDiskController) DeleteManagedDisk(diskURI string) error { diskName := path.Base(diskURI) + resourceGroup, err := getResourceGroupFromDiskURI(diskURI) + if err != nil { + return err + } + ctx, cancel := getContextWithCancel() defer cancel() - _, err := c.common.cloud.DisksClient.Delete(ctx, c.common.resourceGroup, diskName) + _, err = c.common.cloud.DisksClient.Delete(ctx, resourceGroup, diskName) if err != nil { return err } @@ -120,11 +131,11 @@ func (c *ManagedDiskController) DeleteManagedDisk(diskURI string) error { } // return: disk provisionState, diskID, error -func (c *ManagedDiskController) getDisk(diskName string) (string, string, error) { +func (c *ManagedDiskController) getDisk(resourceGroup, diskName string) (string, string, error) { ctx, cancel := getContextWithCancel() defer cancel() - result, err := c.common.cloud.DisksClient.Get(ctx, c.common.resourceGroup, diskName) + result, err := c.common.cloud.DisksClient.Get(ctx, resourceGroup, diskName) if err != nil { return "", "", err } @@ -137,11 +148,17 @@ func (c *ManagedDiskController) getDisk(diskName string) (string, string, error) } // ResizeDisk Expand the disk to new size -func (c *ManagedDiskController) ResizeDisk(diskName string, oldSize resource.Quantity, newSize resource.Quantity) (resource.Quantity, error) { +func (c *ManagedDiskController) ResizeDisk(diskURI string, oldSize resource.Quantity, newSize resource.Quantity) (resource.Quantity, error) { ctx, cancel := getContextWithCancel() defer cancel() - result, err := c.common.cloud.DisksClient.Get(ctx, c.common.resourceGroup, diskName) + diskName := path.Base(diskURI) + resourceGroup, err := getResourceGroupFromDiskURI(diskURI) + if err != nil { + return oldSize, err + } + + result, err := c.common.cloud.DisksClient.Get(ctx, resourceGroup, diskName) if err != nil { return oldSize, err } @@ -165,7 +182,7 @@ func (c *ManagedDiskController) ResizeDisk(diskName string, oldSize resource.Qua ctx, cancel = getContextWithCancel() defer cancel() - if _, err := c.common.cloud.DisksClient.CreateOrUpdate(ctx, c.common.resourceGroup, diskName, result); err != nil { + if _, err := c.common.cloud.DisksClient.CreateOrUpdate(ctx, resourceGroup, diskName, result); err != nil { return oldSize, err } @@ -173,3 +190,14 @@ func (c *ManagedDiskController) ResizeDisk(diskName string, oldSize resource.Qua return newSizeQuant, nil } + +// get resource group name from a managed disk URI, e.g. return {group-name} according to +// /subscriptions/{sub-id}/resourcegroups/{group-name}/providers/microsoft.compute/disks/{disk-id} +// according to https://docs.microsoft.com/en-us/rest/api/compute/disks/get +func getResourceGroupFromDiskURI(diskURI string) (string, error) { + fields := strings.Split(diskURI, "/") + if len(fields) != 9 || fields[3] != "resourceGroups" { + return "", fmt.Errorf("invalid disk URI: %s", diskURI) + } + return fields[4], nil +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/azure/azure_standard.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/azure/azure_standard.go index 0aa4fe7479..9591ca92a6 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/azure/azure_standard.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/azure/azure_standard.go @@ -52,7 +52,8 @@ const ( InternalLoadBalancerNameSuffix = "-internal" // nodeLabelRole specifies the role of a node - nodeLabelRole = "kubernetes.io/role" + nodeLabelRole = "kubernetes.io/role" + nicFailedState = "Failed" storageAccountNameMaxLength = 24 ) @@ -619,6 +620,11 @@ func (as *availabilitySet) ensureHostInPool(serviceName string, nodeName types.N return err } + if nic.ProvisioningState != nil && *nic.ProvisioningState == nicFailedState { + glog.V(3).Infof("ensureHostInPool skips node %s because its primdary nic %s is in Failed state", nodeName, nic.Name) + return nil + } + var primaryIPConfig *network.InterfaceIPConfiguration primaryIPConfig, err = getPrimaryIPConfig(nic) if err != nil { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/azure/azure_storageaccount.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/azure/azure_storageaccount.go index 00944a8a44..e6610d22ad 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/azure/azure_storageaccount.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/azure/azure_storageaccount.go @@ -112,7 +112,10 @@ func (az *Cloud) ensureStorageAccount(accountName, accountType, location, genAcc glog.V(2).Infof("azure - no matching account found, begin to create a new account %s in resource group %s, location: %s, accountType: %s", accountName, az.ResourceGroup, location, accountType) cp := storage.AccountCreateParameters{ - Sku: &storage.Sku{Name: storage.SkuName(accountType)}, + Sku: &storage.Sku{Name: storage.SkuName(accountType)}, + // switch to use StorageV2 as it's recommended according to https://docs.microsoft.com/en-us/azure/storage/common/storage-account-options + Kind: storage.StorageV2, + AccountPropertiesCreateParameters: &storage.AccountPropertiesCreateParameters{EnableHTTPSTrafficOnly: to.BoolPtr(true)}, Tags: map[string]*string{"created-by": to.StringPtr("azure")}, Location: &location} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/azure/azure_vmss.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/azure/azure_vmss.go index c7fa190b16..0cf6bf841a 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/azure/azure_vmss.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/azure/azure_vmss.go @@ -475,7 +475,7 @@ func (ss *scaleSet) getScaleSetWithRetry(name string) (compute.VirtualMachineSca glog.Errorf("backoff: failure for scale set %q, will retry,err=%v", name, retryErr) return false, nil } - glog.V(4).Info("backoff: success for scale set %q", name) + glog.V(4).Infof("backoff: success for scale set %q", name) if cached != nil { exists = true @@ -845,7 +845,7 @@ func (ss *scaleSet) EnsureBackendPoolDeleted(poolID, vmSetName string, backendAd ssName, err := extractScaleSetNameByProviderID(*ipConfigurations.ID) if err != nil { - glog.V(4).Infof("backend IP configuration %q is not belonging to any vmss, omit it") + glog.V(4).Infof("backend IP configuration %q is not belonging to any vmss, omit it", *ipConfigurations.ID) continue } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/azure/azure_vmss_cache.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/azure/azure_vmss_cache.go index 5542b7ca0b..b3c1b0e99e 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/azure/azure_vmss_cache.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/azure/azure_vmss_cache.go @@ -99,7 +99,7 @@ func (ss *scaleSet) newNodeNameToScaleSetMappingCache() (*timedCache, error) { for _, vm := range vms { if vm.OsProfile == nil || vm.OsProfile.ComputerName == nil { - glog.Warningf("failed to get computerName for vmssVM (%q)", vm.Name) + glog.Warningf("failed to get computerName for vmssVM (%q)", ssName) continue } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/cloudstack/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/cloudstack/BUILD index b71eb8e404..3f0b1d1081 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/cloudstack/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/cloudstack/BUILD @@ -13,53 +13,20 @@ go_library( "cloudstack_instances.go", "cloudstack_loadbalancer.go", "metadata.go", - ] + select({ - "@io_bazel_rules_go//go/platform:android": [ - "metadata_other.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "metadata_other.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "metadata_other.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "metadata_other.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "metadata_linux.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "metadata_other.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "metadata_other.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "metadata_other.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "metadata_other.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "metadata_other.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "metadata_other.go", - ], - "//conditions:default": [], - }), + "metadata_linux.go", + "metadata_other.go", + ], importpath = "k8s.io/kubernetes/pkg/cloudprovider/providers/cloudstack", deps = [ "//pkg/cloudprovider:go_default_library", "//pkg/controller:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//vendor/github.com/d2g/dhcp4:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/kardianos/osext:go_default_library", "//vendor/github.com/xanzy/go-cloudstack/cloudstack:go_default_library", "//vendor/gopkg.in/gcfg.v1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", ] + select({ "@io_bazel_rules_go//go/platform:android": [ "//vendor/github.com/d2g/dhcp4client:go_default_library", @@ -103,8 +70,8 @@ go_test( srcs = ["cloudstack_test.go"], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/BUILD index 9368a8cf62..94f70388b2 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/BUILD @@ -59,6 +59,24 @@ go_library( "//pkg/version:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/util:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/client-go/informers:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", + "//staging/src/k8s.io/client-go/util/flowcontrol:go_default_library", "//vendor/cloud.google.com/go/compute/metadata:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/prometheus/client_golang/prometheus:go_default_library", @@ -71,24 +89,6 @@ go_library( "//vendor/google.golang.org/api/googleapi:go_default_library", "//vendor/google.golang.org/api/tpu/v1:go_default_library", "//vendor/gopkg.in/gcfg.v1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", - "//vendor/k8s.io/client-go/informers:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", - "//vendor/k8s.io/client-go/util/flowcontrol:go_default_library", ], ) @@ -116,6 +116,12 @@ go_test( "//pkg/cloudprovider/providers/gce/cloud/mock:go_default_library", "//pkg/kubelet/apis:go_default_library", "//pkg/util/net/sets:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", "//vendor/github.com/stretchr/testify/require:go_default_library", "//vendor/golang.org/x/oauth2/google:go_default_library", @@ -123,12 +129,6 @@ go_test( "//vendor/google.golang.org/api/compute/v0.beta:go_default_library", "//vendor/google.golang.org/api/compute/v1:go_default_library", "//vendor/google.golang.org/api/googleapi:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/BUILD index b4c51d476e..04cd70a811 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/BUILD @@ -6,6 +6,7 @@ go_library( "constants.go", "context.go", "doc.go", + "errors.go", "gce_projects.go", "gen.go", "op.go", @@ -32,6 +33,8 @@ go_test( srcs = [ "gen_test.go", "mock_test.go", + "ratelimit_test.go", + "service_test.go", "utils_test.go", ], embed = [":go_default_library"], diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/errors.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/errors.go new file mode 100644 index 0000000000..1896a6d9e0 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/errors.go @@ -0,0 +1,48 @@ +/* +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 cloud + +import "fmt" + +// OperationPollingError occurs when the GCE Operation cannot be retrieved for a prolonged period. +type OperationPollingError struct { + LastPollError error +} + +// Error returns a string representation including the last poll error encountered. +func (e *OperationPollingError) Error() string { + return fmt.Sprintf("GCE operation polling error: %v", e.LastPollError) +} + +// GCEOperationError occurs when the GCE Operation finishes with an error. +type GCEOperationError struct { + // HTTPStatusCode is the HTTP status code of the final error. + // For example, a failed operation may have 400 - BadRequest. + HTTPStatusCode int + // Code is GCE's code of what went wrong. + // For example, RESOURCE_IN_USE_BY_ANOTHER_RESOURCE + Code string + // Message is a human readable message. + // For example, "The network resource 'xxx' is already being used by 'xxx'" + Message string +} + +// Error returns a string representation including the HTTP Status code, GCE's error code +// and a human readable message. +func (e *GCEOperationError) Error() string { + return fmt.Sprintf("GCE %v - %v: %v", e.HTTPStatusCode, e.Code, e.Message) +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/gen.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/gen.go index 2b6e24583d..a25cac9909 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/gen.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/gen.go @@ -54,6 +54,7 @@ type Cloud interface { AlphaForwardingRules() AlphaForwardingRules GlobalForwardingRules() GlobalForwardingRules HealthChecks() HealthChecks + BetaHealthChecks() BetaHealthChecks AlphaHealthChecks() AlphaHealthChecks HttpHealthChecks() HttpHealthChecks HttpsHealthChecks() HttpsHealthChecks @@ -62,6 +63,7 @@ type Cloud interface { BetaInstances() BetaInstances AlphaInstances() AlphaInstances AlphaNetworkEndpointGroups() AlphaNetworkEndpointGroups + BetaNetworkEndpointGroups() BetaNetworkEndpointGroups Projects() Projects Regions() Regions Routes() Routes @@ -93,6 +95,7 @@ func NewGCE(s *Service) *GCE { gceAlphaForwardingRules: &GCEAlphaForwardingRules{s}, gceGlobalForwardingRules: &GCEGlobalForwardingRules{s}, gceHealthChecks: &GCEHealthChecks{s}, + gceBetaHealthChecks: &GCEBetaHealthChecks{s}, gceAlphaHealthChecks: &GCEAlphaHealthChecks{s}, gceHttpHealthChecks: &GCEHttpHealthChecks{s}, gceHttpsHealthChecks: &GCEHttpsHealthChecks{s}, @@ -101,6 +104,7 @@ func NewGCE(s *Service) *GCE { gceBetaInstances: &GCEBetaInstances{s}, gceAlphaInstances: &GCEAlphaInstances{s}, gceAlphaNetworkEndpointGroups: &GCEAlphaNetworkEndpointGroups{s}, + gceBetaNetworkEndpointGroups: &GCEBetaNetworkEndpointGroups{s}, gceProjects: &GCEProjects{s}, gceRegions: &GCERegions{s}, gceRoutes: &GCERoutes{s}, @@ -136,6 +140,7 @@ type GCE struct { gceAlphaForwardingRules *GCEAlphaForwardingRules gceGlobalForwardingRules *GCEGlobalForwardingRules gceHealthChecks *GCEHealthChecks + gceBetaHealthChecks *GCEBetaHealthChecks gceAlphaHealthChecks *GCEAlphaHealthChecks gceHttpHealthChecks *GCEHttpHealthChecks gceHttpsHealthChecks *GCEHttpsHealthChecks @@ -144,6 +149,7 @@ type GCE struct { gceBetaInstances *GCEBetaInstances gceAlphaInstances *GCEAlphaInstances gceAlphaNetworkEndpointGroups *GCEAlphaNetworkEndpointGroups + gceBetaNetworkEndpointGroups *GCEBetaNetworkEndpointGroups gceProjects *GCEProjects gceRegions *GCERegions gceRoutes *GCERoutes @@ -236,6 +242,11 @@ func (gce *GCE) HealthChecks() HealthChecks { return gce.gceHealthChecks } +// BetaHealthChecks returns the interface for the beta HealthChecks. +func (gce *GCE) BetaHealthChecks() BetaHealthChecks { + return gce.gceBetaHealthChecks +} + // AlphaHealthChecks returns the interface for the alpha HealthChecks. func (gce *GCE) AlphaHealthChecks() AlphaHealthChecks { return gce.gceAlphaHealthChecks @@ -276,6 +287,11 @@ func (gce *GCE) AlphaNetworkEndpointGroups() AlphaNetworkEndpointGroups { return gce.gceAlphaNetworkEndpointGroups } +// BetaNetworkEndpointGroups returns the interface for the beta NetworkEndpointGroups. +func (gce *GCE) BetaNetworkEndpointGroups() BetaNetworkEndpointGroups { + return gce.gceBetaNetworkEndpointGroups +} + // Projects returns the interface for the ga Projects. func (gce *GCE) Projects() Projects { return gce.gceProjects @@ -371,6 +387,7 @@ func NewMockGCE(projectRouter ProjectRouter) *MockGCE { MockAlphaForwardingRules: NewMockAlphaForwardingRules(projectRouter, mockForwardingRulesObjs), MockGlobalForwardingRules: NewMockGlobalForwardingRules(projectRouter, mockGlobalForwardingRulesObjs), MockHealthChecks: NewMockHealthChecks(projectRouter, mockHealthChecksObjs), + MockBetaHealthChecks: NewMockBetaHealthChecks(projectRouter, mockHealthChecksObjs), MockAlphaHealthChecks: NewMockAlphaHealthChecks(projectRouter, mockHealthChecksObjs), MockHttpHealthChecks: NewMockHttpHealthChecks(projectRouter, mockHttpHealthChecksObjs), MockHttpsHealthChecks: NewMockHttpsHealthChecks(projectRouter, mockHttpsHealthChecksObjs), @@ -379,6 +396,7 @@ func NewMockGCE(projectRouter ProjectRouter) *MockGCE { MockBetaInstances: NewMockBetaInstances(projectRouter, mockInstancesObjs), MockAlphaInstances: NewMockAlphaInstances(projectRouter, mockInstancesObjs), MockAlphaNetworkEndpointGroups: NewMockAlphaNetworkEndpointGroups(projectRouter, mockNetworkEndpointGroupsObjs), + MockBetaNetworkEndpointGroups: NewMockBetaNetworkEndpointGroups(projectRouter, mockNetworkEndpointGroupsObjs), MockProjects: NewMockProjects(projectRouter, mockProjectsObjs), MockRegions: NewMockRegions(projectRouter, mockRegionsObjs), MockRoutes: NewMockRoutes(projectRouter, mockRoutesObjs), @@ -414,6 +432,7 @@ type MockGCE struct { MockAlphaForwardingRules *MockAlphaForwardingRules MockGlobalForwardingRules *MockGlobalForwardingRules MockHealthChecks *MockHealthChecks + MockBetaHealthChecks *MockBetaHealthChecks MockAlphaHealthChecks *MockAlphaHealthChecks MockHttpHealthChecks *MockHttpHealthChecks MockHttpsHealthChecks *MockHttpsHealthChecks @@ -422,6 +441,7 @@ type MockGCE struct { MockBetaInstances *MockBetaInstances MockAlphaInstances *MockAlphaInstances MockAlphaNetworkEndpointGroups *MockAlphaNetworkEndpointGroups + MockBetaNetworkEndpointGroups *MockBetaNetworkEndpointGroups MockProjects *MockProjects MockRegions *MockRegions MockRoutes *MockRoutes @@ -514,6 +534,11 @@ func (mock *MockGCE) HealthChecks() HealthChecks { return mock.MockHealthChecks } +// BetaHealthChecks returns the interface for the beta HealthChecks. +func (mock *MockGCE) BetaHealthChecks() BetaHealthChecks { + return mock.MockBetaHealthChecks +} + // AlphaHealthChecks returns the interface for the alpha HealthChecks. func (mock *MockGCE) AlphaHealthChecks() AlphaHealthChecks { return mock.MockAlphaHealthChecks @@ -554,6 +579,11 @@ func (mock *MockGCE) AlphaNetworkEndpointGroups() AlphaNetworkEndpointGroups { return mock.MockAlphaNetworkEndpointGroups } +// BetaNetworkEndpointGroups returns the interface for the beta NetworkEndpointGroups. +func (mock *MockGCE) BetaNetworkEndpointGroups() BetaNetworkEndpointGroups { + return mock.MockBetaNetworkEndpointGroups +} + // Projects returns the interface for the ga Projects. func (mock *MockGCE) Projects() Projects { return mock.MockProjects @@ -829,6 +859,19 @@ func (m *MockHealthChecksObj) ToAlpha() *alpha.HealthCheck { return ret } +// ToBeta retrieves the given version of the object. +func (m *MockHealthChecksObj) ToBeta() *beta.HealthCheck { + if ret, ok := m.Obj.(*beta.HealthCheck); ok { + return ret + } + // Convert the object via JSON copying to the type that was requested. + ret := &beta.HealthCheck{} + if err := copyViaJSON(ret, m.Obj); err != nil { + glog.Errorf("Could not convert %T to *beta.HealthCheck via JSON: %v", m.Obj, err) + } + return ret +} + // ToGA retrieves the given version of the object. func (m *MockHealthChecksObj) ToGA() *ga.HealthCheck { if ret, ok := m.Obj.(*ga.HealthCheck); ok { @@ -968,6 +1011,19 @@ func (m *MockNetworkEndpointGroupsObj) ToAlpha() *alpha.NetworkEndpointGroup { return ret } +// ToBeta retrieves the given version of the object. +func (m *MockNetworkEndpointGroupsObj) ToBeta() *beta.NetworkEndpointGroup { + if ret, ok := m.Obj.(*beta.NetworkEndpointGroup); ok { + return ret + } + // Convert the object via JSON copying to the type that was requested. + ret := &beta.NetworkEndpointGroup{} + if err := copyViaJSON(ret, m.Obj); err != nil { + glog.Errorf("Could not convert %T to *beta.NetworkEndpointGroup via JSON: %v", m.Obj, err) + } + return ret +} + // MockProjectsObj is used to store the various object versions in the shared // map of mocked objects. This allows for multiple API versions to co-exist and // share the same "view" of the objects in the backend. @@ -3018,6 +3074,7 @@ type BetaBackendServices interface { Insert(ctx context.Context, key *meta.Key, obj *beta.BackendService) error Delete(ctx context.Context, key *meta.Key) error SetSecurityPolicy(context.Context, *meta.Key, *beta.SecurityPolicyReference) error + Update(context.Context, *meta.Key, *beta.BackendService) error } // NewMockBetaBackendServices returns a new mock for BackendServices. @@ -3058,6 +3115,7 @@ type MockBetaBackendServices struct { InsertHook func(ctx context.Context, key *meta.Key, obj *beta.BackendService, m *MockBetaBackendServices) (bool, error) DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaBackendServices) (bool, error) SetSecurityPolicyHook func(context.Context, *meta.Key, *beta.SecurityPolicyReference, *MockBetaBackendServices) error + UpdateHook func(context.Context, *meta.Key, *beta.BackendService, *MockBetaBackendServices) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. @@ -3211,6 +3269,14 @@ func (m *MockBetaBackendServices) SetSecurityPolicy(ctx context.Context, key *me return nil } +// Update is a mock for the corresponding method. +func (m *MockBetaBackendServices) Update(ctx context.Context, key *meta.Key, arg0 *beta.BackendService) error { + if m.UpdateHook != nil { + return m.UpdateHook(ctx, key, arg0, m) + } + return nil +} + // GCEBetaBackendServices is a simplifying adapter for the GCE BackendServices. type GCEBetaBackendServices struct { s *Service @@ -3386,6 +3452,39 @@ func (g *GCEBetaBackendServices) SetSecurityPolicy(ctx context.Context, key *met return err } +// Update is a method on GCEBetaBackendServices. +func (g *GCEBetaBackendServices) Update(ctx context.Context, key *meta.Key, arg0 *beta.BackendService) error { + glog.V(5).Infof("GCEBetaBackendServices.Update(%v, %v, ...): called", ctx, key) + + if !key.Valid() { + glog.V(2).Infof("GCEBetaBackendServices.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key) + return fmt.Errorf("invalid GCE key (%+v)", key) + } + projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "BackendServices") + rk := &RateLimitKey{ + ProjectID: projectID, + Operation: "Update", + Version: meta.Version("beta"), + Service: "BackendServices", + } + glog.V(5).Infof("GCEBetaBackendServices.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) + + if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { + glog.V(4).Infof("GCEBetaBackendServices.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err) + return err + } + call := g.s.Beta.BackendServices.Update(projectID, key.Name, arg0) + call.Context(ctx) + op, err := call.Do() + if err != nil { + glog.V(4).Infof("GCEBetaBackendServices.Update(%v, %v, ...) = %+v", ctx, key, err) + return err + } + err = g.s.WaitForCompletion(ctx, op) + glog.V(4).Infof("GCEBetaBackendServices.Update(%v, %v, ...) = %+v", ctx, key, err) + return err +} + // AlphaBackendServices is an interface that allows for mocking of BackendServices. type AlphaBackendServices interface { Get(ctx context.Context, key *meta.Key) (*alpha.BackendService, error) @@ -7181,6 +7280,381 @@ func (g *GCEHealthChecks) Update(ctx context.Context, key *meta.Key, arg0 *ga.He return err } +// BetaHealthChecks is an interface that allows for mocking of HealthChecks. +type BetaHealthChecks interface { + Get(ctx context.Context, key *meta.Key) (*beta.HealthCheck, error) + List(ctx context.Context, fl *filter.F) ([]*beta.HealthCheck, error) + Insert(ctx context.Context, key *meta.Key, obj *beta.HealthCheck) error + Delete(ctx context.Context, key *meta.Key) error + Update(context.Context, *meta.Key, *beta.HealthCheck) error +} + +// NewMockBetaHealthChecks returns a new mock for HealthChecks. +func NewMockBetaHealthChecks(pr ProjectRouter, objs map[meta.Key]*MockHealthChecksObj) *MockBetaHealthChecks { + mock := &MockBetaHealthChecks{ + ProjectRouter: pr, + + Objects: objs, + GetError: map[meta.Key]error{}, + InsertError: map[meta.Key]error{}, + DeleteError: map[meta.Key]error{}, + } + return mock +} + +// MockBetaHealthChecks is the mock for HealthChecks. +type MockBetaHealthChecks struct { + Lock sync.Mutex + + ProjectRouter ProjectRouter + + // Objects maintained by the mock. + Objects map[meta.Key]*MockHealthChecksObj + + // If an entry exists for the given key and operation, then the error + // will be returned instead of the operation. + GetError map[meta.Key]error + ListError *error + InsertError map[meta.Key]error + DeleteError map[meta.Key]error + + // xxxHook allow you to intercept the standard processing of the mock in + // order to add your own logic. Return (true, _, _) to prevent the normal + // execution flow of the mock. Return (false, nil, nil) to continue with + // normal mock behavior/ after the hook function executes. + GetHook func(ctx context.Context, key *meta.Key, m *MockBetaHealthChecks) (bool, *beta.HealthCheck, error) + ListHook func(ctx context.Context, fl *filter.F, m *MockBetaHealthChecks) (bool, []*beta.HealthCheck, error) + InsertHook func(ctx context.Context, key *meta.Key, obj *beta.HealthCheck, m *MockBetaHealthChecks) (bool, error) + DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaHealthChecks) (bool, error) + UpdateHook func(context.Context, *meta.Key, *beta.HealthCheck, *MockBetaHealthChecks) error + + // X is extra state that can be used as part of the mock. Generated code + // will not use this field. + X interface{} +} + +// Get returns the object from the mock. +func (m *MockBetaHealthChecks) Get(ctx context.Context, key *meta.Key) (*beta.HealthCheck, error) { + if m.GetHook != nil { + if intercept, obj, err := m.GetHook(ctx, key, m); intercept { + glog.V(5).Infof("MockBetaHealthChecks.Get(%v, %s) = %+v, %v", ctx, key, obj, err) + return obj, err + } + } + if !key.Valid() { + return nil, fmt.Errorf("invalid GCE key (%+v)", key) + } + + m.Lock.Lock() + defer m.Lock.Unlock() + + if err, ok := m.GetError[*key]; ok { + glog.V(5).Infof("MockBetaHealthChecks.Get(%v, %s) = nil, %v", ctx, key, err) + return nil, err + } + if obj, ok := m.Objects[*key]; ok { + typedObj := obj.ToBeta() + glog.V(5).Infof("MockBetaHealthChecks.Get(%v, %s) = %+v, nil", ctx, key, typedObj) + return typedObj, nil + } + + err := &googleapi.Error{ + Code: http.StatusNotFound, + Message: fmt.Sprintf("MockBetaHealthChecks %v not found", key), + } + glog.V(5).Infof("MockBetaHealthChecks.Get(%v, %s) = nil, %v", ctx, key, err) + return nil, err +} + +// List all of the objects in the mock. +func (m *MockBetaHealthChecks) List(ctx context.Context, fl *filter.F) ([]*beta.HealthCheck, error) { + if m.ListHook != nil { + if intercept, objs, err := m.ListHook(ctx, fl, m); intercept { + glog.V(5).Infof("MockBetaHealthChecks.List(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) + return objs, err + } + } + + m.Lock.Lock() + defer m.Lock.Unlock() + + if m.ListError != nil { + err := *m.ListError + glog.V(5).Infof("MockBetaHealthChecks.List(%v, %v) = nil, %v", ctx, fl, err) + + return nil, *m.ListError + } + + var objs []*beta.HealthCheck + for _, obj := range m.Objects { + if !fl.Match(obj.ToBeta()) { + continue + } + objs = append(objs, obj.ToBeta()) + } + + glog.V(5).Infof("MockBetaHealthChecks.List(%v, %v) = [%v items], nil", ctx, fl, len(objs)) + return objs, nil +} + +// Insert is a mock for inserting/creating a new object. +func (m *MockBetaHealthChecks) Insert(ctx context.Context, key *meta.Key, obj *beta.HealthCheck) error { + if m.InsertHook != nil { + if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { + glog.V(5).Infof("MockBetaHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) + return err + } + } + if !key.Valid() { + return fmt.Errorf("invalid GCE key (%+v)", key) + } + + m.Lock.Lock() + defer m.Lock.Unlock() + + if err, ok := m.InsertError[*key]; ok { + glog.V(5).Infof("MockBetaHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) + return err + } + if _, ok := m.Objects[*key]; ok { + err := &googleapi.Error{ + Code: http.StatusConflict, + Message: fmt.Sprintf("MockBetaHealthChecks %v exists", key), + } + glog.V(5).Infof("MockBetaHealthChecks.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) + return err + } + + obj.Name = key.Name + projectID := m.ProjectRouter.ProjectID(ctx, "beta", "healthChecks") + obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "healthChecks", key) + + m.Objects[*key] = &MockHealthChecksObj{obj} + glog.V(5).Infof("MockBetaHealthChecks.Insert(%v, %v, %+v) = nil", ctx, key, obj) + return nil +} + +// Delete is a mock for deleting the object. +func (m *MockBetaHealthChecks) Delete(ctx context.Context, key *meta.Key) error { + if m.DeleteHook != nil { + if intercept, err := m.DeleteHook(ctx, key, m); intercept { + glog.V(5).Infof("MockBetaHealthChecks.Delete(%v, %v) = %v", ctx, key, err) + return err + } + } + if !key.Valid() { + return fmt.Errorf("invalid GCE key (%+v)", key) + } + + m.Lock.Lock() + defer m.Lock.Unlock() + + if err, ok := m.DeleteError[*key]; ok { + glog.V(5).Infof("MockBetaHealthChecks.Delete(%v, %v) = %v", ctx, key, err) + return err + } + if _, ok := m.Objects[*key]; !ok { + err := &googleapi.Error{ + Code: http.StatusNotFound, + Message: fmt.Sprintf("MockBetaHealthChecks %v not found", key), + } + glog.V(5).Infof("MockBetaHealthChecks.Delete(%v, %v) = %v", ctx, key, err) + return err + } + + delete(m.Objects, *key) + glog.V(5).Infof("MockBetaHealthChecks.Delete(%v, %v) = nil", ctx, key) + return nil +} + +// Obj wraps the object for use in the mock. +func (m *MockBetaHealthChecks) Obj(o *beta.HealthCheck) *MockHealthChecksObj { + return &MockHealthChecksObj{o} +} + +// Update is a mock for the corresponding method. +func (m *MockBetaHealthChecks) Update(ctx context.Context, key *meta.Key, arg0 *beta.HealthCheck) error { + if m.UpdateHook != nil { + return m.UpdateHook(ctx, key, arg0, m) + } + return nil +} + +// GCEBetaHealthChecks is a simplifying adapter for the GCE HealthChecks. +type GCEBetaHealthChecks struct { + s *Service +} + +// Get the HealthCheck named by key. +func (g *GCEBetaHealthChecks) Get(ctx context.Context, key *meta.Key) (*beta.HealthCheck, error) { + glog.V(5).Infof("GCEBetaHealthChecks.Get(%v, %v): called", ctx, key) + + if !key.Valid() { + glog.V(2).Infof("GCEBetaHealthChecks.Get(%v, %v): key is invalid (%#v)", ctx, key, key) + return nil, fmt.Errorf("invalid GCE key (%#v)", key) + } + projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "HealthChecks") + rk := &RateLimitKey{ + ProjectID: projectID, + Operation: "Get", + Version: meta.Version("beta"), + Service: "HealthChecks", + } + glog.V(5).Infof("GCEBetaHealthChecks.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) + if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { + glog.V(4).Infof("GCEBetaHealthChecks.Get(%v, %v): RateLimiter error: %v", ctx, key, err) + return nil, err + } + call := g.s.Beta.HealthChecks.Get(projectID, key.Name) + call.Context(ctx) + v, err := call.Do() + glog.V(4).Infof("GCEBetaHealthChecks.Get(%v, %v) = %+v, %v", ctx, key, v, err) + return v, err +} + +// List all HealthCheck objects. +func (g *GCEBetaHealthChecks) List(ctx context.Context, fl *filter.F) ([]*beta.HealthCheck, error) { + glog.V(5).Infof("GCEBetaHealthChecks.List(%v, %v) called", ctx, fl) + projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "HealthChecks") + rk := &RateLimitKey{ + ProjectID: projectID, + Operation: "List", + Version: meta.Version("beta"), + Service: "HealthChecks", + } + if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { + return nil, err + } + glog.V(5).Infof("GCEBetaHealthChecks.List(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) + call := g.s.Beta.HealthChecks.List(projectID) + if fl != filter.None { + call.Filter(fl.String()) + } + var all []*beta.HealthCheck + f := func(l *beta.HealthCheckList) error { + glog.V(5).Infof("GCEBetaHealthChecks.List(%v, ..., %v): page %+v", ctx, fl, l) + all = append(all, l.Items...) + return nil + } + if err := call.Pages(ctx, f); err != nil { + glog.V(4).Infof("GCEBetaHealthChecks.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) + return nil, err + } + + if glog.V(4) { + glog.V(4).Infof("GCEBetaHealthChecks.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) + } else if glog.V(5) { + var asStr []string + for _, o := range all { + asStr = append(asStr, fmt.Sprintf("%+v", o)) + } + glog.V(5).Infof("GCEBetaHealthChecks.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) + } + + return all, nil +} + +// Insert HealthCheck with key of value obj. +func (g *GCEBetaHealthChecks) Insert(ctx context.Context, key *meta.Key, obj *beta.HealthCheck) error { + glog.V(5).Infof("GCEBetaHealthChecks.Insert(%v, %v, %+v): called", ctx, key, obj) + if !key.Valid() { + glog.V(2).Infof("GCEBetaHealthChecks.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) + return fmt.Errorf("invalid GCE key (%+v)", key) + } + projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "HealthChecks") + rk := &RateLimitKey{ + ProjectID: projectID, + Operation: "Insert", + Version: meta.Version("beta"), + Service: "HealthChecks", + } + glog.V(5).Infof("GCEBetaHealthChecks.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) + if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { + glog.V(4).Infof("GCEBetaHealthChecks.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) + return err + } + obj.Name = key.Name + call := g.s.Beta.HealthChecks.Insert(projectID, obj) + call.Context(ctx) + + op, err := call.Do() + if err != nil { + glog.V(4).Infof("GCEBetaHealthChecks.Insert(%v, %v, ...) = %+v", ctx, key, err) + return err + } + + err = g.s.WaitForCompletion(ctx, op) + glog.V(4).Infof("GCEBetaHealthChecks.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) + return err +} + +// Delete the HealthCheck referenced by key. +func (g *GCEBetaHealthChecks) Delete(ctx context.Context, key *meta.Key) error { + glog.V(5).Infof("GCEBetaHealthChecks.Delete(%v, %v): called", ctx, key) + if !key.Valid() { + glog.V(2).Infof("GCEBetaHealthChecks.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) + return fmt.Errorf("invalid GCE key (%+v)", key) + } + projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "HealthChecks") + rk := &RateLimitKey{ + ProjectID: projectID, + Operation: "Delete", + Version: meta.Version("beta"), + Service: "HealthChecks", + } + glog.V(5).Infof("GCEBetaHealthChecks.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) + if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { + glog.V(4).Infof("GCEBetaHealthChecks.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) + return err + } + call := g.s.Beta.HealthChecks.Delete(projectID, key.Name) + + call.Context(ctx) + + op, err := call.Do() + if err != nil { + glog.V(4).Infof("GCEBetaHealthChecks.Delete(%v, %v) = %v", ctx, key, err) + return err + } + + err = g.s.WaitForCompletion(ctx, op) + glog.V(4).Infof("GCEBetaHealthChecks.Delete(%v, %v) = %v", ctx, key, err) + return err +} + +// Update is a method on GCEBetaHealthChecks. +func (g *GCEBetaHealthChecks) Update(ctx context.Context, key *meta.Key, arg0 *beta.HealthCheck) error { + glog.V(5).Infof("GCEBetaHealthChecks.Update(%v, %v, ...): called", ctx, key) + + if !key.Valid() { + glog.V(2).Infof("GCEBetaHealthChecks.Update(%v, %v, ...): key is invalid (%#v)", ctx, key, key) + return fmt.Errorf("invalid GCE key (%+v)", key) + } + projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "HealthChecks") + rk := &RateLimitKey{ + ProjectID: projectID, + Operation: "Update", + Version: meta.Version("beta"), + Service: "HealthChecks", + } + glog.V(5).Infof("GCEBetaHealthChecks.Update(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) + + if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { + glog.V(4).Infof("GCEBetaHealthChecks.Update(%v, %v, ...): RateLimiter error: %v", ctx, key, err) + return err + } + call := g.s.Beta.HealthChecks.Update(projectID, key.Name, arg0) + call.Context(ctx) + op, err := call.Do() + if err != nil { + glog.V(4).Infof("GCEBetaHealthChecks.Update(%v, %v, ...) = %+v", ctx, key, err) + return err + } + err = g.s.WaitForCompletion(ctx, op) + glog.V(4).Infof("GCEBetaHealthChecks.Update(%v, %v, ...) = %+v", ctx, key, err) + return err +} + // AlphaHealthChecks is an interface that allows for mocking of HealthChecks. type AlphaHealthChecks interface { Get(ctx context.Context, key *meta.Key) (*alpha.HealthCheck, error) @@ -10729,6 +11203,566 @@ func (g *GCEAlphaNetworkEndpointGroups) ListNetworkEndpoints(ctx context.Context return all, nil } +// BetaNetworkEndpointGroups is an interface that allows for mocking of NetworkEndpointGroups. +type BetaNetworkEndpointGroups interface { + Get(ctx context.Context, key *meta.Key) (*beta.NetworkEndpointGroup, error) + List(ctx context.Context, zone string, fl *filter.F) ([]*beta.NetworkEndpointGroup, error) + Insert(ctx context.Context, key *meta.Key, obj *beta.NetworkEndpointGroup) error + Delete(ctx context.Context, key *meta.Key) error + AggregatedList(ctx context.Context, fl *filter.F) (map[string][]*beta.NetworkEndpointGroup, error) + AttachNetworkEndpoints(context.Context, *meta.Key, *beta.NetworkEndpointGroupsAttachEndpointsRequest) error + DetachNetworkEndpoints(context.Context, *meta.Key, *beta.NetworkEndpointGroupsDetachEndpointsRequest) error + ListNetworkEndpoints(context.Context, *meta.Key, *beta.NetworkEndpointGroupsListEndpointsRequest, *filter.F) ([]*beta.NetworkEndpointWithHealthStatus, error) +} + +// NewMockBetaNetworkEndpointGroups returns a new mock for NetworkEndpointGroups. +func NewMockBetaNetworkEndpointGroups(pr ProjectRouter, objs map[meta.Key]*MockNetworkEndpointGroupsObj) *MockBetaNetworkEndpointGroups { + mock := &MockBetaNetworkEndpointGroups{ + ProjectRouter: pr, + + Objects: objs, + GetError: map[meta.Key]error{}, + InsertError: map[meta.Key]error{}, + DeleteError: map[meta.Key]error{}, + } + return mock +} + +// MockBetaNetworkEndpointGroups is the mock for NetworkEndpointGroups. +type MockBetaNetworkEndpointGroups struct { + Lock sync.Mutex + + ProjectRouter ProjectRouter + + // Objects maintained by the mock. + Objects map[meta.Key]*MockNetworkEndpointGroupsObj + + // If an entry exists for the given key and operation, then the error + // will be returned instead of the operation. + GetError map[meta.Key]error + ListError *error + InsertError map[meta.Key]error + DeleteError map[meta.Key]error + AggregatedListError *error + + // xxxHook allow you to intercept the standard processing of the mock in + // order to add your own logic. Return (true, _, _) to prevent the normal + // execution flow of the mock. Return (false, nil, nil) to continue with + // normal mock behavior/ after the hook function executes. + GetHook func(ctx context.Context, key *meta.Key, m *MockBetaNetworkEndpointGroups) (bool, *beta.NetworkEndpointGroup, error) + ListHook func(ctx context.Context, zone string, fl *filter.F, m *MockBetaNetworkEndpointGroups) (bool, []*beta.NetworkEndpointGroup, error) + InsertHook func(ctx context.Context, key *meta.Key, obj *beta.NetworkEndpointGroup, m *MockBetaNetworkEndpointGroups) (bool, error) + DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaNetworkEndpointGroups) (bool, error) + AggregatedListHook func(ctx context.Context, fl *filter.F, m *MockBetaNetworkEndpointGroups) (bool, map[string][]*beta.NetworkEndpointGroup, error) + AttachNetworkEndpointsHook func(context.Context, *meta.Key, *beta.NetworkEndpointGroupsAttachEndpointsRequest, *MockBetaNetworkEndpointGroups) error + DetachNetworkEndpointsHook func(context.Context, *meta.Key, *beta.NetworkEndpointGroupsDetachEndpointsRequest, *MockBetaNetworkEndpointGroups) error + ListNetworkEndpointsHook func(context.Context, *meta.Key, *beta.NetworkEndpointGroupsListEndpointsRequest, *filter.F, *MockBetaNetworkEndpointGroups) ([]*beta.NetworkEndpointWithHealthStatus, error) + + // X is extra state that can be used as part of the mock. Generated code + // will not use this field. + X interface{} +} + +// Get returns the object from the mock. +func (m *MockBetaNetworkEndpointGroups) Get(ctx context.Context, key *meta.Key) (*beta.NetworkEndpointGroup, error) { + if m.GetHook != nil { + if intercept, obj, err := m.GetHook(ctx, key, m); intercept { + glog.V(5).Infof("MockBetaNetworkEndpointGroups.Get(%v, %s) = %+v, %v", ctx, key, obj, err) + return obj, err + } + } + if !key.Valid() { + return nil, fmt.Errorf("invalid GCE key (%+v)", key) + } + + m.Lock.Lock() + defer m.Lock.Unlock() + + if err, ok := m.GetError[*key]; ok { + glog.V(5).Infof("MockBetaNetworkEndpointGroups.Get(%v, %s) = nil, %v", ctx, key, err) + return nil, err + } + if obj, ok := m.Objects[*key]; ok { + typedObj := obj.ToBeta() + glog.V(5).Infof("MockBetaNetworkEndpointGroups.Get(%v, %s) = %+v, nil", ctx, key, typedObj) + return typedObj, nil + } + + err := &googleapi.Error{ + Code: http.StatusNotFound, + Message: fmt.Sprintf("MockBetaNetworkEndpointGroups %v not found", key), + } + glog.V(5).Infof("MockBetaNetworkEndpointGroups.Get(%v, %s) = nil, %v", ctx, key, err) + return nil, err +} + +// List all of the objects in the mock in the given zone. +func (m *MockBetaNetworkEndpointGroups) List(ctx context.Context, zone string, fl *filter.F) ([]*beta.NetworkEndpointGroup, error) { + if m.ListHook != nil { + if intercept, objs, err := m.ListHook(ctx, zone, fl, m); intercept { + glog.V(5).Infof("MockBetaNetworkEndpointGroups.List(%v, %q, %v) = [%v items], %v", ctx, zone, fl, len(objs), err) + return objs, err + } + } + + m.Lock.Lock() + defer m.Lock.Unlock() + + if m.ListError != nil { + err := *m.ListError + glog.V(5).Infof("MockBetaNetworkEndpointGroups.List(%v, %q, %v) = nil, %v", ctx, zone, fl, err) + + return nil, *m.ListError + } + + var objs []*beta.NetworkEndpointGroup + for key, obj := range m.Objects { + if key.Zone != zone { + continue + } + if !fl.Match(obj.ToBeta()) { + continue + } + objs = append(objs, obj.ToBeta()) + } + + glog.V(5).Infof("MockBetaNetworkEndpointGroups.List(%v, %q, %v) = [%v items], nil", ctx, zone, fl, len(objs)) + return objs, nil +} + +// Insert is a mock for inserting/creating a new object. +func (m *MockBetaNetworkEndpointGroups) Insert(ctx context.Context, key *meta.Key, obj *beta.NetworkEndpointGroup) error { + if m.InsertHook != nil { + if intercept, err := m.InsertHook(ctx, key, obj, m); intercept { + glog.V(5).Infof("MockBetaNetworkEndpointGroups.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) + return err + } + } + if !key.Valid() { + return fmt.Errorf("invalid GCE key (%+v)", key) + } + + m.Lock.Lock() + defer m.Lock.Unlock() + + if err, ok := m.InsertError[*key]; ok { + glog.V(5).Infof("MockBetaNetworkEndpointGroups.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) + return err + } + if _, ok := m.Objects[*key]; ok { + err := &googleapi.Error{ + Code: http.StatusConflict, + Message: fmt.Sprintf("MockBetaNetworkEndpointGroups %v exists", key), + } + glog.V(5).Infof("MockBetaNetworkEndpointGroups.Insert(%v, %v, %+v) = %v", ctx, key, obj, err) + return err + } + + obj.Name = key.Name + projectID := m.ProjectRouter.ProjectID(ctx, "beta", "networkEndpointGroups") + obj.SelfLink = SelfLink(meta.VersionBeta, projectID, "networkEndpointGroups", key) + + m.Objects[*key] = &MockNetworkEndpointGroupsObj{obj} + glog.V(5).Infof("MockBetaNetworkEndpointGroups.Insert(%v, %v, %+v) = nil", ctx, key, obj) + return nil +} + +// Delete is a mock for deleting the object. +func (m *MockBetaNetworkEndpointGroups) Delete(ctx context.Context, key *meta.Key) error { + if m.DeleteHook != nil { + if intercept, err := m.DeleteHook(ctx, key, m); intercept { + glog.V(5).Infof("MockBetaNetworkEndpointGroups.Delete(%v, %v) = %v", ctx, key, err) + return err + } + } + if !key.Valid() { + return fmt.Errorf("invalid GCE key (%+v)", key) + } + + m.Lock.Lock() + defer m.Lock.Unlock() + + if err, ok := m.DeleteError[*key]; ok { + glog.V(5).Infof("MockBetaNetworkEndpointGroups.Delete(%v, %v) = %v", ctx, key, err) + return err + } + if _, ok := m.Objects[*key]; !ok { + err := &googleapi.Error{ + Code: http.StatusNotFound, + Message: fmt.Sprintf("MockBetaNetworkEndpointGroups %v not found", key), + } + glog.V(5).Infof("MockBetaNetworkEndpointGroups.Delete(%v, %v) = %v", ctx, key, err) + return err + } + + delete(m.Objects, *key) + glog.V(5).Infof("MockBetaNetworkEndpointGroups.Delete(%v, %v) = nil", ctx, key) + return nil +} + +// AggregatedList is a mock for AggregatedList. +func (m *MockBetaNetworkEndpointGroups) AggregatedList(ctx context.Context, fl *filter.F) (map[string][]*beta.NetworkEndpointGroup, error) { + if m.AggregatedListHook != nil { + if intercept, objs, err := m.AggregatedListHook(ctx, fl, m); intercept { + glog.V(5).Infof("MockBetaNetworkEndpointGroups.AggregatedList(%v, %v) = [%v items], %v", ctx, fl, len(objs), err) + return objs, err + } + } + + m.Lock.Lock() + defer m.Lock.Unlock() + + if m.AggregatedListError != nil { + err := *m.AggregatedListError + glog.V(5).Infof("MockBetaNetworkEndpointGroups.AggregatedList(%v, %v) = nil, %v", ctx, fl, err) + return nil, err + } + + objs := map[string][]*beta.NetworkEndpointGroup{} + for _, obj := range m.Objects { + res, err := ParseResourceURL(obj.ToBeta().SelfLink) + location := res.Key.Zone + if err != nil { + glog.V(5).Infof("MockBetaNetworkEndpointGroups.AggregatedList(%v, %v) = nil, %v", ctx, fl, err) + return nil, err + } + if !fl.Match(obj.ToBeta()) { + continue + } + objs[location] = append(objs[location], obj.ToBeta()) + } + glog.V(5).Infof("MockBetaNetworkEndpointGroups.AggregatedList(%v, %v) = [%v items], nil", ctx, fl, len(objs)) + return objs, nil +} + +// Obj wraps the object for use in the mock. +func (m *MockBetaNetworkEndpointGroups) Obj(o *beta.NetworkEndpointGroup) *MockNetworkEndpointGroupsObj { + return &MockNetworkEndpointGroupsObj{o} +} + +// AttachNetworkEndpoints is a mock for the corresponding method. +func (m *MockBetaNetworkEndpointGroups) AttachNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *beta.NetworkEndpointGroupsAttachEndpointsRequest) error { + if m.AttachNetworkEndpointsHook != nil { + return m.AttachNetworkEndpointsHook(ctx, key, arg0, m) + } + return nil +} + +// DetachNetworkEndpoints is a mock for the corresponding method. +func (m *MockBetaNetworkEndpointGroups) DetachNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *beta.NetworkEndpointGroupsDetachEndpointsRequest) error { + if m.DetachNetworkEndpointsHook != nil { + return m.DetachNetworkEndpointsHook(ctx, key, arg0, m) + } + return nil +} + +// ListNetworkEndpoints is a mock for the corresponding method. +func (m *MockBetaNetworkEndpointGroups) ListNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *beta.NetworkEndpointGroupsListEndpointsRequest, fl *filter.F) ([]*beta.NetworkEndpointWithHealthStatus, error) { + if m.ListNetworkEndpointsHook != nil { + return m.ListNetworkEndpointsHook(ctx, key, arg0, fl, m) + } + return nil, nil +} + +// GCEBetaNetworkEndpointGroups is a simplifying adapter for the GCE NetworkEndpointGroups. +type GCEBetaNetworkEndpointGroups struct { + s *Service +} + +// Get the NetworkEndpointGroup named by key. +func (g *GCEBetaNetworkEndpointGroups) Get(ctx context.Context, key *meta.Key) (*beta.NetworkEndpointGroup, error) { + glog.V(5).Infof("GCEBetaNetworkEndpointGroups.Get(%v, %v): called", ctx, key) + + if !key.Valid() { + glog.V(2).Infof("GCEBetaNetworkEndpointGroups.Get(%v, %v): key is invalid (%#v)", ctx, key, key) + return nil, fmt.Errorf("invalid GCE key (%#v)", key) + } + projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "NetworkEndpointGroups") + rk := &RateLimitKey{ + ProjectID: projectID, + Operation: "Get", + Version: meta.Version("beta"), + Service: "NetworkEndpointGroups", + } + glog.V(5).Infof("GCEBetaNetworkEndpointGroups.Get(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) + if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { + glog.V(4).Infof("GCEBetaNetworkEndpointGroups.Get(%v, %v): RateLimiter error: %v", ctx, key, err) + return nil, err + } + call := g.s.Beta.NetworkEndpointGroups.Get(projectID, key.Zone, key.Name) + call.Context(ctx) + v, err := call.Do() + glog.V(4).Infof("GCEBetaNetworkEndpointGroups.Get(%v, %v) = %+v, %v", ctx, key, v, err) + return v, err +} + +// List all NetworkEndpointGroup objects. +func (g *GCEBetaNetworkEndpointGroups) List(ctx context.Context, zone string, fl *filter.F) ([]*beta.NetworkEndpointGroup, error) { + glog.V(5).Infof("GCEBetaNetworkEndpointGroups.List(%v, %v, %v) called", ctx, zone, fl) + projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "NetworkEndpointGroups") + rk := &RateLimitKey{ + ProjectID: projectID, + Operation: "List", + Version: meta.Version("beta"), + Service: "NetworkEndpointGroups", + } + if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { + return nil, err + } + glog.V(5).Infof("GCEBetaNetworkEndpointGroups.List(%v, %v, %v): projectID = %v, rk = %+v", ctx, zone, fl, projectID, rk) + call := g.s.Beta.NetworkEndpointGroups.List(projectID, zone) + if fl != filter.None { + call.Filter(fl.String()) + } + var all []*beta.NetworkEndpointGroup + f := func(l *beta.NetworkEndpointGroupList) error { + glog.V(5).Infof("GCEBetaNetworkEndpointGroups.List(%v, ..., %v): page %+v", ctx, fl, l) + all = append(all, l.Items...) + return nil + } + if err := call.Pages(ctx, f); err != nil { + glog.V(4).Infof("GCEBetaNetworkEndpointGroups.List(%v, ..., %v) = %v, %v", ctx, fl, nil, err) + return nil, err + } + + if glog.V(4) { + glog.V(4).Infof("GCEBetaNetworkEndpointGroups.List(%v, ..., %v) = [%v items], %v", ctx, fl, len(all), nil) + } else if glog.V(5) { + var asStr []string + for _, o := range all { + asStr = append(asStr, fmt.Sprintf("%+v", o)) + } + glog.V(5).Infof("GCEBetaNetworkEndpointGroups.List(%v, ..., %v) = %v, %v", ctx, fl, asStr, nil) + } + + return all, nil +} + +// Insert NetworkEndpointGroup with key of value obj. +func (g *GCEBetaNetworkEndpointGroups) Insert(ctx context.Context, key *meta.Key, obj *beta.NetworkEndpointGroup) error { + glog.V(5).Infof("GCEBetaNetworkEndpointGroups.Insert(%v, %v, %+v): called", ctx, key, obj) + if !key.Valid() { + glog.V(2).Infof("GCEBetaNetworkEndpointGroups.Insert(%v, %v, ...): key is invalid (%#v)", ctx, key, key) + return fmt.Errorf("invalid GCE key (%+v)", key) + } + projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "NetworkEndpointGroups") + rk := &RateLimitKey{ + ProjectID: projectID, + Operation: "Insert", + Version: meta.Version("beta"), + Service: "NetworkEndpointGroups", + } + glog.V(5).Infof("GCEBetaNetworkEndpointGroups.Insert(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) + if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { + glog.V(4).Infof("GCEBetaNetworkEndpointGroups.Insert(%v, %v, ...): RateLimiter error: %v", ctx, key, err) + return err + } + obj.Name = key.Name + call := g.s.Beta.NetworkEndpointGroups.Insert(projectID, key.Zone, obj) + call.Context(ctx) + + op, err := call.Do() + if err != nil { + glog.V(4).Infof("GCEBetaNetworkEndpointGroups.Insert(%v, %v, ...) = %+v", ctx, key, err) + return err + } + + err = g.s.WaitForCompletion(ctx, op) + glog.V(4).Infof("GCEBetaNetworkEndpointGroups.Insert(%v, %v, %+v) = %+v", ctx, key, obj, err) + return err +} + +// Delete the NetworkEndpointGroup referenced by key. +func (g *GCEBetaNetworkEndpointGroups) Delete(ctx context.Context, key *meta.Key) error { + glog.V(5).Infof("GCEBetaNetworkEndpointGroups.Delete(%v, %v): called", ctx, key) + if !key.Valid() { + glog.V(2).Infof("GCEBetaNetworkEndpointGroups.Delete(%v, %v): key is invalid (%#v)", ctx, key, key) + return fmt.Errorf("invalid GCE key (%+v)", key) + } + projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "NetworkEndpointGroups") + rk := &RateLimitKey{ + ProjectID: projectID, + Operation: "Delete", + Version: meta.Version("beta"), + Service: "NetworkEndpointGroups", + } + glog.V(5).Infof("GCEBetaNetworkEndpointGroups.Delete(%v, %v): projectID = %v, rk = %+v", ctx, key, projectID, rk) + if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { + glog.V(4).Infof("GCEBetaNetworkEndpointGroups.Delete(%v, %v): RateLimiter error: %v", ctx, key, err) + return err + } + call := g.s.Beta.NetworkEndpointGroups.Delete(projectID, key.Zone, key.Name) + call.Context(ctx) + + op, err := call.Do() + if err != nil { + glog.V(4).Infof("GCEBetaNetworkEndpointGroups.Delete(%v, %v) = %v", ctx, key, err) + return err + } + + err = g.s.WaitForCompletion(ctx, op) + glog.V(4).Infof("GCEBetaNetworkEndpointGroups.Delete(%v, %v) = %v", ctx, key, err) + return err +} + +// AggregatedList lists all resources of the given type across all locations. +func (g *GCEBetaNetworkEndpointGroups) AggregatedList(ctx context.Context, fl *filter.F) (map[string][]*beta.NetworkEndpointGroup, error) { + glog.V(5).Infof("GCEBetaNetworkEndpointGroups.AggregatedList(%v, %v) called", ctx, fl) + + projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "NetworkEndpointGroups") + rk := &RateLimitKey{ + ProjectID: projectID, + Operation: "AggregatedList", + Version: meta.Version("beta"), + Service: "NetworkEndpointGroups", + } + + glog.V(5).Infof("GCEBetaNetworkEndpointGroups.AggregatedList(%v, %v): projectID = %v, rk = %+v", ctx, fl, projectID, rk) + if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { + glog.V(5).Infof("GCEBetaNetworkEndpointGroups.AggregatedList(%v, %v): RateLimiter error: %v", ctx, fl, err) + return nil, err + } + + call := g.s.Beta.NetworkEndpointGroups.AggregatedList(projectID) + call.Context(ctx) + if fl != filter.None { + call.Filter(fl.String()) + } + + all := map[string][]*beta.NetworkEndpointGroup{} + f := func(l *beta.NetworkEndpointGroupAggregatedList) error { + for k, v := range l.Items { + glog.V(5).Infof("GCEBetaNetworkEndpointGroups.AggregatedList(%v, %v): page[%v]%+v", ctx, fl, k, v) + all[k] = append(all[k], v.NetworkEndpointGroups...) + } + return nil + } + if err := call.Pages(ctx, f); err != nil { + glog.V(4).Infof("GCEBetaNetworkEndpointGroups.AggregatedList(%v, %v) = %v, %v", ctx, fl, nil, err) + return nil, err + } + if glog.V(4) { + glog.V(4).Infof("GCEBetaNetworkEndpointGroups.AggregatedList(%v, %v) = [%v items], %v", ctx, fl, len(all), nil) + } else if glog.V(5) { + var asStr []string + for _, o := range all { + asStr = append(asStr, fmt.Sprintf("%+v", o)) + } + glog.V(5).Infof("GCEBetaNetworkEndpointGroups.AggregatedList(%v, %v) = %v, %v", ctx, fl, asStr, nil) + } + return all, nil +} + +// AttachNetworkEndpoints is a method on GCEBetaNetworkEndpointGroups. +func (g *GCEBetaNetworkEndpointGroups) AttachNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *beta.NetworkEndpointGroupsAttachEndpointsRequest) error { + glog.V(5).Infof("GCEBetaNetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...): called", ctx, key) + + if !key.Valid() { + glog.V(2).Infof("GCEBetaNetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...): key is invalid (%#v)", ctx, key, key) + return fmt.Errorf("invalid GCE key (%+v)", key) + } + projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "NetworkEndpointGroups") + rk := &RateLimitKey{ + ProjectID: projectID, + Operation: "AttachNetworkEndpoints", + Version: meta.Version("beta"), + Service: "NetworkEndpointGroups", + } + glog.V(5).Infof("GCEBetaNetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) + + if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { + glog.V(4).Infof("GCEBetaNetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...): RateLimiter error: %v", ctx, key, err) + return err + } + call := g.s.Beta.NetworkEndpointGroups.AttachNetworkEndpoints(projectID, key.Zone, key.Name, arg0) + call.Context(ctx) + op, err := call.Do() + if err != nil { + glog.V(4).Infof("GCEBetaNetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...) = %+v", ctx, key, err) + return err + } + err = g.s.WaitForCompletion(ctx, op) + glog.V(4).Infof("GCEBetaNetworkEndpointGroups.AttachNetworkEndpoints(%v, %v, ...) = %+v", ctx, key, err) + return err +} + +// DetachNetworkEndpoints is a method on GCEBetaNetworkEndpointGroups. +func (g *GCEBetaNetworkEndpointGroups) DetachNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *beta.NetworkEndpointGroupsDetachEndpointsRequest) error { + glog.V(5).Infof("GCEBetaNetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...): called", ctx, key) + + if !key.Valid() { + glog.V(2).Infof("GCEBetaNetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...): key is invalid (%#v)", ctx, key, key) + return fmt.Errorf("invalid GCE key (%+v)", key) + } + projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "NetworkEndpointGroups") + rk := &RateLimitKey{ + ProjectID: projectID, + Operation: "DetachNetworkEndpoints", + Version: meta.Version("beta"), + Service: "NetworkEndpointGroups", + } + glog.V(5).Infof("GCEBetaNetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) + + if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { + glog.V(4).Infof("GCEBetaNetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...): RateLimiter error: %v", ctx, key, err) + return err + } + call := g.s.Beta.NetworkEndpointGroups.DetachNetworkEndpoints(projectID, key.Zone, key.Name, arg0) + call.Context(ctx) + op, err := call.Do() + if err != nil { + glog.V(4).Infof("GCEBetaNetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...) = %+v", ctx, key, err) + return err + } + err = g.s.WaitForCompletion(ctx, op) + glog.V(4).Infof("GCEBetaNetworkEndpointGroups.DetachNetworkEndpoints(%v, %v, ...) = %+v", ctx, key, err) + return err +} + +// ListNetworkEndpoints is a method on GCEBetaNetworkEndpointGroups. +func (g *GCEBetaNetworkEndpointGroups) ListNetworkEndpoints(ctx context.Context, key *meta.Key, arg0 *beta.NetworkEndpointGroupsListEndpointsRequest, fl *filter.F) ([]*beta.NetworkEndpointWithHealthStatus, error) { + glog.V(5).Infof("GCEBetaNetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...): called", ctx, key) + + if !key.Valid() { + glog.V(2).Infof("GCEBetaNetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...): key is invalid (%#v)", ctx, key, key) + return nil, fmt.Errorf("invalid GCE key (%+v)", key) + } + projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "NetworkEndpointGroups") + rk := &RateLimitKey{ + ProjectID: projectID, + Operation: "ListNetworkEndpoints", + Version: meta.Version("beta"), + Service: "NetworkEndpointGroups", + } + glog.V(5).Infof("GCEBetaNetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) + + if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { + glog.V(4).Infof("GCEBetaNetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...): RateLimiter error: %v", ctx, key, err) + return nil, err + } + call := g.s.Beta.NetworkEndpointGroups.ListNetworkEndpoints(projectID, key.Zone, key.Name, arg0) + var all []*beta.NetworkEndpointWithHealthStatus + f := func(l *beta.NetworkEndpointGroupsListNetworkEndpoints) error { + glog.V(5).Infof("GCEBetaNetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...): page %+v", ctx, key, l) + all = append(all, l.Items...) + return nil + } + if err := call.Pages(ctx, f); err != nil { + glog.V(4).Infof("GCEBetaNetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...) = %v, %v", ctx, key, nil, err) + return nil, err + } + if glog.V(4) { + glog.V(4).Infof("GCEBetaNetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...) = [%v items], %v", ctx, key, len(all), nil) + } else if glog.V(5) { + var asStr []string + for _, o := range all { + asStr = append(asStr, fmt.Sprintf("%+v", o)) + } + glog.V(5).Infof("GCEBetaNetworkEndpointGroups.ListNetworkEndpoints(%v, %v, ...) = %v, %v", ctx, key, asStr, nil) + } + return all, nil +} + // Projects is an interface that allows for mocking of Projects. type Projects interface { // ProjectsOps is an interface with additional non-CRUD type methods. diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/meta/meta.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/meta/meta.go index e9ff33d43d..6a85207ed0 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/meta/meta.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/meta/meta.go @@ -115,6 +115,7 @@ var AllServices = []*ServiceInfo{ keyType: Global, serviceType: reflect.TypeOf(&beta.BackendServicesService{}), additionalMethods: []string{ + "Update", "SetSecurityPolicy", }, }, @@ -220,6 +221,17 @@ var AllServices = []*ServiceInfo{ "Update", }, }, + { + Object: "HealthCheck", + Service: "HealthChecks", + Resource: "healthChecks", + version: VersionBeta, + keyType: Global, + serviceType: reflect.TypeOf(&beta.HealthChecksService{}), + additionalMethods: []string{ + "Update", + }, + }, { Object: "HealthCheck", Service: "HealthChecks", @@ -315,6 +327,20 @@ var AllServices = []*ServiceInfo{ }, options: AggregatedList, }, + { + Object: "NetworkEndpointGroup", + Service: "NetworkEndpointGroups", + Resource: "networkEndpointGroups", + version: VersionBeta, + keyType: Zonal, + serviceType: reflect.TypeOf(&beta.NetworkEndpointGroupsService{}), + additionalMethods: []string{ + "AttachNetworkEndpoints", + "DetachNetworkEndpoints", + "ListNetworkEndpoints", + }, + options: AggregatedList, + }, { Object: "Project", Service: "Projects", diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/op.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/op.go index 1bd2e0c484..358598776f 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/op.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/op.go @@ -29,10 +29,17 @@ import ( "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/meta" ) +const ( + operationStatusDone = "DONE" +) + // operation is a GCE operation that can be watied on. type operation interface { // isDone queries GCE for the done status. This call can block. isDone(ctx context.Context) (bool, error) + // error returns the resulting error of the operation. This may be nil if the operations + // was successful. + error() error // rateLimitKey returns the rate limit key to use for the given operation. // This rate limit will govern how fast the server will be polled for // operation completion status. @@ -43,6 +50,7 @@ type gaOperation struct { s *Service projectID string key *meta.Key + err error } func (o *gaOperation) String() string { @@ -71,7 +79,15 @@ func (o *gaOperation) isDone(ctx context.Context) (bool, error) { if err != nil { return false, err } - return op != nil && op.Status == "DONE", nil + if op == nil || op.Status != operationStatusDone { + return false, nil + } + + if op.Error != nil && len(op.Error.Errors) > 0 && op.Error.Errors[0] != nil { + e := op.Error.Errors[0] + o.err = &GCEOperationError{HTTPStatusCode: op.HTTPStatusCode, Code: e.Code, Message: e.Message} + } + return true, nil } func (o *gaOperation) rateLimitKey() *RateLimitKey { @@ -83,10 +99,15 @@ func (o *gaOperation) rateLimitKey() *RateLimitKey { } } +func (o *gaOperation) error() error { + return o.err +} + type alphaOperation struct { s *Service projectID string key *meta.Key + err error } func (o *alphaOperation) String() string { @@ -115,7 +136,15 @@ func (o *alphaOperation) isDone(ctx context.Context) (bool, error) { if err != nil { return false, err } - return op != nil && op.Status == "DONE", nil + if op == nil || op.Status != operationStatusDone { + return false, nil + } + + if op.Error != nil && len(op.Error.Errors) > 0 && op.Error.Errors[0] != nil { + e := op.Error.Errors[0] + o.err = &GCEOperationError{HTTPStatusCode: op.HTTPStatusCode, Code: e.Code, Message: e.Message} + } + return true, nil } func (o *alphaOperation) rateLimitKey() *RateLimitKey { @@ -127,10 +156,15 @@ func (o *alphaOperation) rateLimitKey() *RateLimitKey { } } +func (o *alphaOperation) error() error { + return o.err +} + type betaOperation struct { s *Service projectID string key *meta.Key + err error } func (o *betaOperation) String() string { @@ -159,7 +193,15 @@ func (o *betaOperation) isDone(ctx context.Context) (bool, error) { if err != nil { return false, err } - return op != nil && op.Status == "DONE", nil + if op == nil || op.Status != operationStatusDone { + return false, nil + } + + if op.Error != nil && len(op.Error.Errors) > 0 && op.Error.Errors[0] != nil { + e := op.Error.Errors[0] + o.err = &GCEOperationError{HTTPStatusCode: op.HTTPStatusCode, Code: e.Code, Message: e.Message} + } + return true, nil } func (o *betaOperation) rateLimitKey() *RateLimitKey { @@ -170,3 +212,7 @@ func (o *betaOperation) rateLimitKey() *RateLimitKey { Version: meta.VersionBeta, } } + +func (o *betaOperation) error() error { + return o.err +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/ratelimit.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/ratelimit.go index e38b8f7de3..ca1278a008 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/ratelimit.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/ratelimit.go @@ -47,22 +47,60 @@ type RateLimiter interface { Accept(ctx context.Context, key *RateLimitKey) error } +// acceptor is an object which blocks within Accept until a call is allowed to run. +// Accept is a behavior of the flowcontrol.RateLimiter interface. +type acceptor interface { + // Accept blocks until a call is allowed to run. + Accept() +} + +// AcceptRateLimiter wraps an Acceptor with RateLimiter parameters. +type AcceptRateLimiter struct { + // Acceptor is the underlying rate limiter. + Acceptor acceptor +} + +// Accept wraps an Acceptor and blocks on Accept or context.Done(). Key is ignored. +func (rl *AcceptRateLimiter) Accept(ctx context.Context, key *RateLimitKey) error { + ch := make(chan struct{}) + go func() { + rl.Acceptor.Accept() + close(ch) + }() + select { + case <-ch: + break + case <-ctx.Done(): + return ctx.Err() + } + return nil +} + // NopRateLimiter is a rate limiter that performs no rate limiting. type NopRateLimiter struct { } -// Accept the operation to be rate limited. +// Accept everything immediately. func (*NopRateLimiter) Accept(ctx context.Context, key *RateLimitKey) error { - // Rate limit polling of the Operation status to avoid hammering GCE - // for the status of an operation. - const pollTime = time.Duration(1) * time.Second - if key.Operation == "Get" && key.Service == "Operations" { - select { - case <-time.NewTimer(pollTime).C: - break - case <-ctx.Done(): - return ctx.Err() - } - } return nil } + +// MinimumRateLimiter wraps a RateLimiter and will only call its Accept until the minimum +// duration has been met or the context is cancelled. +type MinimumRateLimiter struct { + // RateLimiter is the underlying ratelimiter which is called after the mininum time is reacehd. + RateLimiter RateLimiter + // Minimum is the minimum wait time before the underlying ratelimiter is called. + Minimum time.Duration +} + +// Accept blocks on the minimum duration and context. Once the minimum duration is met, +// the func is blocked on the underlying ratelimiter. +func (m *MinimumRateLimiter) Accept(ctx context.Context, key *RateLimitKey) error { + select { + case <-time.After(m.Minimum): + return m.RateLimiter.Accept(ctx, key) + case <-ctx.Done(): + return ctx.Err() + } +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/service.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/service.go index 99ed7d226b..2f332dfff8 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/service.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/service.go @@ -45,19 +45,19 @@ func (s *Service) wrapOperation(anyOp interface{}) (operation, error) { if err != nil { return nil, err } - return &gaOperation{s, r.ProjectID, r.Key}, nil + return &gaOperation{s: s, projectID: r.ProjectID, key: r.Key}, nil case *alpha.Operation: r, err := ParseResourceURL(o.SelfLink) if err != nil { return nil, err } - return &alphaOperation{s, r.ProjectID, r.Key}, nil + return &alphaOperation{s: s, projectID: r.ProjectID, key: r.Key}, nil case *beta.Operation: r, err := ParseResourceURL(o.SelfLink) if err != nil { return nil, err } - return &betaOperation{s, r.ProjectID, r.Key}, nil + return &betaOperation{s: s, projectID: r.ProjectID, key: r.Key}, nil default: return nil, fmt.Errorf("invalid type %T", anyOp) } @@ -72,14 +72,39 @@ func (s *Service) WaitForCompletion(ctx context.Context, genericOp interface{}) glog.Errorf("wrapOperation(%+v) error: %v", genericOp, err) return err } - for done, err := op.isDone(ctx); !done; done, err = op.isDone(ctx) { - if err != nil { - glog.V(4).Infof("op.isDone(%v) error; op = %v, err = %v", ctx, op, err) - return err - } - glog.V(5).Infof("op.isDone(%v) waiting; op = %v", ctx, op) - s.RateLimiter.Accept(ctx, op.rateLimitKey()) - } - glog.V(5).Infof("op.isDone(%v) complete; op = %v", ctx, op) - return nil + + return s.pollOperation(ctx, op) +} + +// pollOperation calls operations.isDone until the function comes back true or context is Done. +// If an error occurs retrieving the operation, the loop will continue until the context is done. +// This is to prevent a transient error from bubbling up to controller-level logic. +func (s *Service) pollOperation(ctx context.Context, op operation) error { + var pollCount int + for { + // Check if context has been cancelled. Note that ctx.Done() must be checked before + // returning ctx.Err(). + select { + case <-ctx.Done(): + glog.V(5).Infof("op.pollOperation(%v, %v) not completed, poll count = %d, ctx.Err = %v", ctx, op, pollCount, ctx.Err()) + return ctx.Err() + default: + // ctx is not canceled, continue immediately + } + + pollCount++ + glog.V(5).Infof("op.isDone(%v) waiting; op = %v, poll count = %d", ctx, op, pollCount) + s.RateLimiter.Accept(ctx, op.rateLimitKey()) + done, err := op.isDone(ctx) + if err != nil { + glog.V(5).Infof("op.isDone(%v) error; op = %v, poll count = %d, err = %v, retrying", ctx, op, pollCount, err) + } + + if done { + break + } + } + + glog.V(5).Infof("op.isDone(%v) complete; op = %v, poll count = %d, op.err = %v", ctx, op, pollCount, op.error()) + return op.error() } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce.go index 383744f23d..c2defec389 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce.go @@ -68,7 +68,7 @@ const ( // AffinityTypeClientIPProto - affinity based on Client IP and port. gceAffinityTypeClientIPProto = "CLIENT_IP_PROTO" - operationPollInterval = 3 * time.Second + operationPollInterval = time.Second // Creating Route in very large clusters, may take more than half an hour. operationPollTimeoutDuration = time.Hour @@ -484,7 +484,7 @@ func CreateGCECloud(config *CloudConfig) (*GCECloud, error) { glog.Infof("managing multiple zones: %v", config.ManagedZones) } - operationPollRateLimiter := flowcontrol.NewTokenBucketRateLimiter(10, 100) // 10 qps, 100 bucket size. + operationPollRateLimiter := flowcontrol.NewTokenBucketRateLimiter(5, 5) // 5 qps, 5 burst. gce := &GCECloud{ service: service, diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_address_manager.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_address_manager.go index 4f642a92cc..449b33a0d2 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_address_manager.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_address_manager.go @@ -169,7 +169,7 @@ func (am *addressManager) ensureAddressReservation() (string, error) { if am.isManagedAddress(addr) { // The address with this name is checked at the beginning of 'HoldAddress()', but for some reason // it was re-created by this point. May be possible that two controllers are running. - glog.Warning("%v: address %q unexpectedly existed with IP %q.", am.logPrefix, addr.Name, am.targetIP) + glog.Warningf("%v: address %q unexpectedly existed with IP %q.", am.logPrefix, addr.Name, am.targetIP) } else { // If the retrieved address is not named with the loadbalancer name, then the controller does not own it, but will allow use of it. glog.V(4).Infof("%v: address %q was already reserved with name: %q, description: %q", am.logPrefix, am.targetIP, addr.Name, addr.Description) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_addresses.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_addresses.go index 37e2f5e9a7..2bf3e20b05 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_addresses.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_addresses.go @@ -17,7 +17,6 @@ limitations under the License. package gce import ( - "context" "fmt" "github.com/golang/glog" @@ -44,72 +43,105 @@ func newAddressMetricContextWithVersion(request, region, version string) *metric // ipAddress is specified, it must belong to the current project, eg: an // ephemeral IP associated with a global forwarding rule. func (gce *GCECloud) ReserveGlobalAddress(addr *compute.Address) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newAddressMetricContext("reserve", "") - return mc.Observe(gce.c.GlobalAddresses().Insert(context.Background(), meta.GlobalKey(addr.Name), addr)) + return mc.Observe(gce.c.GlobalAddresses().Insert(ctx, meta.GlobalKey(addr.Name), addr)) } // DeleteGlobalAddress deletes a global address by name. func (gce *GCECloud) DeleteGlobalAddress(name string) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newAddressMetricContext("delete", "") - return mc.Observe(gce.c.GlobalAddresses().Delete(context.Background(), meta.GlobalKey(name))) + return mc.Observe(gce.c.GlobalAddresses().Delete(ctx, meta.GlobalKey(name))) } // GetGlobalAddress returns the global address by name. func (gce *GCECloud) GetGlobalAddress(name string) (*compute.Address, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newAddressMetricContext("get", "") - v, err := gce.c.GlobalAddresses().Get(context.Background(), meta.GlobalKey(name)) + v, err := gce.c.GlobalAddresses().Get(ctx, meta.GlobalKey(name)) return v, mc.Observe(err) } // ReserveRegionAddress creates a region address func (gce *GCECloud) ReserveRegionAddress(addr *compute.Address, region string) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newAddressMetricContext("reserve", region) - return mc.Observe(gce.c.Addresses().Insert(context.Background(), meta.RegionalKey(addr.Name, region), addr)) + return mc.Observe(gce.c.Addresses().Insert(ctx, meta.RegionalKey(addr.Name, region), addr)) } // ReserveAlphaRegionAddress creates an Alpha, regional address. func (gce *GCECloud) ReserveAlphaRegionAddress(addr *computealpha.Address, region string) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newAddressMetricContext("reserve", region) - return mc.Observe(gce.c.AlphaAddresses().Insert(context.Background(), meta.RegionalKey(addr.Name, region), addr)) + return mc.Observe(gce.c.AlphaAddresses().Insert(ctx, meta.RegionalKey(addr.Name, region), addr)) } // ReserveBetaRegionAddress creates a beta region address func (gce *GCECloud) ReserveBetaRegionAddress(addr *computebeta.Address, region string) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newAddressMetricContext("reserve", region) - return mc.Observe(gce.c.BetaAddresses().Insert(context.Background(), meta.RegionalKey(addr.Name, region), addr)) + return mc.Observe(gce.c.BetaAddresses().Insert(ctx, meta.RegionalKey(addr.Name, region), addr)) } // DeleteRegionAddress deletes a region address by name. func (gce *GCECloud) DeleteRegionAddress(name, region string) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newAddressMetricContext("delete", region) - return mc.Observe(gce.c.Addresses().Delete(context.Background(), meta.RegionalKey(name, region))) + return mc.Observe(gce.c.Addresses().Delete(ctx, meta.RegionalKey(name, region))) } // GetRegionAddress returns the region address by name func (gce *GCECloud) GetRegionAddress(name, region string) (*compute.Address, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newAddressMetricContext("get", region) - v, err := gce.c.Addresses().Get(context.Background(), meta.RegionalKey(name, region)) + v, err := gce.c.Addresses().Get(ctx, meta.RegionalKey(name, region)) return v, mc.Observe(err) } // GetAlphaRegionAddress returns the Alpha, regional address by name. func (gce *GCECloud) GetAlphaRegionAddress(name, region string) (*computealpha.Address, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newAddressMetricContext("get", region) - v, err := gce.c.AlphaAddresses().Get(context.Background(), meta.RegionalKey(name, region)) + v, err := gce.c.AlphaAddresses().Get(ctx, meta.RegionalKey(name, region)) return v, mc.Observe(err) } // GetBetaRegionAddress returns the beta region address by name func (gce *GCECloud) GetBetaRegionAddress(name, region string) (*computebeta.Address, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newAddressMetricContext("get", region) - v, err := gce.c.BetaAddresses().Get(context.Background(), meta.RegionalKey(name, region)) + v, err := gce.c.BetaAddresses().Get(ctx, meta.RegionalKey(name, region)) return v, mc.Observe(err) } // GetRegionAddressByIP returns the regional address matching the given IP address. func (gce *GCECloud) GetRegionAddressByIP(region, ipAddress string) (*compute.Address, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newAddressMetricContext("list", region) - addrs, err := gce.c.Addresses().List(context.Background(), region, filter.Regexp("address", ipAddress)) + addrs, err := gce.c.Addresses().List(ctx, region, filter.Regexp("address", ipAddress)) mc.Observe(err) if err != nil { @@ -129,8 +161,11 @@ func (gce *GCECloud) GetRegionAddressByIP(region, ipAddress string) (*compute.Ad // GetBetaRegionAddressByIP returns the beta regional address matching the given IP address. func (gce *GCECloud) GetBetaRegionAddressByIP(region, ipAddress string) (*computebeta.Address, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newAddressMetricContext("list", region) - addrs, err := gce.c.BetaAddresses().List(context.Background(), region, filter.Regexp("address", ipAddress)) + addrs, err := gce.c.BetaAddresses().List(ctx, region, filter.Regexp("address", ipAddress)) mc.Observe(err) if err != nil { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_alpha.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_alpha.go index 884b822cba..0ce698aa98 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_alpha.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_alpha.go @@ -26,8 +26,6 @@ const ( // Allows Services backed by a GCP load balancer to choose what network // tier to use. Currently supports "Standard" and "Premium" (default). AlphaFeatureNetworkTiers = "NetworkTiers" - - AlphaFeatureNetworkEndpointGroup = "NetworkEndpointGroup" ) type AlphaFeatureGate struct { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_backendservice.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_backendservice.go index d63728038e..23dc3bf1cb 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_backendservice.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_backendservice.go @@ -17,12 +17,11 @@ limitations under the License. package gce import ( - "context" - computealpha "google.golang.org/api/compute/v0.alpha" computebeta "google.golang.org/api/compute/v0.beta" compute "google.golang.org/api/compute/v1" + "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud" "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/filter" "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/meta" ) @@ -37,61 +36,107 @@ func newBackendServiceMetricContextWithVersion(request, region, version string) // GetGlobalBackendService retrieves a backend by name. func (gce *GCECloud) GetGlobalBackendService(name string) (*compute.BackendService, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newBackendServiceMetricContext("get", "") - v, err := gce.c.BackendServices().Get(context.Background(), meta.GlobalKey(name)) + v, err := gce.c.BackendServices().Get(ctx, meta.GlobalKey(name)) return v, mc.Observe(err) } // GetBetaGlobalBackendService retrieves beta backend by name. func (gce *GCECloud) GetBetaGlobalBackendService(name string) (*computebeta.BackendService, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newBackendServiceMetricContextWithVersion("get", "", computeBetaVersion) - v, err := gce.c.BetaBackendServices().Get(context.Background(), meta.GlobalKey(name)) + v, err := gce.c.BetaBackendServices().Get(ctx, meta.GlobalKey(name)) return v, mc.Observe(err) } // GetAlphaGlobalBackendService retrieves alpha backend by name. func (gce *GCECloud) GetAlphaGlobalBackendService(name string) (*computealpha.BackendService, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newBackendServiceMetricContextWithVersion("get", "", computeAlphaVersion) - v, err := gce.c.AlphaBackendServices().Get(context.Background(), meta.GlobalKey(name)) + v, err := gce.c.AlphaBackendServices().Get(ctx, meta.GlobalKey(name)) return v, mc.Observe(err) } // UpdateGlobalBackendService applies the given BackendService as an update to // an existing service. func (gce *GCECloud) UpdateGlobalBackendService(bg *compute.BackendService) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newBackendServiceMetricContext("update", "") - return mc.Observe(gce.c.BackendServices().Update(context.Background(), meta.GlobalKey(bg.Name), bg)) + return mc.Observe(gce.c.BackendServices().Update(ctx, meta.GlobalKey(bg.Name), bg)) +} + +// UpdateBetaGlobalBackendService applies the given beta BackendService as an +// update to an existing service. +func (gce *GCECloud) UpdateBetaGlobalBackendService(bg *computebeta.BackendService) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + + mc := newBackendServiceMetricContextWithVersion("update", "", computeBetaVersion) + return mc.Observe(gce.c.BetaBackendServices().Update(ctx, meta.GlobalKey(bg.Name), bg)) } // UpdateAlphaGlobalBackendService applies the given alpha BackendService as an // update to an existing service. func (gce *GCECloud) UpdateAlphaGlobalBackendService(bg *computealpha.BackendService) error { - mc := newBackendServiceMetricContext("update", "") - return mc.Observe(gce.c.AlphaBackendServices().Update(context.Background(), meta.GlobalKey(bg.Name), bg)) + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + + mc := newBackendServiceMetricContextWithVersion("update", "", computeAlphaVersion) + return mc.Observe(gce.c.AlphaBackendServices().Update(ctx, meta.GlobalKey(bg.Name), bg)) } // DeleteGlobalBackendService deletes the given BackendService by name. func (gce *GCECloud) DeleteGlobalBackendService(name string) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newBackendServiceMetricContext("delete", "") - return mc.Observe(gce.c.BackendServices().Delete(context.Background(), meta.GlobalKey(name))) + return mc.Observe(gce.c.BackendServices().Delete(ctx, meta.GlobalKey(name))) } // CreateGlobalBackendService creates the given BackendService. func (gce *GCECloud) CreateGlobalBackendService(bg *compute.BackendService) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newBackendServiceMetricContext("create", "") - return mc.Observe(gce.c.BackendServices().Insert(context.Background(), meta.GlobalKey(bg.Name), bg)) + return mc.Observe(gce.c.BackendServices().Insert(ctx, meta.GlobalKey(bg.Name), bg)) +} + +// CreateBetaGlobalBackendService creates the given beta BackendService. +func (gce *GCECloud) CreateBetaGlobalBackendService(bg *computebeta.BackendService) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + + mc := newBackendServiceMetricContextWithVersion("create", "", computeBetaVersion) + return mc.Observe(gce.c.BetaBackendServices().Insert(ctx, meta.GlobalKey(bg.Name), bg)) } // CreateAlphaGlobalBackendService creates the given alpha BackendService. func (gce *GCECloud) CreateAlphaGlobalBackendService(bg *computealpha.BackendService) error { - mc := newBackendServiceMetricContext("create", "") - return mc.Observe(gce.c.AlphaBackendServices().Insert(context.Background(), meta.GlobalKey(bg.Name), bg)) + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + + mc := newBackendServiceMetricContextWithVersion("create", "", computeAlphaVersion) + return mc.Observe(gce.c.AlphaBackendServices().Insert(ctx, meta.GlobalKey(bg.Name), bg)) } // ListGlobalBackendServices lists all backend services in the project. func (gce *GCECloud) ListGlobalBackendServices() ([]*compute.BackendService, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newBackendServiceMetricContext("list", "") - v, err := gce.c.BackendServices().List(context.Background(), filter.None) + v, err := gce.c.BackendServices().List(ctx, filter.None) return v, mc.Observe(err) } @@ -99,42 +144,60 @@ func (gce *GCECloud) ListGlobalBackendServices() ([]*compute.BackendService, err // identified by the given name, in the given instanceGroup. The // instanceGroupLink is the fully qualified self link of an instance group. func (gce *GCECloud) GetGlobalBackendServiceHealth(name string, instanceGroupLink string) (*compute.BackendServiceGroupHealth, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newBackendServiceMetricContext("get_health", "") groupRef := &compute.ResourceGroupReference{Group: instanceGroupLink} - v, err := gce.c.BackendServices().GetHealth(context.Background(), meta.GlobalKey(name), groupRef) + v, err := gce.c.BackendServices().GetHealth(ctx, meta.GlobalKey(name), groupRef) return v, mc.Observe(err) } // GetRegionBackendService retrieves a backend by name. func (gce *GCECloud) GetRegionBackendService(name, region string) (*compute.BackendService, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newBackendServiceMetricContext("get", region) - v, err := gce.c.RegionBackendServices().Get(context.Background(), meta.RegionalKey(name, region)) + v, err := gce.c.RegionBackendServices().Get(ctx, meta.RegionalKey(name, region)) return v, mc.Observe(err) } // UpdateRegionBackendService applies the given BackendService as an update to // an existing service. func (gce *GCECloud) UpdateRegionBackendService(bg *compute.BackendService, region string) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newBackendServiceMetricContext("update", region) - return mc.Observe(gce.c.RegionBackendServices().Update(context.Background(), meta.RegionalKey(bg.Name, region), bg)) + return mc.Observe(gce.c.RegionBackendServices().Update(ctx, meta.RegionalKey(bg.Name, region), bg)) } // DeleteRegionBackendService deletes the given BackendService by name. func (gce *GCECloud) DeleteRegionBackendService(name, region string) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newBackendServiceMetricContext("delete", region) - return mc.Observe(gce.c.RegionBackendServices().Delete(context.Background(), meta.RegionalKey(name, region))) + return mc.Observe(gce.c.RegionBackendServices().Delete(ctx, meta.RegionalKey(name, region))) } // CreateRegionBackendService creates the given BackendService. func (gce *GCECloud) CreateRegionBackendService(bg *compute.BackendService, region string) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newBackendServiceMetricContext("create", region) - return mc.Observe(gce.c.RegionBackendServices().Insert(context.Background(), meta.RegionalKey(bg.Name, region), bg)) + return mc.Observe(gce.c.RegionBackendServices().Insert(ctx, meta.RegionalKey(bg.Name, region), bg)) } // ListRegionBackendServices lists all backend services in the project. func (gce *GCECloud) ListRegionBackendServices(region string) ([]*compute.BackendService, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newBackendServiceMetricContext("list", region) - v, err := gce.c.RegionBackendServices().List(context.Background(), region, filter.None) + v, err := gce.c.RegionBackendServices().List(ctx, region, filter.None) return v, mc.Observe(err) } @@ -142,22 +205,31 @@ func (gce *GCECloud) ListRegionBackendServices(region string) ([]*compute.Backen // identified by the given name, in the given instanceGroup. The // instanceGroupLink is the fully qualified self link of an instance group. func (gce *GCECloud) GetRegionalBackendServiceHealth(name, region string, instanceGroupLink string) (*compute.BackendServiceGroupHealth, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newBackendServiceMetricContext("get_health", region) ref := &compute.ResourceGroupReference{Group: instanceGroupLink} - v, err := gce.c.RegionBackendServices().GetHealth(context.Background(), meta.RegionalKey(name, region), ref) + v, err := gce.c.RegionBackendServices().GetHealth(ctx, meta.RegionalKey(name, region), ref) return v, mc.Observe(err) } // SetSecurityPolicyForBetaGlobalBackendService sets the given // SecurityPolicyReference for the BackendService identified by the given name. func (gce *GCECloud) SetSecurityPolicyForBetaGlobalBackendService(backendServiceName string, securityPolicyReference *computebeta.SecurityPolicyReference) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newBackendServiceMetricContextWithVersion("set_security_policy", "", computeBetaVersion) - return mc.Observe(gce.c.BetaBackendServices().SetSecurityPolicy(context.Background(), meta.GlobalKey(backendServiceName), securityPolicyReference)) + return mc.Observe(gce.c.BetaBackendServices().SetSecurityPolicy(ctx, meta.GlobalKey(backendServiceName), securityPolicyReference)) } // SetSecurityPolicyForAlphaGlobalBackendService sets the given // SecurityPolicyReference for the BackendService identified by the given name. func (gce *GCECloud) SetSecurityPolicyForAlphaGlobalBackendService(backendServiceName string, securityPolicyReference *computealpha.SecurityPolicyReference) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newBackendServiceMetricContextWithVersion("set_security_policy", "", computeAlphaVersion) - return mc.Observe(gce.c.AlphaBackendServices().SetSecurityPolicy(context.Background(), meta.GlobalKey(backendServiceName), securityPolicyReference)) + return mc.Observe(gce.c.AlphaBackendServices().SetSecurityPolicy(ctx, meta.GlobalKey(backendServiceName), securityPolicyReference)) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_cert.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_cert.go index f91ce879e3..3b6614f816 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_cert.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_cert.go @@ -17,10 +17,9 @@ limitations under the License. package gce import ( - "context" - compute "google.golang.org/api/compute/v1" + "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud" "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/filter" "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/meta" ) @@ -31,15 +30,21 @@ func newCertMetricContext(request string) *metricContext { // GetSslCertificate returns the SslCertificate by name. func (gce *GCECloud) GetSslCertificate(name string) (*compute.SslCertificate, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newCertMetricContext("get") - v, err := gce.c.SslCertificates().Get(context.Background(), meta.GlobalKey(name)) + v, err := gce.c.SslCertificates().Get(ctx, meta.GlobalKey(name)) return v, mc.Observe(err) } // CreateSslCertificate creates and returns a SslCertificate. func (gce *GCECloud) CreateSslCertificate(sslCerts *compute.SslCertificate) (*compute.SslCertificate, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newCertMetricContext("create") - err := gce.c.SslCertificates().Insert(context.Background(), meta.GlobalKey(sslCerts.Name), sslCerts) + err := gce.c.SslCertificates().Insert(ctx, meta.GlobalKey(sslCerts.Name), sslCerts) if err != nil { return nil, mc.Observe(err) } @@ -48,13 +53,19 @@ func (gce *GCECloud) CreateSslCertificate(sslCerts *compute.SslCertificate) (*co // DeleteSslCertificate deletes the SslCertificate by name. func (gce *GCECloud) DeleteSslCertificate(name string) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newCertMetricContext("delete") - return mc.Observe(gce.c.SslCertificates().Delete(context.Background(), meta.GlobalKey(name))) + return mc.Observe(gce.c.SslCertificates().Delete(ctx, meta.GlobalKey(name))) } // ListSslCertificates lists all SslCertificates in the project. func (gce *GCECloud) ListSslCertificates() ([]*compute.SslCertificate, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newCertMetricContext("list") - v, err := gce.c.SslCertificates().List(context.Background(), filter.None) + v, err := gce.c.SslCertificates().List(ctx, filter.None) return v, mc.Observe(err) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_disks.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_disks.go index 7b7bb2dded..9c5038122d 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_disks.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_disks.go @@ -747,8 +747,8 @@ func (gce *GCECloud) ResizeDisk(diskToResize string, oldSize resource.Quantity, } requestBytes := newSize.Value() - // GCE resizes in chunks of GBs (not GiB) - requestGB := volumeutil.RoundUpSize(requestBytes, 1000*1000*1000) + // GCE resizes in chunks of GiBs + requestGB := volumeutil.RoundUpSize(requestBytes, volumeutil.GIB) newSizeQuant := resource.MustParse(fmt.Sprintf("%dG", requestGB)) // If disk is already of size equal or greater than requested size, we simply return diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_firewall.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_firewall.go index 88db0ebd3b..e138df8747 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_firewall.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_firewall.go @@ -17,10 +17,9 @@ limitations under the License. package gce import ( - "context" - compute "google.golang.org/api/compute/v1" + "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud" "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/meta" ) @@ -30,25 +29,37 @@ func newFirewallMetricContext(request string) *metricContext { // GetFirewall returns the Firewall by name. func (gce *GCECloud) GetFirewall(name string) (*compute.Firewall, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newFirewallMetricContext("get") - v, err := gce.c.Firewalls().Get(context.Background(), meta.GlobalKey(name)) + v, err := gce.c.Firewalls().Get(ctx, meta.GlobalKey(name)) return v, mc.Observe(err) } // CreateFirewall creates the passed firewall func (gce *GCECloud) CreateFirewall(f *compute.Firewall) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newFirewallMetricContext("create") - return mc.Observe(gce.c.Firewalls().Insert(context.Background(), meta.GlobalKey(f.Name), f)) + return mc.Observe(gce.c.Firewalls().Insert(ctx, meta.GlobalKey(f.Name), f)) } // DeleteFirewall deletes the given firewall rule. func (gce *GCECloud) DeleteFirewall(name string) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newFirewallMetricContext("delete") - return mc.Observe(gce.c.Firewalls().Delete(context.Background(), meta.GlobalKey(name))) + return mc.Observe(gce.c.Firewalls().Delete(ctx, meta.GlobalKey(name))) } // UpdateFirewall applies the given firewall as an update to an existing service. func (gce *GCECloud) UpdateFirewall(f *compute.Firewall) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newFirewallMetricContext("update") - return mc.Observe(gce.c.Firewalls().Update(context.Background(), meta.GlobalKey(f.Name), f)) + return mc.Observe(gce.c.Firewalls().Update(ctx, meta.GlobalKey(f.Name), f)) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_forwardingrule.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_forwardingrule.go index 9fe0da9f7c..b40652c98e 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_forwardingrule.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_forwardingrule.go @@ -17,8 +17,6 @@ limitations under the License. package gce import ( - "context" - computealpha "google.golang.org/api/compute/v0.alpha" compute "google.golang.org/api/compute/v1" "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud" @@ -35,84 +33,120 @@ func newForwardingRuleMetricContextWithVersion(request, region, version string) // CreateGlobalForwardingRule creates the passed GlobalForwardingRule func (gce *GCECloud) CreateGlobalForwardingRule(rule *compute.ForwardingRule) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newForwardingRuleMetricContext("create", "") - return mc.Observe(gce.c.GlobalForwardingRules().Insert(context.Background(), meta.GlobalKey(rule.Name), rule)) + return mc.Observe(gce.c.GlobalForwardingRules().Insert(ctx, meta.GlobalKey(rule.Name), rule)) } // SetProxyForGlobalForwardingRule links the given TargetHttp(s)Proxy with the given GlobalForwardingRule. // targetProxyLink is the SelfLink of a TargetHttp(s)Proxy. func (gce *GCECloud) SetProxyForGlobalForwardingRule(forwardingRuleName, targetProxyLink string) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newForwardingRuleMetricContext("set_proxy", "") target := &compute.TargetReference{Target: targetProxyLink} - return mc.Observe(gce.c.GlobalForwardingRules().SetTarget(context.Background(), meta.GlobalKey(forwardingRuleName), target)) + return mc.Observe(gce.c.GlobalForwardingRules().SetTarget(ctx, meta.GlobalKey(forwardingRuleName), target)) } // DeleteGlobalForwardingRule deletes the GlobalForwardingRule by name. func (gce *GCECloud) DeleteGlobalForwardingRule(name string) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newForwardingRuleMetricContext("delete", "") - return mc.Observe(gce.c.GlobalForwardingRules().Delete(context.Background(), meta.GlobalKey(name))) + return mc.Observe(gce.c.GlobalForwardingRules().Delete(ctx, meta.GlobalKey(name))) } // GetGlobalForwardingRule returns the GlobalForwardingRule by name. func (gce *GCECloud) GetGlobalForwardingRule(name string) (*compute.ForwardingRule, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newForwardingRuleMetricContext("get", "") - v, err := gce.c.GlobalForwardingRules().Get(context.Background(), meta.GlobalKey(name)) + v, err := gce.c.GlobalForwardingRules().Get(ctx, meta.GlobalKey(name)) return v, mc.Observe(err) } // ListGlobalForwardingRules lists all GlobalForwardingRules in the project. func (gce *GCECloud) ListGlobalForwardingRules() ([]*compute.ForwardingRule, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newForwardingRuleMetricContext("list", "") - v, err := gce.c.GlobalForwardingRules().List(context.Background(), filter.None) + v, err := gce.c.GlobalForwardingRules().List(ctx, filter.None) return v, mc.Observe(err) } // GetRegionForwardingRule returns the RegionalForwardingRule by name & region. func (gce *GCECloud) GetRegionForwardingRule(name, region string) (*compute.ForwardingRule, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newForwardingRuleMetricContext("get", region) - v, err := gce.c.ForwardingRules().Get(context.Background(), meta.RegionalKey(name, region)) + v, err := gce.c.ForwardingRules().Get(ctx, meta.RegionalKey(name, region)) return v, mc.Observe(err) } // GetAlphaRegionForwardingRule returns the Alpha forwarding rule by name & region. func (gce *GCECloud) GetAlphaRegionForwardingRule(name, region string) (*computealpha.ForwardingRule, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newForwardingRuleMetricContextWithVersion("get", region, computeAlphaVersion) - v, err := gce.c.AlphaForwardingRules().Get(context.Background(), meta.RegionalKey(name, region)) + v, err := gce.c.AlphaForwardingRules().Get(ctx, meta.RegionalKey(name, region)) return v, mc.Observe(err) } // ListRegionForwardingRules lists all RegionalForwardingRules in the project & region. func (gce *GCECloud) ListRegionForwardingRules(region string) ([]*compute.ForwardingRule, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newForwardingRuleMetricContext("list", region) - v, err := gce.c.ForwardingRules().List(context.Background(), region, filter.None) + v, err := gce.c.ForwardingRules().List(ctx, region, filter.None) return v, mc.Observe(err) } // ListAlphaRegionForwardingRules lists all RegionalForwardingRules in the project & region. func (gce *GCECloud) ListAlphaRegionForwardingRules(region string) ([]*computealpha.ForwardingRule, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newForwardingRuleMetricContextWithVersion("list", region, computeAlphaVersion) - v, err := gce.c.AlphaForwardingRules().List(context.Background(), region, filter.None) + v, err := gce.c.AlphaForwardingRules().List(ctx, region, filter.None) return v, mc.Observe(err) } // CreateRegionForwardingRule creates and returns a // RegionalForwardingRule that points to the given BackendService func (gce *GCECloud) CreateRegionForwardingRule(rule *compute.ForwardingRule, region string) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newForwardingRuleMetricContext("create", region) - return mc.Observe(gce.c.ForwardingRules().Insert(context.Background(), meta.RegionalKey(rule.Name, region), rule)) + return mc.Observe(gce.c.ForwardingRules().Insert(ctx, meta.RegionalKey(rule.Name, region), rule)) } // CreateAlphaRegionForwardingRule creates and returns an Alpha // forwarding fule in the given region. func (gce *GCECloud) CreateAlphaRegionForwardingRule(rule *computealpha.ForwardingRule, region string) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newForwardingRuleMetricContextWithVersion("create", region, computeAlphaVersion) - return mc.Observe(gce.c.AlphaForwardingRules().Insert(context.Background(), meta.RegionalKey(rule.Name, region), rule)) + return mc.Observe(gce.c.AlphaForwardingRules().Insert(ctx, meta.RegionalKey(rule.Name, region), rule)) } // DeleteRegionForwardingRule deletes the RegionalForwardingRule by name & region. func (gce *GCECloud) DeleteRegionForwardingRule(name, region string) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newForwardingRuleMetricContext("delete", region) - return mc.Observe(gce.c.ForwardingRules().Delete(context.Background(), meta.RegionalKey(name, region))) + return mc.Observe(gce.c.ForwardingRules().Delete(ctx, meta.RegionalKey(name, region))) } // TODO(#51665): retire this function once Network Tiers becomes Beta in GCP. diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_healthchecks.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_healthchecks.go index e4c0829e10..8dc913a608 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_healthchecks.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_healthchecks.go @@ -17,14 +17,14 @@ limitations under the License. package gce import ( - "context" - "github.com/golang/glog" computealpha "google.golang.org/api/compute/v0.alpha" + computebeta "google.golang.org/api/compute/v0.beta" compute "google.golang.org/api/compute/v1" "k8s.io/api/core/v1" + "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud" "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/filter" "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/meta" "k8s.io/kubernetes/pkg/master/ports" @@ -58,33 +58,48 @@ func newHealthcheckMetricContextWithVersion(request, version string) *metricCont // GetHttpHealthCheck returns the given HttpHealthCheck by name. func (gce *GCECloud) GetHttpHealthCheck(name string) (*compute.HttpHealthCheck, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newHealthcheckMetricContext("get_legacy") - v, err := gce.c.HttpHealthChecks().Get(context.Background(), meta.GlobalKey(name)) + v, err := gce.c.HttpHealthChecks().Get(ctx, meta.GlobalKey(name)) return v, mc.Observe(err) } // UpdateHttpHealthCheck applies the given HttpHealthCheck as an update. func (gce *GCECloud) UpdateHttpHealthCheck(hc *compute.HttpHealthCheck) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newHealthcheckMetricContext("update_legacy") - return mc.Observe(gce.c.HttpHealthChecks().Update(context.Background(), meta.GlobalKey(hc.Name), hc)) + return mc.Observe(gce.c.HttpHealthChecks().Update(ctx, meta.GlobalKey(hc.Name), hc)) } // DeleteHttpHealthCheck deletes the given HttpHealthCheck by name. func (gce *GCECloud) DeleteHttpHealthCheck(name string) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newHealthcheckMetricContext("delete_legacy") - return mc.Observe(gce.c.HttpHealthChecks().Delete(context.Background(), meta.GlobalKey(name))) + return mc.Observe(gce.c.HttpHealthChecks().Delete(ctx, meta.GlobalKey(name))) } // CreateHttpHealthCheck creates the given HttpHealthCheck. func (gce *GCECloud) CreateHttpHealthCheck(hc *compute.HttpHealthCheck) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newHealthcheckMetricContext("create_legacy") - return mc.Observe(gce.c.HttpHealthChecks().Insert(context.Background(), meta.GlobalKey(hc.Name), hc)) + return mc.Observe(gce.c.HttpHealthChecks().Insert(ctx, meta.GlobalKey(hc.Name), hc)) } // ListHttpHealthChecks lists all HttpHealthChecks in the project. func (gce *GCECloud) ListHttpHealthChecks() ([]*compute.HttpHealthCheck, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newHealthcheckMetricContext("list_legacy") - v, err := gce.c.HttpHealthChecks().List(context.Background(), filter.None) + v, err := gce.c.HttpHealthChecks().List(ctx, filter.None) return v, mc.Observe(err) } @@ -92,33 +107,48 @@ func (gce *GCECloud) ListHttpHealthChecks() ([]*compute.HttpHealthCheck, error) // GetHttpsHealthCheck returns the given HttpsHealthCheck by name. func (gce *GCECloud) GetHttpsHealthCheck(name string) (*compute.HttpsHealthCheck, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newHealthcheckMetricContext("get_legacy") - v, err := gce.c.HttpsHealthChecks().Get(context.Background(), meta.GlobalKey(name)) + v, err := gce.c.HttpsHealthChecks().Get(ctx, meta.GlobalKey(name)) return v, mc.Observe(err) } // UpdateHttpsHealthCheck applies the given HttpsHealthCheck as an update. func (gce *GCECloud) UpdateHttpsHealthCheck(hc *compute.HttpsHealthCheck) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newHealthcheckMetricContext("update_legacy") - return mc.Observe(gce.c.HttpsHealthChecks().Update(context.Background(), meta.GlobalKey(hc.Name), hc)) + return mc.Observe(gce.c.HttpsHealthChecks().Update(ctx, meta.GlobalKey(hc.Name), hc)) } // DeleteHttpsHealthCheck deletes the given HttpsHealthCheck by name. func (gce *GCECloud) DeleteHttpsHealthCheck(name string) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newHealthcheckMetricContext("delete_legacy") - return mc.Observe(gce.c.HttpsHealthChecks().Delete(context.Background(), meta.GlobalKey(name))) + return mc.Observe(gce.c.HttpsHealthChecks().Delete(ctx, meta.GlobalKey(name))) } // CreateHttpsHealthCheck creates the given HttpsHealthCheck. func (gce *GCECloud) CreateHttpsHealthCheck(hc *compute.HttpsHealthCheck) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newHealthcheckMetricContext("create_legacy") - return mc.Observe(gce.c.HttpsHealthChecks().Insert(context.Background(), meta.GlobalKey(hc.Name), hc)) + return mc.Observe(gce.c.HttpsHealthChecks().Insert(ctx, meta.GlobalKey(hc.Name), hc)) } // ListHttpsHealthChecks lists all HttpsHealthChecks in the project. func (gce *GCECloud) ListHttpsHealthChecks() ([]*compute.HttpsHealthCheck, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newHealthcheckMetricContext("list_legacy") - v, err := gce.c.HttpsHealthChecks().List(context.Background(), filter.None) + v, err := gce.c.HttpsHealthChecks().List(ctx, filter.None) return v, mc.Observe(err) } @@ -126,52 +156,104 @@ func (gce *GCECloud) ListHttpsHealthChecks() ([]*compute.HttpsHealthCheck, error // GetHealthCheck returns the given HealthCheck by name. func (gce *GCECloud) GetHealthCheck(name string) (*compute.HealthCheck, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newHealthcheckMetricContext("get") - v, err := gce.c.HealthChecks().Get(context.Background(), meta.GlobalKey(name)) + v, err := gce.c.HealthChecks().Get(ctx, meta.GlobalKey(name)) return v, mc.Observe(err) } // GetAlphaHealthCheck returns the given alpha HealthCheck by name. func (gce *GCECloud) GetAlphaHealthCheck(name string) (*computealpha.HealthCheck, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newHealthcheckMetricContextWithVersion("get", computeAlphaVersion) - v, err := gce.c.AlphaHealthChecks().Get(context.Background(), meta.GlobalKey(name)) + v, err := gce.c.AlphaHealthChecks().Get(ctx, meta.GlobalKey(name)) + return v, mc.Observe(err) +} + +// GetBetaHealthCheck returns the given beta HealthCheck by name. +func (gce *GCECloud) GetBetaHealthCheck(name string) (*computebeta.HealthCheck, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + + mc := newHealthcheckMetricContextWithVersion("get", computeBetaVersion) + v, err := gce.c.BetaHealthChecks().Get(ctx, meta.GlobalKey(name)) return v, mc.Observe(err) } // UpdateHealthCheck applies the given HealthCheck as an update. func (gce *GCECloud) UpdateHealthCheck(hc *compute.HealthCheck) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newHealthcheckMetricContext("update") - return mc.Observe(gce.c.HealthChecks().Update(context.Background(), meta.GlobalKey(hc.Name), hc)) + return mc.Observe(gce.c.HealthChecks().Update(ctx, meta.GlobalKey(hc.Name), hc)) } // UpdateAlphaHealthCheck applies the given alpha HealthCheck as an update. func (gce *GCECloud) UpdateAlphaHealthCheck(hc *computealpha.HealthCheck) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newHealthcheckMetricContextWithVersion("update", computeAlphaVersion) - return mc.Observe(gce.c.AlphaHealthChecks().Update(context.Background(), meta.GlobalKey(hc.Name), hc)) + return mc.Observe(gce.c.AlphaHealthChecks().Update(ctx, meta.GlobalKey(hc.Name), hc)) +} + +// UpdateBetaHealthCheck applies the given beta HealthCheck as an update. +func (gce *GCECloud) UpdateBetaHealthCheck(hc *computebeta.HealthCheck) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + + mc := newHealthcheckMetricContextWithVersion("update", computeBetaVersion) + return mc.Observe(gce.c.BetaHealthChecks().Update(ctx, meta.GlobalKey(hc.Name), hc)) } // DeleteHealthCheck deletes the given HealthCheck by name. func (gce *GCECloud) DeleteHealthCheck(name string) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newHealthcheckMetricContext("delete") - return mc.Observe(gce.c.HealthChecks().Delete(context.Background(), meta.GlobalKey(name))) + return mc.Observe(gce.c.HealthChecks().Delete(ctx, meta.GlobalKey(name))) } // CreateHealthCheck creates the given HealthCheck. func (gce *GCECloud) CreateHealthCheck(hc *compute.HealthCheck) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newHealthcheckMetricContext("create") - return mc.Observe(gce.c.HealthChecks().Insert(context.Background(), meta.GlobalKey(hc.Name), hc)) + return mc.Observe(gce.c.HealthChecks().Insert(ctx, meta.GlobalKey(hc.Name), hc)) } // CreateAlphaHealthCheck creates the given alpha HealthCheck. func (gce *GCECloud) CreateAlphaHealthCheck(hc *computealpha.HealthCheck) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newHealthcheckMetricContextWithVersion("create", computeAlphaVersion) - return mc.Observe(gce.c.AlphaHealthChecks().Insert(context.Background(), meta.GlobalKey(hc.Name), hc)) + return mc.Observe(gce.c.AlphaHealthChecks().Insert(ctx, meta.GlobalKey(hc.Name), hc)) +} + +// CreateBetaHealthCheck creates the given beta HealthCheck. +func (gce *GCECloud) CreateBetaHealthCheck(hc *computebeta.HealthCheck) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + + mc := newHealthcheckMetricContextWithVersion("create", computeBetaVersion) + return mc.Observe(gce.c.BetaHealthChecks().Insert(ctx, meta.GlobalKey(hc.Name), hc)) } // ListHealthChecks lists all HealthCheck in the project. func (gce *GCECloud) ListHealthChecks() ([]*compute.HealthCheck, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newHealthcheckMetricContext("list") - v, err := gce.c.HealthChecks().List(context.Background(), filter.None) + v, err := gce.c.HealthChecks().List(ctx, filter.None) return v, mc.Observe(err) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_instancegroup.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_instancegroup.go index 84b9724bfa..13b2c51e50 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_instancegroup.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_instancegroup.go @@ -17,10 +17,9 @@ limitations under the License. package gce import ( - "context" - compute "google.golang.org/api/compute/v1" + "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud" "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/filter" "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/meta" ) @@ -32,36 +31,51 @@ func newInstanceGroupMetricContext(request string, zone string) *metricContext { // CreateInstanceGroup creates an instance group with the given // instances. It is the callers responsibility to add named ports. func (gce *GCECloud) CreateInstanceGroup(ig *compute.InstanceGroup, zone string) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newInstanceGroupMetricContext("create", zone) - return mc.Observe(gce.c.InstanceGroups().Insert(context.Background(), meta.ZonalKey(ig.Name, zone), ig)) + return mc.Observe(gce.c.InstanceGroups().Insert(ctx, meta.ZonalKey(ig.Name, zone), ig)) } // DeleteInstanceGroup deletes an instance group. func (gce *GCECloud) DeleteInstanceGroup(name string, zone string) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newInstanceGroupMetricContext("delete", zone) - return mc.Observe(gce.c.InstanceGroups().Delete(context.Background(), meta.ZonalKey(name, zone))) + return mc.Observe(gce.c.InstanceGroups().Delete(ctx, meta.ZonalKey(name, zone))) } // ListInstanceGroups lists all InstanceGroups in the project and // zone. func (gce *GCECloud) ListInstanceGroups(zone string) ([]*compute.InstanceGroup, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newInstanceGroupMetricContext("list", zone) - v, err := gce.c.InstanceGroups().List(context.Background(), zone, filter.None) + v, err := gce.c.InstanceGroups().List(ctx, zone, filter.None) return v, mc.Observe(err) } // ListInstancesInInstanceGroup lists all the instances in a given // instance group and state. func (gce *GCECloud) ListInstancesInInstanceGroup(name string, zone string, state string) ([]*compute.InstanceWithNamedPorts, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newInstanceGroupMetricContext("list_instances", zone) req := &compute.InstanceGroupsListInstancesRequest{InstanceState: state} - v, err := gce.c.InstanceGroups().ListInstances(context.Background(), meta.ZonalKey(name, zone), req, filter.None) + v, err := gce.c.InstanceGroups().ListInstances(ctx, meta.ZonalKey(name, zone), req, filter.None) return v, mc.Observe(err) } // AddInstancesToInstanceGroup adds the given instances to the given // instance group. func (gce *GCECloud) AddInstancesToInstanceGroup(name string, zone string, instanceRefs []*compute.InstanceReference) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newInstanceGroupMetricContext("add_instances", zone) // TODO: should cull operation above this layer. if len(instanceRefs) == 0 { @@ -70,12 +84,15 @@ func (gce *GCECloud) AddInstancesToInstanceGroup(name string, zone string, insta req := &compute.InstanceGroupsAddInstancesRequest{ Instances: instanceRefs, } - return mc.Observe(gce.c.InstanceGroups().AddInstances(context.Background(), meta.ZonalKey(name, zone), req)) + return mc.Observe(gce.c.InstanceGroups().AddInstances(ctx, meta.ZonalKey(name, zone), req)) } // RemoveInstancesFromInstanceGroup removes the given instances from // the instance group. func (gce *GCECloud) RemoveInstancesFromInstanceGroup(name string, zone string, instanceRefs []*compute.InstanceReference) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newInstanceGroupMetricContext("remove_instances", zone) // TODO: should cull operation above this layer. if len(instanceRefs) == 0 { @@ -84,19 +101,25 @@ func (gce *GCECloud) RemoveInstancesFromInstanceGroup(name string, zone string, req := &compute.InstanceGroupsRemoveInstancesRequest{ Instances: instanceRefs, } - return mc.Observe(gce.c.InstanceGroups().RemoveInstances(context.Background(), meta.ZonalKey(name, zone), req)) + return mc.Observe(gce.c.InstanceGroups().RemoveInstances(ctx, meta.ZonalKey(name, zone), req)) } // SetNamedPortsOfInstanceGroup sets the list of named ports on a given instance group func (gce *GCECloud) SetNamedPortsOfInstanceGroup(igName, zone string, namedPorts []*compute.NamedPort) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newInstanceGroupMetricContext("set_namedports", zone) req := &compute.InstanceGroupsSetNamedPortsRequest{NamedPorts: namedPorts} - return mc.Observe(gce.c.InstanceGroups().SetNamedPorts(context.Background(), meta.ZonalKey(igName, zone), req)) + return mc.Observe(gce.c.InstanceGroups().SetNamedPorts(ctx, meta.ZonalKey(igName, zone), req)) } // GetInstanceGroup returns an instance group by name. func (gce *GCECloud) GetInstanceGroup(name string, zone string) (*compute.InstanceGroup, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newInstanceGroupMetricContext("get", zone) - v, err := gce.c.InstanceGroups().Get(context.Background(), meta.ZonalKey(name, zone)) + v, err := gce.c.InstanceGroups().Get(ctx, meta.ZonalKey(name, zone)) return v, mc.Observe(err) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_instances.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_instances.go index 69c487ecfc..0d4dc63149 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_instances.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_instances.go @@ -34,6 +34,7 @@ import ( "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/wait" "k8s.io/kubernetes/pkg/cloudprovider" + "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud" "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/filter" "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/meta" kubeletapis "k8s.io/kubernetes/pkg/kubelet/apis" @@ -99,12 +100,15 @@ func (gce *GCECloud) NodeAddresses(_ context.Context, _ types.NodeName) ([]v1.No // NodeAddressesByProviderID will not be called from the node that is requesting this ID. // i.e. metadata service and other local methods cannot be used here func (gce *GCECloud) NodeAddressesByProviderID(ctx context.Context, providerID string) ([]v1.NodeAddress, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + _, zone, name, err := splitProviderID(providerID) if err != nil { return []v1.NodeAddress{}, err } - instance, err := gce.c.Instances().Get(context.Background(), meta.ZonalKey(canonicalizeInstanceName(name), zone)) + instance, err := gce.c.Instances().Get(ctx, meta.ZonalKey(canonicalizeInstanceName(name), zone)) if err != nil { return []v1.NodeAddress{}, fmt.Errorf("error while querying for providerID %q: %v", providerID, err) } @@ -212,8 +216,11 @@ func (gce *GCECloud) InstanceType(ctx context.Context, nodeName types.NodeName) } func (gce *GCECloud) AddSSHKeyToAllInstances(ctx context.Context, user string, keyData []byte) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + return wait.Poll(2*time.Second, 30*time.Second, func() (bool, error) { - project, err := gce.c.Projects().Get(context.Background(), gce.projectID) + project, err := gce.c.Projects().Get(ctx, gce.projectID) if err != nil { glog.Errorf("Could not get project: %v", err) return false, nil @@ -244,7 +251,7 @@ func (gce *GCECloud) AddSSHKeyToAllInstances(ctx context.Context, user string, k } mc := newInstancesMetricContext("add_ssh_key", "") - err = gce.c.Projects().SetCommonInstanceMetadata(context.Background(), gce.projectID, project.CommonInstanceMetadata) + err = gce.c.Projects().SetCommonInstanceMetadata(ctx, gce.projectID, project.CommonInstanceMetadata) mc.Observe(err) if err != nil { @@ -284,9 +291,12 @@ func (gce *GCECloud) GetAllCurrentZones() (sets.String, error) { // // TODO: this should be removed from the cloud provider. func (gce *GCECloud) GetAllZonesFromCloudProvider() (sets.String, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + zones := sets.NewString() for _, zone := range gce.managedZones { - instances, err := gce.c.Instances().List(context.Background(), zone, filter.None) + instances, err := gce.c.Instances().List(ctx, zone, filter.None) if err != nil { return sets.NewString(), err } @@ -299,15 +309,21 @@ func (gce *GCECloud) GetAllZonesFromCloudProvider() (sets.String, error) { // InsertInstance creates a new instance on GCP func (gce *GCECloud) InsertInstance(project string, zone string, i *compute.Instance) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newInstancesMetricContext("create", zone) - return mc.Observe(gce.c.Instances().Insert(context.Background(), meta.ZonalKey(i.Name, zone), i)) + return mc.Observe(gce.c.Instances().Insert(ctx, meta.ZonalKey(i.Name, zone), i)) } // ListInstanceNames returns a string of instance names separated by spaces. // This method should only be used for e2e testing. // TODO: remove this method. func (gce *GCECloud) ListInstanceNames(project, zone string) (string, error) { - l, err := gce.c.Instances().List(context.Background(), zone, filter.None) + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + + l, err := gce.c.Instances().List(ctx, zone, filter.None) if err != nil { return "", err } @@ -320,7 +336,10 @@ func (gce *GCECloud) ListInstanceNames(project, zone string) (string, error) { // DeleteInstance deletes an instance specified by project, zone, and name func (gce *GCECloud) DeleteInstance(project, zone, name string) error { - return gce.c.Instances().Delete(context.Background(), meta.ZonalKey(name, zone)) + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + + return gce.c.Instances().Delete(ctx, meta.ZonalKey(name, zone)) } // Implementation of Instances.CurrentNodeName @@ -332,6 +351,9 @@ func (gce *GCECloud) CurrentNodeName(ctx context.Context, hostname string) (type // `node` for allocation to pods. Returns a list of the form // "/". func (gce *GCECloud) AliasRanges(nodeName types.NodeName) (cidrs []string, err error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + var instance *gceInstance instance, err = gce.getInstanceByName(mapNodeNameToInstanceName(nodeName)) if err != nil { @@ -339,7 +361,7 @@ func (gce *GCECloud) AliasRanges(nodeName types.NodeName) (cidrs []string, err e } var res *computebeta.Instance - res, err = gce.c.BetaInstances().Get(context.Background(), meta.ZonalKey(instance.Name, lastComponent(instance.Zone))) + res, err = gce.c.BetaInstances().Get(ctx, meta.ZonalKey(instance.Name, lastComponent(instance.Zone))) if err != nil { return } @@ -355,12 +377,14 @@ func (gce *GCECloud) AliasRanges(nodeName types.NodeName) (cidrs []string, err e // AddAliasToInstance adds an alias to the given instance from the named // secondary range. func (gce *GCECloud) AddAliasToInstance(nodeName types.NodeName, alias *net.IPNet) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() v1instance, err := gce.getInstanceByName(mapNodeNameToInstanceName(nodeName)) if err != nil { return err } - instance, err := gce.c.BetaInstances().Get(context.Background(), meta.ZonalKey(v1instance.Name, lastComponent(v1instance.Zone))) + instance, err := gce.c.BetaInstances().Get(ctx, meta.ZonalKey(v1instance.Name, lastComponent(v1instance.Zone))) if err != nil { return err } @@ -383,13 +407,16 @@ func (gce *GCECloud) AddAliasToInstance(nodeName types.NodeName, alias *net.IPNe }) mc := newInstancesMetricContext("add_alias", v1instance.Zone) - err = gce.c.BetaInstances().UpdateNetworkInterface(context.Background(), meta.ZonalKey(instance.Name, lastComponent(instance.Zone)), iface.Name, iface) + err = gce.c.BetaInstances().UpdateNetworkInterface(ctx, meta.ZonalKey(instance.Name, lastComponent(instance.Zone)), iface.Name, iface) return mc.Observe(err) } // Gets the named instances, returning cloudprovider.InstanceNotFound if any // instance is not found func (gce *GCECloud) getInstancesByNames(names []string) ([]*gceInstance, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + found := map[string]*gceInstance{} remaining := len(names) @@ -407,7 +434,7 @@ func (gce *GCECloud) getInstancesByNames(names []string) ([]*gceInstance, error) if remaining == 0 { break } - instances, err := gce.c.Instances().List(context.Background(), zone, filter.Regexp("name", nodeInstancePrefix+".*")) + instances, err := gce.c.Instances().List(ctx, zone, filter.Regexp("name", nodeInstancePrefix+".*")) if err != nil { return nil, err } @@ -471,9 +498,12 @@ func (gce *GCECloud) getInstanceByName(name string) (*gceInstance, error) { } func (gce *GCECloud) getInstanceFromProjectInZoneByName(project, zone, name string) (*gceInstance, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + name = canonicalizeInstanceName(name) mc := newInstancesMetricContext("get", zone) - res, err := gce.c.Instances().Get(context.Background(), meta.ZonalKey(name, zone)) + res, err := gce.c.Instances().Get(ctx, meta.ZonalKey(name, zone)) mc.Observe(err) if err != nil { return nil, err @@ -532,6 +562,9 @@ func (gce *GCECloud) isCurrentInstance(instanceID string) bool { // format of the host names in the cluster. Only use it as a fallback if // gce.nodeTags is unspecified func (gce *GCECloud) computeHostTags(hosts []*gceInstance) ([]string, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + // TODO: We could store the tags in gceInstance, so we could have already fetched it hostNamesByZone := make(map[string]map[string]bool) // map of zones -> map of names -> bool (for easy lookup) nodeInstancePrefix := gce.nodeInstancePrefix @@ -556,7 +589,7 @@ func (gce *GCECloud) computeHostTags(hosts []*gceInstance) ([]string, error) { filt = filter.Regexp("name", nodeInstancePrefix+".*") } for zone, hostNames := range hostNamesByZone { - instances, err := gce.c.Instances().List(context.Background(), zone, filt) + instances, err := gce.c.Instances().List(ctx, zone, filt) if err != nil { return nil, err } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_loadbalancer_naming.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_loadbalancer_naming.go index 1e1feeff53..63b11eb114 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_loadbalancer_naming.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_loadbalancer_naming.go @@ -31,7 +31,12 @@ import ( // Instance groups remain legacy named to stay consistent with ingress func makeInstanceGroupName(clusterID string) string { - return fmt.Sprintf("k8s-ig--%s", clusterID) + prefix := "k8s-ig" + // clusterID might be empty for legacy clusters + if clusterID == "" { + return prefix + } + return fmt.Sprintf("%s--%s", prefix, clusterID) } func makeBackendServiceName(loadBalancerName, clusterID string, shared bool, scheme cloud.LbScheme, protocol v1.Protocol, svcAffinity v1.ServiceAffinity) string { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_networkendpointgroup.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_networkendpointgroup.go index f0e3fb538d..f82781e08d 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_networkendpointgroup.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_networkendpointgroup.go @@ -17,55 +17,54 @@ limitations under the License. package gce import ( - "context" "fmt" "strings" - computealpha "google.golang.org/api/compute/v0.alpha" + computebeta "google.golang.org/api/compute/v0.beta" + "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud" "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/filter" "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/meta" ) const ( - NEGLoadBalancerType = "LOAD_BALANCING" NEGIPPortNetworkEndpointType = "GCE_VM_IP_PORT" ) func newNetworkEndpointGroupMetricContext(request string, zone string) *metricContext { - return newGenericMetricContext("networkendpointgroup_", request, unusedMetricLabel, zone, computeAlphaVersion) + return newGenericMetricContext("networkendpointgroup_", request, unusedMetricLabel, zone, computeBetaVersion) } -func (gce *GCECloud) GetNetworkEndpointGroup(name string, zone string) (*computealpha.NetworkEndpointGroup, error) { +func (gce *GCECloud) GetNetworkEndpointGroup(name string, zone string) (*computebeta.NetworkEndpointGroup, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newNetworkEndpointGroupMetricContext("get", zone) - if err := gce.alphaFeatureEnabled(AlphaFeatureNetworkEndpointGroup); err != nil { - return nil, mc.Observe(err) - } - v, err := gce.c.AlphaNetworkEndpointGroups().Get(context.Background(), meta.ZonalKey(name, zone)) + v, err := gce.c.BetaNetworkEndpointGroups().Get(ctx, meta.ZonalKey(name, zone)) return v, mc.Observe(err) } -func (gce *GCECloud) ListNetworkEndpointGroup(zone string) ([]*computealpha.NetworkEndpointGroup, error) { +func (gce *GCECloud) ListNetworkEndpointGroup(zone string) ([]*computebeta.NetworkEndpointGroup, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newNetworkEndpointGroupMetricContext("list", zone) - if err := gce.alphaFeatureEnabled(AlphaFeatureNetworkEndpointGroup); err != nil { - return nil, mc.Observe(err) - } - negs, err := gce.c.AlphaNetworkEndpointGroups().List(context.Background(), zone, filter.None) + negs, err := gce.c.BetaNetworkEndpointGroups().List(ctx, zone, filter.None) return negs, mc.Observe(err) } // AggregatedListNetworkEndpointGroup returns a map of zone -> endpoint group. -func (gce *GCECloud) AggregatedListNetworkEndpointGroup() (map[string][]*computealpha.NetworkEndpointGroup, error) { +func (gce *GCECloud) AggregatedListNetworkEndpointGroup() (map[string][]*computebeta.NetworkEndpointGroup, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newNetworkEndpointGroupMetricContext("aggregated_list", "") - if err := gce.alphaFeatureEnabled(AlphaFeatureNetworkEndpointGroup); err != nil { - return nil, mc.Observe(err) - } // TODO: filter for the region the cluster is in. - all, err := gce.c.AlphaNetworkEndpointGroups().AggregatedList(context.Background(), filter.None) + all, err := gce.c.BetaNetworkEndpointGroups().AggregatedList(ctx, filter.None) if err != nil { return nil, mc.Observe(err) } - ret := map[string][]*computealpha.NetworkEndpointGroup{} + ret := map[string][]*computebeta.NetworkEndpointGroup{} for key, byZone := range all { // key is "zones/" parts := strings.Split(key, "/") @@ -78,56 +77,56 @@ func (gce *GCECloud) AggregatedListNetworkEndpointGroup() (map[string][]*compute return ret, mc.Observe(nil) } -func (gce *GCECloud) CreateNetworkEndpointGroup(neg *computealpha.NetworkEndpointGroup, zone string) error { - if err := gce.alphaFeatureEnabled(AlphaFeatureNetworkEndpointGroup); err != nil { - return err - } +func (gce *GCECloud) CreateNetworkEndpointGroup(neg *computebeta.NetworkEndpointGroup, zone string) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newNetworkEndpointGroupMetricContext("create", zone) - return mc.Observe(gce.c.AlphaNetworkEndpointGroups().Insert(context.Background(), meta.ZonalKey(neg.Name, zone), neg)) + return mc.Observe(gce.c.BetaNetworkEndpointGroups().Insert(ctx, meta.ZonalKey(neg.Name, zone), neg)) } func (gce *GCECloud) DeleteNetworkEndpointGroup(name string, zone string) error { - if err := gce.alphaFeatureEnabled(AlphaFeatureNetworkEndpointGroup); err != nil { - return err - } + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newNetworkEndpointGroupMetricContext("delete", zone) - return mc.Observe(gce.c.AlphaNetworkEndpointGroups().Delete(context.Background(), meta.ZonalKey(name, zone))) + return mc.Observe(gce.c.BetaNetworkEndpointGroups().Delete(ctx, meta.ZonalKey(name, zone))) } -func (gce *GCECloud) AttachNetworkEndpoints(name, zone string, endpoints []*computealpha.NetworkEndpoint) error { +func (gce *GCECloud) AttachNetworkEndpoints(name, zone string, endpoints []*computebeta.NetworkEndpoint) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newNetworkEndpointGroupMetricContext("attach", zone) - if err := gce.alphaFeatureEnabled(AlphaFeatureNetworkEndpointGroup); err != nil { - return mc.Observe(err) - } - req := &computealpha.NetworkEndpointGroupsAttachEndpointsRequest{ + req := &computebeta.NetworkEndpointGroupsAttachEndpointsRequest{ NetworkEndpoints: endpoints, } - return mc.Observe(gce.c.AlphaNetworkEndpointGroups().AttachNetworkEndpoints(context.Background(), meta.ZonalKey(name, zone), req)) + return mc.Observe(gce.c.BetaNetworkEndpointGroups().AttachNetworkEndpoints(ctx, meta.ZonalKey(name, zone), req)) } -func (gce *GCECloud) DetachNetworkEndpoints(name, zone string, endpoints []*computealpha.NetworkEndpoint) error { +func (gce *GCECloud) DetachNetworkEndpoints(name, zone string, endpoints []*computebeta.NetworkEndpoint) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newNetworkEndpointGroupMetricContext("detach", zone) - if err := gce.alphaFeatureEnabled(AlphaFeatureNetworkEndpointGroup); err != nil { - return mc.Observe(err) - } - req := &computealpha.NetworkEndpointGroupsDetachEndpointsRequest{ + req := &computebeta.NetworkEndpointGroupsDetachEndpointsRequest{ NetworkEndpoints: endpoints, } - return mc.Observe(gce.c.AlphaNetworkEndpointGroups().DetachNetworkEndpoints(context.Background(), meta.ZonalKey(name, zone), req)) + return mc.Observe(gce.c.BetaNetworkEndpointGroups().DetachNetworkEndpoints(ctx, meta.ZonalKey(name, zone), req)) } -func (gce *GCECloud) ListNetworkEndpoints(name, zone string, showHealthStatus bool) ([]*computealpha.NetworkEndpointWithHealthStatus, error) { +func (gce *GCECloud) ListNetworkEndpoints(name, zone string, showHealthStatus bool) ([]*computebeta.NetworkEndpointWithHealthStatus, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newNetworkEndpointGroupMetricContext("list_networkendpoints", zone) - if err := gce.alphaFeatureEnabled(AlphaFeatureNetworkEndpointGroup); err != nil { - return nil, mc.Observe(err) - } healthStatus := "SKIP" if showHealthStatus { healthStatus = "SHOW" } - req := &computealpha.NetworkEndpointGroupsListEndpointsRequest{ + req := &computebeta.NetworkEndpointGroupsListEndpointsRequest{ HealthStatus: healthStatus, } - l, err := gce.c.AlphaNetworkEndpointGroups().ListNetworkEndpoints(context.Background(), meta.ZonalKey(name, zone), req, filter.None) + l, err := gce.c.BetaNetworkEndpointGroups().ListNetworkEndpoints(ctx, meta.ZonalKey(name, zone), req, filter.None) return l, mc.Observe(err) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_routes.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_routes.go index 4a7cea5b38..624b581cbd 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_routes.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_routes.go @@ -27,6 +27,7 @@ import ( "k8s.io/apimachinery/pkg/types" "k8s.io/kubernetes/pkg/cloudprovider" + "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud" "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/filter" "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/meta" ) @@ -37,10 +38,13 @@ func newRoutesMetricContext(request string) *metricContext { // ListRoutes in the cloud environment. func (gce *GCECloud) ListRoutes(ctx context.Context, clusterName string) ([]*cloudprovider.Route, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newRoutesMetricContext("list") prefix := truncateClusterName(clusterName) f := filter.Regexp("name", prefix+"-.*").AndRegexp("network", gce.NetworkURL()).AndRegexp("description", k8sNodeRouteTag) - routes, err := gce.c.Routes().List(context.Background(), f) + routes, err := gce.c.Routes().List(ctx, f) if err != nil { return nil, mc.Observe(err) } @@ -60,6 +64,9 @@ func (gce *GCECloud) ListRoutes(ctx context.Context, clusterName string) ([]*clo // CreateRoute in the cloud environment. func (gce *GCECloud) CreateRoute(ctx context.Context, clusterName string, nameHint string, route *cloudprovider.Route) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newRoutesMetricContext("create") targetInstance, err := gce.getInstanceByName(mapNodeNameToInstanceName(route.TargetNode)) @@ -74,7 +81,7 @@ func (gce *GCECloud) CreateRoute(ctx context.Context, clusterName string, nameHi Priority: 1000, Description: k8sNodeRouteTag, } - err = gce.c.Routes().Insert(context.Background(), meta.GlobalKey(cr.Name), cr) + err = gce.c.Routes().Insert(ctx, meta.GlobalKey(cr.Name), cr) if isHTTPErrorCode(err, http.StatusConflict) { glog.Infof("Route %q already exists.", cr.Name) err = nil @@ -84,8 +91,11 @@ func (gce *GCECloud) CreateRoute(ctx context.Context, clusterName string, nameHi // DeleteRoute from the cloud environment. func (gce *GCECloud) DeleteRoute(ctx context.Context, clusterName string, route *cloudprovider.Route) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newRoutesMetricContext("delete") - return mc.Observe(gce.c.Routes().Delete(context.Background(), meta.GlobalKey(route.Name))) + return mc.Observe(gce.c.Routes().Delete(ctx, meta.GlobalKey(route.Name))) } func truncateClusterName(clusterName string) string { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_securitypolicy.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_securitypolicy.go index bec23a644f..293946590b 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_securitypolicy.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_securitypolicy.go @@ -17,10 +17,9 @@ limitations under the License. package gce import ( - "context" - computebeta "google.golang.org/api/compute/v0.beta" + "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud" "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/filter" "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/meta" ) @@ -31,60 +30,87 @@ func newSecurityPolicyMetricContextWithVersion(request, version string) *metricC // GetBetaSecurityPolicy retrieves a security policy. func (gce *GCECloud) GetBetaSecurityPolicy(name string) (*computebeta.SecurityPolicy, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newSecurityPolicyMetricContextWithVersion("get", computeBetaVersion) - v, err := gce.c.BetaSecurityPolicies().Get(context.Background(), meta.GlobalKey(name)) + v, err := gce.c.BetaSecurityPolicies().Get(ctx, meta.GlobalKey(name)) return v, mc.Observe(err) } // ListBetaSecurityPolicy lists all security policies in the project. func (gce *GCECloud) ListBetaSecurityPolicy() ([]*computebeta.SecurityPolicy, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newSecurityPolicyMetricContextWithVersion("list", computeBetaVersion) - v, err := gce.c.BetaSecurityPolicies().List(context.Background(), filter.None) + v, err := gce.c.BetaSecurityPolicies().List(ctx, filter.None) return v, mc.Observe(err) } // CreateBetaSecurityPolicy creates the given security policy. func (gce *GCECloud) CreateBetaSecurityPolicy(sp *computebeta.SecurityPolicy) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newSecurityPolicyMetricContextWithVersion("create", computeBetaVersion) - return mc.Observe(gce.c.BetaSecurityPolicies().Insert(context.Background(), meta.GlobalKey(sp.Name), sp)) + return mc.Observe(gce.c.BetaSecurityPolicies().Insert(ctx, meta.GlobalKey(sp.Name), sp)) } // DeleteBetaSecurityPolicy deletes the given security policy. func (gce *GCECloud) DeleteBetaSecurityPolicy(name string) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newSecurityPolicyMetricContextWithVersion("delete", computeBetaVersion) - return mc.Observe(gce.c.BetaSecurityPolicies().Delete(context.Background(), meta.GlobalKey(name))) + return mc.Observe(gce.c.BetaSecurityPolicies().Delete(ctx, meta.GlobalKey(name))) } // PatchBetaSecurityPolicy applies the given security policy as a // patch to an existing security policy. func (gce *GCECloud) PatchBetaSecurityPolicy(sp *computebeta.SecurityPolicy) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newSecurityPolicyMetricContextWithVersion("patch", computeBetaVersion) - return mc.Observe(gce.c.BetaSecurityPolicies().Patch(context.Background(), meta.GlobalKey(sp.Name), sp)) + return mc.Observe(gce.c.BetaSecurityPolicies().Patch(ctx, meta.GlobalKey(sp.Name), sp)) } // GetRuleForBetaSecurityPolicy gets rule from a security policy. func (gce *GCECloud) GetRuleForBetaSecurityPolicy(name string) (*computebeta.SecurityPolicyRule, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newSecurityPolicyMetricContextWithVersion("get_rule", computeBetaVersion) - v, err := gce.c.BetaSecurityPolicies().GetRule(context.Background(), meta.GlobalKey(name)) + v, err := gce.c.BetaSecurityPolicies().GetRule(ctx, meta.GlobalKey(name)) return v, mc.Observe(err) } // AddRuletoBetaSecurityPolicy adds the given security policy rule to // a security policy. func (gce *GCECloud) AddRuletoBetaSecurityPolicy(name string, spr *computebeta.SecurityPolicyRule) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newSecurityPolicyMetricContextWithVersion("add_rule", computeBetaVersion) - return mc.Observe(gce.c.BetaSecurityPolicies().AddRule(context.Background(), meta.GlobalKey(name), spr)) + return mc.Observe(gce.c.BetaSecurityPolicies().AddRule(ctx, meta.GlobalKey(name), spr)) } // PatchRuleForBetaSecurityPolicy patches the given security policy // rule to a security policy. func (gce *GCECloud) PatchRuleForBetaSecurityPolicy(name string, spr *computebeta.SecurityPolicyRule) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newSecurityPolicyMetricContextWithVersion("patch_rule", computeBetaVersion) - return mc.Observe(gce.c.BetaSecurityPolicies().PatchRule(context.Background(), meta.GlobalKey(name), spr)) + return mc.Observe(gce.c.BetaSecurityPolicies().PatchRule(ctx, meta.GlobalKey(name), spr)) } // RemoveRuleFromBetaSecurityPolicy removes rule from a security policy. func (gce *GCECloud) RemoveRuleFromBetaSecurityPolicy(name string) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newSecurityPolicyMetricContextWithVersion("remove_rule", computeBetaVersion) - return mc.Observe(gce.c.BetaSecurityPolicies().RemoveRule(context.Background(), meta.GlobalKey(name))) + return mc.Observe(gce.c.BetaSecurityPolicies().RemoveRule(ctx, meta.GlobalKey(name))) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_targetpool.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_targetpool.go index 8fd3b3704e..8c1127e749 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_targetpool.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_targetpool.go @@ -17,10 +17,9 @@ limitations under the License. package gce import ( - "context" - compute "google.golang.org/api/compute/v1" + "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud" "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/meta" ) @@ -30,37 +29,52 @@ func newTargetPoolMetricContext(request, region string) *metricContext { // GetTargetPool returns the TargetPool by name. func (gce *GCECloud) GetTargetPool(name, region string) (*compute.TargetPool, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newTargetPoolMetricContext("get", region) - v, err := gce.c.TargetPools().Get(context.Background(), meta.RegionalKey(name, region)) + v, err := gce.c.TargetPools().Get(ctx, meta.RegionalKey(name, region)) return v, mc.Observe(err) } // CreateTargetPool creates the passed TargetPool func (gce *GCECloud) CreateTargetPool(tp *compute.TargetPool, region string) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newTargetPoolMetricContext("create", region) - return mc.Observe(gce.c.TargetPools().Insert(context.Background(), meta.RegionalKey(tp.Name, region), tp)) + return mc.Observe(gce.c.TargetPools().Insert(ctx, meta.RegionalKey(tp.Name, region), tp)) } // DeleteTargetPool deletes TargetPool by name. func (gce *GCECloud) DeleteTargetPool(name, region string) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newTargetPoolMetricContext("delete", region) - return mc.Observe(gce.c.TargetPools().Delete(context.Background(), meta.RegionalKey(name, region))) + return mc.Observe(gce.c.TargetPools().Delete(ctx, meta.RegionalKey(name, region))) } // AddInstancesToTargetPool adds instances by link to the TargetPool func (gce *GCECloud) AddInstancesToTargetPool(name, region string, instanceRefs []*compute.InstanceReference) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + req := &compute.TargetPoolsAddInstanceRequest{ Instances: instanceRefs, } mc := newTargetPoolMetricContext("add_instances", region) - return mc.Observe(gce.c.TargetPools().AddInstance(context.Background(), meta.RegionalKey(name, region), req)) + return mc.Observe(gce.c.TargetPools().AddInstance(ctx, meta.RegionalKey(name, region), req)) } // RemoveInstancesFromTargetPool removes instances by link to the TargetPool func (gce *GCECloud) RemoveInstancesFromTargetPool(name, region string, instanceRefs []*compute.InstanceReference) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + req := &compute.TargetPoolsRemoveInstanceRequest{ Instances: instanceRefs, } mc := newTargetPoolMetricContext("remove_instances", region) - return mc.Observe(gce.c.TargetPools().RemoveInstance(context.Background(), meta.RegionalKey(name, region), req)) + return mc.Observe(gce.c.TargetPools().RemoveInstance(ctx, meta.RegionalKey(name, region), req)) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_targetproxy.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_targetproxy.go index 36d21bcff6..c5bd21aaed 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_targetproxy.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_targetproxy.go @@ -17,10 +17,9 @@ limitations under the License. package gce import ( - "context" - compute "google.golang.org/api/compute/v1" + "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud" "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/filter" "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/meta" ) @@ -31,34 +30,49 @@ func newTargetProxyMetricContext(request string) *metricContext { // GetTargetHttpProxy returns the UrlMap by name. func (gce *GCECloud) GetTargetHttpProxy(name string) (*compute.TargetHttpProxy, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newTargetProxyMetricContext("get") - v, err := gce.c.TargetHttpProxies().Get(context.Background(), meta.GlobalKey(name)) + v, err := gce.c.TargetHttpProxies().Get(ctx, meta.GlobalKey(name)) return v, mc.Observe(err) } // CreateTargetHttpProxy creates a TargetHttpProxy func (gce *GCECloud) CreateTargetHttpProxy(proxy *compute.TargetHttpProxy) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newTargetProxyMetricContext("create") - return mc.Observe(gce.c.TargetHttpProxies().Insert(context.Background(), meta.GlobalKey(proxy.Name), proxy)) + return mc.Observe(gce.c.TargetHttpProxies().Insert(ctx, meta.GlobalKey(proxy.Name), proxy)) } // SetUrlMapForTargetHttpProxy sets the given UrlMap for the given TargetHttpProxy. -func (gce *GCECloud) SetUrlMapForTargetHttpProxy(proxy *compute.TargetHttpProxy, urlMap *compute.UrlMap) error { - ref := &compute.UrlMapReference{UrlMap: urlMap.SelfLink} +func (gce *GCECloud) SetUrlMapForTargetHttpProxy(proxy *compute.TargetHttpProxy, urlMapLink string) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + + ref := &compute.UrlMapReference{UrlMap: urlMapLink} mc := newTargetProxyMetricContext("set_url_map") - return mc.Observe(gce.c.TargetHttpProxies().SetUrlMap(context.Background(), meta.GlobalKey(proxy.Name), ref)) + return mc.Observe(gce.c.TargetHttpProxies().SetUrlMap(ctx, meta.GlobalKey(proxy.Name), ref)) } // DeleteTargetHttpProxy deletes the TargetHttpProxy by name. func (gce *GCECloud) DeleteTargetHttpProxy(name string) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newTargetProxyMetricContext("delete") - return mc.Observe(gce.c.TargetHttpProxies().Delete(context.Background(), meta.GlobalKey(name))) + return mc.Observe(gce.c.TargetHttpProxies().Delete(ctx, meta.GlobalKey(name))) } // ListTargetHttpProxies lists all TargetHttpProxies in the project. func (gce *GCECloud) ListTargetHttpProxies() ([]*compute.TargetHttpProxy, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newTargetProxyMetricContext("list") - v, err := gce.c.TargetHttpProxies().List(context.Background(), filter.None) + v, err := gce.c.TargetHttpProxies().List(ctx, filter.None) return v, mc.Observe(err) } @@ -66,42 +80,60 @@ func (gce *GCECloud) ListTargetHttpProxies() ([]*compute.TargetHttpProxy, error) // GetTargetHttpsProxy returns the UrlMap by name. func (gce *GCECloud) GetTargetHttpsProxy(name string) (*compute.TargetHttpsProxy, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newTargetProxyMetricContext("get") - v, err := gce.c.TargetHttpsProxies().Get(context.Background(), meta.GlobalKey(name)) + v, err := gce.c.TargetHttpsProxies().Get(ctx, meta.GlobalKey(name)) return v, mc.Observe(err) } // CreateTargetHttpsProxy creates a TargetHttpsProxy func (gce *GCECloud) CreateTargetHttpsProxy(proxy *compute.TargetHttpsProxy) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newTargetProxyMetricContext("create") - return mc.Observe(gce.c.TargetHttpsProxies().Insert(context.Background(), meta.GlobalKey(proxy.Name), proxy)) + return mc.Observe(gce.c.TargetHttpsProxies().Insert(ctx, meta.GlobalKey(proxy.Name), proxy)) } // SetUrlMapForTargetHttpsProxy sets the given UrlMap for the given TargetHttpsProxy. -func (gce *GCECloud) SetUrlMapForTargetHttpsProxy(proxy *compute.TargetHttpsProxy, urlMap *compute.UrlMap) error { +func (gce *GCECloud) SetUrlMapForTargetHttpsProxy(proxy *compute.TargetHttpsProxy, urlMapLink string) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newTargetProxyMetricContext("set_url_map") - ref := &compute.UrlMapReference{UrlMap: urlMap.SelfLink} - return mc.Observe(gce.c.TargetHttpsProxies().SetUrlMap(context.Background(), meta.GlobalKey(proxy.Name), ref)) + ref := &compute.UrlMapReference{UrlMap: urlMapLink} + return mc.Observe(gce.c.TargetHttpsProxies().SetUrlMap(ctx, meta.GlobalKey(proxy.Name), ref)) } // SetSslCertificateForTargetHttpsProxy sets the given SslCertificate for the given TargetHttpsProxy. func (gce *GCECloud) SetSslCertificateForTargetHttpsProxy(proxy *compute.TargetHttpsProxy, sslCertURLs []string) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newTargetProxyMetricContext("set_ssl_cert") req := &compute.TargetHttpsProxiesSetSslCertificatesRequest{ SslCertificates: sslCertURLs, } - return mc.Observe(gce.c.TargetHttpsProxies().SetSslCertificates(context.Background(), meta.GlobalKey(proxy.Name), req)) + return mc.Observe(gce.c.TargetHttpsProxies().SetSslCertificates(ctx, meta.GlobalKey(proxy.Name), req)) } // DeleteTargetHttpsProxy deletes the TargetHttpsProxy by name. func (gce *GCECloud) DeleteTargetHttpsProxy(name string) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newTargetProxyMetricContext("delete") - return mc.Observe(gce.c.TargetHttpsProxies().Delete(context.Background(), meta.GlobalKey(name))) + return mc.Observe(gce.c.TargetHttpsProxies().Delete(ctx, meta.GlobalKey(name))) } // ListTargetHttpsProxies lists all TargetHttpsProxies in the project. func (gce *GCECloud) ListTargetHttpsProxies() ([]*compute.TargetHttpsProxy, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newTargetProxyMetricContext("list") - v, err := gce.c.TargetHttpsProxies().List(context.Background(), filter.None) + v, err := gce.c.TargetHttpsProxies().List(ctx, filter.None) return v, mc.Observe(err) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_urlmap.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_urlmap.go index 54ceccbf54..b0e60093c1 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_urlmap.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_urlmap.go @@ -17,10 +17,9 @@ limitations under the License. package gce import ( - "context" - compute "google.golang.org/api/compute/v1" + "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud" "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/filter" "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/meta" ) @@ -31,32 +30,47 @@ func newUrlMapMetricContext(request string) *metricContext { // GetUrlMap returns the UrlMap by name. func (gce *GCECloud) GetUrlMap(name string) (*compute.UrlMap, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newUrlMapMetricContext("get") - v, err := gce.c.UrlMaps().Get(context.Background(), meta.GlobalKey(name)) + v, err := gce.c.UrlMaps().Get(ctx, meta.GlobalKey(name)) return v, mc.Observe(err) } // CreateUrlMap creates a url map func (gce *GCECloud) CreateUrlMap(urlMap *compute.UrlMap) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newUrlMapMetricContext("create") - return mc.Observe(gce.c.UrlMaps().Insert(context.Background(), meta.GlobalKey(urlMap.Name), urlMap)) + return mc.Observe(gce.c.UrlMaps().Insert(ctx, meta.GlobalKey(urlMap.Name), urlMap)) } // UpdateUrlMap applies the given UrlMap as an update func (gce *GCECloud) UpdateUrlMap(urlMap *compute.UrlMap) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newUrlMapMetricContext("update") - return mc.Observe(gce.c.UrlMaps().Update(context.Background(), meta.GlobalKey(urlMap.Name), urlMap)) + return mc.Observe(gce.c.UrlMaps().Update(ctx, meta.GlobalKey(urlMap.Name), urlMap)) } // DeleteUrlMap deletes a url map by name. func (gce *GCECloud) DeleteUrlMap(name string) error { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newUrlMapMetricContext("delete") - return mc.Observe(gce.c.UrlMaps().Delete(context.Background(), meta.GlobalKey(name))) + return mc.Observe(gce.c.UrlMaps().Delete(ctx, meta.GlobalKey(name))) } // ListUrlMaps lists all UrlMaps in the project. func (gce *GCECloud) ListUrlMaps() ([]*compute.UrlMap, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newUrlMapMetricContext("list") - v, err := gce.c.UrlMaps().List(context.Background(), filter.None) + v, err := gce.c.UrlMaps().List(ctx, filter.None) return v, mc.Observe(err) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_zones.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_zones.go index 6c745e34c2..503ca348f4 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_zones.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_zones.go @@ -24,6 +24,7 @@ import ( "k8s.io/apimachinery/pkg/types" "k8s.io/kubernetes/pkg/cloudprovider" + "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud" "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/filter" ) @@ -72,8 +73,11 @@ func (gce *GCECloud) GetZoneByNodeName(ctx context.Context, nodeName types.NodeN // ListZonesInRegion returns all zones in a GCP region func (gce *GCECloud) ListZonesInRegion(region string) ([]*compute.Zone, error) { + ctx, cancel := cloud.ContextWithCallTimeout() + defer cancel() + mc := newZonesMetricContext("list", region) - list, err := gce.c.Zones().List(context.Background(), filter.Regexp("region", gce.getRegionLink(region))) + list, err := gce.c.Zones().List(ctx, filter.Regexp("region", gce.getRegionLink(region))) if err != nil { return nil, mc.Observe(err) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/support.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/support.go index 37dc75b0b0..7861e08acb 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/support.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/support.go @@ -50,17 +50,15 @@ type gceRateLimiter struct { // operations. func (l *gceRateLimiter) Accept(ctx context.Context, key *cloud.RateLimitKey) error { if key.Operation == "Get" && key.Service == "Operations" { - ch := make(chan struct{}) - go func() { - l.gce.operationPollRateLimiter.Accept() - close(ch) - }() - select { - case <-ch: - break - case <-ctx.Done(): - return ctx.Err() + // Wait a minimum amount of time regardless of rate limiter. + rl := &cloud.MinimumRateLimiter{ + // Convert flowcontrol.RateLimiter into cloud.RateLimiter + RateLimiter: &cloud.AcceptRateLimiter{ + Acceptor: l.gce.operationPollRateLimiter, + }, + Minimum: operationPollInterval, } + return rl.Accept(ctx, key) } return nil } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/openstack/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/openstack/BUILD index bf9d4c7dfd..039d113728 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/openstack/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/openstack/BUILD @@ -28,6 +28,13 @@ go_library( "//pkg/util/mount:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/util:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/client-go/util/cert:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/gophercloud/gophercloud:go_default_library", "//vendor/github.com/gophercloud/gophercloud/openstack:go_default_library", @@ -56,13 +63,6 @@ go_library( "//vendor/github.com/mitchellh/mapstructure:go_default_library", "//vendor/github.com/prometheus/client_golang/prometheus:go_default_library", "//vendor/gopkg.in/gcfg.v1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/client-go/util/cert:go_default_library", "//vendor/k8s.io/utils/exec:go_default_library", ], ) @@ -77,15 +77,15 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/cloudprovider:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/rand:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", "//vendor/github.com/gophercloud/gophercloud:go_default_library", "//vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/servers:go_default_library", "//vendor/github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/layer3/routers:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/rand:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/openstack/openstack.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/openstack/openstack.go index 5f2e6925cb..9b3a7d3272 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/openstack/openstack.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/openstack/openstack.go @@ -26,6 +26,7 @@ import ( "net" "net/http" "os" + "reflect" "regexp" "strings" "time" @@ -573,6 +574,11 @@ func (os *OpenStack) HasClusterID() bool { func (os *OpenStack) LoadBalancer() (cloudprovider.LoadBalancer, bool) { glog.V(4).Info("openstack.LoadBalancer() called") + if reflect.DeepEqual(os.lbOpts, LoadBalancerOpts{}) { + glog.V(4).Info("LoadBalancer section is empty/not defined in cloud-config") + return nil, false + } + network, err := os.NewNetworkV2() if err != nil { return nil, false diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/openstack/openstack_loadbalancer.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/openstack/openstack_loadbalancer.go index 72bccb7e35..f0dad3d558 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/openstack/openstack_loadbalancer.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/openstack/openstack_loadbalancer.go @@ -554,14 +554,14 @@ func getSubnetIDForLB(compute *gophercloud.ServiceClient, node v1.Node) (string, } // getNodeSecurityGroupIDForLB lists node-security-groups for specific nodes -func getNodeSecurityGroupIDForLB(compute *gophercloud.ServiceClient, nodes []*v1.Node) ([]string, error) { - nodeSecurityGroupIDs := sets.NewString() +func getNodeSecurityGroupIDForLB(compute *gophercloud.ServiceClient, network *gophercloud.ServiceClient, nodes []*v1.Node) ([]string, error) { + secGroupNames := sets.NewString() for _, node := range nodes { nodeName := types.NodeName(node.Name) srv, err := getServerByName(compute, nodeName) if err != nil { - return nodeSecurityGroupIDs.List(), err + return []string{}, err } // use the first node-security-groups @@ -569,11 +569,19 @@ func getNodeSecurityGroupIDForLB(compute *gophercloud.ServiceClient, nodes []*v1 // case 1: node1:SG1 node2:SG2 return SG1,SG2 // case 2: node1:SG1,SG2 node2:SG3,SG4 return SG1,SG3 // case 3: node1:SG1,SG2 node2:SG2,SG3 return SG1,SG2 - securityGroupName := srv.SecurityGroups[0]["name"] - nodeSecurityGroupIDs.Insert(securityGroupName.(string)) + secGroupNames.Insert(srv.SecurityGroups[0]["name"].(string)) } - return nodeSecurityGroupIDs.List(), nil + secGroupIDs := make([]string, secGroupNames.Len()) + for i, name := range secGroupNames.List() { + secGroupID, err := groups.IDFromName(network, name) + if err != nil { + return []string{}, err + } + secGroupIDs[i] = secGroupID + } + + return secGroupIDs, nil } // isSecurityGroupNotFound return true while 'err' is object of gophercloud.ErrResourceNotFound @@ -997,7 +1005,7 @@ func (lbaas *LbaasV2) ensureSecurityGroup(clusterName string, apiService *v1.Ser // find node-security-group for service var err error if len(lbaas.opts.NodeSecurityGroupIDs) == 0 { - lbaas.opts.NodeSecurityGroupIDs, err = getNodeSecurityGroupIDForLB(lbaas.compute, nodes) + lbaas.opts.NodeSecurityGroupIDs, err = getNodeSecurityGroupIDForLB(lbaas.compute, lbaas.network, nodes) if err != nil { return fmt.Errorf("failed to find node-security-group for loadbalancer service %s/%s: %v", apiService.Namespace, apiService.Name, err) } @@ -1311,7 +1319,7 @@ func (lbaas *LbaasV2) updateSecurityGroup(clusterName string, apiService *v1.Ser originalNodeSecurityGroupIDs := lbaas.opts.NodeSecurityGroupIDs var err error - lbaas.opts.NodeSecurityGroupIDs, err = getNodeSecurityGroupIDForLB(lbaas.compute, nodes) + lbaas.opts.NodeSecurityGroupIDs, err = getNodeSecurityGroupIDForLB(lbaas.compute, lbaas.network, nodes) if err != nil { return fmt.Errorf("failed to find node-security-group for loadbalancer service %s/%s: %v", apiService.Namespace, apiService.Name, err) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/openstack/openstack_volumes.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/openstack/openstack_volumes.go index f50a231197..d8ea91c208 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/openstack/openstack_volumes.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/openstack/openstack_volumes.go @@ -443,10 +443,10 @@ func (os *OpenStack) getVolume(volumeID string) (Volume, error) { } // CreateVolume creates a volume of given size (in GiB) -func (os *OpenStack) CreateVolume(name string, size int, vtype, availability string, tags *map[string]string) (string, string, bool, error) { +func (os *OpenStack) CreateVolume(name string, size int, vtype, availability string, tags *map[string]string) (string, string, string, bool, error) { volumes, err := os.volumeService("") if err != nil { - return "", "", os.bsOpts.IgnoreVolumeAZ, fmt.Errorf("unable to initialize cinder client for region: %s, err: %v", os.region, err) + return "", "", "", os.bsOpts.IgnoreVolumeAZ, fmt.Errorf("unable to initialize cinder client for region: %s, err: %v", os.region, err) } opts := volumeCreateOpts{ @@ -462,11 +462,11 @@ func (os *OpenStack) CreateVolume(name string, size int, vtype, availability str volumeID, volumeAZ, err := volumes.createVolume(opts) if err != nil { - return "", "", os.bsOpts.IgnoreVolumeAZ, fmt.Errorf("failed to create a %d GB volume: %v", size, err) + return "", "", "", os.bsOpts.IgnoreVolumeAZ, fmt.Errorf("failed to create a %d GB volume: %v", size, err) } - glog.Infof("Created volume %v in Availability Zone: %v Ignore volume AZ: %v", volumeID, volumeAZ, os.bsOpts.IgnoreVolumeAZ) - return volumeID, volumeAZ, os.bsOpts.IgnoreVolumeAZ, nil + glog.Infof("Created volume %v in Availability Zone: %v Region: %v Ignore volume AZ: %v", volumeID, volumeAZ, os.region, os.bsOpts.IgnoreVolumeAZ) + return volumeID, volumeAZ, os.region, os.bsOpts.IgnoreVolumeAZ, nil } // GetDevicePathBySerialID returns the path of an attached block storage volume, specified by its id. diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/ovirt/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/ovirt/BUILD index 72d16ebcfe..bcd0e508ee 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/ovirt/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/ovirt/BUILD @@ -13,9 +13,9 @@ go_library( deps = [ "//pkg/cloudprovider:go_default_library", "//pkg/controller:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//vendor/gopkg.in/gcfg.v1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/photon/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/photon/BUILD index 145d766729..73394f1baf 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/photon/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/photon/BUILD @@ -14,11 +14,11 @@ go_library( "//pkg/apis/core/v1/helper:go_default_library", "//pkg/cloudprovider:go_default_library", "//pkg/controller:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/vmware/photon-controller-go-sdk/photon:go_default_library", "//vendor/gopkg.in/gcfg.v1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", ], ) @@ -28,8 +28,8 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/cloudprovider:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/rand:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/rand:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/BUILD index 4c6b27a032..8c0be034f9 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/BUILD @@ -22,16 +22,16 @@ go_library( "//pkg/cloudprovider/providers/vsphere/vclib/diskmanagers:go_default_library", "//pkg/controller:go_default_library", "//pkg/util/version:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/client-go/informers:go_default_library", + "//staging/src/k8s.io/client-go/listers/core/v1:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/vmware/govmomi/vim25:go_default_library", "//vendor/github.com/vmware/govmomi/vim25/mo:go_default_library", "//vendor/gopkg.in/gcfg.v1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/client-go/informers:go_default_library", - "//vendor/k8s.io/client-go/listers/core/v1:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", ], ) @@ -45,18 +45,19 @@ go_test( deps = [ "//pkg/cloudprovider:go_default_library", "//pkg/cloudprovider/providers/vsphere/vclib:go_default_library", + "//pkg/cloudprovider/providers/vsphere/vclib/fixtures:go_default_library", "//pkg/controller:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/rand:go_default_library", + "//staging/src/k8s.io/client-go/informers:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", "//vendor/github.com/vmware/govmomi/lookup/simulator:go_default_library", "//vendor/github.com/vmware/govmomi/simulator:go_default_library", "//vendor/github.com/vmware/govmomi/simulator/vpx:go_default_library", "//vendor/github.com/vmware/govmomi/sts/simulator:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/rand:go_default_library", - "//vendor/k8s.io/client-go/informers:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/OWNERS b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/OWNERS index ee4afaec2d..376ca6b4ae 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/OWNERS +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/OWNERS @@ -5,3 +5,5 @@ approvers: - imkin - kerneltime - luomiao +- frapposelli +- dougm diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/nodemanager.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/nodemanager.go index 81aa928e99..16c1953fc3 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/nodemanager.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/nodemanager.go @@ -176,13 +176,13 @@ func (nm *NodeManager) DiscoverNode(node *v1.Node) error { defer cancel() vm, err := res.datacenter.GetVMByUUID(ctx, nodeUUID) if err != nil { - glog.V(4).Infof("Error %q while looking for vm=%+v in vc=%s and datacenter=%s", - err, node.Name, vm, res.vc, res.datacenter.Name()) + glog.V(4).Infof("Error while looking for vm=%+v in vc=%s and datacenter=%s: %v", + vm, res.vc, res.datacenter.Name(), err) if err != vclib.ErrNoVMFound { setGlobalErr(err) } else { glog.V(4).Infof("Did not find node %s in vc=%s and datacenter=%s", - node.Name, res.vc, res.datacenter.Name(), err) + node.Name, res.vc, res.datacenter.Name()) } continue } @@ -309,7 +309,7 @@ func (nm *NodeManager) GetNodeDetails() ([]NodeDetails, error) { if err != nil { return nil, err } - glog.V(4).Infof("Updated NodeInfo %q for node %q.", nodeInfo, nodeName) + glog.V(4).Infof("Updated NodeInfo %v for node %q.", nodeInfo, nodeName) nodeDetails = append(nodeDetails, NodeDetails{nodeName, nodeInfo.vm, nodeInfo.vmUUID}) } return nodeDetails, nil @@ -351,7 +351,12 @@ func (nm *NodeManager) renewNodeInfo(nodeInfo *NodeInfo, reconnect bool) (*NodeI } } vm := nodeInfo.vm.RenewVM(vsphereInstance.conn.Client) - return &NodeInfo{vm: &vm, dataCenter: vm.Datacenter, vcServer: nodeInfo.vcServer}, nil + return &NodeInfo{ + vm: &vm, + dataCenter: vm.Datacenter, + vcServer: nodeInfo.vcServer, + vmUUID: nodeInfo.vmUUID, + }, nil } func (nodeInfo *NodeInfo) VM() *vclib.VirtualMachine { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vclib/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vclib/BUILD index 9bb59c3ab1..934054d1ec 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vclib/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vclib/BUILD @@ -24,6 +24,7 @@ go_library( ], importpath = "k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vclib", deps = [ + "//pkg/version:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/prometheus/client_golang/prometheus:go_default_library", "//vendor/github.com/vmware/govmomi/find:go_default_library", @@ -52,6 +53,7 @@ filegroup( srcs = [ ":package-srcs", "//pkg/cloudprovider/providers/vsphere/vclib/diskmanagers:all-srcs", + "//pkg/cloudprovider/providers/vsphere/vclib/fixtures:all-srcs", ], tags = ["automanaged"], ) @@ -59,6 +61,7 @@ filegroup( go_test( name = "go_default_test", srcs = [ + "connection_test.go", "datacenter_test.go", "datastore_test.go", "folder_test.go", @@ -67,6 +70,7 @@ go_test( ], embed = [":go_default_library"], deps = [ + "//pkg/cloudprovider/providers/vsphere/vclib/fixtures:go_default_library", "//vendor/github.com/vmware/govmomi:go_default_library", "//vendor/github.com/vmware/govmomi/object:go_default_library", "//vendor/github.com/vmware/govmomi/simulator:go_default_library", diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vclib/connection.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vclib/connection.go index 91f0e8a963..be4c5e3f53 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vclib/connection.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vclib/connection.go @@ -20,6 +20,7 @@ import ( "context" "crypto/tls" "encoding/pem" + "fmt" "net" neturl "net/url" "sync" @@ -29,6 +30,7 @@ import ( "github.com/vmware/govmomi/sts" "github.com/vmware/govmomi/vim25" "github.com/vmware/govmomi/vim25/soap" + "k8s.io/kubernetes/pkg/version" ) // VSphereConnection contains information for connecting to vCenter @@ -38,6 +40,8 @@ type VSphereConnection struct { Password string Hostname string Port string + CACert string + Thumbprint string Insecure bool RoundTripperCount uint credentialsLock sync.Mutex @@ -129,7 +133,24 @@ func (connection *VSphereConnection) login(ctx context.Context, client *vim25.Cl // Logout calls SessionManager.Logout for the given connection. func (connection *VSphereConnection) Logout(ctx context.Context) { - m := session.NewManager(connection.Client) + clientLock.Lock() + c := connection.Client + clientLock.Unlock() + if c == nil { + return + } + + m := session.NewManager(c) + + hasActiveSession, err := m.SessionIsActive(ctx) + if err != nil { + glog.Errorf("Logout failed: %s", err) + return + } + if !hasActiveSession { + glog.Errorf("No active session, cannot logout") + return + } if err := m.Logout(ctx); err != nil { glog.Errorf("Logout failed: %s", err) } @@ -144,11 +165,25 @@ func (connection *VSphereConnection) NewClient(ctx context.Context) (*vim25.Clie } sc := soap.NewClient(url, connection.Insecure) + + if ca := connection.CACert; ca != "" { + if err := sc.SetRootCAs(ca); err != nil { + return nil, err + } + } + + tpHost := connection.Hostname + ":" + connection.Port + sc.SetThumbprint(tpHost, connection.Thumbprint) + client, err := vim25.NewClient(ctx, sc) if err != nil { glog.Errorf("Failed to create new client. err: %+v", err) return nil, err } + + k8sVersion := version.Get().GitVersion + client.UserAgent = fmt.Sprintf("kubernetes-cloudprovider/%s", k8sVersion) + err = connection.login(ctx, client) if err != nil { return nil, err diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vclib/diskmanagers/vmdm.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vclib/diskmanagers/vmdm.go index 1979d57252..551a54c6c2 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vclib/diskmanagers/vmdm.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vclib/diskmanagers/vmdm.go @@ -102,7 +102,7 @@ func (vmdisk vmDiskManager) Create(ctx context.Context, datastore *vclib.Datasto dummyVM, err = datastore.Datacenter.GetVMByPath(ctx, vmdisk.vmOptions.VMFolder.InventoryPath+"/"+dummyVMFullName) if err != nil { // Create a dummy VM - glog.V(1).Info("Creating Dummy VM: %q", dummyVMFullName) + glog.V(1).Infof("Creating Dummy VM: %q", dummyVMFullName) dummyVM, err = vmdisk.createDummyVM(ctx, datastore.Datacenter, dummyVMFullName) if err != nil { glog.Errorf("Failed to create Dummy VM. err: %v", err) @@ -132,7 +132,7 @@ func (vmdisk vmDiskManager) Create(ctx context.Context, datastore *vclib.Datasto fileAlreadyExist = isAlreadyExists(vmdisk.diskPath, err) if fileAlreadyExist { //Skip error and continue to detach the disk as the disk was already created on the datastore. - glog.V(vclib.LogLevel).Info("File: %v already exists", vmdisk.diskPath) + glog.V(vclib.LogLevel).Infof("File: %v already exists", vmdisk.diskPath) } else { glog.Errorf("Failed to attach the disk to VM: %q with err: %+v", dummyVMFullName, err) return "", err @@ -143,7 +143,7 @@ func (vmdisk vmDiskManager) Create(ctx context.Context, datastore *vclib.Datasto if err != nil { if vclib.DiskNotFoundErrMsg == err.Error() && fileAlreadyExist { // Skip error if disk was already detached from the dummy VM but still present on the datastore. - glog.V(vclib.LogLevel).Info("File: %v is already detached", vmdisk.diskPath) + glog.V(vclib.LogLevel).Infof("File: %v is already detached", vmdisk.diskPath) } else { glog.Errorf("Failed to detach the disk: %q from VM: %q with err: %+v", vmdisk.diskPath, dummyVMFullName, err) return "", err diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vsphere.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vsphere.go index 27b0d8444f..b450787d66 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vsphere.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vsphere.go @@ -103,6 +103,8 @@ type VirtualCenterConfig struct { Datacenters string `gcfg:"datacenters"` // Soap round tripper count (retries = RoundTripper - 1) RoundTripperCount uint `gcfg:"soap-roundtrip-count"` + // Thumbprint of the VCenter's certificate thumbprint + Thumbprint string `gcfg:"thumbprint"` } // Structure that represents the content of vsphere.conf file. @@ -121,6 +123,11 @@ type VSphereConfig struct { VCenterPort string `gcfg:"port"` // True if vCenter uses self-signed cert. InsecureFlag bool `gcfg:"insecure-flag"` + // Specifies the path to a CA certificate in PEM format. Optional; if not + // configured, the system's CA certificates will be used. + CAFile string `gcfg:"ca-file"` + // Thumbprint of the VCenter's certificate thumbprint + Thumbprint string `gcfg:"thumbprint"` // Datacenter in which VMs are located. // Deprecated. Use "datacenters" instead. Datacenter string `gcfg:"datacenter"` @@ -134,7 +141,7 @@ type VSphereConfig struct { WorkingDir string `gcfg:"working-dir"` // Soap round tripper count (retries = RoundTripper - 1) RoundTripperCount uint `gcfg:"soap-roundtrip-count"` - // Deprecated as the virtual machines will be automatically discovered. + // Is required on the controller-manager if it does not run on a VMware machine // VMUUID is the VM Instance UUID of virtual machine which can be retrieved from instanceUuid // property in VmConfigInfo, or also set as vc.uuid in VMX file. // If not set, will be fetched from the machine via sysfs (requires root) @@ -334,6 +341,7 @@ func populateVsphereInstanceMap(cfg *VSphereConfig) (map[string]*VSphereInstance VCenterPort: cfg.Global.VCenterPort, Datacenters: cfg.Global.Datacenter, RoundTripperCount: cfg.Global.RoundTripperCount, + Thumbprint: cfg.Global.Thumbprint, } // Note: If secrets info is provided username and password will be populated @@ -345,7 +353,10 @@ func populateVsphereInstanceMap(cfg *VSphereConfig) (map[string]*VSphereInstance Insecure: cfg.Global.InsecureFlag, RoundTripperCount: vcConfig.RoundTripperCount, Port: vcConfig.VCenterPort, + CACert: cfg.Global.CAFile, + Thumbprint: cfg.Global.Thumbprint, } + vsphereIns := VSphereInstance{ conn: &vSphereConn, cfg: &vcConfig, @@ -417,6 +428,8 @@ func populateVsphereInstanceMap(cfg *VSphereConfig) (map[string]*VSphereInstance Insecure: cfg.Global.InsecureFlag, RoundTripperCount: vcConfig.RoundTripperCount, Port: vcConfig.VCenterPort, + CACert: cfg.Global.CAFile, + Thumbprint: vcConfig.Thumbprint, } vsphereIns := VSphereInstance{ conn: &vSphereConn, @@ -442,10 +455,14 @@ func newControllerNode(cfg VSphereConfig) (*VSphere, error) { glog.Errorf("Failed to get hostname. err: %+v", err) return nil, err } - vs.vmUUID, err = getVMUUID() - if err != nil { - glog.Errorf("Failed to get uuid. err: %+v", err) - return nil, err + if cfg.Global.VMUUID != "" { + vs.vmUUID = cfg.Global.VMUUID + } else { + vs.vmUUID, err = getVMUUID() + if err != nil { + glog.Errorf("Failed to get uuid. err: %+v", err) + return nil, err + } } runtime.SetFinalizer(vs, logout) return vs, nil @@ -493,11 +510,8 @@ func buildVSphereFromConfig(cfg VSphereConfig) (*VSphere, error) { func logout(vs *VSphere) { for _, vsphereIns := range vs.vsphereInstanceMap { - if vsphereIns.conn.Client != nil { - vsphereIns.conn.Logout(context.TODO()) - } + vsphereIns.conn.Logout(context.TODO()) } - } // Instances returns an implementation of Instances for vSphere. @@ -780,7 +794,7 @@ func (vs *VSphere) LoadBalancer() (cloudprovider.LoadBalancer, bool) { return nil, false } -// Zones returns an implementation of Zones for Google vSphere. +// Zones returns an implementation of Zones for vSphere. func (vs *VSphere) Zones() (cloudprovider.Zones, bool) { glog.V(1).Info("The vSphere cloud provider does not support zones") return nil, false @@ -832,7 +846,7 @@ func (vs *VSphere) AttachDisk(vmDiskPath string, storagePolicyName string, nodeN if err == nil { glog.V(4).Infof("AttachDisk: Found node %q", convertToString(nodeName)) diskUUID, err = attachDiskInternal(vmDiskPath, storagePolicyName, nodeName) - glog.V(4).Infof("AttachDisk: Retry: diskUUID %s, err +%v", convertToString(nodeName), diskUUID, err) + glog.V(4).Infof("AttachDisk: Retry: diskUUID %s, err +%v", diskUUID, err) } } } @@ -949,7 +963,7 @@ func (vs *VSphere) DiskIsAttached(volPath string, nodeName k8stypes.NodeName) (b volPath, vSphereInstance) } - glog.V(4).Infof("DiskIsAttached result: %q and error: %q, for volume: %q", attached, err, volPath) + glog.V(4).Infof("DiskIsAttached result: %v and error: %q, for volume: %q", attached, err, volPath) return attached, err } requestTime := time.Now() @@ -1040,7 +1054,7 @@ func (vs *VSphere) DisksAreAttached(nodeVolumes map[k8stypes.NodeName][]string) return nodesToRetry, nil } - glog.V(4).Info("Starting DisksAreAttached API for vSphere with nodeVolumes: %+v", nodeVolumes) + glog.V(4).Infof("Starting DisksAreAttached API for vSphere with nodeVolumes: %+v", nodeVolumes) // Create context ctx, cancel := context.WithCancel(context.Background()) defer cancel() diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vsphere_util.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vsphere_util.go index bc575838e8..1a5724e143 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vsphere_util.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vsphere_util.go @@ -479,7 +479,7 @@ func (vs *VSphere) checkDiskAttached(ctx context.Context, nodes []k8stypes.NodeN return nodesToRetry, err } nodeUUID = strings.ToLower(nodeUUID) - glog.V(9).Infof("Verifying volume for node %s with nodeuuid %q: %s", nodeName, nodeUUID, vmMoMap) + glog.V(9).Infof("Verifying volume for node %s with nodeuuid %q: %v", nodeName, nodeUUID, vmMoMap) vclib.VerifyVolumePathsForVM(vmMoMap[nodeUUID], nodeVolumes[nodeName], convertToString(nodeName), attached) } return nodesToRetry, nil diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/BUILD index d2d5ed451f..6278fd367f 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/BUILD @@ -18,24 +18,24 @@ go_test( "//pkg/apis/core/install:go_default_library", "//pkg/controller/testutil:go_default_library", "//pkg/securitycontext:go_default_library", + "//staging/src/k8s.io/api/apps/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", + "//staging/src/k8s.io/client-go/util/testing:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", - "//vendor/k8s.io/api/apps/v1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/uuid:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", - "//vendor/k8s.io/client-go/util/testing:go_default_library", ], ) @@ -59,35 +59,36 @@ go_library( "//pkg/serviceaccount:go_default_library", "//pkg/util/hash:go_default_library", "//pkg/util/taints:go_default_library", + "//staging/src/k8s.io/api/apps/v1:go_default_library", + "//staging/src/k8s.io/api/authentication/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/rand:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/strategicpatch:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/serviceaccount:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/authentication/v1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", + "//staging/src/k8s.io/client-go/util/integer:go_default_library", + "//staging/src/k8s.io/client-go/util/retry:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/golang/groupcache/lru:go_default_library", - "//vendor/k8s.io/api/apps/v1:go_default_library", - "//vendor/k8s.io/api/authentication/v1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/strategicpatch:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/serviceaccount:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/authentication/v1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", - "//vendor/k8s.io/client-go/util/integer:go_default_library", - "//vendor/k8s.io/client-go/util/retry:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/controller_utils.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/controller_utils.go index fb00a7567a..ab94ee1669 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/controller_utils.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/controller_utils.go @@ -33,6 +33,7 @@ import ( "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/clock" + "k8s.io/apimachinery/pkg/util/rand" utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/strategicpatch" @@ -1033,8 +1034,10 @@ func WaitForCacheSync(controllerName string, stopCh <-chan struct{}, cacheSyncs return true } -// ComputeHash returns a hash value calculated from pod template and a collisionCount to avoid hash collision -func ComputeHash(template *v1.PodTemplateSpec, collisionCount *int32) uint32 { +// ComputeHash returns a hash value calculated from pod template and +// a collisionCount to avoid hash collision. The hash will be safe encoded to +// avoid bad words. +func ComputeHash(template *v1.PodTemplateSpec, collisionCount *int32) string { podTemplateSpecHasher := fnv.New32a() hashutil.DeepHashObject(podTemplateSpecHasher, *template) @@ -1045,5 +1048,5 @@ func ComputeHash(template *v1.PodTemplateSpec, collisionCount *int32) uint32 { podTemplateSpecHasher.Write(collisionCountBytes) } - return podTemplateSpecHasher.Sum32() + return rand.SafeEncodeString(fmt.Sprint(podTemplateSpecHasher.Sum32())) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/deployment/util/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/deployment/util/BUILD index e3bd844011..23b57cdc39 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/deployment/util/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/deployment/util/BUILD @@ -18,23 +18,23 @@ go_library( "//pkg/apis/extensions:go_default_library", "//pkg/controller:go_default_library", "//pkg/util/labels:go_default_library", + "//staging/src/k8s.io/api/apps/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/apps/v1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", + "//staging/src/k8s.io/client-go/listers/apps/v1:go_default_library", + "//staging/src/k8s.io/client-go/listers/core/v1:go_default_library", + "//staging/src/k8s.io/client-go/util/integer:go_default_library", + "//staging/src/k8s.io/client-go/util/retry:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/apps/v1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/apps/v1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", - "//vendor/k8s.io/client-go/listers/apps/v1:go_default_library", - "//vendor/k8s.io/client-go/listers/core/v1:go_default_library", - "//vendor/k8s.io/client-go/util/integer:go_default_library", - "//vendor/k8s.io/client-go/util/retry:go_default_library", ], ) @@ -48,16 +48,16 @@ go_test( deps = [ "//pkg/controller:go_default_library", "//pkg/util/hash:go_default_library", - "//vendor/k8s.io/api/apps/v1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", - "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", + "//staging/src/k8s.io/api/apps/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/storage/names:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/volume/expand/cache/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/volume/expand/cache/BUILD index 68b2315974..c5b9b3fb39 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/volume/expand/cache/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/volume/expand/cache/BUILD @@ -14,13 +14,13 @@ go_library( "//pkg/util/strings:go_default_library", "//pkg/volume/util:go_default_library", "//pkg/volume/util/types:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/strategicpatch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/strategicpatch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", ], ) @@ -43,10 +43,10 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/volume/util/types:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/volume/persistentvolume/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/volume/persistentvolume/BUILD index ec57338d75..dd80246dcd 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/volume/persistentvolume/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/volume/persistentvolume/BUILD @@ -28,36 +28,35 @@ go_library( "//pkg/features:go_default_library", "//pkg/util/goroutinemap:go_default_library", "//pkg/util/goroutinemap/exponentialbackoff:go_default_library", - "//pkg/util/io:go_default_library", "//pkg/util/mount:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/util:go_default_library", "//pkg/volume/util/recyclerclient:go_default_library", + "//staging/src/k8s.io/api/authentication/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/storage/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/client-go/informers/core/v1:go_default_library", + "//staging/src/k8s.io/client-go/informers/storage/v1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", + "//staging/src/k8s.io/client-go/listers/core/v1:go_default_library", + "//staging/src/k8s.io/client-go/listers/storage/v1:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", + "//staging/src/k8s.io/client-go/tools/reference:go_default_library", + "//staging/src/k8s.io/client-go/util/workqueue:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/authentication/v1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/storage/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", - "//vendor/k8s.io/client-go/informers/core/v1:go_default_library", - "//vendor/k8s.io/client-go/informers/storage/v1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", - "//vendor/k8s.io/client-go/listers/core/v1:go_default_library", - "//vendor/k8s.io/client-go/listers/storage/v1:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", - "//vendor/k8s.io/client-go/tools/reference:go_default_library", - "//vendor/k8s.io/client-go/util/workqueue:go_default_library", ], ) @@ -83,28 +82,28 @@ go_test( "//pkg/volume:go_default_library", "//pkg/volume/util:go_default_library", "//pkg/volume/util/recyclerclient:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/storage/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/client-go/informers:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/listers/core/v1:go_default_library", + "//staging/src/k8s.io/client-go/listers/storage/v1:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", + "//staging/src/k8s.io/client-go/tools/reference:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/storage/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", - "//vendor/k8s.io/client-go/informers:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/listers/core/v1:go_default_library", - "//vendor/k8s.io/client-go/listers/storage/v1:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", - "//vendor/k8s.io/client-go/tools/reference:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/volume/persistentvolume/OWNERS b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/volume/persistentvolume/OWNERS index 1a69ba7d82..a0e86666b1 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/volume/persistentvolume/OWNERS +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/volume/persistentvolume/OWNERS @@ -3,3 +3,9 @@ approvers: - saad-ali - thockin - msau42 # for volume scheduling +reviewers: +- jsafrane +- saad-ali +- thockin +- msau42 # for volume scheduling +- lichuqiang # for volume scheduling diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/volume/persistentvolume/metrics/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/volume/persistentvolume/metrics/BUILD index e5a37cbfd4..e231fc8d5c 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/volume/persistentvolume/metrics/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/volume/persistentvolume/metrics/BUILD @@ -10,9 +10,9 @@ go_library( srcs = ["metrics.go"], importpath = "k8s.io/kubernetes/pkg/controller/volume/persistentvolume/metrics", deps = [ + "//staging/src/k8s.io/api/core/v1:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/prometheus/client_golang/prometheus:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/volume/persistentvolume/volume_host.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/volume/persistentvolume/volume_host.go index 7fa54790c6..74adf6d7a7 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/volume/persistentvolume/volume_host.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/volume/persistentvolume/volume_host.go @@ -26,7 +26,6 @@ import ( clientset "k8s.io/client-go/kubernetes" "k8s.io/client-go/tools/record" "k8s.io/kubernetes/pkg/cloudprovider" - "k8s.io/kubernetes/pkg/util/io" "k8s.io/kubernetes/pkg/util/mount" vol "k8s.io/kubernetes/pkg/volume" ) @@ -79,10 +78,6 @@ func (ctrl *PersistentVolumeController) GetMounter(pluginName string) mount.Inte return nil } -func (ctrl *PersistentVolumeController) GetWriter() io.Writer { - return nil -} - func (ctrl *PersistentVolumeController) GetHostName() string { return "" } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/credentialprovider/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/credentialprovider/BUILD index e397729b71..351420ae92 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/credentialprovider/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/credentialprovider/BUILD @@ -17,9 +17,9 @@ go_library( ], importpath = "k8s.io/kubernetes/pkg/credentialprovider", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//vendor/github.com/docker/docker/api/types:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/credentialprovider/gcp/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/credentialprovider/gcp/BUILD index 8f39959603..e5d2704fb8 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/credentialprovider/gcp/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/credentialprovider/gcp/BUILD @@ -16,12 +16,12 @@ go_library( importpath = "k8s.io/kubernetes/pkg/credentialprovider/gcp", deps = [ "//pkg/credentialprovider:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/spf13/pflag:go_default_library", "//vendor/golang.org/x/oauth2:go_default_library", "//vendor/golang.org/x/oauth2/google:go_default_library", "//vendor/golang.org/x/oauth2/jwt:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", ], ) @@ -34,7 +34,7 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/credentialprovider:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/credentialprovider/secrets/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/credentialprovider/secrets/BUILD index 15d41a6371..4dbe880df2 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/credentialprovider/secrets/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/credentialprovider/secrets/BUILD @@ -7,7 +7,7 @@ go_library( visibility = ["//visibility:public"], deps = [ "//pkg/credentialprovider:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/features/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/features/BUILD index c88d15f265..b0c1c85443 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/features/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/features/BUILD @@ -10,9 +10,9 @@ go_library( srcs = ["kube_features.go"], importpath = "k8s.io/kubernetes/pkg/features", deps = [ - "//vendor/k8s.io/apiextensions-apiserver/pkg/features:go_default_library", - "//vendor/k8s.io/apiserver/pkg/features:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/features:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/features:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/fieldpath/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/fieldpath/BUILD index b3cde577f4..025831118c 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/fieldpath/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/fieldpath/BUILD @@ -14,8 +14,9 @@ go_library( ], importpath = "k8s.io/kubernetes/pkg/fieldpath", deps = [ - "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation:go_default_library", ], ) @@ -24,8 +25,8 @@ go_test( srcs = ["fieldpath_test.go"], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/fieldpath/fieldpath.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/fieldpath/fieldpath.go index 4375414589..b997751ec8 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/fieldpath/fieldpath.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/fieldpath/fieldpath.go @@ -21,13 +21,19 @@ import ( "strings" "k8s.io/apimachinery/pkg/api/meta" + "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/validation" ) // FormatMap formats map[string]string to a string. func FormatMap(m map[string]string) (fmtStr string) { - for key, value := range m { - fmtStr += fmt.Sprintf("%v=%q\n", key, value) + // output with keys in sorted order to provide stable output + keys := sets.NewString() + for key := range m { + keys.Insert(key) + } + for _, key := range keys.List() { + fmtStr += fmt.Sprintf("%v=%q\n", key, m[key]) } fmtStr = strings.TrimSuffix(fmtStr, "\n") diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/BUILD index 9701a1ad2f..9bdf112658 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/BUILD @@ -44,36 +44,36 @@ go_test( "//pkg/client/clientset_generated/internalclientset/fake:go_default_library", "//pkg/kubectl/util:go_default_library", "//pkg/util/pointer:go_default_library", + "//staging/src/k8s.io/api/apps/v1:go_default_library", + "//staging/src/k8s.io/api/apps/v1beta1:go_default_library", + "//staging/src/k8s.io/api/autoscaling/v1:go_default_library", + "//staging/src/k8s.io/api/batch/v1:go_default_library", + "//staging/src/k8s.io/api/batch/v1beta1:go_default_library", + "//staging/src/k8s.io/api/batch/v2alpha1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/extensions/v1beta1:go_default_library", + "//staging/src/k8s.io/api/policy/v1beta1:go_default_library", + "//staging/src/k8s.io/api/rbac/v1:go_default_library", + "//staging/src/k8s.io/api/rbac/v1beta1:go_default_library", + "//staging/src/k8s.io/api/scheduling/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/rest/fake:go_default_library", + "//staging/src/k8s.io/client-go/scale:go_default_library", + "//staging/src/k8s.io/client-go/scale/fake:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", + "//staging/src/k8s.io/client-go/util/testing:go_default_library", "//vendor/github.com/spf13/cobra:go_default_library", - "//vendor/k8s.io/api/apps/v1:go_default_library", - "//vendor/k8s.io/api/apps/v1beta1:go_default_library", - "//vendor/k8s.io/api/autoscaling/v1:go_default_library", - "//vendor/k8s.io/api/batch/v1:go_default_library", - "//vendor/k8s.io/api/batch/v1beta1:go_default_library", - "//vendor/k8s.io/api/batch/v2alpha1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/extensions/v1beta1:go_default_library", - "//vendor/k8s.io/api/policy/v1beta1:go_default_library", - "//vendor/k8s.io/api/rbac/v1:go_default_library", - "//vendor/k8s.io/api/rbac/v1beta1:go_default_library", - "//vendor/k8s.io/api/scheduling/v1alpha1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/rest/fake:go_default_library", - "//vendor/k8s.io/client-go/scale:go_default_library", - "//vendor/k8s.io/client-go/scale/fake:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", - "//vendor/k8s.io/client-go/util/testing:go_default_library", ], ) @@ -129,45 +129,45 @@ go_library( "//pkg/kubectl/util/slice:go_default_library", "//pkg/printers:go_default_library", "//pkg/printers/internalversion:go_default_library", + "//staging/src/k8s.io/api/apps/v1:go_default_library", + "//staging/src/k8s.io/api/apps/v1beta1:go_default_library", + "//staging/src/k8s.io/api/autoscaling/v1:go_default_library", + "//staging/src/k8s.io/api/batch/v1:go_default_library", + "//staging/src/k8s.io/api/batch/v1beta1:go_default_library", + "//staging/src/k8s.io/api/batch/v2alpha1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/extensions/v1beta1:go_default_library", + "//staging/src/k8s.io/api/policy/v1beta1:go_default_library", + "//staging/src/k8s.io/api/rbac/v1:go_default_library", + "//staging/src/k8s.io/api/rbac/v1beta1:go_default_library", + "//staging/src/k8s.io/api/scheduling/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/json:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/strategicpatch:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/apps/v1:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/scale:go_default_library", + "//staging/src/k8s.io/client-go/util/integer:go_default_library", + "//staging/src/k8s.io/client-go/util/jsonpath:go_default_library", + "//staging/src/k8s.io/client-go/util/retry:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/spf13/cobra:go_default_library", "//vendor/github.com/spf13/pflag:go_default_library", - "//vendor/k8s.io/api/apps/v1:go_default_library", - "//vendor/k8s.io/api/apps/v1beta1:go_default_library", - "//vendor/k8s.io/api/autoscaling/v1:go_default_library", - "//vendor/k8s.io/api/batch/v1:go_default_library", - "//vendor/k8s.io/api/batch/v1beta1:go_default_library", - "//vendor/k8s.io/api/batch/v2alpha1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/extensions/v1beta1:go_default_library", - "//vendor/k8s.io/api/policy/v1beta1:go_default_library", - "//vendor/k8s.io/api/rbac/v1:go_default_library", - "//vendor/k8s.io/api/rbac/v1beta1:go_default_library", - "//vendor/k8s.io/api/scheduling/v1alpha1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/json:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/strategicpatch:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/apps/v1:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/scale:go_default_library", - "//vendor/k8s.io/client-go/util/integer:go_default_library", - "//vendor/k8s.io/client-go/util/jsonpath:go_default_library", - "//vendor/k8s.io/client-go/util/retry:go_default_library", "//vendor/vbom.ml/util/sortorder:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/apps/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/apps/BUILD index 8196224518..f505ddfc92 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/apps/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/apps/BUILD @@ -10,7 +10,7 @@ go_library( name = "go_default_library", srcs = ["kind_visitor.go"], importpath = "k8s.io/kubernetes/pkg/kubectl/apps", - deps = ["//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library"], + deps = ["//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library"], ) filegroup( @@ -27,13 +27,13 @@ filegroup( ) go_test( - name = "go_default_xtest", + name = "go_default_test", srcs = [ "apps_suite_test.go", "kind_visitor_test.go", ], + embed = [":go_default_library"], deps = [ - ":go_default_library", "//vendor/github.com/onsi/ginkgo:go_default_library", "//vendor/github.com/onsi/ginkgo/config:go_default_library", "//vendor/github.com/onsi/ginkgo/types:go_default_library", diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/BUILD index 0a04b54eea..ae8e7e6fa6 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/BUILD @@ -11,27 +11,30 @@ go_library( "filename_flags.go", "io_options.go", "json_yaml_flags.go", + "jsonpath_flags.go", + "kube_template_flags.go", "name_flags.go", "print_flags.go", "record_flags.go", + "template_flags.go", ], importpath = "k8s.io/kubernetes/pkg/kubectl/genericclioptions", visibility = ["//visibility:public"], deps = [ "//pkg/kubectl/genericclioptions/printers:go_default_library", "//pkg/kubectl/genericclioptions/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/json:go_default_library", + "//staging/src/k8s.io/client-go/discovery:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/restmapper:go_default_library", + "//staging/src/k8s.io/client-go/tools/clientcmd:go_default_library", + "//staging/src/k8s.io/client-go/tools/clientcmd/api:go_default_library", + "//staging/src/k8s.io/client-go/util/homedir:go_default_library", "//vendor/github.com/evanphx/json-patch:go_default_library", "//vendor/github.com/spf13/cobra:go_default_library", "//vendor/github.com/spf13/pflag:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/json:go_default_library", - "//vendor/k8s.io/client-go/discovery:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/restmapper:go_default_library", - "//vendor/k8s.io/client-go/tools/clientcmd:go_default_library", - "//vendor/k8s.io/client-go/tools/clientcmd/api:go_default_library", - "//vendor/k8s.io/client-go/util/homedir:go_default_library", ], ) @@ -57,11 +60,13 @@ go_test( name = "go_default_test", srcs = [ "json_yaml_flags_test.go", + "jsonpath_flags_test.go", "name_flags_test.go", + "template_flags_test.go", ], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/printers/jsonpath_flags.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/jsonpath_flags.go similarity index 89% rename from cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/printers/jsonpath_flags.go rename to cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/jsonpath_flags.go index d95f737620..c495fcd8b8 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/printers/jsonpath_flags.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/jsonpath_flags.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package printers +package genericclioptions import ( "fmt" @@ -23,7 +23,7 @@ import ( "github.com/spf13/cobra" - "k8s.io/kubernetes/pkg/kubectl/genericclioptions" + "k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers" ) // templates are logically optional for specifying a format. @@ -55,9 +55,9 @@ func (f *JSONPathPrintFlags) AllowedFormats() []string { // ToPrinter receives an templateFormat and returns a printer capable of // handling --template format printing. // Returns false if the specified templateFormat does not match a template format. -func (f *JSONPathPrintFlags) ToPrinter(templateFormat string) (ResourcePrinter, error) { +func (f *JSONPathPrintFlags) ToPrinter(templateFormat string) (printers.ResourcePrinter, error) { if (f.TemplateArgument == nil || len(*f.TemplateArgument) == 0) && len(templateFormat) == 0 { - return nil, genericclioptions.NoCompatiblePrinterError{Options: f, OutputFormat: &templateFormat} + return nil, NoCompatiblePrinterError{Options: f, OutputFormat: &templateFormat} } templateValue := "" @@ -76,7 +76,7 @@ func (f *JSONPathPrintFlags) ToPrinter(templateFormat string) (ResourcePrinter, } if _, supportedFormat := jsonFormats[templateFormat]; !supportedFormat { - return nil, genericclioptions.NoCompatiblePrinterError{OutputFormat: &templateFormat, AllowedFormats: f.AllowedFormats()} + return nil, NoCompatiblePrinterError{OutputFormat: &templateFormat, AllowedFormats: f.AllowedFormats()} } if len(templateValue) == 0 { @@ -92,7 +92,7 @@ func (f *JSONPathPrintFlags) ToPrinter(templateFormat string) (ResourcePrinter, templateValue = string(data) } - p, err := NewJSONPathPrinter(templateValue) + p, err := printers.NewJSONPathPrinter(templateValue) if err != nil { return nil, fmt.Errorf("error parsing jsonpath %s, %v\n", templateValue, err) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/printers/kube_template_flags.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/kube_template_flags.go similarity index 85% rename from cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/printers/kube_template_flags.go rename to cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/kube_template_flags.go index 8b53e60cdc..56140c3c36 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/printers/kube_template_flags.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/kube_template_flags.go @@ -14,31 +14,38 @@ See the License for the specific language governing permissions and limitations under the License. */ -package printers +package genericclioptions import ( "github.com/spf13/cobra" - "k8s.io/kubernetes/pkg/kubectl/genericclioptions" + "k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers" ) // KubeTemplatePrintFlags composes print flags that provide both a JSONPath and a go-template printer. // This is necessary if dealing with cases that require support both both printers, since both sets of flags // require overlapping flags. type KubeTemplatePrintFlags struct { - *GoTemplatePrintFlags - *JSONPathPrintFlags + GoTemplatePrintFlags *GoTemplatePrintFlags + JSONPathPrintFlags *JSONPathPrintFlags AllowMissingKeys *bool TemplateArgument *string } func (f *KubeTemplatePrintFlags) AllowedFormats() []string { + if f == nil { + return []string{} + } return append(f.GoTemplatePrintFlags.AllowedFormats(), f.JSONPathPrintFlags.AllowedFormats()...) } -func (f *KubeTemplatePrintFlags) ToPrinter(outputFormat string) (ResourcePrinter, error) { - if p, err := f.JSONPathPrintFlags.ToPrinter(outputFormat); !genericclioptions.IsNoCompatiblePrinterError(err) { +func (f *KubeTemplatePrintFlags) ToPrinter(outputFormat string) (printers.ResourcePrinter, error) { + if f == nil { + return nil, NoCompatiblePrinterError{} + } + + if p, err := f.JSONPathPrintFlags.ToPrinter(outputFormat); !IsNoCompatiblePrinterError(err) { return p, err } return f.GoTemplatePrintFlags.ToPrinter(outputFormat) @@ -47,6 +54,10 @@ func (f *KubeTemplatePrintFlags) ToPrinter(outputFormat string) (ResourcePrinter // AddFlags receives a *cobra.Command reference and binds // flags related to template printing to it func (f *KubeTemplatePrintFlags) AddFlags(c *cobra.Command) { + if f == nil { + return + } + if f.TemplateArgument != nil { c.Flags().StringVar(f.TemplateArgument, "template", *f.TemplateArgument, "Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].") c.MarkFlagFilename("template") diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/print_flags.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/print_flags.go index 453b913e78..1292d633c2 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/print_flags.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/print_flags.go @@ -22,6 +22,7 @@ import ( "strings" "github.com/spf13/cobra" + "k8s.io/apimachinery/pkg/runtime" "k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers" ) @@ -55,12 +56,17 @@ func IsNoCompatiblePrinterError(err error) bool { // used across all commands, and provides a method // of retrieving a known printer based on flag values provided. type PrintFlags struct { - JSONYamlPrintFlags *JSONYamlPrintFlags - NamePrintFlags *NamePrintFlags + JSONYamlPrintFlags *JSONYamlPrintFlags + NamePrintFlags *NamePrintFlags + TemplatePrinterFlags *KubeTemplatePrintFlags TypeSetterPrinter *printers.TypeSetterPrinter OutputFormat *string + + // OutputFlagSpecified indicates whether the user specifically requested a certain kind of output. + // Using this function allows a sophisticated caller to change the flag binding logic if they so desire. + OutputFlagSpecified func() bool } func (f *PrintFlags) Complete(successTemplate string) error { @@ -68,7 +74,11 @@ func (f *PrintFlags) Complete(successTemplate string) error { } func (f *PrintFlags) AllowedFormats() []string { - return append(f.JSONYamlPrintFlags.AllowedFormats(), f.NamePrintFlags.AllowedFormats()...) + ret := []string{} + ret = append(ret, f.JSONYamlPrintFlags.AllowedFormats()...) + ret = append(ret, f.NamePrintFlags.AllowedFormats()...) + ret = append(ret, f.TemplatePrinterFlags.AllowedFormats()...) + return ret } func (f *PrintFlags) ToPrinter() (printers.ResourcePrinter, error) { @@ -76,6 +86,16 @@ func (f *PrintFlags) ToPrinter() (printers.ResourcePrinter, error) { if f.OutputFormat != nil { outputFormat = *f.OutputFormat } + // For backwards compatibility we want to support a --template argument given, even when no --output format is provided. + // If no explicit output format has been provided via the --output flag, fallback + // to honoring the --template argument. + templateFlagSpecified := f.TemplatePrinterFlags != nil && + f.TemplatePrinterFlags.TemplateArgument != nil && + len(*f.TemplatePrinterFlags.TemplateArgument) > 0 + outputFlagSpecified := f.OutputFlagSpecified != nil && f.OutputFlagSpecified() + if templateFlagSpecified && !outputFlagSpecified { + outputFormat = "go-template" + } if f.JSONYamlPrintFlags != nil { if p, err := f.JSONYamlPrintFlags.ToPrinter(outputFormat); !IsNoCompatiblePrinterError(err) { @@ -89,15 +109,27 @@ func (f *PrintFlags) ToPrinter() (printers.ResourcePrinter, error) { } } + if f.TemplatePrinterFlags != nil { + if p, err := f.TemplatePrinterFlags.ToPrinter(outputFormat); !IsNoCompatiblePrinterError(err) { + return f.TypeSetterPrinter.WrapToPrinter(p, err) + } + } + return nil, NoCompatiblePrinterError{OutputFormat: f.OutputFormat, AllowedFormats: f.AllowedFormats()} } func (f *PrintFlags) AddFlags(cmd *cobra.Command) { f.JSONYamlPrintFlags.AddFlags(cmd) f.NamePrintFlags.AddFlags(cmd) + f.TemplatePrinterFlags.AddFlags(cmd) if f.OutputFormat != nil { - cmd.Flags().StringVarP(f.OutputFormat, "output", "o", *f.OutputFormat, "Output format. One of: json|yaml|wide|name|custom-columns=...|custom-columns-file=...|go-template=...|go-template-file=...|jsonpath=...|jsonpath-file=... See custom columns [http://kubernetes.io/docs/user-guide/kubectl-overview/#custom-columns], golang template [http://golang.org/pkg/text/template/#pkg-overview] and jsonpath template [http://kubernetes.io/docs/user-guide/jsonpath].") + cmd.Flags().StringVarP(f.OutputFormat, "output", "o", *f.OutputFormat, fmt.Sprintf("Output format. One of: %s.", strings.Join(f.AllowedFormats(), "|"))) + if f.OutputFlagSpecified == nil { + f.OutputFlagSpecified = func() bool { + return cmd.Flag("output").Changed + } + } } } @@ -119,7 +151,8 @@ func NewPrintFlags(operation string) *PrintFlags { return &PrintFlags{ OutputFormat: &outputFormat, - JSONYamlPrintFlags: NewJSONYamlPrintFlags(), - NamePrintFlags: NewNamePrintFlags(operation), + JSONYamlPrintFlags: NewJSONYamlPrintFlags(), + NamePrintFlags: NewNamePrintFlags(operation), + TemplatePrinterFlags: NewKubeTemplatePrintFlags(), } } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers/BUILD index c29044dc63..7893ac02b3 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers/BUILD @@ -6,25 +6,35 @@ go_library( "discard.go", "interface.go", "json.go", + "jsonpath.go", "name.go", "sourcechecker.go", + "template.go", "typesetter.go", ], importpath = "k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers", visibility = ["//visibility:public"], deps = [ + "//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/client-go/util/jsonpath:go_default_library", "//vendor/github.com/ghodss/yaml:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) go_test( name = "go_default_test", - srcs = ["sourcechecker_test.go"], + srcs = [ + "sourcechecker_test.go", + "template_test.go", + ], embed = [":go_default_library"], + deps = [ + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + ], ) filegroup( diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/printers/jsonpath.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers/jsonpath.go similarity index 88% rename from cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/printers/jsonpath.go rename to cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers/jsonpath.go index b8ea553f51..0bdb3511f1 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/printers/jsonpath.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers/jsonpath.go @@ -22,10 +22,8 @@ import ( "io" "reflect" - "k8s.io/apimachinery/pkg/api/meta" "k8s.io/apimachinery/pkg/runtime" "k8s.io/client-go/util/jsonpath" - "k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers" ) // exists returns true if it would be possible to call the index function @@ -119,12 +117,14 @@ func (j *JSONPathPrinter) PrintObj(obj runtime.Object, w io.Writer) error { // we use reflect.Indirect here in order to obtain the actual value from a pointer. // we need an actual value in order to retrieve the package path for an object. // using reflect.Indirect indiscriminately is valid here, as all runtime.Objects are supposed to be pointers. - if printers.InternalObjectPreventer.IsForbidden(reflect.Indirect(reflect.ValueOf(obj)).Type().PkgPath()) { - return fmt.Errorf(printers.InternalObjectPrinterErr) + if InternalObjectPreventer.IsForbidden(reflect.Indirect(reflect.ValueOf(obj)).Type().PkgPath()) { + return fmt.Errorf(InternalObjectPrinterErr) } var queryObj interface{} = obj - if meta.IsListType(obj) { + if unstructured, ok := obj.(runtime.Unstructured); ok { + queryObj = unstructured.UnstructuredContent() + } else { data, err := json.Marshal(obj) if err != nil { return err @@ -135,20 +135,6 @@ func (j *JSONPathPrinter) PrintObj(obj runtime.Object, w io.Writer) error { } } - if unknown, ok := obj.(*runtime.Unknown); ok { - data, err := json.Marshal(unknown) - if err != nil { - return err - } - queryObj = map[string]interface{}{} - if err := json.Unmarshal(data, &queryObj); err != nil { - return err - } - } - if unstructured, ok := obj.(runtime.Unstructured); ok { - queryObj = unstructured.UnstructuredContent() - } - if err := j.JSONPath.Execute(w, queryObj); err != nil { fmt.Fprintf(w, "Error executing template: %v. Printing more information for debugging the template:\n", err) fmt.Fprintf(w, "\ttemplate was:\n\t\t%v\n", j.rawTemplate) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers/sourcechecker.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers/sourcechecker.go index 11d672cc91..e360c8fe0b 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers/sourcechecker.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers/sourcechecker.go @@ -51,7 +51,7 @@ type illegalPackageSourceChecker struct { func (c *illegalPackageSourceChecker) IsForbidden(pkgPath string) bool { for _, forbiddenPrefix := range c.disallowedPrefixes { - if strings.HasPrefix(pkgPath, forbiddenPrefix) { + if strings.HasPrefix(pkgPath, forbiddenPrefix) || strings.Contains(pkgPath, "/vendor/"+forbiddenPrefix) { return true } } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/printers/template.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers/template.go similarity index 93% rename from cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/printers/template.go rename to cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers/template.go index 678b46e3ba..5dd807dad9 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/printers/template.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers/template.go @@ -25,7 +25,6 @@ import ( "text/template" "k8s.io/apimachinery/pkg/runtime" - "k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers" ) // GoTemplatePrinter is an implementation of ResourcePrinter which formats data with a Go Template. @@ -61,8 +60,8 @@ func (p *GoTemplatePrinter) AllowMissingKeys(allow bool) { // PrintObj formats the obj with the Go Template. func (p *GoTemplatePrinter) PrintObj(obj runtime.Object, w io.Writer) error { - if printers.InternalObjectPreventer.IsForbidden(reflect.Indirect(reflect.ValueOf(obj)).Type().PkgPath()) { - return fmt.Errorf(printers.InternalObjectPrinterErr) + if InternalObjectPreventer.IsForbidden(reflect.Indirect(reflect.ValueOf(obj)).Type().PkgPath()) { + return fmt.Errorf(InternalObjectPrinterErr) } var data []byte diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource/BUILD index e2fb1a8921..67dd53b748 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource/BUILD @@ -18,28 +18,28 @@ go_library( importpath = "k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource", visibility = ["//visibility:public"], deps = [ + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructuredscheme:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/yaml:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/discovery:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/restmapper:go_default_library", "//vendor/golang.org/x/text/encoding/unicode:go_default_library", "//vendor/golang.org/x/text/transform:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructuredscheme:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/yaml:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/discovery:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/restmapper:go_default_library", ], ) @@ -56,27 +56,28 @@ go_test( ], embed = [":go_default_library"], deps = [ + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/meta/testrestmapper:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer/streaming:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/rest/fake:go_default_library", + "//staging/src/k8s.io/client-go/rest/watch:go_default_library", + "//staging/src/k8s.io/client-go/restmapper:go_default_library", + "//staging/src/k8s.io/client-go/util/testing:go_default_library", "//vendor/github.com/davecgh/go-spew/spew:go_default_library", "//vendor/github.com/ghodss/yaml:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/meta/testrestmapper:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/rest/fake:go_default_library", - "//vendor/k8s.io/client-go/rest/watch:go_default_library", - "//vendor/k8s.io/client-go/util/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource/builder.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource/builder.go index 09e21827f7..22680c517c 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource/builder.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource/builder.go @@ -23,6 +23,7 @@ import ( "net/url" "os" "strings" + "sync" "k8s.io/apimachinery/pkg/api/meta" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -46,7 +47,7 @@ const defaultHttpGetAttempts int = 3 // from the command line and converting them to a list of resources to iterate // over using the Visitor interface. type Builder struct { - categoryExpander restmapper.CategoryExpander + categoryExpanderFn CategoryExpanderFunc // mapper is set explicitly by resource builders mapper *mapper @@ -54,7 +55,7 @@ type Builder struct { // clientConfigFn is a function to produce a client, *if* you need one clientConfigFn ClientConfigFunc - restMapper meta.RESTMapper + restMapperFn RESTMapperFunc // objectTyper is statically determinant per-command invocation based on your internal or unstructured choice // it does not ever need to rely upon discovery. @@ -140,7 +141,7 @@ type resourceTuple struct { type FakeClientFunc func(version schema.GroupVersion) (RESTClient, error) -func NewFakeBuilder(fakeClientFn FakeClientFunc, restMapper meta.RESTMapper, categoryExpander restmapper.CategoryExpander) *Builder { +func NewFakeBuilder(fakeClientFn FakeClientFunc, restMapper RESTMapperFunc, categoryExpander CategoryExpanderFunc) *Builder { ret := newBuilder(nil, restMapper, categoryExpander) ret.fakeClientFn = fakeClientFn return ret @@ -150,28 +151,29 @@ func NewFakeBuilder(fakeClientFn FakeClientFunc, restMapper meta.RESTMapper, cat // internal or unstructured must be specified. // TODO: Add versioned client (although versioned is still lossy) // TODO remove internal and unstructured mapper and instead have them set the negotiated serializer for use in the client -func newBuilder(clientConfigFn ClientConfigFunc, restMapper meta.RESTMapper, categoryExpander restmapper.CategoryExpander) *Builder { +func newBuilder(clientConfigFn ClientConfigFunc, restMapper RESTMapperFunc, categoryExpander CategoryExpanderFunc) *Builder { return &Builder{ - clientConfigFn: clientConfigFn, - restMapper: restMapper, - categoryExpander: categoryExpander, - requireObject: true, + clientConfigFn: clientConfigFn, + restMapperFn: restMapper, + categoryExpanderFn: categoryExpander, + requireObject: true, } } func NewBuilder(restClientGetter RESTClientGetter) *Builder { - restMapper, mapperErr := restClientGetter.ToRESTMapper() - discoveryClient, discoveryErr := restClientGetter.ToDiscoveryClient() - var categoryExpander restmapper.CategoryExpander - if discoveryErr == nil { - categoryExpander = restmapper.NewDiscoveryCategoryExpander(discoveryClient) + categoryExpanderFn := func() (restmapper.CategoryExpander, error) { + discoveryClient, err := restClientGetter.ToDiscoveryClient() + if err != nil { + return nil, err + } + return restmapper.NewDiscoveryCategoryExpander(discoveryClient), err } return newBuilder( restClientGetter.ToRESTConfig, - restMapper, - categoryExpander, - ).AddError(mapperErr).AddError(discoveryErr) + (&cachingRESTMapperFunc{delegate: restClientGetter.ToRESTMapper}).ToRESTMapper, + (&cachingCategoryExpanderFunc{delegate: categoryExpanderFn}).ToCategoryExpander, + ) } func (b *Builder) Schema(schema ContentValidator) *Builder { @@ -234,10 +236,10 @@ func (b *Builder) Unstructured() *Builder { } b.objectTyper = unstructuredscheme.NewUnstructuredObjectTyper() b.mapper = &mapper{ - localFn: b.isLocal, - restMapper: b.restMapper, - clientFn: b.getClient, - decoder: unstructured.UnstructuredJSONScheme, + localFn: b.isLocal, + restMapperFn: b.restMapperFn, + clientFn: b.getClient, + decoder: unstructured.UnstructuredJSONScheme, } return b @@ -261,10 +263,10 @@ func (b *Builder) WithScheme(scheme *runtime.Scheme, decodingVersions ...schema. b.negotiatedSerializer = negotiatedSerializer b.mapper = &mapper{ - localFn: b.isLocal, - restMapper: b.restMapper, - clientFn: b.getClient, - decoder: codecFactory.UniversalDecoder(decodingVersions...), + localFn: b.isLocal, + restMapperFn: b.restMapperFn, + clientFn: b.getClient, + decoder: codecFactory.UniversalDecoder(decodingVersions...), } return b @@ -555,10 +557,16 @@ func (b *Builder) ResourceTypeOrNameArgs(allowEmptySelector bool, args ...string func (b *Builder) ReplaceAliases(input string) string { replaced := []string{} for _, arg := range strings.Split(input, ",") { - if b.categoryExpander == nil { + if b.categoryExpanderFn == nil { continue } - if resources, ok := b.categoryExpander.Expand(arg); ok { + categoryExpander, err := b.categoryExpanderFn() + if err != nil { + b.AddError(err) + continue + } + + if resources, ok := categoryExpander.Expand(arg); ok { asStrings := []string{} for _, resource := range resources { if len(resource.Group) == 0 { @@ -675,14 +683,19 @@ func (b *Builder) SingleResourceType() *Builder { func (b *Builder) mappingFor(resourceOrKindArg string) (*meta.RESTMapping, error) { fullySpecifiedGVR, groupResource := schema.ParseResourceArg(resourceOrKindArg) gvk := schema.GroupVersionKind{} + restMapper, err := b.restMapperFn() + if err != nil { + return nil, err + } + if fullySpecifiedGVR != nil { - gvk, _ = b.mapper.restMapper.KindFor(*fullySpecifiedGVR) + gvk, _ = restMapper.KindFor(*fullySpecifiedGVR) } if gvk.Empty() { - gvk, _ = b.mapper.restMapper.KindFor(groupResource.WithVersion("")) + gvk, _ = restMapper.KindFor(groupResource.WithVersion("")) } if !gvk.Empty() { - return b.mapper.restMapper.RESTMapping(gvk.GroupKind(), gvk.Version) + return restMapper.RESTMapping(gvk.GroupKind(), gvk.Version) } fullySpecifiedGVK, groupKind := schema.ParseKindArg(resourceOrKindArg) @@ -692,12 +705,12 @@ func (b *Builder) mappingFor(resourceOrKindArg string) (*meta.RESTMapping, error } if !fullySpecifiedGVK.Empty() { - if mapping, err := b.mapper.restMapper.RESTMapping(fullySpecifiedGVK.GroupKind(), fullySpecifiedGVK.Version); err == nil { + if mapping, err := restMapper.RESTMapping(fullySpecifiedGVK.GroupKind(), fullySpecifiedGVK.Version); err == nil { return mapping, nil } } - mapping, err := b.mapper.restMapper.RESTMapping(groupKind, gvk.Version) + mapping, err := restMapper.RESTMapping(groupKind, gvk.Version) if err != nil { // if we error out here, it is because we could not match a resource or a kind // for the given argument. To maintain consistency with previous behavior, @@ -1108,36 +1121,46 @@ func HasNames(args []string) (bool, error) { return hasCombinedTypes || len(args) > 1, nil } -// MultipleTypesRequested returns true if the provided args contain multiple resource kinds -func MultipleTypesRequested(args []string) bool { - if len(args) == 1 && args[0] == "all" { - return true - } +type cachingRESTMapperFunc struct { + delegate RESTMapperFunc - args = normalizeMultipleResourcesArgs(args) - rKinds := sets.NewString() - for _, arg := range args { - rTuple, found, err := splitResourceTypeName(arg) - if err != nil { - continue - } - - // if tuple not found, assume arg is of the form "type1,type2,...". - // Since SplitResourceArgument returns a unique list of kinds, - // return true here if len(uniqueList) > 1 - if !found { - if strings.Contains(arg, ",") { - splitArgs := SplitResourceArgument(arg) - if len(splitArgs) > 1 { - return true - } - } - continue - } - if rKinds.Has(rTuple.Resource) { - continue - } - rKinds.Insert(rTuple.Resource) - } - return rKinds.Len() > 1 + lock sync.Mutex + cached meta.RESTMapper +} + +func (c *cachingRESTMapperFunc) ToRESTMapper() (meta.RESTMapper, error) { + c.lock.Lock() + defer c.lock.Unlock() + if c.cached != nil { + return c.cached, nil + } + + ret, err := c.delegate() + if err != nil { + return nil, err + } + c.cached = ret + return c.cached, nil +} + +type cachingCategoryExpanderFunc struct { + delegate CategoryExpanderFunc + + lock sync.Mutex + cached restmapper.CategoryExpander +} + +func (c *cachingCategoryExpanderFunc) ToCategoryExpander() (restmapper.CategoryExpander, error) { + c.lock.Lock() + defer c.lock.Unlock() + if c.cached != nil { + return c.cached, nil + } + + ret, err := c.delegate() + if err != nil { + return nil, err + } + c.cached = ret + return c.cached, nil } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource/helper.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource/helper.go index 97f26fa415..52a4057e08 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource/helper.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource/helper.go @@ -94,18 +94,18 @@ func (m *Helper) WatchSingle(namespace, name, resourceVersion string) (watch.Int Watch() } -func (m *Helper) Delete(namespace, name string) error { +func (m *Helper) Delete(namespace, name string) (runtime.Object, error) { return m.DeleteWithOptions(namespace, name, nil) } -func (m *Helper) DeleteWithOptions(namespace, name string, options *metav1.DeleteOptions) error { +func (m *Helper) DeleteWithOptions(namespace, name string, options *metav1.DeleteOptions) (runtime.Object, error) { return m.RESTClient.Delete(). NamespaceIfScoped(namespace, m.NamespaceScoped). Resource(m.Resource). Name(name). Body(options). Do(). - Error() + Get() } func (m *Helper) Create(namespace string, modify bool, obj runtime.Object) (runtime.Object, error) { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource/interfaces.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource/interfaces.go index 508d4d6b5e..29d7b34ab6 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource/interfaces.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource/interfaces.go @@ -21,6 +21,7 @@ import ( "k8s.io/apimachinery/pkg/types" "k8s.io/client-go/discovery" "k8s.io/client-go/rest" + "k8s.io/client-go/restmapper" ) type RESTClientGetter interface { @@ -30,6 +31,8 @@ type RESTClientGetter interface { } type ClientConfigFunc func() (*rest.Config, error) +type RESTMapperFunc func() (meta.RESTMapper, error) +type CategoryExpanderFunc func() (restmapper.CategoryExpander, error) // RESTClient is a client helper for dealing with RESTful resources // in a generic way. diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource/mapper.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource/mapper.go index 0453e54237..962f37711f 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource/mapper.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource/mapper.go @@ -20,7 +20,6 @@ import ( "fmt" "reflect" - "k8s.io/apimachinery/pkg/api/meta" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" ) @@ -31,9 +30,9 @@ type mapper struct { // localFn indicates the call can't make server requests localFn func() bool - restMapper meta.RESTMapper - clientFn func(version schema.GroupVersion) (RESTClient, error) - decoder runtime.Decoder + restMapperFn RESTMapperFunc + clientFn func(version schema.GroupVersion) (RESTClient, error) + decoder runtime.Decoder } // InfoForData creates an Info object for the given data. An error is returned @@ -59,7 +58,11 @@ func (m *mapper) infoForData(data []byte, source string) (*Info, error) { } if m.localFn == nil || !m.localFn() { - mapping, err := m.restMapper.RESTMapping(gvk.GroupKind(), gvk.Version) + restMapper, err := m.restMapperFn() + if err != nil { + return nil, err + } + mapping, err := restMapper.RESTMapping(gvk.GroupKind(), gvk.Version) if err != nil { return nil, fmt.Errorf("unable to recognize %q: %v", source, err) } @@ -101,7 +104,11 @@ func (m *mapper) infoForObject(obj runtime.Object, typer runtime.ObjectTyper, pr } if m.localFn == nil || !m.localFn() { - mapping, err := m.restMapper.RESTMapping(gvk.GroupKind(), gvk.Version) + restMapper, err := m.restMapperFn() + if err != nil { + return nil, err + } + mapping, err := restMapper.RESTMapping(gvk.GroupKind(), gvk.Version) if err != nil { return nil, fmt.Errorf("unable to recognize %v", err) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource/visitor.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource/visitor.go index e83d02aa42..237ba73c50 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource/visitor.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource/visitor.go @@ -376,12 +376,28 @@ func (v FlattenListVisitor) Visit(fn VisitorFunc) error { if info.Object == nil { return fn(info, nil) } - items, err := meta.ExtractList(info.Object) - if err != nil { + if !meta.IsListType(info.Object) { return fn(info, nil) } - if errs := runtime.DecodeList(items, v.mapper.decoder); len(errs) > 0 { - return utilerrors.NewAggregate(errs) + + items := []runtime.Object{} + itemsToProcess := []runtime.Object{info.Object} + + for i := 0; i < len(itemsToProcess); i++ { + currObj := itemsToProcess[i] + if !meta.IsListType(currObj) { + items = append(items, currObj) + continue + } + + currItems, err := meta.ExtractList(currObj) + if err != nil { + return err + } + if errs := runtime.DecodeList(currItems, v.mapper.decoder); len(errs) > 0 { + return utilerrors.NewAggregate(errs) + } + itemsToProcess = append(itemsToProcess, currItems...) } // If we have a GroupVersionKind on the list, prioritize that when asking for info on the objects contained in the list diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/printers/template_flags.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/template_flags.go similarity index 91% rename from cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/printers/template_flags.go rename to cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/template_flags.go index ffd7a24dca..ac835a0643 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/printers/template_flags.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/genericclioptions/template_flags.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package printers +package genericclioptions import ( "fmt" @@ -23,7 +23,7 @@ import ( "github.com/spf13/cobra" - "k8s.io/kubernetes/pkg/kubectl/genericclioptions" + "k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers" ) // templates are logically optional for specifying a format. @@ -57,9 +57,9 @@ func (f *GoTemplatePrintFlags) AllowedFormats() []string { // ToPrinter receives an templateFormat and returns a printer capable of // handling --template format printing. // Returns false if the specified templateFormat does not match a template format. -func (f *GoTemplatePrintFlags) ToPrinter(templateFormat string) (ResourcePrinter, error) { +func (f *GoTemplatePrintFlags) ToPrinter(templateFormat string) (printers.ResourcePrinter, error) { if (f.TemplateArgument == nil || len(*f.TemplateArgument) == 0) && len(templateFormat) == 0 { - return nil, genericclioptions.NoCompatiblePrinterError{Options: f, OutputFormat: &templateFormat} + return nil, NoCompatiblePrinterError{Options: f, OutputFormat: &templateFormat} } templateValue := "" @@ -78,7 +78,7 @@ func (f *GoTemplatePrintFlags) ToPrinter(templateFormat string) (ResourcePrinter } if _, supportedFormat := templateFormats[templateFormat]; !supportedFormat { - return nil, genericclioptions.NoCompatiblePrinterError{OutputFormat: &templateFormat, AllowedFormats: f.AllowedFormats()} + return nil, NoCompatiblePrinterError{OutputFormat: &templateFormat, AllowedFormats: f.AllowedFormats()} } if len(templateValue) == 0 { @@ -94,7 +94,7 @@ func (f *GoTemplatePrintFlags) ToPrinter(templateFormat string) (ResourcePrinter templateValue = string(data) } - p, err := NewGoTemplatePrinter([]byte(templateValue)) + p, err := printers.NewGoTemplatePrinter([]byte(templateValue)) if err != nil { return nil, fmt.Errorf("error parsing template %s, %v\n", templateValue, err) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/priorityclass.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/priorityclass.go index fd600ae325..51c71a5701 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/priorityclass.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/priorityclass.go @@ -19,7 +19,7 @@ package kubectl import ( "fmt" - scheduling "k8s.io/api/scheduling/v1alpha1" + scheduling "k8s.io/api/scheduling/v1beta1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/rollout_status.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/rollout_status.go index 714d364fd8..82a6524304 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/rollout_status.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/rollout_status.go @@ -126,7 +126,7 @@ func (s *StatefulSetStatusViewer) Status(namespace, name string, revision int64) return "", false, err } if sts.Spec.UpdateStrategy.Type == apps.OnDeleteStatefulSetStrategyType { - return "", true, fmt.Errorf("%s updateStrategy does not have a Status`", apps.OnDeleteStatefulSetStrategyType) + return "", true, fmt.Errorf("%s updateStrategy does not have a Status", apps.OnDeleteStatefulSetStrategyType) } if sts.Status.ObservedGeneration == 0 || sts.Generation > sts.Status.ObservedGeneration { return "Waiting for statefulset spec update to be observed...\n", false, nil diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/run.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/run.go index 554996b626..7fe1f2fe2b 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/run.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/run.go @@ -877,8 +877,6 @@ func (BasicPod) Generate(genericParams map[string]interface{}) (runtime.Object, if len(restartPolicy) == 0 { restartPolicy = v1.RestartPolicyAlways } - // TODO: Figure out why we set ImagePullPolicy here, whether we can make it - // consistent with the other places imagePullPolicy is set using flag. pod := v1.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: name, @@ -888,13 +886,12 @@ func (BasicPod) Generate(genericParams map[string]interface{}) (runtime.Object, ServiceAccountName: params["serviceaccount"], Containers: []v1.Container{ { - Name: name, - Image: params["image"], - ImagePullPolicy: v1.PullIfNotPresent, - Stdin: stdin, - StdinOnce: !leaveStdinOpen && stdin, - TTY: tty, - Resources: resourceRequirements, + Name: name, + Image: params["image"], + Stdin: stdin, + StdinOnce: !leaveStdinOpen && stdin, + TTY: tty, + Resources: resourceRequirements, }, }, DNSPolicy: v1.DNSClusterFirst, diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/scheme/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/scheme/BUILD index 8d1f602f41..67b59354c5 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/scheme/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/scheme/BUILD @@ -9,41 +9,41 @@ go_library( importpath = "k8s.io/kubernetes/pkg/kubectl/scheme", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/api/admission/v1beta1:go_default_library", - "//vendor/k8s.io/api/admissionregistration/v1alpha1:go_default_library", - "//vendor/k8s.io/api/admissionregistration/v1beta1:go_default_library", - "//vendor/k8s.io/api/apps/v1:go_default_library", - "//vendor/k8s.io/api/apps/v1beta1:go_default_library", - "//vendor/k8s.io/api/apps/v1beta2:go_default_library", - "//vendor/k8s.io/api/authentication/v1:go_default_library", - "//vendor/k8s.io/api/authentication/v1beta1:go_default_library", - "//vendor/k8s.io/api/authorization/v1:go_default_library", - "//vendor/k8s.io/api/authorization/v1beta1:go_default_library", - "//vendor/k8s.io/api/autoscaling/v1:go_default_library", - "//vendor/k8s.io/api/autoscaling/v2beta1:go_default_library", - "//vendor/k8s.io/api/batch/v1:go_default_library", - "//vendor/k8s.io/api/batch/v1beta1:go_default_library", - "//vendor/k8s.io/api/batch/v2alpha1:go_default_library", - "//vendor/k8s.io/api/certificates/v1beta1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/extensions/v1beta1:go_default_library", - "//vendor/k8s.io/api/imagepolicy/v1alpha1:go_default_library", - "//vendor/k8s.io/api/networking/v1:go_default_library", - "//vendor/k8s.io/api/policy/v1beta1:go_default_library", - "//vendor/k8s.io/api/rbac/v1:go_default_library", - "//vendor/k8s.io/api/rbac/v1alpha1:go_default_library", - "//vendor/k8s.io/api/rbac/v1beta1:go_default_library", - "//vendor/k8s.io/api/scheduling/v1alpha1:go_default_library", - "//vendor/k8s.io/api/settings/v1alpha1:go_default_library", - "//vendor/k8s.io/api/storage/v1:go_default_library", - "//vendor/k8s.io/api/storage/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/api/admission/v1beta1:go_default_library", + "//staging/src/k8s.io/api/admissionregistration/v1alpha1:go_default_library", + "//staging/src/k8s.io/api/admissionregistration/v1beta1:go_default_library", + "//staging/src/k8s.io/api/apps/v1:go_default_library", + "//staging/src/k8s.io/api/apps/v1beta1:go_default_library", + "//staging/src/k8s.io/api/apps/v1beta2:go_default_library", + "//staging/src/k8s.io/api/authentication/v1:go_default_library", + "//staging/src/k8s.io/api/authentication/v1beta1:go_default_library", + "//staging/src/k8s.io/api/authorization/v1:go_default_library", + "//staging/src/k8s.io/api/authorization/v1beta1:go_default_library", + "//staging/src/k8s.io/api/autoscaling/v1:go_default_library", + "//staging/src/k8s.io/api/autoscaling/v2beta1:go_default_library", + "//staging/src/k8s.io/api/batch/v1:go_default_library", + "//staging/src/k8s.io/api/batch/v1beta1:go_default_library", + "//staging/src/k8s.io/api/batch/v2alpha1:go_default_library", + "//staging/src/k8s.io/api/certificates/v1beta1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/extensions/v1beta1:go_default_library", + "//staging/src/k8s.io/api/imagepolicy/v1alpha1:go_default_library", + "//staging/src/k8s.io/api/networking/v1:go_default_library", + "//staging/src/k8s.io/api/policy/v1beta1:go_default_library", + "//staging/src/k8s.io/api/rbac/v1:go_default_library", + "//staging/src/k8s.io/api/rbac/v1alpha1:go_default_library", + "//staging/src/k8s.io/api/rbac/v1beta1:go_default_library", + "//staging/src/k8s.io/api/scheduling/v1alpha1:go_default_library", + "//staging/src/k8s.io/api/settings/v1alpha1:go_default_library", + "//staging/src/k8s.io/api/storage/v1:go_default_library", + "//staging/src/k8s.io/api/storage/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", ], ) @@ -66,11 +66,11 @@ go_test( srcs = ["sparse_test.go"], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/api/batch/v1:go_default_library", - "//vendor/k8s.io/api/batch/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", + "//staging/src/k8s.io/api/batch/v1:go_default_library", + "//staging/src/k8s.io/api/batch/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/util/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/util/BUILD index 73dfd3a193..37464f3000 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/util/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/util/BUILD @@ -8,50 +8,17 @@ go_library( name = "go_default_library", srcs = [ "service_port.go", + "umask.go", + "umask_windows.go", "util.go", - ] + select({ - "@io_bazel_rules_go//go/platform:android": [ - "umask.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "umask.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "umask.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "umask.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "umask.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "umask.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "umask.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "umask.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "umask.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "umask.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "umask_windows.go", - ], - "//conditions:default": [], - }), + ], importpath = "k8s.io/kubernetes/pkg/kubectl/util", visibility = ["//build/visible_to:pkg_kubectl_util_CONSUMERS"], deps = [ "//pkg/apis/core:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", ] + select({ "@io_bazel_rules_go//go/platform:android": [ "//vendor/golang.org/x/sys/unix:go_default_library", @@ -117,6 +84,6 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/apis/core:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/util/hash/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/util/hash/BUILD index 8c1c4a34c3..d930302bb9 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/util/hash/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubectl/util/hash/BUILD @@ -10,14 +10,14 @@ go_test( name = "go_default_test", srcs = ["hash_test.go"], embed = [":go_default_library"], - deps = ["//vendor/k8s.io/api/core/v1:go_default_library"], + deps = ["//staging/src/k8s.io/api/core/v1:go_default_library"], ) go_library( name = "go_default_library", srcs = ["hash.go"], importpath = "k8s.io/kubernetes/pkg/kubectl/util/hash", - deps = ["//vendor/k8s.io/api/core/v1:go_default_library"], + deps = ["//staging/src/k8s.io/api/core/v1:go_default_library"], ) filegroup( diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/BUILD index d6c52d725a..914fccb036 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/BUILD @@ -10,6 +10,7 @@ go_library( name = "go_default_library", srcs = [ "active_deadline.go", + "cloud_request_manager.go", "doc.go", "kubelet.go", "kubelet_getters.go", @@ -96,7 +97,6 @@ go_library( "//pkg/securitycontext:go_default_library", "//pkg/util/dbus:go_default_library", "//pkg/util/file:go_default_library", - "//pkg/util/io:go_default_library", "//pkg/util/iptables:go_default_library", "//pkg/util/mount:go_default_library", "//pkg/util/node:go_default_library", @@ -109,36 +109,36 @@ go_library( "//pkg/volume/util/types:go_default_library", "//pkg/volume/util/volumepathhandler:go_default_library", "//pkg/volume/validation:go_default_library", + "//staging/src/k8s.io/api/authentication/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", + "//staging/src/k8s.io/client-go/listers/core/v1:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", + "//staging/src/k8s.io/client-go/util/certificate:go_default_library", + "//staging/src/k8s.io/client-go/util/flowcontrol:go_default_library", + "//staging/src/k8s.io/client-go/util/integer:go_default_library", "//third_party/forked/golang/expansion:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/golang/groupcache/lru:go_default_library", "//vendor/github.com/google/cadvisor/events:go_default_library", "//vendor/github.com/google/cadvisor/info/v1:go_default_library", "//vendor/github.com/google/cadvisor/info/v2:go_default_library", - "//vendor/k8s.io/api/authentication/v1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", - "//vendor/k8s.io/client-go/listers/core/v1:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", - "//vendor/k8s.io/client-go/util/certificate:go_default_library", - "//vendor/k8s.io/client-go/util/flowcontrol:go_default_library", - "//vendor/k8s.io/client-go/util/integer:go_default_library", "//vendor/k8s.io/utils/exec:go_default_library", ], ) @@ -147,10 +147,12 @@ go_test( name = "go_default_test", srcs = [ "active_deadline_test.go", + "cloud_request_manager_test.go", "kubelet_getters_test.go", "kubelet_network_test.go", "kubelet_node_status_test.go", "kubelet_pods_test.go", + "kubelet_pods_windows_test.go", "kubelet_resources_test.go", "kubelet_test.go", "kubelet_volumes_test.go", @@ -159,12 +161,7 @@ go_test( "pod_workers_test.go", "reason_cache_test.go", "runonce_test.go", - ] + select({ - "@io_bazel_rules_go//go/platform:windows": [ - "kubelet_pods_windows_test.go", - ], - "//conditions:default": [], - }), + ], embed = [":go_default_library"], deps = [ "//pkg/apis/core/install:go_default_library", @@ -182,6 +179,7 @@ go_test( "//pkg/kubelet/images:go_default_library", "//pkg/kubelet/lifecycle:go_default_library", "//pkg/kubelet/logs:go_default_library", + "//pkg/kubelet/network/dns:go_default_library", "//pkg/kubelet/pleg:go_default_library", "//pkg/kubelet/pod:go_default_library", "//pkg/kubelet/pod/testing:go_default_library", @@ -209,34 +207,34 @@ go_test( "//pkg/volume/host_path:go_default_library", "//pkg/volume/testing:go_default_library", "//pkg/volume/util:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/rand:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/strategicpatch:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", + "//staging/src/k8s.io/client-go/util/flowcontrol:go_default_library", + "//staging/src/k8s.io/client-go/util/testing:go_default_library", "//vendor/github.com/google/cadvisor/info/v1:go_default_library", "//vendor/github.com/google/cadvisor/info/v2:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", "//vendor/github.com/stretchr/testify/require:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/rand:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/strategicpatch:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/uuid:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", - "//vendor/k8s.io/client-go/util/flowcontrol:go_default_library", - "//vendor/k8s.io/client-go/util/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/BUILD index 2a22e48121..a9b6166c37 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/BUILD @@ -9,18 +9,14 @@ go_library( name = "go_default_library", srcs = [ "well_known_annotations.go", + "well_known_annotations_windows.go", "well_known_labels.go", - ] + select({ - "@io_bazel_rules_go//go/platform:windows": [ - "well_known_annotations_windows.go", - ], - "//conditions:default": [], - }), + ], importpath = "k8s.io/kubernetes/pkg/kubelet/apis", deps = select({ "@io_bazel_rules_go//go/platform:windows": [ "//pkg/features:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", ], "//conditions:default": [], }), diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/cri/runtime/v1alpha2/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/cri/runtime/v1alpha2/BUILD index 6685cd1289..8ba330b946 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/cri/runtime/v1alpha2/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/cri/runtime/v1alpha2/BUILD @@ -33,8 +33,3 @@ filegroup( srcs = [":package-srcs"], tags = ["automanaged"], ) - -filegroup( - name = "go_default_library_protos", - srcs = ["api.proto"], -) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/deviceplugin/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/deviceplugin/v1beta1/BUILD index 82a6bdd917..6a314cd109 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/deviceplugin/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/deviceplugin/v1beta1/BUILD @@ -33,8 +33,3 @@ filegroup( srcs = [":package-srcs"], tags = ["automanaged"], ) - -filegroup( - name = "go_default_library_protos", - srcs = ["api.proto"], -) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/BUILD index 969efbc99c..b6b1232a02 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/BUILD @@ -17,10 +17,10 @@ go_library( ], importpath = "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig", deps = [ - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) @@ -48,7 +48,7 @@ go_test( srcs = ["helpers_test.go"], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/scheme/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/scheme/BUILD index 246d476bce..e50853d986 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/scheme/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/scheme/BUILD @@ -8,8 +8,8 @@ go_library( deps = [ "//pkg/kubelet/apis/kubeletconfig:go_default_library", "//pkg/kubelet/apis/kubeletconfig/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", ], ) @@ -33,6 +33,6 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/kubelet/apis/kubeletconfig/fuzzer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/testing/roundtrip:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/testing/roundtrip:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/types.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/types.go index 4b220981f3..1e4bb6d8af 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/types.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/types.go @@ -39,6 +39,23 @@ const ( HairpinNone = "none" ) +// ResourceChangeDetectionStrategy denotes a mode in which internal +// managers (secret, configmap) are discovering object changes. +type ResourceChangeDetectionStrategy string + +// Enum settings for different strategies of kubelet managers. +const ( + // GetChangeDetectionStrategy is a mode in which kubelet fetches + // necessary objects directly from apiserver. + GetChangeDetectionStrategy ResourceChangeDetectionStrategy = "Get" + // TTLCacheChangeDetectionStrategy is a mode in which kubelet uses + // ttl cache for object directly fetched from apiserver. + TTLCacheChangeDetectionStrategy ResourceChangeDetectionStrategy = "Cache" + // WatchChangeDetectionStrategy is a mode in which kubelet uses + // watches to observe changes to objects that are in its interest. + WatchChangeDetectionStrategy ResourceChangeDetectionStrategy = "Watch" +) + // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // KubeletConfiguration contains the configuration for the Kubelet @@ -259,6 +276,8 @@ type KubeletConfiguration struct { ContainerLogMaxSize string // Maximum number of container log files that can be present for a container. ContainerLogMaxFiles int32 + // ConfigMapAndSecretChangeDetectionStrategy is a mode in which config map and secret managers are running. + ConfigMapAndSecretChangeDetectionStrategy ResourceChangeDetectionStrategy /* the following fields are meant for Node Allocatable */ diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1beta1/BUILD index c45da80cf9..a74bcda116 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1beta1/BUILD @@ -23,11 +23,11 @@ go_library( "//pkg/kubelet/types:go_default_library", "//pkg/master/ports:go_default_library", "//pkg/util/pointer:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1beta1/defaults.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1beta1/defaults.go index b8d6bb32f7..43a1302ae2 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1beta1/defaults.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1beta1/defaults.go @@ -198,6 +198,9 @@ func SetDefaults_KubeletConfiguration(obj *KubeletConfiguration) { if obj.ContainerLogMaxFiles == nil { obj.ContainerLogMaxFiles = utilpointer.Int32Ptr(5) } + if obj.ConfigMapAndSecretChangeDetectionStrategy == "" { + obj.ConfigMapAndSecretChangeDetectionStrategy = WatchChangeDetectionStrategy + } if obj.EnforceNodeAllocatable == nil { obj.EnforceNodeAllocatable = DefaultNodeAllocatableEnforcement } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1beta1/types.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1beta1/types.go index 2ec949efe4..27b551ddfa 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1beta1/types.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1beta1/types.go @@ -39,6 +39,23 @@ const ( HairpinNone = "none" ) +// ResourceChangeDetectionStrategy denotes a mode in which internal +// managers (secret, configmap) are discovering object changes. +type ResourceChangeDetectionStrategy string + +// Enum settings for different strategies of kubelet managers. +const ( + // GetChangeDetectionStrategy is a mode in which kubelet fetches + // necessary objects directly from apiserver. + GetChangeDetectionStrategy ResourceChangeDetectionStrategy = "Get" + // TTLCacheChangeDetectionStrategy is a mode in which kubelet uses + // ttl cache for object directly fetched from apiserver. + TTLCacheChangeDetectionStrategy ResourceChangeDetectionStrategy = "Cache" + // WatchChangeDetectionStrategy is a mode in which kubelet uses + // watches to observe changes to objects that are in its interest. + WatchChangeDetectionStrategy ResourceChangeDetectionStrategy = "Watch" +) + // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // KubeletConfiguration contains the configuration for the Kubelet @@ -612,6 +629,11 @@ type KubeletConfiguration struct { // Default: 5 // +optional ContainerLogMaxFiles *int32 `json:"containerLogMaxFiles,omitempty"` + // ConfigMapAndSecretChangeDetectionStrategy is a mode in which + // config map and secret managers are running. + // Default: "Watching" + // +optional + ConfigMapAndSecretChangeDetectionStrategy ResourceChangeDetectionStrategy `json:"configMapAndSecretChangeDetectionStrategy,omitempty"` /* the following fields are meant for Node Allocatable */ diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1beta1/zz_generated.conversion.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1beta1/zz_generated.conversion.go index 5765982b74..b392be3223 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1beta1/zz_generated.conversion.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1beta1/zz_generated.conversion.go @@ -253,6 +253,7 @@ func autoConvert_v1beta1_KubeletConfiguration_To_kubeletconfig_KubeletConfigurat if err := v1.Convert_Pointer_int32_To_int32(&in.ContainerLogMaxFiles, &out.ContainerLogMaxFiles, s); err != nil { return err } + out.ConfigMapAndSecretChangeDetectionStrategy = kubeletconfig.ResourceChangeDetectionStrategy(in.ConfigMapAndSecretChangeDetectionStrategy) out.SystemReserved = *(*map[string]string)(unsafe.Pointer(&in.SystemReserved)) out.KubeReserved = *(*map[string]string)(unsafe.Pointer(&in.KubeReserved)) out.SystemReservedCgroup = in.SystemReservedCgroup @@ -377,6 +378,7 @@ func autoConvert_kubeletconfig_KubeletConfiguration_To_v1beta1_KubeletConfigurat if err := v1.Convert_int32_To_Pointer_int32(&in.ContainerLogMaxFiles, &out.ContainerLogMaxFiles, s); err != nil { return err } + out.ConfigMapAndSecretChangeDetectionStrategy = ResourceChangeDetectionStrategy(in.ConfigMapAndSecretChangeDetectionStrategy) out.SystemReserved = *(*map[string]string)(unsafe.Pointer(&in.SystemReserved)) out.KubeReserved = *(*map[string]string)(unsafe.Pointer(&in.KubeReserved)) out.SystemReservedCgroup = in.SystemReservedCgroup diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1beta1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1beta1/zz_generated.deepcopy.go index f7fc0a79cc..2bf1a355b1 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1beta1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1beta1/zz_generated.deepcopy.go @@ -29,12 +29,8 @@ func (in *KubeletAnonymousAuthentication) DeepCopyInto(out *KubeletAnonymousAuth *out = *in if in.Enabled != nil { in, out := &in.Enabled, &out.Enabled - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } return } @@ -96,12 +92,15 @@ func (in *KubeletConfiguration) DeepCopyInto(out *KubeletConfiguration) { in, out := &in.StaticPodURLHeader, &out.StaticPodURLHeader *out = make(map[string][]string, len(*in)) for key, val := range *in { + var outVal []string if val == nil { (*out)[key] = nil } else { - (*out)[key] = make([]string, len(val)) - copy((*out)[key], val) + in, out := &val, &outVal + *out = make([]string, len(*in)) + copy(*out, *in) } + (*out)[key] = outVal } } if in.TLSCipherSuites != nil { @@ -113,48 +112,28 @@ func (in *KubeletConfiguration) DeepCopyInto(out *KubeletConfiguration) { out.Authorization = in.Authorization if in.RegistryPullQPS != nil { in, out := &in.RegistryPullQPS, &out.RegistryPullQPS - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.EventRecordQPS != nil { in, out := &in.EventRecordQPS, &out.EventRecordQPS - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.EnableDebuggingHandlers != nil { in, out := &in.EnableDebuggingHandlers, &out.EnableDebuggingHandlers - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } if in.HealthzPort != nil { in, out := &in.HealthzPort, &out.HealthzPort - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.OOMScoreAdj != nil { in, out := &in.OOMScoreAdj, &out.OOMScoreAdj - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.ClusterDNS != nil { in, out := &in.ClusterDNS, &out.ClusterDNS @@ -166,31 +145,19 @@ func (in *KubeletConfiguration) DeepCopyInto(out *KubeletConfiguration) { out.ImageMinimumGCAge = in.ImageMinimumGCAge if in.ImageGCHighThresholdPercent != nil { in, out := &in.ImageGCHighThresholdPercent, &out.ImageGCHighThresholdPercent - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.ImageGCLowThresholdPercent != nil { in, out := &in.ImageGCLowThresholdPercent, &out.ImageGCLowThresholdPercent - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } out.VolumeStatsAggPeriod = in.VolumeStatsAggPeriod if in.CgroupsPerQOS != nil { in, out := &in.CgroupsPerQOS, &out.CgroupsPerQOS - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } out.CPUManagerReconcilePeriod = in.CPUManagerReconcilePeriod if in.QOSReserved != nil { @@ -203,39 +170,23 @@ func (in *KubeletConfiguration) DeepCopyInto(out *KubeletConfiguration) { out.RuntimeRequestTimeout = in.RuntimeRequestTimeout if in.PodPidsLimit != nil { in, out := &in.PodPidsLimit, &out.PodPidsLimit - if *in == nil { - *out = nil - } else { - *out = new(int64) - **out = **in - } + *out = new(int64) + **out = **in } if in.CPUCFSQuota != nil { in, out := &in.CPUCFSQuota, &out.CPUCFSQuota - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } if in.KubeAPIQPS != nil { in, out := &in.KubeAPIQPS, &out.KubeAPIQPS - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.SerializeImagePulls != nil { in, out := &in.SerializeImagePulls, &out.SerializeImagePulls - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } if in.EvictionHard != nil { in, out := &in.EvictionHard, &out.EvictionHard @@ -268,39 +219,23 @@ func (in *KubeletConfiguration) DeepCopyInto(out *KubeletConfiguration) { } if in.EnableControllerAttachDetach != nil { in, out := &in.EnableControllerAttachDetach, &out.EnableControllerAttachDetach - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } if in.MakeIPTablesUtilChains != nil { in, out := &in.MakeIPTablesUtilChains, &out.MakeIPTablesUtilChains - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } if in.IPTablesMasqueradeBit != nil { in, out := &in.IPTablesMasqueradeBit, &out.IPTablesMasqueradeBit - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.IPTablesDropBit != nil { in, out := &in.IPTablesDropBit, &out.IPTablesDropBit - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.FeatureGates != nil { in, out := &in.FeatureGates, &out.FeatureGates @@ -311,21 +246,13 @@ func (in *KubeletConfiguration) DeepCopyInto(out *KubeletConfiguration) { } if in.FailSwapOn != nil { in, out := &in.FailSwapOn, &out.FailSwapOn - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } if in.ContainerLogMaxFiles != nil { in, out := &in.ContainerLogMaxFiles, &out.ContainerLogMaxFiles - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.SystemReserved != nil { in, out := &in.SystemReserved, &out.SystemReserved @@ -372,12 +299,8 @@ func (in *KubeletWebhookAuthentication) DeepCopyInto(out *KubeletWebhookAuthenti *out = *in if in.Enabled != nil { in, out := &in.Enabled, &out.Enabled - if *in == nil { - *out = nil - } else { - *out = new(bool) - **out = **in - } + *out = new(bool) + **out = **in } out.CacheTTL = in.CacheTTL return diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/validation/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/validation/BUILD index 071a4b16f2..f0909732f3 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/validation/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/validation/BUILD @@ -10,50 +10,17 @@ go_library( name = "go_default_library", srcs = [ "validation.go", - ] + select({ - "@io_bazel_rules_go//go/platform:android": [ - "validation_others.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "validation_others.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "validation_others.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "validation_others.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "validation_others.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "validation_others.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "validation_others.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "validation_others.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "validation_others.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "validation_others.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "validation_windows.go", - ], - "//conditions:default": [], - }), + "validation_others.go", + "validation_windows.go", + ], importpath = "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/validation", deps = [ "//pkg/features:go_default_library", "//pkg/kubelet/apis/kubeletconfig:go_default_library", "//pkg/kubelet/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", ], ) @@ -76,6 +43,6 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/kubelet/apis/kubeletconfig:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/validation/validation.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/validation/validation.go index 4be154014d..f4ed25ff8f 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/validation/validation.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/validation/validation.go @@ -110,7 +110,7 @@ func ValidateKubeletConfiguration(kc *kubeletconfig.KubeletConfiguration) error } default: allErrors = append(allErrors, fmt.Errorf("invalid configuration: option %q specified for EnforceNodeAllocatable (--enforce-node-allocatable). Valid options are %q, %q, %q, or %q", - val, kubetypes.NodeAllocatableEnforcementKey, kubetypes.SystemReservedEnforcementKey, kubetypes.KubeReservedEnforcementKey, kubetypes.NodeAllocatableEnforcementKey)) + val, kubetypes.NodeAllocatableEnforcementKey, kubetypes.SystemReservedEnforcementKey, kubetypes.KubeReservedEnforcementKey, kubetypes.NodeAllocatableNoneKey)) } } switch kc.HairpinMode { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/zz_generated.deepcopy.go index 2a312ad844..3cd9f26eab 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/zz_generated.deepcopy.go @@ -87,12 +87,15 @@ func (in *KubeletConfiguration) DeepCopyInto(out *KubeletConfiguration) { in, out := &in.StaticPodURLHeader, &out.StaticPodURLHeader *out = make(map[string][]string, len(*in)) for key, val := range *in { + var outVal []string if val == nil { (*out)[key] = nil } else { - (*out)[key] = make([]string, len(val)) - copy((*out)[key], val) + in, out := &val, &outVal + *out = make([]string, len(*in)) + copy(*out, *in) } + (*out)[key] = outVal } } if in.TLSCipherSuites != nil { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/pluginregistration/v1alpha1/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/pluginregistration/v1alpha1/BUILD index f51668500b..8939e14df1 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/pluginregistration/v1alpha1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/pluginregistration/v1alpha1/BUILD @@ -32,9 +32,3 @@ filegroup( srcs = [":package-srcs"], tags = ["automanaged"], ) - -filegroup( - name = "go_default_library_protos", - srcs = ["api.proto"], - visibility = ["//visibility:public"], -) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1/BUILD index 61a83c2612..3244cdf511 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1/BUILD @@ -9,7 +9,7 @@ go_library( name = "go_default_library", srcs = ["types.go"], importpath = "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1", - deps = ["//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library"], + deps = ["//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library"], ) filegroup( diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cadvisor/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cadvisor/BUILD index 5f73322bb2..7199ed3dfd 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cadvisor/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cadvisor/BUILD @@ -9,80 +9,35 @@ load( go_library( name = "go_default_library", srcs = [ + "cadvisor_linux.go", + "cadvisor_unsupported.go", + "cadvisor_windows.go", "doc.go", + "helpers_linux.go", + "helpers_unsupported.go", "types.go", "util.go", - ] + select({ - "@io_bazel_rules_go//go/platform:android": [ - "cadvisor_unsupported.go", - "helpers_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "cadvisor_unsupported.go", - "helpers_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "cadvisor_unsupported.go", - "helpers_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "cadvisor_unsupported.go", - "helpers_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "cadvisor_linux.go", - "cadvisor_unsupported.go", - "helpers_linux.go", - "helpers_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "cadvisor_unsupported.go", - "helpers_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "cadvisor_unsupported.go", - "helpers_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "cadvisor_unsupported.go", - "helpers_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "cadvisor_unsupported.go", - "helpers_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "cadvisor_unsupported.go", - "helpers_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "cadvisor_windows.go", - "helpers_unsupported.go", - ], - "//conditions:default": [], - }), + ], importpath = "k8s.io/kubernetes/pkg/kubelet/cadvisor", deps = [ "//pkg/apis/core/v1/helper:go_default_library", "//pkg/features:go_default_library", "//pkg/kubelet/types:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", "//vendor/github.com/google/cadvisor/events:go_default_library", "//vendor/github.com/google/cadvisor/info/v1:go_default_library", "//vendor/github.com/google/cadvisor/info/v2:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", ] + select({ "@io_bazel_rules_go//go/platform:linux": [ "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/google/cadvisor/cache/memory:go_default_library", "//vendor/github.com/google/cadvisor/container:go_default_library", "//vendor/github.com/google/cadvisor/fs:go_default_library", - "//vendor/github.com/google/cadvisor/http:go_default_library", "//vendor/github.com/google/cadvisor/manager:go_default_library", "//vendor/github.com/google/cadvisor/metrics:go_default_library", "//vendor/github.com/google/cadvisor/utils/sysfs:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", ], "@io_bazel_rules_go//go/platform:windows": [ "//pkg/kubelet/winstats:go_default_library", @@ -93,24 +48,21 @@ go_library( go_test( name = "go_default_test", - srcs = select({ - "@io_bazel_rules_go//go/platform:linux": [ - "cadvisor_linux_test.go", - "util_test.go", - ], - "//conditions:default": [], - }), + srcs = [ + "cadvisor_linux_test.go", + "util_test.go", + ], embed = [":go_default_library"], deps = select({ "@io_bazel_rules_go//go/platform:linux": [ "//pkg/apis/core/v1/helper:go_default_library", "//pkg/features:go_default_library", "//pkg/kubelet/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", "//vendor/github.com/google/cadvisor/info/v1:go_default_library", "//vendor/github.com/google/cadvisor/metrics:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", ], "//conditions:default": [], }), diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cadvisor/cadvisor_linux.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cadvisor/cadvisor_linux.go index 6418beb187..795408b6d4 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cadvisor/cadvisor_linux.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cadvisor/cadvisor_linux.go @@ -21,24 +21,20 @@ package cadvisor import ( "flag" "fmt" - "net" "net/http" "os" "path" - "strconv" "time" "github.com/golang/glog" "github.com/google/cadvisor/cache/memory" cadvisormetrics "github.com/google/cadvisor/container" "github.com/google/cadvisor/events" - cadvisorhttp "github.com/google/cadvisor/http" cadvisorapi "github.com/google/cadvisor/info/v1" cadvisorapiv2 "github.com/google/cadvisor/info/v2" "github.com/google/cadvisor/manager" "github.com/google/cadvisor/metrics" "github.com/google/cadvisor/utils/sysfs" - "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/kubernetes/pkg/kubelet/types" ) @@ -105,7 +101,7 @@ func containerLabels(c *cadvisorapi.ContainerInfo) map[string]string { } // New creates a cAdvisor and exports its API on the specified port if port > 0. -func New(address string, port uint, imageFsInfoProvider ImageFsInfoProvider, rootPath string, usingLegacyStats bool) (Interface, error) { +func New(imageFsInfoProvider ImageFsInfoProvider, rootPath string, usingLegacyStats bool) (Interface, error) { sysFs := sysfs.NewRealSysFs() ignoreMetrics := cadvisormetrics.MetricSet{ @@ -140,10 +136,6 @@ func New(address string, port uint, imageFsInfoProvider ImageFsInfoProvider, roo Manager: m, } - err = cadvisorClient.exportHTTP(address, port) - if err != nil { - return nil, err - } return cadvisorClient, nil } @@ -151,42 +143,6 @@ func (cc *cadvisorClient) Start() error { return cc.Manager.Start() } -func (cc *cadvisorClient) exportHTTP(address string, port uint) error { - // Register the handlers regardless as this registers the prometheus - // collector properly. - mux := http.NewServeMux() - err := cadvisorhttp.RegisterHandlers(mux, cc, "", "", "", "") - if err != nil { - return err - } - - cadvisorhttp.RegisterPrometheusHandler(mux, cc, "/metrics", containerLabels) - - // Only start the http server if port > 0 - if port > 0 { - serv := &http.Server{ - Addr: net.JoinHostPort(address, strconv.Itoa(int(port))), - Handler: mux, - } - - // TODO(vmarmol): Remove this when the cAdvisor port is once again free. - // If export failed, retry in the background until we are able to bind. - // This allows an existing cAdvisor to be killed before this one registers. - go func() { - defer runtime.HandleCrash() - - err := serv.ListenAndServe() - for err != nil { - glog.Infof("Failed to register cAdvisor on port %d, retrying. Error: %v", port, err) - time.Sleep(time.Minute) - err = serv.ListenAndServe() - } - }() - } - - return nil -} - func (cc *cadvisorClient) ContainerInfo(name string, req *cadvisorapi.ContainerInfoRequest) (*cadvisorapi.ContainerInfo, error) { return cc.GetContainerInfo(name, req) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cadvisor/cadvisor_unsupported.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cadvisor/cadvisor_unsupported.go index 501c743d35..ce81ff0efa 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cadvisor/cadvisor_unsupported.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cadvisor/cadvisor_unsupported.go @@ -31,7 +31,7 @@ type cadvisorUnsupported struct { var _ Interface = new(cadvisorUnsupported) -func New(address string, port uint, imageFsInfoProvider ImageFsInfoProvider, rootPath string, usingLegacyStats bool) (Interface, error) { +func New(imageFsInfoProvider ImageFsInfoProvider, rootPath string, usingLegacyStats bool) (Interface, error) { return &cadvisorUnsupported{}, nil } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cadvisor/cadvisor_windows.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cadvisor/cadvisor_windows.go index eb416a141d..eeded9b776 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cadvisor/cadvisor_windows.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cadvisor/cadvisor_windows.go @@ -33,7 +33,7 @@ type cadvisorClient struct { var _ Interface = new(cadvisorClient) // New creates a cAdvisor and exports its API on the specified port if port > 0. -func New(address string, port uint, imageFsInfoProvider ImageFsInfoProvider, rootPath string, usingLegacyStats bool) (Interface, error) { +func New(imageFsInfoProvider ImageFsInfoProvider, rootPath string, usingLegacyStats bool) (Interface, error) { client, err := winstats.NewPerfCounterClient() return &cadvisorClient{ rootPath: rootPath, diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/certificate/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/certificate/BUILD index 6910df4d93..0ef7eaf52f 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/certificate/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/certificate/BUILD @@ -16,29 +16,34 @@ go_library( deps = [ "//pkg/kubelet/apis/kubeletconfig:go_default_library", "//pkg/kubelet/metrics:go_default_library", + "//staging/src/k8s.io/api/certificates/v1beta1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/certificates/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/util/certificate:go_default_library", + "//staging/src/k8s.io/client-go/util/connrotation:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/prometheus/client_golang/prometheus:go_default_library", - "//vendor/k8s.io/api/certificates/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/util/certificate:go_default_library", - "//vendor/k8s.io/client-go/util/connrotation:go_default_library", ], ) go_test( name = "go_default_test", - srcs = ["transport_test.go"], + srcs = [ + "kubelet_test.go", + "transport_test.go", + ], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/certificates/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/certificate/bootstrap/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/certificate/bootstrap/BUILD index cb21aefbc3..b622380ee5 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/certificate/bootstrap/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/certificate/bootstrap/BUILD @@ -11,8 +11,8 @@ go_test( srcs = ["bootstrap_test.go"], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) @@ -21,17 +21,17 @@ go_library( srcs = ["bootstrap.go"], importpath = "k8s.io/kubernetes/pkg/kubelet/certificate/bootstrap", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/certificates/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/tools/clientcmd:go_default_library", + "//staging/src/k8s.io/client-go/tools/clientcmd/api:go_default_library", + "//staging/src/k8s.io/client-go/transport:go_default_library", + "//staging/src/k8s.io/client-go/util/cert:go_default_library", + "//staging/src/k8s.io/client-go/util/certificate:go_default_library", + "//staging/src/k8s.io/client-go/util/certificate/csr:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/tools/clientcmd:go_default_library", - "//vendor/k8s.io/client-go/tools/clientcmd/api:go_default_library", - "//vendor/k8s.io/client-go/transport:go_default_library", - "//vendor/k8s.io/client-go/util/cert:go_default_library", - "//vendor/k8s.io/client-go/util/certificate:go_default_library", - "//vendor/k8s.io/client-go/util/certificate/csr:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/certificate/kubelet.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/certificate/kubelet.go index b8530074c4..dbb799ee80 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/certificate/kubelet.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/certificate/kubelet.go @@ -21,10 +21,12 @@ import ( "crypto/x509/pkix" "fmt" "net" + "sort" "github.com/prometheus/client_golang/prometheus" certificates "k8s.io/api/certificates/v1beta1" + "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/types" clientset "k8s.io/client-go/kubernetes" clientcertificates "k8s.io/client-go/kubernetes/typed/certificates/v1beta1" @@ -35,7 +37,7 @@ import ( // NewKubeletServerCertificateManager creates a certificate manager for the kubelet when retrieving a server certificate // or returns an error. -func NewKubeletServerCertificateManager(kubeClient clientset.Interface, kubeCfg *kubeletconfig.KubeletConfiguration, nodeName types.NodeName, ips []net.IP, hostnames []string, certDirectory string) (certificate.Manager, error) { +func NewKubeletServerCertificateManager(kubeClient clientset.Interface, kubeCfg *kubeletconfig.KubeletConfiguration, nodeName types.NodeName, getAddresses func() []v1.NodeAddress, certDirectory string) (certificate.Manager, error) { var certSigningRequestClient clientcertificates.CertificateSigningRequestInterface if kubeClient != nil && kubeClient.CertificatesV1beta1() != nil { certSigningRequestClient = kubeClient.CertificatesV1beta1().CertificateSigningRequests() @@ -59,16 +61,25 @@ func NewKubeletServerCertificateManager(kubeClient clientset.Interface, kubeCfg ) prometheus.MustRegister(certificateExpiration) - m, err := certificate.NewManager(&certificate.Config{ - CertificateSigningRequestClient: certSigningRequestClient, - Template: &x509.CertificateRequest{ + getTemplate := func() *x509.CertificateRequest { + hostnames, ips := addressesToHostnamesAndIPs(getAddresses()) + // don't return a template if we have no addresses to request for + if len(hostnames) == 0 && len(ips) == 0 { + return nil + } + return &x509.CertificateRequest{ Subject: pkix.Name{ CommonName: fmt.Sprintf("system:node:%s", nodeName), Organization: []string{"system:nodes"}, }, DNSNames: hostnames, IPAddresses: ips, - }, + } + } + + m, err := certificate.NewManager(&certificate.Config{ + CertificateSigningRequestClient: certSigningRequestClient, + GetTemplate: getTemplate, Usages: []certificates.KeyUsage{ // https://tools.ietf.org/html/rfc5280#section-4.2.1.3 // @@ -92,6 +103,44 @@ func NewKubeletServerCertificateManager(kubeClient clientset.Interface, kubeCfg return m, nil } +func addressesToHostnamesAndIPs(addresses []v1.NodeAddress) (dnsNames []string, ips []net.IP) { + seenDNSNames := map[string]bool{} + seenIPs := map[string]bool{} + for _, address := range addresses { + if len(address.Address) == 0 { + continue + } + + switch address.Type { + case v1.NodeHostName: + if ip := net.ParseIP(address.Address); ip != nil { + seenIPs[address.Address] = true + } else { + seenDNSNames[address.Address] = true + } + case v1.NodeExternalIP, v1.NodeInternalIP: + if ip := net.ParseIP(address.Address); ip != nil { + seenIPs[address.Address] = true + } + case v1.NodeExternalDNS, v1.NodeInternalDNS: + seenDNSNames[address.Address] = true + } + } + + for dnsName := range seenDNSNames { + dnsNames = append(dnsNames, dnsName) + } + for ip := range seenIPs { + ips = append(ips, net.ParseIP(ip)) + } + + // return in stable order + sort.Strings(dnsNames) + sort.Slice(ips, func(i, j int) bool { return ips[i].String() < ips[j].String() }) + + return dnsNames, ips +} + // NewKubeletClientCertificateManager sets up a certificate manager without a // client that can be used to sign new certificates (or rotate). It answers with // whatever certificate it is initialized with. If a CSR client is set later, it diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/checkpoint/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/checkpoint/BUILD index 0be2f14b41..a57fff4cdb 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/checkpoint/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/checkpoint/BUILD @@ -9,8 +9,8 @@ go_library( "//pkg/apis/core:go_default_library", "//pkg/kubelet/checkpointmanager:go_default_library", "//pkg/kubelet/checkpointmanager/checksum:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", ], ) @@ -21,8 +21,8 @@ go_test( deps = [ "//pkg/apis/core:go_default_library", "//pkg/kubelet/checkpointmanager:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cloud_request_manager.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cloud_request_manager.go new file mode 100644 index 0000000000..58752bf19d --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cloud_request_manager.go @@ -0,0 +1,116 @@ +/* +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 kubelet + +import ( + "context" + "fmt" + "sync" + "time" + + "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/types" + "k8s.io/apimachinery/pkg/util/wait" + "k8s.io/kubernetes/pkg/cloudprovider" + + "github.com/golang/glog" +) + +var nodeAddressesRetryPeriod = 5 * time.Second + +type cloudResourceSyncManager struct { + // Cloud provider interface. + cloud cloudprovider.Interface + // Sync period + syncPeriod time.Duration + + nodeAddressesMux sync.Mutex + nodeAddressesErr error + nodeAddresses []v1.NodeAddress + + nodeName types.NodeName +} + +// NewCloudResourceSyncManager creates a manager responsible for collecting resources +// from a cloud provider through requests that are sensitive to timeouts and hanging +func NewCloudResourceSyncManager(cloud cloudprovider.Interface, nodeName types.NodeName, syncPeriod time.Duration) *cloudResourceSyncManager { + return &cloudResourceSyncManager{ + cloud: cloud, + syncPeriod: syncPeriod, + nodeName: nodeName, + } +} + +func (manager *cloudResourceSyncManager) getNodeAddressSafe() ([]v1.NodeAddress, error) { + manager.nodeAddressesMux.Lock() + defer manager.nodeAddressesMux.Unlock() + + return manager.nodeAddresses, manager.nodeAddressesErr +} + +func (manager *cloudResourceSyncManager) setNodeAddressSafe(nodeAddresses []v1.NodeAddress, err error) { + manager.nodeAddressesMux.Lock() + defer manager.nodeAddressesMux.Unlock() + + manager.nodeAddresses = nodeAddresses + manager.nodeAddressesErr = err +} + +// NodeAddresses does not wait for cloud provider to return a node addresses. +// It always returns node addresses or an error. +func (manager *cloudResourceSyncManager) NodeAddresses() ([]v1.NodeAddress, error) { + // wait until there is something + for { + nodeAddresses, err := manager.getNodeAddressSafe() + if len(nodeAddresses) == 0 && err == nil { + glog.V(5).Infof("Waiting for %v for cloud provider to provide node addresses", nodeAddressesRetryPeriod) + time.Sleep(nodeAddressesRetryPeriod) + continue + } + return nodeAddresses, err + } +} + +func (manager *cloudResourceSyncManager) collectNodeAddresses(ctx context.Context, nodeName types.NodeName) { + glog.V(2).Infof("Requesting node addresses from cloud provider for node %q", nodeName) + + instances, ok := manager.cloud.Instances() + if !ok { + manager.setNodeAddressSafe(nil, fmt.Errorf("failed to get instances from cloud provider")) + return + } + + // TODO(roberthbailey): Can we do this without having credentials to talk + // to the cloud provider? + // TODO(justinsb): We can if CurrentNodeName() was actually CurrentNode() and returned an interface + // TODO: If IP addresses couldn't be fetched from the cloud provider, should kubelet fallback on the other methods for getting the IP below? + + nodeAddresses, err := instances.NodeAddresses(ctx, nodeName) + if err != nil { + manager.setNodeAddressSafe(nil, fmt.Errorf("failed to get node address from cloud provider: %v", err)) + glog.V(2).Infof("Node addresses from cloud provider for node %q not collected", nodeName) + } else { + manager.setNodeAddressSafe(nodeAddresses, nil) + glog.V(2).Infof("Node addresses from cloud provider for node %q collected", nodeName) + } +} + +func (manager *cloudResourceSyncManager) Run(stopCh <-chan struct{}) { + wait.Until(func() { + manager.collectNodeAddresses(context.TODO(), manager.nodeName) + }, manager.syncPeriod, stopCh) +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/BUILD index 8bfdd017dc..e9318821e0 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/BUILD @@ -3,83 +3,24 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") go_library( name = "go_default_library", srcs = [ + "cgroup_manager_linux.go", + "cgroup_manager_unsupported.go", "container_manager.go", + "container_manager_linux.go", "container_manager_stub.go", + "container_manager_unsupported.go", + "container_manager_windows.go", "fake_internal_container_lifecycle.go", + "helpers_linux.go", + "helpers_unsupported.go", "internal_container_lifecycle.go", + "node_container_manager.go", + "pod_container_manager_linux.go", "pod_container_manager_stub.go", + "pod_container_manager_unsupported.go", + "qos_container_manager_linux.go", "types.go", - ] + select({ - "@io_bazel_rules_go//go/platform:android": [ - "cgroup_manager_unsupported.go", - "container_manager_unsupported.go", - "helpers_unsupported.go", - "pod_container_manager_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "cgroup_manager_unsupported.go", - "container_manager_unsupported.go", - "helpers_unsupported.go", - "pod_container_manager_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "cgroup_manager_unsupported.go", - "container_manager_unsupported.go", - "helpers_unsupported.go", - "pod_container_manager_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "cgroup_manager_unsupported.go", - "container_manager_unsupported.go", - "helpers_unsupported.go", - "pod_container_manager_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "cgroup_manager_linux.go", - "container_manager_linux.go", - "helpers_linux.go", - "node_container_manager.go", - "pod_container_manager_linux.go", - "qos_container_manager_linux.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "cgroup_manager_unsupported.go", - "container_manager_unsupported.go", - "helpers_unsupported.go", - "pod_container_manager_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "cgroup_manager_unsupported.go", - "container_manager_unsupported.go", - "helpers_unsupported.go", - "pod_container_manager_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "cgroup_manager_unsupported.go", - "container_manager_unsupported.go", - "helpers_unsupported.go", - "pod_container_manager_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "cgroup_manager_unsupported.go", - "container_manager_unsupported.go", - "helpers_unsupported.go", - "pod_container_manager_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "cgroup_manager_unsupported.go", - "container_manager_unsupported.go", - "helpers_unsupported.go", - "pod_container_manager_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "cgroup_manager_unsupported.go", - "container_manager_windows.go", - "helpers_unsupported.go", - "pod_container_manager_unsupported.go", - ], - "//conditions:default": [], - }), + ], importpath = "k8s.io/kubernetes/pkg/kubelet/cm", visibility = ["//visibility:public"], deps = [ @@ -92,32 +33,32 @@ go_library( "//pkg/kubelet/lifecycle:go_default_library", "//pkg/kubelet/status:go_default_library", "//pkg/scheduler/cache:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", ] + select({ "@io_bazel_rules_go//go/platform:android": [ "//pkg/kubelet/cadvisor:go_default_library", "//pkg/util/mount:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", ], "@io_bazel_rules_go//go/platform:darwin": [ "//pkg/kubelet/cadvisor:go_default_library", "//pkg/util/mount:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", ], "@io_bazel_rules_go//go/platform:dragonfly": [ "//pkg/kubelet/cadvisor:go_default_library", "//pkg/util/mount:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", ], "@io_bazel_rules_go//go/platform:freebsd": [ "//pkg/kubelet/cadvisor:go_default_library", "//pkg/util/mount:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", ], "@io_bazel_rules_go//go/platform:linux": [ "//pkg/api/v1/resource:go_default_library", @@ -136,44 +77,44 @@ go_library( "//pkg/util/procfs:go_default_library", "//pkg/util/sysctl:go_default_library", "//pkg/util/version:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", "//vendor/github.com/docker/go-units:go_default_library", "//vendor/github.com/opencontainers/runc/libcontainer/cgroups:go_default_library", "//vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs:go_default_library", "//vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd:go_default_library", "//vendor/github.com/opencontainers/runc/libcontainer/configs:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", ], "@io_bazel_rules_go//go/platform:nacl": [ "//pkg/kubelet/cadvisor:go_default_library", "//pkg/util/mount:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", ], "@io_bazel_rules_go//go/platform:netbsd": [ "//pkg/kubelet/cadvisor:go_default_library", "//pkg/util/mount:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", ], "@io_bazel_rules_go//go/platform:openbsd": [ "//pkg/kubelet/cadvisor:go_default_library", "//pkg/util/mount:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", ], "@io_bazel_rules_go//go/platform:plan9": [ "//pkg/kubelet/cadvisor:go_default_library", "//pkg/util/mount:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", ], "@io_bazel_rules_go//go/platform:solaris": [ "//pkg/kubelet/cadvisor:go_default_library", "//pkg/util/mount:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", ], "@io_bazel_rules_go//go/platform:windows": [ "//pkg/kubelet/cadvisor:go_default_library", "//pkg/util/mount:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", ], "//conditions:default": [], }), @@ -181,27 +122,24 @@ go_library( go_test( name = "go_default_test", - srcs = select({ - "@io_bazel_rules_go//go/platform:linux": [ - "cgroup_manager_linux_test.go", - "cgroup_manager_test.go", - "container_manager_linux_test.go", - "helpers_linux_test.go", - "node_container_manager_test.go", - "pod_container_manager_linux_test.go", - ], - "//conditions:default": [], - }), + srcs = [ + "cgroup_manager_linux_test.go", + "cgroup_manager_test.go", + "container_manager_linux_test.go", + "helpers_linux_test.go", + "node_container_manager_test.go", + "pod_container_manager_linux_test.go", + ], embed = [":go_default_library"], deps = select({ "@io_bazel_rules_go//go/platform:linux": [ "//pkg/kubelet/eviction/api:go_default_library", "//pkg/util/mount:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", "//vendor/github.com/stretchr/testify/require:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", ], "//conditions:default": [], }), diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/container_manager_linux.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/container_manager_linux.go index 974986deab..fc27adb762 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/container_manager_linux.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/container_manager_linux.go @@ -540,12 +540,14 @@ func (cm *containerManagerImpl) Start(node *v1.Node, // allocatable of the node cm.nodeInfo = node - rootfs, err := cm.cadvisorInterface.RootFsInfo() - if err != nil { - return fmt.Errorf("failed to get rootfs info: %v", err) - } - for rName, rCap := range cadvisor.EphemeralStorageCapacityFromFsInfo(rootfs) { - cm.capacity[rName] = rCap + if utilfeature.DefaultFeatureGate.Enabled(kubefeatures.LocalStorageCapacityIsolation) { + rootfs, err := cm.cadvisorInterface.RootFsInfo() + if err != nil { + return fmt.Errorf("failed to get rootfs info: %v", err) + } + for rName, rCap := range cadvisor.EphemeralStorageCapacityFromFsInfo(rootfs) { + cm.capacity[rName] = rCap + } } // Ensure that node allocatable configuration is valid. diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/BUILD index 26d292e5f8..4b3baa3184 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/BUILD @@ -20,10 +20,10 @@ go_library( "//pkg/kubelet/cm/cpuset:go_default_library", "//pkg/kubelet/container:go_default_library", "//pkg/kubelet/status:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/google/cadvisor/info/v1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", ], ) @@ -42,11 +42,11 @@ go_test( "//pkg/kubelet/cm/cpumanager/state:go_default_library", "//pkg/kubelet/cm/cpumanager/topology:go_default_library", "//pkg/kubelet/cm/cpuset:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//vendor/github.com/google/cadvisor/info/v1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/cpu_manager.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/cpu_manager.go index b52fe59a12..1f3953e41b 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/cpu_manager.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/cpu_manager.go @@ -33,7 +33,6 @@ import ( "k8s.io/kubernetes/pkg/kubelet/cm/cpuset" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" "k8s.io/kubernetes/pkg/kubelet/status" - "path" ) // ActivePodsFunc is a function that returns a list of pods to reconcile. @@ -45,8 +44,8 @@ type runtimeService interface { type policyName string -// CPUManagerStateFileName is the name file name where cpu manager stores it's state -const CPUManagerStateFileName = "cpu_manager_state" +// cpuManagerStateFileName is the name file name where cpu manager stores it's state +const cpuManagerStateFileName = "cpu_manager_state" // Manager interface provides methods for Kubelet to manage pod cpus. type Manager interface { @@ -98,7 +97,7 @@ type manager struct { var _ Manager = &manager{} // NewManager creates new cpu manager based on provided policy -func NewManager(cpuPolicyName string, reconcilePeriod time.Duration, machineInfo *cadvisorapi.MachineInfo, nodeAllocatableReservation v1.ResourceList, stateFileDirecory string) (Manager, error) { +func NewManager(cpuPolicyName string, reconcilePeriod time.Duration, machineInfo *cadvisorapi.MachineInfo, nodeAllocatableReservation v1.ResourceList, stateFileDirectory string) (Manager, error) { var policy Policy switch policyName(cpuPolicyName) { @@ -137,9 +136,10 @@ func NewManager(cpuPolicyName string, reconcilePeriod time.Duration, machineInfo policy = NewNonePolicy() } - stateImpl := state.NewFileState( - path.Join(stateFileDirecory, CPUManagerStateFileName), - policy.Name()) + stateImpl, err := state.NewCheckpointState(stateFileDirectory, cpuManagerStateFileName, policy.Name()) + if err != nil { + return nil, fmt.Errorf("could not initialize checkpoint manager: %v", err) + } manager := &manager{ policy: policy, diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/policy_static.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/policy_static.go index 9a461bacb6..58996d18b1 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/policy_static.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/policy_static.go @@ -30,8 +30,6 @@ import ( // PolicyStatic is the name of the static policy const PolicyStatic policyName = "static" -var _ Policy = &staticPolicy{} - // staticPolicy is a CPU manager policy that does not change CPU // assignments for exclusively pinned guaranteed containers after the main // container process starts. diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state/BUILD index bcaf0045a0..d39211962e 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state/BUILD @@ -3,13 +3,18 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") go_library( name = "go_default_library", srcs = [ + "checkpoint.go", "state.go", + "state_checkpoint.go", "state_file.go", "state_mem.go", ], importpath = "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state", visibility = ["//visibility:public"], deps = [ + "//pkg/kubelet/checkpointmanager:go_default_library", + "//pkg/kubelet/checkpointmanager/checksum:go_default_library", + "//pkg/kubelet/checkpointmanager/errors:go_default_library", "//pkg/kubelet/cm/cpuset:go_default_library", "//vendor/github.com/golang/glog:go_default_library", ], @@ -17,9 +22,17 @@ go_library( go_test( name = "go_default_test", - srcs = ["state_file_test.go"], + srcs = [ + "state_checkpoint_test.go", + "state_compatibility_test.go", + "state_file_test.go", + ], embed = [":go_default_library"], - deps = ["//pkg/kubelet/cm/cpuset:go_default_library"], + deps = [ + "//pkg/kubelet/checkpointmanager:go_default_library", + "//pkg/kubelet/cm/cpumanager/state/testing:go_default_library", + "//pkg/kubelet/cm/cpuset:go_default_library", + ], ) filegroup( @@ -31,7 +44,10 @@ filegroup( filegroup( name = "all-srcs", - srcs = [":package-srcs"], + srcs = [ + ":package-srcs", + "//pkg/kubelet/cm/cpumanager/state/testing:all-srcs", + ], tags = ["automanaged"], visibility = ["//visibility:public"], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state/checkpoint.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state/checkpoint.go new file mode 100644 index 0000000000..40e0fc81ad --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state/checkpoint.go @@ -0,0 +1,67 @@ +/* +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 state + +import ( + "encoding/json" + + "k8s.io/kubernetes/pkg/kubelet/checkpointmanager" + "k8s.io/kubernetes/pkg/kubelet/checkpointmanager/checksum" +) + +var _ checkpointmanager.Checkpoint = &CPUManagerCheckpoint{} + +// CPUManagerCheckpoint struct is used to store cpu/pod assignments in a checkpoint +type CPUManagerCheckpoint struct { + PolicyName string `json:"policyName"` + DefaultCPUSet string `json:"defaultCpuSet"` + Entries map[string]string `json:"entries,omitempty"` + Checksum checksum.Checksum `json:"checksum"` +} + +// NewCPUManagerCheckpoint returns an instance of Checkpoint +func NewCPUManagerCheckpoint() *CPUManagerCheckpoint { + return &CPUManagerCheckpoint{ + Entries: make(map[string]string), + } +} + +// MarshalCheckpoint returns marshalled checkpoint +func (cp *CPUManagerCheckpoint) MarshalCheckpoint() ([]byte, error) { + // make sure checksum wasn't set before so it doesn't affect output checksum + cp.Checksum = 0 + cp.Checksum = checksum.New(cp) + return json.Marshal(*cp) +} + +// UnmarshalCheckpoint tries to unmarshal passed bytes to checkpoint +func (cp *CPUManagerCheckpoint) UnmarshalCheckpoint(blob []byte) error { + return json.Unmarshal(blob, cp) +} + +// VerifyChecksum verifies that current checksum of checkpoint is valid +func (cp *CPUManagerCheckpoint) VerifyChecksum() error { + if cp.Checksum == 0 { + // accept empty checksum for compatibility with old file backend + return nil + } + ck := cp.Checksum + cp.Checksum = 0 + err := ck.Verify(cp) + cp.Checksum = ck + return err +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state/state_checkpoint.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state/state_checkpoint.go new file mode 100644 index 0000000000..6d92573b86 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state/state_checkpoint.go @@ -0,0 +1,194 @@ +/* +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 state + +import ( + "fmt" + "path" + "sync" + + "github.com/golang/glog" + "k8s.io/kubernetes/pkg/kubelet/checkpointmanager" + "k8s.io/kubernetes/pkg/kubelet/checkpointmanager/errors" + "k8s.io/kubernetes/pkg/kubelet/cm/cpuset" +) + +var _ State = &stateCheckpoint{} + +type stateCheckpoint struct { + mux sync.RWMutex + policyName string + cache State + checkpointManager checkpointmanager.CheckpointManager + checkpointName string +} + +// NewCheckpointState creates new State for keeping track of cpu/pod assignment with checkpoint backend +func NewCheckpointState(stateDir, checkpointName, policyName string) (State, error) { + checkpointManager, err := checkpointmanager.NewCheckpointManager(stateDir) + if err != nil { + return nil, fmt.Errorf("failed to initialize checkpoint manager: %v", err) + } + stateCheckpoint := &stateCheckpoint{ + cache: NewMemoryState(), + policyName: policyName, + checkpointManager: checkpointManager, + checkpointName: checkpointName, + } + + if err := stateCheckpoint.restoreState(); err != nil { + return nil, fmt.Errorf("could not restore state from checkpoint: %v\n"+ + "Please drain this node and delete the CPU manager checkpoint file %q before restarting Kubelet.", + err, path.Join(stateDir, checkpointName)) + } + + return stateCheckpoint, nil +} + +// restores state from a checkpoint and creates it if it doesn't exist +func (sc *stateCheckpoint) restoreState() error { + sc.mux.Lock() + defer sc.mux.Unlock() + var err error + + // used when all parsing is ok + tmpAssignments := make(ContainerCPUAssignments) + tmpDefaultCPUSet := cpuset.NewCPUSet() + tmpContainerCPUSet := cpuset.NewCPUSet() + + checkpoint := NewCPUManagerCheckpoint() + if err = sc.checkpointManager.GetCheckpoint(sc.checkpointName, checkpoint); err != nil { + if err == errors.ErrCheckpointNotFound { + sc.storeState() + return nil + } + return err + } + + if sc.policyName != checkpoint.PolicyName { + return fmt.Errorf("configured policy %q differs from state checkpoint policy %q", sc.policyName, checkpoint.PolicyName) + } + + if tmpDefaultCPUSet, err = cpuset.Parse(checkpoint.DefaultCPUSet); err != nil { + return fmt.Errorf("could not parse default cpu set %q: %v", checkpoint.DefaultCPUSet, err) + } + + for containerID, cpuString := range checkpoint.Entries { + if tmpContainerCPUSet, err = cpuset.Parse(cpuString); err != nil { + return fmt.Errorf("could not parse cpuset %q for container id %q: %v", cpuString, containerID, err) + } + tmpAssignments[containerID] = tmpContainerCPUSet + } + + sc.cache.SetDefaultCPUSet(tmpDefaultCPUSet) + sc.cache.SetCPUAssignments(tmpAssignments) + + glog.V(2).Info("[cpumanager] state checkpoint: restored state from checkpoint") + glog.V(2).Infof("[cpumanager] state checkpoint: defaultCPUSet: %s", tmpDefaultCPUSet.String()) + + return nil +} + +// saves state to a checkpoint, caller is responsible for locking +func (sc *stateCheckpoint) storeState() { + checkpoint := NewCPUManagerCheckpoint() + checkpoint.PolicyName = sc.policyName + checkpoint.DefaultCPUSet = sc.cache.GetDefaultCPUSet().String() + + for containerID, cset := range sc.cache.GetCPUAssignments() { + checkpoint.Entries[containerID] = cset.String() + } + + err := sc.checkpointManager.CreateCheckpoint(sc.checkpointName, checkpoint) + + if err != nil { + panic("[cpumanager] could not save checkpoint: " + err.Error()) + } +} + +// GetCPUSet returns current CPU set +func (sc *stateCheckpoint) GetCPUSet(containerID string) (cpuset.CPUSet, bool) { + sc.mux.RLock() + defer sc.mux.RUnlock() + + res, ok := sc.cache.GetCPUSet(containerID) + return res, ok +} + +// GetDefaultCPUSet returns default CPU set +func (sc *stateCheckpoint) GetDefaultCPUSet() cpuset.CPUSet { + sc.mux.RLock() + defer sc.mux.RUnlock() + + return sc.cache.GetDefaultCPUSet() +} + +// GetCPUSetOrDefault returns current CPU set, or default one if it wasn't changed +func (sc *stateCheckpoint) GetCPUSetOrDefault(containerID string) cpuset.CPUSet { + sc.mux.RLock() + defer sc.mux.RUnlock() + + return sc.cache.GetCPUSetOrDefault(containerID) +} + +// GetCPUAssignments returns current CPU to pod assignments +func (sc *stateCheckpoint) GetCPUAssignments() ContainerCPUAssignments { + sc.mux.RLock() + defer sc.mux.RUnlock() + + return sc.cache.GetCPUAssignments() +} + +// SetCPUSet sets CPU set +func (sc *stateCheckpoint) SetCPUSet(containerID string, cset cpuset.CPUSet) { + sc.mux.Lock() + defer sc.mux.Unlock() + sc.cache.SetCPUSet(containerID, cset) + sc.storeState() +} + +// SetDefaultCPUSet sets default CPU set +func (sc *stateCheckpoint) SetDefaultCPUSet(cset cpuset.CPUSet) { + sc.mux.Lock() + defer sc.mux.Unlock() + sc.cache.SetDefaultCPUSet(cset) + sc.storeState() +} + +// SetCPUAssignments sets CPU to pod assignments +func (sc *stateCheckpoint) SetCPUAssignments(a ContainerCPUAssignments) { + sc.mux.Lock() + defer sc.mux.Unlock() + sc.cache.SetCPUAssignments(a) + sc.storeState() +} + +// Delete deletes assignment for specified pod +func (sc *stateCheckpoint) Delete(containerID string) { + sc.mux.Lock() + defer sc.mux.Unlock() + sc.cache.Delete(containerID) + sc.storeState() +} + +// ClearState clears the state and saves it in a checkpoint +func (sc *stateCheckpoint) ClearState() { + sc.mux.Lock() + defer sc.mux.Unlock() + sc.cache.ClearState() + sc.storeState() +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/devicemanager/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/devicemanager/BUILD index d2e467cca3..0152617407 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/devicemanager/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/devicemanager/BUILD @@ -23,11 +23,11 @@ go_library( "//pkg/kubelet/lifecycle:go_default_library", "//pkg/kubelet/metrics:go_default_library", "//pkg/scheduler/cache:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/google.golang.org/grpc:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", ], ) @@ -43,13 +43,13 @@ go_test( "//pkg/kubelet/checkpointmanager:go_default_library", "//pkg/kubelet/lifecycle:go_default_library", "//pkg/scheduler/cache:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", "//vendor/github.com/stretchr/testify/require:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/uuid:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/devicemanager/manager.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/devicemanager/manager.go index 38805ce75d..90ae034c61 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/devicemanager/manager.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/devicemanager/manager.go @@ -259,7 +259,6 @@ func (m *ManagerImpl) Devices() map[string][]pluginapi.Device { func (m *ManagerImpl) Allocate(node *schedulercache.NodeInfo, attrs *lifecycle.PodAdmitAttributes) error { pod := attrs.Pod devicesToReuse := make(map[string]sets.String) - // TODO: Reuse devices between init containers and regular containers. for _, container := range pod.Spec.InitContainers { if err := m.allocateContainerResources(pod, &container, devicesToReuse); err != nil { return err diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/util/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/util/BUILD index e344dc6e66..3332cdc4af 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/util/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/util/BUILD @@ -7,42 +7,10 @@ load( go_library( name = "go_default_library", - srcs = select({ - "@io_bazel_rules_go//go/platform:android": [ - "cgroups_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "cgroups_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "cgroups_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "cgroups_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "cgroups_linux.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "cgroups_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "cgroups_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "cgroups_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "cgroups_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "cgroups_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "cgroups_unsupported.go", - ], - "//conditions:default": [], - }), + srcs = [ + "cgroups_linux.go", + "cgroups_unsupported.go", + ], importpath = "k8s.io/kubernetes/pkg/kubelet/cm/util", deps = select({ "@io_bazel_rules_go//go/platform:linux": [ diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/config/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/config/BUILD index 6985adfdd1..82cb3a86ec 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/config/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/config/BUILD @@ -9,45 +9,12 @@ go_library( "defaults.go", "doc.go", "file.go", + "file_linux.go", + "file_unsupported.go", "flags.go", "http.go", "sources.go", - ] + select({ - "@io_bazel_rules_go//go/platform:android": [ - "file_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "file_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "file_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "file_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "file_linux.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "file_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "file_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "file_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "file_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "file_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "file_unsupported.go", - ], - "//conditions:default": [], - }), + ], importpath = "k8s.io/kubernetes/pkg/kubelet/config", visibility = ["//visibility:public"], deps = [ @@ -65,23 +32,23 @@ go_library( "//pkg/kubelet/util/format:go_default_library", "//pkg/util/config:go_default_library", "//pkg/util/hash:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/yaml:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/spf13/pflag:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/yaml:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", ] + select({ "@io_bazel_rules_go//go/platform:linux": [ + "//staging/src/k8s.io/client-go/util/flowcontrol:go_default_library", "//vendor/golang.org/x/exp/inotify:go_default_library", - "//vendor/k8s.io/client-go/util/flowcontrol:go_default_library", ], "//conditions:default": [], }), @@ -93,14 +60,10 @@ go_test( "apiserver_test.go", "common_test.go", "config_test.go", + "file_linux_test.go", "file_test.go", "http_test.go", - ] + select({ - "@io_bazel_rules_go//go/platform:linux": [ - "file_linux_test.go", - ], - "//conditions:default": [], - }), + ], embed = [":go_default_library"], deps = [ "//pkg/api/legacyscheme:go_default_library", @@ -112,20 +75,20 @@ go_test( "//pkg/kubelet/checkpointmanager:go_default_library", "//pkg/kubelet/types:go_default_library", "//pkg/securitycontext:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", + "//staging/src/k8s.io/client-go/util/testing:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", - "//vendor/k8s.io/client-go/util/testing:go_default_library", ] + select({ "@io_bazel_rules_go//go/platform:linux": [ - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", ], "//conditions:default": [], }), diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/config/file.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/config/file.go index 7fbf53349d..683dc9a3c9 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/config/file.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/config/file.go @@ -93,6 +93,10 @@ func (s *sourceFile) run() { listTicker := time.NewTicker(s.period) go func() { + // Read path immediately to speed up startup. + if err := s.listConfig(); err != nil { + glog.Errorf("Unable to read config path %q: %v", s.path, err) + } for { select { case <-listTicker.C: @@ -179,7 +183,9 @@ func (s *sourceFile) extractFromDir(name string) ([]*v1.Pod, error) { case statInfo.Mode().IsRegular(): pod, err := s.extractFromFile(path) if err != nil { - glog.Errorf("Can't process manifest file %q: %v", path, err) + if !os.IsNotExist(err) { + glog.Errorf("Can't process manifest file %q: %v", path, err) + } } else { pods = append(pods, pod) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/config/flags.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/config/flags.go index 7710580794..bedc919f6e 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/config/flags.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/config/flags.go @@ -96,12 +96,12 @@ func (s *ContainerRuntimeOptions) AddFlags(fs *pflag.FlagSet) { fs.BoolVar(&s.DockerDisableSharedPID, "docker-disable-shared-pid", s.DockerDisableSharedPID, fmt.Sprintf("Setting this to false causes Kubernetes to create pods using a shared process namespace for containers in a pod when running with Docker 1.13.1 or higher. A future Kubernetes release will make this configurable instead in the API. %s", dockerOnlyWarning)) fs.MarkDeprecated("docker-disable-shared-pid", "will be removed in a future release. This option will be replaced by PID namespace sharing that is configurable per-pod using the API. See https://features.k8s.io/495") fs.StringVar(&s.PodSandboxImage, "pod-infra-container-image", s.PodSandboxImage, fmt.Sprintf("The image whose network/ipc namespaces containers in each pod will use. %s", dockerOnlyWarning)) - fs.StringVar(&s.DockerEndpoint, "docker-endpoint", s.DockerEndpoint, fmt.Sprintf("Use this for the docker endpoint to communicate with %s", dockerOnlyWarning)) + fs.StringVar(&s.DockerEndpoint, "docker-endpoint", s.DockerEndpoint, fmt.Sprintf("Use this for the docker endpoint to communicate with. %s", dockerOnlyWarning)) fs.DurationVar(&s.ImagePullProgressDeadline.Duration, "image-pull-progress-deadline", s.ImagePullProgressDeadline.Duration, fmt.Sprintf("If no pulling progress is made before this deadline, the image pulling will be cancelled. %s", dockerOnlyWarning)) // Network plugin settings for Docker. fs.StringVar(&s.NetworkPluginName, "network-plugin", s.NetworkPluginName, fmt.Sprintf(" The name of the network plugin to be invoked for various events in kubelet/pod lifecycle. %s", dockerOnlyWarning)) - fs.StringVar(&s.CNIConfDir, "cni-conf-dir", s.CNIConfDir, fmt.Sprintf(" The full path of the directory in which to search for CNI config files. Default: /etc/cni/net.d. %s", dockerOnlyWarning)) - fs.StringVar(&s.CNIBinDir, "cni-bin-dir", s.CNIBinDir, fmt.Sprintf(" A comma-separated list of full paths of directories in which to search for CNI plugin binaries. Default: /opt/cni/bin. %s", dockerOnlyWarning)) + fs.StringVar(&s.CNIConfDir, "cni-conf-dir", s.CNIConfDir, fmt.Sprintf(" The full path of the directory in which to search for CNI config files. %s", dockerOnlyWarning)) + fs.StringVar(&s.CNIBinDir, "cni-bin-dir", s.CNIBinDir, fmt.Sprintf(" A comma-separated list of full paths of directories in which to search for CNI plugin binaries. %s", dockerOnlyWarning)) fs.Int32Var(&s.NetworkPluginMTU, "network-plugin-mtu", s.NetworkPluginMTU, fmt.Sprintf(" The MTU to be passed to the network plugin, to override the default. Set to 0 to use the default 1460 MTU. %s", dockerOnlyWarning)) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/configmap/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/configmap/BUILD index 84d1e029d7..fcba112207 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/configmap/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/configmap/BUILD @@ -15,13 +15,15 @@ go_library( importpath = "k8s.io/kubernetes/pkg/kubelet/configmap", deps = [ "//pkg/api/v1/pod:go_default_library", + "//pkg/apis/core/v1:go_default_library", "//pkg/kubelet/util/manager:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", ], ) @@ -44,11 +46,11 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/kubelet/util/manager:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/configmap/configmap_manager.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/configmap/configmap_manager.go index 91c75ddca7..76aa1f03fb 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/configmap/configmap_manager.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/configmap/configmap_manager.go @@ -23,12 +23,14 @@ import ( "k8s.io/api/core/v1" clientset "k8s.io/client-go/kubernetes" podutil "k8s.io/kubernetes/pkg/api/v1/pod" + corev1 "k8s.io/kubernetes/pkg/apis/core/v1" "k8s.io/kubernetes/pkg/kubelet/util/manager" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/util/clock" "k8s.io/apimachinery/pkg/util/sets" + "k8s.io/apimachinery/pkg/watch" ) type Manager interface { @@ -123,3 +125,25 @@ func NewCachingConfigMapManager(kubeClient clientset.Interface, getTTL manager.G manager: manager.NewCacheBasedManager(configMapStore, getConfigMapNames), } } + +// NewWatchingConfigMapManager creates a manager that keeps a cache of all configmaps +// necessary for registered pods. +// It implements the following logic: +// - whenever a pod is created or updated, we start inidvidual watches for all +// referenced objects that aren't referenced from other registered pods +// - every GetObject() returns a value from local cache propagated via watches +func NewWatchingConfigMapManager(kubeClient clientset.Interface) Manager { + listConfigMap := func(namespace string, opts metav1.ListOptions) (runtime.Object, error) { + return kubeClient.CoreV1().ConfigMaps(namespace).List(opts) + } + watchConfigMap := func(namespace string, opts metav1.ListOptions) (watch.Interface, error) { + return kubeClient.CoreV1().ConfigMaps(namespace).Watch(opts) + } + newConfigMap := func() runtime.Object { + return &v1.ConfigMap{} + } + gr := corev1.Resource("configmap") + return &configMapManager{ + manager: manager.NewWatchBasedManager(listConfigMap, watchConfigMap, newConfigMap, gr, getConfigMapNames), + } +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/container/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/container/BUILD index 287cd50136..d7b2670833 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/container/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/container/BUILD @@ -23,18 +23,18 @@ go_library( "//pkg/kubelet/util/format:go_default_library", "//pkg/util/hash:go_default_library", "//pkg/volume:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", + "//staging/src/k8s.io/client-go/tools/reference:go_default_library", + "//staging/src/k8s.io/client-go/tools/remotecommand:go_default_library", + "//staging/src/k8s.io/client-go/util/flowcontrol:go_default_library", "//third_party/forked/golang/expansion:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", - "//vendor/k8s.io/client-go/tools/reference:go_default_library", - "//vendor/k8s.io/client-go/tools/remotecommand:go_default_library", - "//vendor/k8s.io/client-go/util/flowcontrol:go_default_library", ], ) @@ -44,24 +44,17 @@ go_test( "cache_test.go", "helpers_test.go", "ref_test.go", + "runtime_cache_test.go", "sync_result_test.go", ], embed = [":go_default_library"], deps = [ "//pkg/apis/core/install:go_default_library", - "//vendor/github.com/stretchr/testify/assert:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - ], -) - -go_test( - name = "go_default_xtest", - srcs = ["runtime_cache_test.go"], - deps = [ - ":go_default_library", "//pkg/kubelet/container/testing:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/github.com/stretchr/testify/assert:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/container/testing/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/container/testing/BUILD index 9db886c0ca..700a19d0d4 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/container/testing/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/container/testing/BUILD @@ -17,12 +17,12 @@ go_library( "//pkg/kubelet/apis/cri/runtime/v1alpha2:go_default_library", "//pkg/kubelet/container:go_default_library", "//pkg/volume:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/client-go/tools/remotecommand:go_default_library", + "//staging/src/k8s.io/client-go/util/flowcontrol:go_default_library", "//vendor/github.com/golang/mock/gomock:go_default_library", "//vendor/github.com/stretchr/testify/mock:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/client-go/tools/remotecommand:go_default_library", - "//vendor/k8s.io/client-go/util/flowcontrol:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/BUILD index 286b902d94..1a9e9ef4fa 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/BUILD @@ -8,85 +8,28 @@ go_library( "docker_checkpoint.go", "docker_container.go", "docker_image.go", + "docker_image_linux.go", + "docker_image_unsupported.go", + "docker_image_windows.go", "docker_legacy_service.go", "docker_logs.go", "docker_sandbox.go", + "docker_sandbox_others.go", + "docker_sandbox_windows.go", "docker_service.go", + "docker_stats_linux.go", + "docker_stats_unsupported.go", + "docker_stats_windows.go", "docker_streaming.go", "exec.go", "helpers.go", + "helpers_linux.go", + "helpers_unsupported.go", + "helpers_windows.go", "naming.go", "security_context.go", "selinux_util.go", - ] + select({ - "@io_bazel_rules_go//go/platform:android": [ - "docker_image_unsupported.go", - "docker_sandbox_others.go", - "docker_stats_unsupported.go", - "helpers_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "docker_image_unsupported.go", - "docker_sandbox_others.go", - "docker_stats_unsupported.go", - "helpers_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "docker_image_unsupported.go", - "docker_sandbox_others.go", - "docker_stats_unsupported.go", - "helpers_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "docker_image_unsupported.go", - "docker_sandbox_others.go", - "docker_stats_unsupported.go", - "helpers_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "docker_image_linux.go", - "docker_sandbox_others.go", - "docker_stats_linux.go", - "helpers_linux.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "docker_image_unsupported.go", - "docker_sandbox_others.go", - "docker_stats_unsupported.go", - "helpers_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "docker_image_unsupported.go", - "docker_sandbox_others.go", - "docker_stats_unsupported.go", - "helpers_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "docker_image_unsupported.go", - "docker_sandbox_others.go", - "docker_stats_unsupported.go", - "helpers_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "docker_image_unsupported.go", - "docker_sandbox_others.go", - "docker_stats_unsupported.go", - "helpers_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "docker_image_unsupported.go", - "docker_sandbox_others.go", - "docker_stats_unsupported.go", - "helpers_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "docker_image_windows.go", - "docker_sandbox_windows.go", - "docker_stats_windows.go", - "helpers_windows.go", - ], - "//conditions:default": [], - }), + ], importpath = "k8s.io/kubernetes/pkg/kubelet/dockershim", visibility = ["//visibility:public"], deps = [ @@ -113,6 +56,11 @@ go_library( "//pkg/kubelet/util/ioutils:go_default_library", "//pkg/security/apparmor:go_default_library", "//pkg/util/parsers:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//staging/src/k8s.io/client-go/tools/remotecommand:go_default_library", "//vendor/github.com/armon/circbuf:go_default_library", "//vendor/github.com/blang/semver:go_default_library", "//vendor/github.com/docker/docker/api/types:go_default_library", @@ -122,11 +70,6 @@ go_library( "//vendor/github.com/docker/docker/pkg/jsonmessage:go_default_library", "//vendor/github.com/docker/go-connections/nat:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", - "//vendor/k8s.io/client-go/tools/remotecommand:go_default_library", "//vendor/k8s.io/utils/exec:go_default_library", ] + select({ "@io_bazel_rules_go//go/platform:windows": [ @@ -146,16 +89,12 @@ go_test( "docker_image_test.go", "docker_sandbox_test.go", "docker_service_test.go", + "helpers_linux_test.go", "helpers_test.go", "naming_test.go", "security_context_test.go", "selinux_util_test.go", - ] + select({ - "@io_bazel_rules_go//go/platform:linux": [ - "helpers_linux_test.go", - ], - "//conditions:default": [], - }), + ], embed = [":go_default_library"], deps = [ "//pkg/kubelet/apis/cri/runtime/v1alpha2:go_default_library", @@ -168,6 +107,7 @@ go_test( "//pkg/kubelet/types:go_default_library", "//pkg/kubelet/util/cache:go_default_library", "//pkg/security/apparmor:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library", "//vendor/github.com/blang/semver:go_default_library", "//vendor/github.com/docker/docker/api/types:go_default_library", "//vendor/github.com/docker/docker/api/types/container:go_default_library", @@ -176,10 +116,9 @@ go_test( "//vendor/github.com/golang/mock/gomock:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", "//vendor/github.com/stretchr/testify/require:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", ] + select({ "@io_bazel_rules_go//go/platform:linux": [ - "//vendor/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", ], "//conditions:default": [], }), diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/cm/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/cm/BUILD index 871d6f9b1b..5ca2b2afc6 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/cm/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/cm/BUILD @@ -9,42 +9,10 @@ go_library( name = "go_default_library", srcs = [ "container_manager.go", - ] + select({ - "@io_bazel_rules_go//go/platform:android": [ - "container_manager_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "container_manager_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "container_manager_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "container_manager_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "container_manager_linux.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "container_manager_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "container_manager_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "container_manager_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "container_manager_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "container_manager_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "container_manager_windows.go", - ], - "//conditions:default": [], - }), + "container_manager_linux.go", + "container_manager_unsupported.go", + "container_manager_windows.go", + ], importpath = "k8s.io/kubernetes/pkg/kubelet/dockershim/cm", deps = select({ "@io_bazel_rules_go//go/platform:android": [ @@ -64,10 +32,10 @@ go_library( "//pkg/kubelet/dockershim/libdocker:go_default_library", "//pkg/kubelet/qos:go_default_library", "//pkg/util/version:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs:go_default_library", "//vendor/github.com/opencontainers/runc/libcontainer/configs:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", ], "@io_bazel_rules_go//go/platform:nacl": [ "//pkg/kubelet/dockershim/libdocker:go_default_library", diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/libdocker/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/libdocker/BUILD index 73b1d79fa7..25c1a0e2d3 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/libdocker/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/libdocker/BUILD @@ -31,6 +31,8 @@ go_library( importpath = "k8s.io/kubernetes/pkg/kubelet/dockershim/libdocker", deps = [ "//pkg/kubelet/dockershim/metrics:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library", "//vendor/github.com/docker/distribution/reference:go_default_library", "//vendor/github.com/docker/docker/api/types:go_default_library", "//vendor/github.com/docker/docker/api/types/container:go_default_library", @@ -40,8 +42,6 @@ go_library( "//vendor/github.com/docker/docker/pkg/stdcopy:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/opencontainers/go-digest:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/network/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/network/BUILD index b1760d099a..86d77f909c 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/network/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/network/BUILD @@ -14,11 +14,11 @@ go_library( "//pkg/kubelet/dockershim/network/hostport:go_default_library", "//pkg/kubelet/dockershim/network/metrics:go_default_library", "//pkg/util/sysctl:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation:go_default_library", "//vendor/k8s.io/utils/exec:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/network/cni/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/network/cni/BUILD index 7fd7e2d166..db465fc133 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/network/cni/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/network/cni/BUILD @@ -10,47 +10,15 @@ go_library( name = "go_default_library", srcs = [ "cni.go", - ] + select({ - "@io_bazel_rules_go//go/platform:android": [ - "cni_others.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "cni_others.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "cni_others.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "cni_others.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "cni_others.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "cni_others.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "cni_others.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "cni_others.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "cni_others.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "cni_others.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "cni_windows.go", - ], - "//conditions:default": [], - }), + "cni_others.go", + "cni_windows.go", + ], importpath = "k8s.io/kubernetes/pkg/kubelet/dockershim/network/cni", deps = [ "//pkg/kubelet/apis/kubeletconfig:go_default_library", "//pkg/kubelet/container:go_default_library", "//pkg/kubelet/dockershim/network:go_default_library", + "//pkg/util/bandwidth:go_default_library", "//vendor/github.com/containernetworking/cni/libcni:go_default_library", "//vendor/github.com/containernetworking/cni/pkg/types:go_default_library", "//vendor/github.com/golang/glog:go_default_library", @@ -65,12 +33,7 @@ go_library( go_test( name = "go_default_test", - srcs = select({ - "@io_bazel_rules_go//go/platform:linux": [ - "cni_test.go", - ], - "//conditions:default": [], - }), + srcs = ["cni_test.go"], embed = [":go_default_library"], deps = select({ "@io_bazel_rules_go//go/platform:linux": [ @@ -81,11 +44,11 @@ go_test( "//pkg/kubelet/dockershim/network/cni/testing:go_default_library", "//pkg/kubelet/dockershim/network/hostport:go_default_library", "//pkg/kubelet/dockershim/network/testing:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/util/testing:go_default_library", "//vendor/github.com/containernetworking/cni/pkg/types/020:go_default_library", "//vendor/github.com/stretchr/testify/mock:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/util/testing:go_default_library", "//vendor/k8s.io/utils/exec:go_default_library", "//vendor/k8s.io/utils/exec/testing:go_default_library", ], diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/network/cni/cni.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/network/cni/cni.go index 776f3eeda8..dfa4d81180 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/network/cni/cni.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/network/cni/cni.go @@ -29,13 +29,12 @@ import ( "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" "k8s.io/kubernetes/pkg/kubelet/dockershim/network" + "k8s.io/kubernetes/pkg/util/bandwidth" utilexec "k8s.io/utils/exec" ) const ( - CNIPluginName = "cni" - DefaultConfDir = "/etc/cni/net.d" - DefaultBinDir = "/opt/cni/bin" + CNIPluginName = "cni" ) type cniNetworkPlugin struct { @@ -68,6 +67,22 @@ type cniPortMapping struct { HostIP string `json:"hostIP"` } +// cniBandwidthEntry maps to the standard CNI bandwidth Capability +// see: https://github.com/containernetworking/cni/blob/master/CONVENTIONS.md and +// https://github.com/containernetworking/plugins/blob/master/plugins/meta/bandwidth/README.md +type cniBandwidthEntry struct { + // IngressRate is the bandwidth rate in bits per second for traffic through container. 0 for no limit. If ingressRate is set, ingressBurst must also be set + IngressRate int `json:"ingressRate,omitempty"` + // IngressBurst is the bandwidth burst in bits for traffic through container. 0 for no limit. If ingressBurst is set, ingressRate must also be set + // NOTE: it's not used for now and default to 0. + IngressBurst int `json:"ingressBurst,omitempty"` + // EgressRate is the bandwidth is the bandwidth rate in bits per second for traffic through container. 0 for no limit. If egressRate is set, egressBurst must also be set + EgressRate int `json:"egressRate,omitempty"` + // EgressBurst is the bandwidth burst in bits for traffic through container. 0 for no limit. If egressBurst is set, egressRate must also be set + // NOTE: it's not used for now and default to 0. + EgressBurst int `json:"egressBurst,omitempty"` +} + func SplitDirs(dirs string) []string { // Use comma rather than colon to work better with Windows too return strings.Split(dirs, ",") @@ -81,13 +96,6 @@ func ProbeNetworkPlugins(confDir string, binDirs []string) []network.NetworkPlug binDirs = append(binDirs, dir) } } - if len(binDirs) == 0 { - binDirs = []string{DefaultBinDir} - } - - if confDir == "" { - confDir = DefaultConfDir - } plugin := &cniNetworkPlugin{ defaultNetwork: nil, @@ -217,13 +225,13 @@ func (plugin *cniNetworkPlugin) SetUpPod(namespace string, name string, id kubec // Windows doesn't have loNetwork. It comes only with Linux if plugin.loNetwork != nil { - if _, err = plugin.addToNetwork(plugin.loNetwork, name, namespace, id, netnsPath); err != nil { + if _, err = plugin.addToNetwork(plugin.loNetwork, name, namespace, id, netnsPath, annotations); err != nil { glog.Errorf("Error while adding to cni lo network: %s", err) return err } } - _, err = plugin.addToNetwork(plugin.getDefaultNetwork(), name, namespace, id, netnsPath) + _, err = plugin.addToNetwork(plugin.getDefaultNetwork(), name, namespace, id, netnsPath, annotations) if err != nil { glog.Errorf("Error while adding to cni network: %s", err) return err @@ -243,11 +251,11 @@ func (plugin *cniNetworkPlugin) TearDownPod(namespace string, name string, id ku glog.Warningf("CNI failed to retrieve network namespace path: %v", err) } - return plugin.deleteFromNetwork(plugin.getDefaultNetwork(), name, namespace, id, netnsPath) + return plugin.deleteFromNetwork(plugin.getDefaultNetwork(), name, namespace, id, netnsPath, nil) } -func (plugin *cniNetworkPlugin) addToNetwork(network *cniNetwork, podName string, podNamespace string, podSandboxID kubecontainer.ContainerID, podNetnsPath string) (cnitypes.Result, error) { - rt, err := plugin.buildCNIRuntimeConf(podName, podNamespace, podSandboxID, podNetnsPath) +func (plugin *cniNetworkPlugin) addToNetwork(network *cniNetwork, podName string, podNamespace string, podSandboxID kubecontainer.ContainerID, podNetnsPath string, annotations map[string]string) (cnitypes.Result, error) { + rt, err := plugin.buildCNIRuntimeConf(podName, podNamespace, podSandboxID, podNetnsPath, annotations) if err != nil { glog.Errorf("Error adding network when building cni runtime conf: %v", err) return nil, err @@ -264,8 +272,8 @@ func (plugin *cniNetworkPlugin) addToNetwork(network *cniNetwork, podName string return res, nil } -func (plugin *cniNetworkPlugin) deleteFromNetwork(network *cniNetwork, podName string, podNamespace string, podSandboxID kubecontainer.ContainerID, podNetnsPath string) error { - rt, err := plugin.buildCNIRuntimeConf(podName, podNamespace, podSandboxID, podNetnsPath) +func (plugin *cniNetworkPlugin) deleteFromNetwork(network *cniNetwork, podName string, podNamespace string, podSandboxID kubecontainer.ContainerID, podNetnsPath string, annotations map[string]string) error { + rt, err := plugin.buildCNIRuntimeConf(podName, podNamespace, podSandboxID, podNetnsPath, annotations) if err != nil { glog.Errorf("Error deleting network when building cni runtime conf: %v", err) return err @@ -283,7 +291,7 @@ func (plugin *cniNetworkPlugin) deleteFromNetwork(network *cniNetwork, podName s return nil } -func (plugin *cniNetworkPlugin) buildCNIRuntimeConf(podName string, podNs string, podSandboxID kubecontainer.ContainerID, podNetnsPath string) (*libcni.RuntimeConf, error) { +func (plugin *cniNetworkPlugin) buildCNIRuntimeConf(podName string, podNs string, podSandboxID kubecontainer.ContainerID, podNetnsPath string, annotations map[string]string) (*libcni.RuntimeConf, error) { glog.V(4).Infof("Got netns path %v", podNetnsPath) glog.V(4).Infof("Using podns path %v", podNs) @@ -321,5 +329,22 @@ func (plugin *cniNetworkPlugin) buildCNIRuntimeConf(podName string, podNs string "portMappings": portMappingsParam, } + ingress, egress, err := bandwidth.ExtractPodBandwidthResources(annotations) + if err != nil { + return nil, fmt.Errorf("Error reading pod bandwidth annotations: %v", err) + } + if ingress != nil || egress != nil { + bandwidthParam := cniBandwidthEntry{} + if ingress != nil { + bandwidthParam.IngressRate = int(ingress.Value() / 1000) + bandwidthParam.IngressBurst = 0 // default to no limit + } + if egress != nil { + bandwidthParam.EgressRate = int(egress.Value() / 1000) + bandwidthParam.EgressBurst = 0 // default to no limit + } + rt.CapabilityArgs["bandwidth"] = bandwidthParam + } + return rt, nil } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/network/cni/cni_windows.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/network/cni/cni_windows.go index 82324b9ac5..0c90444550 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/network/cni/cni_windows.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/network/cni/cni_windows.go @@ -42,7 +42,7 @@ func (plugin *cniNetworkPlugin) GetPodNetworkStatus(namespace string, name strin return nil, fmt.Errorf("CNI failed to retrieve network namespace path: %v", err) } - result, err := plugin.addToNetwork(plugin.getDefaultNetwork(), name, namespace, id, netnsPath) + result, err := plugin.addToNetwork(plugin.getDefaultNetwork(), name, namespace, id, netnsPath, nil) glog.V(5).Infof("GetPodNetworkStatus result %+v", result) if err != nil { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/network/hostport/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/network/hostport/BUILD index afd8c42920..d1f438e0ff 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/network/hostport/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/network/hostport/BUILD @@ -20,10 +20,10 @@ go_library( "//pkg/util/conntrack:go_default_library", "//pkg/util/iptables:go_default_library", "//pkg/util/net:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//vendor/k8s.io/utils/exec:go_default_library", ], ) @@ -39,8 +39,8 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/util/iptables:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", "//vendor/k8s.io/utils/exec:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/network/hostport/hostport_manager.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/network/hostport/hostport_manager.go index 6d85c75efe..67ef0e5aea 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/network/hostport/hostport_manager.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/network/hostport/hostport_manager.go @@ -341,7 +341,7 @@ func getExistingHostportIPTablesRules(iptables utiliptables.Interface) (map[util for chain := range existingNATChains { if strings.HasPrefix(string(chain), string(kubeHostportsChain)) || strings.HasPrefix(string(chain), kubeHostportChainPrefix) { - existingHostportChains[chain] = existingNATChains[chain] + existingHostportChains[chain] = string(existingNATChains[chain]) } } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/network/hostport/hostport_syncer.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/network/hostport/hostport_syncer.go index 3d7bfd6e4d..43c3c52ecb 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/network/hostport/hostport_syncer.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/network/hostport/hostport_syncer.go @@ -137,6 +137,11 @@ func writeLine(buf *bytes.Buffer, words ...string) { buf.WriteString(strings.Join(words, " ") + "\n") } +func writeBytesLine(buf *bytes.Buffer, bytes []byte) { + buf.Write(bytes) + buf.WriteByte('\n') +} + //hostportChainName takes containerPort for a pod and returns associated iptables chain. // This is computed by hashing (sha256) // then encoding to base32 and truncating with the prefix "KUBE-SVC-". We do @@ -189,7 +194,7 @@ func (h *hostportSyncer) SyncHostports(natInterfaceName string, activePodPortMap // Get iptables-save output so we can check for existing chains and rules. // This will be a map of chain name to chain with rules as stored in iptables-save/iptables-restore - existingNATChains := make(map[utiliptables.Chain]string) + existingNATChains := make(map[utiliptables.Chain][]byte) iptablesData := bytes.NewBuffer(nil) err = h.iptables.SaveInto(utiliptables.TableNAT, iptablesData) if err != nil { // if we failed to get any rules @@ -204,7 +209,7 @@ func (h *hostportSyncer) SyncHostports(natInterfaceName string, activePodPortMap // Make sure we keep stats for the top-level chains, if they existed // (which most should have because we created them above). if chain, ok := existingNATChains[kubeHostportsChain]; ok { - writeLine(natChains, chain) + writeBytesLine(natChains, chain) } else { writeLine(natChains, utiliptables.MakeChainLine(kubeHostportsChain)) } @@ -216,7 +221,7 @@ func (h *hostportSyncer) SyncHostports(natInterfaceName string, activePodPortMap protocol := strings.ToLower(string(port.Protocol)) hostportChain := hostportChainName(port, target.podFullName) if chain, ok := existingNATChains[hostportChain]; ok { - writeLine(natChains, chain) + writeBytesLine(natChains, chain) } else { writeLine(natChains, utiliptables.MakeChainLine(hostportChain)) } @@ -264,7 +269,7 @@ func (h *hostportSyncer) SyncHostports(natInterfaceName string, activePodPortMap // We must (as per iptables) write a chain-line for it, which has // the nice effect of flushing the chain. Then we can remove the // chain. - writeLine(natChains, existingNATChains[chain]) + writeBytesLine(natChains, existingNATChains[chain]) writeLine(natRules, "-X", chainString) } } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/network/kubenet/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/network/kubenet/BUILD index 869f297b62..4835b7044f 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/network/kubenet/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/network/kubenet/BUILD @@ -10,42 +10,9 @@ go_library( name = "go_default_library", srcs = [ "kubenet.go", - ] + select({ - "@io_bazel_rules_go//go/platform:android": [ - "kubenet_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "kubenet_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "kubenet_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "kubenet_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "kubenet_linux.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "kubenet_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "kubenet_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "kubenet_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "kubenet_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "kubenet_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "kubenet_unsupported.go", - ], - "//conditions:default": [], - }), + "kubenet_linux.go", + "kubenet_unsupported.go", + ], importpath = "k8s.io/kubernetes/pkg/kubelet/dockershim/network/kubenet", deps = select({ "@io_bazel_rules_go//go/platform:android": [ @@ -78,15 +45,15 @@ go_library( "//pkg/util/ebtables:go_default_library", "//pkg/util/iptables:go_default_library", "//pkg/util/sysctl:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//vendor/github.com/containernetworking/cni/libcni:go_default_library", "//vendor/github.com/containernetworking/cni/pkg/types:go_default_library", "//vendor/github.com/containernetworking/cni/pkg/types/020:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/vishvananda/netlink:go_default_library", "//vendor/golang.org/x/sys/unix:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//vendor/k8s.io/utils/exec:go_default_library", ], "@io_bazel_rules_go//go/platform:nacl": [ @@ -125,12 +92,7 @@ go_library( go_test( name = "go_default_test", - srcs = select({ - "@io_bazel_rules_go//go/platform:linux": [ - "kubenet_linux_test.go", - ], - "//conditions:default": [], - }), + srcs = ["kubenet_linux_test.go"], embed = [":go_default_library"], deps = select({ "@io_bazel_rules_go//go/platform:linux": [ diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/envvars/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/envvars/BUILD index aa438e800a..21ad908ffe 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/envvars/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/envvars/BUILD @@ -15,17 +15,17 @@ go_library( importpath = "k8s.io/kubernetes/pkg/kubelet/envvars", deps = [ "//pkg/apis/core/v1/helper:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", ], ) go_test( - name = "go_default_xtest", + name = "go_default_test", srcs = ["envvars_test.go"], + embed = [":go_default_library"], deps = [ - ":go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/eviction/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/eviction/BUILD index a6e6c84769..164b3ed034 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/eviction/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/eviction/BUILD @@ -22,14 +22,14 @@ go_test( "//pkg/kubelet/eviction/api:go_default_library", "//pkg/kubelet/lifecycle:go_default_library", "//pkg/kubelet/types:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", "//vendor/github.com/stretchr/testify/mock:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", ], ) @@ -40,43 +40,10 @@ go_library( "eviction_manager.go", "helpers.go", "memory_threshold_notifier.go", + "threshold_notifier_linux.go", + "threshold_notifier_unsupported.go", "types.go", - ] + select({ - "@io_bazel_rules_go//go/platform:android": [ - "threshold_notifier_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "threshold_notifier_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "threshold_notifier_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "threshold_notifier_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "threshold_notifier_linux.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "threshold_notifier_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "threshold_notifier_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "threshold_notifier_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "threshold_notifier_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "threshold_notifier_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "threshold_notifier_unsupported.go", - ], - "//conditions:default": [], - }), + ], importpath = "k8s.io/kubernetes/pkg/kubelet/eviction", deps = [ "//pkg/api/v1/resource:go_default_library", @@ -94,13 +61,13 @@ go_library( "//pkg/kubelet/util/format:go_default_library", "//pkg/scheduler/algorithm:go_default_library", "//pkg/scheduler/util:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", ] + select({ "@io_bazel_rules_go//go/platform:linux": [ "//vendor/golang.org/x/sys/unix:go_default_library", diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/eviction/api/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/eviction/api/BUILD index dd51294b6d..b66673dffe 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/eviction/api/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/eviction/api/BUILD @@ -9,7 +9,7 @@ go_library( name = "go_default_library", srcs = ["types.go"], importpath = "k8s.io/kubernetes/pkg/kubelet/eviction/api", - deps = ["//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library"], + deps = ["//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library"], ) filegroup( diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/images/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/images/BUILD index f0baa3a3cd..5f5594b3f3 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/images/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/images/BUILD @@ -23,14 +23,14 @@ go_library( "//pkg/kubelet/events:go_default_library", "//pkg/kubelet/util/sliceutils:go_default_library", "//pkg/util/parsers:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", + "//staging/src/k8s.io/client-go/util/flowcontrol:go_default_library", "//vendor/github.com/docker/distribution/reference:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", - "//vendor/k8s.io/client-go/util/flowcontrol:go_default_library", ], ) @@ -46,13 +46,13 @@ go_test( "//pkg/kubelet/container:go_default_library", "//pkg/kubelet/container/testing:go_default_library", "//pkg/kubelet/server/stats/testing:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", + "//staging/src/k8s.io/client-go/util/flowcontrol:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", "//vendor/github.com/stretchr/testify/require:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", - "//vendor/k8s.io/client-go/util/flowcontrol:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubelet.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubelet.go index d391f7a993..f57616aed2 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubelet.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubelet.go @@ -102,7 +102,6 @@ import ( "k8s.io/kubernetes/pkg/security/apparmor" sysctlwhitelist "k8s.io/kubernetes/pkg/security/podsecuritypolicy/sysctl" utildbus "k8s.io/kubernetes/pkg/util/dbus" - kubeio "k8s.io/kubernetes/pkg/util/io" utilipt "k8s.io/kubernetes/pkg/util/iptables" "k8s.io/kubernetes/pkg/util/mount" nodeutil "k8s.io/kubernetes/pkg/util/node" @@ -247,7 +246,6 @@ type Dependencies struct { OSInterface kubecontainer.OSInterface PodConfig *config.PodConfig Recorder record.EventRecorder - Writer kubeio.Writer VolumePlugins []volume.VolumePlugin DynamicPluginProber volume.DynamicPluginProber TLSOptions *server.TLSOptions @@ -372,8 +370,6 @@ func NewMainKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration, hostname := nodeutil.GetHostname(hostnameOverride) // Query the cloud provider for our node name, default to hostname nodeName := types.NodeName(hostname) - cloudIPs := []net.IP{} - cloudNames := []string{} if kubeDeps.Cloud != nil { var err error instances, ok := kubeDeps.Cloud.Instances() @@ -387,25 +383,6 @@ func NewMainKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration, } glog.V(2).Infof("cloud provider determined current node name to be %s", nodeName) - - if utilfeature.DefaultFeatureGate.Enabled(features.RotateKubeletServerCertificate) { - nodeAddresses, err := instances.NodeAddresses(context.TODO(), nodeName) - if err != nil { - return nil, fmt.Errorf("failed to get the addresses of the current instance from the cloud provider: %v", err) - } - for _, nodeAddress := range nodeAddresses { - switch nodeAddress.Type { - case v1.NodeExternalIP, v1.NodeInternalIP: - ip := net.ParseIP(nodeAddress.Address) - if ip != nil && !ip.IsLoopback() { - cloudIPs = append(cloudIPs, ip) - } - case v1.NodeExternalDNS, v1.NodeInternalDNS, v1.NodeHostName: - cloudNames = append(cloudNames, nodeAddress.Address) - } - } - } - } if kubeDeps.PodConfig == nil { @@ -522,7 +499,6 @@ func NewMainKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration, cgroupsPerQOS: kubeCfg.CgroupsPerQOS, cgroupRoot: kubeCfg.CgroupRoot, mounter: kubeDeps.Mounter, - writer: kubeDeps.Writer, maxPods: int(kubeCfg.MaxPods), podsPerCore: int(kubeCfg.PodsPerCore), syncLoopMonitor: atomic.Value{}, @@ -545,18 +521,28 @@ func NewMainKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration, } if klet.cloud != nil { - klet.cloudproviderRequestParallelism = make(chan int, 1) - klet.cloudproviderRequestSync = make(chan int) - // TODO(jchaloup): Make it configurable via --cloud-provider-request-timeout - klet.cloudproviderRequestTimeout = 10 * time.Second + klet.cloudResourceSyncManager = NewCloudResourceSyncManager(klet.cloud, nodeName, klet.nodeStatusUpdateFrequency) } - secretManager := secret.NewCachingSecretManager( - kubeDeps.KubeClient, manager.GetObjectTTLFromNodeFunc(klet.GetNode)) - klet.secretManager = secretManager + var secretManager secret.Manager + var configMapManager configmap.Manager + switch kubeCfg.ConfigMapAndSecretChangeDetectionStrategy { + case kubeletconfiginternal.WatchChangeDetectionStrategy: + secretManager = secret.NewWatchingSecretManager(kubeDeps.KubeClient) + configMapManager = configmap.NewWatchingConfigMapManager(kubeDeps.KubeClient) + case kubeletconfiginternal.TTLCacheChangeDetectionStrategy: + secretManager = secret.NewCachingSecretManager( + kubeDeps.KubeClient, manager.GetObjectTTLFromNodeFunc(klet.GetNode)) + configMapManager = configmap.NewCachingConfigMapManager( + kubeDeps.KubeClient, manager.GetObjectTTLFromNodeFunc(klet.GetNode)) + case kubeletconfiginternal.GetChangeDetectionStrategy: + secretManager = secret.NewSimpleSecretManager(kubeDeps.KubeClient) + configMapManager = configmap.NewSimpleConfigMapManager(kubeDeps.KubeClient) + default: + return nil, fmt.Errorf("unknown configmap and secret manager mode: %v", kubeCfg.ConfigMapAndSecretChangeDetectionStrategy) + } - configMapManager := configmap.NewCachingConfigMapManager( - kubeDeps.KubeClient, manager.GetObjectTTLFromNodeFunc(klet.GetNode)) + klet.secretManager = secretManager klet.configMapManager = configMapManager if klet.experimentalHostUserNamespaceDefaulting { @@ -737,29 +723,7 @@ func NewMainKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration, klet.statusManager = status.NewManager(klet.kubeClient, klet.podManager, klet) if kubeCfg.ServerTLSBootstrap && kubeDeps.TLSOptions != nil && utilfeature.DefaultFeatureGate.Enabled(features.RotateKubeletServerCertificate) { - var ( - ips []net.IP - names []string - ) - - // If the address was explicitly configured, use that. Otherwise, try to - // discover addresses from the cloudprovider. Otherwise, make a best guess. - if cfgAddress := net.ParseIP(kubeCfg.Address); cfgAddress != nil && !cfgAddress.IsUnspecified() { - ips = []net.IP{cfgAddress} - names = []string{klet.GetHostname(), hostnameOverride} - } else if len(cloudIPs) != 0 || len(cloudNames) != 0 { - ips = cloudIPs - names = cloudNames - } else { - localIPs, err := allGlobalUnicastIPs() - if err != nil { - return nil, err - } - ips = localIPs - names = []string{klet.GetHostname(), hostnameOverride} - } - - klet.serverCertificateManager, err = kubeletcertificate.NewKubeletServerCertificateManager(klet.kubeClient, kubeCfg, klet.nodeName, ips, names, certDirectory) + klet.serverCertificateManager, err = kubeletcertificate.NewKubeletServerCertificateManager(klet.kubeClient, kubeCfg, klet.nodeName, klet.getLastObservedNodeAddresses, certDirectory) if err != nil { return nil, fmt.Errorf("failed to initialize certificate manager: %v", err) } @@ -786,7 +750,9 @@ func NewMainKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration, if err != nil { return nil, err } - klet.pluginWatcher = pluginwatcher.NewWatcher(klet.getPluginsDir()) + if klet.enablePluginsWatcher { + klet.pluginWatcher = pluginwatcher.NewWatcher(klet.getPluginsDir()) + } // If the experimentalMounterPathFlag is set, we do not want to // check node capabilities since the mount path is not the default @@ -889,6 +855,9 @@ type Kubelet struct { iptClient utilipt.Interface rootDirectory string + lastObservedNodeAddressesMux sync.Mutex + lastObservedNodeAddresses []v1.NodeAddress + // onRepeatedHeartbeatFailure is called when a heartbeat operation fails more than once. optional. onRepeatedHeartbeatFailure func() @@ -992,14 +961,8 @@ type Kubelet struct { // Cloud provider interface. cloud cloudprovider.Interface - // To keep exclusive access to the cloudproviderRequestParallelism - cloudproviderRequestMux sync.Mutex - // Keep the count of requests processed in parallel (expected to be 1 at most at a given time) - cloudproviderRequestParallelism chan int - // Sync with finished requests - cloudproviderRequestSync chan int - // Request timeout - cloudproviderRequestTimeout time.Duration + // Handles requests to cloud provider with timeout + cloudResourceSyncManager *cloudResourceSyncManager // Indicates that the node initialization happens in an external cloud controller externalCloudProvider bool @@ -1064,9 +1027,6 @@ type Kubelet struct { // Mounter to use for volumes. mounter mount.Interface - // Writer interface to use for volumes. - writer kubeio.Writer - // Manager of non-Runtime containers. containerManager cm.ContainerManager @@ -1107,6 +1067,10 @@ type Kubelet struct { // handlers called during the tryUpdateNodeStatus cycle setNodeStatusFuncs []func(*v1.Node) error + lastNodeUnschedulableLock sync.Mutex + // maintains Node.Spec.Unschedulable value from previous run of tryUpdateNodeStatus() + lastNodeUnschedulable bool + // TODO: think about moving this to be centralized in PodWorkers in follow-on. // the list of handlers to call during pod admission. admitHandlers lifecycle.PodAdmitHandlers @@ -1242,12 +1206,10 @@ func (kl *Kubelet) StartGarbageCollection() { } }, ContainerGCPeriod, wait.NeverStop) - stopChan := make(chan struct{}) - defer close(stopChan) // when the high threshold is set to 100, stub the image GC manager if kl.kubeletConfiguration.ImageGCHighThresholdPercent == 100 { glog.V(2).Infof("ImageGCHighThresholdPercent is set 100, Disable image GC") - go func() { stopChan <- struct{}{} }() + return } prevImageGCFailed := false @@ -1270,7 +1232,7 @@ func (kl *Kubelet) StartGarbageCollection() { glog.V(vLevel).Infof("Image garbage collection succeeded") } - }, ImageGCPeriod, stopChan) + }, ImageGCPeriod, wait.NeverStop) } // initializeModules will initialize internal modules that do not require the container runtime to be up. @@ -1290,15 +1252,6 @@ func (kl *Kubelet) initializeModules() error { glog.Errorf("Failed to create directory %q: %v", ContainerLogsDir, err) } } - if kl.enablePluginsWatcher { - // Adding Registration Callback function for CSI Driver - kl.pluginWatcher.AddHandler("CSIPlugin", csi.RegistrationCallback) - - // Start the plugin watcher - if err := kl.pluginWatcher.Start(); err != nil { - return fmt.Errorf("failed to start Plugin Watcher. err: %v", err) - } - } // Start the image manager. kl.imageManager.Start() @@ -1347,6 +1300,16 @@ func (kl *Kubelet) initializeRuntimeDependentModules() { // container log manager must start after container runtime is up to retrieve information from container runtime // and inform container to reopen log file after log rotation. kl.containerLogManager.Start() + if kl.enablePluginsWatcher { + // Adding Registration Callback function for CSI Driver + kl.pluginWatcher.AddHandler("CSIPlugin", csi.RegistrationCallback) + // Start the plugin watcher + glog.V(4).Infof("starting watcher") + if err := kl.pluginWatcher.Start(); err != nil { + kl.recorder.Eventf(kl.nodeRef, v1.EventTypeWarning, events.KubeletSetupFailed, err.Error()) + glog.Fatalf("failed to start Plugin Watcher. err: %v", err) + } + } } // Run starts the kubelet reacting to config updates @@ -1381,9 +1344,9 @@ func (kl *Kubelet) Run(updates <-chan kubetypes.PodUpdate) { // handled by pod workers). go wait.Until(kl.podKiller, 1*time.Second, wait.NeverStop) - // Start gorouting responsible for checking limits in resolv.conf - if kl.dnsConfigurer.ResolverConfig != "" { - go wait.Until(func() { kl.dnsConfigurer.CheckLimitsForResolvConf() }, 30*time.Second, wait.NeverStop) + // Start the cloud provider sync manager + if kl.cloudResourceSyncManager != nil { + go kl.cloudResourceSyncManager.Run(wait.NeverStop) } // Start component sync loops. @@ -1975,6 +1938,10 @@ func (kl *Kubelet) HandlePodAdditions(pods []*v1.Pod) { start := kl.clock.Now() sort.Sort(sliceutils.PodsByCreationTime(pods)) for _, pod := range pods { + // Responsible for checking limits in resolv.conf + if kl.dnsConfigurer != nil && kl.dnsConfigurer.ResolverConfig != "" { + kl.dnsConfigurer.CheckLimitsForResolvConf() + } existingPods := kl.podManager.GetPods() // Always add the pod to the pod manager. Kubelet relies on the pod // manager as the source of truth for the desired state. If a pod does @@ -2012,6 +1979,10 @@ func (kl *Kubelet) HandlePodAdditions(pods []*v1.Pod) { func (kl *Kubelet) HandlePodUpdates(pods []*v1.Pod) { start := kl.clock.Now() for _, pod := range pods { + // Responsible for checking limits in resolv.conf + if kl.dnsConfigurer != nil && kl.dnsConfigurer.ResolverConfig != "" { + kl.dnsConfigurer.CheckLimitsForResolvConf() + } kl.podManager.UpdatePod(pod) if kubepod.IsMirrorPod(pod) { kl.handleMirrorPod(pod, start) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubelet_node_status.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubelet_node_status.go index 4126eb997e..17f8546696 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubelet_node_status.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubelet_node_status.go @@ -23,7 +23,6 @@ import ( "net" goruntime "runtime" "strings" - "sync" "time" "github.com/golang/glog" @@ -429,6 +428,7 @@ func (kl *Kubelet) tryUpdateNodeStatus(tryNumber int) error { if err != nil { return err } + kl.setLastObservedNodeAddresses(updatedNode.Status.Addresses) // If update finishes successfully, mark the volumeInUse as reportedInUse to indicate // those volumes are already updated in the node's status kl.volumeManager.MarkVolumesAsReportedInUse(updatedNode.Status.VolumesInUse) @@ -464,47 +464,11 @@ func (kl *Kubelet) setNodeAddress(node *v1.Node) error { return nil } if kl.cloud != nil { - instances, ok := kl.cloud.Instances() - if !ok { - return fmt.Errorf("failed to get instances from cloud provider") - } - // TODO(roberthbailey): Can we do this without having credentials to talk - // to the cloud provider? - // TODO(justinsb): We can if CurrentNodeName() was actually CurrentNode() and returned an interface - // TODO: If IP addresses couldn't be fetched from the cloud provider, should kubelet fallback on the other methods for getting the IP below? - var nodeAddresses []v1.NodeAddress - var err error - - // Make sure the instances.NodeAddresses returns even if the cloud provider API hangs for a long time - func() { - kl.cloudproviderRequestMux.Lock() - if len(kl.cloudproviderRequestParallelism) > 0 { - kl.cloudproviderRequestMux.Unlock() - return - } - kl.cloudproviderRequestParallelism <- 0 - kl.cloudproviderRequestMux.Unlock() - - go func() { - nodeAddresses, err = instances.NodeAddresses(context.TODO(), kl.nodeName) - - kl.cloudproviderRequestMux.Lock() - <-kl.cloudproviderRequestParallelism - kl.cloudproviderRequestMux.Unlock() - - kl.cloudproviderRequestSync <- 0 - }() - }() - - select { - case <-kl.cloudproviderRequestSync: - case <-time.After(kl.cloudproviderRequestTimeout): - err = fmt.Errorf("Timeout after %v", kl.cloudproviderRequestTimeout) - } - + nodeAddresses, err := kl.cloudResourceSyncManager.NodeAddresses() if err != nil { - return fmt.Errorf("failed to get node address from cloud provider: %v", err) + return err } + if kl.nodeIP != nil { enforcedNodeAddresses := []v1.NodeAddress{} @@ -530,20 +494,10 @@ func (kl *Kubelet) setNodeAddress(node *v1.Node) error { return fmt.Errorf("failed to get node address from cloud provider that matches ip: %v", kl.nodeIP) } - // Only add a NodeHostName address if the cloudprovider did not specify one - // (we assume the cloudprovider knows best) - var addressNodeHostName *v1.NodeAddress - for i := range nodeAddresses { - if nodeAddresses[i].Type == v1.NodeHostName { - addressNodeHostName = &nodeAddresses[i] - break - } - } - if addressNodeHostName == nil { - hostnameAddress := v1.NodeAddress{Type: v1.NodeHostName, Address: kl.GetHostname()} - nodeAddresses = append(nodeAddresses, hostnameAddress) - } else { - glog.V(2).Infof("Using Node Hostname from cloudprovider: %q", addressNodeHostName.Address) + // Only add a NodeHostName address if the cloudprovider did not specify any addresses. + // (we assume the cloudprovider is authoritative if it specifies any addresses) + if len(nodeAddresses) == 0 { + nodeAddresses = []v1.NodeAddress{{Type: v1.NodeHostName, Address: kl.GetHostname()}} } node.Status.Addresses = nodeAddresses } else { @@ -1073,24 +1027,17 @@ func (kl *Kubelet) setNodeOODCondition(node *v1.Node) { } } -// Maintains Node.Spec.Unschedulable value from previous run of tryUpdateNodeStatus() -// TODO: why is this a package var? -var ( - oldNodeUnschedulable bool - oldNodeUnschedulableLock sync.Mutex -) - // record if node schedulable change. func (kl *Kubelet) recordNodeSchedulableEvent(node *v1.Node) { - oldNodeUnschedulableLock.Lock() - defer oldNodeUnschedulableLock.Unlock() - if oldNodeUnschedulable != node.Spec.Unschedulable { + kl.lastNodeUnschedulableLock.Lock() + defer kl.lastNodeUnschedulableLock.Unlock() + if kl.lastNodeUnschedulable != node.Spec.Unschedulable { if node.Spec.Unschedulable { kl.recordNodeStatusEvent(v1.EventTypeNormal, events.NodeNotSchedulable) } else { kl.recordNodeStatusEvent(v1.EventTypeNormal, events.NodeSchedulable) } - oldNodeUnschedulable = node.Spec.Unschedulable + kl.lastNodeUnschedulable = node.Spec.Unschedulable } } @@ -1116,6 +1063,17 @@ func (kl *Kubelet) setNodeStatus(node *v1.Node) { } } +func (kl *Kubelet) setLastObservedNodeAddresses(addresses []v1.NodeAddress) { + kl.lastObservedNodeAddressesMux.Lock() + defer kl.lastObservedNodeAddressesMux.Unlock() + kl.lastObservedNodeAddresses = addresses +} +func (kl *Kubelet) getLastObservedNodeAddresses() []v1.NodeAddress { + kl.lastObservedNodeAddressesMux.Lock() + defer kl.lastObservedNodeAddressesMux.Unlock() + return kl.lastObservedNodeAddresses +} + // defaultNodeStatusFuncs is a factory that generates the default set of // setNodeStatus funcs func (kl *Kubelet) defaultNodeStatusFuncs() []func(*v1.Node) error { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubelet_pods.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubelet_pods.go index 0e9ea8682b..9265f62414 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubelet_pods.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubelet_pods.go @@ -277,7 +277,7 @@ func translateMountPropagation(mountMode *v1.MountPropagationMode) (runtimeapi.M case *mountMode == v1.MountPropagationNone: return runtimeapi.MountPropagation_PROPAGATION_PRIVATE, nil default: - return 0, fmt.Errorf("invalid MountPropagation mode: %q", mountMode) + return 0, fmt.Errorf("invalid MountPropagation mode: %q", *mountMode) } } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubeletconfig/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubeletconfig/BUILD index c409bd2a3f..7ca28a5b79 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubeletconfig/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubeletconfig/BUILD @@ -22,18 +22,18 @@ go_library( "//pkg/kubelet/kubeletconfig/util/log:go_default_library", "//pkg/kubelet/kubeletconfig/util/panic:go_default_library", "//pkg/util/filesystem:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubeletconfig/checkpoint/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubeletconfig/checkpoint/BUILD index a0b7446293..dba89e8035 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubeletconfig/checkpoint/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubeletconfig/checkpoint/BUILD @@ -15,13 +15,13 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/kubelet/kubeletconfig/util/test:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", "//vendor/github.com/davecgh/go-spew/spew:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", ], ) @@ -39,14 +39,14 @@ go_library( "//pkg/kubelet/kubeletconfig/status:go_default_library", "//pkg/kubelet/kubeletconfig/util/codec:go_default_library", "//pkg/kubelet/kubeletconfig/util/log:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubeletconfig/checkpoint/store/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubeletconfig/checkpoint/store/BUILD index 76f46e824e..1fb7d2d981 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubeletconfig/checkpoint/store/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubeletconfig/checkpoint/store/BUILD @@ -22,10 +22,10 @@ go_test( "//pkg/kubelet/kubeletconfig/util/files:go_default_library", "//pkg/kubelet/kubeletconfig/util/test:go_default_library", "//pkg/util/filesystem:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//vendor/github.com/davecgh/go-spew/spew:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubeletconfig/configfiles/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubeletconfig/configfiles/BUILD index 55bee6fe56..306986c5bb 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubeletconfig/configfiles/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubeletconfig/configfiles/BUILD @@ -15,7 +15,7 @@ go_library( "//pkg/kubelet/apis/kubeletconfig/scheme:go_default_library", "//pkg/kubelet/kubeletconfig/util/codec:go_default_library", "//pkg/util/filesystem:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", ], ) @@ -43,6 +43,6 @@ go_test( "//pkg/kubelet/kubeletconfig/util/files:go_default_library", "//pkg/kubelet/kubeletconfig/util/test:go_default_library", "//pkg/util/filesystem:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubeletconfig/status/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubeletconfig/status/BUILD index fe925bfc90..7e9bdc9db8 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubeletconfig/status/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubeletconfig/status/BUILD @@ -13,10 +13,10 @@ go_library( "//pkg/kubelet/kubeletconfig/util/log:go_default_library", "//pkg/kubelet/metrics:go_default_library", "//pkg/util/node:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubeletconfig/util/codec/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubeletconfig/util/codec/BUILD index 43ea8c2145..9fc785dcc2 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubeletconfig/util/codec/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubeletconfig/util/codec/BUILD @@ -14,9 +14,9 @@ go_library( "//pkg/apis/core/install:go_default_library", "//pkg/kubelet/apis/kubeletconfig:go_default_library", "//pkg/kubelet/apis/kubeletconfig/scheme:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubeletconfig/util/panic/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubeletconfig/util/panic/BUILD index 818059ac63..d5e3db34d2 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubeletconfig/util/panic/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubeletconfig/util/panic/BUILD @@ -9,7 +9,7 @@ go_library( name = "go_default_library", srcs = ["panic.go"], importpath = "k8s.io/kubernetes/pkg/kubelet/kubeletconfig/util/panic", - deps = ["//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library"], + deps = ["//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library"], ) filegroup( diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/BUILD index 29121b9442..df054cba86 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/BUILD @@ -12,8 +12,14 @@ go_library( "doc.go", "fake_kuberuntime_manager.go", "helpers.go", + "helpers_linux.go", + "helpers_unsupported.go", + "helpers_windows.go", "instrumented_services.go", "kuberuntime_container.go", + "kuberuntime_container_linux.go", + "kuberuntime_container_unsupported.go", + "kuberuntime_container_windows.go", "kuberuntime_gc.go", "kuberuntime_image.go", "kuberuntime_logs.go", @@ -22,53 +28,7 @@ go_library( "labels.go", "legacy.go", "security_context.go", - ] + select({ - "@io_bazel_rules_go//go/platform:android": [ - "helpers_unsupported.go", - "kuberuntime_container_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "helpers_unsupported.go", - "kuberuntime_container_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "helpers_unsupported.go", - "kuberuntime_container_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "helpers_unsupported.go", - "kuberuntime_container_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "helpers_linux.go", - "kuberuntime_container_linux.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "helpers_unsupported.go", - "kuberuntime_container_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "helpers_unsupported.go", - "kuberuntime_container_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "helpers_unsupported.go", - "kuberuntime_container_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "helpers_unsupported.go", - "kuberuntime_container_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "helpers_unsupported.go", - "kuberuntime_container_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "helpers_windows.go", - "kuberuntime_container_windows.go", - ], - "//conditions:default": [], - }), + ], importpath = "k8s.io/kubernetes/pkg/kubelet/kuberuntime", deps = [ "//pkg/api/legacyscheme:go_default_library", @@ -94,20 +54,20 @@ go_library( "//pkg/util/selinux:go_default_library", "//pkg/util/tail:go_default_library", "//pkg/util/version:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", + "//staging/src/k8s.io/client-go/tools/reference:go_default_library", + "//staging/src/k8s.io/client-go/util/flowcontrol:go_default_library", "//vendor/github.com/armon/circbuf:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/google/cadvisor/info/v1:go_default_library", "//vendor/google.golang.org/grpc:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", - "//vendor/k8s.io/client-go/tools/reference:go_default_library", - "//vendor/k8s.io/client-go/util/flowcontrol:go_default_library", ] + select({ "@io_bazel_rules_go//go/platform:linux": [ "//pkg/kubelet/qos:go_default_library", @@ -125,6 +85,7 @@ go_test( srcs = [ "helpers_test.go", "instrumented_services_test.go", + "kuberuntime_container_linux_test.go", "kuberuntime_container_test.go", "kuberuntime_gc_test.go", "kuberuntime_image_test.go", @@ -133,12 +94,7 @@ go_test( "labels_test.go", "legacy_test.go", "security_context_test.go", - ] + select({ - "@io_bazel_rules_go//go/platform:linux": [ - "kuberuntime_container_linux_test.go", - ], - "//conditions:default": [], - }), + ], embed = [":go_default_library"], deps = [ "//pkg/credentialprovider:go_default_library", @@ -149,19 +105,19 @@ go_test( "//pkg/kubelet/container/testing:go_default_library", "//pkg/kubelet/lifecycle:go_default_library", "//pkg/kubelet/metrics:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature/testing:go_default_library", + "//staging/src/k8s.io/client-go/util/flowcontrol:go_default_library", "//vendor/github.com/golang/mock/gomock:go_default_library", "//vendor/github.com/google/cadvisor/info/v1:go_default_library", "//vendor/github.com/prometheus/client_golang/prometheus:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", "//vendor/github.com/stretchr/testify/require:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature/testing:go_default_library", - "//vendor/k8s.io/client-go/util/flowcontrol:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_manager.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_manager.go index df207fb435..4751352093 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_manager.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_manager.go @@ -803,24 +803,6 @@ func (m *kubeGenericRuntimeManager) killPodWithSyncResult(pod *v1.Pod, runningPo return } -// isHostNetwork checks whether the pod is running in host-network mode. -func (m *kubeGenericRuntimeManager) isHostNetwork(podSandBoxID string, pod *v1.Pod) (bool, error) { - if pod != nil { - return kubecontainer.IsHostNetworkPod(pod), nil - } - - podStatus, err := m.runtimeService.PodSandboxStatus(podSandBoxID) - if err != nil { - return false, err - } - - if podStatus.GetLinux().GetNamespaces().GetOptions().GetNetwork() == runtimeapi.NamespaceMode_NODE { - return true, nil - } - - return false, nil -} - // GetPodStatus retrieves the status of the pod, including the // information of all containers in the pod that are visible in Runtime. func (m *kubeGenericRuntimeManager) GetPodStatus(uid kubetypes.UID, name, namespace string) (*kubecontainer.PodStatus, error) { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_sandbox.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_sandbox.go index 33d0881f11..04419a07fc 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_sandbox.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_sandbox.go @@ -152,6 +152,9 @@ func (m *kubeGenericRuntimeManager) generatePodSandboxLinuxConfig(pod *v1.Pod) ( if sc.RunAsUser != nil { lc.SecurityContext.RunAsUser = &runtimeapi.Int64Value{Value: int64(*sc.RunAsUser)} } + if sc.RunAsGroup != nil { + lc.SecurityContext.RunAsGroup = &runtimeapi.Int64Value{Value: int64(*sc.RunAsGroup)} + } lc.SecurityContext.NamespaceOptions = namespacesForPod(pod) if sc.FSGroup != nil { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/logs/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/logs/BUILD index ffccbf2d32..18080943d5 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/logs/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/logs/BUILD @@ -9,10 +9,10 @@ go_library( "//pkg/kubelet/apis/cri:go_default_library", "//pkg/kubelet/apis/cri/runtime/v1alpha2:go_default_library", "//pkg/util/tail:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", "//vendor/github.com/docker/docker/pkg/jsonlog:go_default_library", "//vendor/github.com/fsnotify/fsnotify:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", ], ) @@ -22,9 +22,9 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/kubelet/apis/cri/runtime/v1alpha2:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/security_context.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/security_context.go index c01fd52061..20e11e7fca 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/security_context.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/security_context.go @@ -108,6 +108,9 @@ func convertToRuntimeSecurityContext(securityContext *v1.SecurityContext) *runti if securityContext.RunAsUser != nil { sc.RunAsUser = &runtimeapi.Int64Value{Value: int64(*securityContext.RunAsUser)} } + if securityContext.RunAsGroup != nil { + sc.RunAsGroup = &runtimeapi.Int64Value{Value: int64(*securityContext.RunAsGroup)} + } if securityContext.Privileged != nil { sc.Privileged = *securityContext.Privileged } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/lifecycle/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/lifecycle/BUILD index 74be426ffe..e46f993837 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/lifecycle/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/lifecycle/BUILD @@ -25,10 +25,10 @@ go_library( "//pkg/scheduler/algorithm/predicates:go_default_library", "//pkg/scheduler/cache:go_default_library", "//pkg/security/apparmor:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", ], ) @@ -43,9 +43,9 @@ go_test( "//pkg/kubelet/container:go_default_library", "//pkg/kubelet/util/format:go_default_library", "//pkg/scheduler/cache:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/logs/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/logs/BUILD index bd16b1c23d..41e4281dba 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/logs/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/logs/BUILD @@ -11,10 +11,10 @@ go_library( deps = [ "//pkg/kubelet/apis/cri:go_default_library", "//pkg/kubelet/apis/cri/runtime/v1alpha2:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", ], ) @@ -25,9 +25,9 @@ go_test( deps = [ "//pkg/kubelet/apis/cri/runtime/v1alpha2:go_default_library", "//pkg/kubelet/apis/cri/testing:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", "//vendor/github.com/stretchr/testify/require:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/logs/container_log_manager.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/logs/container_log_manager.go index 12ba95bd76..cae78993d1 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/logs/container_log_manager.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/logs/container_log_manager.go @@ -205,7 +205,7 @@ func (c *containerLogManager) rotateLogs() error { } // In rotateLatestLog, there are several cases that we may // lose original container log after ReopenContainerLog fails. - // We try to to recover it by reopening container log. + // We try to recover it by reopening container log. if err := c.runtimeService.ReopenContainerLog(id); err != nil { glog.Errorf("Container %q log %q doesn't exist, reopen container log failed: %v", id, path, err) continue diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/metrics/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/metrics/BUILD index 8e6041502b..4587b6b790 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/metrics/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/metrics/BUILD @@ -12,10 +12,10 @@ go_library( deps = [ "//pkg/features:go_default_library", "//pkg/kubelet/container:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/prometheus/client_golang/prometheus:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/metrics/collectors/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/metrics/collectors/BUILD index 792e8cf350..4b41a1a322 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/metrics/collectors/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/metrics/collectors/BUILD @@ -9,9 +9,9 @@ go_library( "//pkg/kubelet/apis/stats/v1alpha1:go_default_library", "//pkg/kubelet/metrics:go_default_library", "//pkg/kubelet/server/stats:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/prometheus/client_golang/prometheus:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", ], ) @@ -25,10 +25,10 @@ go_test( deps = [ "//pkg/kubelet/apis/stats/v1alpha1:go_default_library", "//pkg/kubelet/server/stats/testing:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//vendor/github.com/prometheus/client_golang/prometheus:go_default_library", "//vendor/github.com/prometheus/client_model/go:go_default_library", "//vendor/github.com/prometheus/common/expfmt:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/metrics/metrics.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/metrics/metrics.go index 058253258e..8a2e027a28 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/metrics/metrics.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/metrics/metrics.go @@ -84,7 +84,7 @@ var ( prometheus.SummaryOpts{ Subsystem: KubeletSubsystem, Name: PodStartLatencyKey, - Help: "Latency in microseconds for a single pod to go from pending to running. Broken down by podname.", + Help: "Latency in microseconds for a single pod to go from pending to running.", }, ) CgroupManagerLatency = prometheus.NewSummaryVec( diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/mountpod/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/mountpod/BUILD index f606715ab7..f7d56e3b1f 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/mountpod/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/mountpod/BUILD @@ -9,7 +9,7 @@ go_library( "//pkg/kubelet/config:go_default_library", "//pkg/kubelet/pod:go_default_library", "//pkg/util/strings:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", ], ) @@ -22,10 +22,10 @@ go_test( "//pkg/kubelet/pod:go_default_library", "//pkg/kubelet/pod/testing:go_default_library", "//pkg/kubelet/secret:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/client-go/util/testing:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/client-go/util/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/network/dns/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/network/dns/BUILD index 28989f99d5..acc66b182e 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/network/dns/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/network/dns/BUILD @@ -11,10 +11,10 @@ go_library( "//pkg/kubelet/apis/cri/runtime/v1alpha2:go_default_library", "//pkg/kubelet/container:go_default_library", "//pkg/kubelet/util/format:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", ], ) @@ -24,14 +24,14 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/kubelet/apis/cri/runtime/v1alpha2:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", "//vendor/github.com/stretchr/testify/require:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/network/dns/dns.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/network/dns/dns.go index a3e42358c7..dd414f6029 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/network/dns/dns.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/network/dns/dns.go @@ -156,7 +156,7 @@ func (c *Configurer) CheckLimitsForResolvConf() { f, err := os.Open(c.ResolverConfig) if err != nil { c.recorder.Event(c.nodeRef, v1.EventTypeWarning, "CheckLimitsForResolvConf", err.Error()) - glog.Error("CheckLimitsForResolvConf: " + err.Error()) + glog.V(4).Infof("CheckLimitsForResolvConf: " + err.Error()) return } defer f.Close() @@ -164,7 +164,7 @@ func (c *Configurer) CheckLimitsForResolvConf() { _, hostSearch, _, err := parseResolvConf(f) if err != nil { c.recorder.Event(c.nodeRef, v1.EventTypeWarning, "CheckLimitsForResolvConf", err.Error()) - glog.Error("CheckLimitsForResolvConf: " + err.Error()) + glog.V(4).Infof("CheckLimitsForResolvConf: " + err.Error()) return } @@ -177,14 +177,14 @@ func (c *Configurer) CheckLimitsForResolvConf() { if len(hostSearch) > domainCountLimit { log := fmt.Sprintf("Resolv.conf file '%s' contains search line consisting of more than %d domains!", c.ResolverConfig, domainCountLimit) c.recorder.Event(c.nodeRef, v1.EventTypeWarning, "CheckLimitsForResolvConf", log) - glog.Error("CheckLimitsForResolvConf: " + log) + glog.V(4).Infof("CheckLimitsForResolvConf: " + log) return } if len(strings.Join(hostSearch, " ")) > validation.MaxDNSSearchListChars { log := fmt.Sprintf("Resolv.conf file '%s' contains search line which length is more than allowed %d chars!", c.ResolverConfig, validation.MaxDNSSearchListChars) c.recorder.Event(c.nodeRef, v1.EventTypeWarning, "CheckLimitsForResolvConf", log) - glog.Error("CheckLimitsForResolvConf: " + log) + glog.V(4).Infof("CheckLimitsForResolvConf: " + log) return } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pleg/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pleg/BUILD index 7138d64ba3..f3d4073e34 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pleg/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pleg/BUILD @@ -18,11 +18,11 @@ go_library( "//pkg/kubelet/apis/cri/runtime/v1alpha2:go_default_library", "//pkg/kubelet/container:go_default_library", "//pkg/kubelet/metrics:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", ], ) @@ -33,10 +33,10 @@ go_test( deps = [ "//pkg/kubelet/container:go_default_library", "//pkg/kubelet/container/testing:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pod/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pod/BUILD index 93e77dd955..4096c02586 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pod/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pod/BUILD @@ -20,12 +20,12 @@ go_library( "//pkg/kubelet/container:go_default_library", "//pkg/kubelet/secret:go_default_library", "//pkg/kubelet/types:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", ], ) @@ -42,9 +42,9 @@ go_test( "//pkg/kubelet/pod/testing:go_default_library", "//pkg/kubelet/secret:go_default_library", "//pkg/kubelet/types:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pod_workers.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pod_workers.go index 6c80bf1032..5a1fb99272 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pod_workers.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pod_workers.go @@ -306,7 +306,7 @@ func killPodNow(podWorkers PodWorkers, recorder record.EventRecorder) eviction.K type response struct { err error } - ch := make(chan response) + ch := make(chan response, 1) podWorkers.UpdatePod(&UpdatePodOptions{ Pod: pod, UpdateType: kubetypes.SyncPodKill, diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/preemption/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/preemption/BUILD index a718179326..84216cb4f3 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/preemption/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/preemption/BUILD @@ -21,10 +21,10 @@ go_library( "//pkg/kubelet/util/format:go_default_library", "//pkg/scheduler/algorithm:go_default_library", "//pkg/scheduler/algorithm/predicates:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", ], ) @@ -48,9 +48,9 @@ go_test( deps = [ "//pkg/apis/core:go_default_library", "//pkg/kubelet/types:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/prober/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/prober/BUILD index 0807bfa08d..78394bf728 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/prober/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/prober/BUILD @@ -25,15 +25,15 @@ go_library( "//pkg/probe/exec:go_default_library", "//pkg/probe/http:go_default_library", "//pkg/probe/tcp:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/prometheus/client_golang/prometheus:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", "//vendor/k8s.io/utils/exec:go_default_library", ], ) @@ -56,15 +56,15 @@ go_test( "//pkg/kubelet/status/testing:go_default_library", "//pkg/probe:go_default_library", "//pkg/probe/exec:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", "//vendor/k8s.io/utils/exec:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/prober/results/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/prober/results/BUILD index ca3c9045f2..2df22b0ea0 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/prober/results/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/prober/results/BUILD @@ -12,8 +12,8 @@ go_library( importpath = "k8s.io/kubernetes/pkg/kubelet/prober/results", deps = [ "//pkg/kubelet/container:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", ], ) @@ -23,10 +23,10 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/kubelet/container:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/qos/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/qos/BUILD index 97b797de24..634175a6e9 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/qos/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/qos/BUILD @@ -11,8 +11,8 @@ go_test( srcs = ["policy_test.go"], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", ], ) @@ -25,7 +25,7 @@ go_library( importpath = "k8s.io/kubernetes/pkg/kubelet/qos", deps = [ "//pkg/apis/core/v1/helper/qos:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/remote/utils.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/remote/utils.go index 784882aa21..b01b5614b3 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/remote/utils.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/remote/utils.go @@ -24,9 +24,9 @@ import ( runtimeapi "k8s.io/kubernetes/pkg/kubelet/apis/cri/runtime/v1alpha2" ) -// maxMsgSize use 8MB as the default message size limit. +// maxMsgSize use 16MB as the default message size limit. // grpc library default is 4MB -const maxMsgSize = 1024 * 1024 * 8 +const maxMsgSize = 1024 * 1024 * 16 // getContextWithTimeout returns a context with timeout. func getContextWithTimeout(timeout time.Duration) (context.Context, context.CancelFunc) { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/runtime.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/runtime.go index 18883cb7ff..2ee89b3891 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/runtime.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/runtime.go @@ -53,12 +53,6 @@ func (s *runtimeState) setRuntimeSync(t time.Time) { s.lastBaseRuntimeSync = t } -func (s *runtimeState) setInternalError(err error) { - s.Lock() - defer s.Unlock() - s.internalError = err -} - func (s *runtimeState) setNetworkState(err error) { s.Lock() defer s.Unlock() diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/secret/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/secret/BUILD index 4b39334d0b..d3cc1773a5 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/secret/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/secret/BUILD @@ -12,12 +12,12 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/kubelet/util/manager:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", ], ) @@ -30,13 +30,15 @@ go_library( importpath = "k8s.io/kubernetes/pkg/kubelet/secret", deps = [ "//pkg/api/v1/pod:go_default_library", + "//pkg/apis/core/v1:go_default_library", "//pkg/kubelet/util/manager:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/secret/secret_manager.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/secret/secret_manager.go index a339694138..c7b5b109b2 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/secret/secret_manager.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/secret/secret_manager.go @@ -23,12 +23,14 @@ import ( "k8s.io/api/core/v1" clientset "k8s.io/client-go/kubernetes" podutil "k8s.io/kubernetes/pkg/api/v1/pod" + corev1 "k8s.io/kubernetes/pkg/apis/core/v1" "k8s.io/kubernetes/pkg/kubelet/util/manager" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/util/clock" "k8s.io/apimachinery/pkg/util/sets" + "k8s.io/apimachinery/pkg/watch" ) type Manager interface { @@ -123,3 +125,25 @@ func NewCachingSecretManager(kubeClient clientset.Interface, getTTL manager.GetO manager: manager.NewCacheBasedManager(secretStore, getSecretNames), } } + +// NewWatchingSecretManager creates a manager that keeps a cache of all secrets +// necessary for registered pods. +// It implements the following logic: +// - whenever a pod is created or updated, we start inidvidual watches for all +// referenced objects that aren't referenced from other registered pods +// - every GetObject() returns a value from local cache propagated via watches +func NewWatchingSecretManager(kubeClient clientset.Interface) Manager { + listSecret := func(namespace string, opts metav1.ListOptions) (runtime.Object, error) { + return kubeClient.CoreV1().Secrets(namespace).List(opts) + } + watchSecret := func(namespace string, opts metav1.ListOptions) (watch.Interface, error) { + return kubeClient.CoreV1().Secrets(namespace).Watch(opts) + } + newSecret := func() runtime.Object { + return &v1.Secret{} + } + gr := corev1.Resource("secret") + return &secretManager{ + manager: manager.NewWatchBasedManager(listSecret, watchSecret, newSecret, gr, getSecretNames), + } +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/server/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/server/BUILD index 69a71140f0..e55afd8380 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/server/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/server/BUILD @@ -26,25 +26,25 @@ go_library( "//pkg/kubelet/server/streaming:go_default_library", "//pkg/kubelet/types:go_default_library", "//pkg/util/configz:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/proxy:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/user:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authorization/authorizer:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/server/healthz:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/server/httplog:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/flushwriter:go_default_library", "//vendor/github.com/emicklei/go-restful:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/google/cadvisor/info/v1:go_default_library", "//vendor/github.com/google/cadvisor/metrics:go_default_library", "//vendor/github.com/prometheus/client_golang/prometheus:go_default_library", "//vendor/github.com/prometheus/client_golang/prometheus/promhttp:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/proxy:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authorization/authorizer:go_default_library", - "//vendor/k8s.io/apiserver/pkg/server/healthz:go_default_library", - "//vendor/k8s.io/apiserver/pkg/server/httplog:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/flushwriter:go_default_library", ], ) @@ -68,20 +68,20 @@ go_test( "//pkg/kubelet/server/stats:go_default_library", "//pkg/kubelet/server/streaming:go_default_library", "//pkg/volume:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/httpstream:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/httpstream/spdy:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/user:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authorization/authorizer:go_default_library", + "//staging/src/k8s.io/client-go/tools/remotecommand:go_default_library", + "//staging/src/k8s.io/client-go/util/testing:go_default_library", "//vendor/github.com/google/cadvisor/info/v1:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", "//vendor/github.com/stretchr/testify/require:go_default_library", "//vendor/golang.org/x/net/websocket:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/httpstream:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authorization/authorizer:go_default_library", - "//vendor/k8s.io/client-go/tools/remotecommand:go_default_library", - "//vendor/k8s.io/client-go/util/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/server/portforward/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/server/portforward/BUILD index 1b2a5837bb..07541328a3 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/server/portforward/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/server/portforward/BUILD @@ -17,13 +17,13 @@ go_library( importpath = "k8s.io/kubernetes/pkg/kubelet/server/portforward", deps = [ "//pkg/apis/core:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/httpstream:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/httpstream/spdy:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/server/httplog:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/wsstream:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/httpstream:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", - "//vendor/k8s.io/apiserver/pkg/server/httplog:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/wsstream:go_default_library", ], ) @@ -36,7 +36,7 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/apis/core:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/httpstream:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/httpstream:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/server/remotecommand/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/server/remotecommand/BUILD index 97da39d617..776abc764c 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/server/remotecommand/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/server/remotecommand/BUILD @@ -17,17 +17,17 @@ go_library( importpath = "k8s.io/kubernetes/pkg/kubelet/server/remotecommand", deps = [ "//pkg/apis/core:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/httpstream:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/httpstream/spdy:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/remotecommand:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/server/httplog:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/wsstream:go_default_library", + "//staging/src/k8s.io/client-go/tools/remotecommand:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/httpstream:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/remotecommand:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", - "//vendor/k8s.io/apiserver/pkg/server/httplog:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/wsstream:go_default_library", - "//vendor/k8s.io/client-go/tools/remotecommand:go_default_library", "//vendor/k8s.io/utils/exec:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/server/server.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/server/server.go index b96bf6b144..feaca8531a 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/server/server.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/server/server.go @@ -256,6 +256,7 @@ func (s *Server) InstallAuthFilter() { func (s *Server) InstallDefaultHandlers() { healthz.InstallHandler(s.restfulCont, healthz.PingHealthz, + healthz.LogHealthz, healthz.NamedCheck("syncloop", s.syncLoopHealthCheck), ) ws := new(restful.WebService) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/server/stats/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/server/stats/BUILD index 16a3791a88..985ec49f49 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/server/stats/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/server/stats/BUILD @@ -18,13 +18,13 @@ go_library( "//pkg/kubelet/container:go_default_library", "//pkg/kubelet/util/format:go_default_library", "//pkg/volume:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", "//vendor/github.com/emicklei/go-restful:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/google/cadvisor/info/v1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", ], ) @@ -40,11 +40,11 @@ go_test( "//pkg/kubelet/cm:go_default_library", "//pkg/kubelet/server/stats/testing:go_default_library", "//pkg/volume:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//vendor/github.com/google/gofuzz:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/server/streaming/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/server/streaming/BUILD index 36150aef24..bee8b567dd 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/server/streaming/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/server/streaming/BUILD @@ -18,14 +18,14 @@ go_library( "//pkg/kubelet/apis/cri/runtime/v1alpha2:go_default_library", "//pkg/kubelet/server/portforward:go_default_library", "//pkg/kubelet/server/remotecommand:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/remotecommand:go_default_library", + "//staging/src/k8s.io/client-go/tools/remotecommand:go_default_library", "//vendor/github.com/emicklei/go-restful:go_default_library", "//vendor/google.golang.org/grpc:go_default_library", "//vendor/google.golang.org/grpc/codes:go_default_library", "//vendor/google.golang.org/grpc/status:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/remotecommand:go_default_library", - "//vendor/k8s.io/client-go/tools/remotecommand:go_default_library", ], ) @@ -40,12 +40,12 @@ go_test( "//pkg/apis/core:go_default_library", "//pkg/kubelet/apis/cri/runtime/v1alpha2:go_default_library", "//pkg/kubelet/server/portforward:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/tools/remotecommand:go_default_library", + "//staging/src/k8s.io/client-go/transport/spdy:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", "//vendor/github.com/stretchr/testify/require:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/tools/remotecommand:go_default_library", - "//vendor/k8s.io/client-go/transport/spdy:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/stats/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/stats/BUILD index 8cee7f265b..ddd6639ea2 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/stats/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/stats/BUILD @@ -8,42 +8,9 @@ go_library( "helper.go", "log_metrics_provider.go", "stats_provider.go", - ] + select({ - "@io_bazel_rules_go//go/platform:android": [ - "stats_provider_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "stats_provider_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "stats_provider_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "stats_provider_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "stats_provider_linux.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "stats_provider_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "stats_provider_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "stats_provider_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "stats_provider_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "stats_provider_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "stats_provider_unsupported.go", - ], - "//conditions:default": [], - }), + "stats_provider_linux.go", + "stats_provider_unsupported.go", + ], importpath = "k8s.io/kubernetes/pkg/kubelet/stats", visibility = ["//visibility:public"], deps = [ @@ -59,12 +26,12 @@ go_library( "//pkg/kubelet/server/stats:go_default_library", "//pkg/kubelet/types:go_default_library", "//pkg/volume:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/google/cadvisor/fs:go_default_library", "//vendor/github.com/google/cadvisor/info/v1:go_default_library", "//vendor/github.com/google/cadvisor/info/v2:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", ], ) @@ -106,14 +73,14 @@ go_test( "//pkg/kubelet/server/stats:go_default_library", "//pkg/kubelet/types:go_default_library", "//pkg/volume:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//vendor/github.com/google/cadvisor/fs:go_default_library", "//vendor/github.com/google/cadvisor/info/v1:go_default_library", "//vendor/github.com/google/cadvisor/info/v2:go_default_library", "//vendor/github.com/google/gofuzz:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", "//vendor/github.com/stretchr/testify/require:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/status/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/status/BUILD index 63e32a391d..6e341e9b49 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/status/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/status/BUILD @@ -20,15 +20,15 @@ go_library( "//pkg/kubelet/types:go_default_library", "//pkg/kubelet/util/format:go_default_library", "//pkg/util/pod:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", ], ) @@ -49,15 +49,15 @@ go_test( "//pkg/kubelet/secret:go_default_library", "//pkg/kubelet/status/testing:go_default_library", "//pkg/kubelet/types:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/token/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/token/BUILD index d4d812a25a..df60c72f52 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/token/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/token/BUILD @@ -20,11 +20,11 @@ go_library( importpath = "k8s.io/kubernetes/pkg/kubelet/token", visibility = ["//visibility:public"], deps = [ + "//staging/src/k8s.io/api/authentication/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/authentication/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", ], ) @@ -33,8 +33,8 @@ go_test( srcs = ["token_manager_test.go"], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/api/authentication/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//staging/src/k8s.io/api/authentication/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/types/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/types/BUILD index b1d5ffd1ae..bef63914bf 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/types/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/types/BUILD @@ -20,9 +20,9 @@ go_library( deps = [ "//pkg/apis/core:go_default_library", "//pkg/apis/scheduling:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", ], ) @@ -36,10 +36,10 @@ go_test( ], embed = [":go_default_library"], deps = [ + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", "//vendor/github.com/stretchr/testify/require:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/BUILD index ff1755ebd1..d25898d22c 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/BUILD @@ -8,9 +8,7 @@ load( go_test( name = "go_default_test", - srcs = [ - "util_test.go", - ], + srcs = ["util_test.go"], embed = [":go_default_library"], deps = [ "//vendor/github.com/stretchr/testify/assert:go_default_library", @@ -22,45 +20,13 @@ go_library( srcs = [ "doc.go", "util.go", - ] + select({ - "@io_bazel_rules_go//go/platform:android": [ - "util_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "util_unix.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "util_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "util_unix.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "util_unix.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "util_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "util_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "util_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "util_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "util_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "util_windows.go", - ], - "//conditions:default": [], - }), + "util_unix.go", + "util_unsupported.go", + "util_windows.go", + ], importpath = "k8s.io/kubernetes/pkg/kubelet/util", deps = [ - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", ] + select({ "@io_bazel_rules_go//go/platform:darwin": [ "//vendor/github.com/golang/glog:go_default_library", diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/cache/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/cache/BUILD index fd8bda8b84..8f1b41605d 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/cache/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/cache/BUILD @@ -10,7 +10,7 @@ go_library( name = "go_default_library", srcs = ["object_cache.go"], importpath = "k8s.io/kubernetes/pkg/kubelet/util/cache", - deps = ["//vendor/k8s.io/client-go/tools/cache:go_default_library"], + deps = ["//staging/src/k8s.io/client-go/tools/cache:go_default_library"], ) go_test( @@ -18,8 +18,8 @@ go_test( srcs = ["object_cache_test.go"], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/format/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/format/BUILD index 2d7dc66ce1..f593dba646 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/format/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/format/BUILD @@ -14,8 +14,8 @@ go_library( ], importpath = "k8s.io/kubernetes/pkg/kubelet/util/format", deps = [ - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", ], ) @@ -24,8 +24,8 @@ go_test( srcs = ["resources_test.go"], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/manager/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/manager/BUILD index e789de207c..e220b787d4 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/manager/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/manager/BUILD @@ -11,18 +11,18 @@ go_library( visibility = ["//visibility:public"], deps = [ "//pkg/kubelet/util:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/apiserver/pkg/storage/etcd:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/storage/etcd:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) @@ -36,18 +36,18 @@ go_test( deps = [ "//pkg/api/v1/pod:go_default_library", "//pkg/apis/core/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/pluginwatcher/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/pluginwatcher/BUILD index b4173ab5e1..7b887b444f 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/pluginwatcher/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/pluginwatcher/BUILD @@ -9,6 +9,7 @@ load( go_library( name = "go_default_library", srcs = [ + "example_handler.go", "example_plugin.go", "plugin_watcher.go", ], @@ -20,6 +21,7 @@ go_library( "//pkg/util/filesystem:go_default_library", "//vendor/github.com/fsnotify/fsnotify:go_default_library", "//vendor/github.com/golang/glog:go_default_library", + "//vendor/github.com/pkg/errors:go_default_library", "//vendor/golang.org/x/net/context:go_default_library", "//vendor/google.golang.org/grpc:go_default_library", ], @@ -49,10 +51,7 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/kubelet/apis/pluginregistration/v1alpha1:go_default_library", - "//pkg/kubelet/util/pluginwatcher/example_plugin_apis/v1beta1:go_default_library", - "//pkg/kubelet/util/pluginwatcher/example_plugin_apis/v1beta2:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//vendor/github.com/stretchr/testify/require:go_default_library", - "//vendor/golang.org/x/net/context:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/pluginwatcher/README b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/pluginwatcher/README index 9654b2cf62..c8b6cc2844 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/pluginwatcher/README +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/pluginwatcher/README @@ -13,17 +13,22 @@ communication with any API version supported by the plugin. Here are the general rules that Kubelet plugin developers should follow: - Run as 'root' user. Currently creating socket under PluginsSockDir, a root owned directory, requires plugin process to be running as 'root'. + - Implements the Registration service specified in pkg/kubelet/apis/pluginregistration/v*/api.proto. + - The plugin name sent during Registration.GetInfo grpc should be unique for the given plugin type (CSIPlugin or DevicePlugin). -- The socket path needs to be unique and doesn't conflict with the path chosen - by any other potential plugins. Currently we only support flat fs namespace - under PluginsSockDir but will soon support recursive inotify watch for - hierarchical socket paths. + +- The socket path needs to be unique within one directory, in normal case, + each plugin type has its own sub directory, but the design does support socket file + under any sub directory of PluginSockDir. + - A plugin should clean up its own socket upon exiting or when a new instance comes up. A plugin should NOT remove any sockets belonging to other plugins. + - A plugin should make sure it has service ready for any supported service API version listed in the PluginInfo. + - For an example plugin implementation, take a look at example_plugin.go included in this directory. diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/pluginwatcher/example_handler.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/pluginwatcher/example_handler.go new file mode 100644 index 0000000000..4eae4188d6 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/pluginwatcher/example_handler.go @@ -0,0 +1,105 @@ +/* +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 pluginwatcher + +import ( + "errors" + "fmt" + "reflect" + "sync" + "time" + + "golang.org/x/net/context" + + v1beta1 "k8s.io/kubernetes/pkg/kubelet/util/pluginwatcher/example_plugin_apis/v1beta1" + v1beta2 "k8s.io/kubernetes/pkg/kubelet/util/pluginwatcher/example_plugin_apis/v1beta2" +) + +type exampleHandler struct { + registeredPlugins map[string]struct{} + mutex sync.Mutex + chanForHandlerAckErrors chan error // for testing +} + +// NewExampleHandler provide a example handler +func NewExampleHandler() *exampleHandler { + return &exampleHandler{ + chanForHandlerAckErrors: make(chan error), + registeredPlugins: make(map[string]struct{}), + } +} + +func (h *exampleHandler) Cleanup() error { + h.mutex.Lock() + defer h.mutex.Unlock() + h.registeredPlugins = make(map[string]struct{}) + return nil +} + +func (h *exampleHandler) Handler(pluginName string, endpoint string, versions []string, sockPath string) (chan bool, error) { + + // check for supported versions + if !reflect.DeepEqual([]string{"v1beta1", "v1beta2"}, versions) { + return nil, fmt.Errorf("not the supported versions: %s", versions) + } + + // this handler expects non-empty endpoint as an example + if len(endpoint) == 0 { + return nil, errors.New("expecting non empty endpoint") + } + + _, conn, err := dial(sockPath) + if err != nil { + return nil, err + } + defer conn.Close() + + // The plugin handler should be able to use any listed service API version. + v1beta1Client := v1beta1.NewExampleClient(conn) + v1beta2Client := v1beta2.NewExampleClient(conn) + + // Tests v1beta1 GetExampleInfo + if _, err = v1beta1Client.GetExampleInfo(context.Background(), &v1beta1.ExampleRequest{}); err != nil { + return nil, err + } + + // Tests v1beta2 GetExampleInfo + if _, err = v1beta2Client.GetExampleInfo(context.Background(), &v1beta2.ExampleRequest{}); err != nil { + return nil, err + } + + // handle registered plugin + h.mutex.Lock() + if _, exist := h.registeredPlugins[pluginName]; exist { + h.mutex.Unlock() + return nil, fmt.Errorf("plugin %s already registered", pluginName) + } + h.registeredPlugins[pluginName] = struct{}{} + h.mutex.Unlock() + + chanForAckOfNotification := make(chan bool) + go func() { + select { + case <-chanForAckOfNotification: + // TODO: handle the negative scenario + close(chanForAckOfNotification) + case <-time.After(time.Second): + h.chanForHandlerAckErrors <- errors.New("Timed out while waiting for notification ack") + } + }() + return chanForAckOfNotification, nil +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/pluginwatcher/example_plugin.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/pluginwatcher/example_plugin.go index fbca43acad..5c2dd966ba 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/pluginwatcher/example_plugin.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/pluginwatcher/example_plugin.go @@ -17,7 +17,7 @@ limitations under the License. package pluginwatcher import ( - "fmt" + "errors" "net" "sync" "time" @@ -31,17 +31,14 @@ import ( v1beta2 "k8s.io/kubernetes/pkg/kubelet/util/pluginwatcher/example_plugin_apis/v1beta2" ) -const ( - PluginName = "example-plugin" - PluginType = "example-plugin-type" -) - // examplePlugin is a sample plugin to work with plugin watcher type examplePlugin struct { grpcServer *grpc.Server wg sync.WaitGroup registrationStatus chan registerapi.RegistrationStatus // for testing endpoint string // for testing + pluginName string + pluginType string } type pluginServiceV1Beta1 struct { @@ -76,8 +73,10 @@ func NewExamplePlugin() *examplePlugin { } // NewTestExamplePlugin returns an initialized examplePlugin instance for testing -func NewTestExamplePlugin(endpoint string) *examplePlugin { +func NewTestExamplePlugin(pluginName string, pluginType string, endpoint string) *examplePlugin { return &examplePlugin{ + pluginName: pluginName, + pluginType: pluginType, registrationStatus: make(chan registerapi.RegistrationStatus), endpoint: endpoint, } @@ -86,8 +85,8 @@ func NewTestExamplePlugin(endpoint string) *examplePlugin { // GetInfo is the RPC invoked by plugin watcher func (e *examplePlugin) GetInfo(ctx context.Context, req *registerapi.InfoRequest) (*registerapi.PluginInfo, error) { return ®isterapi.PluginInfo{ - Type: PluginType, - Name: PluginName, + Type: e.pluginType, + Name: e.pluginName, Endpoint: e.endpoint, SupportedVersions: []string{"v1beta1", "v1beta2"}, }, nil @@ -145,6 +144,6 @@ func (e *examplePlugin) Stop() error { return nil case <-time.After(time.Second): glog.Errorf("Timed out on waiting for stop completion") - return fmt.Errorf("Timed out on waiting for stop completion") + return errors.New("Timed out on waiting for stop completion") } } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/pluginwatcher/example_plugin_apis/v1beta1/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/pluginwatcher/example_plugin_apis/v1beta1/BUILD index affbd0aee4..c535861bcc 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/pluginwatcher/example_plugin_apis/v1beta1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/pluginwatcher/example_plugin_apis/v1beta1/BUILD @@ -1,11 +1,5 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") -filegroup( - name = "go_default_library_protos", - srcs = ["api.proto"], - visibility = ["//visibility:public"], -) - go_library( name = "go_default_library", srcs = ["api.pb.go"], diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/pluginwatcher/example_plugin_apis/v1beta2/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/pluginwatcher/example_plugin_apis/v1beta2/BUILD index f2b53898d3..3589972860 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/pluginwatcher/example_plugin_apis/v1beta2/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/pluginwatcher/example_plugin_apis/v1beta2/BUILD @@ -1,11 +1,5 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") -filegroup( - name = "go_default_library_protos", - srcs = ["api.proto"], - visibility = ["//visibility:public"], -) - go_library( name = "go_default_library", srcs = ["api.pb.go"], diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/pluginwatcher/plugin_watcher.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/pluginwatcher/plugin_watcher.go index 9a5241cb2e..6db743dd4f 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/pluginwatcher/plugin_watcher.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/pluginwatcher/plugin_watcher.go @@ -20,13 +20,12 @@ import ( "fmt" "net" "os" - "path" - "path/filepath" "sync" "time" "github.com/fsnotify/fsnotify" "github.com/golang/glog" + "github.com/pkg/errors" "golang.org/x/net/context" "google.golang.org/grpc" registerapi "k8s.io/kubernetes/pkg/kubelet/apis/pluginregistration/v1alpha1" @@ -34,17 +33,17 @@ import ( ) // RegisterCallbackFn is the type of the callback function that handlers will provide -type RegisterCallbackFn func(pluginName string, endpoint string, versions []string, socketPath string) (error, chan bool) +type RegisterCallbackFn func(pluginName string, endpoint string, versions []string, socketPath string) (chan bool, error) // Watcher is the plugin watcher type Watcher struct { - path string - handlers map[string]RegisterCallbackFn - stopCh chan interface{} - fs utilfs.Filesystem - watcher *fsnotify.Watcher - wg sync.WaitGroup - mutex sync.Mutex + path string + handlers map[string]RegisterCallbackFn + stopCh chan interface{} + fs utilfs.Filesystem + fsWatcher *fsnotify.Watcher + wg sync.WaitGroup + mutex sync.Mutex } // NewWatcher provides a new watcher @@ -57,40 +56,45 @@ func NewWatcher(sockDir string) Watcher { } // AddHandler registers a callback to be invoked for a particular type of plugin -func (w *Watcher) AddHandler(handlerType string, handlerCbkFn RegisterCallbackFn) { +func (w *Watcher) AddHandler(pluginType string, handlerCbkFn RegisterCallbackFn) { w.mutex.Lock() defer w.mutex.Unlock() - w.handlers[handlerType] = handlerCbkFn + w.handlers[pluginType] = handlerCbkFn } // Creates the plugin directory, if it doesn't already exist. func (w *Watcher) createPluginDir() error { glog.V(4).Infof("Ensuring Plugin directory at %s ", w.path) if err := w.fs.MkdirAll(w.path, 0755); err != nil { - return fmt.Errorf("error (re-)creating driver directory: %s", err) + return fmt.Errorf("error (re-)creating root %s: %v", w.path, err) } + return nil } -// Walks through the plugin directory to discover any existing plugin sockets. -func (w *Watcher) traversePluginDir() error { - files, err := w.fs.ReadDir(w.path) - if err != nil { - return fmt.Errorf("error reading the plugin directory: %v", err) - } - for _, f := range files { - // Currently only supports flat fs namespace under the plugin directory. - // TODO: adds support for hierarchical fs namespace. - if !f.IsDir() && filepath.Base(f.Name())[0] != '.' { - go func(sockName string) { - w.watcher.Events <- fsnotify.Event{ - Name: sockName, - Op: fsnotify.Op(uint32(1)), - } - }(path.Join(w.path, f.Name())) +// Walks through the plugin directory discover any existing plugin sockets. +func (w *Watcher) traversePluginDir(dir string) error { + return w.fs.Walk(dir, func(path string, info os.FileInfo, err error) error { + if err != nil { + return fmt.Errorf("error accessing path: %s error: %v", path, err) } - } - return nil + + switch mode := info.Mode(); { + case mode.IsDir(): + if err := w.fsWatcher.Add(path); err != nil { + return fmt.Errorf("failed to watch %s, err: %v", path, err) + } + case mode&os.ModeSocket != 0: + go func() { + w.fsWatcher.Events <- fsnotify.Event{ + Name: path, + Op: fsnotify.Create, + } + }() + } + + return nil + }) } func (w *Watcher) init() error { @@ -102,7 +106,6 @@ func (w *Watcher) init() error { func (w *Watcher) registerPlugin(socketPath string) error { //TODO: Implement rate limiting to mitigate any DOS kind of attacks. - glog.V(4).Infof("registerPlugin called for socketPath: %s", socketPath) client, conn, err := dial(socketPath) if err != nil { return fmt.Errorf("dial failed at socket %s, err: %v", socketPath, err) @@ -115,11 +118,8 @@ func (w *Watcher) registerPlugin(socketPath string) error { if err != nil { return fmt.Errorf("failed to get plugin info using RPC GetInfo at socket %s, err: %v", socketPath, err) } - if err := w.invokeRegistrationCallbackAtHandler(ctx, client, infoResp, socketPath); err != nil { - return fmt.Errorf("failed to register plugin. Callback handler returned err: %v", err) - } - glog.V(4).Infof("Successfully registered plugin for plugin type: %s, name: %s, socket: %s", infoResp.Type, infoResp.Name, socketPath) - return nil + + return w.invokeRegistrationCallbackAtHandler(ctx, client, infoResp, socketPath) } func (w *Watcher) invokeRegistrationCallbackAtHandler(ctx context.Context, client registerapi.RegistrationClient, infoResp *registerapi.PluginInfo, socketPath string) error { @@ -127,13 +127,14 @@ func (w *Watcher) invokeRegistrationCallbackAtHandler(ctx context.Context, clien var ok bool handlerCbkFn, ok = w.handlers[infoResp.Type] if !ok { + errStr := fmt.Sprintf("no handler registered for plugin type: %s at socket %s", infoResp.Type, socketPath) if _, err := client.NotifyRegistrationStatus(ctx, ®isterapi.RegistrationStatus{ PluginRegistered: false, - Error: fmt.Sprintf("No handler found registered for plugin type: %s, socket: %s", infoResp.Type, socketPath), + Error: errStr, }); err != nil { - glog.Errorf("Failed to send registration status at socket %s, err: %v", socketPath, err) + return errors.Wrap(err, errStr) } - return fmt.Errorf("no handler found registered for plugin type: %s, socket: %s", infoResp.Type, socketPath) + return errors.New(errStr) } var versions []string @@ -141,27 +142,51 @@ func (w *Watcher) invokeRegistrationCallbackAtHandler(ctx context.Context, clien versions = append(versions, version) } // calls handler callback to verify registration request - err, chanForAckOfNotification := handlerCbkFn(infoResp.Name, infoResp.Endpoint, versions, socketPath) + chanForAckOfNotification, err := handlerCbkFn(infoResp.Name, infoResp.Endpoint, versions, socketPath) if err != nil { + errStr := fmt.Sprintf("plugin registration failed with err: %v", err) if _, err := client.NotifyRegistrationStatus(ctx, ®isterapi.RegistrationStatus{ PluginRegistered: false, - Error: fmt.Sprintf("Plugin registration failed with err: %v", err), + Error: errStr, }); err != nil { - glog.Errorf("Failed to send registration status at socket %s, err: %v", socketPath, err) + return errors.Wrap(err, errStr) } - chanForAckOfNotification <- false - return fmt.Errorf("plugin registration failed with err: %v", err) + return errors.New(errStr) } if _, err := client.NotifyRegistrationStatus(ctx, ®isterapi.RegistrationStatus{ PluginRegistered: true, }); err != nil { + chanForAckOfNotification <- false return fmt.Errorf("failed to send registration status at socket %s, err: %v", socketPath, err) } + chanForAckOfNotification <- true return nil } +// Handle filesystem notify event. +func (w *Watcher) handleFsNotifyEvent(event fsnotify.Event) error { + if event.Op&fsnotify.Create != fsnotify.Create { + return nil + } + + fi, err := os.Stat(event.Name) + if err != nil { + return fmt.Errorf("stat file %s failed: %v", event.Name, err) + } + + if !fi.IsDir() { + return w.registerPlugin(event.Name) + } + + if err := w.traversePluginDir(event.Name); err != nil { + return fmt.Errorf("failed to traverse plugin path %s, err: %v", event.Name, err) + } + + return nil +} + // Start watches for the creation of plugin sockets at the path func (w *Watcher) Start() error { glog.V(2).Infof("Plugin Watcher Start at %s", w.path) @@ -173,52 +198,42 @@ func (w *Watcher) Start() error { return err } - watcher, err := fsnotify.NewWatcher() + fsWatcher, err := fsnotify.NewWatcher() if err != nil { - return fmt.Errorf("failed to start plugin watcher, err: %v", err) + return fmt.Errorf("failed to start plugin fsWatcher, err: %v", err) } + w.fsWatcher = fsWatcher - if err := watcher.Add(w.path); err != nil { - watcher.Close() - return fmt.Errorf("failed to start plugin watcher, err: %v", err) - } - - w.watcher = watcher - - if err := w.traversePluginDir(); err != nil { - watcher.Close() + if err := w.traversePluginDir(w.path); err != nil { + fsWatcher.Close() return fmt.Errorf("failed to traverse plugin socket path, err: %v", err) } w.wg.Add(1) - go func(watcher *fsnotify.Watcher) { + go func(fsWatcher *fsnotify.Watcher) { defer w.wg.Done() for { select { - case event := <-watcher.Events: - if event.Op&fsnotify.Create == fsnotify.Create { - go func(eventName string) { - err := w.registerPlugin(eventName) - if err != nil { - glog.Errorf("Plugin %s registration failed with error: %v", eventName, err) - } - }(event.Name) - } - continue - case err := <-watcher.Errors: + case event := <-fsWatcher.Events: //TODO: Handle errors by taking corrective measures + go func() { + err := w.handleFsNotifyEvent(event) + if err != nil { + glog.Errorf("error %v when handle event: %s", err, event) + } + }() + continue + case err := <-fsWatcher.Errors: if err != nil { - glog.Errorf("Watcher received error: %v", err) + glog.Errorf("fsWatcher received error: %v", err) } continue - case <-w.stopCh: - watcher.Close() - break + fsWatcher.Close() + return } - break } - }(watcher) + }(fsWatcher) return nil } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/queue/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/queue/BUILD index 8384901fe4..997eeb6e95 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/queue/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/queue/BUILD @@ -11,8 +11,8 @@ go_library( srcs = ["work_queue.go"], importpath = "k8s.io/kubernetes/pkg/kubelet/util/queue", deps = [ - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library", ], ) @@ -21,9 +21,9 @@ go_test( srcs = ["work_queue_test.go"], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/sliceutils/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/sliceutils/BUILD index 7f9c3e618d..053eeddf88 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/sliceutils/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/sliceutils/BUILD @@ -12,7 +12,7 @@ go_library( importpath = "k8s.io/kubernetes/pkg/kubelet/util/sliceutils", deps = [ "//pkg/kubelet/container:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", ], ) @@ -35,7 +35,7 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/kubelet/container:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volume_host.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volume_host.go index 1d8bfcc9f6..06820bdeae 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volume_host.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volume_host.go @@ -36,7 +36,6 @@ import ( "k8s.io/kubernetes/pkg/kubelet/mountpod" "k8s.io/kubernetes/pkg/kubelet/secret" "k8s.io/kubernetes/pkg/kubelet/token" - "k8s.io/kubernetes/pkg/util/io" "k8s.io/kubernetes/pkg/util/mount" "k8s.io/kubernetes/pkg/volume" "k8s.io/kubernetes/pkg/volume/util" @@ -168,10 +167,6 @@ func (kvh *kubeletVolumeHost) GetMounter(pluginName string) mount.Interface { return mount.NewExecMounter(exec, kvh.kubelet.mounter) } -func (kvh *kubeletVolumeHost) GetWriter() io.Writer { - return kvh.kubelet.writer -} - func (kvh *kubeletVolumeHost) GetHostName() string { return kvh.kubelet.hostname } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/BUILD index 3f9d35d462..c20a4b707b 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/BUILD @@ -25,14 +25,14 @@ go_library( "//pkg/volume/util/operationexecutor:go_default_library", "//pkg/volume/util/types:go_default_library", "//pkg/volume/util/volumepathhandler:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", ], ) @@ -54,13 +54,13 @@ go_test( "//pkg/volume/testing:go_default_library", "//pkg/volume/util:go_default_library", "//pkg/volume/util/types:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", - "//vendor/k8s.io/client-go/util/testing:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", + "//staging/src/k8s.io/client-go/util/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/cache/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/cache/BUILD index c79fad5137..e9861638ab 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/cache/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/cache/BUILD @@ -19,10 +19,10 @@ go_library( "//pkg/volume/util:go_default_library", "//pkg/volume/util/operationexecutor:go_default_library", "//pkg/volume/util/types:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", ], ) @@ -38,8 +38,8 @@ go_test( "//pkg/volume/testing:go_default_library", "//pkg/volume/util:go_default_library", "//pkg/volume/util/types:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/populator/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/populator/BUILD index fe4d2da5a4..6a370b5124 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/populator/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/populator/BUILD @@ -21,14 +21,14 @@ go_library( "//pkg/volume:go_default_library", "//pkg/volume/util:go_default_library", "//pkg/volume/util/types:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", ], ) @@ -62,12 +62,12 @@ go_test( "//pkg/volume/testing:go_default_library", "//pkg/volume/util:go_default_library", "//pkg/volume/util/types:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/populator/desired_state_of_world_populator.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/populator/desired_state_of_world_populator.go index e65fdc1b2f..48f71621af 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/populator/desired_state_of_world_populator.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/populator/desired_state_of_world_populator.go @@ -513,7 +513,7 @@ func (dswp *desiredStateOfWorldPopulator) createVolumeSpec( glog.V(5).Infof( "Extracted volumeSpec (%v) from bound PV (pvName %q) and PVC (ClaimName %q/%q pvcUID %v)", - volumeSpec.Name, + volumeSpec.Name(), pvName, podNamespace, pvcSource.ClaimName, diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/reconciler/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/reconciler/BUILD index 5877ceced4..586067da32 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/reconciler/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/reconciler/BUILD @@ -23,13 +23,13 @@ go_library( "//pkg/volume/util/nestedpendingoperations:go_default_library", "//pkg/volume/util/operationexecutor:go_default_library", "//pkg/volume/util/types:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", ], ) @@ -45,17 +45,17 @@ go_test( "//pkg/volume/testing:go_default_library", "//pkg/volume/util:go_default_library", "//pkg/volume/util/operationexecutor:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/winstats/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/winstats/BUILD index e82b2eceb2..731b86303c 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/winstats/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/winstats/BUILD @@ -4,25 +4,21 @@ go_library( name = "go_default_library", srcs = [ "doc.go", - ] + select({ - "@io_bazel_rules_go//go/platform:windows": [ - "perfcounter_nodestats.go", - "perfcounters.go", - "version.go", - "winstats.go", - ], - "//conditions:default": [], - }), + "perfcounter_nodestats.go", + "perfcounters.go", + "version.go", + "winstats.go", + ], importpath = "k8s.io/kubernetes/pkg/kubelet/winstats", visibility = ["//visibility:public"], deps = select({ "@io_bazel_rules_go//go/platform:windows": [ + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", "//vendor/github.com/JeffAshton/win_pdh:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/google/cadvisor/info/v1:go_default_library", "//vendor/github.com/google/cadvisor/info/v2:go_default_library", "//vendor/golang.org/x/sys/windows:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", ], "//conditions:default": [], }), @@ -30,12 +26,7 @@ go_library( go_test( name = "go_default_test", - srcs = select({ - "@io_bazel_rules_go//go/platform:windows": [ - "winstats_test.go", - ], - "//conditions:default": [], - }), + srcs = ["winstats_test.go"], embed = [":go_default_library"], deps = select({ "@io_bazel_rules_go//go/platform:windows": [ diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubemark/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubemark/BUILD index a11620af86..2c862030c2 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubemark/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubemark/BUILD @@ -30,7 +30,6 @@ go_library( "//pkg/proxy:go_default_library", "//pkg/proxy/config:go_default_library", "//pkg/proxy/iptables:go_default_library", - "//pkg/util/io:go_default_library", "//pkg/util/iptables:go_default_library", "//pkg/util/mount:go_default_library", "//pkg/util/node:go_default_library", @@ -39,20 +38,20 @@ go_library( "//pkg/util/sysctl:go_default_library", "//pkg/volume/empty_dir:go_default_library", "//pkg/volume/secret:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/client-go/informers:go_default_library", + "//staging/src/k8s.io/client-go/informers/core/v1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", + "//staging/src/k8s.io/client-go/listers/core/v1:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", "//test/utils:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/client-go/informers:go_default_library", - "//vendor/k8s.io/client-go/informers/core/v1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", - "//vendor/k8s.io/client-go/listers/core/v1:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", "//vendor/k8s.io/utils/exec:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubemark/hollow_kubelet.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubemark/hollow_kubelet.go index 8e79abed32..a7ea236447 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubemark/hollow_kubelet.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubemark/hollow_kubelet.go @@ -30,7 +30,6 @@ import ( containertest "k8s.io/kubernetes/pkg/kubelet/container/testing" "k8s.io/kubernetes/pkg/kubelet/dockershim" kubetypes "k8s.io/kubernetes/pkg/kubelet/types" - kubeio "k8s.io/kubernetes/pkg/util/io" "k8s.io/kubernetes/pkg/util/mount" "k8s.io/kubernetes/pkg/util/oom" "k8s.io/kubernetes/pkg/volume/empty_dir" @@ -76,7 +75,6 @@ func NewHollowKubelet( VolumePlugins: volumePlugins, TLSOptions: nil, OOMAdjuster: oom.NewFakeOOMAdjuster(), - Writer: &kubeio.StdWriter{}, Mounter: mount.New("" /* default mount path */), } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubemark/hollow_proxy.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubemark/hollow_proxy.go index 8ed70fec12..649dea56aa 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubemark/hollow_proxy.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubemark/hollow_proxy.go @@ -70,6 +70,8 @@ func NewHollowProxyOrDie( broadcaster record.EventBroadcaster, recorder record.EventRecorder, useRealProxier bool, + proxierSyncPeriod time.Duration, + proxierMinSyncPeriod time.Duration, ) (*HollowProxy, error) { // Create proxier and service/endpoint handlers. var proxier proxy.ProxyProvider @@ -83,8 +85,8 @@ func NewHollowProxyOrDie( iptInterface, sysctl, execer, - 30*time.Second, - 5*time.Second, + proxierSyncPeriod, + proxierMinSyncPeriod, false, 0, "10.0.0.0/8", diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/printers/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/printers/BUILD index 1b2d8c111b..8026a11b25 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/printers/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/printers/BUILD @@ -13,28 +13,23 @@ go_library( "customcolumn_flags.go", "humanreadable.go", "interface.go", - "jsonpath.go", - "jsonpath_flags.go", - "kube_template_flags.go", "tabwriter.go", - "template.go", - "template_flags.go", ], importpath = "k8s.io/kubernetes/pkg/printers", deps = [ "//pkg/kubectl/genericclioptions:go_default_library", "//pkg/kubectl/genericclioptions/printers:go_default_library", "//pkg/kubectl/scheme:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/client-go/util/jsonpath:go_default_library", "//vendor/github.com/spf13/cobra:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", - "//vendor/k8s.io/client-go/util/jsonpath:go_default_library", ], ) @@ -61,18 +56,15 @@ go_test( "customcolumn_flags_test.go", "customcolumn_test.go", "humanreadable_test.go", - "jsonpath_flags_test.go", - "template_flags_test.go", - "template_test.go", ], embed = [":go_default_library"], deps = [ "//pkg/api/legacyscheme:go_default_library", "//pkg/apis/core:go_default_library", "//pkg/kubectl/genericclioptions:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/printers/customcolumn.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/printers/customcolumn.go index 45141e0cba..7c43e11c94 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/printers/customcolumn.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/printers/customcolumn.go @@ -35,7 +35,7 @@ import ( var jsonRegexp = regexp.MustCompile("^\\{\\.?([^{}]+)\\}$|^\\.?([^{}]+)$") // RelaxedJSONPathExpression attempts to be flexible with JSONPath expressions, it accepts: -// * metadata.name (no leading '.' or curly brances '{...}' +// * metadata.name (no leading '.' or curly braces '{...}' // * {metadata.name} (no leading '.') // * .metadata.name (no curly braces '{...}') // * {.metadata.name} (complete expression) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/printers/humanreadable.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/printers/humanreadable.go index 5b86be92fe..8ef5f38ced 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/printers/humanreadable.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/printers/humanreadable.go @@ -114,17 +114,25 @@ func (h *HumanReadablePrinter) EnsurePrintHeaders() { // See ValidatePrintHandlerFunc for required method signature. func (h *HumanReadablePrinter) Handler(columns, columnsWithWide []string, printFunc interface{}) error { var columnDefinitions []metav1beta1.TableColumnDefinition - for _, column := range columns { + for i, column := range columns { + format := "" + if i == 0 && strings.EqualFold(column, "name") { + format = "name" + } + columnDefinitions = append(columnDefinitions, metav1beta1.TableColumnDefinition{ - Name: column, - Type: "string", + Name: column, + Description: column, + Type: "string", + Format: format, }) } for _, column := range columnsWithWide { columnDefinitions = append(columnDefinitions, metav1beta1.TableColumnDefinition{ - Name: column, - Type: "string", - Priority: 1, + Name: column, + Description: column, + Type: "string", + Priority: 1, }) } @@ -631,6 +639,13 @@ func (h *HumanReadablePrinter) legacyPrinterToTable(obj runtime.Object, handler args := []reflect.Value{reflect.ValueOf(obj), reflect.ValueOf(buf), reflect.ValueOf(options)} if meta.IsListType(obj) { + listInterface, ok := obj.(metav1.ListInterface) + if ok { + table.ListMeta.SelfLink = listInterface.GetSelfLink() + table.ListMeta.ResourceVersion = listInterface.GetResourceVersion() + table.ListMeta.Continue = listInterface.GetContinue() + } + // TODO: this uses more memory than it has to, as we refactor printers we should remove the need // for this. args[0] = reflect.ValueOf(obj) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/printers/internalversion/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/printers/internalversion/BUILD index e28ee5404e..04e7ae152a 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/printers/internalversion/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/printers/internalversion/BUILD @@ -20,6 +20,7 @@ go_test( "//pkg/apis/apps:go_default_library", "//pkg/apis/autoscaling:go_default_library", "//pkg/apis/batch:go_default_library", + "//pkg/apis/coordination:go_default_library", "//pkg/apis/core:go_default_library", "//pkg/apis/extensions:go_default_library", "//pkg/apis/networking:go_default_library", @@ -31,21 +32,21 @@ go_test( "//pkg/kubectl/genericclioptions/printers:go_default_library", "//pkg/printers:go_default_library", "//pkg/util/pointer:go_default_library", + "//staging/src/k8s.io/api/apps/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer/yaml:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", "//vendor/github.com/ghodss/yaml:go_default_library", - "//vendor/k8s.io/api/apps/v1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/yaml:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", ], ) @@ -65,6 +66,7 @@ go_library( "//pkg/apis/autoscaling:go_default_library", "//pkg/apis/batch:go_default_library", "//pkg/apis/certificates:go_default_library", + "//pkg/apis/coordination:go_default_library", "//pkg/apis/core:go_default_library", "//pkg/apis/core/helper:go_default_library", "//pkg/apis/core/helper/qos:go_default_library", @@ -84,35 +86,36 @@ go_library( "//pkg/registry/rbac/validation:go_default_library", "//pkg/util/node:go_default_library", "//pkg/util/slice:go_default_library", + "//staging/src/k8s.io/api/apps/v1:go_default_library", + "//staging/src/k8s.io/api/apps/v1beta1:go_default_library", + "//staging/src/k8s.io/api/autoscaling/v2beta1:go_default_library", + "//staging/src/k8s.io/api/batch/v1:go_default_library", + "//staging/src/k8s.io/api/batch/v1beta1:go_default_library", + "//staging/src/k8s.io/api/certificates/v1beta1:go_default_library", + "//staging/src/k8s.io/api/coordination/v1beta1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/extensions/v1beta1:go_default_library", + "//staging/src/k8s.io/api/rbac/v1:go_default_library", + "//staging/src/k8s.io/api/rbac/v1beta1:go_default_library", + "//staging/src/k8s.io/api/storage/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/duration:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/client-go/dynamic:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", "//vendor/github.com/fatih/camelcase:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/apps/v1:go_default_library", - "//vendor/k8s.io/api/apps/v1beta1:go_default_library", - "//vendor/k8s.io/api/autoscaling/v2beta1:go_default_library", - "//vendor/k8s.io/api/batch/v1:go_default_library", - "//vendor/k8s.io/api/batch/v1beta1:go_default_library", - "//vendor/k8s.io/api/certificates/v1beta1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/extensions/v1beta1:go_default_library", - "//vendor/k8s.io/api/rbac/v1:go_default_library", - "//vendor/k8s.io/api/rbac/v1beta1:go_default_library", - "//vendor/k8s.io/api/storage/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/duration:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/client-go/dynamic:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/printers/internalversion/describe.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/printers/internalversion/describe.go index c1b59cf96e..1e27451bea 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/printers/internalversion/describe.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/printers/internalversion/describe.go @@ -44,6 +44,7 @@ import ( "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/types" + "k8s.io/apimachinery/pkg/util/duration" "k8s.io/apimachinery/pkg/util/intstr" "k8s.io/apimachinery/pkg/util/sets" "k8s.io/client-go/dynamic" @@ -275,19 +276,22 @@ func printUnstructuredContent(w PrefixWriter, level int, content map[string]inte func smartLabelFor(field string) string { commonAcronyms := []string{"API", "URL", "UID", "OSB", "GUID"} - splitted := camelcase.Split(field) - for i := 0; i < len(splitted); i++ { - part := splitted[i] + parts := camelcase.Split(field) + result := make([]string, 0, len(parts)) + for _, part := range parts { + if part == "_" { + continue + } if slice.ContainsString(commonAcronyms, strings.ToUpper(part), nil) { part = strings.ToUpper(part) } else { part = strings.Title(part) } - splitted[i] = part + result = append(result, part) } - return strings.Join(splitted, " ") + return strings.Join(result, " ") } // DefaultObjectDescriber can describe the default Kubernetes objects. @@ -639,7 +643,7 @@ func describePod(pod *api.Pod, events *api.EventList) (string, error) { printLabelsMultiline(w, "Labels", pod.Labels) printAnnotationsMultiline(w, "Annotations", pod.Annotations) if pod.DeletionTimestamp != nil { - w.Write(LEVEL_0, "Status:\tTerminating (lasts %s)\n", translateTimestamp(*pod.DeletionTimestamp)) + w.Write(LEVEL_0, "Status:\tTerminating (lasts %s)\n", translateTimestampUntil(*pod.DeletionTimestamp)) w.Write(LEVEL_0, "Termination Grace Period:\t%ds\n", *pod.DeletionGracePeriodSeconds) } else { w.Write(LEVEL_0, "Status:\t%s\n", string(pod.Status.Phase)) @@ -1198,7 +1202,7 @@ func describePersistentVolume(pv *api.PersistentVolume, events *api.EventList) ( w.Write(LEVEL_0, "Finalizers:\t%v\n", pv.ObjectMeta.Finalizers) w.Write(LEVEL_0, "StorageClass:\t%s\n", helper.GetPersistentVolumeClass(pv)) if pv.ObjectMeta.DeletionTimestamp != nil { - w.Write(LEVEL_0, "Status:\tTerminating (lasts %s)\n", translateTimestamp(*pv.ObjectMeta.DeletionTimestamp)) + w.Write(LEVEL_0, "Status:\tTerminating (lasts %s)\n", translateTimestampUntil(*pv.ObjectMeta.DeletionTimestamp)) } else { w.Write(LEVEL_0, "Status:\t%v\n", pv.Status.Phase) } @@ -1287,19 +1291,59 @@ func (d *PersistentVolumeClaimDescriber) Describe(namespace, name string, descri return "", err } + pc := d.Core().Pods(namespace) + + mountPods, err := getMountPods(pc, pvc.Name) + if err != nil { + return "", err + } + events, _ := d.Core().Events(namespace).Search(legacyscheme.Scheme, pvc) - return describePersistentVolumeClaim(pvc, events) + return describePersistentVolumeClaim(pvc, events, mountPods) } -func describePersistentVolumeClaim(pvc *api.PersistentVolumeClaim, events *api.EventList) (string, error) { +func getMountPods(c coreclient.PodInterface, pvcName string) ([]api.Pod, error) { + nsPods, err := c.List(metav1.ListOptions{}) + if err != nil { + return []api.Pod{}, err + } + + var pods []api.Pod + + for _, pod := range nsPods.Items { + pvcs := getPvcs(pod.Spec.Volumes) + + for _, pvc := range pvcs { + if pvc.PersistentVolumeClaim.ClaimName == pvcName { + pods = append(pods, pod) + } + } + } + + return pods, nil +} + +func getPvcs(volumes []api.Volume) []api.Volume { + var pvcs []api.Volume + + for _, volume := range volumes { + if volume.VolumeSource.PersistentVolumeClaim != nil { + pvcs = append(pvcs, volume) + } + } + + return pvcs +} + +func describePersistentVolumeClaim(pvc *api.PersistentVolumeClaim, events *api.EventList, mountPods []api.Pod) (string, error) { return tabbedString(func(out io.Writer) error { w := NewPrefixWriter(out) w.Write(LEVEL_0, "Name:\t%s\n", pvc.Name) w.Write(LEVEL_0, "Namespace:\t%s\n", pvc.Namespace) w.Write(LEVEL_0, "StorageClass:\t%s\n", helper.GetPersistentVolumeClaimClass(pvc)) if pvc.ObjectMeta.DeletionTimestamp != nil { - w.Write(LEVEL_0, "Status:\tTerminating (lasts %s)\n", translateTimestamp(*pvc.ObjectMeta.DeletionTimestamp)) + w.Write(LEVEL_0, "Status:\tTerminating (lasts %s)\n", translateTimestampUntil(*pvc.ObjectMeta.DeletionTimestamp)) } else { w.Write(LEVEL_0, "Status:\t%v\n", pvc.Status.Phase) } @@ -1338,6 +1382,8 @@ func describePersistentVolumeClaim(pvc *api.PersistentVolumeClaim, events *api.E DescribeEvents(events, w) } + printPodsMultiline(w, "Mounted By", mountPods) + return nil }) } @@ -1598,7 +1644,12 @@ type EnvVarResolverFunc func(e api.EnvVar) string // EnvValueFrom is exported for use by describers in other packages func EnvValueRetriever(pod *api.Pod) EnvVarResolverFunc { return func(e api.EnvVar) string { - internalFieldPath, _, err := legacyscheme.Scheme.ConvertFieldLabel(e.ValueFrom.FieldRef.APIVersion, "Pod", e.ValueFrom.FieldRef.FieldPath, "") + gv, err := schema.ParseGroupVersion(e.ValueFrom.FieldRef.APIVersion) + if err != nil { + return "" + } + gvk := gv.WithKind("Pod") + internalFieldPath, _, err := legacyscheme.Scheme.ConvertFieldLabel(gvk, e.ValueFrom.FieldRef.FieldPath, "") if err != nil { return "" // pod validation should catch this on create } @@ -1852,6 +1903,12 @@ func describeJob(job *batch.Job, events *api.EventList) (string, error) { if job.Status.StartTime != nil { w.Write(LEVEL_0, "Start Time:\t%s\n", job.Status.StartTime.Time.Format(time.RFC1123Z)) } + if job.Status.CompletionTime != nil { + w.Write(LEVEL_0, "Completed At:\t%s\n", job.Status.CompletionTime.Time.Format(time.RFC1123Z)) + } + if job.Status.StartTime != nil && job.Status.CompletionTime != nil { + w.Write(LEVEL_0, "Duration:\t%s\n", duration.HumanDuration(job.Status.CompletionTime.Sub(job.Status.StartTime.Time))) + } if job.Spec.ActiveDeadlineSeconds != nil { w.Write(LEVEL_0, "Active Deadline Seconds:\t%ds\n", *job.Spec.ActiveDeadlineSeconds) } @@ -3073,9 +3130,9 @@ func DescribeEvents(el *api.EventList, w PrefixWriter) { for _, e := range el.Items { var interval string if e.Count > 1 { - interval = fmt.Sprintf("%s (x%d over %s)", translateTimestamp(e.LastTimestamp), e.Count, translateTimestamp(e.FirstTimestamp)) + interval = fmt.Sprintf("%s (x%d over %s)", translateTimestampSince(e.LastTimestamp), e.Count, translateTimestampSince(e.FirstTimestamp)) } else { - interval = translateTimestamp(e.FirstTimestamp) + interval = translateTimestampSince(e.FirstTimestamp) } w.Write(LEVEL_1, "%v\t%v\t%s\t%v\t%v\n", e.Type, @@ -3530,6 +3587,12 @@ func describePodSecurityPolicy(psp *policy.PodSecurityPolicy) (string, error) { if len(psp.Spec.AllowedFlexVolumes) > 0 { w.Write(LEVEL_1, "Allowed FlexVolume Types:\t%s\n", flexVolumesToString(psp.Spec.AllowedFlexVolumes)) } + if len(psp.Spec.AllowedUnsafeSysctls) > 0 { + w.Write(LEVEL_1, "Allowed Unsafe Sysctls:\t%s\n", sysctlsToString(psp.Spec.AllowedUnsafeSysctls)) + } + if len(psp.Spec.ForbiddenSysctls) > 0 { + w.Write(LEVEL_1, "Forbidden Sysctls:\t%s\n", sysctlsToString(psp.Spec.ForbiddenSysctls)) + } w.Write(LEVEL_1, "Allow Host Network:\t%t\n", psp.Spec.HostNetwork) w.Write(LEVEL_1, "Allow Host Ports:\t%s\n", hostPortRangeToString(psp.Spec.HostPorts)) w.Write(LEVEL_1, "Allow Host PID:\t%t\n", psp.Spec.HostPID) @@ -3589,6 +3652,10 @@ func flexVolumesToString(flexVolumes []policy.AllowedFlexVolume) string { return stringOrDefaultValue(strings.Join(volumes, ","), "") } +func sysctlsToString(sysctls []string) string { + return stringOrNone(strings.Join(sysctls, ",")) +} + func hostPortRangeToString(ranges []policy.HostPortRange) string { formattedString := "" if ranges != nil { @@ -3847,6 +3914,37 @@ func printTaintsMultilineWithIndent(w PrefixWriter, initialIndent, title, innerI } } +// printPodsMultiline prints multiple pods with a proper alignment. +func printPodsMultiline(w PrefixWriter, title string, pods []api.Pod) { + printPodsMultilineWithIndent(w, "", title, "\t", pods) +} + +// printPodsMultilineWithIndent prints multiple pods with a user-defined alignment. +func printPodsMultilineWithIndent(w PrefixWriter, initialIndent, title, innerIndent string, pods []api.Pod) { + w.Write(LEVEL_0, "%s%s:%s", initialIndent, title, innerIndent) + + if pods == nil || len(pods) == 0 { + w.WriteLine("") + return + } + + // to print pods in the sorted order + sort.Slice(pods, func(i, j int) bool { + cmpKey := func(pod api.Pod) string { + return pod.Name + } + return cmpKey(pods[i]) < cmpKey(pods[j]) + }) + + for i, pod := range pods { + if i != 0 { + w.Write(LEVEL_0, "%s", initialIndent) + w.Write(LEVEL_0, "%s", innerIndent) + } + w.Write(LEVEL_0, "%s\n", pod.Name) + } +} + // printPodTolerationsMultiline prints multiple tolerations with a proper alignment. func printPodTolerationsMultiline(w PrefixWriter, title string, tolerations []api.Toleration) { printTolerationsMultilineWithIndent(w, "", title, "\t", tolerations) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/printers/internalversion/printers.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/printers/internalversion/printers.go index 1a804d08fc..6450a43aba 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/printers/internalversion/printers.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/printers/internalversion/printers.go @@ -31,6 +31,7 @@ import ( batchv1 "k8s.io/api/batch/v1" batchv1beta1 "k8s.io/api/batch/v1beta1" certificatesv1beta1 "k8s.io/api/certificates/v1beta1" + coordinationv1beta1 "k8s.io/api/coordination/v1beta1" apiv1 "k8s.io/api/core/v1" extensionsv1beta1 "k8s.io/api/extensions/v1beta1" rbacv1beta1 "k8s.io/api/rbac/v1beta1" @@ -48,6 +49,7 @@ import ( "k8s.io/kubernetes/pkg/apis/autoscaling" "k8s.io/kubernetes/pkg/apis/batch" "k8s.io/kubernetes/pkg/apis/certificates" + "k8s.io/kubernetes/pkg/apis/coordination" api "k8s.io/kubernetes/pkg/apis/core" "k8s.io/kubernetes/pkg/apis/core/helper" "k8s.io/kubernetes/pkg/apis/extensions" @@ -149,8 +151,8 @@ func AddHandlers(h printers.PrintHandler) { jobColumnDefinitions := []metav1beta1.TableColumnDefinition{ {Name: "Name", Type: "string", Format: "name", Description: metav1.ObjectMeta{}.SwaggerDoc()["name"]}, - {Name: "Desired", Type: "integer", Description: batchv1.JobSpec{}.SwaggerDoc()["completions"]}, - {Name: "Successful", Type: "integer", Description: batchv1.JobStatus{}.SwaggerDoc()["succeeded"]}, + {Name: "Completions", Type: "string", Description: batchv1.JobStatus{}.SwaggerDoc()["succeeded"]}, + {Name: "Duration", Type: "string", Description: "Time required to complete the job."}, {Name: "Age", Type: "string", Description: metav1.ObjectMeta{}.SwaggerDoc()["creationTimestamp"]}, {Name: "Containers", Type: "string", Priority: 1, Description: "Names of each container in the template."}, {Name: "Images", Type: "string", Priority: 1, Description: "Images referenced by each container in the template."}, @@ -393,6 +395,14 @@ func AddHandlers(h printers.PrintHandler) { h.TableHandler(certificateSigningRequestColumnDefinitions, printCertificateSigningRequest) h.TableHandler(certificateSigningRequestColumnDefinitions, printCertificateSigningRequestList) + leaseColumnDefinitions := []metav1beta1.TableColumnDefinition{ + {Name: "Name", Type: "string", Format: "name", Description: metav1.ObjectMeta{}.SwaggerDoc()["name"]}, + {Name: "Holder", Type: "string", Description: coordinationv1beta1.LeaseSpec{}.SwaggerDoc()["holderIdentity"]}, + {Name: "Age", Type: "string", Description: metav1.ObjectMeta{}.SwaggerDoc()["creationTimestamp"]}, + } + h.TableHandler(leaseColumnDefinitions, printLease) + h.TableHandler(leaseColumnDefinitions, printLeaseList) + storageClassColumnDefinitions := []metav1beta1.TableColumnDefinition{ {Name: "Name", Type: "string", Format: "name", Description: metav1.ObjectMeta{}.SwaggerDoc()["name"]}, {Name: "Provisioner", Type: "string", Description: storagev1.StorageClass{}.SwaggerDoc()["provisioner"]}, @@ -457,7 +467,7 @@ func printObjectMeta(obj runtime.Object, options printers.PrintOptions) ([]metav row := metav1beta1.TableRow{ Object: runtime.RawExtension{Object: obj}, } - row.Cells = append(row.Cells, m.GetName(), translateTimestamp(m.GetCreationTimestamp())) + row.Cells = append(row.Cells, m.GetName(), translateTimestampSince(m.GetCreationTimestamp())) rows = append(rows, row) return rows, nil } @@ -497,9 +507,9 @@ func formatEndpoints(endpoints *api.Endpoints, ports sets.String) string { return ret } -// translateTimestamp returns the elapsed time since timestamp in +// translateTimestampSince returns the elapsed time since timestamp in // human-readable approximation. -func translateTimestamp(timestamp metav1.Time) string { +func translateTimestampSince(timestamp metav1.Time) string { if timestamp.IsZero() { return "" } @@ -507,6 +517,16 @@ func translateTimestamp(timestamp metav1.Time) string { return duration.ShortHumanDuration(time.Since(timestamp.Time)) } +// translateTimestampUntil returns the elapsed time until timestamp in +// human-readable approximation. +func translateTimestampUntil(timestamp metav1.Time) string { + if timestamp.IsZero() { + return "" + } + + return duration.ShortHumanDuration(time.Until(timestamp.Time)) +} + var ( podSuccessConditions = []metav1beta1.TableRowCondition{{Type: metav1beta1.RowCompleted, Status: metav1beta1.ConditionTrue, Reason: string(api.PodSucceeded), Message: "The pod has completed successfully."}} podFailedConditions = []metav1beta1.TableRowCondition{{Type: metav1beta1.RowCompleted, Status: metav1beta1.ConditionTrue, Reason: string(api.PodFailed), Message: "The pod failed."}} @@ -608,7 +628,7 @@ func printPod(pod *api.Pod, options printers.PrintOptions) ([]metav1beta1.TableR reason = "Terminating" } - row.Cells = append(row.Cells, pod.Name, fmt.Sprintf("%d/%d", readyContainers, totalContainers), reason, int64(restarts), translateTimestamp(pod.CreationTimestamp)) + row.Cells = append(row.Cells, pod.Name, fmt.Sprintf("%d/%d", readyContainers, totalContainers), reason, int64(restarts), translateTimestampSince(pod.CreationTimestamp)) if options.Wide { nodeName := pod.Spec.NodeName @@ -668,7 +688,7 @@ func printPodDisruptionBudget(obj *policy.PodDisruptionBudget, options printers. maxUnavailable = "N/A" } - row.Cells = append(row.Cells, obj.Name, minAvailable, maxUnavailable, int64(obj.Status.PodDisruptionsAllowed), translateTimestamp(obj.CreationTimestamp)) + row.Cells = append(row.Cells, obj.Name, minAvailable, maxUnavailable, int64(obj.Status.PodDisruptionsAllowed), translateTimestampSince(obj.CreationTimestamp)) return []metav1beta1.TableRow{row}, nil } @@ -694,7 +714,7 @@ func printReplicationController(obj *api.ReplicationController, options printers currentReplicas := obj.Status.Replicas readyReplicas := obj.Status.ReadyReplicas - row.Cells = append(row.Cells, obj.Name, int64(desiredReplicas), int64(currentReplicas), int64(readyReplicas), translateTimestamp(obj.CreationTimestamp)) + row.Cells = append(row.Cells, obj.Name, int64(desiredReplicas), int64(currentReplicas), int64(readyReplicas), translateTimestampSince(obj.CreationTimestamp)) if options.Wide { names, images := layoutContainerCells(obj.Spec.Template.Spec.Containers) row.Cells = append(row.Cells, names, images, labels.FormatLabels(obj.Spec.Selector)) @@ -723,7 +743,7 @@ func printReplicaSet(obj *extensions.ReplicaSet, options printers.PrintOptions) currentReplicas := obj.Status.Replicas readyReplicas := obj.Status.ReadyReplicas - row.Cells = append(row.Cells, obj.Name, int64(desiredReplicas), int64(currentReplicas), int64(readyReplicas), translateTimestamp(obj.CreationTimestamp)) + row.Cells = append(row.Cells, obj.Name, int64(desiredReplicas), int64(currentReplicas), int64(readyReplicas), translateTimestampSince(obj.CreationTimestamp)) if options.Wide { names, images := layoutContainerCells(obj.Spec.Template.Spec.Containers) row.Cells = append(row.Cells, names, images, metav1.FormatLabelSelector(obj.Spec.Selector)) @@ -750,12 +770,28 @@ func printJob(obj *batch.Job, options printers.PrintOptions) ([]metav1beta1.Tabl var completions string if obj.Spec.Completions != nil { - completions = strconv.Itoa(int(*obj.Spec.Completions)) + completions = fmt.Sprintf("%d/%d", obj.Status.Succeeded, *obj.Spec.Completions) } else { - completions = "" + parallelism := int32(0) + if obj.Spec.Parallelism != nil { + parallelism = *obj.Spec.Parallelism + } + if parallelism > 1 { + completions = fmt.Sprintf("%d/1 of %d", obj.Status.Succeeded, parallelism) + } else { + completions = fmt.Sprintf("%d/1", obj.Status.Succeeded) + } + } + var jobDuration string + switch { + case obj.Status.StartTime == nil: + case obj.Status.CompletionTime == nil: + jobDuration = duration.HumanDuration(time.Now().Sub(obj.Status.StartTime.Time)) + default: + jobDuration = duration.HumanDuration(obj.Status.CompletionTime.Sub(obj.Status.StartTime.Time)) } - row.Cells = append(row.Cells, obj.Name, completions, int64(obj.Status.Succeeded), translateTimestamp(obj.CreationTimestamp)) + row.Cells = append(row.Cells, obj.Name, completions, jobDuration, translateTimestampSince(obj.CreationTimestamp)) if options.Wide { names, images := layoutContainerCells(obj.Spec.Template.Spec.Containers) row.Cells = append(row.Cells, names, images, metav1.FormatLabelSelector(obj.Spec.Selector)) @@ -782,10 +818,10 @@ func printCronJob(obj *batch.CronJob, options printers.PrintOptions) ([]metav1be lastScheduleTime := "" if obj.Status.LastScheduleTime != nil { - lastScheduleTime = translateTimestamp(*obj.Status.LastScheduleTime) + lastScheduleTime = translateTimestampSince(*obj.Status.LastScheduleTime) } - row.Cells = append(row.Cells, obj.Name, obj.Spec.Schedule, printBoolPtr(obj.Spec.Suspend), int64(len(obj.Status.Active)), lastScheduleTime, translateTimestamp(obj.CreationTimestamp)) + row.Cells = append(row.Cells, obj.Name, obj.Spec.Schedule, printBoolPtr(obj.Spec.Suspend), int64(len(obj.Status.Active)), lastScheduleTime, translateTimestampSince(obj.CreationTimestamp)) if options.Wide { names, images := layoutContainerCells(obj.Spec.JobTemplate.Spec.Template.Spec.Containers) row.Cells = append(row.Cells, names, images, metav1.FormatLabelSelector(obj.Spec.JobTemplate.Spec.Selector)) @@ -884,7 +920,7 @@ func printService(obj *api.Service, options printers.PrintOptions) ([]metav1beta svcPorts = "" } - row.Cells = append(row.Cells, obj.Name, string(svcType), internalIP, externalIP, svcPorts, translateTimestamp(obj.CreationTimestamp)) + row.Cells = append(row.Cells, obj.Name, string(svcType), internalIP, externalIP, svcPorts, translateTimestampSince(obj.CreationTimestamp)) if options.Wide { row.Cells = append(row.Cells, labels.FormatLabels(obj.Spec.Selector)) } @@ -948,7 +984,7 @@ func printIngress(obj *extensions.Ingress, options printers.PrintOptions) ([]met hosts := formatHosts(obj.Spec.Rules) address := loadBalancerStatusStringer(obj.Status.LoadBalancer, options.Wide) ports := formatPorts(obj.Spec.TLS) - createTime := translateTimestamp(obj.CreationTimestamp) + createTime := translateTimestampSince(obj.CreationTimestamp) row.Cells = append(row.Cells, obj.Name, hosts, address, ports, createTime) return []metav1beta1.TableRow{row}, nil } @@ -971,7 +1007,7 @@ func printStatefulSet(obj *apps.StatefulSet, options printers.PrintOptions) ([]m } desiredReplicas := obj.Spec.Replicas currentReplicas := obj.Status.Replicas - createTime := translateTimestamp(obj.CreationTimestamp) + createTime := translateTimestampSince(obj.CreationTimestamp) row.Cells = append(row.Cells, obj.Name, int64(desiredReplicas), int64(currentReplicas), createTime) if options.Wide { names, images := layoutContainerCells(obj.Spec.Template.Spec.Containers) @@ -1003,7 +1039,7 @@ func printDaemonSet(obj *extensions.DaemonSet, options printers.PrintOptions) ([ numberUpdated := obj.Status.UpdatedNumberScheduled numberAvailable := obj.Status.NumberAvailable - row.Cells = append(row.Cells, obj.Name, int64(desiredScheduled), int64(currentScheduled), int64(numberReady), int64(numberUpdated), int64(numberAvailable), labels.FormatLabels(obj.Spec.Template.Spec.NodeSelector), translateTimestamp(obj.CreationTimestamp)) + row.Cells = append(row.Cells, obj.Name, int64(desiredScheduled), int64(currentScheduled), int64(numberReady), int64(numberUpdated), int64(numberAvailable), labels.FormatLabels(obj.Spec.Template.Spec.NodeSelector), translateTimestampSince(obj.CreationTimestamp)) if options.Wide { names, images := layoutContainerCells(obj.Spec.Template.Spec.Containers) row.Cells = append(row.Cells, names, images, metav1.FormatLabelSelector(obj.Spec.Selector)) @@ -1027,7 +1063,7 @@ func printEndpoints(obj *api.Endpoints, options printers.PrintOptions) ([]metav1 row := metav1beta1.TableRow{ Object: runtime.RawExtension{Object: obj}, } - row.Cells = append(row.Cells, obj.Name, formatEndpoints(obj, nil), translateTimestamp(obj.CreationTimestamp)) + row.Cells = append(row.Cells, obj.Name, formatEndpoints(obj, nil), translateTimestampSince(obj.CreationTimestamp)) return []metav1beta1.TableRow{row}, nil } @@ -1047,7 +1083,7 @@ func printNamespace(obj *api.Namespace, options printers.PrintOptions) ([]metav1 row := metav1beta1.TableRow{ Object: runtime.RawExtension{Object: obj}, } - row.Cells = append(row.Cells, obj.Name, string(obj.Status.Phase), translateTimestamp(obj.CreationTimestamp)) + row.Cells = append(row.Cells, obj.Name, string(obj.Status.Phase), translateTimestampSince(obj.CreationTimestamp)) return []metav1beta1.TableRow{row}, nil } @@ -1067,7 +1103,7 @@ func printSecret(obj *api.Secret, options printers.PrintOptions) ([]metav1beta1. row := metav1beta1.TableRow{ Object: runtime.RawExtension{Object: obj}, } - row.Cells = append(row.Cells, obj.Name, string(obj.Type), int64(len(obj.Data)), translateTimestamp(obj.CreationTimestamp)) + row.Cells = append(row.Cells, obj.Name, string(obj.Type), int64(len(obj.Data)), translateTimestampSince(obj.CreationTimestamp)) return []metav1beta1.TableRow{row}, nil } @@ -1087,7 +1123,7 @@ func printServiceAccount(obj *api.ServiceAccount, options printers.PrintOptions) row := metav1beta1.TableRow{ Object: runtime.RawExtension{Object: obj}, } - row.Cells = append(row.Cells, obj.Name, int64(len(obj.Secrets)), translateTimestamp(obj.CreationTimestamp)) + row.Cells = append(row.Cells, obj.Name, int64(len(obj.Secrets)), translateTimestampSince(obj.CreationTimestamp)) return []metav1beta1.TableRow{row}, nil } @@ -1136,7 +1172,7 @@ func printNode(obj *api.Node, options printers.PrintOptions) ([]metav1beta1.Tabl roles = "" } - row.Cells = append(row.Cells, obj.Name, strings.Join(status, ","), roles, translateTimestamp(obj.CreationTimestamp), obj.Status.NodeInfo.KubeletVersion) + row.Cells = append(row.Cells, obj.Name, strings.Join(status, ","), roles, translateTimestampSince(obj.CreationTimestamp), obj.Status.NodeInfo.KubeletVersion) if options.Wide { osImage, kernelVersion, crVersion := obj.Status.NodeInfo.OSImage, obj.Status.NodeInfo.KernelVersion, obj.Status.NodeInfo.ContainerRuntimeVersion if osImage == "" { @@ -1234,7 +1270,7 @@ func printPersistentVolume(obj *api.PersistentVolume, options printers.PrintOpti row.Cells = append(row.Cells, obj.Name, aSize, modesStr, reclaimPolicyStr, string(phase), claimRefUID, helper.GetPersistentVolumeClass(obj), obj.Status.Reason, - translateTimestamp(obj.CreationTimestamp)) + translateTimestampSince(obj.CreationTimestamp)) return []metav1beta1.TableRow{row}, nil } @@ -1269,7 +1305,7 @@ func printPersistentVolumeClaim(obj *api.PersistentVolumeClaim, options printers capacity = storage.String() } - row.Cells = append(row.Cells, obj.Name, string(phase), obj.Spec.VolumeName, capacity, accessModes, helper.GetPersistentVolumeClaimClass(obj), translateTimestamp(obj.CreationTimestamp)) + row.Cells = append(row.Cells, obj.Name, string(phase), obj.Spec.VolumeName, capacity, accessModes, helper.GetPersistentVolumeClaimClass(obj), translateTimestampSince(obj.CreationTimestamp)) return []metav1beta1.TableRow{row}, nil } @@ -1295,8 +1331,8 @@ func printEvent(obj *api.Event, options printers.PrintOptions) ([]metav1beta1.Ta FirstTimestamp = obj.FirstTimestamp.String() LastTimestamp = obj.LastTimestamp.String() } else { - FirstTimestamp = translateTimestamp(obj.FirstTimestamp) - LastTimestamp = translateTimestamp(obj.LastTimestamp) + FirstTimestamp = translateTimestampSince(obj.FirstTimestamp) + LastTimestamp = translateTimestampSince(obj.LastTimestamp) } row.Cells = append(row.Cells, LastTimestamp, FirstTimestamp, int64(obj.Count), obj.Name, obj.InvolvedObject.Kind, @@ -1325,7 +1361,7 @@ func printRoleBinding(obj *rbac.RoleBinding, options printers.PrintOptions) ([]m Object: runtime.RawExtension{Object: obj}, } - row.Cells = append(row.Cells, obj.Name, translateTimestamp(obj.CreationTimestamp)) + row.Cells = append(row.Cells, obj.Name, translateTimestampSince(obj.CreationTimestamp)) if options.Wide { roleRef := fmt.Sprintf("%s/%s", obj.RoleRef.Kind, obj.RoleRef.Name) users, groups, sas, _ := rbac.SubjectsStrings(obj.Subjects) @@ -1352,7 +1388,7 @@ func printClusterRoleBinding(obj *rbac.ClusterRoleBinding, options printers.Prin Object: runtime.RawExtension{Object: obj}, } - row.Cells = append(row.Cells, obj.Name, translateTimestamp(obj.CreationTimestamp)) + row.Cells = append(row.Cells, obj.Name, translateTimestampSince(obj.CreationTimestamp)) if options.Wide { roleRef := fmt.Sprintf("%s/%s", obj.RoleRef.Kind, obj.RoleRef.Name) users, groups, sas, _ := rbac.SubjectsStrings(obj.Subjects) @@ -1382,7 +1418,7 @@ func printCertificateSigningRequest(obj *certificates.CertificateSigningRequest, if err != nil { return nil, err } - row.Cells = append(row.Cells, obj.Name, translateTimestamp(obj.CreationTimestamp), obj.Spec.Username, status) + row.Cells = append(row.Cells, obj.Name, translateTimestampSince(obj.CreationTimestamp), obj.Spec.Username, status) return []metav1beta1.TableRow{row}, nil } @@ -1475,7 +1511,7 @@ func printDeployment(obj *extensions.Deployment, options printers.PrintOptions) currentReplicas := obj.Status.Replicas updatedReplicas := obj.Status.UpdatedReplicas availableReplicas := obj.Status.AvailableReplicas - age := translateTimestamp(obj.CreationTimestamp) + age := translateTimestampSince(obj.CreationTimestamp) containers := obj.Spec.Template.Spec.Containers selector, err := metav1.LabelSelectorAsSelector(obj.Spec.Selector) if err != nil { @@ -1591,7 +1627,7 @@ func printHorizontalPodAutoscaler(obj *autoscaling.HorizontalPodAutoscaler, opti } maxPods := obj.Spec.MaxReplicas currentReplicas := obj.Status.CurrentReplicas - row.Cells = append(row.Cells, obj.Name, reference, metrics, minPods, int64(maxPods), int64(currentReplicas), translateTimestamp(obj.CreationTimestamp)) + row.Cells = append(row.Cells, obj.Name, reference, metrics, minPods, int64(maxPods), int64(currentReplicas), translateTimestampSince(obj.CreationTimestamp)) return []metav1beta1.TableRow{row}, nil } @@ -1611,7 +1647,7 @@ func printConfigMap(obj *api.ConfigMap, options printers.PrintOptions) ([]metav1 row := metav1beta1.TableRow{ Object: runtime.RawExtension{Object: obj}, } - row.Cells = append(row.Cells, obj.Name, int64(len(obj.Data)), translateTimestamp(obj.CreationTimestamp)) + row.Cells = append(row.Cells, obj.Name, int64(len(obj.Data)), translateTimestampSince(obj.CreationTimestamp)) return []metav1beta1.TableRow{row}, nil } @@ -1664,7 +1700,7 @@ func printNetworkPolicy(obj *networking.NetworkPolicy, options printers.PrintOpt row := metav1beta1.TableRow{ Object: runtime.RawExtension{Object: obj}, } - row.Cells = append(row.Cells, obj.Name, metav1.FormatLabelSelector(&obj.Spec.PodSelector), translateTimestamp(obj.CreationTimestamp)) + row.Cells = append(row.Cells, obj.Name, metav1.FormatLabelSelector(&obj.Spec.PodSelector), translateTimestampSince(obj.CreationTimestamp)) return []metav1beta1.TableRow{row}, nil } @@ -1690,7 +1726,7 @@ func printStorageClass(obj *storage.StorageClass, options printers.PrintOptions) name += " (default)" } provtype := obj.Provisioner - row.Cells = append(row.Cells, name, provtype, translateTimestamp(obj.CreationTimestamp)) + row.Cells = append(row.Cells, name, provtype, translateTimestampSince(obj.CreationTimestamp)) return []metav1beta1.TableRow{row}, nil } @@ -1707,6 +1743,31 @@ func printStorageClassList(list *storage.StorageClassList, options printers.Prin return rows, nil } +func printLease(obj *coordination.Lease, options printers.PrintOptions) ([]metav1beta1.TableRow, error) { + row := metav1beta1.TableRow{ + Object: runtime.RawExtension{Object: obj}, + } + + var holderIdentity string + if obj.Spec.HolderIdentity != nil { + holderIdentity = *obj.Spec.HolderIdentity + } + row.Cells = append(row.Cells, obj.Name, holderIdentity, translateTimestampSince(obj.CreationTimestamp)) + return []metav1beta1.TableRow{row}, nil +} + +func printLeaseList(list *coordination.LeaseList, options printers.PrintOptions) ([]metav1beta1.TableRow, error) { + rows := make([]metav1beta1.TableRow, 0, len(list.Items)) + for i := range list.Items { + r, err := printLease(&list.Items[i], options) + if err != nil { + return nil, err + } + rows = append(rows, r...) + } + return rows, nil +} + func printStatus(obj *metav1.Status, options printers.PrintOptions) ([]metav1beta1.TableRow, error) { row := metav1beta1.TableRow{ Object: runtime.RawExtension{Object: obj}, @@ -1776,7 +1837,7 @@ func printControllerRevision(obj *apps.ControllerRevision, options printers.Prin controllerName = printers.FormatResourceName(gvk.GroupKind(), controllerRef.Name, withKind) } revision := obj.Revision - age := translateTimestamp(obj.CreationTimestamp) + age := translateTimestampSince(obj.CreationTimestamp) row.Cells = append(row.Cells, obj.Name, controllerName, revision, age) return []metav1beta1.TableRow{row}, nil } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/probe/http/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/probe/http/BUILD index c411f77f71..5c788fc3ab 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/probe/http/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/probe/http/BUILD @@ -13,8 +13,8 @@ go_library( deps = [ "//pkg/probe:go_default_library", "//pkg/version:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/BUILD index bb5b4b6165..5e6aef1041 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/BUILD @@ -20,10 +20,10 @@ go_library( "//pkg/apis/core:go_default_library", "//pkg/proxy/util:go_default_library", "//pkg/util/net:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", ], ) @@ -61,10 +61,10 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/apis/core:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//vendor/github.com/davecgh/go-spew/spew:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/BUILD index 317d8b770c..acc02e75c9 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/BUILD @@ -15,9 +15,9 @@ go_library( ], importpath = "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig", deps = [ - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/scheme/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/scheme/BUILD index 917b8fa7dd..608d2fb85c 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/scheme/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/scheme/BUILD @@ -8,8 +8,9 @@ go_library( deps = [ "//pkg/proxy/apis/kubeproxyconfig:go_default_library", "//pkg/proxy/apis/kubeproxyconfig/v1alpha1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", ], ) @@ -33,6 +34,6 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/proxy/apis/kubeproxyconfig/fuzzer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/testing/roundtrip:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/testing/roundtrip:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/scheme/scheme.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/scheme/scheme.go index fbc3bdd47e..d336bf6d52 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/scheme/scheme.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/scheme/scheme.go @@ -19,6 +19,7 @@ package scheme import ( "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/serializer" + utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig" "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/v1alpha1" ) @@ -37,6 +38,6 @@ func init() { // AddToScheme adds the types of this group into the given scheme. func AddToScheme(scheme *runtime.Scheme) { - v1alpha1.AddToScheme(scheme) - kubeproxyconfig.AddToScheme(scheme) + utilruntime.Must(v1alpha1.AddToScheme(scheme)) + utilruntime.Must(kubeproxyconfig.AddToScheme(scheme)) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/v1alpha1/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/v1alpha1/BUILD index 5ddeb90140..01ae113d61 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/v1alpha1/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/v1alpha1/BUILD @@ -22,10 +22,10 @@ go_library( "//pkg/master/ports:go_default_library", "//pkg/proxy/apis/kubeproxyconfig:go_default_library", "//pkg/util/pointer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/v1alpha1/types.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/v1alpha1/types.go index c9936e701f..beab095d60 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/v1alpha1/types.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/v1alpha1/types.go @@ -65,7 +65,7 @@ type KubeProxyIPVSConfiguration struct { Scheduler string `json:"scheduler"` // excludeCIDRs is a list of CIDR's which the ipvs proxier should not touch // when cleaning up ipvs services. - ExcludeCIDRs []string + ExcludeCIDRs []string `json:"excludeCIDRs"` } // KubeProxyConntrackConfiguration contains conntrack settings for diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/v1alpha1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/v1alpha1/zz_generated.deepcopy.go index e6839b8673..c9e913e084 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/v1alpha1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/v1alpha1/zz_generated.deepcopy.go @@ -57,12 +57,8 @@ func (in *KubeProxyConfiguration) DeepCopyInto(out *KubeProxyConfiguration) { in.IPVS.DeepCopyInto(&out.IPVS) if in.OOMScoreAdj != nil { in, out := &in.OOMScoreAdj, &out.OOMScoreAdj - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } out.UDPIdleTimeout = in.UDPIdleTimeout in.Conntrack.DeepCopyInto(&out.Conntrack) @@ -98,48 +94,28 @@ func (in *KubeProxyConntrackConfiguration) DeepCopyInto(out *KubeProxyConntrackC *out = *in if in.Max != nil { in, out := &in.Max, &out.Max - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.MaxPerCore != nil { in, out := &in.MaxPerCore, &out.MaxPerCore - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.Min != nil { in, out := &in.Min, &out.Min - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.TCPEstablishedTimeout != nil { in, out := &in.TCPEstablishedTimeout, &out.TCPEstablishedTimeout - if *in == nil { - *out = nil - } else { - *out = new(v1.Duration) - **out = **in - } + *out = new(v1.Duration) + **out = **in } if in.TCPCloseWaitTimeout != nil { in, out := &in.TCPCloseWaitTimeout, &out.TCPCloseWaitTimeout - if *in == nil { - *out = nil - } else { - *out = new(v1.Duration) - **out = **in - } + *out = new(v1.Duration) + **out = **in } return } @@ -159,12 +135,8 @@ func (in *KubeProxyIPTablesConfiguration) DeepCopyInto(out *KubeProxyIPTablesCon *out = *in if in.MasqueradeBit != nil { in, out := &in.MasqueradeBit, &out.MasqueradeBit - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } out.SyncPeriod = in.SyncPeriod out.MinSyncPeriod = in.MinSyncPeriod diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/validation/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/validation/BUILD index 3319d4b429..1bf26fcfcc 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/validation/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/validation/BUILD @@ -13,9 +13,9 @@ go_library( deps = [ "//pkg/apis/core/validation:go_default_library", "//pkg/proxy/apis/kubeproxyconfig:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", ], ) @@ -39,7 +39,7 @@ go_test( deps = [ "//pkg/proxy/apis/kubeproxyconfig:go_default_library", "//pkg/util/pointer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/validation/validation.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/validation/validation.go index bd193c060a..90730fceec 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/validation/validation.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/validation/validation.go @@ -60,7 +60,9 @@ func Validate(config *kubeproxyconfig.KubeProxyConfiguration) field.ErrorList { allErrs = append(allErrs, field.Invalid(newPath.Child("BindAddress"), config.BindAddress, "not a valid textual representation of an IP address")) } - allErrs = append(allErrs, validateHostPort(config.HealthzBindAddress, newPath.Child("HealthzBindAddress"))...) + if config.HealthzBindAddress != "" { + allErrs = append(allErrs, validateHostPort(config.HealthzBindAddress, newPath.Child("HealthzBindAddress"))...) + } allErrs = append(allErrs, validateHostPort(config.MetricsBindAddress, newPath.Child("MetricsBindAddress"))...) if config.ClusterCIDR != "" { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/zz_generated.deepcopy.go index db491d40c0..57afe9475e 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/zz_generated.deepcopy.go @@ -79,12 +79,8 @@ func (in *KubeProxyConfiguration) DeepCopyInto(out *KubeProxyConfiguration) { in.IPVS.DeepCopyInto(&out.IPVS) if in.OOMScoreAdj != nil { in, out := &in.OOMScoreAdj, &out.OOMScoreAdj - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } out.UDPIdleTimeout = in.UDPIdleTimeout in.Conntrack.DeepCopyInto(&out.Conntrack) @@ -120,48 +116,28 @@ func (in *KubeProxyConntrackConfiguration) DeepCopyInto(out *KubeProxyConntrackC *out = *in if in.Max != nil { in, out := &in.Max, &out.Max - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.MaxPerCore != nil { in, out := &in.MaxPerCore, &out.MaxPerCore - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.Min != nil { in, out := &in.Min, &out.Min - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } if in.TCPEstablishedTimeout != nil { in, out := &in.TCPEstablishedTimeout, &out.TCPEstablishedTimeout - if *in == nil { - *out = nil - } else { - *out = new(v1.Duration) - **out = **in - } + *out = new(v1.Duration) + **out = **in } if in.TCPCloseWaitTimeout != nil { in, out := &in.TCPCloseWaitTimeout, &out.TCPCloseWaitTimeout - if *in == nil { - *out = nil - } else { - *out = new(v1.Duration) - **out = **in - } + *out = new(v1.Duration) + **out = **in } return } @@ -181,12 +157,8 @@ func (in *KubeProxyIPTablesConfiguration) DeepCopyInto(out *KubeProxyIPTablesCon *out = *in if in.MasqueradeBit != nil { in, out := &in.MasqueradeBit, &out.MasqueradeBit - if *in == nil { - *out = nil - } else { - *out = new(int32) - **out = **in - } + *out = new(int32) + **out = **in } out.SyncPeriod = in.SyncPeriod out.MinSyncPeriod = in.MinSyncPeriod diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/config/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/config/BUILD index 1f7517cf48..73a6cd6ffe 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/config/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/config/BUILD @@ -18,9 +18,9 @@ go_library( "//pkg/client/informers/informers_generated/internalversion/core/internalversion:go_default_library", "//pkg/client/listers/core/internalversion:go_default_library", "//pkg/controller:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", ], ) @@ -35,11 +35,11 @@ go_test( "//pkg/apis/core:go_default_library", "//pkg/client/clientset_generated/internalclientset/fake:go_default_library", "//pkg/client/informers/informers_generated/internalversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/healthcheck/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/healthcheck/BUILD index 859600f0fd..b711fcdb07 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/healthcheck/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/healthcheck/BUILD @@ -15,13 +15,13 @@ go_library( importpath = "k8s.io/kubernetes/pkg/proxy/healthcheck", deps = [ "//pkg/apis/core:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/renstrom/dedent:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", ], ) @@ -30,10 +30,10 @@ go_test( srcs = ["healthcheck_test.go"], embed = [":go_default_library"], deps = [ + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//vendor/github.com/davecgh/go-spew/spew:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/iptables/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/iptables/BUILD index c8bdf903a7..1bcf9cbabc 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/iptables/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/iptables/BUILD @@ -8,9 +8,7 @@ load( go_library( name = "go_default_library", - srcs = [ - "proxier.go", - ], + srcs = ["proxier.go"], importpath = "k8s.io/kubernetes/pkg/proxy/iptables", deps = [ "//pkg/apis/core:go_default_library", @@ -24,11 +22,11 @@ go_library( "//pkg/util/net:go_default_library", "//pkg/util/sysctl:go_default_library", "//pkg/util/version:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", "//vendor/k8s.io/utils/exec:go_default_library", ], ) @@ -46,10 +44,10 @@ go_test( "//pkg/util/conntrack:go_default_library", "//pkg/util/iptables:go_default_library", "//pkg/util/iptables/testing:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", "//vendor/k8s.io/utils/exec:go_default_library", "//vendor/k8s.io/utils/exec/testing:go_default_library", ], diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/iptables/proxier.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/iptables/proxier.go index a4338f62d3..4bc58484b1 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/iptables/proxier.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/iptables/proxier.go @@ -249,6 +249,12 @@ type Proxier struct { natChains *bytes.Buffer natRules *bytes.Buffer + // endpointChainsNumber is the total amount of endpointChains across all + // services that we will generate (it is computed at the beginning of + // syncProxyRules method). If that is large enough, comments in some + // iptable rules are dropped to improve performance. + endpointChainsNumber int + // Values are as a parameter to select the interfaces where nodeport works. nodePortAddresses []string // networkInterfacer defines an interface for several net library functions. @@ -403,16 +409,16 @@ func CleanupLeftovers(ipt utiliptables.Interface) (encounteredError bool) { for _, chain := range []utiliptables.Chain{kubeServicesChain, kubeNodePortsChain, kubePostroutingChain, KubeMarkMasqChain} { if _, found := existingNATChains[chain]; found { chainString := string(chain) - writeLine(natChains, existingNATChains[chain]) // flush - writeLine(natRules, "-X", chainString) // delete + writeBytesLine(natChains, existingNATChains[chain]) // flush + writeLine(natRules, "-X", chainString) // delete } } // Hunt for service and endpoint chains. for chain := range existingNATChains { chainString := string(chain) if strings.HasPrefix(chainString, "KUBE-SVC-") || strings.HasPrefix(chainString, "KUBE-SEP-") || strings.HasPrefix(chainString, "KUBE-FW-") || strings.HasPrefix(chainString, "KUBE-XLB-") { - writeLine(natChains, existingNATChains[chain]) // flush - writeLine(natRules, "-X", chainString) // delete + writeBytesLine(natChains, existingNATChains[chain]) // flush + writeLine(natRules, "-X", chainString) // delete } } writeLine(natRules, "COMMIT") @@ -426,7 +432,7 @@ func CleanupLeftovers(ipt utiliptables.Interface) (encounteredError bool) { } // Flush and remove all of our "-t filter" chains. - iptablesData = bytes.NewBuffer(nil) + iptablesData.Reset() if err := ipt.SaveInto(utiliptables.TableFilter, iptablesData); err != nil { glog.Errorf("Failed to execute iptables-save for %s: %v", utiliptables.TableFilter, err) encounteredError = true @@ -438,7 +444,7 @@ func CleanupLeftovers(ipt utiliptables.Interface) (encounteredError bool) { for _, chain := range []utiliptables.Chain{kubeServicesChain, kubeExternalServicesChain, kubeForwardChain} { if _, found := existingFilterChains[chain]; found { chainString := string(chain) - writeLine(filterChains, existingFilterChains[chain]) + writeBytesLine(filterChains, existingFilterChains[chain]) writeLine(filterRules, "-X", chainString) } } @@ -606,6 +612,19 @@ func (proxier *Proxier) deleteEndpointConnections(connectionMap []proxy.ServiceE } } +const endpointChainsNumberThreshold = 1000 + +// Assumes proxier.mu is held. +func (proxier *Proxier) appendServiceCommentLocked(args []string, svcName string) { + // Not printing these comments, can reduce size of iptables (in case of large + // number of endpoints) even by 40%+. So if total number of endpoint chains + // is large enough, we simply drop those comments. + if proxier.endpointChainsNumber > endpointChainsNumberThreshold { + return + } + args = append(args, "-m", "comment", "--comment", svcName) +} + // This is where all of the iptables-save/restore calls happen. // The only other iptables rules are those that are setup in iptablesInit() // This assumes proxier.mu is NOT held @@ -663,16 +682,19 @@ func (proxier *Proxier) syncProxyRules() { // Get iptables-save output so we can check for existing chains and rules. // This will be a map of chain name to chain with rules as stored in iptables-save/iptables-restore - existingFilterChains := make(map[utiliptables.Chain]string) - proxier.iptablesData.Reset() - err := proxier.iptables.SaveInto(utiliptables.TableFilter, proxier.iptablesData) + existingFilterChains := make(map[utiliptables.Chain][]byte) + // TODO: Filter table is small so we're not reusing this buffer over rounds. + // However, to optimize it further, we should do that. + existingFilterChainsData := bytes.NewBuffer(nil) + err := proxier.iptables.SaveInto(utiliptables.TableFilter, existingFilterChainsData) if err != nil { // if we failed to get any rules glog.Errorf("Failed to execute iptables-save, syncing all rules: %v", err) } else { // otherwise parse the output - existingFilterChains = utiliptables.GetChainLines(utiliptables.TableFilter, proxier.iptablesData.Bytes()) + existingFilterChains = utiliptables.GetChainLines(utiliptables.TableFilter, existingFilterChainsData.Bytes()) } - existingNATChains := make(map[utiliptables.Chain]string) + // IMPORTANT: existingNATChains may share memory with proxier.iptablesData. + existingNATChains := make(map[utiliptables.Chain][]byte) proxier.iptablesData.Reset() err = proxier.iptables.SaveInto(utiliptables.TableNAT, proxier.iptablesData) if err != nil { // if we failed to get any rules @@ -696,14 +718,14 @@ func (proxier *Proxier) syncProxyRules() { // (which most should have because we created them above). for _, chainName := range []utiliptables.Chain{kubeServicesChain, kubeExternalServicesChain, kubeForwardChain} { if chain, ok := existingFilterChains[chainName]; ok { - writeLine(proxier.filterChains, chain) + writeBytesLine(proxier.filterChains, chain) } else { writeLine(proxier.filterChains, utiliptables.MakeChainLine(chainName)) } } for _, chainName := range []utiliptables.Chain{kubeServicesChain, kubeNodePortsChain, kubePostroutingChain, KubeMarkMasqChain} { if chain, ok := existingNATChains[chainName]; ok { - writeLine(proxier.natChains, chain) + writeBytesLine(proxier.natChains, chain) } else { writeLine(proxier.natChains, utiliptables.MakeChainLine(chainName)) } @@ -747,6 +769,12 @@ func (proxier *Proxier) syncProxyRules() { // is just for efficiency, not correctness. args := make([]string, 64) + // Compute total number of endpoint chains across all services. + proxier.endpointChainsNumber = 0 + for svcName := range proxier.serviceMap { + proxier.endpointChainsNumber += len(proxier.endpointsMap[svcName]) + } + // Build rules for each service. for svcName, svc := range proxier.serviceMap { svcInfo, ok := svc.(*serviceInfo) @@ -763,7 +791,7 @@ func (proxier *Proxier) syncProxyRules() { if hasEndpoints { // Create the per-service chain, retaining counters if possible. if chain, ok := existingNATChains[svcChain]; ok { - writeLine(proxier.natChains, chain) + writeBytesLine(proxier.natChains, chain) } else { writeLine(proxier.natChains, utiliptables.MakeChainLine(svcChain)) } @@ -775,7 +803,7 @@ func (proxier *Proxier) syncProxyRules() { // Only for services request OnlyLocal traffic // create the per-service LB chain, retaining counters if possible. if lbChain, ok := existingNATChains[svcXlbChain]; ok { - writeLine(proxier.natChains, lbChain) + writeBytesLine(proxier.natChains, lbChain) } else { writeLine(proxier.natChains, utiliptables.MakeChainLine(svcXlbChain)) } @@ -891,7 +919,7 @@ func (proxier *Proxier) syncProxyRules() { if ingress.IP != "" { // create service firewall chain if chain, ok := existingNATChains[fwChain]; ok { - writeLine(proxier.natChains, chain) + writeBytesLine(proxier.natChains, chain) } else { writeLine(proxier.natChains, utiliptables.MakeChainLine(fwChain)) } @@ -1067,7 +1095,7 @@ func (proxier *Proxier) syncProxyRules() { // Create the endpoint chain, retaining counters if possible. if chain, ok := existingNATChains[utiliptables.Chain(endpointChain)]; ok { - writeLine(proxier.natChains, chain) + writeBytesLine(proxier.natChains, chain) } else { writeLine(proxier.natChains, utiliptables.MakeChainLine(endpointChain)) } @@ -1077,12 +1105,16 @@ func (proxier *Proxier) syncProxyRules() { // First write session affinity rules, if applicable. if svcInfo.SessionAffinityType == api.ServiceAffinityClientIP { for _, endpointChain := range endpointChains { - writeLine(proxier.natRules, + args = append(args[:0], "-A", string(svcChain), - "-m", "comment", "--comment", svcNameString, + ) + proxier.appendServiceCommentLocked(args, svcNameString) + args = append(args, "-m", "recent", "--name", string(endpointChain), "--rcheck", "--seconds", strconv.Itoa(svcInfo.StickyMaxAgeSeconds), "--reap", - "-j", string(endpointChain)) + "-j", string(endpointChain), + ) + writeLine(proxier.natRules, args...) } } @@ -1095,10 +1127,8 @@ func (proxier *Proxier) syncProxyRules() { continue } // Balancing rules in the per-service chain. - args = append(args[:0], []string{ - "-A", string(svcChain), - "-m", "comment", "--comment", svcNameString, - }...) + args = append(args[:0], "-A", string(svcChain)) + proxier.appendServiceCommentLocked(args, svcNameString) if i < (n - 1) { // Each rule is a probabilistic match. args = append(args, @@ -1111,10 +1141,8 @@ func (proxier *Proxier) syncProxyRules() { writeLine(proxier.natRules, args...) // Rules in the per-endpoint chain. - args = append(args[:0], - "-A", string(endpointChain), - "-m", "comment", "--comment", svcNameString, - ) + args = append(args[:0], "-A", string(endpointChain)) + proxier.appendServiceCommentLocked(args, svcNameString) // Handle traffic that loops back to the originator with SNAT. writeLine(proxier.natRules, append(args, "-s", utilproxy.ToCIDR(net.ParseIP(epIP)), @@ -1215,7 +1243,7 @@ func (proxier *Proxier) syncProxyRules() { // We must (as per iptables) write a chain-line for it, which has // the nice effect of flushing the chain. Then we can remove the // chain. - writeLine(proxier.natChains, existingNATChains[chain]) + writeBytesLine(proxier.natChains, existingNATChains[chain]) writeLine(proxier.natRules, "-X", chainString) } } @@ -1356,6 +1384,11 @@ func writeLine(buf *bytes.Buffer, words ...string) { } } +func writeBytesLine(buf *bytes.Buffer, bytes []byte) { + buf.Write(bytes) + buf.WriteByte('\n') +} + func openLocalPort(lp *utilproxy.LocalPort) (utilproxy.Closeable, error) { // For ports on node IPs, open the actual port and hold it, even though we // use iptables to redirect traffic. diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/ipvs/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/ipvs/BUILD index 2bb1b01d10..625c4293d7 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/ipvs/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/ipvs/BUILD @@ -25,10 +25,10 @@ go_test( "//pkg/util/iptables/testing:go_default_library", "//pkg/util/ipvs:go_default_library", "//pkg/util/ipvs/testing:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//vendor/k8s.io/utils/exec:go_default_library", "//vendor/k8s.io/utils/exec/testing:go_default_library", ], @@ -39,43 +39,10 @@ go_library( srcs = [ "ipset.go", "netlink.go", + "netlink_linux.go", + "netlink_unsupported.go", "proxier.go", - ] + select({ - "@io_bazel_rules_go//go/platform:android": [ - "netlink_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "netlink_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "netlink_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "netlink_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "netlink_linux.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "netlink_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "netlink_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "netlink_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "netlink_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "netlink_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "netlink_unsupported.go", - ], - "//conditions:default": [], - }), + ], importpath = "k8s.io/kubernetes/pkg/proxy/ipvs", deps = [ "//pkg/apis/core:go_default_library", @@ -91,12 +58,12 @@ go_library( "//pkg/util/net:go_default_library", "//pkg/util/sysctl:go_default_library", "//pkg/util/version:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", "//vendor/k8s.io/utils/exec:go_default_library", ] + select({ "@io_bazel_rules_go//go/platform:linux": [ diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/ipvs/OWNERS b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/ipvs/OWNERS index 6cc306c646..bccd989d47 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/ipvs/OWNERS +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/ipvs/OWNERS @@ -2,6 +2,7 @@ reviewers: - thockin - brendandburns - m1093782566 +- Lion-Wei approvers: - thockin - brendandburns diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/ipvs/README.md b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/ipvs/README.md index cd6fc1153b..3860bdaf1f 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/ipvs/README.md +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/ipvs/README.md @@ -30,174 +30,233 @@ and UDP-based services to the real servers, and make services of real servers ap IPVS mode was introduced in Kubernetes v1.8 and goes beta in v1.9. IPTABLES mode was added in v1.1 and become the default operating mode since v1.2. Both IPVS and IPTABLES are based on `netfilter`. Differences between IPVS mode and IPTABLES mode are as follows: -1. IPVS provides better scalability and performance for large clusters. +1. IPVS provides better scalability and performance for large clusters. -2. IPVS supports more sophisticated load balancing algorithms than iptables (least load, least connections, locality, weighted, etc.). +2. IPVS supports more sophisticated load balancing algorithms than iptables (least load, least connections, locality, weighted, etc.). 3. IPVS supports server health checking and connection retries, etc. - + ### When ipvs falls back to iptables -IPVS proxier will employ iptables in doing packet filtering, SNAT and supporting NodePort type service. Specifically, ipvs proxier will fall back on iptables in the following 4 scenarios. +IPVS proxier will employ iptables in doing packet filtering, SNAT or masquerade. +Specifically, ipvs proxier will use ipset to store source or destination address of traffics that need DROP or do masquared, to make sure the number of iptables rules be constant, no metter how many services we have. + + +Here is the table of ipset sets that ipvs proxier used. + +| set name | members | usage | +| :----------------------------- | ---------------------------------------- | ---------------------------------------- | +| KUBE-CLUSTER-IP | All service IP + port | Mark-Masq for cases that `masquerade-all=true` or `clusterCIDR` specified | +| KUBE-LOOP-BACK | All service IP + port + IP | masquerade for solving hairpin purpose | +| KUBE-EXTERNAL-IP | service external IP + port | masquerade for packages to external IPs | +| KUBE-LOAD-BALANCER | load balancer ingress IP + port | masquerade for packages to load balancer type service | +| KUBE-LOAD-BALANCER-LOCAL | LB ingress IP + port with `externalTrafficPolicy=local` | accept packages to load balancer with `externalTrafficPolicy=local` | +| KUBE-LOAD-BALANCER-FW | load balancer ingress IP + port with `loadBalancerSourceRanges` | package filter for load balancer with `loadBalancerSourceRanges` specified | +| KUBE-LOAD-BALANCER-SOURCE-CIDR | load balancer ingress IP + port + source CIDR | package filter for load balancer with `loadBalancerSourceRanges` specified | +| KUBE-NODE-PORT-TCP | nodeport type service TCP port | masquerade for packets to nodePort(TCP) | +| KUBE-NODE-PORT-LOCAL-TCP | nodeport type service TCP port with `externalTrafficPolicy=local` | accept packages to nodeport service with `externalTrafficPolicy=local` | +| KUBE-NODE-PORT-UDP | nodeport type service UDP port | masquerade for packets to nodePort(UDP) | +| KUBE-NODE-PORT-LOCAL-UDP | nodeport type service UDP port with `externalTrafficPolicy=local` | accept packages to nodeport service with `externalTrafficPolicy=local` | + + +IPVS proxier will fall back on iptables in the following scenarios. **1. kube-proxy starts with --masquerade-all=true** -If kube-proxy starts with `--masquerade-all=true`, ipvs proxier will masquerade all traffic accessing service Cluster IP, which behaves the same as what iptables proxier. Suppose there is a service with Cluster IP `10.244.5.1` and port `8080`, then the iptables installed by ipvs proxier should be like what is shown below. +If kube-proxy starts with `--masquerade-all=true`, ipvs proxier will masquerade all traffic accessing service Cluster IP, which behaves the same as what iptables proxier. Suppose kube-proxy have flag `--masquerade-all=true` specified, then the iptables installed by ipvs proxier should be like what is shown below. ```shell # iptables -t nat -nL Chain PREROUTING (policy ACCEPT) -target prot opt source destination +target prot opt source destination KUBE-SERVICES all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes service portals */ Chain OUTPUT (policy ACCEPT) -target prot opt source destination +target prot opt source destination KUBE-SERVICES all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes service portals */ Chain POSTROUTING (policy ACCEPT) -target prot opt source destination +target prot opt source destination KUBE-POSTROUTING all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes postrouting rules */ -Chain KUBE-POSTROUTING (1 references) -target prot opt source destination -MASQUERADE all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes service traffic requiring SNAT */ mark match 0x4000/0x4000 - -Chain KUBE-MARK-DROP (0 references) -target prot opt source destination -MARK all -- 0.0.0.0/0 0.0.0.0/0 MARK or 0x8000 - -Chain KUBE-MARK-MASQ (6 references) -target prot opt source destination +Chain KUBE-MARK-MASQ (2 references) +target prot opt source destination MARK all -- 0.0.0.0/0 0.0.0.0/0 MARK or 0x4000 +Chain KUBE-POSTROUTING (1 references) +target prot opt source destination +MASQUERADE all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes service traffic requiring SNAT */ mark match 0x4000/0x4000 +MASQUERADE all -- 0.0.0.0/0 0.0.0.0/0 match-set KUBE-LOOP-BACK dst,dst,src + Chain KUBE-SERVICES (2 references) -target prot opt source destination -KUBE-MARK-MASQ tcp -- 0.0.0.0/0 10.244.5.1 /* default/foo:http cluster IP */ tcp dpt:8080 +target prot opt source destination +KUBE-MARK-MASQ all -- 0.0.0.0/0 0.0.0.0/0 match-set KUBE-CLUSTER-IP dst,dst +ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 match-set KUBE-CLUSTER-IP dst,dst ``` **2. Specify cluster CIDR in kube-proxy startup** -If kube-proxy starts with `--cluster-cidr=`, ipvs proxier will masquerade off-cluster traffic accessing service Cluster IP, which behaves the same as what iptables proxier. Suppose kube-proxy is provided with the cluster cidr `10.244.16.0/24`, and service Cluster IP is `10.244.5.1` and port is `8080`, then the iptables installed by ipvs proxier should be like what is shown below. +If kube-proxy starts with `--cluster-cidr=`, ipvs proxier will masquerade off-cluster traffic accessing service Cluster IP, which behaves the same as what iptables proxier. Suppose kube-proxy is provided with the cluster cidr `10.244.16.0/24`, then the iptables installed by ipvs proxier should be like what is shown below. ```shell # iptables -t nat -nL Chain PREROUTING (policy ACCEPT) -target prot opt source destination -KUBE-SERVICES all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes service portals */ - -Chain OUTPUT (policy ACCEPT) -target prot opt source destination -KUBE-SERVICES all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes service portals */ - -Chain POSTROUTING (policy ACCEPT) -target prot opt source destination -KUBE-POSTROUTING all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes postrouting rules */ - -Chain KUBE-POSTROUTING (1 references) -target prot opt source destination -MASQUERADE all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes service traffic requiring SNAT */ mark match 0x4000/0x4000 - -Chain KUBE-MARK-DROP (0 references) -target prot opt source destination -MARK all -- 0.0.0.0/0 0.0.0.0/0 MARK or 0x8000 - -Chain KUBE-MARK-MASQ (6 references) -target prot opt source destination -MARK all -- 0.0.0.0/0 0.0.0.0/0 MARK or 0x4000 - -Chain KUBE-SERVICES (2 references) -target prot opt source destination -KUBE-MARK-MASQ tcp -- !10.244.16.0/24 10.244.5.1 /* default/foo:http cluster IP */ tcp dpt:8080 -``` - -**3. Load Balancer Source Ranges is specified for LB type service** - -When service's `LoadBalancerStatus.ingress.IP` is not empty and service's `LoadBalancerSourceRanges` is specified, ipvs proxier will install iptables which looks like what is shown below. - -Suppose service's `LoadBalancerStatus.ingress.IP` is `10.96.1.2` and service's `LoadBalancerSourceRanges` is `10.120.2.0/24`. - -```shell -# iptables -t nat -nL - -Chain PREROUTING (policy ACCEPT) -target prot opt source destination -KUBE-SERVICES all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes service portals */ - -Chain OUTPUT (policy ACCEPT) -target prot opt source destination -KUBE-SERVICES all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes service portals */ - -Chain POSTROUTING (policy ACCEPT) -target prot opt source destination -KUBE-POSTROUTING all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes postrouting rules */ - -Chain KUBE-POSTROUTING (1 references) -target prot opt source destination -MASQUERADE all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes service traffic requiring SNAT */ mark match 0x4000/0x4000 - -Chain KUBE-MARK-DROP (0 references) -target prot opt source destination -MARK all -- 0.0.0.0/0 0.0.0.0/0 MARK or 0x8000 - -Chain KUBE-MARK-MASQ (6 references) -target prot opt source destination -MARK all -- 0.0.0.0/0 0.0.0.0/0 MARK or 0x4000 - -Chain KUBE-SERVICES (2 references) -target prot opt source destination -ACCEPT tcp -- 10.120.2.0/24 10.96.1.2 /* default/foo:http loadbalancer IP */ tcp dpt:8080 -DROP tcp -- 0.0.0.0/0 10.96.1.2 /* default/foo:http loadbalancer IP */ tcp dpt:8080 -``` - -**4. Support NodePort type service** - -For supporting NodePort type service, ipvs will recruit the existing implementation in iptables proxier. For example, - -```shell -# kubectl describe svc nginx-service -Name: nginx-service -... -Type: NodePort -IP: 10.101.28.148 -Port: http 3080/TCP -NodePort: http 31604/TCP -Endpoints: 172.17.0.2:80 -Session Affinity: None - -# iptables -t nat -nL - -[root@100-106-179-225 ~]# iptables -t nat -nL -Chain PREROUTING (policy ACCEPT) -target prot opt source destination -KUBE-SERVICES all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes service portals */ - -Chain OUTPUT (policy ACCEPT) -target prot opt source destination -KUBE-SERVICES all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes service portals */ - -Chain KUBE-SERVICES (2 references) -target prot opt source destination -KUBE-MARK-MASQ tcp -- !172.16.0.0/16 10.101.28.148 /* default/nginx-service:http cluster IP */ tcp dpt:3080 -KUBE-SVC-6IM33IEVEEV7U3GP tcp -- 0.0.0.0/0 10.101.28.148 /* default/nginx-service:http cluster IP */ tcp dpt:3080 -KUBE-NODEPORTS all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes service nodeports; NOTE: this must be the last rule in this chain */ ADDRTYPE match dst-type LOCAL - -Chain KUBE-NODEPORTS (1 references) -target prot opt source destination -KUBE-MARK-MASQ tcp -- 0.0.0.0/0 0.0.0.0/0 /* default/nginx-service:http */ tcp dpt:31604 -KUBE-SVC-6IM33IEVEEV7U3GP tcp -- 0.0.0.0/0 0.0.0.0/0 /* default/nginx-service:http */ tcp dpt:31604 - -Chain KUBE-SVC-6IM33IEVEEV7U3GP (2 references) target prot opt source destination -KUBE-SEP-Q3UCPZ54E6Q2R4UT all -- 0.0.0.0/0 0.0.0.0/0 /* default/nginx-service:http */ -Chain KUBE-SEP-Q3UCPZ54E6Q2R4UT (1 references) -target prot opt source destination -KUBE-MARK-MASQ all -- 172.17.0.2 0.0.0.0/0 /* default/nginx-service:http */ -DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 /* default/nginx-service:http */ tcp to:172.17.0.2:80 +KUBE-SERVICES all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes service portals */ + +Chain OUTPUT (policy ACCEPT) +target prot opt source destination +KUBE-SERVICES all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes service portals */ + +Chain POSTROUTING (policy ACCEPT) +target prot opt source destination +KUBE-POSTROUTING all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes postrouting rules */ + +Chain KUBE-MARK-MASQ (3 references) +target prot opt source destination +MARK all -- 0.0.0.0/0 0.0.0.0/0 MARK or 0x4000 + +Chain KUBE-POSTROUTING (1 references) +target prot opt source destination +MASQUERADE all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes service traffic requiring SNAT */ mark match 0x4000/0x4000 +MASQUERADE all -- 0.0.0.0/0 0.0.0.0/0 match-set KUBE-LOOP-BACK dst,dst,src + +Chain KUBE-SERVICES (2 references) +target prot opt source destination +KUBE-MARK-MASQ all -- !10.244.16.0/24 0.0.0.0/0 match-set KUBE-CLUSTER-IP dst,dst +ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 match-set KUBE-CLUSTER-IP dst,dst ``` + +**3. Load Balancer type service** + +For loadBalancer type service, ipvs proxier will install iptables with match of ipset `KUBE-LOAD-BALANCER`. +Specially when service's `LoadBalancerSourceRanges` is specified or specified `externalTrafficPolicy=local`, +ipvs proxier will create ipset sets `KUBE-LOAD-BALANCER-LOCAL`/`KUBE-LOAD-BALANCER-FW`/`KUBE-LOAD-BALANCER-SOURCE-CIDR` +and install iptables accordingly, which should looks like what is shown below. + +```shell +# iptables -t nat -nL + +Chain PREROUTING (policy ACCEPT) +target prot opt source destination +KUBE-SERVICES all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes service portals */ + +Chain OUTPUT (policy ACCEPT) +target prot opt source destination +KUBE-SERVICES all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes service portals */ + +Chain POSTROUTING (policy ACCEPT) +target prot opt source destination +KUBE-POSTROUTING all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes postrouting rules */ + +Chain KUBE-FIREWALL (1 references) +target prot opt source destination +RETURN all -- 0.0.0.0/0 0.0.0.0/0 match-set KUBE-LOAD-BALANCER-SOURCE-CIDR dst,dst,src +KUBE-MARK-DROP all -- 0.0.0.0/0 0.0.0.0/0 + +Chain KUBE-LOAD-BALANCER (1 references) +target prot opt source destination +KUBE-FIREWALL all -- 0.0.0.0/0 0.0.0.0/0 match-set KUBE-LOAD-BALANCER-FW dst,dst +RETURN all -- 0.0.0.0/0 0.0.0.0/0 match-set KUBE-LOAD-BALANCER-LOCAL dst,dst +KUBE-MARK-MASQ all -- 0.0.0.0/0 0.0.0.0/0 + +Chain KUBE-MARK-DROP (1 references) +target prot opt source destination +MARK all -- 0.0.0.0/0 0.0.0.0/0 MARK or 0x8000 + +Chain KUBE-MARK-MASQ (2 references) +target prot opt source destination +MARK all -- 0.0.0.0/0 0.0.0.0/0 MARK or 0x4000 + +Chain KUBE-POSTROUTING (1 references) +target prot opt source destination +MASQUERADE all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes service traffic requiring SNAT */ mark match 0x4000/0x4000 +MASQUERADE all -- 0.0.0.0/0 0.0.0.0/0 match-set KUBE-LOOP-BACK dst,dst,src + +Chain KUBE-SERVICES (2 references) +target prot opt source destination +KUBE-LOAD-BALANCER all -- 0.0.0.0/0 0.0.0.0/0 match-set KUBE-LOAD-BALANCER dst,dst +ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 match-set KUBE-LOAD-BALANCER dst,dst +``` + +**4. NodePort type service** + +For NodePort type service, ipvs proxier will install iptables with match of ipset `KUBE-NODE-PORT-TCP/KUBE-NODE-PORT-UDP`. +When specified `externalTrafficPolicy=local`,ipvs proxier will create ipset sets `KUBE-NODE-PORT-LOCAL-TC/KUBE-NODE-PORT-LOCAL-UDP` +and install iptables accordingly, which should looks like what is shown below. + +Suppose service with TCP type nodePort. + +```shell +Chain PREROUTING (policy ACCEPT) +target prot opt source destination +KUBE-SERVICES all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes service portals */ + +Chain OUTPUT (policy ACCEPT) +target prot opt source destination +KUBE-SERVICES all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes service portals */ + +Chain POSTROUTING (policy ACCEPT) +target prot opt source destination +KUBE-POSTROUTING all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes postrouting rules */ + +Chain KUBE-MARK-MASQ (2 references) +target prot opt source destination +MARK all -- 0.0.0.0/0 0.0.0.0/0 MARK or 0x4000 + +Chain KUBE-NODE-PORT (1 references) +target prot opt source destination +RETURN all -- 0.0.0.0/0 0.0.0.0/0 match-set KUBE-NODE-PORT-LOCAL-TCP dst +KUBE-MARK-MASQ all -- 0.0.0.0/0 0.0.0.0/0 + +Chain KUBE-POSTROUTING (1 references) +target prot opt source destination +MASQUERADE all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes service traffic requiring SNAT */ mark match 0x4000/0x4000 +MASQUERADE all -- 0.0.0.0/0 0.0.0.0/0 match-set KUBE-LOOP-BACK dst,dst,src + +Chain KUBE-SERVICES (2 references) +target prot opt source destination +KUBE-NODE-PORT all -- 0.0.0.0/0 0.0.0.0/0 match-set KUBE-NODE-PORT-TCP dst +``` + +**5. Service with externalIPs specified** + +For service with `externalIPs` specified, ipvs proxier will install iptables with match of ipset `KUBE-EXTERNAL-IP`, +Suppose we have service with `externalIPs` specified, iptables rules should looks like what is shown below. + +```shell +Chain PREROUTING (policy ACCEPT) +target prot opt source destination +KUBE-SERVICES all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes service portals */ + +Chain OUTPUT (policy ACCEPT) +target prot opt source destination +KUBE-SERVICES all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes service portals */ + +Chain POSTROUTING (policy ACCEPT) +target prot opt source destination +KUBE-POSTROUTING all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes postrouting rules */ + +Chain KUBE-MARK-MASQ (2 references) +target prot opt source destination +MARK all -- 0.0.0.0/0 0.0.0.0/0 MARK or 0x4000 + +Chain KUBE-POSTROUTING (1 references) +target prot opt source destination +MASQUERADE all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes service traffic requiring SNAT */ mark match 0x4000/0x4000 +MASQUERADE all -- 0.0.0.0/0 0.0.0.0/0 match-set KUBE-LOOP-BACK dst,dst,src + +Chain KUBE-SERVICES (2 references) +target prot opt source destination +KUBE-MARK-MASQ all -- 0.0.0.0/0 0.0.0.0/0 match-set KUBE-EXTERNAL-IP dst,dst +ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 match-set KUBE-EXTERNAL-IP dst,dst PHYSDEV match ! --physdev-is-in ADDRTYPE match src-type !LOCAL +ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 match-set KUBE-EXTERNAL-IP dst,dst ADDRTYPE match dst-type LOCAL +``` + ## Run kube-proxy in ipvs mode -Currently, local-up scripts, GCE scripts and kubeadm support switching IPVS proxy mode via exporting environment variables or specifying flags. +Currently, local-up scripts, GCE scripts and kubeadm support switching IPVS proxy mode via exporting environment variables or specifying flags. ### Prerequisite Ensure IPVS required kernel modules @@ -248,13 +307,13 @@ lsmod | grep -e ipvs -e nf_conntrack_ipv4 cut -f1 -d " " /proc/modules | grep -e ip_vs -e nf_conntrack_ipv4 ``` -Packages such as `ipset` should also be installed on the node before using IPVS mode. +Packages such as `ipset` should also be installed on the node before using IPVS mode. Kube-proxy will fall back to IPTABLES mode if those requirements are not met. ### Local UP Cluster -Kube-proxy will run in iptables mode by default in a [local-up cluster](https://github.com/kubernetes/community/blob/master/contributors/devel/running-locally.md). +Kube-proxy will run in iptables mode by default in a [local-up cluster](https://github.com/kubernetes/community/blob/master/contributors/devel/running-locally.md). To use IPVS mode, users should export the env `KUBE_PROXY_MODE=ipvs` to specify the ipvs mode before [starting the cluster](https://github.com/kubernetes/community/blob/master/contributors/devel/running-locally.md#starting-the-cluster): ```shell @@ -275,7 +334,7 @@ export KUBE_PROXY_MODE=ipvs ### Cluster Created by Kubeadm -Kube-proxy will run in iptables mode by default in a cluster deployed by [kubeadm](https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/). +Kube-proxy will run in iptables mode by default in a cluster deployed by [kubeadm](https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/). If you are using kubeadm with a [configuration file](https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-init/#config-file), you can specify the ipvs mode adding `SupportIPVSProxyMode: true` below the `kubeProxy` field. @@ -285,7 +344,6 @@ apiVersion: kubeadm.k8s.io/v1alpha1 ... kubeProxy: config: - featureGates: SupportIPVSProxyMode=true mode: ipvs ... ``` @@ -301,7 +359,7 @@ kubeadm init --feature-gates=SupportIPVSProxyMode=true to specify the ipvs mode before deploying the cluster. -**Notes** +**Notes** If ipvs mode is successfully on, you should see ipvs proxy rules (use `ipvsadm`) like ```shell # ipvsadm -ln @@ -316,7 +374,7 @@ or similar logs occur in kube-proxy logs (for example, `/tmp/kube-proxy.log` for Using ipvs Proxier. ``` -While there is no ipvs proxy rules or the following logs ocuurs indicate that the kube-proxy fails to use ipvs mode: +While there is no ipvs proxy rules or the following logs ocuurs indicate that the kube-proxy fails to use ipvs mode: ``` Can't use ipvs proxier, trying iptables proxier Using iptables Proxier. @@ -352,7 +410,7 @@ UDP 10.0.0.10:53 rr ### Why kube-proxy can't start IPVS mode -Use the following check list to help you solve the problems: +Use the following check list to help you solve the problems: **1. Enable IPVS feature gateway** diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/ipvs/netlink.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/ipvs/netlink.go index 45551da36a..13be913f41 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/ipvs/netlink.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/ipvs/netlink.go @@ -30,6 +30,8 @@ type NetLinkHandle interface { EnsureDummyDevice(devName string) (exist bool, err error) // DeleteDummyDevice deletes the given dummy device by name. DeleteDummyDevice(devName string) error + // ListBindAddress will list all IP addresses which are bound in a given interface + ListBindAddress(devName string) ([]string, error) // GetLocalAddresses returns all unique local type IP addresses based on filter device interface. If filter device is not given, // it will list all unique local type addresses. GetLocalAddresses(filterDev string) (sets.String, error) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/ipvs/netlink_linux.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/ipvs/netlink_linux.go index 8277ace35e..1a47057952 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/ipvs/netlink_linux.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/ipvs/netlink_linux.go @@ -105,6 +105,23 @@ func (h *netlinkHandle) DeleteDummyDevice(devName string) error { return h.LinkDel(dummy) } +// ListBindAddress will list all IP addresses which are bound in a given interface +func (h *netlinkHandle) ListBindAddress(devName string) ([]string, error) { + dev, err := h.LinkByName(devName) + if err != nil { + return nil, fmt.Errorf("error get interface: %s, err: %v", devName, err) + } + addrs, err := h.AddrList(dev, 0) + if err != nil { + return nil, fmt.Errorf("error list bound address of interface: %s, err: %v", devName, err) + } + ips := make([]string, 0) + for _, addr := range addrs { + ips = append(ips, addr.IP.String()) + } + return ips, nil +} + // GetLocalAddresses lists all LOCAL type IP addresses from host based on filter device. // If filter device is not specified, it's equivalent to exec: // $ ip route show table local type local proto kernel diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/ipvs/netlink_unsupported.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/ipvs/netlink_unsupported.go index b70550387a..27d5f4e91d 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/ipvs/netlink_unsupported.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/ipvs/netlink_unsupported.go @@ -52,6 +52,11 @@ func (h *emptyHandle) DeleteDummyDevice(devName string) error { return fmt.Errorf("netlink is not supported in this platform") } +// ListBindAddress is part of interface. +func (h *emptyHandle) ListBindAddress(devName string) ([]string, error) { + return nil, fmt.Errorf("netlink is not supported in this platform") +} + // GetLocalAddresses is part of interface. func (h *emptyHandle) GetLocalAddresses(filterDev string) (sets.String, error) { return nil, fmt.Errorf("netlink is not supported in this platform") diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/ipvs/proxier.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/ipvs/proxier.go index caf802133f..a0012c73bc 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/ipvs/proxier.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/ipvs/proxier.go @@ -136,19 +136,22 @@ var ipsetInfo = []struct { // example: iptables -t nat -A KUBE-SERVICES -m set --match-set KUBE-NODE-PORT-TCP dst -j KUBE-NODE-PORT // ipsets with other match rules will be created Individually. var ipsetWithIptablesChain = []struct { - name string - from string - to string - matchType string + name string + from string + to string + matchType string + protocolMatch string }{ - {kubeLoopBackIPSet, string(kubePostroutingChain), "MASQUERADE", "dst,dst,src"}, - {kubeLoadBalancerSet, string(kubeServicesChain), string(KubeLoadBalancerChain), "dst,dst"}, - {kubeLoadbalancerFWSet, string(KubeLoadBalancerChain), string(KubeFireWallChain), "dst,dst"}, - {kubeLoadBalancerSourceCIDRSet, string(KubeFireWallChain), "RETURN", "dst,dst,src"}, - {kubeLoadBalancerSourceIPSet, string(KubeFireWallChain), "RETURN", "dst,dst,src"}, - {kubeLoadBalancerLocalSet, string(KubeLoadBalancerChain), "RETURN", "dst,dst"}, - {kubeNodePortSetTCP, string(kubeServicesChain), string(KubeNodePortChain), "dst"}, - {kubeNodePortLocalSetTCP, string(KubeNodePortChain), "RETURN", "dst"}, + {kubeLoopBackIPSet, string(kubePostroutingChain), "MASQUERADE", "dst,dst,src", ""}, + {kubeLoadBalancerSet, string(kubeServicesChain), string(KubeLoadBalancerChain), "dst,dst", ""}, + {kubeLoadbalancerFWSet, string(KubeLoadBalancerChain), string(KubeFireWallChain), "dst,dst", ""}, + {kubeLoadBalancerSourceCIDRSet, string(KubeFireWallChain), "RETURN", "dst,dst,src", ""}, + {kubeLoadBalancerSourceIPSet, string(KubeFireWallChain), "RETURN", "dst,dst,src", ""}, + {kubeLoadBalancerLocalSet, string(KubeLoadBalancerChain), "RETURN", "dst,dst", ""}, + {kubeNodePortSetTCP, string(kubeServicesChain), string(KubeNodePortChain), "dst", "tcp"}, + {kubeNodePortLocalSetTCP, string(KubeNodePortChain), "RETURN", "dst", "tcp"}, + {kubeNodePortSetUDP, string(kubeServicesChain), string(KubeNodePortChain), "dst", "udp"}, + {kubeNodePortLocalSetUDP, string(KubeNodePortChain), "RETURN", "dst", "udp"}, } var ipvsModules = []string{ @@ -548,9 +551,6 @@ func cleanupIptablesLeftovers(ipt utiliptables.Interface) (encounteredError bool // CleanupLeftovers clean up all ipvs and iptables rules created by ipvs Proxier. func CleanupLeftovers(ipvs utilipvs.Interface, ipt utiliptables.Interface, ipset utilipset.Interface, cleanupIPVS bool) (encounteredError bool) { - if canUse, _ := CanUseIPVSProxier(NewLinuxKernelHandler(), ipset); !canUse { - return false - } if cleanupIPVS { // Return immediately when ipvs interface is nil - Probably initialization failed in somewhere. if ipvs == nil { @@ -578,7 +578,7 @@ func CleanupLeftovers(ipvs utilipvs.Interface, ipt utiliptables.Interface, ipset err = ipset.DestroySet(set.name) if err != nil { if !utilipset.IsNotFoundError(err) { - glog.Errorf("Error removing ipset %s, error: %v", set, err) + glog.Errorf("Error removing ipset %s, error: %v", set.name, err) encounteredError = true } } @@ -739,6 +739,8 @@ func (proxier *Proxier) syncProxyRules() { activeIPVSServices := map[string]bool{} // currentIPVSServices represent IPVS services listed from the system currentIPVSServices := make(map[string]*utilipvs.VirtualServer) + // activeBindAddrs represents ip address successfully bind to DefaultDummyDevice in this round of sync + activeBindAddrs := map[string]bool{} // Build IPVS rules for each service. for svcName, svc := range proxier.serviceMap { @@ -789,14 +791,11 @@ func (proxier *Proxier) syncProxyRules() { } // add service Cluster IP:Port to kubeServiceAccess ip set for the purpose of solving hairpin. // proxier.kubeServiceAccessSet.activeEntries.Insert(entry.String()) - // Install masquerade rules if 'masqueradeAll' or 'clusterCIDR' is specified. - if proxier.masqueradeAll || len(proxier.clusterCIDR) > 0 { - if valid := proxier.ipsetList[kubeClusterIPSet].validateEntry(entry); !valid { - glog.Errorf("%s", fmt.Sprintf(EntryInvalidErr, entry, proxier.ipsetList[kubeClusterIPSet].Name)) - continue - } - proxier.ipsetList[kubeClusterIPSet].activeEntries.Insert(entry.String()) + if valid := proxier.ipsetList[kubeClusterIPSet].validateEntry(entry); !valid { + glog.Errorf("%s", fmt.Sprintf(EntryInvalidErr, entry, proxier.ipsetList[kubeClusterIPSet].Name)) + continue } + proxier.ipsetList[kubeClusterIPSet].activeEntries.Insert(entry.String()) // ipvs call serv := &utilipvs.VirtualServer{ Address: svcInfo.ClusterIP, @@ -812,6 +811,7 @@ func (proxier *Proxier) syncProxyRules() { // We need to bind ClusterIP to dummy interface, so set `bindAddr` parameter to `true` in syncService() if err := proxier.syncService(svcNameString, serv, true); err == nil { activeIPVSServices[serv.String()] = true + activeBindAddrs[serv.Address.String()] = true // ExternalTrafficPolicy only works for NodePort and external LB traffic, does not affect ClusterIP // So we still need clusterIP rules in onlyNodeLocalEndpoints mode. if err := proxier.syncEndpoint(svcName, false, serv); err != nil { @@ -881,6 +881,7 @@ func (proxier *Proxier) syncProxyRules() { } if err := proxier.syncService(svcNameString, serv, true); err == nil { activeIPVSServices[serv.String()] = true + activeBindAddrs[serv.Address.String()] = true if err := proxier.syncEndpoint(svcName, false, serv); err != nil { glog.Errorf("Failed to sync endpoint for service: %v, err: %v", serv, err) } @@ -983,6 +984,7 @@ func (proxier *Proxier) syncProxyRules() { // check if service need skip endpoints that not in same host as kube-proxy onlyLocal := svcInfo.SessionAffinityType == api.ServiceAffinityClientIP && svcInfo.OnlyNodeLocalEndpoints activeIPVSServices[serv.String()] = true + activeBindAddrs[serv.Address.String()] = true if err := proxier.syncEndpoint(svcName, onlyLocal, serv); err != nil { glog.Errorf("Failed to sync endpoint for service: %v, err: %v", serv, err) } @@ -1111,7 +1113,7 @@ func (proxier *Proxier) syncProxyRules() { // There is no need to bind Node IP to dummy interface, so set parameter `bindAddr` to `false`. if err := proxier.syncService(svcNameString, serv, false); err == nil { activeIPVSServices[serv.String()] = true - if err := proxier.syncEndpoint(svcName, false, serv); err != nil { + if err := proxier.syncEndpoint(svcName, svcInfo.OnlyNodeLocalEndpoints, serv); err != nil { glog.Errorf("Failed to sync endpoint for service: %v, err: %v", serv, err) } } else { @@ -1164,6 +1166,14 @@ func (proxier *Proxier) syncProxyRules() { } proxier.cleanLegacyService(activeIPVSServices, currentIPVSServices) + // Clean up legacy bind address + // currentBindAddrs represents ip addresses bind to DefaultDummyDevice from the system + currentBindAddrs, err := proxier.netlinkHandle.ListBindAddress(DefaultDummyDevice) + if err != nil { + glog.Errorf("Failed to get bind address, err: %v", err) + } + proxier.cleanLegacyBindAddr(activeBindAddrs, currentBindAddrs) + // Update healthz timestamp if proxier.healthzServer != nil { proxier.healthzServer.UpdateTimestamp() @@ -1207,8 +1217,11 @@ func (proxier *Proxier) writeIptablesRules() { for _, set := range ipsetWithIptablesChain { if _, find := proxier.ipsetList[set.name]; find && !proxier.ipsetList[set.name].isEmpty() { - args = append(args[:0], - "-A", set.from, + args = append(args[:0], "-A", set.from) + if set.protocolMatch != "" { + args = append(args, "-p", set.protocolMatch) + } + args = append(args, "-m", "comment", "--comment", proxier.ipsetList[set.name].getComment(), "-m", "set", "--match-set", set.name, set.matchType, @@ -1267,34 +1280,6 @@ func (proxier *Proxier) writeIptablesRules() { writeLine(proxier.natRules, append(dstLocalOnlyArgs, "-j", "ACCEPT")...) } - if !proxier.ipsetList[kubeNodePortSetUDP].isEmpty() { - // accept for nodeports w/ externaltrafficpolicy=local - args = append(args[:0], - "-A", string(kubeServicesChain), - "-m", "udp", "-p", "udp", - "-m", "comment", "--comment", proxier.ipsetList[kubeNodePortSetUDP].getComment(), - "-m", "set", "--match-set", kubeNodePortSetUDP, - "dst", - ) - writeLine(proxier.natRules, append(args, "-j", string(KubeNodePortChain))...) - if !proxier.ipsetList[kubeNodePortLocalSetUDP].isEmpty() { - args = append(args[:0], - "-A", string(KubeNodePortChain), - "-m", "comment", "--comment", proxier.ipsetList[kubeNodePortLocalSetUDP].getComment(), - "-m", "set", "--match-set", kubeNodePortLocalSetUDP, - "dst", - ) - writeLine(proxier.natRules, append(args, "-j", "ACCEPT")...) - } - // mark masq for others - args = append(args[:0], - "-A", string(KubeNodePortChain), - "-m", "comment", "--comment", - fmt.Sprintf(`"mark MASQ for externaltrafficpolicy=cluster"`), - ) - writeLine(proxier.natRules, append(args, "-j", string(KubeMarkMasqChain))...) - } - // mark masq for KUBE-NODE-PORT writeLine(proxier.natRules, []string{ "-A", string(KubeNodePortChain), @@ -1379,8 +1364,11 @@ func (proxier *Proxier) acceptIPVSTraffic() { // createAndLinkeKubeChain create all kube chains that ipvs proxier need and write basic link. func (proxier *Proxier) createAndLinkeKubeChain() { - existingFilterChains := proxier.getExistingChains(utiliptables.TableFilter) - existingNATChains := proxier.getExistingChains(utiliptables.TableNAT) + // TODO: Filter table is small so we're not reusing this buffer over rounds. + // However, to optimize it further, we should do that. + filterBuffer := bytes.NewBuffer(nil) + existingFilterChains := proxier.getExistingChains(filterBuffer, utiliptables.TableFilter) + existingNATChains := proxier.getExistingChains(proxier.iptablesData, utiliptables.TableNAT) // Make sure we keep stats for the top-level chains for _, ch := range iptablesChains { @@ -1390,13 +1378,13 @@ func (proxier *Proxier) createAndLinkeKubeChain() { } if ch.table == utiliptables.TableNAT { if chain, ok := existingNATChains[ch.chain]; ok { - writeLine(proxier.natChains, chain) + writeBytesLine(proxier.natChains, chain) } else { writeLine(proxier.natChains, utiliptables.MakeChainLine(kubePostroutingChain)) } } else { if chain, ok := existingFilterChains[KubeForwardChain]; ok { - writeLine(proxier.filterChains, chain) + writeBytesLine(proxier.filterChains, chain) } else { writeLine(proxier.filterChains, utiliptables.MakeChainLine(KubeForwardChain)) } @@ -1431,13 +1419,14 @@ func (proxier *Proxier) createAndLinkeKubeChain() { // getExistingChains get iptables-save output so we can check for existing chains and rules. // This will be a map of chain name to chain with rules as stored in iptables-save/iptables-restore -func (proxier *Proxier) getExistingChains(table utiliptables.Table) map[utiliptables.Chain]string { - proxier.iptablesData.Reset() - err := proxier.iptables.SaveInto(table, proxier.iptablesData) +// Result may SHARE memory with contents of buffer. +func (proxier *Proxier) getExistingChains(buffer *bytes.Buffer, table utiliptables.Table) map[utiliptables.Chain][]byte { + buffer.Reset() + err := proxier.iptables.SaveInto(table, buffer) if err != nil { // if we failed to get any rules glog.Errorf("Failed to execute iptables-save, syncing all rules: %v", err) } else { // otherwise parse the output - return utiliptables.GetChainLines(table, proxier.iptablesData.Bytes()) + return utiliptables.GetChainLines(table, buffer.Bytes()) } return nil } @@ -1481,6 +1470,7 @@ func (proxier *Proxier) syncService(svcName string, vs *utilipvs.VirtualServer, // bind service address to dummy interface even if service not changed, // in case that service IP was removed by other processes if bindAddr { + glog.V(4).Infof("Bind addr %s", vs.Address.String()) _, err := proxier.netlinkHandle.EnsureAddressBind(vs.Address.String(), DefaultDummyDevice) if err != nil { glog.Errorf("Failed to bind service address to dummy device %q: %v", svcName, err) @@ -1571,7 +1561,6 @@ func (proxier *Proxier) syncEndpoint(svcPortName proxy.ServicePortName, onlyNode } func (proxier *Proxier) cleanLegacyService(activeServices map[string]bool, currentServices map[string]*utilipvs.VirtualServer) { - unbindIPAddr := sets.NewString() for cs := range currentServices { svc := currentServices[cs] if _, ok := activeServices[cs]; !ok { @@ -1590,16 +1579,21 @@ func (proxier *Proxier) cleanLegacyService(activeServices map[string]bool, curre if err := proxier.ipvs.DeleteVirtualServer(svc); err != nil { glog.Errorf("Failed to delete service, error: %v", err) } - unbindIPAddr.Insert(svc.Address.String()) } } } +} - for _, addr := range unbindIPAddr.UnsortedList() { - err := proxier.netlinkHandle.UnbindAddress(addr, DefaultDummyDevice) - // Ignore no such address error when try to unbind address - if err != nil { - glog.Errorf("Failed to unbind service addr %s from dummy interface %s: %v", addr, DefaultDummyDevice, err) +func (proxier *Proxier) cleanLegacyBindAddr(activeBindAddrs map[string]bool, currentBindAddrs []string) { + for _, addr := range currentBindAddrs { + if _, ok := activeBindAddrs[addr]; !ok { + // This address was not processed in the latest sync loop + glog.V(4).Infof("Unbind addr %s", addr) + err := proxier.netlinkHandle.UnbindAddress(addr, DefaultDummyDevice) + // Ignore no such address error when try to unbind address + if err != nil { + glog.Errorf("Failed to unbind service addr %s from dummy interface %s: %v", addr, DefaultDummyDevice, err) + } } } } @@ -1617,6 +1611,11 @@ func writeLine(buf *bytes.Buffer, words ...string) { } } +func writeBytesLine(buf *bytes.Buffer, bytes []byte) { + buf.Write(bytes) + buf.WriteByte('\n') +} + // listenPortOpener opens ports by calling bind() and listen(). type listenPortOpener struct{} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/userspace/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/userspace/BUILD index 95051c60a9..e3323a4f33 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/userspace/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/userspace/BUILD @@ -13,43 +13,10 @@ go_library( "port_allocator.go", "proxier.go", "proxysocket.go", + "rlimit.go", + "rlimit_windows.go", "roundrobin.go", - ] + select({ - "@io_bazel_rules_go//go/platform:android": [ - "rlimit.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "rlimit.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "rlimit.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "rlimit.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "rlimit.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "rlimit.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "rlimit.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "rlimit.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "rlimit.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "rlimit.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "rlimit_windows.go", - ], - "//conditions:default": [], - }), + ], importpath = "k8s.io/kubernetes/pkg/proxy/userspace", deps = [ "//pkg/apis/core:go_default_library", @@ -59,14 +26,14 @@ go_library( "//pkg/util/conntrack:go_default_library", "//pkg/util/iptables:go_default_library", "//pkg/util/slice:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", "//vendor/k8s.io/utils/exec:go_default_library", ] + select({ "@io_bazel_rules_go//go/platform:android": [ @@ -115,10 +82,10 @@ go_test( "//pkg/apis/core:go_default_library", "//pkg/proxy:go_default_library", "//pkg/util/iptables/testing:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", "//vendor/k8s.io/utils/exec:go_default_library", "//vendor/k8s.io/utils/exec/testing:go_default_library", ], diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/util/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/util/BUILD index 91e24087a4..a468871b10 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/util/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/util/BUILD @@ -14,11 +14,11 @@ go_library( "//pkg/apis/core:go_default_library", "//pkg/apis/core/helper:go_default_library", "//pkg/util/net:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", ], ) @@ -33,9 +33,9 @@ go_test( deps = [ "//pkg/apis/core:go_default_library", "//pkg/proxy/util/testing:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/winkernel/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/winkernel/BUILD index 30d4bb6f99..f71c6626d1 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/winkernel/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/winkernel/BUILD @@ -4,12 +4,8 @@ go_library( name = "go_default_library", srcs = [ "metrics.go", - ] + select({ - "@io_bazel_rules_go//go/platform:windows": [ - "proxier.go", - ], - "//conditions:default": [], - }), + "proxier.go", + ], importpath = "k8s.io/kubernetes/pkg/proxy/winkernel", visibility = ["//visibility:public"], deps = [ @@ -22,13 +18,13 @@ go_library( "//pkg/proxy:go_default_library", "//pkg/proxy/healthcheck:go_default_library", "//pkg/util/async:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", "//vendor/github.com/Microsoft/hcsshim:go_default_library", "//vendor/github.com/davecgh/go-spew/spew:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", ], "//conditions:default": [], }), diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/winuserspace/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/winuserspace/BUILD index c680a3ead2..112c0c9b81 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/winuserspace/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/winuserspace/BUILD @@ -23,11 +23,11 @@ go_library( "//pkg/util/ipconfig:go_default_library", "//pkg/util/netsh:go_default_library", "//pkg/util/slice:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/miekg/dns:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", "//vendor/k8s.io/utils/exec:go_default_library", ], ) @@ -43,9 +43,9 @@ go_test( "//pkg/apis/core:go_default_library", "//pkg/proxy:go_default_library", "//pkg/util/netsh/testing:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/quota/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/quota/BUILD index dc2584b683..1fb0643499 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/quota/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/quota/BUILD @@ -15,13 +15,13 @@ go_library( importpath = "k8s.io/kubernetes/pkg/quota", deps = [ "//pkg/apis/core:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apiserver/pkg/admission:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/admission:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", ], ) @@ -31,7 +31,7 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/apis/core:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/quota/resources.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/quota/resources.go index f77d2d7428..b261aedef5 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/quota/resources.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/quota/resources.go @@ -27,6 +27,10 @@ import ( // Equals returns true if the two lists are equivalent func Equals(a api.ResourceList, b api.ResourceList) bool { + if len(a) != len(b) { + return false + } + for key, value1 := range a { value2, found := b[key] if !found { @@ -36,20 +40,16 @@ func Equals(a api.ResourceList, b api.ResourceList) bool { return false } } - for key, value1 := range b { - value2, found := a[key] - if !found { - return false - } - if value1.Cmp(value2) != 0 { - return false - } - } + return true } // V1Equals returns true if the two lists are equivalent func V1Equals(a v1.ResourceList, b v1.ResourceList) bool { + if len(a) != len(b) { + return false + } + for key, value1 := range a { value2, found := b[key] if !found { @@ -59,15 +59,7 @@ func V1Equals(a v1.ResourceList, b v1.ResourceList) bool { return false } } - for key, value1 := range b { - value2, found := a[key] - if !found { - return false - } - if value1.Cmp(value2) != 0 { - return false - } - } + return true } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/registry/rbac/validation/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/registry/rbac/validation/BUILD index 152ae0387e..ad66407545 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/registry/rbac/validation/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/registry/rbac/validation/BUILD @@ -16,10 +16,10 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/apis/rbac/v1:go_default_library", - "//vendor/k8s.io/api/rbac/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library", + "//staging/src/k8s.io/api/rbac/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/user:go_default_library", ], ) @@ -35,13 +35,13 @@ go_library( deps = [ "//pkg/apis/rbac:go_default_library", "//pkg/apis/rbac/v1:go_default_library", + "//staging/src/k8s.io/api/rbac/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/serviceaccount:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/user:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/endpoints/request:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/rbac/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/serviceaccount:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library", - "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/registry/rbac/validation/rule.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/registry/rbac/validation/rule.go index 366a9a97b1..833ffc1e6c 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/registry/rbac/validation/rule.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/registry/rbac/validation/rule.go @@ -20,15 +20,17 @@ import ( "context" "errors" "fmt" + "strings" "github.com/golang/glog" rbacv1 "k8s.io/api/rbac/v1" - apierrors "k8s.io/apimachinery/pkg/api/errors" utilerrors "k8s.io/apimachinery/pkg/util/errors" + "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apiserver/pkg/authentication/serviceaccount" "k8s.io/apiserver/pkg/authentication/user" genericapirequest "k8s.io/apiserver/pkg/endpoints/request" + rbacv1helpers "k8s.io/kubernetes/pkg/apis/rbac/v1" ) type AuthorizationRuleResolver interface { @@ -65,7 +67,22 @@ func ConfirmNoEscalation(ctx context.Context, ruleResolver AuthorizationRuleReso ownerRightsCover, missingRights := Covers(ownerRules, rules) if !ownerRightsCover { - return apierrors.NewUnauthorized(fmt.Sprintf("attempt to grant extra privileges: %v user=%v ownerrules=%v ruleResolutionErrors=%v", missingRights, user, ownerRules, ruleResolutionErrors)) + compactMissingRights := missingRights + if compact, err := CompactRules(missingRights); err == nil { + compactMissingRights = compact + } + + missingDescriptions := sets.NewString() + for _, missing := range compactMissingRights { + missingDescriptions.Insert(rbacv1helpers.CompactString(missing)) + } + + msg := fmt.Sprintf("user %q (groups=%q) is attempting to grant RBAC permissions not currently held:\n%s", user.GetName(), user.GetGroups(), strings.Join(missingDescriptions.List(), "\n")) + if len(ruleResolutionErrors) > 0 { + msg = msg + fmt.Sprintf("; resolution errors: %v", ruleResolutionErrors) + } + + return errors.New(msg) } return nil } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/BUILD index 1e14062c5a..5967713d10 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/BUILD @@ -19,16 +19,16 @@ go_test( "//pkg/scheduler/core:go_default_library", "//pkg/scheduler/testing:go_default_library", "//pkg/scheduler/volumebinder:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", ], ) @@ -46,18 +46,19 @@ go_library( "//pkg/scheduler/api:go_default_library", "//pkg/scheduler/cache:go_default_library", "//pkg/scheduler/core:go_default_library", + "//pkg/scheduler/core/equivalence:go_default_library", "//pkg/scheduler/metrics:go_default_library", "//pkg/scheduler/util:go_default_library", "//pkg/scheduler/volumebinder:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/listers/core/v1:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/listers/core/v1:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithm/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithm/BUILD index 37bfb4fb95..2aa0942b4a 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithm/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithm/BUILD @@ -19,10 +19,10 @@ go_library( "//pkg/apis/core:go_default_library", "//pkg/scheduler/api:go_default_library", "//pkg/scheduler/cache:go_default_library", - "//vendor/k8s.io/api/apps/v1beta1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/extensions/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/api/apps/v1beta1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/extensions/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", ], ) @@ -35,8 +35,8 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/scheduler/cache:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithm/predicates/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithm/predicates/BUILD index 13e216174e..edd3446ab1 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithm/predicates/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithm/predicates/BUILD @@ -27,19 +27,19 @@ go_library( "//pkg/scheduler/util:go_default_library", "//pkg/scheduler/volumebinder:go_default_library", "//pkg/volume/util:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/storage/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/rand:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/client-go/listers/core/v1:go_default_library", + "//staging/src/k8s.io/client-go/listers/storage/v1:go_default_library", + "//staging/src/k8s.io/client-go/util/workqueue:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/storage/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/rand:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", - "//vendor/k8s.io/client-go/listers/core/v1:go_default_library", - "//vendor/k8s.io/client-go/listers/storage/v1:go_default_library", - "//vendor/k8s.io/client-go/util/workqueue:go_default_library", ], ) @@ -60,14 +60,14 @@ go_test( "//pkg/scheduler/cache:go_default_library", "//pkg/scheduler/testing:go_default_library", "//pkg/volume/util:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/storage/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature/testing:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/storage/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/BUILD index cb8f0e5c0e..45b9f0b181 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/BUILD @@ -37,14 +37,14 @@ go_library( "//pkg/scheduler/cache:go_default_library", "//pkg/util/node:go_default_library", "//pkg/util/parsers:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/client-go/util/workqueue:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", - "//vendor/k8s.io/client-go/util/workqueue:go_default_library", ], ) @@ -74,13 +74,13 @@ go_test( "//pkg/scheduler/cache:go_default_library", "//pkg/scheduler/testing:go_default_library", "//pkg/util/parsers:go_default_library", + "//staging/src/k8s.io/api/apps/v1beta1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/extensions/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", - "//vendor/k8s.io/api/apps/v1beta1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/extensions/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/balanced_resource_allocation.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/balanced_resource_allocation.go index ec36f1bf75..c77dd399d5 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/balanced_resource_allocation.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/balanced_resource_allocation.go @@ -32,7 +32,7 @@ var ( // BalancedResourceAllocationMap should **NOT** be used alone, and **MUST** be used together // with LeastRequestedPriority. It calculates the difference between the cpu and memory fraction // of capacity, and prioritizes the host based on how close the two metrics are to each other. - // Detail: score = 10 - abs(cpuFraction-memoryFraction)*10. The algorithm is partly inspired by: + // Detail: score = 10 - variance(cpuFraction,memoryFraction,volumeFraction)*10. The algorithm is partly inspired by: // "Wei Huang et al. An Energy Efficient Virtual Machine Placement Algorithm with Balanced // Resource Utilization" BalancedResourceAllocationMap = balancedResourcePriority.PriorityMap diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/image_locality.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/image_locality.go index 2d399469d6..041e52d4fc 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/image_locality.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/image_locality.go @@ -26,11 +26,12 @@ import ( "k8s.io/kubernetes/pkg/util/parsers" ) -// This is a reasonable size range of all container images. 90%ile of images on dockerhub drops into this range. +// The two thresholds are used as bounds for the image score range. They correspond to a reasonable size range for +// container images compressed and stored in registries; 90%ile of images on dockerhub drops into this range. const ( - mb int64 = 1024 * 1024 - minImgSize int64 = 23 * mb - maxImgSize int64 = 1000 * mb + mb int64 = 1024 * 1024 + minThreshold int64 = 23 * mb + maxThreshold int64 = 1000 * mb ) // ImageLocalityPriorityMap is a priority function that favors nodes that already have requested pod container's images. @@ -44,44 +45,55 @@ func ImageLocalityPriorityMap(pod *v1.Pod, meta interface{}, nodeInfo *scheduler return schedulerapi.HostPriority{}, fmt.Errorf("node not found") } - sumSize := totalImageSize(nodeInfo, pod.Spec.Containers) + var score int + if priorityMeta, ok := meta.(*priorityMetadata); ok { + score = calculatePriority(sumImageScores(nodeInfo, pod.Spec.Containers, priorityMeta.totalNumNodes)) + } else { + // if we are not able to parse priority meta data, skip this priority + score = 0 + } return schedulerapi.HostPriority{ Host: node.Name, - Score: calculateScoreFromSize(sumSize), + Score: score, }, nil } -// calculateScoreFromSize calculates the priority of a node. sumSize is sum size of requested images on this node. -// 1. Split image size range into 10 buckets. -// 2. Decide the priority of a given sumSize based on which bucket it belongs to. -func calculateScoreFromSize(sumSize int64) int { - switch { - case sumSize == 0 || sumSize < minImgSize: - // 0 means none of the images required by this pod are present on this - // node or the total size of the images present is too small to be taken into further consideration. - return 0 - - case sumSize >= maxImgSize: - // If existing images' total size is larger than max, just make it highest priority. - return schedulerapi.MaxPriority +// calculatePriority returns the priority of a node. Given the sumScores of requested images on the node, the node's +// priority is obtained by scaling the maximum priority value with a ratio proportional to the sumScores. +func calculatePriority(sumScores int64) int { + if sumScores < minThreshold { + sumScores = minThreshold + } else if sumScores > maxThreshold { + sumScores = maxThreshold } - return int((int64(schedulerapi.MaxPriority) * (sumSize - minImgSize) / (maxImgSize - minImgSize)) + 1) + return int(int64(schedulerapi.MaxPriority) * (sumScores - minThreshold) / (maxThreshold - minThreshold)) } -// totalImageSize returns the total image size of all the containers that are already on the node. -func totalImageSize(nodeInfo *schedulercache.NodeInfo, containers []v1.Container) int64 { - var total int64 +// sumImageScores returns the sum of image scores of all the containers that are already on the node. +// Each image receives a raw score of its size, scaled by scaledImageScore. The raw scores are later used to calculate +// the final score. Note that the init containers are not considered for it's rare for users to deploy huge init containers. +func sumImageScores(nodeInfo *schedulercache.NodeInfo, containers []v1.Container, totalNumNodes int) int64 { + var sum int64 + imageStates := nodeInfo.ImageStates() - imageSizes := nodeInfo.ImageSizes() for _, container := range containers { - if size, ok := imageSizes[normalizedImageName(container.Image)]; ok { - total += size + if state, ok := imageStates[normalizedImageName(container.Image)]; ok { + sum += scaledImageScore(state, totalNumNodes) } } - return total + return sum +} + +// scaledImageScore returns an adaptively scaled score for the given state of an image. +// The size of the image is used as the base score, scaled by a factor which considers how much nodes the image has "spread" to. +// This heuristic aims to mitigate the undesirable "node heating problem", i.e., pods get assigned to the same or +// a few nodes due to image locality. +func scaledImageScore(imageState *schedulercache.ImageStateSummary, totalNumNodes int) int64 { + spread := float64(imageState.NumNodes) / float64(totalNumNodes) + return int64(float64(imageState.Size) * spread) } // normalizedImageName returns the CRI compliant name for a given image. diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/least_requested.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/least_requested.go index 9f8b78dae6..d691810896 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/least_requested.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/least_requested.go @@ -29,7 +29,7 @@ var ( // prioritizes based on the minimum of the average of the fraction of requested to capacity. // // Details: - // cpu((capacity-sum(requested))*10/capacity) + memory((capacity-sum(requested))*10/capacity)/2 + // (cpu((capacity-sum(requested))*10/capacity) + memory((capacity-sum(requested))*10/capacity))/2 LeastRequestedPriorityMap = leastResourcePriority.PriorityMap ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/metadata.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/metadata.go index 3cb0f2f442..fe824b91c3 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/metadata.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/metadata.go @@ -52,6 +52,7 @@ type priorityMetadata struct { podSelectors []labels.Selector controllerRef *metav1.OwnerReference podFirstServiceSelector labels.Selector + totalNumNodes int } // PriorityMetadata is a PriorityMetadataProducer. Node info can be nil. @@ -67,6 +68,7 @@ func (pmf *PriorityMetadataFactory) PriorityMetadata(pod *v1.Pod, nodeNameToInfo podSelectors: getSelectors(pod, pmf.serviceLister, pmf.controllerLister, pmf.replicaSetLister, pmf.statefulSetLister), controllerRef: priorityutil.GetControllerRef(pod), podFirstServiceSelector: getFirstServiceSelector(pod, pmf.serviceLister), + totalNumNodes: len(nodeNameToInfo), } } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/most_requested.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/most_requested.go index ea12e8ef89..f1cc7c6ad5 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/most_requested.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/most_requested.go @@ -39,10 +39,10 @@ func mostResourceScorer(requested, allocable *schedulercache.Resource, includeVo // The used capacity is calculated on a scale of 0-10 // 0 being the lowest priority and 10 being the highest. // The more resources are used the higher the score is. This function -// is almost a reversed version of least_requested_priority.calculatUnusedScore +// is almost a reversed version of least_requested_priority.calculateUnusedScore // (10 - calculateUnusedScore). The main difference is in rounding. It was added to // keep the final formula clean and not to modify the widely used (by users -// in their default scheduling policies) calculateUSedScore. +// in their default scheduling policies) calculateUsedScore. func mostRequestedScore(requested, capacity int64) int64 { if capacity == 0 { return 0 diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/resource_limits.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/resource_limits.go index 165ac3e3e4..816b423f58 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/resource_limits.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/resource_limits.go @@ -70,7 +70,7 @@ func ResourceLimitsPriorityMap(pod *v1.Pod, meta interface{}, nodeInfo *schedule }, nil } -// computeScore return 1 if limit value is less than or equal to allocable +// computeScore returns 1 if limit value is less than or equal to allocatable // value, otherwise it returns 0. func computeScore(limit, allocatable int64) int64 { if limit != 0 && allocatable != 0 && limit <= allocatable { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/util/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/util/BUILD index eab1c83443..7adb6958ce 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/util/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/util/BUILD @@ -15,13 +15,13 @@ go_test( ], embed = [":go_default_library"], deps = [ + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/selection:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/selection:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", ], ) @@ -34,10 +34,10 @@ go_library( ], importpath = "k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/util", deps = [ - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithmprovider/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithmprovider/BUILD index 9f4c969ae0..a4afc8fa47 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithmprovider/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithmprovider/BUILD @@ -19,7 +19,7 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/scheduler/factory:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithmprovider/defaults/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithmprovider/defaults/BUILD index 7b0f53951a..7e624f3737 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithmprovider/defaults/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/algorithmprovider/defaults/BUILD @@ -17,9 +17,9 @@ go_library( "//pkg/scheduler/algorithm/priorities:go_default_library", "//pkg/scheduler/core:go_default_library", "//pkg/scheduler/factory:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", ], ) @@ -36,14 +36,14 @@ go_test( "//pkg/scheduler/api:go_default_library", "//pkg/scheduler/api/latest:go_default_library", "//pkg/scheduler/factory:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/client-go/informers:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/util/testing:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/client-go/informers:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/util/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/api/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/api/BUILD index eeaef16a42..a160d036fa 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/api/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/api/BUILD @@ -15,12 +15,12 @@ go_library( ], importpath = "k8s.io/kubernetes/pkg/scheduler/api", deps = [ - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/api/validation/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/api/validation/BUILD index 2cee0ff303..9d21dc6aae 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/api/validation/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/api/validation/BUILD @@ -13,10 +13,10 @@ go_library( deps = [ "//pkg/apis/core/v1/helper:go_default_library", "//pkg/scheduler/api:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/api/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/api/zz_generated.deepcopy.go index d8654dd27a..418c78cd1e 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/api/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/api/zz_generated.deepcopy.go @@ -31,33 +31,21 @@ func (in *ExtenderArgs) DeepCopyInto(out *ExtenderArgs) { *out = *in if in.Pod != nil { in, out := &in.Pod, &out.Pod - if *in == nil { - *out = nil - } else { - *out = new(v1.Pod) - (*in).DeepCopyInto(*out) - } + *out = new(v1.Pod) + (*in).DeepCopyInto(*out) } if in.Nodes != nil { in, out := &in.Nodes, &out.Nodes - if *in == nil { - *out = nil - } else { - *out = new(v1.NodeList) - (*in).DeepCopyInto(*out) - } + *out = new(v1.NodeList) + (*in).DeepCopyInto(*out) } if in.NodeNames != nil { in, out := &in.NodeNames, &out.NodeNames - if *in == nil { - *out = nil - } else { - *out = new([]string) - if **in != nil { - in, out := *in, *out - *out = make([]string, len(*in)) - copy(*out, *in) - } + *out = new([]string) + if **in != nil { + in, out := *in, *out + *out = make([]string, len(*in)) + copy(*out, *in) } } return @@ -110,12 +98,8 @@ func (in *ExtenderConfig) DeepCopyInto(out *ExtenderConfig) { *out = *in if in.TLSConfig != nil { in, out := &in.TLSConfig, &out.TLSConfig - if *in == nil { - *out = nil - } else { - *out = new(rest.TLSClientConfig) - (*in).DeepCopyInto(*out) - } + *out = new(rest.TLSClientConfig) + (*in).DeepCopyInto(*out) } if in.ManagedResources != nil { in, out := &in.ManagedResources, &out.ManagedResources @@ -140,24 +124,16 @@ func (in *ExtenderFilterResult) DeepCopyInto(out *ExtenderFilterResult) { *out = *in if in.Nodes != nil { in, out := &in.Nodes, &out.Nodes - if *in == nil { - *out = nil - } else { - *out = new(v1.NodeList) - (*in).DeepCopyInto(*out) - } + *out = new(v1.NodeList) + (*in).DeepCopyInto(*out) } if in.NodeNames != nil { in, out := &in.NodeNames, &out.NodeNames - if *in == nil { - *out = nil - } else { - *out = new([]string) - if **in != nil { - in, out := *in, *out - *out = make([]string, len(*in)) - copy(*out, *in) - } + *out = new([]string) + if **in != nil { + in, out := *in, *out + *out = make([]string, len(*in)) + copy(*out, *in) } } if in.FailedNodes != nil { @@ -201,35 +177,37 @@ func (in *ExtenderPreemptionArgs) DeepCopyInto(out *ExtenderPreemptionArgs) { *out = *in if in.Pod != nil { in, out := &in.Pod, &out.Pod - if *in == nil { - *out = nil - } else { - *out = new(v1.Pod) - (*in).DeepCopyInto(*out) - } + *out = new(v1.Pod) + (*in).DeepCopyInto(*out) } if in.NodeNameToVictims != nil { in, out := &in.NodeNameToVictims, &out.NodeNameToVictims *out = make(map[string]*Victims, len(*in)) for key, val := range *in { + var outVal *Victims if val == nil { (*out)[key] = nil } else { - (*out)[key] = new(Victims) - val.DeepCopyInto((*out)[key]) + in, out := &val, &outVal + *out = new(Victims) + (*in).DeepCopyInto(*out) } + (*out)[key] = outVal } } if in.NodeNameToMetaVictims != nil { in, out := &in.NodeNameToMetaVictims, &out.NodeNameToMetaVictims *out = make(map[string]*MetaVictims, len(*in)) for key, val := range *in { + var outVal *MetaVictims if val == nil { (*out)[key] = nil } else { - (*out)[key] = new(MetaVictims) - val.DeepCopyInto((*out)[key]) + in, out := &val, &outVal + *out = new(MetaVictims) + (*in).DeepCopyInto(*out) } + (*out)[key] = outVal } } return @@ -252,12 +230,15 @@ func (in *ExtenderPreemptionResult) DeepCopyInto(out *ExtenderPreemptionResult) in, out := &in.NodeNameToMetaVictims, &out.NodeNameToMetaVictims *out = make(map[string]*MetaVictims, len(*in)) for key, val := range *in { + var outVal *MetaVictims if val == nil { (*out)[key] = nil } else { - (*out)[key] = new(MetaVictims) - val.DeepCopyInto((*out)[key]) + in, out := &val, &outVal + *out = new(MetaVictims) + (*in).DeepCopyInto(*out) } + (*out)[key] = outVal } } return @@ -391,11 +372,10 @@ func (in *MetaVictims) DeepCopyInto(out *MetaVictims) { in, out := &in.Pods, &out.Pods *out = make([]*MetaPod, len(*in)) for i := range *in { - if (*in)[i] == nil { - (*out)[i] = nil - } else { - (*out)[i] = new(MetaPod) - (*in)[i].DeepCopyInto((*out)[i]) + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(MetaPod) + **out = **in } } } @@ -463,21 +443,13 @@ func (in *PredicateArgument) DeepCopyInto(out *PredicateArgument) { *out = *in if in.ServiceAffinity != nil { in, out := &in.ServiceAffinity, &out.ServiceAffinity - if *in == nil { - *out = nil - } else { - *out = new(ServiceAffinity) - (*in).DeepCopyInto(*out) - } + *out = new(ServiceAffinity) + (*in).DeepCopyInto(*out) } if in.LabelsPresence != nil { in, out := &in.LabelsPresence, &out.LabelsPresence - if *in == nil { - *out = nil - } else { - *out = new(LabelsPresence) - (*in).DeepCopyInto(*out) - } + *out = new(LabelsPresence) + (*in).DeepCopyInto(*out) } return } @@ -497,12 +469,8 @@ func (in *PredicatePolicy) DeepCopyInto(out *PredicatePolicy) { *out = *in if in.Argument != nil { in, out := &in.Argument, &out.Argument - if *in == nil { - *out = nil - } else { - *out = new(PredicateArgument) - (*in).DeepCopyInto(*out) - } + *out = new(PredicateArgument) + (*in).DeepCopyInto(*out) } return } @@ -522,30 +490,18 @@ func (in *PriorityArgument) DeepCopyInto(out *PriorityArgument) { *out = *in if in.ServiceAntiAffinity != nil { in, out := &in.ServiceAntiAffinity, &out.ServiceAntiAffinity - if *in == nil { - *out = nil - } else { - *out = new(ServiceAntiAffinity) - **out = **in - } + *out = new(ServiceAntiAffinity) + **out = **in } if in.LabelPreference != nil { in, out := &in.LabelPreference, &out.LabelPreference - if *in == nil { - *out = nil - } else { - *out = new(LabelPreference) - **out = **in - } + *out = new(LabelPreference) + **out = **in } if in.RequestedToCapacityRatioArguments != nil { in, out := &in.RequestedToCapacityRatioArguments, &out.RequestedToCapacityRatioArguments - if *in == nil { - *out = nil - } else { - *out = new(RequestedToCapacityRatioArguments) - (*in).DeepCopyInto(*out) - } + *out = new(RequestedToCapacityRatioArguments) + (*in).DeepCopyInto(*out) } return } @@ -565,12 +521,8 @@ func (in *PriorityPolicy) DeepCopyInto(out *PriorityPolicy) { *out = *in if in.Argument != nil { in, out := &in.Argument, &out.Argument - if *in == nil { - *out = nil - } else { - *out = new(PriorityArgument) - (*in).DeepCopyInto(*out) - } + *out = new(PriorityArgument) + (*in).DeepCopyInto(*out) } return } @@ -666,11 +618,10 @@ func (in *Victims) DeepCopyInto(out *Victims) { in, out := &in.Pods, &out.Pods *out = make([]*v1.Pod, len(*in)) for i := range *in { - if (*in)[i] == nil { - (*out)[i] = nil - } else { - (*out)[i] = new(v1.Pod) - (*in)[i].DeepCopyInto((*out)[i]) + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(v1.Pod) + (*in).DeepCopyInto(*out) } } } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/cache/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/cache/BUILD index eece6843d9..69efd93eb6 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/cache/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/cache/BUILD @@ -15,13 +15,14 @@ go_library( "//pkg/features:go_default_library", "//pkg/scheduler/algorithm/priorities/util:go_default_library", "//pkg/scheduler/util:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/policy/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/policy/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", ], ) @@ -30,22 +31,23 @@ go_test( srcs = [ "cache_test.go", "node_info_test.go", + "util_test.go", ], embed = [":go_default_library"], deps = [ "//pkg/features:go_default_library", "//pkg/scheduler/algorithm/priorities/util:go_default_library", "//pkg/scheduler/util:go_default_library", - "//pkg/util/parsers:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/policy/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/policy/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/cache/cache.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/cache/cache.go index 38e26f51bf..fd04a044c6 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/cache/cache.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/cache/cache.go @@ -23,6 +23,7 @@ import ( "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/labels" + "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/wait" utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/kubernetes/pkg/features" @@ -59,6 +60,8 @@ type schedulerCache struct { podStates map[string]*podState nodes map[string]*NodeInfo pdbs map[string]*policy.PodDisruptionBudget + // A map from image name to its imageState. + imageStates map[string]*imageState } type podState struct { @@ -69,6 +72,29 @@ type podState struct { bindingFinished bool } +type imageState struct { + // Size of the image + size int64 + // A set of node names for nodes having this image present + nodes sets.String +} + +// ImageStateSummary provides summarized information about the state of an image. +type ImageStateSummary struct { + // Size of the image + Size int64 + // Used to track how many nodes have this image + NumNodes int +} + +// createImageStateSummary returns a summarizing snapshot of the given image's state. +func (cache *schedulerCache) createImageStateSummary(state *imageState) *ImageStateSummary { + return &ImageStateSummary{ + Size: state.size, + NumNodes: len(state.nodes), + } +} + func newSchedulerCache(ttl, period time.Duration, stop <-chan struct{}) *schedulerCache { return &schedulerCache{ ttl: ttl, @@ -79,6 +105,7 @@ func newSchedulerCache(ttl, period time.Duration, stop <-chan struct{}) *schedul assumedPods: make(map[string]bool), podStates: make(map[string]*podState), pdbs: make(map[string]*policy.PodDisruptionBudget), + imageStates: make(map[string]*imageState), } } @@ -113,6 +140,7 @@ func (cache *schedulerCache) Snapshot() *Snapshot { func (cache *schedulerCache) UpdateNodeNameToInfoMap(nodeNameToInfo map[string]*NodeInfo) error { cache.mu.Lock() defer cache.mu.Unlock() + for name, info := range cache.nodes { if utilfeature.DefaultFeatureGate.Enabled(features.BalanceAttachedNodeVolumes) && info.TransientInfo != nil { // Transient scheduler info is reset here. @@ -317,6 +345,7 @@ func (cache *schedulerCache) UpdatePod(oldPod, newPod *v1.Pod) error { if err := cache.updatePod(oldPod, newPod); err != nil { return err } + currState.pod = newPod default: return fmt.Errorf("pod %v is not added to scheduler cache, so cannot be updated", key) } @@ -393,7 +422,11 @@ func (cache *schedulerCache) AddNode(node *v1.Node) error { if !ok { n = NewNodeInfo() cache.nodes[node.Name] = n + } else { + cache.removeNodeImageStates(n.node) } + + cache.addNodeImageStates(node, n) return n.SetNode(node) } @@ -405,7 +438,11 @@ func (cache *schedulerCache) UpdateNode(oldNode, newNode *v1.Node) error { if !ok { n = NewNodeInfo() cache.nodes[newNode.Name] = n + } else { + cache.removeNodeImageStates(n.node) } + + cache.addNodeImageStates(newNode, n) return n.SetNode(newNode) } @@ -424,9 +461,62 @@ func (cache *schedulerCache) RemoveNode(node *v1.Node) error { if len(n.pods) == 0 && n.node == nil { delete(cache.nodes, node.Name) } + + cache.removeNodeImageStates(node) return nil } +// addNodeImageStates adds states of the images on given node to the given nodeInfo and update the imageStates in +// scheduler cache. This function assumes the lock to scheduler cache has been acquired. +func (cache *schedulerCache) addNodeImageStates(node *v1.Node, nodeInfo *NodeInfo) { + newSum := make(map[string]*ImageStateSummary) + + for _, image := range node.Status.Images { + for _, name := range image.Names { + // update the entry in imageStates + state, ok := cache.imageStates[name] + if !ok { + state = &imageState{ + size: image.SizeBytes, + nodes: sets.NewString(node.Name), + } + cache.imageStates[name] = state + } else { + state.nodes.Insert(node.Name) + } + // create the imageStateSummary for this image + if _, ok := newSum[name]; !ok { + newSum[name] = cache.createImageStateSummary(state) + } + } + } + nodeInfo.imageStates = newSum +} + +// removeNodeImageStates removes the given node record from image entries having the node +// in imageStates cache. After the removal, if any image becomes free, i.e., the image +// is no longer available on any node, the image entry will be removed from imageStates. +func (cache *schedulerCache) removeNodeImageStates(node *v1.Node) { + if node == nil { + return + } + + for _, image := range node.Status.Images { + for _, name := range image.Names { + state, ok := cache.imageStates[name] + if ok { + state.nodes.Delete(node.Name) + if len(state.nodes) == 0 { + // Remove the unused image to make sure the length of + // imageStates represents the total number of different + // images on all nodes + delete(cache.imageStates, name) + } + } + } + } +} + func (cache *schedulerCache) AddPDB(pdb *policy.PodDisruptionBudget) error { cache.mu.Lock() defer cache.mu.Unlock() diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/cache/node_info.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/cache/node_info.go index 1479e81c55..31be774578 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/cache/node_info.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/cache/node_info.go @@ -58,9 +58,10 @@ type NodeInfo struct { taints []v1.Taint taintsErr error - // This is a map from image name to image size, also for checking image existence on the node - // Cache it here to avoid rebuilding the map during scheduling, e.g., in image_locality.go - imageSizes map[string]int64 + // imageStates holds the entry of an image if and only if this image is on the node. The entry can be used for + // checking an image's existence and advanced usage (e.g., image locality scheduling policy) based on the image + // state information. + imageStates map[string]*ImageStateSummary // TransientInfo holds the information pertaining to a scheduling cycle. This will be destructed at the end of // scheduling cycle. @@ -261,7 +262,7 @@ func NewNodeInfo(pods ...*v1.Pod) *NodeInfo { TransientInfo: newTransientSchedulerInfo(), generation: nextGeneration(), usedPorts: make(util.HostPortInfo), - imageSizes: make(map[string]int64), + imageStates: make(map[string]*ImageStateSummary), } for _, pod := range pods { ni.AddPod(pod) @@ -293,12 +294,12 @@ func (n *NodeInfo) UsedPorts() util.HostPortInfo { return n.usedPorts } -// ImageSizes returns the image size information on this node. -func (n *NodeInfo) ImageSizes() map[string]int64 { +// ImageStates returns the state information of all images. +func (n *NodeInfo) ImageStates() map[string]*ImageStateSummary { if n == nil { return nil } - return n.imageSizes + return n.imageStates } // PodsWithAffinity return all pods with (anti)affinity constraints on this node. @@ -392,7 +393,7 @@ func (n *NodeInfo) Clone() *NodeInfo { diskPressureCondition: n.diskPressureCondition, pidPressureCondition: n.pidPressureCondition, usedPorts: make(util.HostPortInfo), - imageSizes: n.imageSizes, + imageStates: make(map[string]*ImageStateSummary), generation: n.generation, } if len(n.pods) > 0 { @@ -547,17 +548,6 @@ func (n *NodeInfo) updateUsedPorts(pod *v1.Pod, add bool) { } } -func (n *NodeInfo) updateImageSizes() { - node := n.Node() - imageSizes := make(map[string]int64) - for _, image := range node.Status.Images { - for _, name := range image.Names { - imageSizes[name] = image.SizeBytes - } - } - n.imageSizes = imageSizes -} - // SetNode sets the overall node information. func (n *NodeInfo) SetNode(node *v1.Node) error { n.node = node @@ -579,7 +569,6 @@ func (n *NodeInfo) SetNode(node *v1.Node) error { } } n.TransientInfo = newTransientSchedulerInfo() - n.updateImageSizes() n.generation = nextGeneration() return nil } @@ -596,6 +585,7 @@ func (n *NodeInfo) RemoveNode(node *v1.Node) error { n.memoryPressureCondition = v1.ConditionUnknown n.diskPressureCondition = v1.ConditionUnknown n.pidPressureCondition = v1.ConditionUnknown + n.imageStates = make(map[string]*ImageStateSummary) n.generation = nextGeneration() return nil } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/cache/util.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/cache/util.go index c3037dcc3d..5a252b6402 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/cache/util.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/cache/util.go @@ -16,7 +16,10 @@ limitations under the License. package cache -import "k8s.io/api/core/v1" +import ( + "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/util/sets" +) // CreateNodeNameToInfoMap obtains a list of pods and pivots that list into a map where the keys are node names // and the values are the aggregated information for that node. @@ -29,11 +32,47 @@ func CreateNodeNameToInfoMap(pods []*v1.Pod, nodes []*v1.Node) map[string]*NodeI } nodeNameToInfo[nodeName].AddPod(pod) } + imageExistenceMap := createImageExistenceMap(nodes) + for _, node := range nodes { if _, ok := nodeNameToInfo[node.Name]; !ok { nodeNameToInfo[node.Name] = NewNodeInfo() } - nodeNameToInfo[node.Name].SetNode(node) + nodeInfo := nodeNameToInfo[node.Name] + nodeInfo.SetNode(node) + nodeInfo.imageStates = getNodeImageStates(node, imageExistenceMap) } return nodeNameToInfo } + +// getNodeImageStates returns the given node's image states based on the given imageExistence map. +func getNodeImageStates(node *v1.Node, imageExistenceMap map[string]sets.String) map[string]*ImageStateSummary { + imageStates := make(map[string]*ImageStateSummary) + + for _, image := range node.Status.Images { + for _, name := range image.Names { + imageStates[name] = &ImageStateSummary{ + Size: image.SizeBytes, + NumNodes: len(imageExistenceMap[name]), + } + } + } + return imageStates +} + +// createImageExistenceMap returns a map recording on which nodes the images exist, keyed by the images' names. +func createImageExistenceMap(nodes []*v1.Node) map[string]sets.String { + imageExistenceMap := make(map[string]sets.String) + for _, node := range nodes { + for _, image := range node.Status.Images { + for _, name := range image.Names { + if _, ok := imageExistenceMap[name]; !ok { + imageExistenceMap[name] = sets.NewString(node.Name) + } else { + imageExistenceMap[name].Insert(node.Name) + } + } + } + } + return imageExistenceMap +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/core/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/core/BUILD index 0e8cd4177c..95f9872aae 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/core/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/core/BUILD @@ -9,7 +9,6 @@ load( go_test( name = "go_default_test", srcs = [ - "equivalence_cache_test.go", "extender_test.go", "generic_scheduler_test.go", "scheduling_queue_test.go", @@ -22,23 +21,23 @@ go_test( "//pkg/scheduler/algorithm/priorities/util:go_default_library", "//pkg/scheduler/api:go_default_library", "//pkg/scheduler/cache:go_default_library", + "//pkg/scheduler/core/equivalence:go_default_library", "//pkg/scheduler/testing:go_default_library", "//pkg/scheduler/util:go_default_library", - "//vendor/k8s.io/api/apps/v1beta1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/extensions/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/api/apps/v1beta1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/extensions/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", ], ) go_library( name = "go_default_library", srcs = [ - "equivalence_cache.go", "extender.go", "generic_scheduler.go", "scheduling_queue.go", @@ -51,23 +50,23 @@ go_library( "//pkg/scheduler/algorithm/priorities/util:go_default_library", "//pkg/scheduler/api:go_default_library", "//pkg/scheduler/cache:go_default_library", + "//pkg/scheduler/core/equivalence:go_default_library", "//pkg/scheduler/metrics:go_default_library", "//pkg/scheduler/util:go_default_library", "//pkg/scheduler/volumebinder:go_default_library", - "//pkg/util/hash:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/policy/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/trace:go_default_library", + "//staging/src/k8s.io/client-go/listers/core/v1:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/client-go/util/workqueue:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/policy/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/trace:go_default_library", - "//vendor/k8s.io/client-go/listers/core/v1:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", - "//vendor/k8s.io/client-go/util/workqueue:go_default_library", ], ) @@ -80,6 +79,9 @@ filegroup( filegroup( name = "all-srcs", - srcs = [":package-srcs"], + srcs = [ + ":package-srcs", + "//pkg/scheduler/core/equivalence:all-srcs", + ], tags = ["automanaged"], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/core/equivalence/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/core/equivalence/BUILD new file mode 100644 index 0000000000..50ffb33739 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/core/equivalence/BUILD @@ -0,0 +1,47 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "go_default_library", + srcs = ["eqivalence.go"], + importpath = "k8s.io/kubernetes/pkg/scheduler/core/equivalence", + visibility = ["//visibility:public"], + deps = [ + "//pkg/scheduler/algorithm:go_default_library", + "//pkg/scheduler/algorithm/predicates:go_default_library", + "//pkg/scheduler/cache:go_default_library", + "//pkg/util/hash:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//vendor/github.com/golang/glog:go_default_library", + ], +) + +go_test( + name = "go_default_test", + srcs = ["eqivalence_test.go"], + embed = [":go_default_library"], + deps = [ + "//pkg/scheduler/algorithm:go_default_library", + "//pkg/scheduler/algorithm/predicates:go_default_library", + "//pkg/scheduler/cache:go_default_library", + "//pkg/scheduler/testing:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], + visibility = ["//visibility:public"], +) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/core/equivalence_cache.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/core/equivalence/eqivalence.go similarity index 53% rename from cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/core/equivalence_cache.go rename to cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/core/equivalence/eqivalence.go index fb67ad3bb4..5ec9d9fdcc 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/core/equivalence_cache.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/core/equivalence/eqivalence.go @@ -14,7 +14,9 @@ See the License for the specific language governing permissions and limitations under the License. */ -package core +// Package equivalence defines Pod equivalence classes and the equivalence class +// cache. +package equivalence import ( "fmt" @@ -31,45 +33,77 @@ import ( "github.com/golang/glog" ) -// EquivalenceCache holds: -// 1. a map of AlgorithmCache with node name as key -// 2. function to get equivalence pod -type EquivalenceCache struct { - mu sync.RWMutex - algorithmCache map[string]AlgorithmCache +// Cache saves and reuses the output of predicate functions. Use RunPredicate to +// get or update the cached results. An appropriate Invalidate* function should +// be called when some predicate results are no longer valid. +// +// Internally, results are keyed by node name, predicate name, and "equivalence +// class". (Equivalence class is defined in the `Class` type.) Saved results +// will be reused until an appropriate invalidation function is called. +type Cache struct { + mu sync.RWMutex + cache nodeMap } -// The AlgorithmCache stores PredicateMap with predicate name as key, PredicateMap as value. -type AlgorithmCache map[string]PredicateMap +// NewCache returns an empty Cache. +func NewCache() *Cache { + return &Cache{ + cache: make(nodeMap), + } +} -// PredicateMap stores HostPrediacte with equivalence hash as key -type PredicateMap map[uint64]HostPredicate +// Class represents a set of pods which are equivalent from the perspective of +// the scheduler. i.e. the scheduler would make the same decision for any pod +// from the same class. +type Class struct { + // Equivalence hash + hash uint64 +} -// HostPredicate is the cached predicate result -type HostPredicate struct { +// NewClass returns the equivalence class for a given Pod. The returned Class +// objects will be equal for two Pods in the same class. nil values should not +// be considered equal to each other. +// +// NOTE: Make sure to compare types of Class and not *Class. +// TODO(misterikkit): Return error instead of nil *Class. +func NewClass(pod *v1.Pod) *Class { + equivalencePod := getEquivalencePod(pod) + if equivalencePod != nil { + hash := fnv.New32a() + hashutil.DeepHashObject(hash, equivalencePod) + return &Class{ + hash: uint64(hash.Sum32()), + } + } + return nil +} + +// nodeMap stores PredicateCaches with node name as the key. +type nodeMap map[string]predicateMap + +// predicateMap stores resultMaps with predicate name as the key. +type predicateMap map[string]resultMap + +// resultMap stores PredicateResult with pod equivalence hash as the key. +type resultMap map[uint64]predicateResult + +// predicateResult stores the output of a FitPredicate. +type predicateResult struct { Fit bool FailReasons []algorithm.PredicateFailureReason } -// NewEquivalenceCache returns EquivalenceCache to speed up predicates by caching -// result from previous scheduling. -func NewEquivalenceCache() *EquivalenceCache { - return &EquivalenceCache{ - algorithmCache: make(map[string]AlgorithmCache), - } -} - -// RunPredicate will return a cached predicate result. In case of a cache miss, the predicate will -// be run and its results cached for the next call. +// RunPredicate returns a cached predicate result. In case of a cache miss, the predicate will be +// run and its results cached for the next call. // // NOTE: RunPredicate will not update the equivalence cache if the given NodeInfo is stale. -func (ec *EquivalenceCache) RunPredicate( +func (c *Cache) RunPredicate( pred algorithm.FitPredicate, predicateKey string, pod *v1.Pod, meta algorithm.PredicateMetadata, nodeInfo *schedulercache.NodeInfo, - equivClassInfo *equivalenceClassInfo, + equivClass *Class, cache schedulercache.Cache, ) (bool, []algorithm.PredicateFailureReason, error) { if nodeInfo == nil || nodeInfo.Node() == nil { @@ -77,22 +111,22 @@ func (ec *EquivalenceCache) RunPredicate( return false, []algorithm.PredicateFailureReason{}, fmt.Errorf("nodeInfo is nil or node is invalid") } - fit, reasons, invalid := ec.lookupResult(pod.GetName(), nodeInfo.Node().GetName(), predicateKey, equivClassInfo.hash) - if !invalid { - return fit, reasons, nil + result, ok := c.lookupResult(pod.GetName(), nodeInfo.Node().GetName(), predicateKey, equivClass.hash) + if ok { + return result.Fit, result.FailReasons, nil } fit, reasons, err := pred(pod, meta, nodeInfo) if err != nil { return fit, reasons, err } if cache != nil { - ec.updateResult(pod.GetName(), predicateKey, fit, reasons, equivClassInfo.hash, cache, nodeInfo) + c.updateResult(pod.GetName(), predicateKey, fit, reasons, equivClass.hash, cache, nodeInfo) } return fit, reasons, nil } // updateResult updates the cached result of a predicate. -func (ec *EquivalenceCache) updateResult( +func (c *Cache) updateResult( podName, predicateKey string, fit bool, reasons []algorithm.PredicateFailureReason, @@ -100,8 +134,8 @@ func (ec *EquivalenceCache) updateResult( cache schedulercache.Cache, nodeInfo *schedulercache.NodeInfo, ) { - ec.mu.Lock() - defer ec.mu.Unlock() + c.mu.Lock() + defer c.mu.Unlock() if nodeInfo == nil || nodeInfo.Node() == nil { // This may happen during tests. return @@ -111,90 +145,83 @@ func (ec *EquivalenceCache) updateResult( return } nodeName := nodeInfo.Node().GetName() - if _, exist := ec.algorithmCache[nodeName]; !exist { - ec.algorithmCache[nodeName] = AlgorithmCache{} + if _, exist := c.cache[nodeName]; !exist { + c.cache[nodeName] = make(predicateMap) } - predicateItem := HostPredicate{ + predicateItem := predicateResult{ Fit: fit, FailReasons: reasons, } // if cached predicate map already exists, just update the predicate by key - if predicateMap, ok := ec.algorithmCache[nodeName][predicateKey]; ok { + if predicates, ok := c.cache[nodeName][predicateKey]; ok { // maps in golang are references, no need to add them back - predicateMap[equivalenceHash] = predicateItem + predicates[equivalenceHash] = predicateItem } else { - ec.algorithmCache[nodeName][predicateKey] = - PredicateMap{ + c.cache[nodeName][predicateKey] = + resultMap{ equivalenceHash: predicateItem, } } - glog.V(5).Infof("Updated cached predicate: %v for pod: %v on node: %s, with item %v", predicateKey, podName, nodeName, predicateItem) + glog.V(5).Infof("Cache update: node=%s,predicate=%s,pod=%s,value=%v", nodeName, predicateKey, podName, predicateItem) } -// lookupResult returns cached predicate results: -// 1. if pod fit -// 2. reasons if pod did not fit -// 3. if cache item is not found -func (ec *EquivalenceCache) lookupResult( +// lookupResult returns cached predicate results and a bool saying whether a +// cache entry was found. +func (c *Cache) lookupResult( podName, nodeName, predicateKey string, equivalenceHash uint64, -) (bool, []algorithm.PredicateFailureReason, bool) { - ec.mu.RLock() - defer ec.mu.RUnlock() - glog.V(5).Infof("Begin to calculate predicate: %v for pod: %s on node: %s based on equivalence cache", - predicateKey, podName, nodeName) - if hostPredicate, exist := ec.algorithmCache[nodeName][predicateKey][equivalenceHash]; exist { - if hostPredicate.Fit { - return true, []algorithm.PredicateFailureReason{}, false - } - return false, hostPredicate.FailReasons, false - } - // is invalid - return false, []algorithm.PredicateFailureReason{}, true +) (value predicateResult, ok bool) { + c.mu.RLock() + defer c.mu.RUnlock() + glog.V(5).Infof("Cache lookup: node=%s,predicate=%s,pod=%s", nodeName, predicateKey, podName) + value, ok = c.cache[nodeName][predicateKey][equivalenceHash] + return value, ok } -// InvalidateCachedPredicateItem marks all items of given predicateKeys, of all pods, on the given node as invalid -func (ec *EquivalenceCache) InvalidateCachedPredicateItem(nodeName string, predicateKeys sets.String) { +// InvalidatePredicates clears all cached results for the given predicates. +func (c *Cache) InvalidatePredicates(predicateKeys sets.String) { if len(predicateKeys) == 0 { return } - ec.mu.Lock() - defer ec.mu.Unlock() - for predicateKey := range predicateKeys { - delete(ec.algorithmCache[nodeName], predicateKey) - } - glog.V(5).Infof("Done invalidating cached predicates: %v on node: %s", predicateKeys, nodeName) -} - -// InvalidateCachedPredicateItemOfAllNodes marks all items of given predicateKeys, of all pods, on all node as invalid -func (ec *EquivalenceCache) InvalidateCachedPredicateItemOfAllNodes(predicateKeys sets.String) { - if len(predicateKeys) == 0 { - return - } - ec.mu.Lock() - defer ec.mu.Unlock() - // algorithmCache uses nodeName as key, so we just iterate it and invalid given predicates - for _, algorithmCache := range ec.algorithmCache { + c.mu.Lock() + defer c.mu.Unlock() + // c.cache uses nodeName as key, so we just iterate it and invalid given predicates + for _, predicates := range c.cache { for predicateKey := range predicateKeys { - delete(algorithmCache, predicateKey) + delete(predicates, predicateKey) } } - glog.V(5).Infof("Done invalidating cached predicates: %v on all node", predicateKeys) + glog.V(5).Infof("Cache invalidation: node=*,predicates=%v", predicateKeys) } -// InvalidateAllCachedPredicateItemOfNode marks all cached items on given node as invalid -func (ec *EquivalenceCache) InvalidateAllCachedPredicateItemOfNode(nodeName string) { - ec.mu.Lock() - defer ec.mu.Unlock() - delete(ec.algorithmCache, nodeName) - glog.V(5).Infof("Done invalidating all cached predicates on node: %s", nodeName) +// InvalidatePredicatesOnNode clears cached results for the given predicates on one node. +func (c *Cache) InvalidatePredicatesOnNode(nodeName string, predicateKeys sets.String) { + if len(predicateKeys) == 0 { + return + } + c.mu.Lock() + defer c.mu.Unlock() + for predicateKey := range predicateKeys { + delete(c.cache[nodeName], predicateKey) + } + glog.V(5).Infof("Cache invalidation: node=%s,predicates=%v", nodeName, predicateKeys) } -// InvalidateCachedPredicateItemForPodAdd is a wrapper of InvalidateCachedPredicateItem for pod add case -func (ec *EquivalenceCache) InvalidateCachedPredicateItemForPodAdd(pod *v1.Pod, nodeName string) { +// InvalidateAllPredicatesOnNode clears all cached results for one node. +func (c *Cache) InvalidateAllPredicatesOnNode(nodeName string) { + c.mu.Lock() + defer c.mu.Unlock() + delete(c.cache, nodeName) + glog.V(5).Infof("Cache invalidation: node=%s,predicates=*", nodeName) +} + +// InvalidateCachedPredicateItemForPodAdd is a wrapper of +// InvalidateCachedPredicateItem for pod add case +// TODO: This does not belong with the equivalence cache implementation. +func (c *Cache) InvalidateCachedPredicateItemForPodAdd(pod *v1.Pod, nodeName string) { // MatchInterPodAffinity: we assume scheduler can make sure newly bound pod - // will not break the existing inter pod affinity. So we does not need to invalidate - // MatchInterPodAffinity when pod added. + // will not break the existing inter pod affinity. So we does not need to + // invalidate MatchInterPodAffinity when pod added. // // But when a pod is deleted, existing inter pod affinity may become invalid. // (e.g. this pod was preferred by some else, or vice versa) @@ -224,29 +251,7 @@ func (ec *EquivalenceCache) InvalidateCachedPredicateItemForPodAdd(pod *v1.Pod, } } } - ec.InvalidateCachedPredicateItem(nodeName, invalidPredicates) -} - -// equivalenceClassInfo holds equivalence hash which is used for checking equivalence cache. -// We will pass this to podFitsOnNode to ensure equivalence hash is only calculated per schedule. -type equivalenceClassInfo struct { - // Equivalence hash. - hash uint64 -} - -// getEquivalenceClassInfo returns a hash of the given pod. -// The hashing function returns the same value for any two pods that are -// equivalent from the perspective of scheduling. -func (ec *EquivalenceCache) getEquivalenceClassInfo(pod *v1.Pod) *equivalenceClassInfo { - equivalencePod := getEquivalenceHash(pod) - if equivalencePod != nil { - hash := fnv.New32a() - hashutil.DeepHashObject(hash, equivalencePod) - return &equivalenceClassInfo{ - hash: uint64(hash.Sum32()), - } - } - return nil + c.InvalidatePredicatesOnNode(nodeName, invalidPredicates) } // equivalencePod is the set of pod attributes which must match for two pods to @@ -254,9 +259,9 @@ func (ec *EquivalenceCache) getEquivalenceClassInfo(pod *v1.Pod) *equivalenceCla // include any Pod field which is used by a FitPredicate. // // NOTE: For equivalence hash to be formally correct, lists and maps in the -// equivalencePod should be normalized. (e.g. by sorting them) However, the -// vast majority of equivalent pod classes are expected to be created from a -// single pod template, so they will all have the same ordering. +// equivalencePod should be normalized. (e.g. by sorting them) However, the vast +// majority of equivalent pod classes are expected to be created from a single +// pod template, so they will all have the same ordering. type equivalencePod struct { Namespace *string Labels map[string]string @@ -269,8 +274,9 @@ type equivalencePod struct { Volumes []v1.Volume // See note about ordering } -// getEquivalenceHash returns the equivalencePod for a Pod. -func getEquivalenceHash(pod *v1.Pod) *equivalencePod { +// getEquivalencePod returns a normalized representation of a pod so that two +// "equivalent" pods will hash to the same value. +func getEquivalencePod(pod *v1.Pod) *equivalencePod { ep := &equivalencePod{ Namespace: &pod.Namespace, Labels: pod.Labels, diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/core/generic_scheduler.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/core/generic_scheduler.go index 2ea1a973a3..ad25d6b86a 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/core/generic_scheduler.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/core/generic_scheduler.go @@ -39,6 +39,7 @@ import ( "k8s.io/kubernetes/pkg/scheduler/algorithm/predicates" schedulerapi "k8s.io/kubernetes/pkg/scheduler/api" schedulercache "k8s.io/kubernetes/pkg/scheduler/cache" + "k8s.io/kubernetes/pkg/scheduler/core/equivalence" "k8s.io/kubernetes/pkg/scheduler/metrics" "k8s.io/kubernetes/pkg/scheduler/util" "k8s.io/kubernetes/pkg/scheduler/volumebinder" @@ -85,14 +86,13 @@ func (f *FitError) Error() string { type genericScheduler struct { cache schedulercache.Cache - equivalenceCache *EquivalenceCache + equivalenceCache *equivalence.Cache schedulingQueue SchedulingQueue predicates map[string]algorithm.FitPredicate priorityMetaProducer algorithm.PriorityMetadataProducer predicateMetaProducer algorithm.PredicateMetadataProducer prioritizers []algorithm.PriorityConfig extenders []algorithm.SchedulerExtender - lastNodeIndexLock sync.Mutex lastNodeIndex uint64 alwaysCheckAllPredicates bool cachedNodeInfoMap map[string]*schedulercache.NodeInfo @@ -141,6 +141,7 @@ func (g *genericScheduler) Schedule(pod *v1.Pod, nodeLister algorithm.NodeLister } } metrics.SchedulingAlgorithmPredicateEvaluationDuration.Observe(metrics.SinceInMicroseconds(startPredicateEvalTime)) + metrics.SchedulingLatency.WithLabelValues(metrics.PredicateEvaluation).Observe(metrics.SinceInSeconds(startPredicateEvalTime)) trace.Step("Prioritizing") startPriorityEvalTime := time.Now() @@ -156,6 +157,7 @@ func (g *genericScheduler) Schedule(pod *v1.Pod, nodeLister algorithm.NodeLister return "", err } metrics.SchedulingAlgorithmPriorityEvaluationDuration.Observe(metrics.SinceInMicroseconds(startPriorityEvalTime)) + metrics.SchedulingLatency.WithLabelValues(metrics.PriorityEvaluation).Observe(metrics.SinceInSeconds(startPriorityEvalTime)) trace.Step("Selecting host") return g.selectHost(priorityList) @@ -173,6 +175,22 @@ func (g *genericScheduler) Predicates() map[string]algorithm.FitPredicate { return g.predicates } +// findMaxScores returns the indexes of nodes in the "priorityList" that has the highest "Score". +func findMaxScores(priorityList schedulerapi.HostPriorityList) []int { + maxScoreIndexes := make([]int, 0, len(priorityList)/2) + maxScore := priorityList[0].Score + for i, hp := range priorityList { + if hp.Score > maxScore { + maxScore = hp.Score + maxScoreIndexes = maxScoreIndexes[:0] + maxScoreIndexes = append(maxScoreIndexes, i) + } else if hp.Score == maxScore { + maxScoreIndexes = append(maxScoreIndexes, i) + } + } + return maxScoreIndexes +} + // selectHost takes a prioritized list of nodes and then picks one // in a round-robin manner from the nodes that had the highest score. func (g *genericScheduler) selectHost(priorityList schedulerapi.HostPriorityList) (string, error) { @@ -180,16 +198,11 @@ func (g *genericScheduler) selectHost(priorityList schedulerapi.HostPriorityList return "", fmt.Errorf("empty priorityList") } - sort.Sort(sort.Reverse(priorityList)) - maxScore := priorityList[0].Score - firstAfterMaxScore := sort.Search(len(priorityList), func(i int) bool { return priorityList[i].Score < maxScore }) - - g.lastNodeIndexLock.Lock() - ix := int(g.lastNodeIndex % uint64(firstAfterMaxScore)) + maxScores := findMaxScores(priorityList) + ix := int(g.lastNodeIndex % uint64(len(maxScores))) g.lastNodeIndex++ - g.lastNodeIndexLock.Unlock() - return priorityList[ix].Host, nil + return priorityList[maxScores[ix]].Host, nil } // preempt finds nodes with pods that can be preempted to make room for "pod" to @@ -209,7 +222,7 @@ func (g *genericScheduler) Preempt(pod *v1.Pod, nodeLister algorithm.NodeLister, return nil, nil, nil, err } if !podEligibleToPreemptOthers(pod, g.cachedNodeInfoMap) { - glog.V(5).Infof("Pod %v is not eligible for more preemption.", pod.Name) + glog.V(5).Infof("Pod %v/%v is not eligible for more preemption.", pod.Namespace, pod.Name) return nil, nil, nil, nil } allNodes, err := nodeLister.List() @@ -219,9 +232,9 @@ func (g *genericScheduler) Preempt(pod *v1.Pod, nodeLister algorithm.NodeLister, if len(allNodes) == 0 { return nil, nil, nil, ErrNoNodesAvailable } - potentialNodes := nodesWherePreemptionMightHelp(pod, allNodes, fitError.FailedPredicates) + potentialNodes := nodesWherePreemptionMightHelp(allNodes, fitError.FailedPredicates) if len(potentialNodes) == 0 { - glog.V(3).Infof("Preemption will not help schedule pod %v on any node.", pod.Name) + glog.V(3).Infof("Preemption will not help schedule pod %v/%v on any node.", pod.Namespace, pod.Name) // In this case, we should clean-up any existing nominated node name of the pod. return nil, nil, []*v1.Pod{pod}, nil } @@ -342,10 +355,10 @@ func (g *genericScheduler) findNodesThatFit(pod *v1.Pod, nodes []*v1.Node) ([]*v // We can use the same metadata producer for all nodes. meta := g.predicateMetaProducer(pod, g.cachedNodeInfoMap) - var equivCacheInfo *equivalenceClassInfo + var equivClass *equivalence.Class if g.equivalenceCache != nil { // getEquivalenceClassInfo will return immediately if no equivalence pod found - equivCacheInfo = g.equivalenceCache.getEquivalenceClassInfo(pod) + equivClass = equivalence.NewClass(pod) } checkNode := func(i int) { @@ -359,7 +372,7 @@ func (g *genericScheduler) findNodesThatFit(pod *v1.Pod, nodes []*v1.Node) ([]*v g.equivalenceCache, g.schedulingQueue, g.alwaysCheckAllPredicates, - equivCacheInfo, + equivClass, ) if err != nil { predicateResultLock.Lock() @@ -459,10 +472,10 @@ func podFitsOnNode( info *schedulercache.NodeInfo, predicateFuncs map[string]algorithm.FitPredicate, cache schedulercache.Cache, - ecache *EquivalenceCache, + ecache *equivalence.Cache, queue SchedulingQueue, alwaysCheckAllPredicates bool, - equivCacheInfo *equivalenceClassInfo, + equivClass *equivalence.Class, ) (bool, []algorithm.PredicateFailureReason, error) { var ( eCacheAvailable bool @@ -499,7 +512,7 @@ func podFitsOnNode( // Bypass eCache if node has any nominated pods. // TODO(bsalamat): consider using eCache and adding proper eCache invalidations // when pods are nominated or their nominations change. - eCacheAvailable = equivCacheInfo != nil && !podsAdded + eCacheAvailable = equivClass != nil && !podsAdded for _, predicateKey := range predicates.Ordering() { var ( fit bool @@ -509,7 +522,7 @@ func podFitsOnNode( //TODO (yastij) : compute average predicate restrictiveness to export it as Prometheus metric if predicate, exist := predicateFuncs[predicateKey]; exist { if eCacheAvailable { - fit, reasons, err = ecache.RunPredicate(predicate, predicateKey, pod, metaToUse, nodeInfoToUse, equivCacheInfo, cache) + fit, reasons, err = ecache.RunPredicate(predicate, predicateKey, pod, metaToUse, nodeInfoToUse, equivClass, cache) } else { fit, reasons, err = predicate(pod, metaToUse, nodeInfoToUse) } @@ -969,7 +982,7 @@ func selectVictimsOnNode( // nodesWherePreemptionMightHelp returns a list of nodes with failed predicates // that may be satisfied by removing pods from the node. -func nodesWherePreemptionMightHelp(pod *v1.Pod, nodes []*v1.Node, failedPredicatesMap FailedPredicateMap) []*v1.Node { +func nodesWherePreemptionMightHelp(nodes []*v1.Node, failedPredicatesMap FailedPredicateMap) []*v1.Node { potentialNodes := []*v1.Node{} for _, node := range nodes { unresolvableReasonExist := false @@ -983,11 +996,19 @@ func nodesWherePreemptionMightHelp(pod *v1.Pod, nodes []*v1.Node, failedPredicat switch failedPredicate { case predicates.ErrNodeSelectorNotMatch, + predicates.ErrPodAffinityRulesNotMatch, predicates.ErrPodNotMatchHostName, predicates.ErrTaintsTolerationsNotMatch, predicates.ErrNodeLabelPresenceViolated, + // Node conditions won't change when scheduler simulates removal of preemption victims. + // So, it is pointless to try nodes that have not been able to host the pod due to node + // conditions. These include ErrNodeNotReady, ErrNodeUnderPIDPressure, ErrNodeUnderMemoryPressure, .... predicates.ErrNodeNotReady, predicates.ErrNodeNetworkUnavailable, + predicates.ErrNodeUnderDiskPressure, + predicates.ErrNodeUnderPIDPressure, + predicates.ErrNodeUnderMemoryPressure, + predicates.ErrNodeOutOfDisk, predicates.ErrNodeUnschedulable, predicates.ErrNodeUnknownCondition, predicates.ErrVolumeZoneConflict, @@ -995,7 +1016,6 @@ func nodesWherePreemptionMightHelp(pod *v1.Pod, nodes []*v1.Node, failedPredicat predicates.ErrVolumeBindConflict: unresolvableReasonExist = true break - // TODO(bsalamat): Please add affinity failure cases once we have specific affinity failure errors. } } if !found || !unresolvableReasonExist { @@ -1056,7 +1076,7 @@ func podPassesBasicChecks(pod *v1.Pod, pvcLister corelisters.PersistentVolumeCla // NewGenericScheduler creates a genericScheduler object. func NewGenericScheduler( cache schedulercache.Cache, - eCache *EquivalenceCache, + eCache *equivalence.Cache, podQueue SchedulingQueue, predicates map[string]algorithm.FitPredicate, predicateMetaProducer algorithm.PredicateMetadataProducer, diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/core/scheduling_queue.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/core/scheduling_queue.go index 2b789f338c..a49dbb9e9d 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/core/scheduling_queue.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/core/scheduling_queue.go @@ -241,10 +241,10 @@ func (p *PriorityQueue) Add(pod *v1.Pod) error { defer p.lock.Unlock() err := p.activeQ.Add(pod) if err != nil { - glog.Errorf("Error adding pod %v to the scheduling queue: %v", pod.Name, err) + glog.Errorf("Error adding pod %v/%v to the scheduling queue: %v", pod.Namespace, pod.Name, err) } else { if p.unschedulableQ.get(pod) != nil { - glog.Errorf("Error: pod %v is already in the unschedulable queue.", pod.Name) + glog.Errorf("Error: pod %v/%v is already in the unschedulable queue.", pod.Namespace, pod.Name) p.deleteNominatedPodIfExists(pod) p.unschedulableQ.delete(pod) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/factory/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/factory/BUILD index faf552687c..b7a094125c 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/factory/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/factory/BUILD @@ -12,42 +12,9 @@ go_library( "cache_comparer.go", "factory.go", "plugins.go", - ] + select({ - "@io_bazel_rules_go//go/platform:android": [ - "signal.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "signal.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "signal.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "signal.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "signal.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "signal.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "signal.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "signal.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "signal.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "signal.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "signal_windows.go", - ], - "//conditions:default": [], - }), + "signal.go", + "signal_windows.go", + ], importpath = "k8s.io/kubernetes/pkg/scheduler/factory", deps = [ "//pkg/api/v1/pod:go_default_library", @@ -62,32 +29,33 @@ go_library( "//pkg/scheduler/api/validation:go_default_library", "//pkg/scheduler/cache:go_default_library", "//pkg/scheduler/core:go_default_library", + "//pkg/scheduler/core/equivalence:go_default_library", "//pkg/scheduler/util:go_default_library", "//pkg/scheduler/volumebinder:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/policy/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/client-go/informers/apps/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/informers/core/v1:go_default_library", + "//staging/src/k8s.io/client-go/informers/extensions/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/informers/policy/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/informers/storage/v1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/listers/apps/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/listers/core/v1:go_default_library", + "//staging/src/k8s.io/client-go/listers/extensions/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/listers/policy/v1beta1:go_default_library", + "//staging/src/k8s.io/client-go/listers/storage/v1:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/policy/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", - "//vendor/k8s.io/client-go/informers/apps/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/informers/core/v1:go_default_library", - "//vendor/k8s.io/client-go/informers/extensions/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/informers/policy/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/informers/storage/v1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/listers/apps/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/listers/core/v1:go_default_library", - "//vendor/k8s.io/client-go/listers/extensions/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/listers/policy/v1beta1:go_default_library", - "//vendor/k8s.io/client-go/listers/storage/v1:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", ], ) @@ -110,19 +78,19 @@ go_test( "//pkg/scheduler/core:go_default_library", "//pkg/scheduler/testing:go_default_library", "//pkg/scheduler/util:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/policy/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/client-go/informers:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/rest:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/client-go/util/testing:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/policy/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/client-go/informers:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/rest:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", - "//vendor/k8s.io/client-go/util/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/factory/factory.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/factory/factory.go index 06a1b24bd8..93640d6f0e 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/factory/factory.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/factory/factory.go @@ -61,6 +61,7 @@ import ( "k8s.io/kubernetes/pkg/scheduler/api/validation" schedulercache "k8s.io/kubernetes/pkg/scheduler/cache" "k8s.io/kubernetes/pkg/scheduler/core" + "k8s.io/kubernetes/pkg/scheduler/core/equivalence" "k8s.io/kubernetes/pkg/scheduler/util" "k8s.io/kubernetes/pkg/scheduler/volumebinder" ) @@ -123,7 +124,7 @@ type configFactory struct { hardPodAffinitySymmetricWeight int32 // Equivalence class cache - equivalencePodCache *core.EquivalenceCache + equivalencePodCache *equivalence.Cache // Enable equivalence class cache enableEquivalenceClassCache bool @@ -403,6 +404,11 @@ func (c *configFactory) onPvUpdate(old, new interface{}) { func (c *configFactory) invalidatePredicatesForPvUpdate(oldPV, newPV *v1.PersistentVolume) { invalidPredicates := sets.NewString() + // CheckVolumeBinding predicate calls SchedulerVolumeBinder.FindPodVolumes + // which will cache PVs in PodBindingCache. When PV got updated, we should + // invalidate cache, otherwise PVAssumeCache.Assume will fail with out of sync + // error. + invalidPredicates.Insert(predicates.CheckVolumeBindingPred) for k, v := range newPV.Labels { // If PV update modifies the zone/region labels. if isZoneRegionLabel(k) && !reflect.DeepEqual(v, oldPV.Labels[k]) { @@ -410,7 +416,7 @@ func (c *configFactory) invalidatePredicatesForPvUpdate(oldPV, newPV *v1.Persist break } } - c.equivalencePodCache.InvalidateCachedPredicateItemOfAllNodes(invalidPredicates) + c.equivalencePodCache.InvalidatePredicates(invalidPredicates) } // isZoneRegionLabel check if given key of label is zone or region label. @@ -468,7 +474,7 @@ func (c *configFactory) invalidatePredicatesForPv(pv *v1.PersistentVolume) { invalidPredicates.Insert(predicates.CheckVolumeBindingPred) } - c.equivalencePodCache.InvalidateCachedPredicateItemOfAllNodes(invalidPredicates) + c.equivalencePodCache.InvalidatePredicates(invalidPredicates) } func (c *configFactory) onPvcAdd(obj interface{}) { @@ -538,7 +544,7 @@ func (c *configFactory) invalidatePredicatesForPvc(pvc *v1.PersistentVolumeClaim // Add/delete impacts the available PVs to choose from invalidPredicates.Insert(predicates.CheckVolumeBindingPred) } - c.equivalencePodCache.InvalidateCachedPredicateItemOfAllNodes(invalidPredicates) + c.equivalencePodCache.InvalidatePredicates(invalidPredicates) } func (c *configFactory) invalidatePredicatesForPvcUpdate(old, new *v1.PersistentVolumeClaim) { @@ -553,12 +559,12 @@ func (c *configFactory) invalidatePredicatesForPvcUpdate(old, new *v1.Persistent invalidPredicates.Insert(maxPDVolumeCountPredicateKeys...) } - c.equivalencePodCache.InvalidateCachedPredicateItemOfAllNodes(invalidPredicates) + c.equivalencePodCache.InvalidatePredicates(invalidPredicates) } func (c *configFactory) onServiceAdd(obj interface{}) { if c.enableEquivalenceClassCache { - c.equivalencePodCache.InvalidateCachedPredicateItemOfAllNodes(serviceAffinitySet) + c.equivalencePodCache.InvalidatePredicates(serviceAffinitySet) } c.podQueue.MoveAllToActiveQueue() } @@ -569,7 +575,7 @@ func (c *configFactory) onServiceUpdate(oldObj interface{}, newObj interface{}) oldService := oldObj.(*v1.Service) newService := newObj.(*v1.Service) if !reflect.DeepEqual(oldService.Spec.Selector, newService.Spec.Selector) { - c.equivalencePodCache.InvalidateCachedPredicateItemOfAllNodes(serviceAffinitySet) + c.equivalencePodCache.InvalidatePredicates(serviceAffinitySet) } } c.podQueue.MoveAllToActiveQueue() @@ -577,7 +583,7 @@ func (c *configFactory) onServiceUpdate(oldObj interface{}, newObj interface{}) func (c *configFactory) onServiceDelete(obj interface{}) { if c.enableEquivalenceClassCache { - c.equivalencePodCache.InvalidateCachedPredicateItemOfAllNodes(serviceAffinitySet) + c.equivalencePodCache.InvalidatePredicates(serviceAffinitySet) } c.podQueue.MoveAllToActiveQueue() } @@ -694,13 +700,13 @@ func (c *configFactory) invalidateCachedPredicatesOnUpdatePod(newPod *v1.Pod, ol if !reflect.DeepEqual(oldPod.GetLabels(), newPod.GetLabels()) { // MatchInterPodAffinity need to be reconsidered for this node, // as well as all nodes in its same failure domain. - c.equivalencePodCache.InvalidateCachedPredicateItemOfAllNodes( + c.equivalencePodCache.InvalidatePredicates( matchInterPodAffinitySet) } // if requested container resource changed, invalidate GeneralPredicates of this node if !reflect.DeepEqual(predicates.GetResourceRequest(newPod), predicates.GetResourceRequest(oldPod)) { - c.equivalencePodCache.InvalidateCachedPredicateItem( + c.equivalencePodCache.InvalidatePredicatesOnNode( newPod.Spec.NodeName, generalPredicatesSets) } } @@ -741,14 +747,14 @@ func (c *configFactory) invalidateCachedPredicatesOnDeletePod(pod *v1.Pod) { // MatchInterPodAffinity need to be reconsidered for this node, // as well as all nodes in its same failure domain. // TODO(resouer) can we just do this for nodes in the same failure domain - c.equivalencePodCache.InvalidateCachedPredicateItemOfAllNodes( + c.equivalencePodCache.InvalidatePredicates( matchInterPodAffinitySet) // if this pod have these PV, cached result of disk conflict will become invalid. for _, volume := range pod.Spec.Volumes { if volume.GCEPersistentDisk != nil || volume.AWSElasticBlockStore != nil || volume.RBD != nil || volume.ISCSI != nil { - c.equivalencePodCache.InvalidateCachedPredicateItem( + c.equivalencePodCache.InvalidatePredicatesOnNode( pod.Spec.NodeName, noDiskConflictSet) } } @@ -858,7 +864,7 @@ func (c *configFactory) invalidateCachedPredicatesOnNodeUpdate(newNode *v1.Node, if newNode.Spec.Unschedulable != oldNode.Spec.Unschedulable { invalidPredicates.Insert(predicates.CheckNodeConditionPred) } - c.equivalencePodCache.InvalidateCachedPredicateItem(newNode.GetName(), invalidPredicates) + c.equivalencePodCache.InvalidatePredicatesOnNode(newNode.GetName(), invalidPredicates) } } @@ -885,7 +891,7 @@ func (c *configFactory) deleteNodeFromCache(obj interface{}) { glog.Errorf("scheduler cache RemoveNode failed: %v", err) } if c.enableEquivalenceClassCache { - c.equivalencePodCache.InvalidateAllCachedPredicateItemOfNode(node.GetName()) + c.equivalencePodCache.InvalidateAllPredicatesOnNode(node.GetName()) } } @@ -1074,7 +1080,7 @@ func (c *configFactory) CreateFromKeys(predicateKeys, priorityKeys sets.String, // Init equivalence class cache if c.enableEquivalenceClassCache { - c.equivalencePodCache = core.NewEquivalenceCache() + c.equivalencePodCache = equivalence.NewCache() glog.Info("Created equivalence class cache") } @@ -1297,10 +1303,10 @@ func NewPodInformer(client clientset.Interface, resyncPeriod time.Duration) core func (c *configFactory) MakeDefaultErrorFunc(backoff *util.PodBackoff, podQueue core.SchedulingQueue) func(pod *v1.Pod, err error) { return func(pod *v1.Pod, err error) { if err == core.ErrNoNodesAvailable { - glog.V(4).Infof("Unable to schedule %v %v: no nodes are registered to the cluster; waiting", pod.Namespace, pod.Name) + glog.V(4).Infof("Unable to schedule %v/%v: no nodes are registered to the cluster; waiting", pod.Namespace, pod.Name) } else { if _, ok := err.(*core.FitError); ok { - glog.V(4).Infof("Unable to schedule %v %v: no fit: %v; waiting", pod.Namespace, pod.Name, err) + glog.V(4).Infof("Unable to schedule %v/%v: no fit: %v; waiting", pod.Namespace, pod.Name, err) } else if errors.IsNotFound(err) { if errStatus, ok := err.(errors.APIStatus); ok && errStatus.Status().Details.Kind == "node" { nodeName := errStatus.Status().Details.Name @@ -1315,12 +1321,12 @@ func (c *configFactory) MakeDefaultErrorFunc(backoff *util.PodBackoff, podQueue c.schedulerCache.RemoveNode(&node) // invalidate cached predicate for the node if c.enableEquivalenceClassCache { - c.equivalencePodCache.InvalidateAllCachedPredicateItemOfNode(nodeName) + c.equivalencePodCache.InvalidateAllPredicatesOnNode(nodeName) } } } } else { - glog.Errorf("Error scheduling %v %v: %v; retrying", pod.Namespace, pod.Name, err) + glog.Errorf("Error scheduling %v/%v: %v; retrying", pod.Namespace, pod.Name, err) } } @@ -1413,7 +1419,7 @@ type podConditionUpdater struct { } func (p *podConditionUpdater) Update(pod *v1.Pod, condition *v1.PodCondition) error { - glog.V(2).Infof("Updating pod condition for %s/%s to (%s==%s)", pod.Namespace, pod.Name, condition.Type, condition.Status) + glog.V(3).Infof("Updating pod condition for %s/%s to (%s==%s)", pod.Namespace, pod.Name, condition.Type, condition.Status) if podutil.UpdatePodCondition(&pod.Status, condition) { _, err := p.Client.CoreV1().Pods(pod.Namespace).UpdateStatus(pod) return err diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/metrics/metrics.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/metrics/metrics.go index 0250ddb76d..1b5d77b476 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/metrics/metrics.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/metrics/metrics.go @@ -27,16 +27,21 @@ const ( // SchedulerSubsystem - subsystem name used by scheduler SchedulerSubsystem = "scheduler" // SchedulingLatencyName - scheduler latency metric name - SchedulingLatencyName = "scheduling_latencies_summary" + SchedulingLatencyName = "scheduling_latency_seconds" // OperationLabel - operation label name OperationLabel = "operation" + // Below are possible values for the operation label. Each represents a substep of e2e scheduling: + + // PredicateEvaluation - predicate evaluation operation label value + PredicateEvaluation = "predicate_evaluation" + // PriorityEvaluation - priority evaluation operation label value + PriorityEvaluation = "priority_evaluation" + // PreemptionEvaluation - preemption evaluation operation label value (occurs in case of scheduling fitError). + PreemptionEvaluation = "preemption_evaluation" // Binding - binding operation label value Binding = "binding" - // SchedulingAlgorithm - scheduling algorithm operation label value - SchedulingAlgorithm = "scheduling_algorithm" // E2eScheduling - e2e scheduling operation label value - E2eScheduling = "e2e_scheduling" ) // All the histogram based metrics have 1ms as size for the smallest bucket. @@ -45,13 +50,29 @@ var ( prometheus.SummaryOpts{ Subsystem: SchedulerSubsystem, Name: SchedulingLatencyName, - Help: "Scheduling latency in microseconds split by sub-parts of the scheduling operation", + Help: "Scheduling latency in seconds split by sub-parts of the scheduling operation", // Make the sliding window of 5h. // TODO: The value for this should be based on some SLI definition (long term). MaxAge: 5 * time.Hour, }, []string{OperationLabel}, ) + E2eSchedulingLatency = prometheus.NewHistogram( + prometheus.HistogramOpts{ + Subsystem: SchedulerSubsystem, + Name: "e2e_scheduling_latency_microseconds", + Help: "E2e scheduling latency (scheduling algorithm + binding)", + Buckets: prometheus.ExponentialBuckets(1000, 2, 15), + }, + ) + SchedulingAlgorithmLatency = prometheus.NewHistogram( + prometheus.HistogramOpts{ + Subsystem: SchedulerSubsystem, + Name: "scheduling_algorithm_latency_microseconds", + Help: "Scheduling algorithm latency", + Buckets: prometheus.ExponentialBuckets(1000, 2, 15), + }, + ) SchedulingAlgorithmPredicateEvaluationDuration = prometheus.NewHistogram( prometheus.HistogramOpts{ Subsystem: SchedulerSubsystem, @@ -76,6 +97,14 @@ var ( Buckets: prometheus.ExponentialBuckets(1000, 2, 15), }, ) + BindingLatency = prometheus.NewHistogram( + prometheus.HistogramOpts{ + Subsystem: SchedulerSubsystem, + Name: "binding_latency_microseconds", + Help: "Binding latency", + Buckets: prometheus.ExponentialBuckets(1000, 2, 15), + }, + ) PreemptionVictims = prometheus.NewGauge( prometheus.GaugeOpts{ Subsystem: SchedulerSubsystem, @@ -90,6 +119,9 @@ var ( }) metricsList = []prometheus.Collector{ SchedulingLatency, + E2eSchedulingLatency, + SchedulingAlgorithmLatency, + BindingLatency, SchedulingAlgorithmPredicateEvaluationDuration, SchedulingAlgorithmPriorityEvaluationDuration, SchedulingAlgorithmPremptionEvaluationDuration, @@ -102,6 +134,7 @@ var registerMetrics sync.Once // Register all metrics. func Register() { + // Register the metrics. registerMetrics.Do(func() { for _, metric := range metricsList { prometheus.MustRegister(metric) @@ -118,3 +151,8 @@ func Reset() { func SinceInMicroseconds(start time.Time) float64 { return float64(time.Since(start).Nanoseconds() / time.Microsecond.Nanoseconds()) } + +// SinceInSeconds gets the time since the specified start in seconds. +func SinceInSeconds(start time.Time) float64 { + return time.Since(start).Seconds() +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/scheduler.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/scheduler.go index b4667d4ecb..8e6fc61ae0 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/scheduler.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/scheduler.go @@ -34,6 +34,7 @@ import ( schedulerapi "k8s.io/kubernetes/pkg/scheduler/api" schedulercache "k8s.io/kubernetes/pkg/scheduler/cache" "k8s.io/kubernetes/pkg/scheduler/core" + "k8s.io/kubernetes/pkg/scheduler/core/equivalence" "k8s.io/kubernetes/pkg/scheduler/metrics" "k8s.io/kubernetes/pkg/scheduler/util" "k8s.io/kubernetes/pkg/scheduler/volumebinder" @@ -104,7 +105,7 @@ type Config struct { SchedulerCache schedulercache.Cache // Ecache is used for optimistically invalid affected cache items after // successfully binding a pod - Ecache *core.EquivalenceCache + Ecache *equivalence.Cache NodeLister algorithm.NodeLister Algorithm algorithm.ScheduleAlgorithm GetBinder func(pod *v1.Pod) Binder @@ -191,7 +192,6 @@ func (sched *Scheduler) Config() *Config { func (sched *Scheduler) schedule(pod *v1.Pod) (string, error) { host, err := sched.config.Algorithm.Schedule(pod, sched.config.NodeLister) if err != nil { - glog.V(1).Infof("Failed to schedule pod: %v/%v", pod.Namespace, pod.Name) pod = pod.DeepCopy() sched.config.Error(pod, err) sched.config.Recorder.Eventf(pod, v1.EventTypeWarning, "FailedScheduling", "%v", err) @@ -284,7 +284,7 @@ func (sched *Scheduler) assumeAndBindVolumes(assumed *v1.Pod, host string) error if bindingRequired { if sched.config.Ecache != nil { invalidPredicates := sets.NewString(predicates.CheckVolumeBindingPred) - sched.config.Ecache.InvalidateCachedPredicateItemOfAllNodes(invalidPredicates) + sched.config.Ecache.InvalidatePredicates(invalidPredicates) } // bindVolumesWorker() will update the Pod object to put it back in the scheduler queue @@ -429,7 +429,8 @@ func (sched *Scheduler) bind(assumed *v1.Pod, b *v1.Binding) error { return err } - metrics.SchedulingLatency.WithLabelValues(metrics.Binding).Observe(metrics.SinceInMicroseconds(bindingStart)) + metrics.BindingLatency.Observe(metrics.SinceInMicroseconds(bindingStart)) + metrics.SchedulingLatency.WithLabelValues(metrics.Binding).Observe(metrics.SinceInSeconds(bindingStart)) sched.config.Recorder.Eventf(assumed, v1.EventTypeNormal, "Scheduled", "Successfully assigned %v/%v to %v", assumed.Namespace, assumed.Name, b.Target.Name) return nil } @@ -458,10 +459,11 @@ func (sched *Scheduler) scheduleOne() { sched.preempt(pod, fitError) metrics.PreemptionAttempts.Inc() metrics.SchedulingAlgorithmPremptionEvaluationDuration.Observe(metrics.SinceInMicroseconds(preemptionStartTime)) + metrics.SchedulingLatency.WithLabelValues(metrics.PreemptionEvaluation).Observe(metrics.SinceInSeconds(preemptionStartTime)) } return } - metrics.SchedulingLatency.WithLabelValues(metrics.SchedulingAlgorithm).Observe(metrics.SinceInMicroseconds(start)) + metrics.SchedulingAlgorithmLatency.Observe(metrics.SinceInMicroseconds(start)) // Tell the cache to assume that a pod now is running on a given node, even though it hasn't been bound yet. // This allows us to keep scheduling without waiting on binding to occur. assumedPod := pod.DeepCopy() @@ -496,7 +498,7 @@ func (sched *Scheduler) scheduleOne() { Name: suggestedHost, }, }) - metrics.SchedulingLatency.WithLabelValues(metrics.E2eScheduling).Observe(metrics.SinceInMicroseconds(start)) + metrics.E2eSchedulingLatency.Observe(metrics.SinceInMicroseconds(start)) if err != nil { glog.Errorf("Internal error binding pod: (%v)", err) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/util/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/util/BUILD index 87bce617c1..35241c873f 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/util/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/util/BUILD @@ -15,8 +15,8 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/apis/scheduling:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", ], ) @@ -30,10 +30,10 @@ go_library( deps = [ "//pkg/apis/scheduling:go_default_library", "//pkg/features:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/volumebinder/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/volumebinder/BUILD index 0656eeee27..c1eaa52ec7 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/volumebinder/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/volumebinder/BUILD @@ -7,12 +7,12 @@ go_library( visibility = ["//visibility:public"], deps = [ "//pkg/controller/volume/persistentvolume:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/client-go/informers/core/v1:go_default_library", - "//vendor/k8s.io/client-go/informers/storage/v1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/util/workqueue:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/client-go/informers/core/v1:go_default_library", + "//staging/src/k8s.io/client-go/informers/storage/v1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/util/workqueue:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/security/apparmor/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/security/apparmor/BUILD index 82829b3421..576a278030 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/security/apparmor/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/security/apparmor/BUILD @@ -11,46 +11,15 @@ go_library( srcs = [ "helpers.go", "validate.go", - ] + select({ - "@io_bazel_rules_go//go/platform:android": [ - "validate_disabled.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "validate_disabled.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "validate_disabled.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "validate_disabled.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "validate_disabled.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "validate_disabled.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "validate_disabled.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "validate_disabled.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "validate_disabled.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "validate_disabled.go", - ], - "//conditions:default": [], - }), + "validate_disabled.go", + ], importpath = "k8s.io/kubernetes/pkg/security/apparmor", deps = [ "//pkg/features:go_default_library", "//pkg/kubelet/types:go_default_library", "//pkg/util/file:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", ], ) @@ -62,9 +31,9 @@ go_test( ], embed = [":go_default_library"], deps = [ + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/security/podsecuritypolicy/seccomp/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/security/podsecuritypolicy/seccomp/BUILD index 97a4a3eb4d..49f4a846c2 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/security/podsecuritypolicy/seccomp/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/security/podsecuritypolicy/seccomp/BUILD @@ -12,7 +12,7 @@ go_library( importpath = "k8s.io/kubernetes/pkg/security/podsecuritypolicy/seccomp", deps = [ "//pkg/apis/core:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", ], ) @@ -22,7 +22,7 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/apis/core:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/security/podsecuritypolicy/sysctl/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/security/podsecuritypolicy/sysctl/BUILD index 445907ccf3..2a774ad86a 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/security/podsecuritypolicy/sysctl/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/security/podsecuritypolicy/sysctl/BUILD @@ -15,7 +15,7 @@ go_library( importpath = "k8s.io/kubernetes/pkg/security/podsecuritypolicy/sysctl", deps = [ "//pkg/apis/core:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/security/podsecuritypolicy/util/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/security/podsecuritypolicy/util/BUILD index 24c8ec07c5..e1f87a5d3a 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/security/podsecuritypolicy/util/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/security/podsecuritypolicy/util/BUILD @@ -16,7 +16,7 @@ go_library( deps = [ "//pkg/apis/core:go_default_library", "//pkg/apis/policy:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/securitycontext/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/securitycontext/BUILD index def21ae179..9ef45c6e21 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/securitycontext/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/securitycontext/BUILD @@ -17,7 +17,7 @@ go_library( importpath = "k8s.io/kubernetes/pkg/securitycontext", deps = [ "//pkg/apis/core:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", ], ) @@ -30,8 +30,8 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/apis/core:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/serviceaccount/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/serviceaccount/BUILD index 63ddcf9282..71a9836dce 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/serviceaccount/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/serviceaccount/BUILD @@ -17,28 +17,14 @@ go_library( importpath = "k8s.io/kubernetes/pkg/serviceaccount", deps = [ "//pkg/apis/core:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/serviceaccount:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/authentication/user:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/gopkg.in/square/go-jose.v2:go_default_library", "//vendor/gopkg.in/square/go-jose.v2/jwt:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/serviceaccount:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library", - ], -) - -go_test( - name = "go_default_xtest", - srcs = ["jwt_test.go"], - deps = [ - ":go_default_library", - "//pkg/controller/serviceaccount:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", - "//vendor/k8s.io/client-go/util/cert:go_default_library", ], ) @@ -59,13 +45,18 @@ go_test( name = "go_default_test", srcs = [ "claims_test.go", + "jwt_test.go", "util_test.go", ], embed = [":go_default_library"], deps = [ "//pkg/apis/core:go_default_library", + "//pkg/controller/serviceaccount:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", + "//staging/src/k8s.io/client-go/util/cert:go_default_library", "//vendor/gopkg.in/square/go-jose.v2/jwt:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/serviceaccount/claims.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/serviceaccount/claims.go index 9acc6ccc12..44c8cb3c08 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/serviceaccount/claims.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/serviceaccount/claims.go @@ -165,7 +165,7 @@ func (v *validator) Validate(_ string, public *jwt.Claims, privateObj interface{ // Make sure token hasn't been invalidated by deletion of the pod pod, err := v.getter.GetPod(namespace, podref.Name) if err != nil { - glog.V(4).Infof("Could not retrieve bound secret %s/%s for service account %s/%s: %v", namespace, podref.Name, namespace, saref.Name, err) + glog.V(4).Infof("Could not retrieve bound pod %s/%s for service account %s/%s: %v", namespace, podref.Name, namespace, saref.Name, err) return "", "", "", errors.New("Token has been invalidated") } if pod.DeletionTimestamp != nil { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/async/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/async/BUILD index 6ea6e5d8d2..57830ca887 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/async/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/async/BUILD @@ -14,8 +14,8 @@ go_library( ], importpath = "k8s.io/kubernetes/pkg/util/async", deps = [ + "//staging/src/k8s.io/client-go/util/flowcontrol:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/client-go/util/flowcontrol:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/bandwidth/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/bandwidth/BUILD index c78108a2a3..2854892376 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/bandwidth/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/bandwidth/BUILD @@ -12,50 +12,17 @@ go_library( "doc.go", "fake_shaper.go", "interfaces.go", + "linux.go", + "unsupported.go", "utils.go", - ] + select({ - "@io_bazel_rules_go//go/platform:android": [ - "unsupported.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "unsupported.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "unsupported.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "unsupported.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "linux.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "unsupported.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "unsupported.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "unsupported.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "unsupported.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "unsupported.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "unsupported.go", - ], - "//conditions:default": [], - }), + ], importpath = "k8s.io/kubernetes/pkg/util/bandwidth", deps = [ - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", ] + select({ "@io_bazel_rules_go//go/platform:linux": [ + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//vendor/k8s.io/utils/exec:go_default_library", ], "//conditions:default": [], @@ -65,18 +32,14 @@ go_library( go_test( name = "go_default_test", srcs = [ + "linux_test.go", "utils_test.go", - ] + select({ - "@io_bazel_rules_go//go/platform:linux": [ - "linux_test.go", - ], - "//conditions:default": [], - }), + ], embed = [":go_default_library"], deps = [ "//pkg/apis/core:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", ] + select({ "@io_bazel_rules_go//go/platform:linux": [ "//vendor/k8s.io/utils/exec:go_default_library", diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/config/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/config/BUILD index 88a1773f60..37e4a5f83e 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/config/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/config/BUILD @@ -13,7 +13,7 @@ go_library( "doc.go", ], importpath = "k8s.io/kubernetes/pkg/util/config", - deps = ["//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library"], + deps = ["//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library"], ) go_test( diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/conntrack/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/conntrack/BUILD index a17d15316c..e078a914fc 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/conntrack/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/conntrack/BUILD @@ -2,27 +2,23 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") go_library( name = "go_default_library", - srcs = [ - "conntrack.go", - ], + srcs = ["conntrack.go"], importpath = "k8s.io/kubernetes/pkg/util/conntrack", visibility = ["//visibility:public"], deps = [ "//pkg/util/net:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", "//vendor/k8s.io/utils/exec:go_default_library", ], ) go_test( name = "go_default_test", - srcs = [ - "conntrack_test.go", - ], + srcs = ["conntrack_test.go"], embed = [":go_default_library"], deps = [ "//pkg/util/net:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", "//vendor/k8s.io/utils/exec:go_default_library", "//vendor/k8s.io/utils/exec/testing:go_default_library", ], diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/flock/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/flock/BUILD index 040ed5d0c9..a50da6ee21 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/flock/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/flock/BUILD @@ -7,42 +7,10 @@ load( go_library( name = "go_default_library", - srcs = select({ - "@io_bazel_rules_go//go/platform:android": [ - "flock_other.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "flock_unix.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "flock_unix.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "flock_unix.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "flock_unix.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "flock_other.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "flock_unix.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "flock_unix.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "flock_other.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "flock_other.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "flock_other.go", - ], - "//conditions:default": [], - }), + srcs = [ + "flock_other.go", + "flock_unix.go", + ], importpath = "k8s.io/kubernetes/pkg/util/flock", deps = select({ "@io_bazel_rules_go//go/platform:darwin": [ diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/goroutinemap/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/goroutinemap/BUILD index 9f6bff29bd..f1d77a0335 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/goroutinemap/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/goroutinemap/BUILD @@ -12,8 +12,8 @@ go_library( importpath = "k8s.io/kubernetes/pkg/util/goroutinemap", deps = [ "//pkg/util/goroutinemap/exponentialbackoff:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", ], ) @@ -21,7 +21,7 @@ go_test( name = "go_default_test", srcs = ["goroutinemap_test.go"], embed = [":go_default_library"], - deps = ["//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library"], + deps = ["//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library"], ) filegroup( diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/io/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/io/BUILD index 93de0dcba4..92e8f2ae78 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/io/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/io/BUILD @@ -7,15 +7,8 @@ load( go_library( name = "go_default_library", - srcs = [ - "consistentread.go", - "writer.go", - ], + srcs = ["consistentread.go"], importpath = "k8s.io/kubernetes/pkg/util/io", - deps = [ - "//pkg/util/nsenter:go_default_library", - "//vendor/github.com/golang/glog:go_default_library", - ], ) filegroup( diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/io/writer.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/io/writer.go deleted file mode 100644 index 7c457d04a7..0000000000 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/io/writer.go +++ /dev/null @@ -1,87 +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 io - -import ( - "bytes" - "fmt" - "io/ioutil" - "os" - - "k8s.io/kubernetes/pkg/util/nsenter" - - "github.com/golang/glog" -) - -// Writer is an interface which allows to write data to a file. -type Writer interface { - // WriteFile mimics ioutil.WriteFile. - WriteFile(filename string, data []byte, perm os.FileMode) error -} - -// StdWriter implements Writer interface and uses standard libraries -// for writing data to files. -type StdWriter struct { -} - -// WriteFile directly calls ioutil.WriteFile. -func (writer *StdWriter) WriteFile(filename string, data []byte, perm os.FileMode) error { - return ioutil.WriteFile(filename, data, perm) -} - -// NsenterWriter is implementation of Writer interface that allows writing data -// to file using nsenter command. -// If a program (e.g. kubelet) runs in a container it may want to write data to -// a mounted device. Since in Docker, mount propagation mode is set to private, -// it will not see the mounted device in its own namespace. To work around this -// limitation one has to first enter hosts namespace (by using 'nsenter') and -// only then write data. -type NsenterWriter struct { - ne *nsenter.Nsenter -} - -// NewNsenterWriter creates a new Writer that allows writing data to file using -// nsenter command. -func NewNsenterWriter(ne *nsenter.Nsenter) *NsenterWriter { - return &NsenterWriter{ - ne: ne, - } -} - -// WriteFile calls 'nsenter cat - > ' and 'nsenter chmod' to create a -// file on the host. -func (writer *NsenterWriter) WriteFile(filename string, data []byte, perm os.FileMode) error { - echoArgs := []string{"-c", fmt.Sprintf("cat > %s", filename)} - glog.V(5).Infof("nsenter: write data to file %s by nsenter", filename) - command := writer.ne.Exec("sh", echoArgs) - command.SetStdin(bytes.NewBuffer(data)) - outputBytes, err := command.CombinedOutput() - if err != nil { - glog.Errorf("Output from writing to %q: %v", filename, string(outputBytes)) - return err - } - - chmodArgs := []string{fmt.Sprintf("%o", perm), filename} - glog.V(5).Infof("nsenter: change permissions of file %s to %s", filename, chmodArgs[0]) - outputBytes, err = writer.ne.Exec("chmod", chmodArgs).CombinedOutput() - if err != nil { - glog.Errorf("Output from chmod command: %v", string(outputBytes)) - return err - } - - return nil -} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/ipset/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/ipset/BUILD index c58b32ebdd..8be0d8d63d 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/ipset/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/ipset/BUILD @@ -19,7 +19,7 @@ go_test( srcs = ["ipset_test.go"], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//vendor/k8s.io/utils/exec:go_default_library", "//vendor/k8s.io/utils/exec/testing:go_default_library", ], diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/ipset/OWNERS b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/ipset/OWNERS index 30a0de33f7..32ba0746b7 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/ipset/OWNERS +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/ipset/OWNERS @@ -2,6 +2,7 @@ reviewers: - thockin - brendandburns - m1093782566 + - islinwb approvers: - thockin - brendandburns diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/ipset/ipset.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/ipset/ipset.go index 6ec5ca221d..e7c7991ea9 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/ipset/ipset.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/ipset/ipset.go @@ -289,7 +289,7 @@ func (runner *runner) CreateSet(set *IPSet, ignoreExistErr bool) error { // If ignoreExistErr is set to true, then the -exist option of ipset will be specified, ipset ignores the error // otherwise raised when the same set (setname and create parameters are identical) already exists. func (runner *runner) createSet(set *IPSet, ignoreExistErr bool) error { - args := []string{"create", set.Name, string(set.SetType), "comment"} + args := []string{"create", set.Name, string(set.SetType)} if set.SetType == HashIPPortIP || set.SetType == HashIPPort { args = append(args, "family", set.HashFamily, @@ -313,7 +313,7 @@ func (runner *runner) createSet(set *IPSet, ignoreExistErr bool) error { // If the -exist option is specified, ipset ignores the error otherwise raised when // the same set (setname and create parameters are identical) already exists. func (runner *runner) AddEntry(entry string, set *IPSet, ignoreExistErr bool) error { - args := []string{"add", set.Name, entry, "comment", set.Comment} + args := []string{"add", set.Name, entry} if ignoreExistErr { args = append(args, "-exist") } @@ -325,7 +325,6 @@ func (runner *runner) AddEntry(entry string, set *IPSet, ignoreExistErr bool) er // DelEntry is used to delete the specified entry from the set. func (runner *runner) DelEntry(entry string, set string) error { - entry = strings.Split(entry, " comment")[0] if _, err := runner.exec.Command(IPSetCmd, "del", set, entry).CombinedOutput(); err != nil { return fmt.Errorf("error deleting entry %s: from set: %s, error: %v", entry, set, err) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/iptables/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/iptables/BUILD index d803ccb390..3e58721fe5 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/iptables/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/iptables/BUILD @@ -11,56 +11,24 @@ go_library( srcs = [ "doc.go", "iptables.go", + "iptables_linux.go", + "iptables_unsupported.go", "save_restore.go", - ] + select({ - "@io_bazel_rules_go//go/platform:android": [ - "iptables_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "iptables_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "iptables_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "iptables_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "iptables_linux.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "iptables_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "iptables_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "iptables_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "iptables_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "iptables_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "iptables_unsupported.go", - ], - "//conditions:default": [], - }), + ], importpath = "k8s.io/kubernetes/pkg/util/iptables", deps = [ "//pkg/util/dbus:go_default_library", "//pkg/util/version:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/trace:go_default_library", "//vendor/github.com/godbus/dbus:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//vendor/k8s.io/utils/exec:go_default_library", ] + select({ "@io_bazel_rules_go//go/platform:linux": [ + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", "//vendor/golang.org/x/sys/unix:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", ], "//conditions:default": [], }), @@ -68,17 +36,15 @@ go_library( go_test( name = "go_default_test", - srcs = select({ - "@io_bazel_rules_go//go/platform:linux": [ - "iptables_test.go", - ], - "//conditions:default": [], - }), + srcs = [ + "iptables_test.go", + "save_restore_test.go", + ], embed = [":go_default_library"], deps = select({ "@io_bazel_rules_go//go/platform:linux": [ "//pkg/util/dbus:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//vendor/k8s.io/utils/exec:go_default_library", "//vendor/k8s.io/utils/exec/testing:go_default_library", ], diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/iptables/iptables.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/iptables/iptables.go index 2b932adab3..8c9b6722af 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/iptables/iptables.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/iptables/iptables.go @@ -28,6 +28,7 @@ import ( godbus "github.com/godbus/dbus" "github.com/golang/glog" "k8s.io/apimachinery/pkg/util/sets" + utiltrace "k8s.io/apiserver/pkg/util/trace" utildbus "k8s.io/kubernetes/pkg/util/dbus" utilversion "k8s.io/kubernetes/pkg/util/version" utilexec "k8s.io/utils/exec" @@ -137,6 +138,7 @@ type runner struct { dbus utildbus.Interface protocol Protocol hasCheck bool + hasListener bool waitFlag []string restoreWaitFlag []string lockfilePath string @@ -163,13 +165,11 @@ func newInternal(exec utilexec.Interface, dbus utildbus.Interface, protocol Prot dbus: dbus, protocol: protocol, hasCheck: getIPTablesHasCheckCommand(vstring), + hasListener: false, waitFlag: getIPTablesWaitFlag(vstring), restoreWaitFlag: getIPTablesRestoreWaitFlag(exec, protocol), lockfilePath: lockfilePath, } - // TODO this needs to be moved to a separate Start() or Run() function so that New() has zero side - // effects. - runner.connectToFirewallD() return runner } @@ -200,6 +200,7 @@ func (runner *runner) connectToFirewallD() { glog.V(1).Infof("Could not connect to D-Bus system bus: %s", err) return } + runner.hasListener = true rule := fmt.Sprintf("type='signal',sender='%s',path='%s',interface='%s',member='Reloaded'", firewalldName, firewalldPath, firewalldInterface) bus.BusObject().Call("org.freedesktop.DBus.AddMatch", 0, rule) @@ -317,6 +318,9 @@ func (runner *runner) SaveInto(table Table, buffer *bytes.Buffer) error { runner.mu.Lock() defer runner.mu.Unlock() + trace := utiltrace.New("iptables save") + defer trace.LogIfLong(2 * time.Second) + // run and return iptablesSaveCmd := iptablesSaveCommand(runner.protocol) args := []string{"-t", string(table)} @@ -355,6 +359,9 @@ func (runner *runner) restoreInternal(args []string, data []byte, flush FlushFla runner.mu.Lock() defer runner.mu.Unlock() + trace := utiltrace.New("iptables restore") + defer trace.LogIfLong(2 * time.Second) + if !flush { args = append(args, "--noflush") } @@ -370,6 +377,7 @@ func (runner *runner) restoreInternal(args []string, data []byte, flush FlushFla if err != nil { return err } + trace.Step("Locks grabbed") defer func(locker iptablesLocker) { if err := locker.Close(); err != nil { glog.Errorf("Failed to close iptables locks: %v", err) @@ -669,6 +677,15 @@ func (runner *runner) dbusSignalHandler(bus utildbus.Connection) { // AddReloadFunc is part of Interface func (runner *runner) AddReloadFunc(reloadFunc func()) { + runner.mu.Lock() + defer runner.mu.Unlock() + + // We only need to listen to firewalld if there are Reload functions, so lazy + // initialize the listener. + if !runner.hasListener { + runner.connectToFirewallD() + } + runner.reloadFuncs = append(runner.reloadFuncs, reloadFunc) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/iptables/save_restore.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/iptables/save_restore.go index 6f4eacacab..172f07e7fa 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/iptables/save_restore.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/iptables/save_restore.go @@ -17,8 +17,13 @@ limitations under the License. package iptables import ( + "bytes" "fmt" - "strings" +) + +var ( + commitBytes = []byte("COMMIT") + spaceBytes = []byte(" ") ) // MakeChainLine return an iptables-save/restore formatted chain line given a Chain @@ -27,41 +32,43 @@ func MakeChainLine(chain Chain) string { } // GetChainLines parses a table's iptables-save data to find chains in the table. -// It returns a map of iptables.Chain to string where the string is the chain line from the save (with counters etc). -func GetChainLines(table Table, save []byte) map[Chain]string { - chainsMap := make(map[Chain]string) - tablePrefix := "*" + string(table) +// It returns a map of iptables.Chain to []byte where the []byte is the chain line +// from save (with counters etc.). +// Note that to avoid allocations memory is SHARED with save. +func GetChainLines(table Table, save []byte) map[Chain][]byte { + chainsMap := make(map[Chain][]byte) + tablePrefix := []byte("*" + string(table)) readIndex := 0 // find beginning of table for readIndex < len(save) { - line, n := ReadLine(readIndex, save) + line, n := readLine(readIndex, save) readIndex = n - if strings.HasPrefix(line, tablePrefix) { + if bytes.HasPrefix(line, tablePrefix) { break } } // parse table lines for readIndex < len(save) { - line, n := ReadLine(readIndex, save) + line, n := readLine(readIndex, save) readIndex = n if len(line) == 0 { continue } - if strings.HasPrefix(line, "COMMIT") || strings.HasPrefix(line, "*") { + if bytes.HasPrefix(line, commitBytes) || line[0] == '*' { break - } else if strings.HasPrefix(line, "#") { + } else if line[0] == '#' { continue - } else if strings.HasPrefix(line, ":") && len(line) > 1 { + } else if line[0] == ':' && len(line) > 1 { // We assume that the contains space - chain lines have 3 fields, // space delimited. If there is no space, this line will panic. - chain := Chain(line[1:strings.Index(line, " ")]) + chain := Chain(line[1:bytes.Index(line, spaceBytes)]) chainsMap[chain] = line } } return chainsMap } -func ReadLine(readIndex int, byteArray []byte) (string, int) { +func readLine(readIndex int, byteArray []byte) ([]byte, int) { currentReadIndex := readIndex // consume left spaces @@ -89,7 +96,7 @@ func ReadLine(readIndex int, byteArray []byte) (string, int) { } else if (byteArray[currentReadIndex] == '\n') || (currentReadIndex == (len(byteArray) - 1)) { // end of line or byte buffer is reached if currentReadIndex <= leftTrimIndex { - return "", currentReadIndex + 1 + return nil, currentReadIndex + 1 } // set the rightTrimIndex if rightTrimIndex == -1 { @@ -100,11 +107,12 @@ func ReadLine(readIndex int, byteArray []byte) (string, int) { rightTrimIndex = currentReadIndex + 1 } } - return string(byteArray[leftTrimIndex:rightTrimIndex]), currentReadIndex + 1 + // Avoid unnecessary allocation. + return byteArray[leftTrimIndex:rightTrimIndex], currentReadIndex + 1 } else { // unset rightTrimIndex rightTrimIndex = -1 } } - return "", currentReadIndex + return nil, currentReadIndex } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/ipvs/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/ipvs/BUILD index 5a85d7448e..9e487e4968 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/ipvs/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/ipvs/BUILD @@ -9,14 +9,10 @@ load( go_test( name = "go_default_test", srcs = [ + "ipvs_linux_test.go", "ipvs_test.go", - ] + select({ - "@io_bazel_rules_go//go/platform:linux": [ - "ipvs_linux_test.go", - "kernelcheck_linux_test.go", - ], - "//conditions:default": [], - }), + "kernelcheck_linux_test.go", + ], embed = [":go_default_library"], deps = select({ "@io_bazel_rules_go//go/platform:linux": [ @@ -32,53 +28,11 @@ go_library( name = "go_default_library", srcs = [ "ipvs.go", - ] + select({ - "@io_bazel_rules_go//go/platform:android": [ - "ipvs_unsupported.go", - "kernelcheck_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "ipvs_unsupported.go", - "kernelcheck_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "ipvs_unsupported.go", - "kernelcheck_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "ipvs_unsupported.go", - "kernelcheck_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "ipvs_linux.go", - "kernelcheck_linux.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "ipvs_unsupported.go", - "kernelcheck_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "ipvs_unsupported.go", - "kernelcheck_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "ipvs_unsupported.go", - "kernelcheck_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "ipvs_unsupported.go", - "kernelcheck_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "ipvs_unsupported.go", - "kernelcheck_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "ipvs_unsupported.go", - "kernelcheck_unsupported.go", - ], - "//conditions:default": [], - }), + "ipvs_linux.go", + "ipvs_unsupported.go", + "kernelcheck_linux.go", + "kernelcheck_unsupported.go", + ], importpath = "k8s.io/kubernetes/pkg/util/ipvs", deps = select({ "@io_bazel_rules_go//go/platform:android": [ @@ -94,9 +48,9 @@ go_library( "//vendor/k8s.io/utils/exec:go_default_library", ], "@io_bazel_rules_go//go/platform:linux": [ + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//vendor/github.com/docker/libnetwork/ipvs:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//vendor/k8s.io/utils/exec:go_default_library", ], "@io_bazel_rules_go//go/platform:nacl": [ diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/labels/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/labels/BUILD index 51e0119f41..bee6edb724 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/labels/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/labels/BUILD @@ -13,14 +13,14 @@ go_library( "labels.go", ], importpath = "k8s.io/kubernetes/pkg/util/labels", - deps = ["//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library"], + deps = ["//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library"], ) go_test( name = "go_default_test", srcs = ["labels_test.go"], embed = [":go_default_library"], - deps = ["//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library"], + deps = ["//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library"], ) filegroup( diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/mount/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/mount/BUILD index 6f2df9acae..e8bf8b8617 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/mount/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/mount/BUILD @@ -5,66 +5,16 @@ go_library( srcs = [ "doc.go", "exec.go", + "exec_mount.go", + "exec_mount_unsupported.go", "fake.go", "mount.go", - ] + select({ - "@io_bazel_rules_go//go/platform:android": [ - "exec_mount_unsupported.go", - "mount_unsupported.go", - "nsenter_mount_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "exec_mount_unsupported.go", - "mount_unsupported.go", - "nsenter_mount_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "exec_mount_unsupported.go", - "mount_unsupported.go", - "nsenter_mount_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "exec_mount_unsupported.go", - "mount_unsupported.go", - "nsenter_mount_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "exec_mount.go", - "mount_linux.go", - "nsenter_mount.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "exec_mount_unsupported.go", - "mount_unsupported.go", - "nsenter_mount_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "exec_mount_unsupported.go", - "mount_unsupported.go", - "nsenter_mount_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "exec_mount_unsupported.go", - "mount_unsupported.go", - "nsenter_mount_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "exec_mount_unsupported.go", - "mount_unsupported.go", - "nsenter_mount_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "exec_mount_unsupported.go", - "mount_unsupported.go", - "nsenter_mount_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "exec_mount_unsupported.go", - "mount_windows.go", - "nsenter_mount_unsupported.go", - ], - "//conditions:default": [], - }), + "mount_linux.go", + "mount_unsupported.go", + "mount_windows.go", + "nsenter_mount.go", + "nsenter_mount_unsupported.go", + ], importpath = "k8s.io/kubernetes/pkg/util/mount", visibility = ["//visibility:public"], deps = [ @@ -87,8 +37,8 @@ go_library( "//pkg/util/file:go_default_library", "//pkg/util/io:go_default_library", "//pkg/util/nsenter:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//vendor/golang.org/x/sys/unix:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", ], "@io_bazel_rules_go//go/platform:nacl": [ "//pkg/util/nsenter:go_default_library", @@ -116,18 +66,12 @@ go_library( go_test( name = "go_default_test", srcs = [ + "exec_mount_test.go", + "mount_linux_test.go", + "mount_windows_test.go", + "nsenter_mount_test.go", "safe_format_and_mount_test.go", - ] + select({ - "@io_bazel_rules_go//go/platform:linux": [ - "exec_mount_test.go", - "mount_linux_test.go", - "nsenter_mount_test.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "mount_windows_test.go", - ], - "//conditions:default": [], - }), + ], embed = [":go_default_library"], deps = [ "//vendor/k8s.io/utils/exec/testing:go_default_library", diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/mount/exec_mount.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/mount/exec_mount.go index fe7dcbd7ef..3c6638328f 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/mount/exec_mount.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/mount/exec_mount.go @@ -140,6 +140,10 @@ func (m *execMounter) ExistsPath(pathname string) (bool, error) { return m.wrappedMounter.ExistsPath(pathname) } +func (m *execMounter) EvalHostSymlinks(pathname string) (string, error) { + return m.wrappedMounter.EvalHostSymlinks(pathname) +} + func (m *execMounter) PrepareSafeSubpath(subPath Subpath) (newHostPath string, cleanupAction func(), err error) { return m.wrappedMounter.PrepareSafeSubpath(subPath) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/mount/exec_mount_unsupported.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/mount/exec_mount_unsupported.go index 6854b32b26..d5a1fdc58c 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/mount/exec_mount_unsupported.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/mount/exec_mount_unsupported.go @@ -87,6 +87,10 @@ func (mounter *execMounter) ExistsPath(pathname string) (bool, error) { return true, errors.New("not implemented") } +func (m *execMounter) EvalHostSymlinks(pathname string) (string, error) { + return "", errors.New("not implemented") +} + func (mounter *execMounter) PrepareSafeSubpath(subPath Subpath) (newHostPath string, cleanupAction func(), err error) { return subPath.Path, nil, nil } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/mount/fake.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/mount/fake.go index 10832fd321..a354ca99fd 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/mount/fake.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/mount/fake.go @@ -29,6 +29,7 @@ import ( type FakeMounter struct { MountPoints []MountPoint Log []FakeAction + Filesystem map[string]FileType // Some tests run things in parallel, make sure the mounter does not produce // any golang's DATA RACE warnings. mutex sync.Mutex @@ -190,6 +191,9 @@ func (f *FakeMounter) MakeRShared(path string) error { } func (f *FakeMounter) GetFileType(pathname string) (FileType, error) { + if t, ok := f.Filesystem[pathname]; ok { + return t, nil + } return FileType("fake"), nil } @@ -202,7 +206,14 @@ func (f *FakeMounter) MakeFile(pathname string) error { } func (f *FakeMounter) ExistsPath(pathname string) (bool, error) { - return false, errors.New("not implemented") + if _, ok := f.Filesystem[pathname]; ok { + return true, nil + } + return false, nil +} + +func (f *FakeMounter) EvalHostSymlinks(pathname string) (string, error) { + return pathname, nil } func (f *FakeMounter) PrepareSafeSubpath(subPath Subpath) (newHostPath string, cleanupAction func(), err error) { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/mount/mount.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/mount/mount.go index f5ce194cac..ea9cbe1c69 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/mount/mount.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/mount/mount.go @@ -96,6 +96,9 @@ type Interface interface { // Will operate in the host mount namespace if kubelet is running in a container. // Error is returned on any other error than "file not found". ExistsPath(pathname string) (bool, error) + // EvalHostSymlinks returns the path name after evaluating symlinks. + // Will operate in the host mount namespace if kubelet is running in a container. + EvalHostSymlinks(pathname string) (string, error) // CleanSubPaths removes any bind-mounts created by PrepareSafeSubpath in given // pod volume directory. CleanSubPaths(podDir string, volumeName string) error diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/mount/mount_linux.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/mount/mount_linux.go index e80dad590a..33a3cb8e73 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/mount/mount_linux.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/mount/mount_linux.go @@ -155,41 +155,6 @@ func (m *Mounter) doMount(mounterPath string, mountCmd string, source string, ta return err } -// GetMountRefs finds all other references to the device referenced -// by mountPath; returns a list of paths. -func GetMountRefs(mounter Interface, mountPath string) ([]string, error) { - mps, err := mounter.List() - if err != nil { - return nil, err - } - // Find the device name. - deviceName := "" - // If mountPath is symlink, need get its target path. - slTarget, err := filepath.EvalSymlinks(mountPath) - if err != nil { - slTarget = mountPath - } - for i := range mps { - if mps[i].Path == slTarget { - deviceName = mps[i].Device - break - } - } - - // Find all references to the device. - var refs []string - if deviceName == "" { - glog.Warningf("could not determine device for path: %q", mountPath) - } else { - for i := range mps { - if mps[i].Device == deviceName && mps[i].Path != slTarget { - refs = append(refs, mps[i].Path) - } - } - } - return refs, nil -} - // detectSystemd returns true if OS runs with systemd as init. When not sure // (permission errors, ...), it returns false. // There may be different ways how to detect systemd, this one makes sure that @@ -352,7 +317,7 @@ func (mounter *Mounter) GetDeviceNameFromMount(mountPath, pluginDir string) (str // the mount path reference should match the given plugin directory. In case no mount path reference // matches, returns the volume name taken from its given mountPath func getDeviceNameFromMount(mounter Interface, mountPath, pluginDir string) (string, error) { - refs, err := GetMountRefs(mounter, mountPath) + refs, err := mounter.GetMountRefs(mountPath) if err != nil { glog.V(4).Infof("GetMountRefs failed for mount path %q: %v", mountPath, err) return "", err @@ -454,6 +419,10 @@ func (mounter *Mounter) ExistsPath(pathname string) (bool, error) { return utilfile.FileExists(pathname) } +func (mounter *Mounter) EvalHostSymlinks(pathname string) (string, error) { + return filepath.EvalSymlinks(pathname) +} + // formatAndMount uses unix utils to format and mount the given disk func (mounter *SafeFormatAndMount) formatAndMount(source string, target string, fstype string, options []string) error { readOnly := false @@ -583,7 +552,7 @@ func (mounter *SafeFormatAndMount) GetDiskFormat(disk string) (string, error) { } if len(pttype) > 0 { - glog.V(4).Infof("Disk %s detected partition table type: %s", pttype) + glog.V(4).Infof("Disk %s detected partition table type: %s", disk, pttype) // Returns a special non-empty string as filesystem type, then kubelet // will not format it. return "unknown data, probably partitions", nil diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/mount/mount_unsupported.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/mount/mount_unsupported.go index 6143aec182..cd6f1a28f2 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/mount/mount_unsupported.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/mount/mount_unsupported.go @@ -46,12 +46,6 @@ func (mounter *Mounter) Unmount(target string) error { return unsupportedErr } -// GetMountRefs finds all other references to the device referenced -// by mountPath; returns a list of paths. -func GetMountRefs(mounter Interface, mountPath string) ([]string, error) { - return []string{}, unsupportedErr -} - func (mounter *Mounter) List() ([]MountPoint, error) { return []MountPoint{}, unsupportedErr } @@ -112,6 +106,10 @@ func (mounter *Mounter) ExistsPath(pathname string) (bool, error) { return true, errors.New("not implemented") } +func (mounter *Mounter) EvalHostSymlinks(pathname string) (string, error) { + return "", unsupportedErr +} + func (mounter *Mounter) PrepareSafeSubpath(subPath Subpath) (newHostPath string, cleanupAction func(), err error) { return subPath.Path, nil, unsupportedErr } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/mount/mount_windows.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/mount/mount_windows.go index 5c57a57d06..a690167a99 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/mount/mount_windows.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/mount/mount_windows.go @@ -83,14 +83,20 @@ func (mounter *Mounter) Mount(source string, target string, fstype string, optio return fmt.Errorf("azureMount: only cifs mount is supported now, fstype: %q, mounting source (%q), target (%q), with options (%q)", fstype, source, target, options) } - cmdLine := fmt.Sprintf(`$User = "%s";$PWord = ConvertTo-SecureString -String "%s" -AsPlainText -Force;`+ - `$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, $PWord`, - options[0], options[1]) - bindSource = source - cmdLine += fmt.Sprintf(";New-SmbGlobalMapping -RemotePath %s -Credential $Credential", source) - if output, err := exec.Command("powershell", "/c", cmdLine).CombinedOutput(); err != nil { + // use PowerShell Environment Variables to store user input string to prevent command line injection + // https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_environment_variables?view=powershell-5.1 + cmdLine := fmt.Sprintf(`$PWord = ConvertTo-SecureString -String $Env:smbpassword -AsPlainText -Force` + + `;$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $Env:smbuser, $PWord` + + `;New-SmbGlobalMapping -RemotePath $Env:smbremotepath -Credential $Credential`) + + cmd := exec.Command("powershell", "/c", cmdLine) + cmd.Env = append(os.Environ(), + fmt.Sprintf("smbuser=%s", options[0]), + fmt.Sprintf("smbpassword=%s", options[1]), + fmt.Sprintf("smbremotepath=%s", source)) + if output, err := cmd.CombinedOutput(); err != nil { return fmt.Errorf("azureMount: SmbGlobalMapping failed: %v, only SMB mount is supported now, output: %q", err, string(output)) } } @@ -114,16 +120,6 @@ func (mounter *Mounter) Unmount(target string) error { return nil } -// GetMountRefs finds all other references to the device(drive) referenced -// by mountPath; returns a list of paths. -func GetMountRefs(mounter Interface, mountPath string) ([]string, error) { - refs, err := getAllParentLinks(normalizeWindowsPath(mountPath)) - if err != nil { - return nil, err - } - return refs, nil -} - // List returns a list of all mounted filesystems. todo func (mounter *Mounter) List() ([]MountPoint, error) { return []MountPoint{}, nil @@ -170,7 +166,7 @@ func (mounter *Mounter) GetDeviceNameFromMount(mountPath, pluginDir string) (str // the mount path reference should match the given plugin directory. In case no mount path reference // matches, returns the volume name taken from its given mountPath func getDeviceNameFromMount(mounter Interface, mountPath, pluginDir string) (string, error) { - refs, err := GetMountRefs(mounter, mountPath) + refs, err := mounter.GetMountRefs(mountPath) if err != nil { glog.V(4).Infof("GetMountRefs failed for mount path %q: %v", mountPath, err) return "", err @@ -242,6 +238,11 @@ func (mounter *Mounter) ExistsPath(pathname string) (bool, error) { return utilfile.FileExists(pathname) } +// EvalHostSymlinks returns the path name after evaluating symlinks +func (mounter *Mounter) EvalHostSymlinks(pathname string) (string, error) { + return filepath.EvalSymlinks(pathname) +} + // check whether hostPath is within volume path // this func will lock all intermediate subpath directories, need to close handle outside of this func after container started func lockAndCheckSubPath(volumePath, hostPath string) ([]uintptr, error) { @@ -458,11 +459,11 @@ func getAllParentLinks(path string) ([]string, error) { } func (mounter *Mounter) GetMountRefs(pathname string) ([]string, error) { - realpath, err := filepath.EvalSymlinks(pathname) + refs, err := getAllParentLinks(normalizeWindowsPath(pathname)) if err != nil { return nil, err } - return getMountRefsByDev(mounter, realpath) + return refs, nil } // Note that on windows, it always returns 0. We actually don't set FSGroup on diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/mount/nsenter_mount.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/mount/nsenter_mount.go index a122411cec..bf2dbf630b 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/mount/nsenter_mount.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/mount/nsenter_mount.go @@ -287,6 +287,10 @@ func (mounter *NsenterMounter) ExistsPath(pathname string) (bool, error) { return utilfile.FileExists(kubeletpath) } +func (mounter *NsenterMounter) EvalHostSymlinks(pathname string) (string, error) { + return mounter.ne.EvalSymlinks(pathname, true) +} + func (mounter *NsenterMounter) CleanSubPaths(podDir string, volumeName string) error { return doCleanSubPaths(mounter, podDir, volumeName) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/mount/nsenter_mount_unsupported.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/mount/nsenter_mount_unsupported.go index f417ba9bc1..87c2e9ec73 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/mount/nsenter_mount_unsupported.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/mount/nsenter_mount_unsupported.go @@ -89,6 +89,10 @@ func (*NsenterMounter) ExistsPath(pathname string) (bool, error) { return true, errors.New("not implemented") } +func (*NsenterMounter) EvalHostSymlinks(pathname string) (string, error) { + return "", errors.New("not implemented") +} + func (*NsenterMounter) SafeMakeDir(pathname string, base string, perm os.FileMode) error { return nil } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/node/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/node/BUILD index 1e198dbbcf..77dbfbdd1d 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/node/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/node/BUILD @@ -13,13 +13,13 @@ go_library( deps = [ "//pkg/apis/core:go_default_library", "//pkg/kubelet/apis:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/strategicpatch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/strategicpatch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", ], ) @@ -29,8 +29,8 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/kubelet/apis:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/node/node.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/node/node.go index 6bc3ea8a77..9b036b70e3 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/node/node.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/node/node.go @@ -64,13 +64,6 @@ func GetPreferredNodeAddress(node *v1.Node, preferredAddressTypes []v1.NodeAddre return address.Address, nil } } - // If hostname was requested and no Hostname address was registered... - if addressType == v1.NodeHostName { - // ...fall back to the kubernetes.io/hostname label for compatibility with kubelets before 1.5 - if hostname, ok := node.Labels[kubeletapis.LabelHostname]; ok && len(hostname) > 0 { - return hostname, nil - } - } } return "", fmt.Errorf("no preferred addresses found; known addresses: %v", node.Status.Addresses) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/nsenter/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/nsenter/BUILD index 286b888277..05765dcc9b 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/nsenter/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/nsenter/BUILD @@ -2,42 +2,12 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") go_library( name = "go_default_library", - srcs = select({ - "@io_bazel_rules_go//go/platform:android": [ - "nsenter_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "nsenter_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "nsenter_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "nsenter_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "nsenter.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "nsenter_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "nsenter_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "nsenter_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "nsenter_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "nsenter_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "nsenter_unsupported.go", - ], - "//conditions:default": [], - }), + srcs = [ + "exec.go", + "exec_unsupported.go", + "nsenter.go", + "nsenter_unsupported.go", + ], importpath = "k8s.io/kubernetes/pkg/util/nsenter", visibility = ["//visibility:public"], deps = select({ @@ -95,12 +65,7 @@ filegroup( go_test( name = "go_default_test", - srcs = select({ - "@io_bazel_rules_go//go/platform:linux": [ - "nsenter_test.go", - ], - "//conditions:default": [], - }), + srcs = ["nsenter_test.go"], embed = [":go_default_library"], deps = select({ "@io_bazel_rules_go//go/platform:linux": [ diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/nsenter/OWNERS b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/nsenter/OWNERS new file mode 100644 index 0000000000..c4f27cb438 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/nsenter/OWNERS @@ -0,0 +1,8 @@ +reviewers: + - jsafrane + - msau42 + - cofyc +approvers: + - jsafrane + - msau42 + - cofyc diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/nsenter/exec.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/nsenter/exec.go new file mode 100644 index 0000000000..201f1270c7 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/nsenter/exec.go @@ -0,0 +1,67 @@ +// +build linux + +/* +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 nsenter + +import ( + "context" + "fmt" + "path/filepath" + + "github.com/golang/glog" + "k8s.io/utils/exec" +) + +// Executor wraps executor interface to be executed via nsenter +type Executor struct { + // Exec implementation + executor exec.Interface + // Path to the host's root proc path + hostProcMountNsPath string +} + +// NewNsenterExecutor returns new nsenter based executor +func NewNsenterExecutor(hostRootFsPath string, executor exec.Interface) *Executor { + hostProcMountNsPath := filepath.Join(hostRootFsPath, mountNsPath) + nsExecutor := &Executor{ + hostProcMountNsPath: hostProcMountNsPath, + executor: executor, + } + return nsExecutor +} + +// Command returns a command wrapped with nenter +func (nsExecutor *Executor) Command(cmd string, args ...string) exec.Cmd { + fullArgs := append([]string{fmt.Sprintf("--mount=%s", nsExecutor.hostProcMountNsPath), "--"}, + append([]string{cmd}, args...)...) + glog.V(5).Infof("Running nsenter command: %v %v", nsenterPath, fullArgs) + return nsExecutor.executor.Command(nsenterPath, fullArgs...) +} + +// CommandContext returns a CommandContext wrapped with nsenter +func (nsExecutor *Executor) CommandContext(ctx context.Context, cmd string, args ...string) exec.Cmd { + fullArgs := append([]string{fmt.Sprintf("--mount=%s", nsExecutor.hostProcMountNsPath), "--"}, + append([]string{cmd}, args...)...) + glog.V(5).Infof("Running nsenter command: %v %v", nsenterPath, fullArgs) + return nsExecutor.executor.CommandContext(ctx, nsenterPath, fullArgs...) +} + +// LookPath returns a LookPath wrapped with nsenter +func (nsExecutor *Executor) LookPath(file string) (string, error) { + return "", fmt.Errorf("not implemented, error looking up : %s", file) +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/nsenter/exec_unsupported.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/nsenter/exec_unsupported.go new file mode 100644 index 0000000000..eecbdfc292 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/nsenter/exec_unsupported.go @@ -0,0 +1,58 @@ +// +build !linux + +/* +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 nsenter + +import ( + "context" + "fmt" + + "k8s.io/utils/exec" +) + +// Executor wraps executor interface to be executed via nsenter +type Executor struct { + // Exec implementation + executor exec.Interface + // Path to the host's root proc path + hostProcMountNsPath string +} + +// NewNsenterExecutor returns new nsenter based executor +func NewNsenterExecutor(hostRootFsPath string, executor exec.Interface) *Executor { + nsExecutor := &Executor{ + hostProcMountNsPath: hostRootFsPath, + executor: executor, + } + return nsExecutor +} + +// Command returns a command wrapped with nenter +func (nsExecutor *Executor) Command(cmd string, args ...string) exec.Cmd { + return nil +} + +// CommandContext returns a CommandContext wrapped with nsenter +func (nsExecutor *Executor) CommandContext(ctx context.Context, cmd string, args ...string) exec.Cmd { + return nil +} + +// LookPath returns a LookPath wrapped with nsenter +func (nsExecutor *Executor) LookPath(file string) (string, error) { + return "", fmt.Errorf("not implemented, error looking up : %s", file) +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/oom/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/oom/BUILD index 9e666b9f7d..712fc9061a 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/oom/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/oom/BUILD @@ -12,42 +12,9 @@ go_library( "doc.go", "oom.go", "oom_fake.go", - ] + select({ - "@io_bazel_rules_go//go/platform:android": [ - "oom_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "oom_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "oom_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "oom_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "oom_linux.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "oom_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "oom_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "oom_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "oom_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "oom_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "oom_unsupported.go", - ], - "//conditions:default": [], - }), + "oom_linux.go", + "oom_unsupported.go", + ], importpath = "k8s.io/kubernetes/pkg/util/oom", deps = select({ "@io_bazel_rules_go//go/platform:linux": [ @@ -60,12 +27,7 @@ go_library( go_test( name = "go_default_test", - srcs = select({ - "@io_bazel_rules_go//go/platform:linux": [ - "oom_linux_test.go", - ], - "//conditions:default": [], - }), + srcs = ["oom_linux_test.go"], embed = [":go_default_library"], deps = select({ "@io_bazel_rules_go//go/platform:linux": [ diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/pod/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/pod/BUILD index 57a081ab7c..4192175259 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/pod/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/pod/BUILD @@ -6,10 +6,10 @@ go_library( importpath = "k8s.io/kubernetes/pkg/util/pod", visibility = ["//visibility:public"], deps = [ - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/strategicpatch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/strategicpatch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", ], ) @@ -18,9 +18,9 @@ go_test( srcs = ["pod_test.go"], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/procfs/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/procfs/BUILD index c7bc5f4a28..1c02e42970 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/procfs/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/procfs/BUILD @@ -12,47 +12,14 @@ go_library( "doc.go", "procfs.go", "procfs_fake.go", - ] + select({ - "@io_bazel_rules_go//go/platform:android": [ - "procfs_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "procfs_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "procfs_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "procfs_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "procfs_linux.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "procfs_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "procfs_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "procfs_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "procfs_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "procfs_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "procfs_unsupported.go", - ], - "//conditions:default": [], - }), + "procfs_linux.go", + "procfs_unsupported.go", + ], importpath = "k8s.io/kubernetes/pkg/util/procfs", deps = select({ "@io_bazel_rules_go//go/platform:linux": [ + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", ], "//conditions:default": [], }), @@ -60,12 +27,7 @@ go_library( go_test( name = "go_default_test", - srcs = select({ - "@io_bazel_rules_go//go/platform:linux": [ - "procfs_linux_test.go", - ], - "//conditions:default": [], - }), + srcs = ["procfs_linux_test.go"], data = [ "example_proc_cgroup", ], diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/removeall/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/removeall/BUILD index 23b0472572..9cdce022b7 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/removeall/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/removeall/BUILD @@ -12,7 +12,7 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/util/mount:go_default_library", - "//vendor/k8s.io/client-go/util/testing:go_default_library", + "//staging/src/k8s.io/client-go/util/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/resizefs/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/resizefs/BUILD index 00fedd0c1d..9d1cf01487 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/resizefs/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/resizefs/BUILD @@ -2,42 +2,10 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( name = "go_default_library", - srcs = select({ - "@io_bazel_rules_go//go/platform:android": [ - "resizefs_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "resizefs_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "resizefs_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "resizefs_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "resizefs_linux.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "resizefs_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "resizefs_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "resizefs_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "resizefs_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "resizefs_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "resizefs_unsupported.go", - ], - "//conditions:default": [], - }), + srcs = [ + "resizefs_linux.go", + "resizefs_unsupported.go", + ], importpath = "k8s.io/kubernetes/pkg/util/resizefs", visibility = ["//visibility:public"], deps = select({ diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/resourcecontainer/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/resourcecontainer/BUILD index e13b8aea09..94cd8fd941 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/resourcecontainer/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/resourcecontainer/BUILD @@ -7,42 +7,10 @@ load( go_library( name = "go_default_library", - srcs = select({ - "@io_bazel_rules_go//go/platform:android": [ - "resource_container_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "resource_container_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "resource_container_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "resource_container_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "resource_container_linux.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "resource_container_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "resource_container_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "resource_container_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "resource_container_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "resource_container_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "resource_container_unsupported.go", - ], - "//conditions:default": [], - }), + srcs = [ + "resource_container_linux.go", + "resource_container_unsupported.go", + ], importpath = "k8s.io/kubernetes/pkg/util/resourcecontainer", deps = select({ "@io_bazel_rules_go//go/platform:linux": [ diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/rlimit/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/rlimit/BUILD index 7735de7909..f8fbfa0545 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/rlimit/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/rlimit/BUILD @@ -7,42 +7,10 @@ load( go_library( name = "go_default_library", - srcs = select({ - "@io_bazel_rules_go//go/platform:android": [ - "rlimit_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "rlimit_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "rlimit_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "rlimit_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "rlimit_linux.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "rlimit_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "rlimit_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "rlimit_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "rlimit_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "rlimit_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "rlimit_unsupported.go", - ], - "//conditions:default": [], - }), + srcs = [ + "rlimit_linux.go", + "rlimit_unsupported.go", + ], importpath = "k8s.io/kubernetes/pkg/util/rlimit", deps = select({ "@io_bazel_rules_go//go/platform:linux": [ diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/selinux/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/selinux/BUILD index dae3792f4c..868c77c709 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/selinux/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/selinux/BUILD @@ -10,42 +10,9 @@ go_library( srcs = [ "doc.go", "selinux.go", - ] + select({ - "@io_bazel_rules_go//go/platform:android": [ - "selinux_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "selinux_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "selinux_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "selinux_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "selinux_linux.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "selinux_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "selinux_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "selinux_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "selinux_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "selinux_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "selinux_unsupported.go", - ], - "//conditions:default": [], - }), + "selinux_linux.go", + "selinux_unsupported.go", + ], importpath = "k8s.io/kubernetes/pkg/util/selinux", deps = select({ "@io_bazel_rules_go//go/platform:linux": [ diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/slice/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/slice/BUILD index 16325c7786..0087c317e8 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/slice/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/slice/BUILD @@ -10,7 +10,7 @@ go_library( name = "go_default_library", srcs = ["slice.go"], importpath = "k8s.io/kubernetes/pkg/util/slice", - deps = ["//vendor/k8s.io/apimachinery/pkg/util/rand:go_default_library"], + deps = ["//staging/src/k8s.io/apimachinery/pkg/util/rand:go_default_library"], ) go_test( diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/taints/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/taints/BUILD index 7bcc781951..1409f61e8f 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/taints/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/taints/BUILD @@ -13,10 +13,10 @@ go_library( deps = [ "//pkg/apis/core:go_default_library", "//pkg/apis/core/helper:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation:go_default_library", ], ) @@ -26,8 +26,8 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/apis/core:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", "//vendor/github.com/spf13/pflag:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/version/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/version/BUILD index 8194b97343..26b0a16123 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/version/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/version/BUILD @@ -13,7 +13,7 @@ go_library( "version.go", ], importpath = "k8s.io/kubernetes/pkg/version", - deps = ["//vendor/k8s.io/apimachinery/pkg/version:go_default_library"], + deps = ["//staging/src/k8s.io/apimachinery/pkg/version:go_default_library"], ) filegroup( diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/version/def.bzl b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/version/def.bzl index 9c018a4ef7..302893b1b8 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/version/def.bzl +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/version/def.bzl @@ -14,25 +14,26 @@ # Implements hack/lib/version.sh's kube::version::ldflags() for Bazel. def version_x_defs(): - # This should match the list of packages in kube::version::ldflag - stamp_pkgs = [ - "k8s.io/kubernetes/pkg/version", - # In hack/lib/version.sh, this has a vendor/ prefix. That isn't needed here? - "k8s.io/client-go/pkg/version", - ] - # This should match the list of vars in kube::version::ldflags - # It should also match the list of vars set in hack/print-workspace-status.sh. - stamp_vars = [ - "buildDate", - "gitCommit", - "gitMajor", - "gitMinor", - "gitTreeState", - "gitVersion", - ] - # Generate the cross-product. - x_defs = {} - for pkg in stamp_pkgs: - for var in stamp_vars: - x_defs["%s.%s" % (pkg, var)] = "{%s}" % var - return x_defs + # This should match the list of packages in kube::version::ldflag + stamp_pkgs = [ + "k8s.io/kubernetes/pkg/version", + "k8s.io/kubernetes/vendor/k8s.io/client-go/pkg/version", + ] + + # This should match the list of vars in kube::version::ldflags + # It should also match the list of vars set in hack/print-workspace-status.sh. + stamp_vars = [ + "buildDate", + "gitCommit", + "gitMajor", + "gitMinor", + "gitTreeState", + "gitVersion", + ] + + # Generate the cross-product. + x_defs = {} + for pkg in stamp_pkgs: + for var in stamp_vars: + x_defs["%s.%s" % (pkg, var)] = "{%s}" % var + return x_defs diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/BUILD index 28c8c8a68d..778cffc853 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/BUILD @@ -11,91 +11,44 @@ go_library( "metrics_statfs.go", "plugins.go", "volume.go", - ] + select({ - "@io_bazel_rules_go//go/platform:android": [ - "volume_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "volume_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "volume_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "volume_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "volume_linux.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "volume_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "volume_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "volume_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "volume_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "volume_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "volume_unsupported.go", - ], - "//conditions:default": [], - }), + "volume_linux.go", + "volume_unsupported.go", + ], importpath = "k8s.io/kubernetes/pkg/volume", visibility = ["//visibility:public"], deps = [ "//pkg/cloudprovider:go_default_library", - "//pkg/util/io:go_default_library", "//pkg/util/mount:go_default_library", "//pkg/volume/util/fs:go_default_library", "//pkg/volume/util/recyclerclient:go_default_library", + "//staging/src/k8s.io/api/authentication/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/authentication/v1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", ], ) go_test( name = "go_default_test", srcs = [ + "metrics_du_test.go", "metrics_nil_test.go", + "metrics_statfs_test.go", "plugins_test.go", ], embed = [":go_default_library"], deps = [ - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - ], -) - -go_test( - name = "go_default_xtest", - srcs = [ - "metrics_statfs_test.go", - ] + select({ - "@io_bazel_rules_go//go/platform:linux": [ - "metrics_du_test.go", - ], - "//conditions:default": [], - }), - deps = [ - ":go_default_library", "//pkg/volume/testing:go_default_library", - "//vendor/k8s.io/client-go/util/testing:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/client-go/util/testing:go_default_library", ] + select({ "@io_bazel_rules_go//go/platform:linux": [ "//vendor/golang.org/x/sys/unix:go_default_library", diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/aws_ebs/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/aws_ebs/BUILD index 506240f676..39fdce90c3 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/aws_ebs/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/aws_ebs/BUILD @@ -25,12 +25,12 @@ go_library( "//pkg/volume:go_default_library", "//pkg/volume/util:go_default_library", "//pkg/volume/util/volumepathhandler:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", ], ) @@ -47,13 +47,13 @@ go_test( "//pkg/util/mount:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/testing:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", + "//staging/src/k8s.io/client-go/util/testing:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", - "//vendor/k8s.io/client-go/util/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/aws_ebs/attacher.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/aws_ebs/attacher.go index ac716ed1b0..e4178068dc 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/aws_ebs/attacher.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/aws_ebs/attacher.go @@ -55,7 +55,7 @@ func (plugin *awsElasticBlockStorePlugin) NewAttacher() (volume.Attacher, error) func (plugin *awsElasticBlockStorePlugin) GetDeviceMountRefs(deviceMountPath string) ([]string, error) { mounter := plugin.host.GetMounter(plugin.GetPluginName()) - return mount.GetMountRefs(mounter, deviceMountPath) + return mounter.GetMountRefs(deviceMountPath) } func (attacher *awsElasticBlockStoreAttacher) Attach(spec *volume.Spec, nodeName types.NodeName) (string, error) { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/aws_ebs/aws_ebs.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/aws_ebs/aws_ebs.go index 4ba24bd6ff..f59c11ff18 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/aws_ebs/aws_ebs.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/aws_ebs/aws_ebs.go @@ -514,6 +514,15 @@ func (c *awsElasticBlockStoreProvisioner) Provision(selectedNode *v1.Node, allow fstype = "ext4" } + var volumeMode *v1.PersistentVolumeMode + if utilfeature.DefaultFeatureGate.Enabled(features.BlockVolume) { + volumeMode = c.options.PVC.Spec.VolumeMode + if volumeMode != nil && *volumeMode == v1.PersistentVolumeBlock { + // Block volumes should not have any FSType + fstype = "" + } + } + pv := &v1.PersistentVolume{ ObjectMeta: metav1.ObjectMeta{ Name: c.options.PVName, @@ -528,6 +537,7 @@ func (c *awsElasticBlockStoreProvisioner) Provision(selectedNode *v1.Node, allow Capacity: v1.ResourceList{ v1.ResourceName(v1.ResourceStorage): resource.MustParse(fmt.Sprintf("%dGi", sizeGB)), }, + VolumeMode: volumeMode, PersistentVolumeSource: v1.PersistentVolumeSource{ AWSElasticBlockStore: &v1.AWSElasticBlockStoreVolumeSource{ VolumeID: string(volumeID), @@ -553,9 +563,5 @@ func (c *awsElasticBlockStoreProvisioner) Provision(selectedNode *v1.Node, allow } } - if utilfeature.DefaultFeatureGate.Enabled(features.BlockVolume) { - pv.Spec.VolumeMode = c.options.PVC.Spec.VolumeMode - } - return pv, nil } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/azure_dd/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/azure_dd/BUILD index cb1ccc3bf0..9f6de8b9a3 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/azure_dd/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/azure_dd/BUILD @@ -11,46 +11,14 @@ go_library( srcs = [ "attacher.go", "azure_common.go", + "azure_common_linux.go", + "azure_common_unsupported.go", + "azure_common_windows.go", "azure_dd.go", "azure_dd_block.go", "azure_mounter.go", "azure_provision.go", - ] + select({ - "@io_bazel_rules_go//go/platform:android": [ - "azure_common_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "azure_common_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "azure_common_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "azure_common_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "azure_common_linux.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "azure_common_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "azure_common_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "azure_common_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "azure_common_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "azure_common_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "azure_common_windows.go", - ], - "//conditions:default": [], - }), + ], importpath = "k8s.io/kubernetes/pkg/volume/azure_dd", deps = [ "//pkg/apis/core:go_default_library", @@ -63,16 +31,16 @@ go_library( "//pkg/volume:go_default_library", "//pkg/volume/util:go_default_library", "//pkg/volume/util/volumepathhandler:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", "//vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute:go_default_library", "//vendor/github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2017-10-01/storage:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", ], ) @@ -101,9 +69,9 @@ go_test( "//pkg/util/mount:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/testing:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/client-go/util/testing:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/client-go/util/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/azure_dd/azure_dd.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/azure_dd/azure_dd.go index 8310e0ab00..7cbd9f56ff 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/azure_dd/azure_dd.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/azure_dd/azure_dd.go @@ -26,7 +26,6 @@ import ( "k8s.io/apimachinery/pkg/api/resource" "k8s.io/apimachinery/pkg/types" "k8s.io/kubernetes/pkg/cloudprovider/providers/azure" - "k8s.io/kubernetes/pkg/util/mount" "k8s.io/kubernetes/pkg/volume" "k8s.io/kubernetes/pkg/volume/util" ) @@ -36,7 +35,7 @@ type DiskController interface { CreateBlobDisk(dataDiskName string, storageAccountType storage.SkuName, sizeGB int) (string, error) DeleteBlobDisk(diskUri string) error - CreateManagedDisk(diskName string, storageAccountType storage.SkuName, sizeGB int, tags map[string]string) (string, error) + CreateManagedDisk(diskName string, storageAccountType storage.SkuName, resourceGroup string, sizeGB int, tags map[string]string) (string, error) DeleteManagedDisk(diskURI string) error // Attaches the disk to the host machine. @@ -58,7 +57,7 @@ type DiskController interface { DeleteVolume(diskURI string) error // Expand the disk to new size - ResizeDisk(diskName string, oldSize resource.Quantity, newSize resource.Quantity) (resource.Quantity, error) + ResizeDisk(diskURI string, oldSize resource.Quantity, newSize resource.Quantity) (resource.Quantity, error) } type azureDataDiskPlugin struct { @@ -242,7 +241,7 @@ func (plugin *azureDataDiskPlugin) ExpandVolumeDevice( return oldSize, err } - return diskController.ResizeDisk(spec.PersistentVolume.Spec.AzureDisk.DiskName, oldSize, newSize) + return diskController.ResizeDisk(spec.PersistentVolume.Spec.AzureDisk.DataDiskURI, oldSize, newSize) } func (plugin *azureDataDiskPlugin) ConstructVolumeSpec(volumeName, mountPath string) (*volume.Spec, error) { @@ -267,5 +266,5 @@ func (plugin *azureDataDiskPlugin) ConstructVolumeSpec(volumeName, mountPath str func (plugin *azureDataDiskPlugin) GetDeviceMountRefs(deviceMountPath string) ([]string, error) { m := plugin.host.GetMounter(plugin.GetPluginName()) - return mount.GetMountRefs(m, deviceMountPath) + return m.GetMountRefs(deviceMountPath) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/azure_dd/azure_provision.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/azure_dd/azure_provision.go index ee7aa78f66..cee6b25c68 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/azure_dd/azure_provision.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/azure_dd/azure_provision.go @@ -17,6 +17,7 @@ limitations under the License. package azure_dd import ( + "errors" "fmt" "strings" @@ -94,6 +95,7 @@ func (p *azureDiskProvisioner) Provision(selectedNode *v1.Node, allowedTopologie cachingMode v1.AzureDataDiskCachingMode strKind string err error + resourceGroup string ) // maxLength = 79 - (4 for ".vhd") = 75 name := util.GenerateVolumeName(p.options.ClusterName, p.options.PVName, 75) @@ -117,6 +119,8 @@ func (p *azureDiskProvisioner) Provision(selectedNode *v1.Node, allowedTopologie cachingMode = v1.AzureDataDiskCachingMode(v) case volume.VolumeParameterFSType: fsType = strings.ToLower(v) + case "resourcegroup": + resourceGroup = v default: return nil, fmt.Errorf("AzureDisk - invalid option %s in storage class", k) } @@ -142,10 +146,18 @@ func (p *azureDiskProvisioner) Provision(selectedNode *v1.Node, allowedTopologie return nil, err } + if resourceGroup != "" && kind != v1.AzureManagedDisk { + return nil, errors.New("StorageClass option 'resourceGroup' can be used only for managed disks") + } + // create disk diskURI := "" if kind == v1.AzureManagedDisk { - diskURI, err = diskController.CreateManagedDisk(name, skuName, requestGB, *(p.options.CloudTags)) + tags := make(map[string]string) + if p.options.CloudTags != nil { + tags = *(p.options.CloudTags) + } + diskURI, err = diskController.CreateManagedDisk(name, skuName, resourceGroup, requestGB, tags) if err != nil { return nil, err } @@ -163,6 +175,15 @@ func (p *azureDiskProvisioner) Provision(selectedNode *v1.Node, allowedTopologie } } + var volumeMode *v1.PersistentVolumeMode + if utilfeature.DefaultFeatureGate.Enabled(features.BlockVolume) { + volumeMode = p.options.PVC.Spec.VolumeMode + if volumeMode != nil && *volumeMode == v1.PersistentVolumeBlock { + // Block volumes should not have any FSType + fsType = "" + } + } + pv := &v1.PersistentVolume{ ObjectMeta: metav1.ObjectMeta{ Name: p.options.PVName, @@ -177,6 +198,7 @@ func (p *azureDiskProvisioner) Provision(selectedNode *v1.Node, allowedTopologie Capacity: v1.ResourceList{ v1.ResourceName(v1.ResourceStorage): resource.MustParse(fmt.Sprintf("%dGi", requestGB)), }, + VolumeMode: volumeMode, PersistentVolumeSource: v1.PersistentVolumeSource{ AzureDisk: &v1.AzureDiskVolumeSource{ CachingMode: &cachingMode, @@ -190,9 +212,5 @@ func (p *azureDiskProvisioner) Provision(selectedNode *v1.Node, allowedTopologie }, } - if utilfeature.DefaultFeatureGate.Enabled(features.BlockVolume) { - pv.Spec.VolumeMode = p.options.PVC.Spec.VolumeMode - } - return pv, nil } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/azure_file/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/azure_file/BUILD index 712b69f02b..910bbf7ce8 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/azure_file/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/azure_file/BUILD @@ -22,12 +22,12 @@ go_library( "//pkg/util/strings:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/util:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", ], ) @@ -41,11 +41,11 @@ go_test( "//pkg/util/mount:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/testing:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", "//vendor/github.com/Azure/go-autorest/autorest/to:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/cephfs/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/cephfs/BUILD index 704cce736a..63d03a82c0 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/cephfs/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/cephfs/BUILD @@ -18,10 +18,10 @@ go_library( "//pkg/util/strings:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/util:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", ], ) @@ -33,9 +33,9 @@ go_test( "//pkg/util/mount:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/testing:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/client-go/util/testing:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/client-go/util/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/cephfs/OWNERS b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/cephfs/OWNERS index 35dc489f90..5562ca53f1 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/cephfs/OWNERS +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/cephfs/OWNERS @@ -1,5 +1,6 @@ approvers: - rootfs +- jsafrane - saad-ali reviewers: - rootfs @@ -7,3 +8,4 @@ reviewers: - jsafrane - jingxu97 - msau42 +- cofyc diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/cinder/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/cinder/BUILD index 9bd619cc44..c37c3f2088 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/cinder/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/cinder/BUILD @@ -11,6 +11,7 @@ go_library( srcs = [ "attacher.go", "cinder.go", + "cinder_block.go", "cinder_util.go", "doc.go", ], @@ -18,20 +19,23 @@ go_library( deps = [ "//pkg/cloudprovider:go_default_library", "//pkg/cloudprovider/providers/openstack:go_default_library", + "//pkg/features:go_default_library", "//pkg/kubelet/apis:go_default_library", "//pkg/util/keymutex:go_default_library", "//pkg/util/mount:go_default_library", "//pkg/util/strings:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/util:go_default_library", + "//pkg/volume/util/volumepathhandler:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", "//vendor/k8s.io/utils/exec:go_default_library", ], ) @@ -40,6 +44,7 @@ go_test( name = "go_default_test", srcs = [ "attacher_test.go", + "cinder_block_test.go", "cinder_test.go", ], embed = [":go_default_library"], @@ -48,11 +53,12 @@ go_test( "//pkg/util/mount:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/testing:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/client-go/util/testing:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/client-go/util/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/cinder/attacher.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/cinder/attacher.go index fff3efd557..e650954328 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/cinder/attacher.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/cinder/attacher.go @@ -69,7 +69,7 @@ func (plugin *cinderPlugin) NewAttacher() (volume.Attacher, error) { func (plugin *cinderPlugin) GetDeviceMountRefs(deviceMountPath string) ([]string, error) { mounter := plugin.host.GetMounter(plugin.GetPluginName()) - return mount.GetMountRefs(mounter, deviceMountPath) + return mounter.GetMountRefs(deviceMountPath) } func (attacher *cinderDiskAttacher) waitOperationFinished(volumeID string) error { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/cinder/cinder.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/cinder/cinder.go index 55aec4586c..d799d4b3a6 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/cinder/cinder.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/cinder/cinder.go @@ -27,8 +27,10 @@ import ( "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" + utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/kubernetes/pkg/cloudprovider" "k8s.io/kubernetes/pkg/cloudprovider/providers/openstack" + "k8s.io/kubernetes/pkg/features" "k8s.io/kubernetes/pkg/util/keymutex" "k8s.io/kubernetes/pkg/util/mount" kstrings "k8s.io/kubernetes/pkg/util/strings" @@ -51,7 +53,7 @@ type BlockStorageProvider interface { AttachDisk(instanceID, volumeID string) (string, error) DetachDisk(instanceID, volumeID string) error DeleteVolume(volumeID string) error - CreateVolume(name string, size int, vtype, availability string, tags *map[string]string) (string, string, bool, error) + CreateVolume(name string, size int, vtype, availability string, tags *map[string]string) (string, string, string, bool, error) GetDevicePath(volumeID string) string InstanceID() (string, error) GetAttachmentDiskPath(instanceID, volumeID string) (string, error) @@ -437,7 +439,7 @@ func (c *cinderVolumeUnmounter) TearDownAt(dir string) error { // Find Cinder volumeID to lock the right volume // TODO: refactor VolumePlugin.NewUnmounter to get full volume.Spec just like // NewMounter. We could then find volumeID there without probing MountRefs. - refs, err := mount.GetMountRefs(c.mounter, dir) + refs, err := c.mounter.GetMountRefs(dir) if err != nil { glog.V(4).Infof("GetMountRefs failed: %v", err) return err @@ -454,7 +456,7 @@ func (c *cinderVolumeUnmounter) TearDownAt(dir string) error { defer c.plugin.volumeLocks.UnlockKey(c.pdName) // Reload list of references, there might be SetUpAt finished in the meantime - refs, err = mount.GetMountRefs(c.mounter, dir) + refs, err = c.mounter.GetMountRefs(dir) if err != nil { glog.V(4).Infof("GetMountRefs failed: %v", err) return err @@ -505,15 +507,20 @@ func (c *cinderVolumeProvisioner) Provision(selectedNode *v1.Node, allowedTopolo return nil, fmt.Errorf("invalid AccessModes %v: only AccessModes %v are supported", c.options.PVC.Spec.AccessModes, c.plugin.GetAccessModes()) } - if util.CheckPersistentVolumeClaimModeBlock(c.options.PVC) { - return nil, fmt.Errorf("%s does not support block volume provisioning", c.plugin.GetPluginName()) - } - volumeID, sizeGB, labels, fstype, err := c.manager.CreateVolume(c) if err != nil { return nil, err } + var volumeMode *v1.PersistentVolumeMode + if utilfeature.DefaultFeatureGate.Enabled(features.BlockVolume) { + volumeMode = c.options.PVC.Spec.VolumeMode + if volumeMode != nil && *volumeMode == v1.PersistentVolumeBlock { + // Block volumes should not have any FSType + fstype = "" + } + } + pv := &v1.PersistentVolume{ ObjectMeta: metav1.ObjectMeta{ Name: c.options.PVName, @@ -528,6 +535,7 @@ func (c *cinderVolumeProvisioner) Provision(selectedNode *v1.Node, allowedTopolo Capacity: v1.ResourceList{ v1.ResourceName(v1.ResourceStorage): resource.MustParse(fmt.Sprintf("%dGi", sizeGB)), }, + VolumeMode: volumeMode, PersistentVolumeSource: v1.PersistentVolumeSource{ Cinder: &v1.CinderPersistentVolumeSource{ VolumeID: volumeID, diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/cinder/cinder_block.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/cinder/cinder_block.go new file mode 100644 index 0000000000..02a5d74450 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/cinder/cinder_block.go @@ -0,0 +1,167 @@ +/* +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 cinder + +import ( + "fmt" + "path/filepath" + + "github.com/golang/glog" + "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/types" + "k8s.io/kubernetes/pkg/util/mount" + kstrings "k8s.io/kubernetes/pkg/util/strings" + "k8s.io/kubernetes/pkg/volume" + "k8s.io/kubernetes/pkg/volume/util" + "k8s.io/kubernetes/pkg/volume/util/volumepathhandler" +) + +var _ volume.VolumePlugin = &cinderPlugin{} +var _ volume.PersistentVolumePlugin = &cinderPlugin{} +var _ volume.BlockVolumePlugin = &cinderPlugin{} +var _ volume.DeletableVolumePlugin = &cinderPlugin{} +var _ volume.ProvisionableVolumePlugin = &cinderPlugin{} +var _ volume.ExpandableVolumePlugin = &cinderPlugin{} + +func (plugin *cinderPlugin) ConstructBlockVolumeSpec(podUID types.UID, volumeName, mapPath string) (*volume.Spec, error) { + pluginDir := plugin.host.GetVolumeDevicePluginDir(cinderVolumePluginName) + blkutil := volumepathhandler.NewBlockVolumePathHandler() + globalMapPathUUID, err := blkutil.FindGlobalMapPathUUIDFromPod(pluginDir, mapPath, podUID) + if err != nil { + return nil, err + } + glog.V(5).Infof("globalMapPathUUID: %v, err: %v", globalMapPathUUID, err) + + globalMapPath := filepath.Dir(globalMapPathUUID) + if len(globalMapPath) <= 1 { + return nil, fmt.Errorf("failed to get volume plugin information from globalMapPathUUID: %v", globalMapPathUUID) + } + + return getVolumeSpecFromGlobalMapPath(globalMapPath) +} + +func getVolumeSpecFromGlobalMapPath(globalMapPath string) (*volume.Spec, error) { + // Get volume spec information from globalMapPath + // globalMapPath example: + // plugins/kubernetes.io/{PluginName}/{DefaultKubeletVolumeDevicesDirName}/{volumeID} + // plugins/kubernetes.io/cinder/volumeDevices/vol-XXXXXX + vID := filepath.Base(globalMapPath) + if len(vID) <= 1 { + return nil, fmt.Errorf("failed to get volumeID from global path=%s", globalMapPath) + } + block := v1.PersistentVolumeBlock + cinderVolume := &v1.PersistentVolume{ + Spec: v1.PersistentVolumeSpec{ + PersistentVolumeSource: v1.PersistentVolumeSource{ + Cinder: &v1.CinderPersistentVolumeSource{ + VolumeID: vID, + }, + }, + VolumeMode: &block, + }, + } + return volume.NewSpecFromPersistentVolume(cinderVolume, true), nil +} + +// NewBlockVolumeMapper creates a new volume.BlockVolumeMapper from an API specification. +func (plugin *cinderPlugin) NewBlockVolumeMapper(spec *volume.Spec, pod *v1.Pod, _ volume.VolumeOptions) (volume.BlockVolumeMapper, error) { + // If this is called via GenerateUnmapDeviceFunc(), pod is nil. + // Pass empty string as dummy uid since uid isn't used in the case. + var uid types.UID + if pod != nil { + uid = pod.UID + } + + return plugin.newBlockVolumeMapperInternal(spec, uid, &DiskUtil{}, plugin.host.GetMounter(plugin.GetPluginName())) +} + +func (plugin *cinderPlugin) newBlockVolumeMapperInternal(spec *volume.Spec, podUID types.UID, manager cdManager, mounter mount.Interface) (volume.BlockVolumeMapper, error) { + pdName, fsType, readOnly, err := getVolumeInfo(spec) + if err != nil { + return nil, err + } + + return &cinderVolumeMapper{ + cinderVolume: &cinderVolume{ + podUID: podUID, + volName: spec.Name(), + pdName: pdName, + fsType: fsType, + manager: manager, + mounter: mounter, + plugin: plugin, + }, + readOnly: readOnly}, nil +} + +func (plugin *cinderPlugin) NewBlockVolumeUnmapper(volName string, podUID types.UID) (volume.BlockVolumeUnmapper, error) { + return plugin.newUnmapperInternal(volName, podUID, &DiskUtil{}, plugin.host.GetMounter(plugin.GetPluginName())) +} + +func (plugin *cinderPlugin) newUnmapperInternal(volName string, podUID types.UID, manager cdManager, mounter mount.Interface) (volume.BlockVolumeUnmapper, error) { + return &cinderPluginUnmapper{ + cinderVolume: &cinderVolume{ + podUID: podUID, + volName: volName, + manager: manager, + mounter: mounter, + plugin: plugin, + }}, nil +} + +func (c *cinderPluginUnmapper) TearDownDevice(mapPath, devicePath string) error { + return nil +} + +type cinderPluginUnmapper struct { + *cinderVolume +} + +var _ volume.BlockVolumeUnmapper = &cinderPluginUnmapper{} + +type cinderVolumeMapper struct { + *cinderVolume + readOnly bool +} + +var _ volume.BlockVolumeMapper = &cinderVolumeMapper{} + +func (b *cinderVolumeMapper) SetUpDevice() (string, error) { + return "", nil +} + +func (b *cinderVolumeMapper) MapDevice(devicePath, globalMapPath, volumeMapPath, volumeMapName string, podUID types.UID) error { + return util.MapBlockVolume(devicePath, globalMapPath, volumeMapPath, volumeMapName, podUID) +} + +// GetGlobalMapPath returns global map path and error +// path: plugins/kubernetes.io/{PluginName}/volumeDevices/volumeID +// plugins/kubernetes.io/cinder/volumeDevices/vol-XXXXXX +func (cd *cinderVolume) GetGlobalMapPath(spec *volume.Spec) (string, error) { + pdName, _, _, err := getVolumeInfo(spec) + if err != nil { + return "", err + } + return filepath.Join(cd.plugin.host.GetVolumeDevicePluginDir(cinderVolumePluginName), pdName), nil +} + +// GetPodDeviceMapPath returns pod device map path and volume name +// path: pods/{podUid}/volumeDevices/kubernetes.io~cinder +func (cd *cinderVolume) GetPodDeviceMapPath() (string, string) { + name := cinderVolumePluginName + return cd.plugin.host.GetPodVolumeDeviceDir(cd.podUID, kstrings.EscapeQualifiedNameForDisk(name)), cd.volName +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/cinder/cinder_util.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/cinder/cinder_util.go index 8a5e25d8da..d28a469e49 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/cinder/cinder_util.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/cinder/cinder_util.go @@ -208,10 +208,10 @@ func (util *DiskUtil) CreateVolume(c *cinderVolumeProvisioner) (volumeID string, } } - volumeID, volumeAZ, IgnoreVolumeAZ, errr := cloud.CreateVolume(name, volSizeGB, vtype, availability, c.options.CloudTags) - if errr != nil { - glog.V(2).Infof("Error creating cinder volume: %v", errr) - return "", 0, nil, "", errr + volumeID, volumeAZ, volumeRegion, IgnoreVolumeAZ, err := cloud.CreateVolume(name, volSizeGB, vtype, availability, c.options.CloudTags) + if err != nil { + glog.V(2).Infof("Error creating cinder volume: %v", err) + return "", 0, nil, "", err } glog.V(2).Infof("Successfully created cinder volume %s", volumeID) @@ -219,6 +219,7 @@ func (util *DiskUtil) CreateVolume(c *cinderVolumeProvisioner) (volumeID string, volumeLabels = make(map[string]string) if IgnoreVolumeAZ == false { volumeLabels[kubeletapis.LabelZoneFailureDomain] = volumeAZ + volumeLabels[kubeletapis.LabelZoneRegion] = volumeRegion } return volumeID, volSizeGB, volumeLabels, fstype, nil } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/configmap/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/configmap/BUILD index 718bfe6fa6..a6b4e871f7 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/configmap/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/configmap/BUILD @@ -14,16 +14,15 @@ go_library( ], importpath = "k8s.io/kubernetes/pkg/volume/configmap", deps = [ - "//pkg/util/io:go_default_library", "//pkg/util/mount:go_default_library", "//pkg/util/strings:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/util:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", ], ) @@ -36,11 +35,11 @@ go_test( "//pkg/volume/empty_dir:go_default_library", "//pkg/volume/testing:go_default_library", "//pkg/volume/util:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/configmap/configmap.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/configmap/configmap.go index 2f108bb72c..897355af5c 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/configmap/configmap.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/configmap/configmap.go @@ -24,7 +24,6 @@ import ( "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" - ioutil "k8s.io/kubernetes/pkg/util/io" "k8s.io/kubernetes/pkg/util/mount" "k8s.io/kubernetes/pkg/util/strings" "k8s.io/kubernetes/pkg/volume" @@ -93,7 +92,6 @@ func (plugin *configMapPlugin) NewMounter(spec *volume.Spec, pod *v1.Pod, opts v pod.UID, plugin, plugin.host.GetMounter(plugin.GetPluginName()), - plugin.host.GetWriter(), volume.MetricsNil{}, }, source: *spec.Volume.ConfigMap, @@ -110,7 +108,6 @@ func (plugin *configMapPlugin) NewUnmounter(volName string, podUID types.UID) (v podUID, plugin, plugin.host.GetMounter(plugin.GetPluginName()), - plugin.host.GetWriter(), volume.MetricsNil{}, }, }, nil @@ -131,7 +128,6 @@ type configMapVolume struct { podUID types.UID plugin *configMapPlugin mounter mount.Interface - writer ioutil.Writer volume.MetricsNil } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/BUILD index 54a2574eb7..e5f55a15d8 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/BUILD @@ -14,22 +14,21 @@ go_library( visibility = ["//visibility:public"], deps = [ "//pkg/features:go_default_library", - "//pkg/util/mount:go_default_library", "//pkg/util/strings:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/csi/labelmanager:go_default_library", "//pkg/volume/util:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/storage/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", "//vendor/github.com/container-storage-interface/spec/lib/go/csi/v0:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/google.golang.org/grpc:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/storage/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", ], ) @@ -48,19 +47,19 @@ go_test( "//pkg/volume/csi/fake:go_default_library", "//pkg/volume/testing:go_default_library", "//pkg/volume/util:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/storage/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", + "//staging/src/k8s.io/client-go/util/testing:go_default_library", "//vendor/github.com/container-storage-interface/spec/lib/go/csi/v0:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/storage/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", - "//vendor/k8s.io/client-go/util/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_attacher.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_attacher.go index 82fb8e6620..1709bbac0f 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_attacher.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_attacher.go @@ -135,7 +135,7 @@ func (c *csiAttacher) waitForVolumeAttachmentInternal(volumeHandle, attachID str attach, err := c.k8s.StorageV1beta1().VolumeAttachments().Get(attachID, meta.GetOptions{}) if err != nil { glog.Error(log("attacher.WaitForAttach failed for volume [%s] (will continue to try): %v", volumeHandle, err)) - return "", err + return "", fmt.Errorf("volume %v has GET error for volume attachment %v: %v", volumeHandle, attachID, err) } // if being deleted, fail fast if attach.GetDeletionTimestamp() != nil { @@ -245,7 +245,7 @@ func (c *csiAttacher) GetDeviceMountPath(spec *volume.Spec) (string, error) { return deviceMountPath, nil } -func (c *csiAttacher) MountDevice(spec *volume.Spec, devicePath string, deviceMountPath string) error { +func (c *csiAttacher) MountDevice(spec *volume.Spec, devicePath string, deviceMountPath string) (err error) { glog.V(4).Infof(log("attacher.MountDevice(%s, %s)", devicePath, deviceMountPath)) mounted, err := isDirMounted(c.plugin, deviceMountPath) @@ -269,6 +269,35 @@ func (c *csiAttacher) MountDevice(spec *volume.Spec, devicePath string, deviceMo return err } + // Store volume metadata for UnmountDevice. Keep it around even if the + // driver does not support NodeStage, UnmountDevice still needs it. + if err = os.MkdirAll(deviceMountPath, 0750); err != nil { + glog.Error(log("attacher.MountDevice failed to create dir %#v: %v", deviceMountPath, err)) + return err + } + glog.V(4).Info(log("created target path successfully [%s]", deviceMountPath)) + dataDir := filepath.Dir(deviceMountPath) + data := map[string]string{ + volDataKey.volHandle: csiSource.VolumeHandle, + volDataKey.driverName: csiSource.Driver, + } + if err = saveVolumeData(dataDir, volDataFileName, data); err != nil { + glog.Error(log("failed to save volume info data: %v", err)) + if cleanerr := os.RemoveAll(dataDir); err != nil { + glog.Error(log("failed to remove dir after error [%s]: %v", dataDir, cleanerr)) + } + return err + } + defer func() { + if err != nil { + // clean up metadata + glog.Errorf(log("attacher.MountDevice failed: %v", err)) + if err := removeMountDir(c.plugin, deviceMountPath); err != nil { + glog.Error(log("attacher.MountDevice failed to remove mount dir after errir [%s]: %v", deviceMountPath, err)) + } + } + }() + if c.csiClient == nil { c.csiClient = newCsiDriverClient(csiSource.Driver) } @@ -279,17 +308,18 @@ func (c *csiAttacher) MountDevice(spec *volume.Spec, devicePath string, deviceMo // Check whether "STAGE_UNSTAGE_VOLUME" is set stageUnstageSet, err := hasStageUnstageCapability(ctx, csi) if err != nil { - glog.Error(log("attacher.MountDevice failed to check STAGE_UNSTAGE_VOLUME: %v", err)) return err } if !stageUnstageSet { glog.Infof(log("attacher.MountDevice STAGE_UNSTAGE_VOLUME capability not set. Skipping MountDevice...")) + // defer does *not* remove the metadata file and it's correct - UnmountDevice needs it there. return nil } // Start MountDevice if deviceMountPath == "" { - return fmt.Errorf("attacher.MountDevice failed, deviceMountPath is empty") + err = fmt.Errorf("attacher.MountDevice failed, deviceMountPath is empty") + return err } nodeName := string(c.plugin.host.GetNodeName()) @@ -298,13 +328,12 @@ func (c *csiAttacher) MountDevice(spec *volume.Spec, devicePath string, deviceMo // search for attachment by VolumeAttachment.Spec.Source.PersistentVolumeName attachment, err := c.k8s.StorageV1beta1().VolumeAttachments().Get(attachID, meta.GetOptions{}) if err != nil { - glog.Error(log("attacher.MountDevice failed while getting volume attachment [id=%v]: %v", attachID, err)) - return err + return err // This err already has enough context ("VolumeAttachment xyz not found") } if attachment == nil { - glog.Error(log("unable to find VolumeAttachment [id=%s]", attachID)) - return errors.New("no existing VolumeAttachment found") + err = errors.New("no existing VolumeAttachment found") + return err } publishVolumeInfo := attachment.Status.AttachmentMetadata @@ -312,18 +341,12 @@ func (c *csiAttacher) MountDevice(spec *volume.Spec, devicePath string, deviceMo if csiSource.NodeStageSecretRef != nil { nodeStageSecrets, err = getCredentialsFromSecret(c.k8s, csiSource.NodeStageSecretRef) if err != nil { - return fmt.Errorf("fetching NodeStageSecretRef %s/%s failed: %v", + err = fmt.Errorf("fetching NodeStageSecretRef %s/%s failed: %v", csiSource.NodeStageSecretRef.Namespace, csiSource.NodeStageSecretRef.Name, err) + return err } } - // create target_dir before call to NodeStageVolume - if err := os.MkdirAll(deviceMountPath, 0750); err != nil { - glog.Error(log("attacher.MountDevice failed to create dir %#v: %v", deviceMountPath, err)) - return err - } - glog.V(4).Info(log("created target path successfully [%s]", deviceMountPath)) - //TODO (vladimirvivien) implement better AccessModes mapping between k8s and CSI accessMode := v1.ReadWriteOnce if spec.PersistentVolume.Spec.AccessModes != nil { @@ -331,10 +354,6 @@ func (c *csiAttacher) MountDevice(spec *volume.Spec, devicePath string, deviceMo } fsType := csiSource.FSType - if len(fsType) == 0 { - fsType = defaultFSType - } - err = csi.NodeStageVolume(ctx, csiSource.VolumeHandle, publishVolumeInfo, @@ -345,10 +364,6 @@ func (c *csiAttacher) MountDevice(spec *volume.Spec, devicePath string, deviceMo csiSource.VolumeAttributes) if err != nil { - glog.Errorf(log("attacher.MountDevice failed: %v", err)) - if removeMountDirErr := removeMountDir(c.plugin, deviceMountPath); removeMountDirErr != nil { - glog.Error(log("attacher.MountDevice failed to remove mount dir after a NodeStageVolume() error [%s]: %v", deviceMountPath, removeMountDirErr)) - } return err } @@ -461,10 +476,21 @@ func (c *csiAttacher) UnmountDevice(deviceMountPath string) error { glog.V(4).Info(log("attacher.UnmountDevice(%s)", deviceMountPath)) // Setup - driverName, volID, err := getDriverAndVolNameFromDeviceMountPath(c.k8s, deviceMountPath) - if err != nil { - glog.Errorf(log("attacher.UnmountDevice failed to get driver and volume name from device mount path: %v", err)) - return err + var driverName, volID string + dataDir := filepath.Dir(deviceMountPath) + data, err := loadVolumeData(dataDir, volDataFileName) + if err == nil { + driverName = data[volDataKey.driverName] + volID = data[volDataKey.volHandle] + } else { + glog.Error(log("UnmountDevice failed to load volume data file [%s]: %v", dataDir, err)) + + // The volume might have been mounted by old CSI volume plugin. Fall back to the old behavior: read PV from API server + driverName, volID, err = getDriverAndVolNameFromDeviceMountPath(c.k8s, deviceMountPath) + if err != nil { + glog.Errorf(log("attacher.UnmountDevice failed to get driver and volume name from device mount path: %v", err)) + return err + } } if c.csiClient == nil { @@ -482,6 +508,11 @@ func (c *csiAttacher) UnmountDevice(deviceMountPath string) error { } if !stageUnstageSet { glog.Infof(log("attacher.UnmountDevice STAGE_UNSTAGE_VOLUME capability not set. Skipping UnmountDevice...")) + // Just delete the global directory + json file + if err := removeMountDir(c.plugin, deviceMountPath); err != nil { + return fmt.Errorf("failed to clean up gloubal mount %s: %s", dataDir, err) + } + return nil } @@ -495,6 +526,11 @@ func (c *csiAttacher) UnmountDevice(deviceMountPath string) error { return err } + // Delete the global directory + json file + if err := removeMountDir(c.plugin, deviceMountPath); err != nil { + return fmt.Errorf("failed to clean up gloubal mount %s: %s", dataDir, err) + } + glog.V(4).Infof(log("attacher.UnmountDevice successfully requested NodeStageVolume [%s]", deviceMountPath)) return nil } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_block.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_block.go index 502747d28c..6be3ec2494 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_block.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_block.go @@ -47,19 +47,20 @@ type csiBlockMapper struct { var _ volume.BlockVolumeMapper = &csiBlockMapper{} -// GetGlobalMapPath returns a path (on the node) where the devicePath will be symlinked to -// Example: plugins/kubernetes.io/csi/volumeDevices/{volumeID} +// GetGlobalMapPath returns a path (on the node) to a device file which will be symlinked to +// Example: plugins/kubernetes.io/csi/volumeDevices/{volumeID}/dev func (m *csiBlockMapper) GetGlobalMapPath(spec *volume.Spec) (string, error) { dir := getVolumeDevicePluginDir(spec.Name(), m.plugin.host) glog.V(4).Infof(log("blockMapper.GetGlobalMapPath = %s", dir)) return dir, nil } -// GetPodDeviceMapPath returns pod's device map path and volume name -// path: pods/{podUid}/volumeDevices/kubernetes.io~csi/, {volumeID} +// GetPodDeviceMapPath returns pod's device file which will be mapped to a volume +// returns: pods/{podUid}/volumeDevices/kubernetes.io~csi/{volumeID}/dev, {volumeID} func (m *csiBlockMapper) GetPodDeviceMapPath() (string, string) { - path, specName := m.plugin.host.GetPodVolumeDeviceDir(m.podUID, csiPluginName), m.specName - glog.V(4).Infof(log("blockMapper.GetPodDeviceMapPath = %s", path)) + path := filepath.Join(m.plugin.host.GetPodVolumeDeviceDir(m.podUID, csiPluginName), m.specName, "dev") + specName := m.specName + glog.V(4).Infof(log("blockMapper.GetPodDeviceMapPath [path=%s; name=%s]", path, specName)) return path, specName } @@ -87,6 +88,9 @@ func (m *csiBlockMapper) SetUpDevice() (string, error) { return "", err } + globalMapPathBlockFile := filepath.Join(globalMapPath, "file") + glog.V(4).Infof(log("blockMapper.SetupDevice global device map path file set [%s]", globalMapPathBlockFile)) + csi := m.csiClient ctx, cancel := context.WithTimeout(context.Background(), csiTimeout) defer cancel() @@ -128,13 +132,25 @@ func (m *csiBlockMapper) SetUpDevice() (string, error) { } } - // create globalMapPath before call to NodeStageVolume + // setup path globalMapPath and block file before call to NodeStageVolume if err := os.MkdirAll(globalMapPath, 0750); err != nil { glog.Error(log("blockMapper.SetupDevice failed to create dir %s: %v", globalMapPath, err)) return "", err } glog.V(4).Info(log("blockMapper.SetupDevice created global device map path successfully [%s]", globalMapPath)) + // create block device file + blockFile, err := os.OpenFile(globalMapPathBlockFile, os.O_CREATE|os.O_RDWR, 0750) + if err != nil { + glog.Error(log("blockMapper.SetupDevice failed to create dir %s: %v", globalMapPathBlockFile, err)) + return "", err + } + if err := blockFile.Close(); err != nil { + glog.Error(log("blockMapper.SetupDevice failed to close file %s: %v", globalMapPathBlockFile, err)) + return "", err + } + glog.V(4).Info(log("blockMapper.SetupDevice created global map path block device file successfully [%s]", globalMapPathBlockFile)) + //TODO (vladimirvivien) implement better AccessModes mapping between k8s and CSI accessMode := v1.ReadWriteOnce if m.spec.PersistentVolume.Spec.AccessModes != nil { @@ -144,7 +160,7 @@ func (m *csiBlockMapper) SetUpDevice() (string, error) { err = csi.NodeStageVolume(ctx, csiSource.VolumeHandle, publishVolumeInfo, - globalMapPath, + globalMapPathBlockFile, fsTypeBlockName, accessMode, nodeStageSecrets, @@ -158,8 +174,8 @@ func (m *csiBlockMapper) SetUpDevice() (string, error) { return "", err } - glog.V(4).Infof(log("blockMapper.SetupDevice successfully requested NodeStageVolume [%s]", globalMapPath)) - return globalMapPath, nil + glog.V(4).Infof(log("blockMapper.SetupDevice successfully requested NodeStageVolume [%s]", globalMapPathBlockFile)) + return globalMapPathBlockFile, nil } func (m *csiBlockMapper) MapDevice(devicePath, globalMapPath, volumeMapPath, volumeMapName string, podUID types.UID) error { @@ -176,16 +192,29 @@ func (m *csiBlockMapper) MapDevice(devicePath, globalMapPath, volumeMapPath, vol csiSource, err := getCSISourceFromSpec(m.spec) if err != nil { - glog.Error(log("blockMapper.Map failed to get CSI persistent source: %v", err)) + glog.Error(log("blockMapper.MapDevice failed to get CSI persistent source: %v", err)) return err } - dir := filepath.Join(volumeMapPath, volumeMapName) csi := m.csiClient - ctx, cancel := context.WithTimeout(context.Background(), csiTimeout) defer cancel() + globalMapPathBlockFile := devicePath + dir, _ := m.GetPodDeviceMapPath() + targetBlockFilePath := filepath.Join(dir, "file") + glog.V(4).Infof(log("blockMapper.MapDevice target volume map file path %s", targetBlockFilePath)) + + stageCapable, err := hasStageUnstageCapability(ctx, csi) + if err != nil { + glog.Error(log("blockMapper.MapDevice failed to check for STAGE_UNSTAGE_VOLUME capabilty: %v", err)) + return err + } + + if !stageCapable { + globalMapPathBlockFile = "" + } + nodeName := string(m.plugin.host.GetNodeName()) attachID := getAttachmentName(csiSource.VolumeHandle, csiSource.Driver, nodeName) @@ -213,10 +242,22 @@ func (m *csiBlockMapper) MapDevice(devicePath, globalMapPath, volumeMapPath, vol } if err := os.MkdirAll(dir, 0750); err != nil { - glog.Error(log("blockMapper.MapDevice failed to create dir %#v: %v", dir, err)) + glog.Error(log("blockMapper.MapDevice failed to create dir %s: %v", dir, err)) return err } - glog.V(4).Info(log("blockMapper.MapDevice created NodePublish path [%s]", dir)) + glog.V(4).Info(log("blockMapper.MapDevice created target volume map path successfully [%s]", dir)) + + // create target map volume block file + targetBlockFile, err := os.OpenFile(targetBlockFilePath, os.O_CREATE|os.O_RDWR, 0750) + if err != nil { + glog.Error(log("blockMapper.MapDevice failed to create file %s: %v", targetBlockFilePath, err)) + return err + } + if err := targetBlockFile.Close(); err != nil { + glog.Error(log("blockMapper.MapDevice failed to close file %s: %v", targetBlockFilePath, err)) + return err + } + glog.V(4).Info(log("blockMapper.MapDevice created target volume map file successfully [%s]", targetBlockFilePath)) //TODO (vladimirvivien) implement better AccessModes mapping between k8s and CSI accessMode := v1.ReadWriteOnce @@ -228,8 +269,8 @@ func (m *csiBlockMapper) MapDevice(devicePath, globalMapPath, volumeMapPath, vol ctx, m.volumeID, m.readOnly, - globalMapPath, - dir, + globalMapPathBlockFile, + targetBlockFilePath, accessMode, publishVolumeInfo, csiSource.VolumeAttributes, @@ -240,7 +281,7 @@ func (m *csiBlockMapper) MapDevice(devicePath, globalMapPath, volumeMapPath, vol if err != nil { glog.Errorf(log("blockMapper.MapDevice failed: %v", err)) if err := os.RemoveAll(dir); err != nil { - glog.Error(log("blockMapper.MapDevice failed to remove mount dir after a NodePublish() error [%s]: %v", dir, err)) + glog.Error(log("blockMapper.MapDevice failed to remove mapped dir after a NodePublish() error [%s]: %v", dir, err)) } return err } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_mounter.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_mounter.go index b6d86956d1..57700895d2 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_mounter.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_mounter.go @@ -34,8 +34,6 @@ import ( "k8s.io/kubernetes/pkg/volume/util" ) -const defaultFSType = "ext4" - //TODO (vladimirvivien) move this in a central loc later var ( volDataKey = struct { @@ -177,9 +175,6 @@ func (c *csiMountMgr) SetUpAt(dir string, fsGroup *int64) error { } fsType := csiSource.FSType - if len(fsType) == 0 { - fsType = defaultFSType - } err = csi.NodePublishVolume( ctx, c.volumeID, diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_plugin.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_plugin.go index d10457686a..d1b25cc17e 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_plugin.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_plugin.go @@ -31,7 +31,6 @@ import ( "k8s.io/apimachinery/pkg/types" utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/kubernetes/pkg/features" - "k8s.io/kubernetes/pkg/util/mount" "k8s.io/kubernetes/pkg/volume" "k8s.io/kubernetes/pkg/volume/csi/labelmanager" ) @@ -85,7 +84,7 @@ var lm labelmanager.Interface // RegistrationCallback is called by kubelet's plugin watcher upon detection // of a new registration socket opened by CSI Driver registrar side car. -func RegistrationCallback(pluginName string, endpoint string, versions []string, socketPath string) (error, chan bool) { +func RegistrationCallback(pluginName string, endpoint string, versions []string, socketPath string) (chan bool, error) { glog.Infof(log("Callback from kubelet with plugin name: %s endpoint: %s versions: %s socket path: %s", pluginName, endpoint, strings.Join(versions, ","), socketPath)) @@ -96,7 +95,7 @@ func RegistrationCallback(pluginName string, endpoint string, versions []string, // Calling nodeLabelManager to update label for newly registered CSI driver err := lm.AddLabels(pluginName) if err != nil { - return err, nil + return nil, err } // Storing endpoint of newly registered CSI driver into the map, where CSI driver name will be the key // all other CSI components will be able to get the actual socket of CSI drivers by its name. @@ -249,6 +248,7 @@ func (p *csiPlugin) ConstructVolumeSpec(volumeName, mountPath string) (*volume.S glog.V(4).Info(log("plugin.ConstructVolumeSpec extracted [%#v]", volData)) + fsMode := api.PersistentVolumeFilesystem pv := &api.PersistentVolume{ ObjectMeta: meta.ObjectMeta{ Name: volData[volDataKey.specVolID], @@ -260,6 +260,7 @@ func (p *csiPlugin) ConstructVolumeSpec(volumeName, mountPath string) (*volume.S VolumeHandle: volData[volDataKey.volHandle], }, }, + VolumeMode: &fsMode, }, } @@ -309,7 +310,7 @@ func (p *csiPlugin) NewDetacher() (volume.Detacher, error) { func (p *csiPlugin) GetDeviceMountRefs(deviceMountPath string) ([]string, error) { m := p.host.GetMounter(p.GetPluginName()) - return mount.GetMountRefs(m, deviceMountPath) + return m.GetMountRefs(deviceMountPath) } // BlockVolumePlugin methods @@ -346,6 +347,7 @@ func (p *csiPlugin) NewBlockVolumeMapper(spec *volume.Spec, podRef *api.Pod, opt driverName: pvSource.Driver, readOnly: readOnly, spec: spec, + specName: spec.Name(), podUID: podRef.UID, } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/labelmanager/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/labelmanager/BUILD index 1fed833564..0f952539ea 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/labelmanager/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/labelmanager/BUILD @@ -6,12 +6,12 @@ go_library( importpath = "k8s.io/kubernetes/pkg/volume/csi/labelmanager", visibility = ["//visibility:public"], deps = [ + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", + "//staging/src/k8s.io/client-go/util/retry:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", - "//vendor/k8s.io/client-go/util/retry:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/downwardapi/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/downwardapi/BUILD index adfdd9ab9c..1e6070fd3b 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/downwardapi/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/downwardapi/BUILD @@ -16,10 +16,10 @@ go_library( "//pkg/util/strings:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/util:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", ], ) @@ -32,12 +32,12 @@ go_test( "//pkg/volume:go_default_library", "//pkg/volume/empty_dir:go_default_library", "//pkg/volume/testing:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", - "//vendor/k8s.io/client-go/util/testing:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", + "//staging/src/k8s.io/client-go/util/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/downwardapi/downwardapi.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/downwardapi/downwardapi.go index b8a2c8ec57..88f7b68f75 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/downwardapi/downwardapi.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/downwardapi/downwardapi.go @@ -20,8 +20,6 @@ import ( "fmt" "path" "path/filepath" - "sort" - "strings" "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/types" @@ -244,7 +242,7 @@ func CollectData(items []v1.DownwardAPIVolumeFile, pod *v1.Pod, host volume.Volu glog.Errorf("Unable to extract field %s: %s", fileInfo.FieldRef.FieldPath, err.Error()) errlist = append(errlist, err) } else { - fileProjection.Data = []byte(sortLines(values)) + fileProjection.Data = []byte(values) } } else if fileInfo.ResourceFieldRef != nil { containerName := fileInfo.ResourceFieldRef.ContainerName @@ -255,7 +253,7 @@ func CollectData(items []v1.DownwardAPIVolumeFile, pod *v1.Pod, host volume.Volu glog.Errorf("Unable to extract field %s: %s", fileInfo.ResourceFieldRef.Resource, err.Error()) errlist = append(errlist, err) } else { - fileProjection.Data = []byte(sortLines(values)) + fileProjection.Data = []byte(values) } } @@ -264,14 +262,6 @@ func CollectData(items []v1.DownwardAPIVolumeFile, pod *v1.Pod, host volume.Volu return data, utilerrors.NewAggregate(errlist) } -// sortLines sorts the strings generated from map based data -// (annotations and labels) -func sortLines(values string) string { - splitted := strings.Split(values, "\n") - sort.Strings(splitted) - return strings.Join(splitted, "\n") -} - func (d *downwardAPIVolume) GetPath() string { return d.plugin.host.GetPodVolumeDir(d.podUID, utilstrings.EscapeQualifiedNameForDisk(downwardAPIPluginName), d.volName) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/empty_dir/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/empty_dir/BUILD index 4d7fa11936..de80224180 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/empty_dir/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/empty_dir/BUILD @@ -11,42 +11,9 @@ go_library( srcs = [ "doc.go", "empty_dir.go", - ] + select({ - "@io_bazel_rules_go//go/platform:android": [ - "empty_dir_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "empty_dir_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "empty_dir_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "empty_dir_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "empty_dir_linux.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "empty_dir_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "empty_dir_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "empty_dir_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "empty_dir_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "empty_dir_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "empty_dir_unsupported.go", - ], - "//conditions:default": [], - }), + "empty_dir_linux.go", + "empty_dir_unsupported.go", + ], importpath = "k8s.io/kubernetes/pkg/volume/empty_dir", deps = [ "//pkg/apis/core/v1/helper:go_default_library", @@ -54,11 +21,11 @@ go_library( "//pkg/util/strings:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/util:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", ] + select({ "@io_bazel_rules_go//go/platform:linux": [ "//vendor/golang.org/x/sys/unix:go_default_library", @@ -69,12 +36,7 @@ go_library( go_test( name = "go_default_test", - srcs = select({ - "@io_bazel_rules_go//go/platform:linux": [ - "empty_dir_test.go", - ], - "//conditions:default": [], - }), + srcs = ["empty_dir_test.go"], embed = [":go_default_library"], deps = select({ "@io_bazel_rules_go//go/platform:linux": [ @@ -82,11 +44,11 @@ go_test( "//pkg/volume:go_default_library", "//pkg/volume/testing:go_default_library", "//pkg/volume/util:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/client-go/util/testing:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/client-go/util/testing:go_default_library", ], "//conditions:default": [], }), diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/fc/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/fc/BUILD index 4d3374ae9d..9b8a102b84 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/fc/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/fc/BUILD @@ -23,11 +23,11 @@ go_library( "//pkg/volume:go_default_library", "//pkg/volume/util:go_default_library", "//pkg/volume/util/volumepathhandler:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", ], ) @@ -43,11 +43,11 @@ go_test( "//pkg/volume:go_default_library", "//pkg/volume/testing:go_default_library", "//pkg/volume/util:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", - "//vendor/k8s.io/client-go/util/testing:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", + "//staging/src/k8s.io/client-go/util/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/fc/attacher.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/fc/attacher.go index 77549e9b5b..69d14fbff1 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/fc/attacher.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/fc/attacher.go @@ -51,7 +51,7 @@ func (plugin *fcPlugin) NewAttacher() (volume.Attacher, error) { func (plugin *fcPlugin) GetDeviceMountRefs(deviceMountPath string) ([]string, error) { mounter := plugin.host.GetMounter(plugin.GetPluginName()) - return mount.GetMountRefs(mounter, deviceMountPath) + return mounter.GetMountRefs(deviceMountPath) } func (attacher *fcAttacher) Attach(spec *volume.Spec, nodeName types.NodeName) (string, error) { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/fc/fc.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/fc/fc.go index 4160fe055c..4bbacfce70 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/fc/fc.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/fc/fc.go @@ -237,7 +237,7 @@ func (plugin *fcPlugin) ConstructVolumeSpec(volumeName, mountPath string) (*volu // globalPDPath : plugins/kubernetes.io/fc/50060e801049cfd1-lun-0 var globalPDPath string mounter := plugin.host.GetMounter(plugin.GetPluginName()) - paths, err := mount.GetMountRefs(mounter, mountPath) + paths, err := mounter.GetMountRefs(mountPath) if err != nil { return nil, err } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/fc/fc_util.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/fc/fc_util.go index 3908275410..a68925a5ec 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/fc/fc_util.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/fc/fc_util.go @@ -365,7 +365,7 @@ func (util *FCUtil) DetachBlockFCDisk(c fcDiskUnmapper, mapPath, devicePath stri if err.Error() != volumepathhandler.ErrDeviceNotFound { return fmt.Errorf("fc: failed to get loopback for destination path: %v, err: %v", dstPath, err) } - glog.Warning("fc: loopback for destination path: %s not found", dstPath) + glog.Warningf("fc: loopback for destination path: %s not found", dstPath) } // Detach volume from kubelet node diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/flexvolume/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/flexvolume/BUILD index 3a4ba7e1c2..fff15f102e 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/flexvolume/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/flexvolume/BUILD @@ -32,11 +32,11 @@ go_library( "//pkg/util/strings:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/util:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", "//vendor/github.com/fsnotify/fsnotify:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", "//vendor/k8s.io/utils/exec:go_default_library", ], ) @@ -60,12 +60,12 @@ go_test( "//pkg/util/mount:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/testing:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/client-go/util/testing:go_default_library", "//vendor/github.com/fsnotify/fsnotify:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/client-go/util/testing:go_default_library", "//vendor/k8s.io/utils/exec:go_default_library", "//vendor/k8s.io/utils/exec/testing:go_default_library", ], diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/flexvolume/attacher-defaults.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/flexvolume/attacher-defaults.go index e578443c47..368ac1be0b 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/flexvolume/attacher-defaults.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/flexvolume/attacher-defaults.go @@ -30,13 +30,13 @@ type attacherDefaults flexVolumeAttacher // Attach is part of the volume.Attacher interface func (a *attacherDefaults) Attach(spec *volume.Spec, hostName types.NodeName) (string, error) { - glog.Warning(logPrefix(a.plugin.flexVolumePlugin), "using default Attach for volume ", spec.Name, ", host ", hostName) + glog.Warning(logPrefix(a.plugin.flexVolumePlugin), "using default Attach for volume ", spec.Name(), ", host ", hostName) return "", nil } // WaitForAttach is part of the volume.Attacher interface func (a *attacherDefaults) WaitForAttach(spec *volume.Spec, devicePath string, timeout time.Duration) (string, error) { - glog.Warning(logPrefix(a.plugin.flexVolumePlugin), "using default WaitForAttach for volume ", spec.Name, ", device ", devicePath) + glog.Warning(logPrefix(a.plugin.flexVolumePlugin), "using default WaitForAttach for volume ", spec.Name(), ", device ", devicePath) return devicePath, nil } @@ -47,7 +47,7 @@ func (a *attacherDefaults) GetDeviceMountPath(spec *volume.Spec, mountsDir strin // MountDevice is part of the volume.Attacher interface func (a *attacherDefaults) MountDevice(spec *volume.Spec, devicePath string, deviceMountPath string, mounter mount.Interface) error { - glog.Warning(logPrefix(a.plugin.flexVolumePlugin), "using default MountDevice for volume ", spec.Name, ", device ", devicePath, ", deviceMountPath ", deviceMountPath) + glog.Warning(logPrefix(a.plugin.flexVolumePlugin), "using default MountDevice for volume ", spec.Name(), ", device ", devicePath, ", deviceMountPath ", deviceMountPath) volSourceFSType, err := getFSType(spec) if err != nil { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/flexvolume/plugin.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/flexvolume/plugin.go index 861ab4a3bb..e67318bc85 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/flexvolume/plugin.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/flexvolume/plugin.go @@ -59,12 +59,12 @@ var _ volume.AttachableVolumePlugin = &flexVolumeAttachablePlugin{} var _ volume.PersistentVolumePlugin = &flexVolumePlugin{} type PluginFactory interface { - NewFlexVolumePlugin(pluginDir, driverName string) (volume.VolumePlugin, error) + NewFlexVolumePlugin(pluginDir, driverName string, runner exec.Interface) (volume.VolumePlugin, error) } type pluginFactory struct{} -func (pluginFactory) NewFlexVolumePlugin(pluginDir, name string) (volume.VolumePlugin, error) { +func (pluginFactory) NewFlexVolumePlugin(pluginDir, name string, runner exec.Interface) (volume.VolumePlugin, error) { execPath := path.Join(pluginDir, name) driverName := utilstrings.UnescapePluginName(name) @@ -72,7 +72,7 @@ func (pluginFactory) NewFlexVolumePlugin(pluginDir, name string) (volume.VolumeP flexPlugin := &flexVolumePlugin{ driverName: driverName, execPath: execPath, - runner: exec.New(), + runner: runner, unsupportedCommands: []string{}, } @@ -265,7 +265,7 @@ func (plugin *flexVolumePlugin) isUnsupported(command string) bool { func (plugin *flexVolumePlugin) GetDeviceMountRefs(deviceMountPath string) ([]string, error) { mounter := plugin.host.GetMounter(plugin.GetPluginName()) - return mount.GetMountRefs(mounter, deviceMountPath) + return mounter.GetMountRefs(deviceMountPath) } func (plugin *flexVolumePlugin) getDeviceMountPath(spec *volume.Spec) (string, error) { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/flexvolume/probe.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/flexvolume/probe.go index badf149220..40d2dd3300 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/flexvolume/probe.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/flexvolume/probe.go @@ -19,6 +19,7 @@ package flexvolume import ( "github.com/golang/glog" "k8s.io/kubernetes/pkg/volume" + "k8s.io/utils/exec" "os" @@ -26,16 +27,18 @@ import ( "path/filepath" "sync" + "strings" + "github.com/fsnotify/fsnotify" "k8s.io/apimachinery/pkg/util/errors" utilfs "k8s.io/kubernetes/pkg/util/filesystem" utilstrings "k8s.io/kubernetes/pkg/util/strings" - "strings" ) type flexVolumeProber struct { mutex sync.Mutex - pluginDir string // Flexvolume driver directory + pluginDir string // Flexvolume driver directory + runner exec.Interface // Interface to use for execing flex calls watcher utilfs.FSWatcher factory PluginFactory fs utilfs.Filesystem @@ -43,11 +46,12 @@ type flexVolumeProber struct { eventsMap map[string]volume.ProbeOperation // the key is the driver directory path, the value is the coresponding operation } -func GetDynamicPluginProber(pluginDir string) volume.DynamicPluginProber { +func GetDynamicPluginProber(pluginDir string, runner exec.Interface) volume.DynamicPluginProber { return &flexVolumeProber{ pluginDir: pluginDir, watcher: utilfs.NewFsnotifyWatcher(), factory: pluginFactory{}, + runner: runner, fs: &utilfs.DefaultFs{}, } } @@ -127,7 +131,7 @@ func (prober *flexVolumeProber) newProbeEvent(driverDirName string, op volume.Pr Op: op, } if op == volume.ProbeAddOrUpdate { - plugin, pluginErr := prober.factory.NewFlexVolumePlugin(prober.pluginDir, driverDirName) + plugin, pluginErr := prober.factory.NewFlexVolumePlugin(prober.pluginDir, driverDirName, prober.runner) if pluginErr != nil { pluginErr = fmt.Errorf( "Error creating Flexvolume plugin from directory %s, skipping. Error: %s", diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/flocker/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/flocker/BUILD index b1fd9272fb..d3c41b0fad 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/flocker/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/flocker/BUILD @@ -21,13 +21,13 @@ go_library( "//pkg/util/strings:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/util:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/rand:go_default_library", "//vendor/github.com/clusterhq/flocker-go:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/rand:go_default_library", ], ) @@ -43,12 +43,12 @@ go_test( "//pkg/util/mount:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/testing:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/client-go/util/testing:go_default_library", "//vendor/github.com/clusterhq/flocker-go:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/client-go/util/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/gce_pd/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/gce_pd/BUILD index 91770ff306..ea7c0b0950 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/gce_pd/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/gce_pd/BUILD @@ -26,13 +26,13 @@ go_library( "//pkg/volume:go_default_library", "//pkg/volume/util:go_default_library", "//pkg/volume/util/volumepathhandler:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", "//vendor/k8s.io/utils/exec:go_default_library", ], ) @@ -51,14 +51,14 @@ go_test( "//pkg/volume:go_default_library", "//pkg/volume/testing:go_default_library", "//pkg/volume/util:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", + "//staging/src/k8s.io/client-go/util/testing:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", - "//vendor/k8s.io/client-go/util/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/gce_pd/attacher.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/gce_pd/attacher.go index 21d8545b08..8a6256b617 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/gce_pd/attacher.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/gce_pd/attacher.go @@ -29,7 +29,6 @@ import ( "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/sets" "k8s.io/kubernetes/pkg/cloudprovider/providers/gce" - "k8s.io/kubernetes/pkg/util/mount" "k8s.io/kubernetes/pkg/volume" volumeutil "k8s.io/kubernetes/pkg/volume/util" ) @@ -57,7 +56,7 @@ func (plugin *gcePersistentDiskPlugin) NewAttacher() (volume.Attacher, error) { func (plugin *gcePersistentDiskPlugin) GetDeviceMountRefs(deviceMountPath string) ([]string, error) { mounter := plugin.host.GetMounter(plugin.GetPluginName()) - return mount.GetMountRefs(mounter, deviceMountPath) + return mounter.GetMountRefs(deviceMountPath) } // Attach checks with the GCE cloud provider if the specified volume is already diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/gce_pd/gce_pd.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/gce_pd/gce_pd.go index 18e040433a..904445c8f2 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/gce_pd/gce_pd.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/gce_pd/gce_pd.go @@ -480,6 +480,15 @@ func (c *gcePersistentDiskProvisioner) Provision(selectedNode *v1.Node, allowedT fstype = "ext4" } + var volumeMode *v1.PersistentVolumeMode + if utilfeature.DefaultFeatureGate.Enabled(features.BlockVolume) { + volumeMode = c.options.PVC.Spec.VolumeMode + if volumeMode != nil && *volumeMode == v1.PersistentVolumeBlock { + // Block volumes should not have any FSType + fstype = "" + } + } + pv := &v1.PersistentVolume{ ObjectMeta: metav1.ObjectMeta{ Name: c.options.PVName, @@ -492,8 +501,9 @@ func (c *gcePersistentDiskProvisioner) Provision(selectedNode *v1.Node, allowedT PersistentVolumeReclaimPolicy: c.options.PersistentVolumeReclaimPolicy, AccessModes: c.options.PVC.Spec.AccessModes, Capacity: v1.ResourceList{ - v1.ResourceName(v1.ResourceStorage): resource.MustParse(fmt.Sprintf("%dG", sizeGB)), + v1.ResourceName(v1.ResourceStorage): resource.MustParse(fmt.Sprintf("%dGi", sizeGB)), }, + VolumeMode: volumeMode, PersistentVolumeSource: v1.PersistentVolumeSource{ GCEPersistentDisk: &v1.GCEPersistentDiskVolumeSource{ PDName: volumeID, @@ -518,9 +528,5 @@ func (c *gcePersistentDiskProvisioner) Provision(selectedNode *v1.Node, allowedT } } - if utilfeature.DefaultFeatureGate.Enabled(features.BlockVolume) { - pv.Spec.VolumeMode = c.options.PVC.Spec.VolumeMode - } - return pv, nil } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/gce_pd/gce_util.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/gce_pd/gce_util.go index 8774d77c8f..92b7f8eb2c 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/gce_pd/gce_util.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/gce_pd/gce_util.go @@ -86,8 +86,8 @@ func (gceutil *GCEDiskUtil) CreateVolume(c *gcePersistentDiskProvisioner) (strin name := volumeutil.GenerateVolumeName(c.options.ClusterName, c.options.PVName, 63) // GCE PD name can have up to 63 characters capacity := c.options.PVC.Spec.Resources.Requests[v1.ResourceName(v1.ResourceStorage)] - // GCE PDs are allocated in chunks of GBs (not GiBs) - requestGB := volumeutil.RoundUpToGB(capacity) + // GCE PDs are allocated in chunks of GiBs + requestGB := volumeutil.RoundUpToGiB(capacity) // Apply Parameters. // Values for parameter "replication-type" are canonicalized to lower case. diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/git_repo/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/git_repo/BUILD index e765cb03c6..0cca9e06c7 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/git_repo/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/git_repo/BUILD @@ -17,8 +17,8 @@ go_library( "//pkg/util/strings:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/util:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//vendor/k8s.io/utils/exec:go_default_library", ], ) @@ -31,9 +31,9 @@ go_test( "//pkg/volume:go_default_library", "//pkg/volume/empty_dir:go_default_library", "//pkg/volume/testing:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//vendor/k8s.io/utils/exec:go_default_library", "//vendor/k8s.io/utils/exec/testing:go_default_library", ], diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/glusterfs/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/glusterfs/BUILD index 990ff54c27..bd7d5e0cc2 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/glusterfs/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/glusterfs/BUILD @@ -21,18 +21,18 @@ go_library( "//pkg/util/strings:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/util:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/heketi/heketi/client/api/go-client:go_default_library", "//vendor/github.com/heketi/heketi/pkg/glusterfs/api:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/uuid:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", ], ) @@ -47,14 +47,14 @@ go_test( "//pkg/util/mount:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/testing:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", + "//staging/src/k8s.io/client-go/util/testing:go_default_library", "//vendor/github.com/heketi/heketi/pkg/glusterfs/api:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", - "//vendor/k8s.io/client-go/testing:go_default_library", - "//vendor/k8s.io/client-go/util/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/host_path/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/host_path/BUILD index b188bb3d94..b05d42c64b 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/host_path/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/host_path/BUILD @@ -19,10 +19,10 @@ go_library( "//pkg/volume/util:go_default_library", "//pkg/volume/util/recyclerclient:go_default_library", "//pkg/volume/validation:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/uuid:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library", ], ) @@ -35,12 +35,12 @@ go_test( "//pkg/util/mount:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/testing:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/uuid:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/iscsi/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/iscsi/BUILD index 8e1f600de7..d0d3178809 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/iscsi/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/iscsi/BUILD @@ -23,11 +23,11 @@ go_library( "//pkg/volume:go_default_library", "//pkg/volume/util:go_default_library", "//pkg/volume/util/volumepathhandler:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", ], ) @@ -42,11 +42,11 @@ go_test( "//pkg/util/mount:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/testing:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", - "//vendor/k8s.io/client-go/util/testing:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", + "//staging/src/k8s.io/client-go/util/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/iscsi/attacher.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/iscsi/attacher.go index 0ca2f4d5fe..59c528b361 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/iscsi/attacher.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/iscsi/attacher.go @@ -49,7 +49,7 @@ func (plugin *iscsiPlugin) NewAttacher() (volume.Attacher, error) { func (plugin *iscsiPlugin) GetDeviceMountRefs(deviceMountPath string) ([]string, error) { mounter := plugin.host.GetMounter(iscsiPluginName) - return mount.GetMountRefs(mounter, deviceMountPath) + return mounter.GetMountRefs(deviceMountPath) } func (attacher *iscsiAttacher) Attach(spec *volume.Spec, nodeName types.NodeName) (string, error) { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/iscsi/iscsi.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/iscsi/iscsi.go index 687f2cc6a3..de82fa1652 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/iscsi/iscsi.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/iscsi/iscsi.go @@ -203,7 +203,7 @@ func (plugin *iscsiPlugin) ConstructVolumeSpec(volumeName, mountPath string) (*v // Find globalPDPath from pod volume directory(mountPath) var globalPDPath string mounter := plugin.host.GetMounter(plugin.GetPluginName()) - paths, err := mount.GetMountRefs(mounter, mountPath) + paths, err := mounter.GetMountRefs(mountPath) if err != nil { return nil, err } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/iscsi/iscsi_util.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/iscsi/iscsi_util.go index d649e35172..24d103cf3b 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/iscsi/iscsi_util.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/iscsi/iscsi_util.go @@ -516,7 +516,7 @@ func (util *ISCSIUtil) DetachBlockISCSIDisk(c iscsiDiskUnmapper, mapPath string) if err.Error() != volumepathhandler.ErrDeviceNotFound { return fmt.Errorf("failed to get loopback for device: %v, err: %v", devicePath, err) } - glog.Warning("iscsi: loopback for device: %s not found", device) + glog.Warningf("iscsi: loopback for device: %s not found", device) } // Detach a volume from kubelet node err = util.detachISCSIDisk(c.exec, portals, iqn, iface, volName, initiatorName, found) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/local/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/local/BUILD index 599e2d6e6b..b3d622ed36 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/local/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/local/BUILD @@ -16,54 +16,45 @@ go_library( "//pkg/volume:go_default_library", "//pkg/volume/util:go_default_library", "//pkg/volume/validation:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", ], ) go_test( name = "go_default_test", - srcs = select({ - "@io_bazel_rules_go//go/platform:darwin": [ - "local_test.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "local_linux_test.go", - "local_test.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "local_test.go", - ], - "//conditions:default": [], - }), + srcs = [ + "local_linux_test.go", + "local_test.go", + ], embed = [":go_default_library"], deps = select({ "@io_bazel_rules_go//go/platform:darwin": [ "//pkg/volume:go_default_library", "//pkg/volume/testing:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/client-go/util/testing:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/client-go/util/testing:go_default_library", ], "@io_bazel_rules_go//go/platform:linux": [ "//pkg/volume:go_default_library", "//pkg/volume/testing:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/client-go/util/testing:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/client-go/util/testing:go_default_library", ], "@io_bazel_rules_go//go/platform:windows": [ "//pkg/volume:go_default_library", "//pkg/volume/testing:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/client-go/util/testing:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/client-go/util/testing:go_default_library", ], "//conditions:default": [], }), diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/local/local.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/local/local.go index 854c6d9682..5a3e2ea64c 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/local/local.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/local/local.go @@ -169,6 +169,7 @@ func (plugin *localVolumePlugin) NewBlockVolumeUnmapper(volName string, // TODO: check if no path and no topology constraints are ok func (plugin *localVolumePlugin) ConstructVolumeSpec(volumeName, mountPath string) (*volume.Spec, error) { + fs := v1.PersistentVolumeFilesystem localVolume := &v1.PersistentVolume{ ObjectMeta: metav1.ObjectMeta{ Name: volumeName, @@ -179,6 +180,7 @@ func (plugin *localVolumePlugin) ConstructVolumeSpec(volumeName, mountPath strin Path: "", }, }, + VolumeMode: &fs, }, } return volume.NewSpecFromPersistentVolume(localVolume, false), nil diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/nfs/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/nfs/BUILD index 48ffc558bb..81fae48e2a 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/nfs/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/nfs/BUILD @@ -19,10 +19,10 @@ go_library( "//pkg/volume:go_default_library", "//pkg/volume/util:go_default_library", "//pkg/volume/util/recyclerclient:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", ], ) @@ -34,11 +34,11 @@ go_test( "//pkg/util/mount:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/testing:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", - "//vendor/k8s.io/client-go/util/testing:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", + "//staging/src/k8s.io/client-go/util/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/photon_pd/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/photon_pd/BUILD index 17314ec1a0..d0b5870a5b 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/photon_pd/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/photon_pd/BUILD @@ -21,11 +21,11 @@ go_library( "//pkg/util/strings:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/util:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", ], ) @@ -41,10 +41,10 @@ go_test( "//pkg/util/mount:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/testing:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/client-go/util/testing:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/client-go/util/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/photon_pd/attacher.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/photon_pd/attacher.go index 54370d6049..368b9bea94 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/photon_pd/attacher.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/photon_pd/attacher.go @@ -182,7 +182,7 @@ func (attacher *photonPersistentDiskAttacher) GetDeviceMountPath(spec *volume.Sp // by deviceMountPath; returns a list of paths. func (plugin *photonPersistentDiskPlugin) GetDeviceMountRefs(deviceMountPath string) ([]string, error) { mounter := plugin.host.GetMounter(plugin.GetPluginName()) - return mount.GetMountRefs(mounter, deviceMountPath) + return mounter.GetMountRefs(deviceMountPath) } // MountDevice mounts device to global mount point. diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/plugins.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/plugins.go index fbe0bd4c6d..e2c7e05bb1 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/plugins.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/plugins.go @@ -33,7 +33,6 @@ import ( clientset "k8s.io/client-go/kubernetes" "k8s.io/client-go/tools/record" "k8s.io/kubernetes/pkg/cloudprovider" - "k8s.io/kubernetes/pkg/util/io" "k8s.io/kubernetes/pkg/util/mount" "k8s.io/kubernetes/pkg/volume/util/recyclerclient" ) @@ -319,9 +318,6 @@ type VolumeHost interface { // Get mounter interface. GetMounter(pluginName string) mount.Interface - // Get writer interface for writing data to disk. - GetWriter() io.Writer - // Returns the hostname of the host kubelet is running on GetHostName() string @@ -605,7 +601,8 @@ func (pm *VolumePluginMgr) refreshProbedPlugins() { } pm.probedPlugins[event.Plugin.GetPluginName()] = event.Plugin } else if event.Op == ProbeRemove { - delete(pm.probedPlugins, event.Plugin.GetPluginName()) + // Plugin is not available on ProbeRemove event, only PluginName + delete(pm.probedPlugins, event.PluginName) } else { glog.Errorf("Unknown Operation on PluginName: %s.", event.Plugin.GetPluginName()) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/portworx/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/portworx/BUILD index 40e6e6541b..1919011490 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/portworx/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/portworx/BUILD @@ -14,10 +14,10 @@ go_test( "//pkg/util/mount:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/testing:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/client-go/util/testing:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/client-go/util/testing:go_default_library", ], ) @@ -35,16 +35,16 @@ go_library( "//pkg/util/strings:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/util:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/libopenstorage/openstorage/api:go_default_library", "//vendor/github.com/libopenstorage/openstorage/api/client:go_default_library", "//vendor/github.com/libopenstorage/openstorage/api/client/volume:go_default_library", "//vendor/github.com/libopenstorage/openstorage/api/spec:go_default_library", "//vendor/github.com/libopenstorage/openstorage/volume:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/portworx/portworx_util.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/portworx/portworx_util.go index 22003983a2..ab68e40726 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/portworx/portworx_util.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/portworx/portworx_util.go @@ -71,8 +71,13 @@ func (util *PortworxVolumeUtil) CreateVolume(p *portworxVolumeProvisioner) (stri spec = specHandler.DefaultSpec() } - // Pass all parameters as volume labels for Portworx server-side processing. - spec.VolumeLabels = p.options.Parameters + // Pass all parameters as volume labels for Portworx server-side processing + if len(p.options.Parameters) > 0 { + spec.VolumeLabels = p.options.Parameters + } else { + spec.VolumeLabels = make(map[string]string, 0) + } + // Update the requested size in the spec spec.Size = uint64(requestGiB * volutil.GIB) @@ -206,7 +211,7 @@ func (util *PortworxVolumeUtil) ResizeVolume(spec *volume.Spec, newSize resource newSizeInBytes := uint64(volutil.RoundUpToGiB(newSize) * volutil.GIB) if vol.Spec.Size >= newSizeInBytes { glog.Infof("Portworx volume: %s already at size: %d greater than or equal to new "+ - "requested size: %d. Skipping resize.", vol.Spec.Size, newSizeInBytes) + "requested size: %d. Skipping resize.", spec.Name(), vol.Spec.Size, newSizeInBytes) return nil } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/projected/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/projected/BUILD index 2f3b388d43..79d29aece8 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/projected/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/projected/BUILD @@ -15,11 +15,11 @@ go_test( "//pkg/volume/empty_dir:go_default_library", "//pkg/volume/testing:go_default_library", "//pkg/volume/util:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", ], ) @@ -35,14 +35,14 @@ go_library( "//pkg/volume/downwardapi:go_default_library", "//pkg/volume/secret:go_default_library", "//pkg/volume/util:go_default_library", + "//staging/src/k8s.io/api/authentication/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/authentication/v1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/projected/projected.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/projected/projected.go index c17ba4c19f..ebc0a6f0d7 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/projected/projected.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/projected/projected.go @@ -18,8 +18,6 @@ package projected import ( "fmt" - "sort" - "strings" authenticationv1 "k8s.io/api/authentication/v1" "k8s.io/api/core/v1" @@ -335,12 +333,6 @@ func (s *projectedVolumeMounter) collectData() (map[string]volumeutil.FileProjec return payload, utilerrors.NewAggregate(errlist) } -func sortLines(values string) string { - splitted := strings.Split(values, "\n") - sort.Strings(splitted) - return strings.Join(splitted, "\n") -} - type projectedVolumeUnmounter struct { *projectedVolume } @@ -362,13 +354,9 @@ func (c *projectedVolumeUnmounter) TearDownAt(dir string) error { } func getVolumeSource(spec *volume.Spec) (*v1.ProjectedVolumeSource, bool, error) { - var readOnly bool - var volumeSource *v1.ProjectedVolumeSource - if spec.Volume != nil && spec.Volume.Projected != nil { - volumeSource = spec.Volume.Projected - readOnly = spec.ReadOnly + return spec.Volume.Projected, spec.ReadOnly, nil } - return volumeSource, readOnly, fmt.Errorf("Spec does not reference a projected volume type") + return nil, false, fmt.Errorf("Spec does not reference a projected volume type") } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/quobyte/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/quobyte/BUILD index 4634396371..b120d9c2f7 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/quobyte/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/quobyte/BUILD @@ -19,13 +19,13 @@ go_library( "//pkg/util/strings:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/util:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/pborman/uuid:go_default_library", "//vendor/github.com/quobyte/api:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", ], ) @@ -37,11 +37,11 @@ go_test( "//pkg/util/mount:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/testing:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", - "//vendor/k8s.io/client-go/util/testing:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", + "//staging/src/k8s.io/client-go/util/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/rbd/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/rbd/BUILD index e6b7fe8aea..41bf823ac4 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/rbd/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/rbd/BUILD @@ -25,17 +25,17 @@ go_library( "//pkg/volume:go_default_library", "//pkg/volume/util:go_default_library", "//pkg/volume/util/volumepathhandler:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/uuid:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", ], ) @@ -47,13 +47,13 @@ go_test( "//pkg/util/mount:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/testing:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/uuid:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", - "//vendor/k8s.io/client-go/util/testing:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", + "//staging/src/k8s.io/client-go/util/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/rbd/OWNERS b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/rbd/OWNERS index a700b703ce..9e353b1812 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/rbd/OWNERS +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/rbd/OWNERS @@ -1,5 +1,6 @@ approvers: - rootfs +- jsafrane reviewers: - sjenning - saad-ali @@ -7,3 +8,4 @@ reviewers: - rootfs - jingxu97 - msau42 +- cofyc diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/rbd/attacher.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/rbd/attacher.go index 9a74a608c3..628f985ecc 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/rbd/attacher.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/rbd/attacher.go @@ -58,7 +58,7 @@ func (plugin *rbdPlugin) newDetacherInternal(manager diskManager) (volume.Detach // GetDeviceMountRefs implements AttachableVolumePlugin.GetDeviceMountRefs. func (plugin *rbdPlugin) GetDeviceMountRefs(deviceMountPath string) ([]string, error) { mounter := plugin.host.GetMounter(plugin.GetPluginName()) - return mount.GetMountRefs(mounter, deviceMountPath) + return mounter.GetMountRefs(deviceMountPath) } // rbdAttacher implements volume.Attacher interface. diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/rbd/rbd.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/rbd/rbd.go index 89b9cd045e..4c5d7e761a 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/rbd/rbd.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/rbd/rbd.go @@ -412,10 +412,10 @@ func (plugin *rbdPlugin) ConstructBlockVolumeSpec(podUID types.UID, volumeName, if len(globalMapPath) == 1 { return nil, fmt.Errorf("failed to retrieve volume plugin information from globalMapPathUUID: %v", globalMapPathUUID) } - return getVolumeSpecFromGlobalMapPath(globalMapPath) + return getVolumeSpecFromGlobalMapPath(globalMapPath, volumeName) } -func getVolumeSpecFromGlobalMapPath(globalMapPath string) (*volume.Spec, error) { +func getVolumeSpecFromGlobalMapPath(globalMapPath, volumeName string) (*volume.Spec, error) { // Retrieve volume spec information from globalMapPath // globalMapPath example: // plugins/kubernetes.io/{PluginName}/{DefaultKubeletVolumeDevicesDirName}/{volumePluginDependentPath} @@ -425,6 +425,9 @@ func getVolumeSpecFromGlobalMapPath(globalMapPath string) (*volume.Spec, error) } block := v1.PersistentVolumeBlock rbdVolume := &v1.PersistentVolume{ + ObjectMeta: metav1.ObjectMeta{ + Name: volumeName, + }, Spec: v1.PersistentVolumeSpec{ PersistentVolumeSource: v1.PersistentVolumeSource{ RBD: &v1.RBDPersistentVolumeSource{ @@ -688,6 +691,15 @@ func (r *rbdVolumeProvisioner) Provision(selectedNode *v1.Node, allowedTopologie rbd.Keyring = keyring } + var volumeMode *v1.PersistentVolumeMode + if utilfeature.DefaultFeatureGate.Enabled(features.BlockVolume) { + volumeMode = r.options.PVC.Spec.VolumeMode + if volumeMode != nil && *volumeMode == v1.PersistentVolumeBlock { + // Block volumes should not have any FSType + fstype = "" + } + } + rbd.RadosUser = r.Id rbd.FSType = fstype pv.Spec.PersistentVolumeSource.RBD = rbd @@ -700,10 +712,7 @@ func (r *rbdVolumeProvisioner) Provision(selectedNode *v1.Node, allowedTopologie v1.ResourceName(v1.ResourceStorage): resource.MustParse(fmt.Sprintf("%dMi", sizeMB)), } pv.Spec.MountOptions = r.options.MountOptions - - if utilfeature.DefaultFeatureGate.Enabled(features.BlockVolume) { - pv.Spec.VolumeMode = r.options.PVC.Spec.VolumeMode - } + pv.Spec.VolumeMode = volumeMode return pv, nil } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/rbd/rbd_util.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/rbd/rbd_util.go index 1860886777..0470b7a298 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/rbd/rbd_util.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/rbd/rbd_util.go @@ -399,6 +399,10 @@ func (util *RBDUtil) AttachDisk(b rbdMounter) (string, error) { break } } + } else { + // ReadOnly rbd volume should not check rbd status of being used to + // support mounted as read-only by multiple consumers simultaneously. + needValidUsed = !b.rbd.ReadOnly } err := wait.ExponentialBackoff(backoff, func() (bool, error) { used, rbdOutput, err := util.rbdStatus(&b) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/scaleio/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/scaleio/BUILD index b6c80d8df2..767ad4a403 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/scaleio/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/scaleio/BUILD @@ -18,14 +18,14 @@ go_test( "//pkg/util/mount:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/testing:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", + "//staging/src/k8s.io/client-go/util/testing:go_default_library", "//vendor/github.com/codedellemc/goscaleio/types/v1:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", - "//vendor/k8s.io/client-go/util/testing:go_default_library", ], ) @@ -45,14 +45,14 @@ go_library( "//pkg/util/strings:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/util:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library", "//vendor/github.com/codedellemc/goscaleio:go_default_library", "//vendor/github.com/codedellemc/goscaleio/types/v1:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/uuid:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/secret/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/secret/BUILD index 122d65fecb..a23307dfa7 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/secret/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/secret/BUILD @@ -14,16 +14,15 @@ go_library( ], importpath = "k8s.io/kubernetes/pkg/volume/secret", deps = [ - "//pkg/util/io:go_default_library", "//pkg/util/mount:go_default_library", "//pkg/util/strings:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/util:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", ], ) @@ -36,12 +35,12 @@ go_test( "//pkg/volume/empty_dir:go_default_library", "//pkg/volume/testing:go_default_library", "//pkg/volume/util:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/secret/secret.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/secret/secret.go index 3ab27c77c4..dda1eec335 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/secret/secret.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/secret/secret.go @@ -24,7 +24,6 @@ import ( "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" - ioutil "k8s.io/kubernetes/pkg/util/io" "k8s.io/kubernetes/pkg/util/mount" "k8s.io/kubernetes/pkg/util/strings" "k8s.io/kubernetes/pkg/volume" @@ -100,7 +99,6 @@ func (plugin *secretPlugin) NewMounter(spec *volume.Spec, pod *v1.Pod, opts volu pod.UID, plugin, plugin.host.GetMounter(plugin.GetPluginName()), - plugin.host.GetWriter(), volume.NewCachedMetrics(volume.NewMetricsDu(getPath(pod.UID, spec.Name(), plugin.host))), }, source: *spec.Volume.Secret, @@ -117,7 +115,6 @@ func (plugin *secretPlugin) NewUnmounter(volName string, podUID types.UID) (volu podUID, plugin, plugin.host.GetMounter(plugin.GetPluginName()), - plugin.host.GetWriter(), volume.NewCachedMetrics(volume.NewMetricsDu(getPath(podUID, volName, plugin.host))), }, }, nil @@ -140,7 +137,6 @@ type secretVolume struct { podUID types.UID plugin *secretPlugin mounter mount.Interface - writer ioutil.Writer volume.MetricsProvider } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/storageos/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/storageos/BUILD index bff52a9eac..ee84092563 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/storageos/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/storageos/BUILD @@ -19,14 +19,14 @@ go_library( "//pkg/util/strings:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/util:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/storageos/go-api:go_default_library", "//vendor/github.com/storageos/go-api/types:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", ], ) @@ -41,12 +41,12 @@ go_test( "//pkg/util/mount:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/testing:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", + "//staging/src/k8s.io/client-go/util/testing:go_default_library", "//vendor/github.com/storageos/go-api/types:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", - "//vendor/k8s.io/client-go/util/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/BUILD index 08d5c3ef03..0fed18e2b9 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/BUILD @@ -6,6 +6,8 @@ go_library( "atomic_writer.go", "attach_limit.go", "device_util.go", + "device_util_linux.go", + "device_util_unsupported.go", "doc.go", "error.go", "finalizer.go", @@ -14,42 +16,7 @@ go_library( "nested_volumes.go", "resize_util.go", "util.go", - ] + select({ - "@io_bazel_rules_go//go/platform:android": [ - "device_util_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "device_util_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "device_util_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "device_util_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "device_util_linux.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "device_util_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "device_util_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "device_util_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "device_util_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "device_util_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "device_util_unsupported.go", - ], - "//conditions:default": [], - }), + ], importpath = "k8s.io/kubernetes/pkg/volume/util", visibility = ["//visibility:public"], deps = [ @@ -61,47 +28,43 @@ go_library( "//pkg/volume:go_default_library", "//pkg/volume/util/types:go_default_library", "//pkg/volume/util/volumepathhandler:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/storage/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/strategicpatch:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/prometheus/client_golang/prometheus:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/storage/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/strategicpatch:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", ], ) go_test( name = "go_default_test", srcs = [ + "atomic_writer_test.go", + "device_util_linux_test.go", "nested_volumes_test.go", "resize_util_test.go", "util_test.go", - ] + select({ - "@io_bazel_rules_go//go/platform:linux": [ - "atomic_writer_test.go", - "device_util_linux_test.go", - ], - "//conditions:default": [], - }), + ], embed = [":go_default_library"], deps = [ "//pkg/apis/core/install:go_default_library", "//pkg/util/mount:go_default_library", "//pkg/util/slice:go_default_library", "//pkg/volume:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/client-go/util/testing:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/client-go/util/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/fs/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/fs/BUILD index 0e9be3016b..38602bac3e 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/fs/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/fs/BUILD @@ -2,80 +2,49 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( name = "go_default_library", - srcs = select({ - "@io_bazel_rules_go//go/platform:android": [ - "fs_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "fs.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "fs_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "fs_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "fs.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "fs_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "fs_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "fs_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "fs_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "fs_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "fs_windows.go", - ], - "//conditions:default": [], - }), + srcs = [ + "fs.go", + "fs_unsupported.go", + "fs_windows.go", + ], importpath = "k8s.io/kubernetes/pkg/volume/util/fs", visibility = ["//visibility:public"], deps = select({ "@io_bazel_rules_go//go/platform:android": [ - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", ], "@io_bazel_rules_go//go/platform:darwin": [ + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", "//vendor/golang.org/x/sys/unix:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", ], "@io_bazel_rules_go//go/platform:dragonfly": [ - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", ], "@io_bazel_rules_go//go/platform:freebsd": [ - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", ], "@io_bazel_rules_go//go/platform:linux": [ + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", "//vendor/golang.org/x/sys/unix:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", ], "@io_bazel_rules_go//go/platform:nacl": [ - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", ], "@io_bazel_rules_go//go/platform:netbsd": [ - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", ], "@io_bazel_rules_go//go/platform:openbsd": [ - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", ], "@io_bazel_rules_go//go/platform:plan9": [ - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", ], "@io_bazel_rules_go//go/platform:solaris": [ - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", ], "@io_bazel_rules_go//go/platform:windows": [ + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", "//vendor/golang.org/x/sys/windows:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", ], "//conditions:default": [], }), diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/nestedpendingoperations/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/nestedpendingoperations/BUILD index 46eb083098..4622d91fbb 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/nestedpendingoperations/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/nestedpendingoperations/BUILD @@ -13,9 +13,9 @@ go_library( deps = [ "//pkg/util/goroutinemap/exponentialbackoff:go_default_library", "//pkg/volume/util/types:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", ], ) @@ -25,8 +25,8 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/volume/util/types:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/operationexecutor/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/operationexecutor/BUILD index f7676a07c7..f07c3863af 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/operationexecutor/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/operationexecutor/BUILD @@ -24,14 +24,14 @@ go_library( "//pkg/volume/util/nestedpendingoperations:go_default_library", "//pkg/volume/util/types:go_default_library", "//pkg/volume/util/volumepathhandler:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/tools/record:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/tools/record:go_default_library", ], ) @@ -44,10 +44,10 @@ go_test( "//pkg/util/mount:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/util/types:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/uuid:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/operationexecutor/operation_executor.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/operationexecutor/operation_executor.go index 283a322259..1a44c62d4a 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/operationexecutor/operation_executor.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/operationexecutor/operation_executor.go @@ -248,7 +248,7 @@ func generateVolumeMsg(prefixMsg, suffixMsg, volumeName, details string) (simple // VolumeToAttach represents a volume that should be attached to a node. type VolumeToAttach struct { // MultiAttachErrorReported indicates whether the multi-attach error has been reported for the given volume. - // It is used to to prevent reporting the error from being reported more than once for a given volume. + // It is used to prevent reporting the error from being reported more than once for a given volume. MultiAttachErrorReported bool // VolumeName is the unique identifier for the volume that should be diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/operationexecutor/operation_generator.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/operationexecutor/operation_generator.go index 51f321ae9d..99c52e4b2e 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/operationexecutor/operation_generator.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/operationexecutor/operation_generator.go @@ -147,6 +147,7 @@ func (og *operationGenerator) GenerateVolumesAreAttachedFunc( og.volumePluginMgr.FindPluginBySpec(volumeAttached.VolumeSpec) if err != nil || volumePlugin == nil { glog.Errorf(volumeAttached.GenerateErrorDetailed("VolumesAreAttached.FindPluginBySpec failed", err).Error()) + continue } volumeSpecList, pluginExists := volumesPerPlugin[volumePlugin.GetPluginName()] if !pluginExists { @@ -866,6 +867,16 @@ func (og *operationGenerator) GenerateMapVolumeFunc( return volumeToMount.GenerateError("MapVolume failed", fmt.Errorf("Device path of the volume is empty")) } + // When kubelet is containerized, devicePath may be a symlink at a place unavailable to + // kubelet, so evaluate it on the host and expect that it links to a device in /dev, + // which will be available to containerized kubelet. If still it does not exist, + // AttachFileDevice will fail. If kubelet is not containerized, eval it anyway. + mounter := og.GetVolumePluginMgr().Host.GetMounter(blockVolumePlugin.GetPluginName()) + devicePath, err = mounter.EvalHostSymlinks(devicePath) + if err != nil { + return volumeToMount.GenerateError("MapVolume.EvalHostSymlinks failed", err) + } + // Map device to global and pod device map path volumeMapPath, volName := blockVolumeMapper.GetPodDeviceMapPath() mapErr = blockVolumeMapper.MapDevice(devicePath, globalMapPath, volumeMapPath, volName, volumeToMount.Pod.UID) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/recyclerclient/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/recyclerclient/BUILD index e65ad6c98b..e43b35af73 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/recyclerclient/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/recyclerclient/BUILD @@ -6,13 +6,13 @@ go_library( importpath = "k8s.io/kubernetes/pkg/volume/util/recyclerclient", visibility = ["//visibility:public"], deps = [ + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", ], ) @@ -22,10 +22,10 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/apis/core:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/types/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/types/BUILD index e6be9eb1d7..919ee30fda 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/types/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/types/BUILD @@ -9,7 +9,7 @@ go_library( name = "go_default_library", srcs = ["types.go"], importpath = "k8s.io/kubernetes/pkg/volume/util/types", - deps = ["//vendor/k8s.io/apimachinery/pkg/types:go_default_library"], + deps = ["//staging/src/k8s.io/apimachinery/pkg/types:go_default_library"], ) filegroup( diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/util.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/util.go index 1e7b709340..439ba4c2e6 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/util.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/util.go @@ -322,7 +322,7 @@ func LabelZonesToSet(labelZonesValue string) (sets.String, error) { return stringToSet(labelZonesValue, kubeletapis.LabelMultiZoneDelimiter) } -// StringToSet converts a string containing list separated by specified delimiter to to a set +// StringToSet converts a string containing list separated by specified delimiter to a set func stringToSet(str, delimiter string) (sets.String, error) { zonesSlice := strings.Split(str, delimiter) zonesSet := make(sets.String) @@ -661,7 +661,7 @@ func notRunning(statuses []v1.ContainerStatus) bool { } // SplitUniqueName splits the unique name to plugin name and volume name strings. It expects the uniqueName to follow -// the fromat plugin_name/volume_name and the plugin name must be namespaced as described by the plugin interface, +// the format plugin_name/volume_name and the plugin name must be namespaced as described by the plugin interface, // i.e. namespace/plugin containing exactly one '/'. This means the unique name will always be in the form of // plugin_namespace/plugin/volume_name, see k8s.io/kubernetes/pkg/volume/plugins.go VolumePlugin interface // description and pkg/volume/util/volumehelper/volumehelper.go GetUniqueVolumeNameFromSpec that constructs diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/volumepathhandler/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/volumepathhandler/BUILD index 562bfa9067..e61e3973ea 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/volumepathhandler/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/volumepathhandler/BUILD @@ -4,47 +4,14 @@ go_library( name = "go_default_library", srcs = [ "volume_path_handler.go", - ] + select({ - "@io_bazel_rules_go//go/platform:android": [ - "volume_path_handler_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:darwin": [ - "volume_path_handler_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:dragonfly": [ - "volume_path_handler_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:freebsd": [ - "volume_path_handler_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:linux": [ - "volume_path_handler_linux.go", - ], - "@io_bazel_rules_go//go/platform:nacl": [ - "volume_path_handler_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:netbsd": [ - "volume_path_handler_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:openbsd": [ - "volume_path_handler_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:plan9": [ - "volume_path_handler_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:solaris": [ - "volume_path_handler_unsupported.go", - ], - "@io_bazel_rules_go//go/platform:windows": [ - "volume_path_handler_unsupported.go", - ], - "//conditions:default": [], - }), + "volume_path_handler_linux.go", + "volume_path_handler_unsupported.go", + ], importpath = "k8s.io/kubernetes/pkg/volume/util/volumepathhandler", visibility = ["//visibility:public"], deps = [ + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/validation/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/validation/BUILD index 4530585673..1dc274dba7 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/validation/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/validation/BUILD @@ -12,8 +12,8 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/apis/core:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", ], ) @@ -23,7 +23,7 @@ go_library( importpath = "k8s.io/kubernetes/pkg/volume/validation", deps = [ "//pkg/apis/core:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/vsphere_volume/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/vsphere_volume/BUILD index f69c1fb6d4..2865dfacdf 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/vsphere_volume/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/vsphere_volume/BUILD @@ -23,11 +23,11 @@ go_library( "//pkg/util/strings:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/util:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", ], ) @@ -43,10 +43,10 @@ go_test( "//pkg/util/mount:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/testing:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/client-go/util/testing:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/client-go/util/testing:go_default_library", ], ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/vsphere_volume/attacher.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/vsphere_volume/attacher.go index 0cf3440d8a..ad6698de84 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/vsphere_volume/attacher.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/vsphere_volume/attacher.go @@ -191,7 +191,7 @@ func (attacher *vsphereVMDKAttacher) GetDeviceMountPath(spec *volume.Spec) (stri // by deviceMountPath; returns a list of paths. func (plugin *vsphereVolumePlugin) GetDeviceMountRefs(deviceMountPath string) ([]string, error) { mounter := plugin.host.GetMounter(plugin.GetPluginName()) - return mount.GetMountRefs(mounter, deviceMountPath) + return mounter.GetMountRefs(deviceMountPath) } // MountDevice mounts device to global mount point. diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/windows/service/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/windows/service/BUILD index ea07fc9e4d..3e9cf1d3bd 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/windows/service/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/windows/service/BUILD @@ -7,12 +7,7 @@ load( go_library( name = "go_default_library", - srcs = select({ - "@io_bazel_rules_go//go/platform:windows": [ - "service.go", - ], - "//conditions:default": [], - }), + srcs = ["service.go"], importpath = "k8s.io/kubernetes/pkg/windows/service", deps = select({ "@io_bazel_rules_go//go/platform:windows": [ diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/test/utils/BUILD b/cluster-autoscaler/vendor/k8s.io/kubernetes/test/utils/BUILD index ae31846ac9..eed466cc11 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/test/utils/BUILD +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/test/utils/BUILD @@ -31,30 +31,30 @@ go_library( "//pkg/controller/deployment/util:go_default_library", "//pkg/kubectl:go_default_library", "//pkg/util/labels:go_default_library", + "//staging/src/k8s.io/api/apps/v1:go_default_library", + "//staging/src/k8s.io/api/batch/v1:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/extensions/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/scale:go_default_library", + "//staging/src/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/client-go/util/workqueue:go_default_library", "//vendor/github.com/davecgh/go-spew/spew:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/apps/v1:go_default_library", - "//vendor/k8s.io/api/batch/v1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/extensions/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/uuid:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/scale:go_default_library", - "//vendor/k8s.io/client-go/tools/cache:go_default_library", - "//vendor/k8s.io/client-go/util/workqueue:go_default_library", ], )